From e219f7e7dd7038f9506323eebe977f94a0725b08 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Wed, 20 Nov 2024 16:23:47 -0800 Subject: [PATCH 001/119] [******][GPU] Generalize the GPU operations to be vendor agnostic MODULAR_ORIG_COMMIT_REV_ID: 6c4bb72ec076c976073ef01266dc1025bd12c090 --- stdlib/src/builtin/debug_assert.mojo | 6 +++--- stdlib/src/builtin/file_descriptor.mojo | 4 ++-- stdlib/src/builtin/int.mojo | 2 +- stdlib/src/builtin/io.mojo | 7 ++++++- stdlib/src/builtin/simd.mojo | 10 ++++++---- stdlib/src/memory/pointer.mojo | 1 - stdlib/src/os/os.mojo | 4 ++-- stdlib/src/utils/write.mojo | 4 ++-- 8 files changed, 22 insertions(+), 16 deletions(-) diff --git a/stdlib/src/builtin/debug_assert.mojo b/stdlib/src/builtin/debug_assert.mojo index 6d33f5f5e4..14a2a258f1 100644 --- a/stdlib/src/builtin/debug_assert.mojo +++ b/stdlib/src/builtin/debug_assert.mojo @@ -17,7 +17,7 @@ These are Mojo built-ins, so you don't need to import them. from os import abort -from sys import is_nvidia_gpu, llvm_intrinsic +from sys import is_nvidia_gpu, is_gpu, llvm_intrinsic from sys._build import is_debug_build from sys.param_env import env_get_string from sys.ffi import external_call, c_uint, c_size_t, c_char @@ -44,7 +44,7 @@ fn _assert_enabled[assert_mode: StringLiteral, cpu_only: Bool]() -> Bool: ]() @parameter - if defined_mode == "none" or (is_nvidia_gpu() and cpu_only): + if defined_mode == "none" or (is_gpu() and cpu_only): return False elif defined_mode == "all" or defined_mode == "warn" or is_debug_build(): return True @@ -236,7 +236,7 @@ fn _debug_assert_msg( var stdout = sys.stdout @parameter - if is_nvidia_gpu(): + if is_gpu(): var buffer = _WriteBufferHeap[4096](stdout) buffer.write("At ", loc, ": ") _write_gpu_thread_context(buffer) diff --git a/stdlib/src/builtin/file_descriptor.mojo b/stdlib/src/builtin/file_descriptor.mojo index 241fa10bf3..76c2512dad 100644 --- a/stdlib/src/builtin/file_descriptor.mojo +++ b/stdlib/src/builtin/file_descriptor.mojo @@ -26,7 +26,7 @@ f.close() from utils import Span from builtin.io import _printf from sys.ffi import external_call -from sys.info import is_nvidia_gpu +from sys.info import is_gpu from memory import UnsafePointer @@ -67,7 +67,7 @@ struct FileDescriptor(Writer): var len_bytes = len(bytes) @parameter - if is_nvidia_gpu(): + if is_gpu(): _printf["%*s"](len_bytes, bytes.unsafe_ptr()) else: written = external_call["write", Int32]( diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 960ac5e00b..a2a8d7a150 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -32,7 +32,7 @@ from memory import UnsafePointer from utils import Writable, Writer from utils._visualizers import lldb_formatter_wrapping_type from utils._select import _select_register_value as select -from sys import is_nvidia_gpu, bitwidthof +from sys import bitwidthof # ===----------------------------------------------------------------------=== # # Indexer diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index c2d3f82a33..9efa7ae54a 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -20,6 +20,8 @@ from sys import ( external_call, stdout, is_nvidia_gpu, + is_amd_gpu, + is_gpu, _libc as libc, ) from sys._libc import dup, fclose, fdopen, fflush @@ -170,6 +172,9 @@ fn _printf[ _ = external_call["vprintf", Int32]( fmt.unsafe_cstr_ptr(), Pointer.address_of(loaded_pack) ) + elif is_amd_gpu(): + # constrained[False, "_printf on AMDGPU is not implemented"]() + pass else: with _fdopen(file) as fd: _ = __mlir_op.`pop.external_call`[ @@ -258,7 +263,7 @@ fn print[ write_buffered[buffer_size=4096](file, values, sep=sep, end=end) @parameter - if not is_nvidia_gpu(): + if not is_gpu(): if flush: _flush(file=file) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 9d9fe69a00..a0c68f35f7 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -26,6 +26,8 @@ from sys import ( prefetch, simdwidthof, is_nvidia_gpu, + is_gpu, + is_amd_gpu, bitwidthof, ) from sys.info import _current_arch, _is_sm_8x, _is_sm_9x @@ -156,12 +158,12 @@ fn _unchecked_zero[type: DType, size: Int]() -> SIMD[type, size]: @always_inline("nodebug") fn _has_native_bf16_support() -> Bool: - return is_nvidia_gpu() + return is_gpu() @always_inline("nodebug") fn _has_native_f8_support() -> Bool: - return _is_sm_9x() or is_nvidia_gpu["sm_89"]() + return _is_sm_9x() or is_nvidia_gpu["sm_89"]() or is_amd_gpu() # ===----------------------------------------------------------------------=== # @@ -222,7 +224,7 @@ struct SIMD[type: DType, size: Int]( alias MIN_FINITE = Self(_min_finite[type]()) """Returns the minimum (lowest) finite value of SIMD value.""" - alias _default_alignment = alignof[Scalar[type]]() if is_nvidia_gpu() else 1 + alias _default_alignment = alignof[Scalar[type]]() if is_gpu() else 1 # ===-------------------------------------------------------------------===# # Life cycle methods @@ -3366,7 +3368,7 @@ fn _write_scalar[ elif dtype.is_integral(): @parameter - if is_nvidia_gpu(): + if is_gpu(): var err = _try_write_int(writer, value) if err: abort( diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index dfccdc524c..06ddb0f6f6 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -19,7 +19,6 @@ from memory import Pointer ``` """ -from sys import is_nvidia_gpu # ===----------------------------------------------------------------------===# # AddressSpace diff --git a/stdlib/src/os/os.mojo b/stdlib/src/os/os.mojo index d66008b196..1678cc89e6 100644 --- a/stdlib/src/os/os.mojo +++ b/stdlib/src/os/os.mojo @@ -20,7 +20,7 @@ from os import listdir """ from collections import List, InlineArray -from sys import os_is_linux, os_is_windows, is_nvidia_gpu, external_call +from sys import os_is_linux, os_is_windows, is_gpu, external_call from sys.ffi import c_char, OpaquePointer from memory import UnsafePointer @@ -265,7 +265,7 @@ fn abort[ """ @parameter - if not is_nvidia_gpu(): + if not is_gpu(): print(message, flush=True) return abort[result]() diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index 5cf8ba1d3e..93270dc2b5 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -15,7 +15,7 @@ from collections import InlineArray from memory import memcpy, UnsafePointer from utils import Span, StaticString -from sys.info import is_nvidia_gpu +from sys.info import is_gpu from builtin.io import _printf @@ -365,7 +365,7 @@ fn write_buffered[ """ @parameter - if is_nvidia_gpu(): + if is_gpu(): # Stack space is very small on GPU due to many threads, so use heap var buffer = _WriteBufferHeap[buffer_size](writer^) write_args(buffer, args, sep=sep, end=end) From bf717ca3dc1ae4f12ef3e6562f54fe93771f1db3 Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Thu, 21 Nov 2024 11:35:07 -0700 Subject: [PATCH 002/119] [stdlib] Rename `Arc` to `ArcPointer` Rename `Arc` to `ArcPointer` for consistency with `OwnedPointer` and to help signal intent. MODULAR_ORIG_COMMIT_REV_ID: deef3eac08537bb8dda1ebbc8761ac347729d9c3 --- docs/changelog.md | 6 +++-- stdlib/src/builtin/object.mojo | 12 +++++----- stdlib/src/memory/__init__.mojo | 2 +- stdlib/src/memory/arc.mojo | 38 +++++++++++++++++--------------- stdlib/test/memory/test_arc.mojo | 24 ++++++++++---------- 5 files changed, 43 insertions(+), 39 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index d6c831da5b..a9f924952b 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -250,7 +250,7 @@ what we publish. - Introduced a new `Deque` (double-ended queue) collection type, based on a dynamically resizing circular buffer for efficient O(1) additions and removals at both ends as well as O(1) direct access to all elements. - + The `Deque` supports the full Python `collections.deque` API, ensuring that all expected deque operations perform as in Python. @@ -513,6 +513,8 @@ what we publish. self.value = value ``` +- `Arc` has been renamed to `ArcPointer`, for consistency with `OwnedPointer`. + ### ❌ Removed - The `UnsafePointer.bitcast` overload for `DType` has been removed. Wrap your @@ -557,7 +559,7 @@ what we publish. - Error messages that include type names no longer include inferred or defaulted parameters when they aren't needed. For example, previously Mojo complained about things like: - + ```plaintext ... cannot be converted from 'UnsafePointer[UInt, 0, _default_alignment::AnyType](), MutableAnyOrigin]' to 'UnsafePointer[Int, 0, _default_alignment[::AnyType](), MutableAnyOrigin]' ``` diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index c54d99fc18..0936da0cb1 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -19,7 +19,7 @@ from collections import Dict, List from sys.intrinsics import _type_is_eq from sys.ffi import OpaquePointer -from memory import Arc, memcmp, memcpy, UnsafePointer +from memory import ArcPointer, memcmp, memcpy, UnsafePointer from utils import StringRef, Variant @@ -75,11 +75,11 @@ struct _RefCountedList: ref-counted data types. """ - var impl: Arc[List[_ObjectImpl]] + var impl: ArcPointer[List[_ObjectImpl]] """The list value.""" fn __init__(out self): - self.impl = Arc[List[_ObjectImpl]](List[_ObjectImpl]()) + self.impl = ArcPointer[List[_ObjectImpl]](List[_ObjectImpl]()) @register_passable("trivial") @@ -115,11 +115,11 @@ struct _RefCountedAttrsDict: directly with `x.attr`, the key will always be a `StringLiteral`. """ - var impl: Arc[Dict[StringLiteral, _ObjectImpl]] + var impl: ArcPointer[Dict[StringLiteral, _ObjectImpl]] """The implementation of the map.""" fn __init__(out self): - self.impl = Arc[Dict[StringLiteral, _ObjectImpl]]( + self.impl = ArcPointer[Dict[StringLiteral, _ObjectImpl]]( Dict[StringLiteral, _ObjectImpl]() ) @@ -653,7 +653,7 @@ struct _ObjectImpl( # ===------------------------------------------------------------------=== # @always_inline - fn get_list_ptr(self) -> Arc[List[_ObjectImpl]]: + fn get_list_ptr(self) -> ArcPointer[List[_ObjectImpl]]: return self.get_as_list().lst.bitcast[_RefCountedList]()[].impl @always_inline diff --git a/stdlib/src/memory/__init__.mojo b/stdlib/src/memory/__init__.mojo index 06684698a7..b2faf4890a 100644 --- a/stdlib/src/memory/__init__.mojo +++ b/stdlib/src/memory/__init__.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # """Implements the memory package.""" -from .arc import Arc +from .arc import ArcPointer from .memory import memcmp, memcpy, memset, memset_zero, stack_allocation from .owned_pointer import OwnedPointer from .pointer import AddressSpace, Pointer diff --git a/stdlib/src/memory/arc.mojo b/stdlib/src/memory/arc.mojo index fa904d53e8..37c03786f7 100644 --- a/stdlib/src/memory/arc.mojo +++ b/stdlib/src/memory/arc.mojo @@ -15,31 +15,31 @@ Example usage: ```mojo -from memory import Arc -var p = Arc(4) +from memory import ArcPointer +var p = ArcPointer(4) var p2 = p p2[]=3 print(3 == p[]) ``` Subscripting(`[]`) is done by `Pointer`, -in order to ensure that the underlying `Arc` outlive the operation. +in order to ensure that the underlying `ArcPointer` outlive the operation. -It is highly DISCOURAGED to manipulate an `Arc` through `UnsafePointer`. +It is highly DISCOURAGED to manipulate an `ArcPointer` through `UnsafePointer`. Mojo's ASAP deletion policy ensure values are destroyed at last use. -Do not unsafely dereference the `Arc` inner `UnsafePointer` field. +Do not unsafely dereference the `ArcPointer` inner `UnsafePointer` field. See [Lifecycle](https://docs.modular.com/mojo/manual/lifecycle/). ```mojo # Illustration of what NOT to do, in order to understand: -print(Arc(String("ok"))._inner[].payload) +print(ArcPointer(String("ok"))._inner[].payload) #........................^ASAP ^already freed ``` Always use `Pointer` subscripting (`[]`): ```mojo -print(Arc(String("ok"))[]) +print(ArcPointer(String("ok"))[]) ``` """ @@ -50,7 +50,7 @@ from builtin.builtin_list import _lit_mut_cast from memory import UnsafePointer, stack_allocation -struct _ArcInner[T: Movable]: +struct _ArcPointerInner[T: Movable]: var refcount: Atomic[DType.uint64] var payload: T @@ -71,7 +71,9 @@ struct _ArcInner[T: Movable]: @register_passable -struct Arc[T: Movable](CollectionElement, CollectionElementNew, Identifiable): +struct ArcPointer[T: Movable]( + CollectionElement, CollectionElementNew, Identifiable +): """Atomic reference-counted pointer. This smart pointer owns an instance of `T` indirectly managed on the heap. @@ -86,7 +88,7 @@ struct Arc[T: Movable](CollectionElement, CollectionElementNew, Identifiable): T: The type of the stored value. """ - alias _inner_type = _ArcInner[T] + alias _inner_type = _ArcPointerInner[T] var _inner: UnsafePointer[Self._inner_type] @implicit @@ -98,7 +100,7 @@ struct Arc[T: Movable](CollectionElement, CollectionElementNew, Identifiable): value: The value to manage. """ self._inner = UnsafePointer[Self._inner_type].alloc(1) - # Cannot use init_pointee_move as _ArcInner isn't movable. + # Cannot use init_pointee_move as _ArcPointerInner isn't movable. __get_address_as_uninit_lvalue(self._inner.address) = Self._inner_type( value^ ) @@ -135,7 +137,7 @@ struct Arc[T: Movable](CollectionElement, CollectionElementNew, Identifiable): self._inner.free() # FIXME: The origin returned for this is currently self origin, which - # keeps the Arc object alive as long as there are references into it. That + # keeps the ArcPointer object alive as long as there are references into it. That # said, this isn't really the right modeling, we need hierarchical origins # to model the mutability and invalidation of the returned reference # correctly. @@ -174,23 +176,23 @@ struct Arc[T: Movable](CollectionElement, CollectionElementNew, Identifiable): return self._inner[].refcount.load() fn __is__(self, rhs: Self) -> Bool: - """Returns True if the two Arcs point at the same object. + """Returns True if the two ArcPointers point at the same object. Args: - rhs: The other Arc. + rhs: The other ArcPointer. Returns: - True if the two Arcs point at the same object and False otherwise. + True if the two ArcPointers point at the same object and False otherwise. """ return self._inner == rhs._inner fn __isnot__(self, rhs: Self) -> Bool: - """Returns True if the two Arcs point at different objects. + """Returns True if the two ArcPointers point at different objects. Args: - rhs: The other Arc. + rhs: The other ArcPointer. Returns: - True if the two Arcs point at different objects and False otherwise. + True if the two ArcPointers point at different objects and False otherwise. """ return self._inner != rhs._inner diff --git a/stdlib/test/memory/test_arc.mojo b/stdlib/test/memory/test_arc.mojo index 394b1d507f..e5c2ba8fd2 100644 --- a/stdlib/test/memory/test_arc.mojo +++ b/stdlib/test/memory/test_arc.mojo @@ -14,22 +14,22 @@ from collections import List -from memory import Arc, UnsafePointer +from memory import ArcPointer, UnsafePointer from testing import assert_equal, assert_false, assert_true from test_utils import ObservableDel def test_basic(): - var p = Arc(4) + var p = ArcPointer(4) var p2 = p p2[] = 3 assert_equal(3, p[]) def test_is(): - var p = Arc(3) + var p = ArcPointer(3) var p2 = p - var p3 = Arc(3) + var p3 = ArcPointer(3) assert_true(p is p2) assert_false(p is not p2) assert_false(p is p3) @@ -38,12 +38,12 @@ def test_is(): def test_deleter_not_called_until_no_references(): var deleted = False - var p = Arc(ObservableDel(UnsafePointer.address_of(deleted))) + var p = ArcPointer(ObservableDel(UnsafePointer.address_of(deleted))) var p2 = p _ = p^ assert_false(deleted) - var vec = List[Arc[ObservableDel]]() + var vec = List[ArcPointer[ObservableDel]]() vec.append(p2) _ = p2^ assert_false(deleted) @@ -53,13 +53,13 @@ def test_deleter_not_called_until_no_references(): def test_deleter_not_called_until_no_references_explicit_copy(): var deleted = False - var p = Arc(ObservableDel(UnsafePointer.address_of(deleted))) - var p2 = Arc(other=p) + var p = ArcPointer(ObservableDel(UnsafePointer.address_of(deleted))) + var p2 = ArcPointer(other=p) _ = p^ assert_false(deleted) - var vec = List[Arc[ObservableDel]]() - vec.append(Arc(other=p2)^) + var vec = List[ArcPointer[ObservableDel]]() + vec.append(ArcPointer(other=p2)^) _ = p2^ assert_false(deleted) _ = vec^ @@ -67,8 +67,8 @@ def test_deleter_not_called_until_no_references_explicit_copy(): def test_count(): - var a = Arc(10) - var b = Arc(other=a) + var a = ArcPointer(10) + var b = ArcPointer(other=a) var c = a assert_equal(3, a.count()) _ = b^ From 7a503dafb511c532c384cc9ed0ac3d925998d80f Mon Sep 17 00:00:00 2001 From: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Date: Thu, 21 Nov 2024 13:27:04 -0600 Subject: [PATCH 003/119] [External] [stdlib] [NFC] Move Formatter structs to their own module. Add `TODO`s and observations (#51324) [External] [stdlib] [NFC] Move Formatter structs to their own module Move Formatter structs to their own module. Add `TODO`s and observations. Motivation: These implementations will get more and more complex as time goes on. They are extensive and specific enough that they should be in their own module. Eventually they should become public structs, but that remains in the future until they are feature complete. Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Closes modularml/mojo#3782 MODULAR_ORIG_COMMIT_REV_ID: 62ab937be19baa549c5bd7fa88faf901485d2bd0 --- stdlib/src/builtin/string_literal.mojo | 4 +- stdlib/src/collections/string.mojo | 3 +- stdlib/src/utils/format.mojo | 719 +++++++++++++++++++++++++ stdlib/src/utils/string_slice.mojo | 612 +-------------------- 4 files changed, 722 insertions(+), 616 deletions(-) create mode 100644 stdlib/src/utils/format.mojo diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index c363f1b7bd..0373dd2f43 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -23,11 +23,9 @@ from hashlib._hasher import _HashableWithHasher, _Hasher from utils import StringRef, Span, StringSlice, StaticString from utils import Writable, Writer from utils._visualizers import lldb_formatter_wrapping_type - +from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry from utils.string_slice import ( _StringSliceIter, - _FormatCurlyEntry, - _CurlyEntryFormattable, _to_string_list, ) diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index f5046bfc74..9f47e618e7 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -37,13 +37,12 @@ from utils import ( Writable, Writer, ) +from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry from utils.string_slice import ( _utf8_byte_type, _StringSliceIter, _unicode_codepoint_utf8_byte_length, _shift_unicode_to_utf8, - _FormatCurlyEntry, - _CurlyEntryFormattable, _to_string_list, ) diff --git a/stdlib/src/utils/format.mojo b/stdlib/src/utils/format.mojo new file mode 100644 index 0000000000..cac20f191d --- /dev/null +++ b/stdlib/src/utils/format.mojo @@ -0,0 +1,719 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Implements Formatting utilities.""" + +from collections import Optional +from memory import UnsafePointer +from utils.string_slice import Stringlike + +# TODO: _FormatCurlyEntry and _FormatSpec should be public in the future for +# people who want to write their own templating engines. This is not yet done +# because the implementation is incomplete and we are missing crucial features. + +# ===----------------------------------------------------------------------===# +# Formatter +# ===----------------------------------------------------------------------===# + + +# NOTE(#3765): an interesting idea would be to allow custom start and end +# characters for formatting (passed as parameters to Formatter), this would be +# useful for people developing custom templating engines as it would allow +# detemining e.g. `` [...] `` html tags. +# And going a step further it might even be worth it adding custom format +# specification start character, and custom format specs themselves (by defining +# a trait that all format specifications conform to) +@value +struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): + """The struct that handles `Stringlike` formatting by curly braces entries. + This is internal for the types: `String`, `StringLiteral` and `StringSlice`. + """ + + var first_curly: Int + """The index of an opening brace around a substitution field.""" + var last_curly: Int + """The index of a closing brace around a substitution field.""" + # TODO: ord("a") conversion flag not supported yet + var conversion_flag: UInt8 + """The type of conversion for the entry: {ord("s"), ord("r")}.""" + var format_spec: Optional[_FormatSpec] + """The format specifier.""" + # TODO: ord("a") conversion flag not supported yet + alias supported_conversion_flags = SIMD[DType.uint8, 2](ord("s"), ord("r")) + """Currently supported conversion flags: `__str__` and `__repr__`.""" + alias _FieldVariantType = Variant[String, Int, NoneType, Bool] + """Purpose of the `Variant` `Self.field`: + + - `Int` for manual indexing: (value field contains `0`). + - `NoneType` for automatic indexing: (value field contains `None`). + - `String` for **kwargs indexing: (value field contains `foo`). + - `Bool` for escaped curlies: (value field contains False for `{` or True + for `}`). + """ + var field: Self._FieldVariantType + """Store the substitution field. See `Self._FieldVariantType` docstrings for + more details.""" + alias _args_t = VariadicPack[element_trait=_CurlyEntryFormattable, *_] + """Args types that are formattable by curly entry.""" + + fn __init__(out self, *, other: Self): + """Construct a format entry by copying another. + + Args: + other: The other format entry. + """ + self.first_curly = other.first_curly + self.last_curly = other.last_curly + self.conversion_flag = other.conversion_flag + self.field = Self._FieldVariantType(other=other.field) + self.format_spec = other.format_spec + + fn __init__( + inout self, + first_curly: Int, + last_curly: Int, + field: Self._FieldVariantType, + conversion_flag: UInt8 = 0, + format_spec: Optional[_FormatSpec] = None, + ): + """Construct a format entry. + + Args: + first_curly: The index of an opening brace around a substitution + field. + last_curly: The index of a closing brace around a substitution + field. + field: Store the substitution field. + conversion_flag: The type of conversion for the entry. + format_spec: The format specifier. + """ + self.first_curly = first_curly + self.last_curly = last_curly + self.field = field + self.conversion_flag = conversion_flag + self.format_spec = format_spec + + @always_inline + fn is_escaped_brace(ref self) -> Bool: + """Whether the field is escaped_brace. + + Returns: + The result. + """ + return self.field.isa[Bool]() + + @always_inline + fn is_kwargs_field(ref self) -> Bool: + """Whether the field is kwargs_field. + + Returns: + The result. + """ + return self.field.isa[String]() + + @always_inline + fn is_automatic_indexing(ref self) -> Bool: + """Whether the field is automatic_indexing. + + Returns: + The result. + """ + return self.field.isa[NoneType]() + + @always_inline + fn is_manual_indexing(ref self) -> Bool: + """Whether the field is manual_indexing. + + Returns: + The result. + """ + return self.field.isa[Int]() + + @staticmethod + fn format[T: Stringlike](fmt_src: T, args: Self._args_t) raises -> String: + """Format the entries. + + Args: + fmt_src: The format source. + args: The arguments. + + Returns: + The result. + """ + alias len_pos_args = __type_of(args).__len__() + entries, size_estimation = Self._create_entries(fmt_src, len_pos_args) + var fmt_len = fmt_src.byte_length() + var buf = String._buffer_type(capacity=fmt_len + size_estimation) + buf.size = 1 + buf.unsafe_set(0, 0) + var res = String(buf^) + var offset = 0 + var ptr = fmt_src.unsafe_ptr() + alias S = StringSlice[StaticConstantOrigin] + + @always_inline("nodebug") + fn _build_slice(p: UnsafePointer[UInt8], start: Int, end: Int) -> S: + return S(ptr=p + start, length=end - start) + + var auto_arg_index = 0 + for e in entries: + debug_assert(offset < fmt_len, "offset >= fmt_src.byte_length()") + res += _build_slice(ptr, offset, e[].first_curly) + e[]._format_entry[len_pos_args](res, args, auto_arg_index) + offset = e[].last_curly + 1 + + res += _build_slice(ptr, offset, fmt_len) + return res^ + + @staticmethod + fn _create_entries[ + T: Stringlike + ](fmt_src: T, len_pos_args: Int) raises -> (List[Self], Int): + """Returns a list of entries and its total estimated entry byte width. + """ + var manual_indexing_count = 0 + var automatic_indexing_count = 0 + var raised_manual_index = Optional[Int](None) + var raised_automatic_index = Optional[Int](None) + var raised_kwarg_field = Optional[String](None) + alias `}` = UInt8(ord("}")) + alias `{` = UInt8(ord("{")) + alias l_err = "there is a single curly { left unclosed or unescaped" + alias r_err = "there is a single curly } left unclosed or unescaped" + + var entries = List[Self]() + var start = Optional[Int](None) + var skip_next = False + var fmt_ptr = fmt_src.unsafe_ptr() + var fmt_len = fmt_src.byte_length() + var total_estimated_entry_byte_width = 0 + + for i in range(fmt_len): + if skip_next: + skip_next = False + continue + if fmt_ptr[i] == `{`: + if not start: + start = i + continue + if i - start.value() != 1: + raise Error(l_err) + # python escapes double curlies + entries.append(Self(start.value(), i, field=False)) + start = None + continue + elif fmt_ptr[i] == `}`: + if not start and (i + 1) < fmt_len: + # python escapes double curlies + if fmt_ptr[i + 1] == `}`: + entries.append(Self(i, i + 1, field=True)) + total_estimated_entry_byte_width += 2 + skip_next = True + continue + elif not start: # if it is not an escaped one, it is an error + raise Error(r_err) + + var start_value = start.value() + var current_entry = Self(start_value, i, field=NoneType()) + + if i - start_value != 1: + if current_entry._handle_field_and_break( + fmt_src, + len_pos_args, + i, + start_value, + automatic_indexing_count, + raised_automatic_index, + manual_indexing_count, + raised_manual_index, + raised_kwarg_field, + total_estimated_entry_byte_width, + ): + break + else: # automatic indexing + if automatic_indexing_count >= len_pos_args: + raised_automatic_index = automatic_indexing_count + break + automatic_indexing_count += 1 + total_estimated_entry_byte_width += 8 # guessing + entries.append(current_entry^) + start = None + + if raised_automatic_index: + raise Error("Automatic indexing require more args in *args") + elif raised_kwarg_field: + var val = raised_kwarg_field.value() + raise Error("Index " + val + " not in kwargs") + elif manual_indexing_count and automatic_indexing_count: + raise Error("Cannot both use manual and automatic indexing") + elif raised_manual_index: + var val = str(raised_manual_index.value()) + raise Error("Index " + val + " not in *args") + elif start: + raise Error(l_err) + return entries^, total_estimated_entry_byte_width + + fn _handle_field_and_break[ + T: Stringlike + ]( + inout self, + fmt_src: T, + len_pos_args: Int, + i: Int, + start_value: Int, + inout automatic_indexing_count: Int, + inout raised_automatic_index: Optional[Int], + inout manual_indexing_count: Int, + inout raised_manual_index: Optional[Int], + inout raised_kwarg_field: Optional[String], + inout total_estimated_entry_byte_width: Int, + ) raises -> Bool: + alias S = StringSlice[StaticConstantOrigin] + + @always_inline("nodebug") + fn _build_slice(p: UnsafePointer[UInt8], start: Int, end: Int) -> S: + return S(ptr=p + start, length=end - start) + + var field = _build_slice(fmt_src.unsafe_ptr(), start_value + 1, i) + var field_ptr = field.unsafe_ptr() + var field_len = i - (start_value + 1) + var exclamation_index = -1 + var idx = 0 + while idx < field_len: + if field_ptr[idx] == ord("!"): + exclamation_index = idx + break + idx += 1 + var new_idx = exclamation_index + 1 + if exclamation_index != -1: + if new_idx == field_len: + raise Error("Empty conversion flag.") + var conversion_flag = field_ptr[new_idx] + if field_len - new_idx > 1 or ( + conversion_flag not in Self.supported_conversion_flags + ): + var f = String(_build_slice(field_ptr, new_idx, field_len)) + _ = field + raise Error('Conversion flag "' + f + '" not recognised.') + self.conversion_flag = conversion_flag + field = _build_slice(field_ptr, 0, exclamation_index) + else: + new_idx += 1 + + var extra = int(new_idx < field_len) + var fmt_field = _build_slice(field_ptr, new_idx + extra, field_len) + self.format_spec = _FormatSpec.parse(fmt_field) + var w = int(self.format_spec.value().width) if self.format_spec else 0 + # fully guessing the byte width here to be at least 8 bytes per entry + # minus the length of the whole format specification + total_estimated_entry_byte_width += 8 * int(w > 0) + w - (field_len + 2) + + if field.byte_length() == 0: + # an empty field, so it's automatic indexing + if automatic_indexing_count >= len_pos_args: + raised_automatic_index = automatic_indexing_count + return True + automatic_indexing_count += 1 + else: + try: + # field is a number for manual indexing: + # TODO: add support for "My name is {0.name}".format(Person(name="Fred")) + # TODO: add support for "My name is {0[name]}".format({"name": "Fred"}) + var number = int(field) + self.field = number + if number >= len_pos_args or number < 0: + raised_manual_index = number + return True + manual_indexing_count += 1 + except e: + alias unexp = "Not the expected error from atol" + debug_assert("not convertible to integer" in str(e), unexp) + # field is a keyword for **kwargs: + # TODO: add support for "My name is {person.name}".format(person=Person(name="Fred")) + # TODO: add support for "My name is {person[name]}".format(person={"name": "Fred"}) + var f = str(field) + self.field = f + raised_kwarg_field = f + return True + return False + + fn _format_entry[ + len_pos_args: Int + ](self, inout res: String, args: Self._args_t, inout auto_idx: Int) raises: + # TODO(#3403 and/or #3252): this function should be able to use + # Writer syntax when the type implements it, since it will give great + # performance benefits. This also needs to be able to check if the given + # args[i] conforms to the trait needed by the conversion_flag to avoid + # needing to constraint that every type needs to conform to every trait. + alias `r` = UInt8(ord("r")) + alias `s` = UInt8(ord("s")) + # alias `a` = UInt8(ord("a")) # TODO + + @parameter + fn _format(idx: Int) raises: + @parameter + for i in range(len_pos_args): + if i == idx: + var type_impls_repr = True # TODO + var type_impls_str = True # TODO + var type_impls_write_repr = True # TODO + var type_impls_write_str = True # TODO + var flag = self.conversion_flag + var empty = flag == 0 and not self.format_spec + + var data: String + if empty and type_impls_write_str: + data = str(args[i]) # TODO: use writer and return + elif empty and type_impls_str: + data = str(args[i]) + elif flag == `s` and type_impls_write_str: + if empty: + # TODO: use writer and return + pass + data = str(args[i]) + elif flag == `s` and type_impls_str: + data = str(args[i]) + elif flag == `r` and type_impls_write_repr: + if empty: + # TODO: use writer and return + pass + data = repr(args[i]) + elif flag == `r` and type_impls_repr: + data = repr(args[i]) + elif self.format_spec: + self.format_spec.value().format(res, args[i]) + return + else: + alias argnum = "Argument number: " + alias does_not = " does not implement the trait " + alias needed = "needed for conversion_flag: " + var flg = String(List[UInt8](flag, 0)) + raise Error(argnum + str(i) + does_not + needed + flg) + + if self.format_spec: + self.format_spec.value().format( + res, data.as_string_slice() + ) + else: + res += data + + if self.is_escaped_brace(): + res += "}" if self.field[Bool] else "{" + elif self.is_manual_indexing(): + _format(self.field[Int]) + elif self.is_automatic_indexing(): + _format(auto_idx) + auto_idx += 1 + + +# ===----------------------------------------------------------------------===# +# Format Specification +# ===----------------------------------------------------------------------===# + + +trait _CurlyEntryFormattable(Stringable, Representable): + """This trait is used by the `format()` method to support format specifiers. + Currently, it is a composition of both `Stringable` and `Representable` + traits i.e. a type to be formatted must implement both. In the future this + will be less constrained. + """ + + ... + + +# TODO: trait _FormattableStr: fn __format__(self, spec: FormatSpec) -> String: +# TODO: trait _FormattableWrite: fn __format__(self, spec: FormatSpec, *, writer: Writer): +# TODO: add usage of these traits before trying to coerce to repr/str/int/float + + +@value +@register_passable("trivial") +struct _FormatSpec: + """Store every field of the format specifier in a byte (e.g., ord("+") for + sign). It is stored in a byte because every [format specifier]( + https://docs.python.org/3/library/string.html#formatspec) is an ASCII + character. + """ + + var fill: UInt8 + """If a valid align value is specified, it can be preceded by a fill + character that can be any character and defaults to a space if omitted. + """ + var align: UInt8 + """The meaning of the various alignment options is as follows: + + | Option | Meaning| + |:------:|:-------| + |'<' | Forces the field to be left-aligned within the available space \ + (this is the default for most objects).| + |'>' | Forces the field to be right-aligned within the available space \ + (this is the default for numbers).| + |'=' | Forces the padding to be placed after the sign (if any) but before \ + the digits. This is used for printing fields in the form `+000000120`. This\ + alignment option is only valid for numeric types. It becomes the default\ + for numbers when `0` immediately precedes the field width.| + |'^' | Forces the field to be centered within the available space.| + """ + var sign: UInt8 + """The sign option is only valid for number types, and can be one of the + following: + + | Option | Meaning| + |:------:|:-------| + |'+' | indicates that a sign should be used for both positive as well as\ + negative numbers.| + |'-' | indicates that a sign should be used only for negative numbers (this\ + is the default behavior).| + |space | indicates that a leading space should be used on positive numbers,\ + and a minus sign on negative numbers.| + """ + var coerce_z: Bool + """The 'z' option coerces negative zero floating-point values to positive + zero after rounding to the format precision. This option is only valid for + floating-point presentation types. + """ + var alternate_form: Bool + """The alternate form is defined differently for different types. This + option is only valid for types that implement the trait `# TODO: define + trait`. For integers, when binary, octal, or hexadecimal output is used, + this option adds the respective prefix '0b', '0o', '0x', or '0X' to the + output value. For float and complex the alternate form causes the result of + the conversion to always contain a decimal-point character, even if no + digits follow it. + """ + var width: UInt8 + """A decimal integer defining the minimum total field width, including any + prefixes, separators, and other formatting characters. If not specified, + then the field width will be determined by the content. When no explicit + alignment is given, preceding the width field by a zero ('0') character + enables sign-aware zero-padding for numeric types. This is equivalent to a + fill character of '0' with an alignment type of '='. + """ + var grouping_option: UInt8 + """The ',' option signals the use of a comma for a thousands separator. For + a locale aware separator, use the 'n' integer presentation type instead. The + '_' option signals the use of an underscore for a thousands separator for + floating-point presentation types and for integer presentation type 'd'. For + integer presentation types 'b', 'o', 'x', and 'X', underscores will be + inserted every 4 digits. For other presentation types, specifying this + option is an error. + """ + var precision: UInt8 + """The precision is a decimal integer indicating how many digits should be + displayed after the decimal point for presentation types 'f' and 'F', or + before and after the decimal point for presentation types 'g' or 'G'. For + string presentation types the field indicates the maximum field size - in + other words, how many characters will be used from the field content. The + precision is not allowed for integer presentation types. + """ + var type: UInt8 + """Determines how the data should be presented. + + The available integer presentation types are: + + | Option | Meaning| + |:------:|:-------| + |'b' |Binary format. Outputs the number in base 2.| + |'c' |Character. Converts the integer to the corresponding unicode\ + character before printing.| + |'d' |Decimal Integer. Outputs the number in base 10.| + |'o' |Octal format. Outputs the number in base 8.| + |'x' |Hex format. Outputs the number in base 16, using lower-case letters\ + for the digits above 9.| + |'X' |Hex format. Outputs the number in base 16, using upper-case letters\ + for the digits above 9. In case '#' is specified, the prefix '0x' will be\ + upper-cased to '0X' as well.| + |'n' |Number. This is the same as 'd', except that it uses the current\ + locale setting to insert the appropriate number separator characters.| + |None | The same as 'd'.| + + In addition to the above presentation types, integers can be formatted with + the floating-point presentation types listed below (except 'n' and None). + When doing so, float() is used to convert the integer to a floating-point + number before formatting. + + The available presentation types for float and Decimal values are: + + | Option | Meaning| + |:------:|:-------| + |'e' |Scientific notation. For a given precision p, formats the number in\ + scientific notation with the letter `e` separating the coefficient from the\ + exponent. The coefficient has one digit before and p digits after the\ + decimal point, for a total of p + 1 significant digits. With no precision\ + given, uses a precision of 6 digits after the decimal point for float, and\ + shows all coefficient digits for Decimal. If no digits follow the decimal\ + point, the decimal point is also removed unless the # option is used.| + |'E' |Scientific notation. Same as 'e' except it uses an upper case `E` as\ + the separator character.| + |'f' |Fixed-point notation. For a given precision p, formats the number as\ + a decimal number with exactly p digits following the decimal point. With no\ + precision given, uses a precision of 6 digits after the decimal point for\ + float, and uses a precision large enough to show all coefficient digits for\ + Decimal. If no digits follow the decimal point, the decimal point is also\ + removed unless the '#' option is used.| + |'F' |Fixed-point notation. Same as 'f', but converts nan to NAN and inf to\ + INF.| + |'g' |General format. For a given precision p >= 1, this rounds the number\ + to p significant digits and then formats the result in either fixed-point\ + format or in scientific notation, depending on its magnitude. A precision\ + of 0 is treated as equivalent to a precision of 1.\ + The precise rules are as follows: suppose that the result formatted with\ + presentation type 'e' and precision p-1 would have exponent exp. Then, if\ + m <= exp < p, where m is -4 for floats and -6 for Decimals, the number is\ + formatted with presentation type 'f' and precision p-1-exp. Otherwise, the\ + number is formatted with presentation type 'e' and precision p-1. In both\ + cases insignificant trailing zeros are removed from the significand, and\ + the decimal point is also removed if there are no remaining digits\ + following it, unless the '#' option is used.\ + With no precision given, uses a precision of 6 significant digits for\ + float. For Decimal, the coefficient of the result is formed from the\ + coefficient digits of the value; scientific notation is used for values\ + smaller than 1e-6 in absolute value and values where the place value of the\ + least significant digit is larger than 1, and fixed-point notation is used\ + otherwise.\ + Positive and negative infinity, positive and negative zero, and nans, are\ + formatted as inf, -inf, 0, -0 and nan respectively, regardless of the\ + precision.| + |'G' |General format. Same as 'g' except switches to 'E' if the number gets\ + too large. The representations of infinity and NaN are uppercased, too.| + |'n' |Number. This is the same as 'g', except that it uses the current\ + locale setting to insert the appropriate number separator characters.| + |'%' |Percentage. Multiplies the number by 100 and displays in fixed ('f')\ + format, followed by a percent sign.| + |None |For float this is like the 'g' type, except that when fixed-point\ + notation is used to format the result, it always includes at least one\ + digit past the decimal point, and switches to the scientific notation when\ + exp >= p - 1. When the precision is not specified, the latter will be as\ + large as needed to represent the given value faithfully.\ + For Decimal, this is the same as either 'g' or 'G' depending on the value\ + of context.capitals for the current decimal context.\ + The overall effect is to match the output of str() as altered by the other\ + format modifiers.| + """ + + fn __init__( + inout self, + fill: UInt8 = ord(" "), + align: UInt8 = 0, + sign: UInt8 = ord("-"), + coerce_z: Bool = False, + alternate_form: Bool = False, + width: UInt8 = 0, + grouping_option: UInt8 = 0, + precision: UInt8 = 0, + type: UInt8 = 0, + ): + """Construct a FormatSpec instance. + + Args: + fill: Defaults to space. + align: Defaults to `0` which is adjusted to the default for the arg + type. + sign: Defaults to `-`. + coerce_z: Defaults to False. + alternate_form: Defaults to False. + width: Defaults to `0` which is adjusted to the default for the arg + type. + grouping_option: Defaults to `0` which is adjusted to the default for + the arg type. + precision: Defaults to `0` which is adjusted to the default for the + arg type. + type: Defaults to `0` which is adjusted to the default for the arg + type. + """ + self.fill = fill + self.align = align + self.sign = sign + self.coerce_z = coerce_z + self.alternate_form = alternate_form + self.width = width + self.grouping_option = grouping_option + self.precision = precision + self.type = type + + @staticmethod + fn parse(fmt_str: StringSlice) -> Optional[Self]: + """Parses the format spec string. + + Args: + fmt_str: The StringSlice with the format spec. + + Returns: + An instance of FormatSpec. + """ + + # FIXME: the need for the following dynamic characteristics will + # probably mean the parse method will have to be called at the + # formatting stage in cases where it's dynamic. + # TODO: add support for "{0:{1}}".format(123, "10") + # TODO: add support for more complex cases as well + # >>> width = 10 + # >>> precision = 4 + # >>> value = decimal.Decimal('12.34567') + # >>> 'result: {value:{width}.{precision}}'.format(...) + alias `:` = UInt8(ord(":")) + var f_len = fmt_str.byte_length() + var f_ptr = fmt_str.unsafe_ptr() + var colon_idx = -1 + var idx = 0 + while idx < f_len: + if f_ptr[idx] == `:`: + exclamation_index = idx + break + idx += 1 + + if colon_idx == -1: + return None + + # TODO: Future implementation of format specifiers + return None + + # TODO: this should be in StringSlice.__format__(self, spec: FormatSpec, *, writer: Writer): + fn format(self, inout res: String, item: StringSlice) raises: + """Transform a String according to its format specification. + + Args: + res: The resulting String. + item: The item to format. + """ + + # TODO: align, fill, etc. + res += item + + fn format[ + T: _CurlyEntryFormattable + ](self, inout res: String, item: T) raises: + """Stringify a type according to its format specification. + + Args: + res: The resulting String. + item: The item to stringify. + """ + var type_implements_format_write = True # TODO + var type_implements_format_write_raising = True # TODO + var type_implements_format = True # TODO + var type_implements_format_raising = True # TODO + var type_implements_float = True # TODO + var type_implements_float_raising = True # TODO + var type_implements_int = True # TODO + var type_implements_int_raising = True # TODO + + # TODO: send to the type's __format__ method if it has one + # TODO: transform to int/float depending on format spec + # TODO: send to float/int 's __format__ method + # their methods should stringify as hex/bin/oct etc. + res += str(item) + + +# ===----------------------------------------------------------------------===# +# Utils +# ===----------------------------------------------------------------------===# diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index b7fe463728..3b6c8bb4fd 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -10,7 +10,6 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # - """Implements the StringSlice type. You can import these APIs from the `utils.string_slice` module. @@ -30,6 +29,7 @@ from memory import memcmp, UnsafePointer, memcpy from sys import simdwidthof, bitwidthof from sys.intrinsics import unlikely from memory.memory import _memcmp_impl_unconstrained +from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry from ._utf8_validation import _is_valid_utf8 alias StaticString = StringSlice[StaticConstantOrigin] @@ -1115,613 +1115,3 @@ fn _to_string_list[ return len(v) return _to_string_list[items.T, len_fn, unsafe_ptr_fn](items) - - -# ===----------------------------------------------------------------------===# -# Format method structures -# ===----------------------------------------------------------------------===# - - -trait _CurlyEntryFormattable(Stringable, Representable): - """This trait is used by the `format()` method to support format specifiers. - Currently, it is a composition of both `Stringable` and `Representable` - traits i.e. a type to be formatted must implement both. In the future this - will be less constrained. - """ - - ... - - -@value -struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): - """The struct that handles `Stringlike` formatting by curly braces entries. - This is internal for the types: `String`, `StringLiteral` and `StringSlice`. - """ - - var first_curly: Int - """The index of an opening brace around a substitution field.""" - var last_curly: Int - """The index of a closing brace around a substitution field.""" - # TODO: ord("a") conversion flag not supported yet - var conversion_flag: UInt8 - """The type of conversion for the entry: {ord("s"), ord("r")}.""" - var format_spec: Optional[_FormatSpec] - """The format specifier.""" - # TODO: ord("a") conversion flag not supported yet - alias supported_conversion_flags = SIMD[DType.uint8, 2](ord("s"), ord("r")) - """Currently supported conversion flags: `__str__` and `__repr__`.""" - alias _FieldVariantType = Variant[String, Int, NoneType, Bool] - """Purpose of the `Variant` `Self.field`: - - - `Int` for manual indexing: (value field contains `0`). - - `NoneType` for automatic indexing: (value field contains `None`). - - `String` for **kwargs indexing: (value field contains `foo`). - - `Bool` for escaped curlies: (value field contains False for `{` or True - for `}`). - """ - var field: Self._FieldVariantType - """Store the substitution field. See `Self._FieldVariantType` docstrings for - more details.""" - alias _args_t = VariadicPack[element_trait=_CurlyEntryFormattable, *_] - """Args types that are formattable by curly entry.""" - - fn __init__(out self, *, other: Self): - self.first_curly = other.first_curly - self.last_curly = other.last_curly - self.conversion_flag = other.conversion_flag - self.field = Self._FieldVariantType(other=other.field) - self.format_spec = other.format_spec - - fn __init__( - inout self, - first_curly: Int, - last_curly: Int, - field: Self._FieldVariantType, - conversion_flag: UInt8 = 0, - format_spec: Optional[_FormatSpec] = None, - ): - self.first_curly = first_curly - self.last_curly = last_curly - self.field = field - self.conversion_flag = conversion_flag - self.format_spec = format_spec - - @always_inline - fn is_escaped_brace(ref self) -> Bool: - return self.field.isa[Bool]() - - @always_inline - fn is_kwargs_field(ref self) -> Bool: - return self.field.isa[String]() - - @always_inline - fn is_automatic_indexing(ref self) -> Bool: - return self.field.isa[NoneType]() - - @always_inline - fn is_manual_indexing(ref self) -> Bool: - return self.field.isa[Int]() - - @staticmethod - fn format[T: Stringlike](fmt_src: T, args: Self._args_t) raises -> String: - alias len_pos_args = __type_of(args).__len__() - entries, size_estimation = Self._create_entries(fmt_src, len_pos_args) - var fmt_len = fmt_src.byte_length() - var buf = String._buffer_type(capacity=fmt_len + size_estimation) - buf.size = 1 - buf.unsafe_set(0, 0) - var res = String(buf^) - var offset = 0 - var ptr = fmt_src.unsafe_ptr() - alias S = StringSlice[StaticConstantOrigin] - - @always_inline("nodebug") - fn _build_slice(p: UnsafePointer[UInt8], start: Int, end: Int) -> S: - return S(ptr=p + start, length=end - start) - - var auto_arg_index = 0 - for e in entries: - debug_assert(offset < fmt_len, "offset >= fmt_src.byte_length()") - res += _build_slice(ptr, offset, e[].first_curly) - e[]._format_entry[len_pos_args](res, args, auto_arg_index) - offset = e[].last_curly + 1 - - res += _build_slice(ptr, offset, fmt_len) - return res^ - - @staticmethod - fn _create_entries[ - T: Stringlike - ](fmt_src: T, len_pos_args: Int) raises -> (List[Self], Int): - """Returns a list of entries and its total estimated entry byte width. - """ - var manual_indexing_count = 0 - var automatic_indexing_count = 0 - var raised_manual_index = Optional[Int](None) - var raised_automatic_index = Optional[Int](None) - var raised_kwarg_field = Optional[String](None) - alias `}` = UInt8(ord("}")) - alias `{` = UInt8(ord("{")) - alias l_err = "there is a single curly { left unclosed or unescaped" - alias r_err = "there is a single curly } left unclosed or unescaped" - - var entries = List[Self]() - var start = Optional[Int](None) - var skip_next = False - var fmt_ptr = fmt_src.unsafe_ptr() - var fmt_len = fmt_src.byte_length() - var total_estimated_entry_byte_width = 0 - - for i in range(fmt_len): - if skip_next: - skip_next = False - continue - if fmt_ptr[i] == `{`: - if not start: - start = i - continue - if i - start.value() != 1: - raise Error(l_err) - # python escapes double curlies - entries.append(Self(start.value(), i, field=False)) - start = None - continue - elif fmt_ptr[i] == `}`: - if not start and (i + 1) < fmt_len: - # python escapes double curlies - if fmt_ptr[i + 1] == `}`: - entries.append(Self(i, i + 1, field=True)) - total_estimated_entry_byte_width += 2 - skip_next = True - continue - elif not start: # if it is not an escaped one, it is an error - raise Error(r_err) - - var start_value = start.value() - var current_entry = Self(start_value, i, field=NoneType()) - - if i - start_value != 1: - if current_entry._handle_field_and_break( - fmt_src, - len_pos_args, - i, - start_value, - automatic_indexing_count, - raised_automatic_index, - manual_indexing_count, - raised_manual_index, - raised_kwarg_field, - total_estimated_entry_byte_width, - ): - break - else: # automatic indexing - if automatic_indexing_count >= len_pos_args: - raised_automatic_index = automatic_indexing_count - break - automatic_indexing_count += 1 - total_estimated_entry_byte_width += 8 # guessing - entries.append(current_entry^) - start = None - - if raised_automatic_index: - raise Error("Automatic indexing require more args in *args") - elif raised_kwarg_field: - var val = raised_kwarg_field.value() - raise Error("Index " + val + " not in kwargs") - elif manual_indexing_count and automatic_indexing_count: - raise Error("Cannot both use manual and automatic indexing") - elif raised_manual_index: - var val = str(raised_manual_index.value()) - raise Error("Index " + val + " not in *args") - elif start: - raise Error(l_err) - return entries^, total_estimated_entry_byte_width - - fn _handle_field_and_break[ - T: Stringlike - ]( - inout self, - fmt_src: T, - len_pos_args: Int, - i: Int, - start_value: Int, - inout automatic_indexing_count: Int, - inout raised_automatic_index: Optional[Int], - inout manual_indexing_count: Int, - inout raised_manual_index: Optional[Int], - inout raised_kwarg_field: Optional[String], - inout total_estimated_entry_byte_width: Int, - ) raises -> Bool: - alias S = StringSlice[StaticConstantOrigin] - - @always_inline("nodebug") - fn _build_slice(p: UnsafePointer[UInt8], start: Int, end: Int) -> S: - return S(ptr=p + start, length=end - start) - - var field = _build_slice(fmt_src.unsafe_ptr(), start_value + 1, i) - var field_ptr = field.unsafe_ptr() - var field_len = i - (start_value + 1) - var exclamation_index = -1 - var idx = 0 - while idx < field_len: - if field_ptr[idx] == ord("!"): - exclamation_index = idx - break - idx += 1 - var new_idx = exclamation_index + 1 - if exclamation_index != -1: - if new_idx == field_len: - raise Error("Empty conversion flag.") - var conversion_flag = field_ptr[new_idx] - if field_len - new_idx > 1 or ( - conversion_flag not in Self.supported_conversion_flags - ): - var f = String(_build_slice(field_ptr, new_idx, field_len)) - _ = field - raise Error('Conversion flag "' + f + '" not recognised.') - self.conversion_flag = conversion_flag - field = _build_slice(field_ptr, 0, exclamation_index) - else: - new_idx += 1 - - var extra = int(new_idx < field_len) - var fmt_field = _build_slice(field_ptr, new_idx + extra, field_len) - self.format_spec = _FormatSpec.parse(fmt_field) - var w = int(self.format_spec.value().width) if self.format_spec else 0 - # fully guessing the byte width here to be at least 8 bytes per entry - # minus the length of the whole format specification - total_estimated_entry_byte_width += 8 * int(w > 0) + w - (field_len + 2) - - if field.byte_length() == 0: - # an empty field, so it's automatic indexing - if automatic_indexing_count >= len_pos_args: - raised_automatic_index = automatic_indexing_count - return True - automatic_indexing_count += 1 - else: - try: - # field is a number for manual indexing: - var number = int(field) - self.field = number - if number >= len_pos_args or number < 0: - raised_manual_index = number - return True - manual_indexing_count += 1 - except e: - alias unexp = "Not the expected error from atol" - debug_assert("not convertible to integer" in str(e), unexp) - # field is a keyword for **kwargs: - var f = str(field) - self.field = f - raised_kwarg_field = f - return True - return False - - fn _format_entry[ - len_pos_args: Int - ](self, inout res: String, args: Self._args_t, inout auto_idx: Int) raises: - # TODO(#3403 and/or #3252): this function should be able to use - # Formatter syntax when the type implements it, since it will give great - # performance benefits. This also needs to be able to check if the given - # args[i] conforms to the trait needed by the conversion_flag to avoid - # needing to constraint that every type needs to conform to every trait. - alias `r` = UInt8(ord("r")) - alias `s` = UInt8(ord("s")) - # alias `a` = UInt8(ord("a")) # TODO - - @parameter - fn _format(idx: Int) raises: - @parameter - for i in range(len_pos_args): - if i == idx: - var type_impls_repr = True # TODO - var type_impls_str = True # TODO - var type_impls_formatter_repr = True # TODO - var type_impls_formatter_str = True # TODO - var flag = self.conversion_flag - var empty = flag == 0 and not self.format_spec - - var data: String - if empty and type_impls_formatter_str: - data = str(args[i]) # TODO: use writer and return - elif empty and type_impls_str: - data = str(args[i]) - elif flag == `s` and type_impls_formatter_str: - if empty: - # TODO: use writer and return - pass - data = str(args[i]) - elif flag == `s` and type_impls_str: - data = str(args[i]) - elif flag == `r` and type_impls_formatter_repr: - if empty: - # TODO: use writer and return - pass - data = repr(args[i]) - elif flag == `r` and type_impls_repr: - data = repr(args[i]) - elif self.format_spec: - self.format_spec.value().stringify(res, args[i]) - return - else: - alias argnum = "Argument number: " - alias does_not = " does not implement the trait " - alias needed = "needed for conversion_flag: " - var flg = String(List[UInt8](flag, 0)) - raise Error(argnum + str(i) + does_not + needed + flg) - - if self.format_spec: - self.format_spec.value().format_string(res, data) - else: - res += data - - if self.is_escaped_brace(): - res += "}" if self.field[Bool] else "{" - elif self.is_manual_indexing(): - _format(self.field[Int]) - elif self.is_automatic_indexing(): - _format(auto_idx) - auto_idx += 1 - - -@value -@register_passable("trivial") -struct _FormatSpec: - """Store every field of the format specifier in a byte (e.g., ord("+") for - sign). It is stored in a byte because every [format specifier]( - https://docs.python.org/3/library/string.html#formatspec) is an ASCII - character. - """ - - var fill: UInt8 - """If a valid align value is specified, it can be preceded by a fill - character that can be any character and defaults to a space if omitted. - """ - var align: UInt8 - """The meaning of the various alignment options is as follows: - - | Option | Meaning| - |:------:|:-------| - |'<' | Forces the field to be left-aligned within the available space \ - (this is the default for most objects).| - |'>' | Forces the field to be right-aligned within the available space \ - (this is the default for numbers).| - |'=' | Forces the padding to be placed after the sign (if any) but before \ - the digits. This is used for printing fields in the form `+000000120`. This\ - alignment option is only valid for numeric types. It becomes the default\ - for numbers when `0` immediately precedes the field width.| - |'^' | Forces the field to be centered within the available space.| - """ - var sign: UInt8 - """The sign option is only valid for number types, and can be one of the - following: - - | Option | Meaning| - |:------:|:-------| - |'+' | indicates that a sign should be used for both positive as well as\ - negative numbers.| - |'-' | indicates that a sign should be used only for negative numbers (this\ - is the default behavior).| - |space | indicates that a leading space should be used on positive numbers,\ - and a minus sign on negative numbers.| - """ - var coerce_z: Bool - """The 'z' option coerces negative zero floating-point values to positive - zero after rounding to the format precision. This option is only valid for - floating-point presentation types. - """ - var alternate_form: Bool - """The alternate form is defined differently for different types. This - option is only valid for types that implement the trait `# TODO: define - trait`. For integers, when binary, octal, or hexadecimal output is used, - this option adds the respective prefix '0b', '0o', '0x', or '0X' to the - output value. For float and complex the alternate form causes the result of - the conversion to always contain a decimal-point character, even if no - digits follow it. - """ - var width: UInt8 - """A decimal integer defining the minimum total field width, including any - prefixes, separators, and other formatting characters. If not specified, - then the field width will be determined by the content. When no explicit - alignment is given, preceding the width field by a zero ('0') character - enables sign-aware zero-padding for numeric types. This is equivalent to a - fill character of '0' with an alignment type of '='. - """ - var grouping_option: UInt8 - """The ',' option signals the use of a comma for a thousands separator. For - a locale aware separator, use the 'n' integer presentation type instead. The - '_' option signals the use of an underscore for a thousands separator for - floating-point presentation types and for integer presentation type 'd'. For - integer presentation types 'b', 'o', 'x', and 'X', underscores will be - inserted every 4 digits. For other presentation types, specifying this - option is an error. - """ - var precision: UInt8 - """The precision is a decimal integer indicating how many digits should be - displayed after the decimal point for presentation types 'f' and 'F', or - before and after the decimal point for presentation types 'g' or 'G'. For - string presentation types the field indicates the maximum field size - in - other words, how many characters will be used from the field content. The - precision is not allowed for integer presentation types. - """ - var type: UInt8 - """Determines how the data should be presented. - - The available integer presentation types are: - - | Option | Meaning| - |:------:|:-------| - |'b' |Binary format. Outputs the number in base 2.| - |'c' |Character. Converts the integer to the corresponding unicode\ - character before printing.| - |'d' |Decimal Integer. Outputs the number in base 10.| - |'o' |Octal format. Outputs the number in base 8.| - |'x' |Hex format. Outputs the number in base 16, using lower-case letters\ - for the digits above 9.| - |'X' |Hex format. Outputs the number in base 16, using upper-case letters\ - for the digits above 9. In case '#' is specified, the prefix '0x' will be\ - upper-cased to '0X' as well.| - |'n' |Number. This is the same as 'd', except that it uses the current\ - locale setting to insert the appropriate number separator characters.| - |None | The same as 'd'.| - - In addition to the above presentation types, integers can be formatted with - the floating-point presentation types listed below (except 'n' and None). - When doing so, float() is used to convert the integer to a floating-point - number before formatting. - - The available presentation types for float and Decimal values are: - - | Option | Meaning| - |:------:|:-------| - |'e' |Scientific notation. For a given precision p, formats the number in\ - scientific notation with the letter `e` separating the coefficient from the\ - exponent. The coefficient has one digit before and p digits after the\ - decimal point, for a total of p + 1 significant digits. With no precision\ - given, uses a precision of 6 digits after the decimal point for float, and\ - shows all coefficient digits for Decimal. If no digits follow the decimal\ - point, the decimal point is also removed unless the # option is used.| - |'E' |Scientific notation. Same as 'e' except it uses an upper case `E` as\ - the separator character.| - |'f' |Fixed-point notation. For a given precision p, formats the number as\ - a decimal number with exactly p digits following the decimal point. With no\ - precision given, uses a precision of 6 digits after the decimal point for\ - float, and uses a precision large enough to show all coefficient digits for\ - Decimal. If no digits follow the decimal point, the decimal point is also\ - removed unless the '#' option is used.| - |'F' |Fixed-point notation. Same as 'f', but converts nan to NAN and inf to\ - INF.| - |'g' |General format. For a given precision p >= 1, this rounds the number\ - to p significant digits and then formats the result in either fixed-point\ - format or in scientific notation, depending on its magnitude. A precision\ - of 0 is treated as equivalent to a precision of 1.\ - The precise rules are as follows: suppose that the result formatted with\ - presentation type 'e' and precision p-1 would have exponent exp. Then, if\ - m <= exp < p, where m is -4 for floats and -6 for Decimals, the number is\ - formatted with presentation type 'f' and precision p-1-exp. Otherwise, the\ - number is formatted with presentation type 'e' and precision p-1. In both\ - cases insignificant trailing zeros are removed from the significand, and\ - the decimal point is also removed if there are no remaining digits\ - following it, unless the '#' option is used.\ - With no precision given, uses a precision of 6 significant digits for\ - float. For Decimal, the coefficient of the result is formed from the\ - coefficient digits of the value; scientific notation is used for values\ - smaller than 1e-6 in absolute value and values where the place value of the\ - least significant digit is larger than 1, and fixed-point notation is used\ - otherwise.\ - Positive and negative infinity, positive and negative zero, and nans, are\ - formatted as inf, -inf, 0, -0 and nan respectively, regardless of the\ - precision.| - |'G' |General format. Same as 'g' except switches to 'E' if the number gets\ - too large. The representations of infinity and NaN are uppercased, too.| - |'n' |Number. This is the same as 'g', except that it uses the current\ - locale setting to insert the appropriate number separator characters.| - |'%' |Percentage. Multiplies the number by 100 and displays in fixed ('f')\ - format, followed by a percent sign.| - |None |For float this is like the 'g' type, except that when fixed-point\ - notation is used to format the result, it always includes at least one\ - digit past the decimal point, and switches to the scientific notation when\ - exp >= p - 1. When the precision is not specified, the latter will be as\ - large as needed to represent the given value faithfully.\ - For Decimal, this is the same as either 'g' or 'G' depending on the value\ - of context.capitals for the current decimal context.\ - The overall effect is to match the output of str() as altered by the other\ - format modifiers.| - """ - - fn __init__( - inout self, - fill: UInt8 = ord(" "), - align: UInt8 = 0, - sign: UInt8 = ord("-"), - coerce_z: Bool = False, - alternate_form: Bool = False, - width: UInt8 = 0, - grouping_option: UInt8 = 0, - precision: UInt8 = 0, - type: UInt8 = 0, - ): - """Construct a FormatSpec instance. - - Args: - fill: Defaults to space. - align: Defaults to `0` which is adjusted to the default for the arg - type. - sign: Defaults to `-`. - coerce_z: Defaults to False. - alternate_form: Defaults to False. - width: Defaults to `0` which is adjusted to the default for the arg - type. - grouping_option: Defaults to `0` which is adjusted to the default for - the arg type. - precision: Defaults to `0` which is adjusted to the default for the - arg type. - type: Defaults to `0` which is adjusted to the default for the arg - type. - """ - self.fill = fill - self.align = align - self.sign = sign - self.coerce_z = coerce_z - self.alternate_form = alternate_form - self.width = width - self.grouping_option = grouping_option - self.precision = precision - self.type = type - - @staticmethod - fn parse(fmt_str: StringSlice) -> Optional[Self]: - """Parses the format spec string. - - Args: - fmt_str: The StringSlice with the format spec. - - Returns: - An instance of FormatSpec. - """ - - alias `:` = UInt8(ord(":")) - var f_len = fmt_str.byte_length() - var f_ptr = fmt_str.unsafe_ptr() - var colon_idx = -1 - var idx = 0 - while idx < f_len: - if f_ptr[idx] == `:`: - exclamation_index = idx - break - idx += 1 - - if colon_idx == -1: - return None - - # TODO: Future implementation of format specifiers - return None - - fn stringify[ - T: _CurlyEntryFormattable - ](self, inout res: String, item: T) raises: - """Stringify a type according to its format specification. - - Args: - res: The resulting String. - item: The item to stringify. - """ - var type_implements_float = True # TODO - var type_implements_float_raising = True # TODO - var type_implements_int = True # TODO - var type_implements_int_raising = True # TODO - - # TODO: transform to int/float depending on format spec and stringify - # with hex/bin/oct etc. - res += str(item) - - fn format_string(self, inout res: String, item: String) raises: - """Transform a String according to its format specification. - - Args: - res: The resulting String. - item: The item to format. - """ - - # TODO: align, fill, etc. - res += item From ced5633d927312c45a2277a32718800315d2252a Mon Sep 17 00:00:00 2001 From: Mikhail Tavarez Date: Thu, 21 Nov 2024 13:31:25 -0600 Subject: [PATCH 004/119] [External] [stdlib] Add `os.path.splitroot` (#51325) [External] [stdlib] Add `os.path.splitroot` Also cleaned up a previous changelog entry so it aligns with the function's intent. Co-authored-by: Mikhail Tavarez Closes modularml/mojo#3780 MODULAR_ORIG_COMMIT_REV_ID: 081959627df8f25d7f6e04856ca03ab992ecca6c --- docs/changelog.md | 6 +- stdlib/src/os/path/__init__.mojo | 1 + stdlib/src/os/path/path.mojo | 35 ++++++++++ stdlib/test/os/path/test_splitroot.mojo | 87 +++++++++++++++++++++++++ 4 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 stdlib/test/os/path/test_splitroot.mojo diff --git a/docs/changelog.md b/docs/changelog.md index a9f924952b..2c2529ff0f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -240,8 +240,10 @@ what we publish. of variables that are handled as synthetic types, e.g. `List` from Mojo or `std::vector` from C++. -- Added `os.path.expandvars` to expand environment variables in a string. - ([PR #3735](https://github.com/modularml/mojo/pull/3735) by [@thatstoasty](https://github.com/thatstoasty)). +- Expanded `os.path` with new functions (by [@thatstoasty](https://github.com/thatstoasty)): + - `os.path.expandvars`: Expands environment variables in a path ([PR #3735](https://github.com/modularml/mojo/pull/3735)). + - `os.path.splitroot`: Split a path into drive, root and tail. + ([PR #3780](https://github.com/modularml/mojo/pull/3780)). - Added a `reserve` method and new constructor to the `String` struct to allocate additional capacity. diff --git a/stdlib/src/os/path/__init__.mojo b/stdlib/src/os/path/__init__.mojo index 68097ee4db..7ced0ce7eb 100644 --- a/stdlib/src/os/path/__init__.mojo +++ b/stdlib/src/os/path/__init__.mojo @@ -22,5 +22,6 @@ from .path import ( islink, join, split, + splitroot, lexists, ) diff --git a/stdlib/src/os/path/path.mojo b/stdlib/src/os/path/path.mojo index 4bd3930a26..e103da839b 100644 --- a/stdlib/src/os/path/path.mojo +++ b/stdlib/src/os/path/path.mojo @@ -392,6 +392,41 @@ def split[PathLike: os.PathLike, //](path: PathLike) -> (String, String): # return join(path.__fspath__(), *paths_str) +# ===----------------------------------------------------------------------=== # +# splitroot +# ===----------------------------------------------------------------------=== # + + +fn splitroot[ + PathLike: os.PathLike, // +](path: PathLike) -> Tuple[String, String, String]: + """Splits `path` into drive, root and tail. The tail contains anything after the root. + + Parameters: + PathLike: The type conforming to the os.PathLike trait. + + Args: + path: The path to be split. + + Returns: + A tuple containing three strings: (drive, root, tail). + """ + var p = path.__fspath__() + alias empty = String("") + + # Relative path, e.g.: 'foo' + if p[:1] != sep: + return empty, empty, p + + # Absolute path, e.g.: '/foo', '///foo', '////foo', etc. + elif p[1:2] != sep or p[2:3] == sep: + return empty, String(sep), p[1:] + + # Precisely two leading slashes, e.g.: '//foo'. Implementation defined per POSIX, see + # https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_13 + else: + return empty, p[:2], p[2:] + # ===----------------------------------------------------------------------=== # # expandvars diff --git a/stdlib/test/os/path/test_splitroot.mojo b/stdlib/test/os/path/test_splitroot.mojo new file mode 100644 index 0000000000..fc52a959dd --- /dev/null +++ b/stdlib/test/os/path/test_splitroot.mojo @@ -0,0 +1,87 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: %mojo %s + +import os +from os.path import splitroot +from testing import assert_equal + + +def test_absolute_path(): + drive, root, tail = splitroot("/usr/lib/file.txt") + assert_equal(drive, "") + assert_equal(root, "/") + assert_equal(tail, "usr/lib/file.txt") + + drive, root, tail = splitroot("//usr/lib/file.txt") + assert_equal(drive, "") + assert_equal(root, "//") + assert_equal(tail, "usr/lib/file.txt") + + drive, root, tail = splitroot("///usr/lib/file.txt") + assert_equal(drive, "") + assert_equal(root, "/") + assert_equal(tail, "//usr/lib/file.txt") + + +def test_relative_path(): + drive, root, tail = splitroot("usr/lib/file.txt") + assert_equal(drive, "") + assert_equal(root, "") + assert_equal(tail, "usr/lib/file.txt") + + drive, root, tail = splitroot(".") + assert_equal(drive, "") + assert_equal(root, "") + assert_equal(tail, ".") + + drive, root, tail = splitroot("..") + assert_equal(drive, "") + assert_equal(root, "") + assert_equal(tail, "..") + + drive, root, tail = splitroot("entire/.//.tail/..//captured////") + assert_equal(drive, "") + assert_equal(root, "") + assert_equal(tail, "entire/.//.tail/..//captured////") + + +def test_root_directory(): + drive, root, tail = splitroot("/") + assert_equal(drive, "") + assert_equal(root, "/") + assert_equal(tail, "") + + drive, root, tail = splitroot("//") + assert_equal(drive, "") + assert_equal(root, "//") + assert_equal(tail, "") + + drive, root, tail = splitroot("///") + assert_equal(drive, "") + assert_equal(root, "/") + assert_equal(tail, "//") + + +def test_empty_path(): + drive, root, tail = splitroot("") + assert_equal(drive, "") + assert_equal(root, "") + assert_equal(tail, "") + + +def main(): + test_absolute_path() + test_relative_path() + test_root_directory() + test_empty_path() From 5ff00c767830cccc03deeda5b598f1b43a835c0a Mon Sep 17 00:00:00 2001 From: bgreni <42788181+bgreni@users.noreply.github.com> Date: Thu, 21 Nov 2024 13:51:23 -0600 Subject: [PATCH 005/119] [External] [stdlib] Implement `os.path.basename` (#51331) [External] [stdlib] Implement `os.path.basename` Implement `os.path.basename`. Fixes [#2941](https://github.com/modularml/mojo/issues/2941). Co-authored-by: bgreni <42788181+bgreni@users.noreply.github.com> Closes modularml/mojo#2974 MODULAR_ORIG_COMMIT_REV_ID: e5ba09e0fc57c7bbcaca873c3dadcd1ec80db729 --- stdlib/src/os/path/__init__.mojo | 1 + stdlib/src/os/path/path.mojo | 25 ++++++++ stdlib/test/os/path/test_basename.mojo | 84 ++++++++++++++++++++++++++ 3 files changed, 110 insertions(+) create mode 100644 stdlib/test/os/path/test_basename.mojo diff --git a/stdlib/src/os/path/__init__.mojo b/stdlib/src/os/path/__init__.mojo index 7ced0ce7eb..edf3b394af 100644 --- a/stdlib/src/os/path/__init__.mojo +++ b/stdlib/src/os/path/__init__.mojo @@ -13,6 +13,7 @@ from .path import ( dirname, + basename, exists, expanduser, expandvars, diff --git a/stdlib/src/os/path/path.mojo b/stdlib/src/os/path/path.mojo index e103da839b..839e66f890 100644 --- a/stdlib/src/os/path/path.mojo +++ b/stdlib/src/os/path/path.mojo @@ -368,6 +368,31 @@ def split[PathLike: os.PathLike, //](path: PathLike) -> (String, String): return head, tail +fn basename[PathLike: os.PathLike, //](path: PathLike) -> String: + """Returns the tail section of a path. + + ```mojo + basename("a/path/foo.txt") # returns "foo.txt" + ``` + + Parameters: + PathLike: The type conforming to the os.PathLike trait. + + Args: + path: The path to retrieve the basename from. + + Returns: + The basename from the path. + """ + var fspath = path.__fspath__() + alias sep = str(os.sep) + var i = fspath.rfind(sep) + 1 + var head = fspath[i:] + if head and head != sep * len(head): + return head.rstrip(sep) + return head + + # TODO uncomment this when unpacking is supported # fn join[PathLike: os.PathLike](path: PathLike, *paths: PathLike) -> String: # """Join two or more pathname components, inserting '/' as needed. diff --git a/stdlib/test/os/path/test_basename.mojo b/stdlib/test/os/path/test_basename.mojo new file mode 100644 index 0000000000..24713367f8 --- /dev/null +++ b/stdlib/test/os/path/test_basename.mojo @@ -0,0 +1,84 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: %mojo %s + +from os.path import basename +from pathlib import Path +from builtin._location import __source_location +from testing import assert_equal + + +def main(): + # Root directories + assert_equal("", basename("/")) + + # Empty strings + assert_equal("", basename("")) + + # Current directory (matching behavior of python, doesn't resolve `..` etc.) + assert_equal(".", basename(".")) + + # Parent directory + assert_equal("..", basename("..")) + + # Absolute paths + assert_equal("file", basename("/file")) + assert_equal("file.txt", basename("/file.txt")) + assert_equal("file", basename("/dir/file")) + assert_equal("file", basename("/dir/subdir/file")) + + # Relative paths + assert_equal("file", basename("dir/file")) + assert_equal("file", basename("dir/subdir/file")) + assert_equal("file", basename("file")) + + # Trailing slashes + assert_equal("", basename("/path/to/")) + assert_equal("", basename("/path/to/dir/")) + + # Multiple slashes + assert_equal("file", basename("/path/to//file")) + assert_equal("to", basename("/path//to")) + + # Paths with spaces + assert_equal("file", basename("/path to/file")) + assert_equal("file", basename("/path to/dir/file")) + + # Paths with special characters + assert_equal("file", basename("/path-to/file")) + assert_equal("file", basename("/path_to/dir/file")) + + # Paths with dots + assert_equal("file", basename("/path/./to/file")) + assert_equal("file", basename("/path/../to/file")) + + # Paths with double dots + assert_equal("file", basename("/path/../file")) + assert_equal("file", basename("/path/to/../file")) + + # Root and relative mixed + assert_equal("file", basename("/dir/./file")) + assert_equal("file", basename("/dir/subdir/../file")) + + # Edge cases + assert_equal("file", basename("/./file")) + assert_equal("file", basename("/../file")) + + # Unix hidden files + assert_equal(".hiddenfile", basename("/path/to/.hiddenfile")) + assert_equal(".hiddenfile", basename("/path/to/dir/.hiddenfile")) + + assert_equal("test_basename.mojo", basename(__source_location().file_name)) + assert_equal( + "some_file.txt", basename(Path.home() / "dir" / "some_file.txt") + ) From be09f2975e8400310e2f92153e3fe806cbf3dc74 Mon Sep 17 00:00:00 2001 From: Joshua James Venter Date: Thu, 21 Nov 2024 14:39:56 -0800 Subject: [PATCH 006/119] [External] [stdlib] Refactor `atol`: `StringRef` to `StringSlice` and reusability (#51354) [External] [stdlib] Refactor `atol`: `StringRef` to `StringSlice` and reusability This pull request modularises previously inline code, assisting in addressing issue https://github.com/modularml/mojo/issues/2639 to allow `stol` function to reuse some of the functionality. These changes, initially part of https://github.com/modularml/mojo/pull/3178, have been separated for easier review. The refactoring extracts `_handle_base_prefix` & `_trim_and_handle_sign`. Additionally, the docstring has been revised for clarity. Alongside these changes, the respective function signatures have been updated to move away from `StringRef` to `StringSlice`. There was also a small `FIXME` to convert from `var` to `alias`, which is now seems possible. Co-authored-by: Joshua James Venter Closes modularml/mojo#3207 MODULAR_ORIG_COMMIT_REV_ID: e733ed473f086abe6fc5acccae711e0114c1093d --- stdlib/src/builtin/int.mojo | 34 ++++-- stdlib/src/collections/string.mojo | 177 ++++++++++++++++++----------- 2 files changed, 137 insertions(+), 74 deletions(-) diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index a2a8d7a150..2e50208ea7 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -241,21 +241,39 @@ fn int[T: IntableRaising](value: T) raises -> Int: fn int(value: String, base: Int = 10) raises -> Int: - """Parses the given string as an integer in the given base and returns that value. + """Parses and returns the given string as an integer in the given base. - For example, `atol("19")` returns `19`. If the given string cannot be parsed - as an integer value, an error is raised. For example, `atol("hi")` raises an - error. - - If base is 0 the the string is parsed as an Integer literal, - see: https://docs.python.org/3/reference/lexical_analysis.html#integers + If base is set to 0, the string is parsed as an Integer literal, with the + following considerations: + - '0b' or '0B' prefix indicates binary (base 2) + - '0o' or '0O' prefix indicates octal (base 8) + - '0x' or '0X' prefix indicates hexadecimal (base 16) + - Without a prefix, it's treated as decimal (base 10) Args: value: A string to be parsed as an integer in the given base. base: Base used for conversion, value must be between 2 and 36, or 0. Returns: - An integer value that represents the string, or otherwise raises. + An integer value that represents the string. + + Raises: + If the given string cannot be parsed as an integer value or if an + incorrect base is provided. + + Examples: + >>> int("32") + 32 + >>> int("FF", 16) + 255 + >>> int("0xFF", 0) + 255 + >>> int("0b1010", 0) + 10 + + Notes: + This follows [Python's integer literals]( + https://docs.python.org/3/reference/lexical_analysis.html#integers). """ return atol(value, base) diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index 9f47e618e7..a7c5444688 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -234,15 +234,15 @@ fn ascii(value: String) -> String: # ===----------------------------------------------------------------------=== # -fn _atol(str_ref: StringSlice[_], base: Int = 10) raises -> Int: - """Implementation of `atol` for StringRef inputs. +fn _atol(str_slice: StringSlice, base: Int = 10) raises -> Int: + """Implementation of `atol` for StringSlice inputs. Please see its docstring for details. """ if (base != 0) and (base < 2 or base > 36): raise Error("Base must be >= 2 and <= 36, or 0.") - if not str_ref: - raise Error(_atol_error(base, str_ref)) + if not str_slice: + raise Error(_str_to_base_error(base, str_slice)) var real_base: Int var ord_num_max: Int @@ -252,53 +252,23 @@ fn _atol(str_ref: StringSlice[_], base: Int = 10) raises -> Int: var is_negative: Bool = False var has_prefix: Bool = False var start: Int = 0 - var str_len = len(str_ref) - var buff = str_ref.unsafe_ptr() - - for pos in range(start, str_len): - if _isspace(buff[pos]): - continue + var str_len = str_slice.byte_length() - if str_ref[pos] == "-": - is_negative = True - start = pos + 1 - elif str_ref[pos] == "+": - start = pos + 1 - else: - start = pos - break - - if str_ref[start] == "0" and start + 1 < str_len: - if base == 2 and ( - str_ref[start + 1] == "b" or str_ref[start + 1] == "B" - ): - start += 2 - has_prefix = True - elif base == 8 and ( - str_ref[start + 1] == "o" or str_ref[start + 1] == "O" - ): - start += 2 - has_prefix = True - elif base == 16 and ( - str_ref[start + 1] == "x" or str_ref[start + 1] == "X" - ): - start += 2 - has_prefix = True + start, is_negative = _trim_and_handle_sign(str_slice, str_len) alias ord_0 = ord("0") - # FIXME: - # Change this to `alias` after fixing support for __getitem__ of alias. - var ord_letter_min = (ord("a"), ord("A")) + alias ord_letter_min = (ord("a"), ord("A")) alias ord_underscore = ord("_") if base == 0: - var real_base_new_start = _identify_base(str_ref, start) + var real_base_new_start = _identify_base(str_slice, start) real_base = real_base_new_start[0] start = real_base_new_start[1] has_prefix = real_base != 10 if real_base == -1: - raise Error(_atol_error(base, str_ref)) + raise Error(_str_to_base_error(base, str_slice)) else: + start, has_prefix = _handle_base_prefix(start, str_slice, str_len, base) real_base = base if real_base <= 10: @@ -310,21 +280,23 @@ fn _atol(str_ref: StringSlice[_], base: Int = 10) raises -> Int: ord("A") + (real_base - 11), ) + var buff = str_slice.unsafe_ptr() var found_valid_chars_after_start = False var has_space_after_number = False + # Prefixed integer literals with real_base 2, 8, 16 may begin with leading # underscores under the conditions they have a prefix - var was_last_digit_undescore = not (real_base in (2, 8, 16) and has_prefix) + var was_last_digit_underscore = not (real_base in (2, 8, 16) and has_prefix) for pos in range(start, str_len): var ord_current = int(buff[pos]) if ord_current == ord_underscore: - if was_last_digit_undescore: - raise Error(_atol_error(base, str_ref)) + if was_last_digit_underscore: + raise Error(_str_to_base_error(base, str_slice)) else: - was_last_digit_undescore = True + was_last_digit_underscore = True continue else: - was_last_digit_undescore = False + was_last_digit_underscore = False if ord_0 <= ord_current <= ord_num_max: result += ord_current - ord_0 found_valid_chars_after_start = True @@ -339,45 +311,100 @@ fn _atol(str_ref: StringSlice[_], base: Int = 10) raises -> Int: start = pos + 1 break else: - raise Error(_atol_error(base, str_ref)) + raise Error(_str_to_base_error(base, str_slice)) if pos + 1 < str_len and not _isspace(buff[pos + 1]): var nextresult = result * real_base if nextresult < result: raise Error( - _atol_error(base, str_ref) + _str_to_base_error(base, str_slice) + " String expresses an integer too large to store in Int." ) result = nextresult - if was_last_digit_undescore or (not found_valid_chars_after_start): - raise Error(_atol_error(base, str_ref)) + if was_last_digit_underscore or (not found_valid_chars_after_start): + raise Error(_str_to_base_error(base, str_slice)) if has_space_after_number: for pos in range(start, str_len): if not _isspace(buff[pos]): - raise Error(_atol_error(base, str_ref)) + raise Error(_str_to_base_error(base, str_slice)) if is_negative: result = -result return result -fn _atol_error(base: Int, str_ref: StringSlice[_]) -> String: +@always_inline +fn _trim_and_handle_sign(str_slice: StringSlice, str_len: Int) -> (Int, Bool): + """Trims leading whitespace, handles the sign of the number in the string. + + Args: + str_slice: A StringSlice containing the number to parse. + str_len: The length of the string. + + Returns: + A tuple containing: + - The starting index of the number after whitespace and sign. + - A boolean indicating whether the number is negative. + """ + var buff = str_slice.unsafe_ptr() + var start: Int = 0 + while start < str_len and _isspace(buff[start]): + start += 1 + var p: Bool = buff[start] == ord("+") + var n: Bool = buff[start] == ord("-") + return start + (p or n), n + + +@always_inline +fn _handle_base_prefix( + pos: Int, str_slice: StringSlice, str_len: Int, base: Int +) -> (Int, Bool): + """Adjusts the starting position if a valid base prefix is present. + + Handles "0b"/"0B" for base 2, "0o"/"0O" for base 8, and "0x"/"0X" for base + 16. Only adjusts if the base matches the prefix. + + Args: + pos: Current position in the string. + str_slice: The input StringSlice. + str_len: Length of the input string. + base: The specified base. + + Returns: + A tuple containing: + - Updated position after the prefix, if applicable. + - A boolean indicating if the prefix was valid for the given base. + """ + var start = pos + var buff = str_slice.unsafe_ptr() + if start + 1 < str_len: + var prefix_char = chr(int(buff[start + 1])) + if buff[start] == ord("0") and ( + (base == 2 and (prefix_char == "b" or prefix_char == "B")) + or (base == 8 and (prefix_char == "o" or prefix_char == "O")) + or (base == 16 and (prefix_char == "x" or prefix_char == "X")) + ): + start += 2 + return start, start != pos + + +fn _str_to_base_error(base: Int, str_slice: StringSlice) -> String: return ( "String is not convertible to integer with base " + str(base) + ": '" - + str(str_ref) + + str(str_slice) + "'" ) -fn _identify_base(str_ref: StringSlice[_], start: Int) -> Tuple[Int, Int]: - var length = len(str_ref) +fn _identify_base(str_slice: StringSlice[_], start: Int) -> Tuple[Int, Int]: + var length = str_slice.byte_length() # just 1 digit, assume base 10 if start == (length - 1): return 10, start - if str_ref[start] == "0": - var second_digit = str_ref[start + 1] + if str_slice[start] == "0": + var second_digit = str_slice[start + 1] if second_digit == "b" or second_digit == "B": return 2, start + 2 if second_digit == "o" or second_digit == "O": @@ -387,7 +414,7 @@ fn _identify_base(str_ref: StringSlice[_], start: Int) -> Tuple[Int, Int]: # checking for special case of all "0", "_" are also allowed var was_last_character_underscore = False for i in range(start + 1, length): - if str_ref[i] == "_": + if str_slice[i] == "_": if was_last_character_underscore: return -1, -1 else: @@ -395,9 +422,9 @@ fn _identify_base(str_ref: StringSlice[_], start: Int) -> Tuple[Int, Int]: continue else: was_last_character_underscore = False - if str_ref[i] != "0": + if str_slice[i] != "0": return -1, -1 - elif ord("1") <= ord(str_ref[start]) <= ord("9"): + elif ord("1") <= ord(str_slice[start]) <= ord("9"): return 10, start else: return -1, -1 @@ -408,19 +435,37 @@ fn _identify_base(str_ref: StringSlice[_], start: Int) -> Tuple[Int, Int]: fn atol(str: String, base: Int = 10) raises -> Int: """Parses and returns the given string as an integer in the given base. - For example, `atol("19")` returns `19`. If base is 0 the the string is - parsed as an Integer literal, see: https://docs.python.org/3/reference/lexical_analysis.html#integers. - - Raises: - If the given string cannot be parsed as an integer value. For example in - `atol("hi")`. + If base is set to 0, the string is parsed as an Integer literal, with the + following considerations: + - '0b' or '0B' prefix indicates binary (base 2) + - '0o' or '0O' prefix indicates octal (base 8) + - '0x' or '0X' prefix indicates hexadecimal (base 16) + - Without a prefix, it's treated as decimal (base 10) Args: str: A string to be parsed as an integer in the given base. base: Base used for conversion, value must be between 2 and 36, or 0. Returns: - An integer value that represents the string, or otherwise raises. + An integer value that represents the string. + + Raises: + If the given string cannot be parsed as an integer value or if an + incorrect base is provided. + + Examples: + >>> atol("32") + 32 + >>> atol("FF", 16) + 255 + >>> atol("0xFF", 0) + 255 + >>> atol("0b1010", 0) + 10 + + Notes: + This follows [Python's integer literals]( + https://docs.python.org/3/reference/lexical_analysis.html#integers). """ return _atol(str.as_string_slice(), base) From 718014a60ac20eaf85634c3f4d8a4709ba775932 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Thu, 21 Nov 2024 15:42:44 -0800 Subject: [PATCH 007/119] [KGEN] Add ability to construct a string literal from integers and simd types MODULAR_ORIG_COMMIT_REV_ID: ae903bfda5f77887f9fba94bf0cc91b004450416 --- stdlib/src/builtin/string_literal.mojo | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 0373dd2f43..c81ce99ec5 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -856,3 +856,11 @@ struct StringLiteral( A copy of the string with no leading whitespaces. """ return str(self).lstrip() + + +fn _to_string_literal(i: Int) -> StringLiteral: + return __mlir_op.`pop.string.create`(i) + + +fn _to_string_literal(i: SIMD) -> StringLiteral: + return __mlir_op.`pop.string.create`(i) From 8d13b1564fb2e781ff330232f2b13fae0a6915ba Mon Sep 17 00:00:00 2001 From: Manuel Saelices Date: Thu, 21 Nov 2024 19:01:10 -0800 Subject: [PATCH 008/119] [External] [stdlib] Implement `join()` with variadic params in string literals (#49036) [External] [stdlib] Implement `join()` with variadic params in string literals To be consistent with the `String.join()` signatures Co-authored-by: Manuel Saelices Closes modularml/mojo#3426 MODULAR_ORIG_COMMIT_REV_ID: 2c95774ee92a6fab2782320335edfa43debbe82b --- stdlib/src/builtin/string_literal.mojo | 44 ++++++++++++++++++++ stdlib/src/collections/string.mojo | 1 - stdlib/test/builtin/test_string_literal.mojo | 15 +++++++ 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index c81ce99ec5..b4f01993b3 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -597,6 +597,50 @@ struct StringLiteral( """ return str(self).join(elems) + fn join(self, *elems: Int) -> String: + """Joins the elements from the tuple using the current string literal as a + delimiter. + + Args: + elems: The input tuple. + + Returns: + The joined string. + """ + if len(elems) == 0: + return "" + var curr = str(elems[0]) + for i in range(1, len(elems)): + curr += self + str(elems[i]) + return curr + + fn join[*Types: Stringable](self, *elems: *Types) -> String: + """Joins string elements using the current string as a delimiter. + + Parameters: + Types: The types of the elements. + + Args: + elems: The input values. + + Returns: + The joined string. + """ + + var result: String = "" + var is_first = True + + @parameter + fn add_elt[T: Stringable](a: T): + if is_first: + is_first = False + else: + result += self + result += str(a) + + elems.each[add_elt]() + return result + fn split(self, sep: String, maxsplit: Int = -1) raises -> List[String]: """Split the string literal by a separator. diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index a7c5444688..55c4da1b0e 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -1479,7 +1479,6 @@ struct String( result.write(a) elems.each[add_elt]() - _ = is_first return result fn join[T: StringableCollectionElement](self, elems: List[T, *_]) -> String: diff --git a/stdlib/test/builtin/test_string_literal.mojo b/stdlib/test/builtin/test_string_literal.mojo index 1e4ca44832..429378fbd4 100644 --- a/stdlib/test/builtin/test_string_literal.mojo +++ b/stdlib/test/builtin/test_string_literal.mojo @@ -219,6 +219,20 @@ def test_intable(): _ = StringLiteral.__int__("hi") +def test_join(): + assert_equal("".join(), "") + assert_equal("".join("a", "b", "c"), "abc") + assert_equal(" ".join("a", "b", "c"), "a b c") + assert_equal(" ".join("a", "b", "c", ""), "a b c ") + assert_equal(" ".join("a", "b", "c", " "), "a b c ") + + var sep = "," + var s = String("abc") + assert_equal(sep.join(s, s, s, s), "abc,abc,abc,abc") + assert_equal(sep.join(1, 2, 3), "1,2,3") + assert_equal(sep.join(1, "abc", 3), "1,abc,3") + + def test_isdigit(): assert_true("123".isdigit()) assert_false("abc".isdigit()) @@ -469,6 +483,7 @@ def main(): test_bool() test_contains() test_find() + test_join() test_rfind() test_replace() test_comparison_operators() From ba0f514cabe98e870359a16de109b93f55c5e1b9 Mon Sep 17 00:00:00 2001 From: Joshua James Venter Date: Thu, 21 Nov 2024 19:32:11 -0800 Subject: [PATCH 009/119] [External] [stdlib] Introduce `random.shuffle` for `List` (#51416) [External] [stdlib] Introduce `random.shuffle` for `List` Introduce `random.shuffle` for `List`. Implementation follows the Fisher-Yates shuffle. Co-authored-by: Joshua James Venter Closes modularml/mojo#3327 MODULAR_ORIG_COMMIT_REV_ID: 911eadee8d34911f653e8c69f85fcd89f5cae344 --- docs/changelog.md | 12 ++++ stdlib/src/random/__init__.mojo | 1 + stdlib/src/random/random.mojo | 19 +++++- stdlib/test/random/test_random.mojo | 97 ++++++++++++++++++++++++++++- 4 files changed, 126 insertions(+), 3 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 2c2529ff0f..4fb30d7c4a 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -110,6 +110,18 @@ what we publish. - The `rebind` standard library function now works with memory-only types in addition to `@register_passable("trivial")` ones, without requiring a copy. +- Introduce `random.shuffle` for `List`. + ([PR #3327](https://github.com/modularml/mojo/pull/3327) by [@jjvraw](https://github.com/jjvraw)) + + Example: + + ```mojo + from random import shuffle + + var l = List[Int](1, 2, 3, 4, 5) + shuffle(l) + ``` + - The `Dict.__getitem__` method now returns a reference instead of a copy of the value (or raises). This improves the performance of common code that uses `Dict` by allowing borrows from the `Dict` elements. diff --git a/stdlib/src/random/__init__.mojo b/stdlib/src/random/__init__.mojo index d71e458454..231b4a115f 100644 --- a/stdlib/src/random/__init__.mojo +++ b/stdlib/src/random/__init__.mojo @@ -21,4 +21,5 @@ from .random import ( random_si64, random_ui64, seed, + shuffle, ) diff --git a/stdlib/src/random/random.mojo b/stdlib/src/random/random.mojo index 840e353f7a..f0b8dee2ee 100644 --- a/stdlib/src/random/random.mojo +++ b/stdlib/src/random/random.mojo @@ -22,8 +22,7 @@ from random import seed from sys import bitwidthof, external_call from sys.ffi import OpaquePointer from time import perf_counter_ns -from collections import Optional - +from collections import Optional, List from memory import UnsafePointer from math import floor import math @@ -222,3 +221,19 @@ fn randn[ for i in range(size): ptr[i] = randn_float64(mean, variance).cast[type]() return + + +fn shuffle[T: CollectionElement, //](inout list: List[T]): + """Shuffles the elements of the list randomly. + + Performs an in-place Fisher-Yates shuffle on the provided list. + + Args: + list: The list to modify. + + Parameters: + T: The type of element in the List. + """ + for i in reversed(range(len(list))): + var j = int(random_ui64(0, i)) + list.swap_elements(i, j) diff --git a/stdlib/test/random/test_random.mojo b/stdlib/test/random/test_random.mojo index f1f1f6ac73..0a90b5ae89 100644 --- a/stdlib/test/random/test_random.mojo +++ b/stdlib/test/random/test_random.mojo @@ -12,7 +12,14 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from random import randn_float64, random_float64, random_si64, random_ui64, seed +from random import ( + randn_float64, + random_float64, + random_si64, + random_ui64, + seed, + shuffle, +) from testing import assert_equal, assert_true @@ -73,6 +80,94 @@ def test_seed(): assert_equal(some_unsigned_integer, random_ui64(0, 255)) +def test_shuffle(): + # TODO: Clean up with list comprehension when possible. + + # Property tests + alias L_i = List[Int] + alias L_s = List[String] + var a = L_i(1, 2, 3, 4) + var b = L_i(1, 2, 3, 4) + var c = L_s("Random", "shuffle", "in", "Mojo") + var d = L_s("Random", "shuffle", "in", "Mojo") + + shuffle(b) + assert_equal(len(a), len(b)) + assert_true(a != b) + for i in range(len(b)): + assert_true(b[i] in a) + + shuffle(d) + assert_equal(len(c), len(d)) + assert_true(c != d) + for i in range(len(d)): + assert_true(d[i] in c) + + var e = L_i(21) + shuffle(e) + assert_true(e == L_i(21)) + var f = L_s("Mojo") + shuffle(f) + assert_true(f == L_s("Mojo")) + + alias L_l = List[List[Int]] + var g = L_l() + var h = L_l() + for i in range(10): + g.append(L_i(i, i + 1, i + 3)) + h.append(L_i(i, i + 1, i + 3)) + shuffle(g) + # TODO: Uncomment when possible + # assert_true(g != h) + assert_equal(len(g), len(h)) + for i in range(10): + # Currently, the below does not compile. + # assert_true(g.__contains__(L_i(i, i + 1, i + 3))) + var target: List[Int] = L_i(i, i + 1, i + 3) + var found = False + for j in range(len(g)): + if g[j] == target: + found = True + break + assert_true(found) + + alias L_l_s = List[List[String]] + var i = L_l_s() + var j = L_l_s() + for x in range(10): + i.append(L_s(str(x), str(x + 1), str(x + 3))) + j.append(L_s(str(x), str(x + 1), str(x + 3))) + shuffle(i) + # TODO: Uncomment when possible + # assert_true(g != h) + assert_equal(len(i), len(j)) + for x in range(10): + var target: List[String] = L_s(str(x), str(x + 1), str(x + 3)) + var found = False + for y in range(len(i)): + if j[y] == target: + found = True + break + assert_true(found) + + # Given the number of permutations of size 1000 is 1000!, + # we rely on the assertion that a truly random shuffle should not + # result in the same order as the to pre-shuffle list with extremely + # high probability. + var l = L_i() + var m = L_i() + for i in range(1000): + l.append(i) + m.append(i) + shuffle(l) + assert_equal(len(l), len(m)) + assert_true(l != m) + shuffle(m) + assert_equal(len(l), len(m)) + assert_true(l != m) + + def main(): test_random() test_seed() + test_shuffle() From 53ec03a8874d34684dcc185afff9d53aa744d6e9 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Thu, 21 Nov 2024 23:41:39 -0800 Subject: [PATCH 010/119] [stdlib] Buffer GPU print using dynamic allocations For GPU calculate total bytes of arguments before allocating. There is limited space for allocations, so need to use the smallest size possible when calling `print` across thousands of threads to avoid running out of memory. MODULAR_ORIG_COMMIT_REV_ID: 2904debda2eb0d2c897a8fed52fc99bd4ea2bdf1 --- stdlib/src/builtin/debug_assert.mojo | 101 ++++++++++++++++++--------- stdlib/src/utils/write.mojo | 59 +++++++++------- 2 files changed, 101 insertions(+), 59 deletions(-) diff --git a/stdlib/src/builtin/debug_assert.mojo b/stdlib/src/builtin/debug_assert.mojo index 14a2a258f1..86f58ecb44 100644 --- a/stdlib/src/builtin/debug_assert.mojo +++ b/stdlib/src/builtin/debug_assert.mojo @@ -22,7 +22,13 @@ from sys._build import is_debug_build from sys.param_env import env_get_string from sys.ffi import external_call, c_uint, c_size_t, c_char from memory import UnsafePointer -from utils.write import _WriteBufferHeap, _WriteBufferStack, write_args +from utils.write import ( + _WriteBufferHeap, + _WriteBufferStack, + _ArgBytes, + write_args, +) +from utils import Span from builtin._location import __call_location, _SourceLocation @@ -237,18 +243,32 @@ fn _debug_assert_msg( @parameter if is_gpu(): - var buffer = _WriteBufferHeap[4096](stdout) - buffer.write("At ", loc, ": ") - _write_gpu_thread_context(buffer) - - @parameter - if defined_mode == "warn": - buffer.write(" Assert Warning: ") - else: - buffer.write(" Assert Error: ") - + # Count the total length of bytes to allocate only once + var arg_bytes = _ArgBytes() + arg_bytes.write( + "At ", + loc, + ": ", + _ThreadContext(), + " Assert ", + "Warning: " if defined_mode == "warn" else " Error: ", + ) + write_args(arg_bytes, messages, end="\n") + + var buffer = _WriteBufferHeap(arg_bytes.size + 1) + buffer.write( + "At ", + loc, + ": ", + _ThreadContext(), + " Assert ", + "Warning: " if defined_mode == "warn" else "Error: ", + ) write_args(buffer, messages, end="\n") - buffer.flush() + buffer.data[buffer.pos] = 0 + stdout.write_bytes( + Span[Byte, ImmutableAnyOrigin](ptr=buffer.data, length=buffer.pos) + ) @parameter if defined_mode != "warn": @@ -272,28 +292,43 @@ fn _debug_assert_msg( abort() -# Can't import gpu module at this stage in compilation for thread/block idx -fn _write_gpu_thread_context[W: Writer](inout writer: W): - writer.write("block: [") - _write_id["block", "x"](writer) - writer.write(",") - _write_id["block", "y"](writer) - writer.write(",") - _write_id["block", "z"](writer) - writer.write("] thread: [") - _write_id["thread", "x"](writer) - writer.write(",") - _write_id["thread", "y"](writer) - writer.write(",") - _write_id["thread", "z"](writer) - writer.write("]") - - -fn _write_id[ - W: Writer, //, type: StringLiteral, dim: StringLiteral -](inout writer: W): +struct _ThreadContext(Writable): + var block_x: Int32 + var block_y: Int32 + var block_z: Int32 + var thread_x: Int32 + var thread_y: Int32 + var thread_z: Int32 + + fn __init__(out self): + self.block_x = _get_id["block", "x"]() + self.block_y = _get_id["block", "y"]() + self.block_z = _get_id["block", "z"]() + self.thread_x = _get_id["thread", "x"]() + self.thread_y = _get_id["thread", "y"]() + self.thread_z = _get_id["thread", "z"]() + + fn write_to[W: Writer](self, inout writer: W): + writer.write( + "block: [", + self.block_x, + ",", + self.block_y, + ",", + self.block_z, + "] thread: [", + self.thread_x, + ",", + self.thread_y, + ",", + self.thread_z, + "]", + ) + + +fn _get_id[type: StringLiteral, dim: StringLiteral]() -> Int32: alias intrinsic_name = _get_intrinsic_name[type, dim]() - writer.write(llvm_intrinsic[intrinsic_name, Int32, has_side_effect=False]()) + return llvm_intrinsic[intrinsic_name, Int32, has_side_effect=False]() fn _get_intrinsic_name[ diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index 93270dc2b5..1b4d8da6d2 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -18,7 +18,6 @@ from utils import Span, StaticString from sys.info import is_gpu from builtin.io import _printf - # ===----------------------------------------------------------------------===# @@ -223,25 +222,18 @@ trait MovableWriter(Movable, Writer): ... -struct _WriteBufferHeap[W: MovableWriter, //, capacity: Int](Writer): +struct _WriteBufferHeap(Writer): var data: UnsafePointer[UInt8] var pos: Int - var writer: W - @implicit - fn __init__(out self, owned writer: W): + fn __init__(out self, size: Int): self.data = UnsafePointer[ - UInt8, - address_space = AddressSpace.GENERIC, - ].alloc(capacity) + UInt8, address_space = AddressSpace.GENERIC + ].alloc(size) self.pos = 0 - self.writer = writer^ - fn flush(inout self): - self.writer.write_bytes( - Span[Byte, ImmutableAnyOrigin](ptr=self.data, length=self.pos) - ) - self.pos = 0 + fn __del__(owned self): + self.data.free() @always_inline fn write_bytes(inout self, bytes: Span[UInt8, _]): @@ -249,16 +241,7 @@ struct _WriteBufferHeap[W: MovableWriter, //, capacity: Int](Writer): # If empty then return if len_bytes == 0: return - # If span is too large to fit in buffer, write directly and return - if len_bytes > capacity: - self.flush() - self.writer.write_bytes(bytes) - return - # If buffer would overflow, flush writer and reset pos to 0. - if self.pos + len_bytes > capacity: - self.flush() - ptr = bytes.unsafe_ptr() - # Continue writing to buffer + var ptr = bytes.unsafe_ptr() for i in range(len_bytes): self.data[i + self.pos] = ptr[i] self.pos += len_bytes @@ -271,6 +254,23 @@ struct _WriteBufferHeap[W: MovableWriter, //, capacity: Int](Writer): args.each[write_arg]() +struct _ArgBytes(Writer): + var size: Int + + fn __init__(out self): + self.size = 0 + + fn write_bytes(inout self, bytes: Span[UInt8, _]): + self.size += len(bytes) + + fn write[*Ts: Writable](inout self, *args: *Ts): + @parameter + fn write_arg[T: Writable](arg: T): + arg.write_to(self) + + args.each[write_arg]() + + struct _WriteBufferStack[W: MovableWriter, //, capacity: Int](Writer): var data: InlineArray[UInt8, capacity] var pos: Int @@ -367,9 +367,16 @@ fn write_buffered[ @parameter if is_gpu(): # Stack space is very small on GPU due to many threads, so use heap - var buffer = _WriteBufferHeap[buffer_size](writer^) + # Count the total length of bytes to allocate only once + var arg_bytes = _ArgBytes() + write_args(arg_bytes, args, sep=sep, end=end) + + var buffer = _WriteBufferHeap(arg_bytes.size + 1) write_args(buffer, args, sep=sep, end=end) - buffer.flush() + buffer.data[buffer.pos] = 0 + writer.write_bytes( + Span[Byte, ImmutableAnyOrigin](ptr=buffer.data, length=buffer.pos) + ) else: var buffer = _WriteBufferStack[buffer_size](writer^) write_args(buffer, args, sep=sep, end=end) From 7a047d04fa1583881d0b1f10c204e7842a225aab Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Fri, 22 Nov 2024 13:20:42 -0800 Subject: [PATCH 011/119] [******][GPU] Ensure to mark math function as non-side effecting MODULAR_ORIG_COMMIT_REV_ID: df27bf28339991200ddd00d171140af6a769c397 --- stdlib/src/math/math.mojo | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 7371d2a3df..0ada40bdfe 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -1401,7 +1401,9 @@ fn cos[ instruction="cos.approx.ftz.f32", constraints="=f,f" ](x) elif is_amd_gpu(): - return llvm_intrinsic["llvm.cos", __type_of(x)](x) + return llvm_intrinsic["llvm.cos", __type_of(x), has_side_effect=False]( + x + ) else: return _call_libm["cos"](x) @@ -1436,7 +1438,9 @@ fn sin[ instruction="sin.approx.ftz.f32", constraints="=f,f" ](x) elif is_amd_gpu(): - return llvm_intrinsic["llvm.sin", __type_of(x)](x) + return llvm_intrinsic["llvm.sin", __type_of(x), has_side_effect=False]( + x + ) else: return _call_libm["sin"](x) @@ -1615,7 +1619,9 @@ fn log10(x: SIMD) -> __type_of(x): * log10_2 ) elif is_amd_gpu(): - return llvm_intrinsic["llvm.log10", __type_of(x)](x) + return llvm_intrinsic[ + "llvm.log10", __type_of(x), has_side_effect=False + ](x) return _call_libm["log10"](x) From 54adfbf3a19e4761f710c14096dd3457d2f3c88e Mon Sep 17 00:00:00 2001 From: modularbot Date: Sat, 23 Nov 2024 00:15:08 +0000 Subject: [PATCH 012/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024112222 --- examples/magic.lock | 1560 +++++++++++++++++++++++--------- examples/notebooks/magic.lock | 1600 ++++++++++++++++++++++++--------- examples/operators/magic.lock | 1560 +++++++++++++++++++++++--------- magic.lock | 1560 +++++++++++++++++++++++--------- 4 files changed, 4580 insertions(+), 1700 deletions(-) diff --git a/examples/magic.lock b/examples/magic.lock index 3bdbb1c07e..ff5b22227e 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py311h2dc5d0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -26,8 +26,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -53,6 +53,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda @@ -73,12 +74,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -86,6 +89,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda @@ -100,11 +104,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -113,26 +119,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda @@ -149,15 +159,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py311h49e9ac3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py311hfdbb021_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py311h38be061_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py311h4854187_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py311h9e33e62_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda @@ -180,7 +192,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py311h9e33e62_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda @@ -200,16 +212,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py311h9e33e62_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py311h9ecbd09_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda @@ -217,7 +231,7 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py311h58d527c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py311h58d527c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -234,8 +248,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -261,6 +275,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda @@ -282,12 +297,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -295,6 +312,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda @@ -309,11 +327,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -322,26 +342,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda @@ -358,15 +382,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py311hb2a0dd2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py311ha879c10_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py311h89d996e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py311hfecb2dc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py311ha6d2531_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py311h0ca61a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda @@ -389,7 +415,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py311h0ca61a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda @@ -409,23 +435,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py311h0ca61a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py311ha879c10_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py311ha879c10_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py311h4921393_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py311h4921393_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -442,8 +470,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -469,6 +497,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py311hae2e1ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda @@ -488,11 +517,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -501,6 +532,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda @@ -512,35 +544,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda @@ -557,15 +595,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py311h3894ae9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py311h460d6c5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py311h6885ffc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py311ha1ab1f8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py311he04fa90_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py311h481aa64_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda @@ -587,7 +627,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py311h481aa64_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda @@ -607,16 +647,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py311h481aa64_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py311h460d6c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda @@ -685,12 +727,12 @@ packages: timestamp: 1727779893392 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.7 build: py311h2dc5d0c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py311h2dc5d0c_0.conda - sha256: 0efe583d525124b23b7a0a337c568b1aeea5bc74c6979891f940d5cadd0d757a - md5: 77ddf78fa8be87f8881b3475854cfaeb + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py311h2dc5d0c_0.conda + sha256: 1593324a87e5e86124a99b37d89daa38f5e715ec2f51efad687d099b7a0e37e2 + md5: 97f233735417eb21002c2b65734efd36 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -705,16 +747,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 917497 - timestamp: 1732088503491 + size: 918112 + timestamp: 1732220437696 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.7 build: py311h4921393_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py311h4921393_0.conda - sha256: 293880cd214829d6f8682d054252278aeb05d9a41818412a28a9531d06cad9b1 - md5: 0a7e2e8dfc4e240fb7a63ea9130840af + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py311h4921393_0.conda + sha256: 10ebda6e4b59da2f02e4ab33b3db354860511840dfefd6e3d3bb91eefb17e23f + md5: f28eadd7e41b5ab5c0bc7cf37a7c3c7b depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -729,16 +771,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 875034 - timestamp: 1732088602971 + size: 876337 + timestamp: 1732220489509 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.7 build: py311h58d527c_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py311h58d527c_0.conda - sha256: c17fd83d67f1a44ec87cb2f0c319132d2f4e69ed5c95d3000bafee08f4c629f7 - md5: 78b0ebe69ae38fc31ef77972d829b149 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py311h58d527c_0.conda + sha256: fe5a23c2bdf15776fb9a7763f7a9aba9efcc9b7dc09df83918bbb3d2ff2ecf56 + md5: 1a41cfaf6a2fe1887a94dc3afbeb65ac depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -753,8 +795,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 909847 - timestamp: 1732088559603 + size: 911216 + timestamp: 1732220495568 - kind: conda name: aiosignal version: 1.3.1 @@ -1436,13 +1478,12 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h21d7256_1 - build_number: 1 + version: 0.29.5 + build: h21d7256_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - sha256: 0de8dc3a6a9aab74049d85d407d204623a638ade4221a428cef4d91d25d41ef5 - md5: 963a310ba64fd6a113eb4f7fcf89f935 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda + sha256: 54a9f37ba03e20b29215a9e301846ee22368bd6efb9e9afce7c6ad3e64426219 + md5: b2468de19999ee8452757f12f15a9b34 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1458,17 +1499,16 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354101 - timestamp: 1731787070984 + size: 354933 + timestamp: 1732136158458 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h6832833_1 - build_number: 1 + version: 0.29.5 + build: h6832833_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - sha256: 9c94db7881035bd1cfb24985668c5c7a693d70ecbf46e4b23c453774400e4437 - md5: 452a0da8c040f2aa825727af66d05b42 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda + sha256: e42172ffef36e2e5793532ab5b8d8c499fe8c4eaf154404501bd3f97a424e701 + md5: 546159ec6849eaf2b632eb79e3ab16f7 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1483,17 +1523,16 @@ packages: - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 237267 - timestamp: 1731787157065 + size: 236424 + timestamp: 1732136497320 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h8cc6612_1 - build_number: 1 + version: 0.29.5 + build: h8cc6612_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - sha256: 7ff3dcac3578f2946dcc2d1953f20369750efdb228ada2a6f894642677cef4ec - md5: 494aaf00b4413cdf961abfbdeb5c24e9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda + sha256: aac21029314f015d558fc1cb0238b32e3aa1b0473f5ca4f3ef469d0f8c59e026 + md5: e80ca2db9b263c16a44bab78a76165ec depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1508,23 +1547,22 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283847 - timestamp: 1731787045666 + size: 284386 + timestamp: 1732136167312 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h1a02111_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda - sha256: 697d0055c4838f882d029d05baf432fb4d6fbebd92d60edfadeb10fea66f1755 - md5: 109ff9aa7347ca004a3f496a5160cdb9 + build: h775d804_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda + sha256: dae09cbccc5af7282a9b74b424a4d451362fe3b31eb2ccbf571db321f9619c52 + md5: 6e691206e10feb236ca7c0cf985797a8 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1532,45 +1570,46 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2951572 - timestamp: 1731927266611 + size: 2794659 + timestamp: 1732184111138 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h8f08b23_2 - build_number: 2 + build: h8577fd2_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda - sha256: 7b7e17c332d7f382f5f97cefe477cb5e9fae171a00d0c40a78ad6263c64a0af2 - md5: c1111d86333195e42ae29d02d64a545c + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda + sha256: ddd7aaa925ac3d569aa3dc1fe0239fa5c57034a1360683c41d310d6805f0d5bd + md5: 3c789cd7093639a2662b14b87f11b04c depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - libcurl >=8.10.1,<9.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2733405 - timestamp: 1731927979855 + size: 2737395 + timestamp: 1732184718613 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: hf48a0a1_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda - sha256: 246d894d4354e1c7bbd1466881e87f3f92396777ebbd8cbebe53efb16ace88c4 - md5: e1cd103f7450254f9513244169ea6a1a + build: hdaa582e_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda + sha256: a6fdba49b87ad3b92c219f60ac31e0d0b4fea7e651efe6d668288e5a0f7a1755 + md5: 0dca4b37cf80312f8ef84b649e6ad3a3 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1578,8 +1617,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2803239 - timestamp: 1731927417845 + size: 2951998 + timestamp: 1732184141 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2357,6 +2396,53 @@ packages: license: Unlicense size: 17357 timestamp: 1726613593584 +- kind: conda + name: freetype + version: 2.12.1 + build: h267a509_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- kind: conda + name: freetype + version: 2.12.1 + build: hadb7bae_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- kind: conda + name: freetype + version: 2.12.1 + build: hf0a5ef3_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 - kind: conda name: frozenlist version: 1.5.0 @@ -2901,6 +2987,53 @@ packages: license_family: MIT size: 1370023 timestamp: 1719463201255 +- kind: conda + name: lcms2 + version: '2.16' + build: h922389a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d + md5: ffdd8267a04c515e7ce69c727b051414 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 296219 + timestamp: 1701647961116 +- kind: conda + name: lcms2 + version: '2.16' + build: ha0e7c42_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 + md5: 66f6c134e76fe13cce8a9ea5814b5dd5 + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 211959 + timestamp: 1701647962657 +- kind: conda + name: lcms2 + version: '2.16' + build: hb7c19ff_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 - kind: conda name: ld_impl_linux-64 version: '2.43' @@ -2933,6 +3066,50 @@ packages: license_family: GPL size: 698245 timestamp: 1729655345825 +- kind: conda + name: lerc + version: 4.0.0 + build: h27087fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- kind: conda + name: lerc + version: 4.0.0 + build: h4de3ea5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- kind: conda + name: lerc + version: 4.0.0 + build: h9a09cb3_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 - kind: conda name: libabseil version: '20240722.0' @@ -2994,30 +3171,31 @@ packages: - kind: conda name: libarrow version: 18.0.0 - build: h2409f62_7_cpu - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - sha256: baf7322466c5849f0ef4c8bab9f394c1448fc7a1d42f74d775b49e20cea8fcf8 - md5: da6e0816fe9639c270cafdec68b411d6 + build: h3d75c4c_8_cpu + build_number: 8 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda + sha256: f40d35816c995d94d78aec26927650d7ee851cdfa86ebb1429cbd27137cc354a + md5: 704b04f2ad7725f31a22ca07d2789f76 depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.8.0,<3.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3027,24 +3205,23 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5455595 - timestamp: 1731789726593 + size: 7977023 + timestamp: 1732207819418 - kind: conda name: libarrow version: 18.0.0 - build: h3b997a5_7_cpu - build_number: 7 + build: h94eee4b_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - sha256: d8e179b123ca9f62b83115091d3936c64d55506fef9c516b90cd3f2bdea304ca - md5: 32897a50e7f68187c4a524c439c0943c + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda + sha256: aeb31e3713767d5e1d2f29bc05ba04e4cbd48fd72edf8ae66867ac5b22b94160 + md5: 8d5436adb1b35ba955c5600806d52dbc depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3070,41 +3247,39 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8714651 - timestamp: 1731789983840 + size: 8712917 + timestamp: 1732208188022 - kind: conda name: libarrow version: 18.0.0 - build: hf19f309_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - sha256: 83334f90a1759d91324c3cfcdcf4157018020f33901d1833ca28e9a912a4f89a - md5: e42e43720b5203a827bbd1ff05182afa + build: hb943b0e_8_cpu + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda + sha256: ec1e48caf98615d4e6cb5bac539d6ddcdff37fd7a722dab599131974b2a97343 + md5: e1b2b2f162540ebea865e908c865bb9c depends: - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.8.0,<3.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3117,186 +3292,176 @@ packages: - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 7997233 - timestamp: 1731791153311 + size: 5459847 + timestamp: 1732208317959 - kind: conda name: libarrow-acero version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + build: h286801f_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - sha256: 8df47c06ad5b839393aa4703721385d3529a64971227a3a342a1100eeb2fbe78 - md5: 67a94caeec254580852dd71b0cb5bfc7 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda + sha256: b74c5a10cd40e33db50392263cff9aacd6ead0f6d42107e01e92d1e57af1daf1 + md5: 7208462cfc8f9610060695ffab85ab39 depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 491285 - timestamp: 1731789825049 + size: 491510 + timestamp: 1732208453361 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 + build: h5888daf_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - sha256: bc0aa7f6c05c097f224cb2a8f72d22a5cde7ef239fde7a57f18061bf74776cd5 - md5: 786a275d019708cd1c963b12a8fb0c72 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda + sha256: 6a33ef82a569d02b2b4664bdcc4cb6aea624dbf258921ab59afadd655e13953d + md5: 3ac00dbba52c89287214f5e8f0795e7e depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 618726 - timestamp: 1731790016942 + size: 619612 + timestamp: 1732208230617 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 + build: h5ad3122_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - sha256: dda002b70f6ba368057ba9164eabdc0101a979eab329d3269ec4e615c07292c8 - md5: eaec91ad6d3dd2e459744e3116c68553 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda + sha256: e1f98f83cb1c73119c17b97a5b816517df8f9c6565c60b623172b305090efeb0 + md5: 8bdef8781dbf8e3fc894bb295dca036f depends: - - libarrow 18.0.0 hf19f309_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585513 - timestamp: 1731791202130 + size: 586395 + timestamp: 1732207853957 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + build: h286801f_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - sha256: 3d17beb5e336507443f436f21658e0baf6d6dbacc83938a60e7eac20886e5f78 - md5: 75cec89177549b4a87faa6c952fb07a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda + sha256: 7b503c2179880d8d755e4f81e8e058ca869227c1958c172af5ab4c62d637571d + md5: 08b882378a3e10b0be0218e5867638e3 depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow-acero 18.0.0 h286801f_8_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_7_cpu + - libparquet 18.0.0 hda0ea68_8_cpu license: Apache-2.0 - license_family: APACHE - size: 497438 - timestamp: 1731791003104 + size: 498580 + timestamp: 1732209786094 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 + build: h5888daf_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - sha256: ecfcea86bf62a498eb59bfa28c8d6e28e842e9c8eeb594d059ef0fdc7064154f - md5: a742b9a0452b55020ccf662721c1ce44 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda + sha256: 3234ede6af0403cc29258aaaca45fe426e00259c154a4c857087cd805e16f7db + md5: 84e996f59d99626426a73bd0977ef7f3 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow-acero 18.0.0 h5888daf_8_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_7_cpu + - libparquet 18.0.0 h6bd9018_8_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 594424 - timestamp: 1731790074886 + size: 594655 + timestamp: 1732208308056 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 + build: h5ad3122_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - sha256: e2c4cbeef3862b9446ab7052c5889c0923b97d77582fd10437744bcf75f24e05 - md5: 1b769328f659c977a4b72235bbcdaf9c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda + sha256: fdc5c1462ea5e7902db750ae8e281122d52f3c6d859a2283a622e3ad74effdc3 + md5: 23742cf206c1283ab6f90b1ba59ba4ed depends: - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow-acero 18.0.0 h5ad3122_8_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_7_cpu + - libparquet 18.0.0 h23a96eb_8_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 567511 - timestamp: 1731791297133 + size: 568515 + timestamp: 1732207917109 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h14ec2bd_7_cpu - build_number: 7 + build: h14ec2bd_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda - sha256: f9c63c5ad5629d8891bafc100bc8a8e0844ee73b52189a6dcb59522790d93635 - md5: 3c0517a4c9a67370e9279c3b9bc2ce2b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda + sha256: 87d66d7c8d8941d2251777ce8dba057191071e7abc98e6077171a6f657f25c9a + md5: fcd095fe4ad44d48d3dad252332d412a depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu - - libarrow-dataset 18.0.0 h5ad3122_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow-acero 18.0.0 h5ad3122_8_cpu + - libarrow-dataset 18.0.0 h5ad3122_8_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 523066 - timestamp: 1731791341708 + size: 523178 + timestamp: 1732207946621 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h5c8f2c3_7_cpu - build_number: 7 + build: h5c8f2c3_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda - sha256: f4e12c8f48449b47ec7642f5cc0705d59e59c608d563e2848ffceec779c7c220 - md5: be76013fa3fdaec2c0c504e6fdfd282d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda + sha256: ceee34b069762aa81521f8aba1cf5f613250f59db7a2e1570865332ad2da8555 + md5: faa0b78b5daac5dab1651c610204401d depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu - - libarrow-dataset 18.0.0 h5888daf_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow-acero 18.0.0 h5888daf_8_cpu + - libarrow-dataset 18.0.0 h5888daf_8_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 528172 - timestamp: 1731790101854 + size: 527756 + timestamp: 1732208344211 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h6a6e5c5_7_cpu - build_number: 7 + build: h6a6e5c5_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda - sha256: 775c202c379c712f3e77d43ce54d3f9a7ef8dd37d3b68911e886b89f5502eeac - md5: 2a3910690b531fdc9553e2889fda97bf + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda + sha256: 1d7ef3812071a036942cc9bc6742b60354aee1e168338bd18a8596bbd696e43c + md5: 7acbdff23cd797bb9ada6a3de2d7502a depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu - - libarrow-dataset 18.0.0 h286801f_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow-acero 18.0.0 h286801f_8_cpu + - libarrow-dataset 18.0.0 h286801f_8_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - license_family: APACHE - size: 459246 - timestamp: 1731791195089 + size: 459728 + timestamp: 1732209986506 - kind: conda name: libblas version: 3.9.0 @@ -3680,6 +3845,49 @@ packages: license_family: Apache size: 520678 timestamp: 1732060258949 +- kind: conda + name: libdeflate + version: '1.22' + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d + md5: ff6a44e8b1707d02be2fe9a36ea88d4a + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 69601 + timestamp: 1728177137503 +- kind: conda + name: libdeflate + version: '1.22' + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 + md5: b422943d5d772b7cc858b36ad2a92db5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 72242 + timestamp: 1728177071251 +- kind: conda + name: libdeflate + version: '1.22' + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda + md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 54089 + timestamp: 1728177149927 - kind: conda name: libedit version: 3.1.20191231 @@ -4354,6 +4562,52 @@ packages: license: LGPL-2.1-only size: 705775 timestamp: 1702682170569 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 - kind: conda name: liblapack version: 3.9.0 @@ -4562,61 +4816,101 @@ packages: - kind: conda name: libparquet version: 18.0.0 - build: h23a96eb_7_cpu - build_number: 7 + build: h23a96eb_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda - sha256: 405cd8b36b454aac8d8f3f698feb4c8c4fca99eae9724b9312bac1ce0653ec5d - md5: 010433ece4a8287643b92c348c48068d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda + sha256: 23ac81fee2d87e51e7695d7ab8b4860e7ff466d449f31cf144ba4e64f409d36b + md5: 456a8374b7a9c7a9b4ced6297563d354 depends: - - libarrow 18.0.0 hf19f309_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1122091 - timestamp: 1731791274767 + size: 1121714 + timestamp: 1732207900610 - kind: conda name: libparquet version: 18.0.0 - build: h6bd9018_7_cpu - build_number: 7 + build: h6bd9018_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda - sha256: 908e21eab32839375ebe59952e783e40645ca5083b64001679960f2e38e64c31 - md5: 687870f7d9cba5262fdd7e730e9e9ba8 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda + sha256: 3183fa77b6fd965160deb512ac6035c3be2df8af9f6529af20cb2d053d177afd + md5: e2718d24a8af33752dfe0b75e3043b75 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1212405 - timestamp: 1731790060397 + size: 1211318 + timestamp: 1732208288781 - kind: conda name: libparquet version: 18.0.0 - build: hda0ea68_7_cpu - build_number: 7 + build: hda0ea68_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda - sha256: 8343a369243b7c87993955e39fbbac3617413f4a963e271fda5079b6c8fec7b0 - md5: fd32f3b3115477411f3790eb67272081 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda + sha256: 4d91a04771b0fcb9830b5db2c67d77ee001790df7ed8c0bd4057564c5483fb00 + md5: 74f66533d553fc03cdb21af7a5d4d84e depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 881594 - timestamp: 1731790946184 + size: 882388 + timestamp: 1732209712346 +- kind: conda + name: libpng + version: 1.6.44 + build: hadc24fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 + md5: f4cc49d7aa68316213e4b12be35308d1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 290661 + timestamp: 1726234747153 +- kind: conda + name: libpng + version: 1.6.44 + build: hc14010f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 + md5: fb36e93f0ea6a6f5d2b99984f34b049e + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 263385 + timestamp: 1726234714421 +- kind: conda + name: libpng + version: 1.6.44 + build: hc4a20ef_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 + md5: 5d25802b25fcc7419fa13e21affaeb3a + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 294907 + timestamp: 1726236639270 - kind: conda name: libprotobuf version: 5.28.2 @@ -4980,6 +5274,73 @@ packages: license_family: APACHE size: 324342 timestamp: 1727206096912 +- kind: conda + name: libtiff + version: 4.7.0 + build: he137b08_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda + sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 + md5: 63872517c98aa305da58a757c443698e + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 428156 + timestamp: 1728232228989 +- kind: conda + name: libtiff + version: 4.7.0 + build: hec21d91_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d + md5: 1f80061f5ba6956fcdc381f34618cd8d + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 464938 + timestamp: 1728232266969 +- kind: conda + name: libtiff + version: 4.7.0 + build: hfce79cd_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d + md5: b9abf45f7c64caf3303725f1aa0e9a4d + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=17 + - libdeflate >=1.22,<1.23.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 366323 + timestamp: 1728232400072 - kind: conda name: libutf8proc version: 2.8.0 @@ -5091,6 +5452,104 @@ packages: license_family: MIT size: 884647 timestamp: 1729322566955 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d + md5: 5fd7ab3e5f382c70607fbac6335e6e19 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 363577 + timestamp: 1713201785160 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h93a5062_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 + md5: c0af0edfebe780b19940e94871f1a765 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 287750 + timestamp: 1713200194013 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f + md5: b26e8aa824079e1be0294e7152ca4559 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 438953 + timestamp: 1713199854503 +- kind: conda + name: libxcb + version: 1.17.0 + build: h262b8f6_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- kind: conda + name: libxcb + version: 1.17.0 + build: h8a09558_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- kind: conda + name: libxcb + version: 1.17.0 + build: hdb1d25a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 - kind: conda name: libxcrypt version: 4.4.36 @@ -5361,77 +5820,78 @@ packages: timestamp: 1729352296161 - kind: conda name: max - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - sha256: c6e86f0fbbd57d65c245b58c9a39f64301c769c587f75aa550f0a3f64629cbec - md5: f8203ce4409d971e909d91b10bf2fa89 - depends: - - max-core ==24.6.0.dev2024112020 release - - max-python >=24.6.0.dev2024112020,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112020 release - - mblack ==24.6.0.dev2024112020 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + sha256: 0715c11abe1f1450cc73936026deab86a7096cb1aadad7d495dc47bfb8be9315 + md5: 50a7636c6a54c27163ea5779a50cdf16 + depends: + - max-core ==24.6.0.dev2024112222 release + - max-python >=24.6.0.dev2024112222,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112222 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1732136899196 + size: 9920 + timestamp: 1732316394065 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - sha256: 540fd3163a864bf60fae9a2afd86f111b54afd76f6dfb59aae9299d8189ea220 - md5: 85cd4cfe4bed145b377b9379319c39fc + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda + sha256: c12d1eab662c3830bcf9e4d83c2a1206b2d59e4aeb41696d3ade0a473e7b0ac4 + md5: 27ab7b56401b8753bbcff421b2491bad depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024112222 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 270965073 - timestamp: 1732136835508 + size: 253776211 + timestamp: 1732316608463 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - sha256: 4e3e1104c4b2c3f26134bf4b865fef2af26cd33aa453244c59cbc27bf58340d6 - md5: 1b76c22a75e2f55fdd8ec123cdfb82aa + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda + sha256: a7e7dfe34fdf9290b5a25d58f367fd598f5cd91a91100078f39eaed2a860f514 + md5: 4041cb2414b5180d0eeb8f6a2e827cb9 depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024112222 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 274655105 - timestamp: 1732136899194 + size: 257425694 + timestamp: 1732316394063 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - sha256: ae86df0b9d20d20756d16a0b66e0d2f12427a496e28d639589fba76c8e508cd7 - md5: 582615e4dae591fac5d708eaec594ebc + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda + sha256: 06a5f2bb3a26c54324cdf405661bc7e0e59cf81645173d67de5877c9ae98a7ca + md5: c236958abed33485496448cea677ab10 depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024112222 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 233689138 - timestamp: 1732137063646 + size: 219411763 + timestamp: 1732316294908 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.11release.conda - sha256: 8f721503a2783059ab961f593090de817732548a8650add618fb188d3877149a - md5: 54067fc2b06a754d97c550db3ffdee5b + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.11release.conda + sha256: 895bc19b8653a420729e9f23fcc4835e7a33c6c49a3a7f203c4ac8a8a9d7a6e5 + md5: 2addbf5311a700544a5adaad069643f5 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python 3.11.* + - pillow - fastapi - numpy >=1.18,<2.0 - opentelemetry-api @@ -5450,19 +5910,20 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 137374544 - timestamp: 1732136835518 + size: 128137516 + timestamp: 1732316608473 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.11release.conda - sha256: 2c0f106fa18ad49077cc912c2598385ac2c05ff542390580493602e12d419706 - md5: d7a170f9544a6a9bcbdf3a4c373c13f5 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.11release.conda + sha256: 6bcd28fcba81f781ad6e020f8dee81d13c78d5ec1c7991f3f3a6abd41bfb3951 + md5: 16d5a8f991c092675481029b3ca3bb73 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python 3.11.* + - pillow - fastapi - numpy >=1.18,<2.0 - opentelemetry-api @@ -5481,19 +5942,20 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 140956474 - timestamp: 1732136899205 + size: 131887748 + timestamp: 1732316394072 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.11release.conda - sha256: ab5ad3eb6fdfef265488ccc4bd383d7dfe90e3e2f03661d1190f0fef51fff862 - md5: 4cab64a3872f254d847eabbe968ff0c3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.11release.conda + sha256: 7e689883b88bd3554c7522bdfcf11101d698b56b61fd3932289f0c1aada34d84 + md5: fda716bdbd23e84c90585314e1d75e7f depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python 3.11.* + - pillow - fastapi - numpy >=1.18,<2.0 - opentelemetry-api @@ -5512,17 +5974,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 125972094 - timestamp: 1732137063648 + size: 118843149 + timestamp: 1732316294910 - kind: conda name: mblack - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - sha256: d684315cf58ea23860f16a1e305bfc9b8a2c7e39554a6d40d46411a5d6fd50cf - md5: bf7e67dddae76fd3bb6a2f623642b200 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + sha256: 6942bd54f783d7d9329e3ffcbb770000c76e798b81ac51b9232cf2ac3abe21a3 + md5: 5085b5da80d5b821d8837d10c4a8f865 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5532,8 +5994,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130610 - timestamp: 1732136899202 + size: 130603 + timestamp: 1732316394070 - kind: conda name: mdurl version: 0.1.2 @@ -5551,21 +6013,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda - sha256: 65ee90ebd5d6250b6f12d6e78fea39c287b82f14949aba8df0f47c4cbdbc0be0 - md5: 5f30ae7817d94671df319b612c290550 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + sha256: cdf7bb6fa0086a91749642b1e82ddf5edfe076bce9eeaa511ba94e1fdd9a636c + md5: 555556ef35623a7c0298315685b8bcb3 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1732136899203 + size: 22949 + timestamp: 1732316394073 - kind: conda name: multidict version: 6.1.0 @@ -5802,6 +6264,59 @@ packages: license_family: BSD size: 6652352 timestamp: 1707226297967 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h0d9d63b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f + md5: fd2898519e839d5ceb778343f39a3176 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 374964 + timestamp: 1709159226478 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h488ebb8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 + md5: 7f2e286780f072ed750df46dc2631138 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 341592 + timestamp: 1709159244431 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h9f1df11_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 + md5: 5029846003f0bc14414b9128a1f7c84b + depends: + - libcxx >=16 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 316603 + timestamp: 1709159627299 - kind: conda name: openssl version: 3.4.0 @@ -6207,6 +6722,80 @@ packages: license_family: MOZILLA size: 41173 timestamp: 1702250135032 +- kind: conda + name: pillow + version: 11.0.0 + build: py311h3894ae9_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py311h3894ae9_0.conda + sha256: 6d5307fed000e6b72b98d54dd1fea7b155f9a6453476a937522b89dde7b3d673 + md5: a9a4adae1c4178f50ac3d1fd5d64bb85 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41856994 + timestamp: 1729066060042 +- kind: conda + name: pillow + version: 11.0.0 + build: py311h49e9ac3_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py311h49e9ac3_0.conda + sha256: f0f792596ae99cba01f829d064058b1e99ca84080fc89f72d925bfe473cfc1b6 + md5: 2bd3d0f839ec0d1eaca817c9d1feb7c2 + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 42421065 + timestamp: 1729065780130 +- kind: conda + name: pillow + version: 11.0.0 + build: py311hb2a0dd2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py311hb2a0dd2_0.conda + sha256: 19b3a8399b7f7d5c80c5bcef17881e7036826fc739e13ccd97d21b0212408827 + md5: 6454f9200cf6d04192bbdee9ab6a9761 + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41973113 + timestamp: 1729067980140 - kind: conda name: platformdirs version: 4.3.6 @@ -6351,6 +6940,52 @@ packages: license_family: BSD size: 472879 timestamp: 1728669387714 +- kind: conda + name: pthread-stubs + version: '0.4' + build: h86ecc28_1002 + build_number: 1002 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hb9d3cd8_1002 + build_number: 1002 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hd74edd7_1002 + build_number: 1002 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 - kind: conda name: pyarrow version: 18.0.0 @@ -6503,30 +7138,31 @@ packages: timestamp: 1711811634025 - kind: conda name: pydantic - version: 2.9.2 - build: pyhd8ed1ab_0 + version: 2.10.1 + build: pyh10f6f8f_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - sha256: 1b7b0dc9f6af4da156bf22b0263be70829364a08145c696d3670facff2f6441a - md5: 1eb533bb8eb2199e3fef3e4aa147319f + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + sha256: b1872231d26ee3ded32bd1fe3ee1b3c7d9834ad72bf28aed70e5cd1235341584 + md5: c15343c9dbdb30766a07e5b70e46c7d3 depends: - annotated-types >=0.6.0 - - pydantic-core 2.23.4 - - python >=3.7 + - pydantic-core 2.27.1 + - python >=3.9 - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 300649 - timestamp: 1726601202431 + size: 315991 + timestamp: 1732286519715 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py311h0ca61a2_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py311h0ca61a2_0.conda - sha256: 05512c4ecab4e380194d48b830e1c30b432e3cc7bd7cd6690915b76079e6e6a1 - md5: e6913464018ba4ba9d3fea45e36a1e90 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py311h0ca61a2_0.conda + sha256: 03794e4aa320059163ddeaa347cfec2dae2f5af9bcdbc0b1d7765e81523b43cb + md5: 86aee7900360de3d463d4014a8cef705 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -6536,17 +7172,16 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 1479857 - timestamp: 1726525384987 + size: 1503196 + timestamp: 1732254269904 - kind: conda name: pydantic-core - version: 2.23.4 - build: py311h481aa64_0 + version: 2.27.1 + build: py311h3ff9189_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py311h481aa64_0.conda - sha256: cfb1342c6363a01b1315ac8298a44e56f686d7e82cfdbb04d1ab156939f98ef1 - md5: 9d638548f9a18cab78220984c0fda22b + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py311h3ff9189_0.conda + sha256: fda69a0024647c988a1571a78f31d05cefb95c8580c7fea29106dc5e08b654fa + md5: 9a65f7d97aaa139bd8471429e192ac61 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -6556,17 +7191,16 @@ packages: constrains: - __osx >=11.0 license: MIT - license_family: MIT - size: 1429587 - timestamp: 1726525496750 + size: 1451573 + timestamp: 1732254367639 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py311h9e33e62_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py311h9e33e62_0.conda - sha256: 3cdbe29c2b4aec34aabcf03cf2b34a6284563c03bdb43b63d204e6d9f6f0dbfc - md5: 5e24fd648b7926bec16e535efda533c2 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py311h9e33e62_0.conda + sha256: 0ae49448c55affa0e9df0e876d02aee77ad42678500a34679f9689bf3682000e + md5: e5192dfb2dae866470c3eec81dbe5727 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6576,9 +7210,8 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 1616197 - timestamp: 1726525278048 + size: 1632797 + timestamp: 1732254154568 - kind: conda name: pydantic-settings version: 2.6.1 @@ -7352,19 +7985,19 @@ packages: timestamp: 1725632204888 - kind: conda name: setuptools - version: 75.5.0 + version: 75.6.0 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - sha256: 54dcf5f09f74f69641e0063bc695b38340d0349fa8371b1f2ed0c45c5b2fd224 - md5: ade63405adb52eeff89d506cd55908c0 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + sha256: eeec4645f70ce0ed03348397dced9d218a650a42df98592419af61d2689163ed + md5: 68d7d406366926b09a6a023e3d0f71d7 depends: - python >=3.9 license: MIT license_family: MIT - size: 772480 - timestamp: 1731707561164 + size: 774304 + timestamp: 1732216189406 - kind: conda name: shellingham version: 1.5.4 @@ -7827,14 +8460,13 @@ packages: timestamp: 1726496531769 - kind: conda name: uvicorn - version: 0.32.0 - build: pyh31011fe_1 - build_number: 1 + version: 0.32.1 + build: pyh31011fe_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - sha256: bc1dd02dfe8ba9654c7ba4f359af1a36f88fdc8299e57e25394c26075e7f5ff2 - md5: 3936b8ca7212040c07565e1379ced362 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + sha256: a310c494c817a9f6c985fc6d2772acb953a20170d03b0eabfae0e9d8c76c97ee + md5: fa77fc8110207b3bfc5ccc9d316744f4 depends: - __unix - click >=7.0 @@ -7843,31 +8475,30 @@ packages: - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49065 - timestamp: 1730219789315 + size: 49393 + timestamp: 1732185242260 - kind: conda name: uvicorn-standard - version: 0.32.0 - build: h31011fe_1 - build_number: 1 + version: 0.32.1 + build: h31011fe_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda - sha256: 955132d5f09fab2041cb15fe7d85af4526d95b3629b96c90c8191c60001475a5 - md5: ee1094a994894ddd2cdf63174131a589 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + sha256: 52545f7c88a7c779376900de5f9d81ce36738cd8770b543e89592ad7d1003c40 + md5: 49c2820e0f39cb710becd856ff14d683 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.0 pyh31011fe_1 + - uvicorn 0.32.1 pyh31011fe_0 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7119 - timestamp: 1730219790085 + size: 7136 + timestamp: 1732185243035 - kind: conda name: uvloop version: 0.21.0 @@ -8090,6 +8721,95 @@ packages: license_family: BSD size: 64144 timestamp: 1724958112306 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 + md5: c5f72a733c461aa7785518d29b997cc8 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 15690 + timestamp: 1727036097294 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 + md5: 77cbc488235ebbaab2b6e912d3934bae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 14679 + timestamp: 1727034741045 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hd74edd7_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 + md5: 7e0125f8fb619620a0011dc9297e2493 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 13515 + timestamp: 1727034783560 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: h57736b2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 - kind: conda name: xxhash version: 0.8.2 @@ -8212,12 +8932,12 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.0 build: py311h917b07b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py311h917b07b_0.conda - sha256: 9f36ca92a19b11f3f5c79cc954f1ad9fee574bada0680df2dd44eec6933c8bf9 - md5: 37a19c890f2e7b4cfabcdf4e4ef7288f + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py311h917b07b_0.conda + sha256: d21aeb264716c1f7bfb0f73f489621eebf8d28d951f3885a90ba97369eb2184d + md5: 93d15c4b23a94293511460afeda65445 depends: - __osx >=11.0 - idna >=2.0 @@ -8228,16 +8948,16 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 141207 - timestamp: 1731927269197 + size: 142545 + timestamp: 1732221235765 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.0 build: py311h9ecbd09_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py311h9ecbd09_0.conda - sha256: 76f0c0a55af42386c6d11a95ae3a056c05762576cafda4a9a15a011869361bfb - md5: a13b1162515c6d66cc16336caccbb388 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py311h9ecbd09_0.conda + sha256: 6badcbdfa79e7d85898dadc3f3c8541aeb0328beaf52d8c324f9cfa03827e34b + md5: 6c53a0d074f60e75069133bfcdfdf76f depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 @@ -8248,16 +8968,16 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 152868 - timestamp: 1731927069636 + size: 152353 + timestamp: 1732220979792 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.0 build: py311ha879c10_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py311ha879c10_0.conda - sha256: 5f210eaea25a43223df1fb367458c7e084702c7bb2a256b79b665f14db148bea - md5: d3c543cce70fac51c90f83c4c3e0897d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py311ha879c10_0.conda + sha256: 8dc821990e5f294fa8e071d472dfa46ad51738dfe9ccce34e6935dde0b9450b8 + md5: 5a62496bee4f8371cf4019957251d8c2 depends: - idna >=2.0 - libgcc >=13 @@ -8268,8 +8988,8 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 150042 - timestamp: 1731927151770 + size: 151403 + timestamp: 1732221145576 - kind: conda name: zeromq version: 4.3.5 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 7c1b1d0390..7bb4202ca2 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -31,8 +31,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -55,7 +55,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.8-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda @@ -70,6 +70,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda @@ -107,12 +108,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -120,6 +123,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda @@ -134,11 +138,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -147,9 +153,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda @@ -157,13 +166,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -174,6 +183,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda @@ -195,6 +205,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda @@ -203,13 +214,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda @@ -238,7 +250,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda @@ -266,8 +278,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda @@ -277,10 +289,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda @@ -288,7 +302,7 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -310,8 +324,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -334,7 +348,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.8-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda @@ -349,6 +363,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda @@ -387,12 +402,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -400,6 +417,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda @@ -414,11 +432,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -427,9 +447,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda @@ -437,13 +460,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -454,6 +477,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda @@ -475,6 +499,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda @@ -483,13 +508,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda @@ -518,7 +544,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda @@ -546,8 +572,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py312h8cbf658_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda @@ -557,17 +583,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -590,8 +618,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -614,7 +642,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.8-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda @@ -629,6 +657,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda @@ -665,11 +694,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -678,6 +709,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda @@ -689,18 +721,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda @@ -708,13 +745,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -725,6 +762,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda @@ -746,6 +784,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda @@ -754,13 +793,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py312he431725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda @@ -790,7 +830,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda @@ -818,8 +858,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda @@ -829,10 +869,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda @@ -901,12 +943,12 @@ packages: timestamp: 1727779893392 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.7 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py312h178313f_0.conda - sha256: 100484cdbd0e6840fc969354e78173a0b8dff80ee53947ec0fc8f0c840486934 - md5: 3a62de1af76079acb81fad6936e1f6f8 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda + sha256: e95adfd637644c9a0641bc5fbec04d53b19330568971a24021253e5054f7750e + md5: a1dc198dad91736555c27caa420029b1 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -921,16 +963,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 908313 - timestamp: 1732088522122 + size: 909778 + timestamp: 1732220397535 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.7 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py312h998013c_0.conda - sha256: e6bae4c7ce7ba1f42667b54495296b21c7414ff9c826c73eeaba0bd050d89af3 - md5: e24152bdeb4fc0ab20472d3c27539196 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda + sha256: 6f5fc3177188871418f4112e87b708499f6c9c484e175ad8c3a2e08554143e85 + md5: 6d8e94bda91469c00eb617a9cdb7f622 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -945,16 +987,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 870500 - timestamp: 1732088770426 + size: 870661 + timestamp: 1732220535266 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.7 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py312hcc812fe_0.conda - sha256: 009e1ed9676f857c90b6fd28f4cd31b11e13f5ba00fc780766e19b8cfaae7390 - md5: 73b5173b83afa78594434ac2912ec2b6 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda + sha256: 932bdef3892216f6219bb604319a63fe99a0780acf780d4265bcf10f906ade6b + md5: a5210c6947a961dec22d272c4bed586a depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -969,8 +1011,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 897593 - timestamp: 1732088604447 + size: 900629 + timestamp: 1732220481990 - kind: conda name: aiosignal version: 1.3.1 @@ -1792,13 +1834,12 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h21d7256_1 - build_number: 1 + version: 0.29.5 + build: h21d7256_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - sha256: 0de8dc3a6a9aab74049d85d407d204623a638ade4221a428cef4d91d25d41ef5 - md5: 963a310ba64fd6a113eb4f7fcf89f935 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda + sha256: 54a9f37ba03e20b29215a9e301846ee22368bd6efb9e9afce7c6ad3e64426219 + md5: b2468de19999ee8452757f12f15a9b34 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1814,17 +1855,16 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354101 - timestamp: 1731787070984 + size: 354933 + timestamp: 1732136158458 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h6832833_1 - build_number: 1 + version: 0.29.5 + build: h6832833_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - sha256: 9c94db7881035bd1cfb24985668c5c7a693d70ecbf46e4b23c453774400e4437 - md5: 452a0da8c040f2aa825727af66d05b42 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda + sha256: e42172ffef36e2e5793532ab5b8d8c499fe8c4eaf154404501bd3f97a424e701 + md5: 546159ec6849eaf2b632eb79e3ab16f7 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1839,17 +1879,16 @@ packages: - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 237267 - timestamp: 1731787157065 + size: 236424 + timestamp: 1732136497320 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h8cc6612_1 - build_number: 1 + version: 0.29.5 + build: h8cc6612_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - sha256: 7ff3dcac3578f2946dcc2d1953f20369750efdb228ada2a6f894642677cef4ec - md5: 494aaf00b4413cdf961abfbdeb5c24e9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda + sha256: aac21029314f015d558fc1cb0238b32e3aa1b0473f5ca4f3ef469d0f8c59e026 + md5: e80ca2db9b263c16a44bab78a76165ec depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1864,23 +1903,22 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283847 - timestamp: 1731787045666 + size: 284386 + timestamp: 1732136167312 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h1a02111_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda - sha256: 697d0055c4838f882d029d05baf432fb4d6fbebd92d60edfadeb10fea66f1755 - md5: 109ff9aa7347ca004a3f496a5160cdb9 + build: h775d804_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda + sha256: dae09cbccc5af7282a9b74b424a4d451362fe3b31eb2ccbf571db321f9619c52 + md5: 6e691206e10feb236ca7c0cf985797a8 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1888,45 +1926,46 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2951572 - timestamp: 1731927266611 + size: 2794659 + timestamp: 1732184111138 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h8f08b23_2 - build_number: 2 + build: h8577fd2_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda - sha256: 7b7e17c332d7f382f5f97cefe477cb5e9fae171a00d0c40a78ad6263c64a0af2 - md5: c1111d86333195e42ae29d02d64a545c + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda + sha256: ddd7aaa925ac3d569aa3dc1fe0239fa5c57034a1360683c41d310d6805f0d5bd + md5: 3c789cd7093639a2662b14b87f11b04c depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - libcurl >=8.10.1,<9.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2733405 - timestamp: 1731927979855 + size: 2737395 + timestamp: 1732184718613 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: hf48a0a1_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda - sha256: 246d894d4354e1c7bbd1466881e87f3f92396777ebbd8cbebe53efb16ace88c4 - md5: e1cd103f7450254f9513244169ea6a1a + build: hdaa582e_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda + sha256: a6fdba49b87ad3b92c219f60ac31e0d0b4fea7e651efe6d668288e5a0f7a1755 + md5: 0dca4b37cf80312f8ef84b649e6ad3a3 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1934,8 +1973,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2803239 - timestamp: 1731927417845 + size: 2951998 + timestamp: 1732184141 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2655,12 +2694,12 @@ packages: timestamp: 1731706749584 - kind: conda name: debugpy - version: 1.8.8 + version: 1.8.9 build: py312h2ec8cdc_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.8-py312h2ec8cdc_0.conda - sha256: 9ffdc284d4c67ba9ab88d400fc55890aafba6a559268f2dc3ca5a1c58d1a7ab9 - md5: eb182854d81037c9cfd95b06aba22c06 + url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda + sha256: cf79cac70773567382910fcaf7b10bb0f5242d159f8dd93296d8451cd542af9a + md5: c522fd70ca7a0c2fe1a861dd13987a57 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -2669,16 +2708,16 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2661121 - timestamp: 1731045067784 + size: 2605093 + timestamp: 1732236790708 - kind: conda name: debugpy - version: 1.8.8 + version: 1.8.9 build: py312h6f74592_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.8-py312h6f74592_0.conda - sha256: 40b11ebc2b693716c327a30346e1def51050838fe4ce0df4c8c680bba175c0f8 - md5: e2dc21ac16b6942079cbb53740cf1445 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda + sha256: 651761a1bba2af89aeb391ab61391cfb4db67d9031f3bf429720782642873115 + md5: d0238a3a2f6127b05c5144aa383d7081 depends: - libgcc >=13 - libstdcxx >=13 @@ -2687,16 +2726,16 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2604198 - timestamp: 1731045129145 + size: 2596779 + timestamp: 1732236921259 - kind: conda name: debugpy - version: 1.8.8 + version: 1.8.9 build: py312hd8f9ff3_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.8-py312hd8f9ff3_0.conda - sha256: 2a20826d25063bb500a8bda98a02fee024a64da0fa52183a29af026e2d4e81a7 - md5: a47db7a8ec137fa9cc5ba9f20a45394f + url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda + sha256: d588943ac0392300f31115d9852a2ff4213ec22856c382ef56f5650576523ec6 + md5: 51085e5bb7f21019186cc88fd9a03164 depends: - __osx >=11.0 - libcxx >=18 @@ -2705,8 +2744,8 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2535797 - timestamp: 1731045204699 + size: 2512030 + timestamp: 1732236996277 - kind: conda name: decorator version: 5.1.1 @@ -2939,6 +2978,53 @@ packages: license_family: MOZILLA size: 14395 timestamp: 1638810388635 +- kind: conda + name: freetype + version: 2.12.1 + build: h267a509_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- kind: conda + name: freetype + version: 2.12.1 + build: hadb7bae_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- kind: conda + name: freetype + version: 2.12.1 + build: hf0a5ef3_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 - kind: conda name: frozenlist version: 1.5.0 @@ -3903,6 +3989,53 @@ packages: license_family: MIT size: 1370023 timestamp: 1719463201255 +- kind: conda + name: lcms2 + version: '2.16' + build: h922389a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d + md5: ffdd8267a04c515e7ce69c727b051414 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 296219 + timestamp: 1701647961116 +- kind: conda + name: lcms2 + version: '2.16' + build: ha0e7c42_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 + md5: 66f6c134e76fe13cce8a9ea5814b5dd5 + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 211959 + timestamp: 1701647962657 +- kind: conda + name: lcms2 + version: '2.16' + build: hb7c19ff_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 - kind: conda name: ld_impl_linux-64 version: '2.43' @@ -3935,6 +4068,50 @@ packages: license_family: GPL size: 698245 timestamp: 1729655345825 +- kind: conda + name: lerc + version: 4.0.0 + build: h27087fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- kind: conda + name: lerc + version: 4.0.0 + build: h4de3ea5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- kind: conda + name: lerc + version: 4.0.0 + build: h9a09cb3_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 - kind: conda name: libabseil version: '20240722.0' @@ -3996,30 +4173,31 @@ packages: - kind: conda name: libarrow version: 18.0.0 - build: h2409f62_7_cpu - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - sha256: baf7322466c5849f0ef4c8bab9f394c1448fc7a1d42f74d775b49e20cea8fcf8 - md5: da6e0816fe9639c270cafdec68b411d6 + build: h3d75c4c_8_cpu + build_number: 8 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda + sha256: f40d35816c995d94d78aec26927650d7ee851cdfa86ebb1429cbd27137cc354a + md5: 704b04f2ad7725f31a22ca07d2789f76 depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.8.0,<3.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -4029,24 +4207,23 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5455595 - timestamp: 1731789726593 + size: 7977023 + timestamp: 1732207819418 - kind: conda name: libarrow version: 18.0.0 - build: h3b997a5_7_cpu - build_number: 7 + build: h94eee4b_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - sha256: d8e179b123ca9f62b83115091d3936c64d55506fef9c516b90cd3f2bdea304ca - md5: 32897a50e7f68187c4a524c439c0943c + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda + sha256: aeb31e3713767d5e1d2f29bc05ba04e4cbd48fd72edf8ae66867ac5b22b94160 + md5: 8d5436adb1b35ba955c5600806d52dbc depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -4072,41 +4249,39 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8714651 - timestamp: 1731789983840 + size: 8712917 + timestamp: 1732208188022 - kind: conda name: libarrow version: 18.0.0 - build: hf19f309_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - sha256: 83334f90a1759d91324c3cfcdcf4157018020f33901d1833ca28e9a912a4f89a - md5: e42e43720b5203a827bbd1ff05182afa + build: hb943b0e_8_cpu + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda + sha256: ec1e48caf98615d4e6cb5bac539d6ddcdff37fd7a722dab599131974b2a97343 + md5: e1b2b2f162540ebea865e908c865bb9c depends: - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.8.0,<3.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -4119,186 +4294,176 @@ packages: - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 7997233 - timestamp: 1731791153311 + size: 5459847 + timestamp: 1732208317959 - kind: conda name: libarrow-acero version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + build: h286801f_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - sha256: 8df47c06ad5b839393aa4703721385d3529a64971227a3a342a1100eeb2fbe78 - md5: 67a94caeec254580852dd71b0cb5bfc7 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda + sha256: b74c5a10cd40e33db50392263cff9aacd6ead0f6d42107e01e92d1e57af1daf1 + md5: 7208462cfc8f9610060695ffab85ab39 depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 491285 - timestamp: 1731789825049 + size: 491510 + timestamp: 1732208453361 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 + build: h5888daf_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - sha256: bc0aa7f6c05c097f224cb2a8f72d22a5cde7ef239fde7a57f18061bf74776cd5 - md5: 786a275d019708cd1c963b12a8fb0c72 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda + sha256: 6a33ef82a569d02b2b4664bdcc4cb6aea624dbf258921ab59afadd655e13953d + md5: 3ac00dbba52c89287214f5e8f0795e7e depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 618726 - timestamp: 1731790016942 + size: 619612 + timestamp: 1732208230617 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 + build: h5ad3122_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - sha256: dda002b70f6ba368057ba9164eabdc0101a979eab329d3269ec4e615c07292c8 - md5: eaec91ad6d3dd2e459744e3116c68553 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda + sha256: e1f98f83cb1c73119c17b97a5b816517df8f9c6565c60b623172b305090efeb0 + md5: 8bdef8781dbf8e3fc894bb295dca036f depends: - - libarrow 18.0.0 hf19f309_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585513 - timestamp: 1731791202130 + size: 586395 + timestamp: 1732207853957 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + build: h286801f_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - sha256: 3d17beb5e336507443f436f21658e0baf6d6dbacc83938a60e7eac20886e5f78 - md5: 75cec89177549b4a87faa6c952fb07a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda + sha256: 7b503c2179880d8d755e4f81e8e058ca869227c1958c172af5ab4c62d637571d + md5: 08b882378a3e10b0be0218e5867638e3 depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow-acero 18.0.0 h286801f_8_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_7_cpu + - libparquet 18.0.0 hda0ea68_8_cpu license: Apache-2.0 - license_family: APACHE - size: 497438 - timestamp: 1731791003104 + size: 498580 + timestamp: 1732209786094 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 + build: h5888daf_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - sha256: ecfcea86bf62a498eb59bfa28c8d6e28e842e9c8eeb594d059ef0fdc7064154f - md5: a742b9a0452b55020ccf662721c1ce44 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda + sha256: 3234ede6af0403cc29258aaaca45fe426e00259c154a4c857087cd805e16f7db + md5: 84e996f59d99626426a73bd0977ef7f3 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow-acero 18.0.0 h5888daf_8_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_7_cpu + - libparquet 18.0.0 h6bd9018_8_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 594424 - timestamp: 1731790074886 + size: 594655 + timestamp: 1732208308056 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 + build: h5ad3122_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - sha256: e2c4cbeef3862b9446ab7052c5889c0923b97d77582fd10437744bcf75f24e05 - md5: 1b769328f659c977a4b72235bbcdaf9c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda + sha256: fdc5c1462ea5e7902db750ae8e281122d52f3c6d859a2283a622e3ad74effdc3 + md5: 23742cf206c1283ab6f90b1ba59ba4ed depends: - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow-acero 18.0.0 h5ad3122_8_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_7_cpu + - libparquet 18.0.0 h23a96eb_8_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 567511 - timestamp: 1731791297133 + size: 568515 + timestamp: 1732207917109 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h14ec2bd_7_cpu - build_number: 7 + build: h14ec2bd_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda - sha256: f9c63c5ad5629d8891bafc100bc8a8e0844ee73b52189a6dcb59522790d93635 - md5: 3c0517a4c9a67370e9279c3b9bc2ce2b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda + sha256: 87d66d7c8d8941d2251777ce8dba057191071e7abc98e6077171a6f657f25c9a + md5: fcd095fe4ad44d48d3dad252332d412a depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu - - libarrow-dataset 18.0.0 h5ad3122_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow-acero 18.0.0 h5ad3122_8_cpu + - libarrow-dataset 18.0.0 h5ad3122_8_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 523066 - timestamp: 1731791341708 + size: 523178 + timestamp: 1732207946621 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h5c8f2c3_7_cpu - build_number: 7 + build: h5c8f2c3_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda - sha256: f4e12c8f48449b47ec7642f5cc0705d59e59c608d563e2848ffceec779c7c220 - md5: be76013fa3fdaec2c0c504e6fdfd282d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda + sha256: ceee34b069762aa81521f8aba1cf5f613250f59db7a2e1570865332ad2da8555 + md5: faa0b78b5daac5dab1651c610204401d depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu - - libarrow-dataset 18.0.0 h5888daf_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow-acero 18.0.0 h5888daf_8_cpu + - libarrow-dataset 18.0.0 h5888daf_8_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 528172 - timestamp: 1731790101854 + size: 527756 + timestamp: 1732208344211 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h6a6e5c5_7_cpu - build_number: 7 + build: h6a6e5c5_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda - sha256: 775c202c379c712f3e77d43ce54d3f9a7ef8dd37d3b68911e886b89f5502eeac - md5: 2a3910690b531fdc9553e2889fda97bf + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda + sha256: 1d7ef3812071a036942cc9bc6742b60354aee1e168338bd18a8596bbd696e43c + md5: 7acbdff23cd797bb9ada6a3de2d7502a depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu - - libarrow-dataset 18.0.0 h286801f_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow-acero 18.0.0 h286801f_8_cpu + - libarrow-dataset 18.0.0 h286801f_8_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - license_family: APACHE - size: 459246 - timestamp: 1731791195089 + size: 459728 + timestamp: 1732209986506 - kind: conda name: libblas version: 3.9.0 @@ -4682,6 +4847,49 @@ packages: license_family: Apache size: 520678 timestamp: 1732060258949 +- kind: conda + name: libdeflate + version: '1.22' + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d + md5: ff6a44e8b1707d02be2fe9a36ea88d4a + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 69601 + timestamp: 1728177137503 +- kind: conda + name: libdeflate + version: '1.22' + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 + md5: b422943d5d772b7cc858b36ad2a92db5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 72242 + timestamp: 1728177071251 +- kind: conda + name: libdeflate + version: '1.22' + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda + md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 54089 + timestamp: 1728177149927 - kind: conda name: libedit version: 3.1.20191231 @@ -5356,6 +5564,52 @@ packages: license: LGPL-2.1-only size: 705775 timestamp: 1702682170569 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 - kind: conda name: liblapack version: 3.9.0 @@ -5564,61 +5818,101 @@ packages: - kind: conda name: libparquet version: 18.0.0 - build: h23a96eb_7_cpu - build_number: 7 + build: h23a96eb_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda - sha256: 405cd8b36b454aac8d8f3f698feb4c8c4fca99eae9724b9312bac1ce0653ec5d - md5: 010433ece4a8287643b92c348c48068d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda + sha256: 23ac81fee2d87e51e7695d7ab8b4860e7ff466d449f31cf144ba4e64f409d36b + md5: 456a8374b7a9c7a9b4ced6297563d354 depends: - - libarrow 18.0.0 hf19f309_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1122091 - timestamp: 1731791274767 + size: 1121714 + timestamp: 1732207900610 - kind: conda name: libparquet version: 18.0.0 - build: h6bd9018_7_cpu - build_number: 7 + build: h6bd9018_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda - sha256: 908e21eab32839375ebe59952e783e40645ca5083b64001679960f2e38e64c31 - md5: 687870f7d9cba5262fdd7e730e9e9ba8 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda + sha256: 3183fa77b6fd965160deb512ac6035c3be2df8af9f6529af20cb2d053d177afd + md5: e2718d24a8af33752dfe0b75e3043b75 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1212405 - timestamp: 1731790060397 + size: 1211318 + timestamp: 1732208288781 - kind: conda name: libparquet version: 18.0.0 - build: hda0ea68_7_cpu - build_number: 7 + build: hda0ea68_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda - sha256: 8343a369243b7c87993955e39fbbac3617413f4a963e271fda5079b6c8fec7b0 - md5: fd32f3b3115477411f3790eb67272081 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda + sha256: 4d91a04771b0fcb9830b5db2c67d77ee001790df7ed8c0bd4057564c5483fb00 + md5: 74f66533d553fc03cdb21af7a5d4d84e depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 881594 - timestamp: 1731790946184 + size: 882388 + timestamp: 1732209712346 +- kind: conda + name: libpng + version: 1.6.44 + build: hadc24fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 + md5: f4cc49d7aa68316213e4b12be35308d1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 290661 + timestamp: 1726234747153 +- kind: conda + name: libpng + version: 1.6.44 + build: hc14010f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 + md5: fb36e93f0ea6a6f5d2b99984f34b049e + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 263385 + timestamp: 1726234714421 +- kind: conda + name: libpng + version: 1.6.44 + build: hc4a20ef_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 + md5: 5d25802b25fcc7419fa13e21affaeb3a + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 294907 + timestamp: 1726236639270 - kind: conda name: libprotobuf version: 5.28.2 @@ -5982,6 +6276,73 @@ packages: license_family: APACHE size: 324342 timestamp: 1727206096912 +- kind: conda + name: libtiff + version: 4.7.0 + build: he137b08_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda + sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 + md5: 63872517c98aa305da58a757c443698e + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 428156 + timestamp: 1728232228989 +- kind: conda + name: libtiff + version: 4.7.0 + build: hec21d91_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d + md5: 1f80061f5ba6956fcdc381f34618cd8d + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 464938 + timestamp: 1728232266969 +- kind: conda + name: libtiff + version: 4.7.0 + build: hfce79cd_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d + md5: b9abf45f7c64caf3303725f1aa0e9a4d + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=17 + - libdeflate >=1.22,<1.23.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 366323 + timestamp: 1728232400072 - kind: conda name: libutf8proc version: 2.8.0 @@ -6093,6 +6454,104 @@ packages: license_family: MIT size: 884647 timestamp: 1729322566955 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d + md5: 5fd7ab3e5f382c70607fbac6335e6e19 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 363577 + timestamp: 1713201785160 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h93a5062_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 + md5: c0af0edfebe780b19940e94871f1a765 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 287750 + timestamp: 1713200194013 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f + md5: b26e8aa824079e1be0294e7152ca4559 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 438953 + timestamp: 1713199854503 +- kind: conda + name: libxcb + version: 1.17.0 + build: h262b8f6_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- kind: conda + name: libxcb + version: 1.17.0 + build: h8a09558_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- kind: conda + name: libxcb + version: 1.17.0 + build: hdb1d25a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 - kind: conda name: libxcrypt version: 4.4.36 @@ -6379,77 +6838,78 @@ packages: timestamp: 1713250613726 - kind: conda name: max - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - sha256: c6e86f0fbbd57d65c245b58c9a39f64301c769c587f75aa550f0a3f64629cbec - md5: f8203ce4409d971e909d91b10bf2fa89 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + sha256: 0715c11abe1f1450cc73936026deab86a7096cb1aadad7d495dc47bfb8be9315 + md5: 50a7636c6a54c27163ea5779a50cdf16 depends: - - max-core ==24.6.0.dev2024112020 release - - max-python >=24.6.0.dev2024112020,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112020 release - - mblack ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release + - max-python >=24.6.0.dev2024112222,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112222 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1732136899196 + size: 9920 + timestamp: 1732316394065 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - sha256: 540fd3163a864bf60fae9a2afd86f111b54afd76f6dfb59aae9299d8189ea220 - md5: 85cd4cfe4bed145b377b9379319c39fc + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda + sha256: c12d1eab662c3830bcf9e4d83c2a1206b2d59e4aeb41696d3ade0a473e7b0ac4 + md5: 27ab7b56401b8753bbcff421b2491bad depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024112222 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 270965073 - timestamp: 1732136835508 + size: 253776211 + timestamp: 1732316608463 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - sha256: 4e3e1104c4b2c3f26134bf4b865fef2af26cd33aa453244c59cbc27bf58340d6 - md5: 1b76c22a75e2f55fdd8ec123cdfb82aa + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda + sha256: a7e7dfe34fdf9290b5a25d58f367fd598f5cd91a91100078f39eaed2a860f514 + md5: 4041cb2414b5180d0eeb8f6a2e827cb9 depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024112222 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 274655105 - timestamp: 1732136899194 + size: 257425694 + timestamp: 1732316394063 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - sha256: ae86df0b9d20d20756d16a0b66e0d2f12427a496e28d639589fba76c8e508cd7 - md5: 582615e4dae591fac5d708eaec594ebc + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda + sha256: 06a5f2bb3a26c54324cdf405661bc7e0e59cf81645173d67de5877c9ae98a7ca + md5: c236958abed33485496448cea677ab10 depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024112222 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 233689138 - timestamp: 1732137063646 + size: 219411763 + timestamp: 1732316294908 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: 9211cfb8440bf028cce5ec4554f1377ef2524e5bc2532b26029d5072a01a59b4 - md5: 83c7b6adf2b7567243a2e8682f7f33a2 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.12release.conda + sha256: 0e01163f748b2280e78788e17b864f1c90d038a66d9fcee288ec376277fd906a + md5: 1be57f2415870782d7431315b506be09 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python 3.12.* + - pillow - fastapi - numpy >=1.18,<2.0 - opentelemetry-api @@ -6468,19 +6928,20 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 137376849 - timestamp: 1732136835521 + size: 128151671 + timestamp: 1732316608477 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: 21914b325dbf1015b5cb5fef142789721d64fd5ac2f7c6b15b4192a4bb02ae4d - md5: 8b47d04ff478a6b4a66defe8226da80a + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.12release.conda + sha256: 74ac7174a47e8e289a29b32221cd256710d62ae1375ed3ba96bfe9783db4663b + md5: c53cf6a8d7163e83666921a84e21504a depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python 3.12.* + - pillow - fastapi - numpy >=1.18,<2.0 - opentelemetry-api @@ -6499,19 +6960,20 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 140907571 - timestamp: 1732136899208 + size: 131892006 + timestamp: 1732316394076 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: bbbbf91f30719bc4a51bc0317c91b9e1716d024b3721a95b37bd058ca1c66d5e - md5: 4893fb00ccdf17ce31d56617288c15f6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.12release.conda + sha256: 2922cf2ab487ab5d2b7db59fcb0f36e7b54b1be68bdabb115aedbaae32c0092f + md5: a791f8944441b656fed89a0d43f8e81f depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python 3.12.* + - pillow - fastapi - numpy >=1.18,<2.0 - opentelemetry-api @@ -6530,17 +6992,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 125944186 - timestamp: 1732137063649 + size: 118838190 + timestamp: 1732316294911 - kind: conda name: mblack - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - sha256: d684315cf58ea23860f16a1e305bfc9b8a2c7e39554a6d40d46411a5d6fd50cf - md5: bf7e67dddae76fd3bb6a2f623642b200 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + sha256: 6942bd54f783d7d9329e3ffcbb770000c76e798b81ac51b9232cf2ac3abe21a3 + md5: 5085b5da80d5b821d8837d10c4a8f865 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6550,8 +7012,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130610 - timestamp: 1732136899202 + size: 130603 + timestamp: 1732316394070 - kind: conda name: mdurl version: 0.1.2 @@ -6584,21 +7046,21 @@ packages: timestamp: 1698947249750 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda - sha256: 65ee90ebd5d6250b6f12d6e78fea39c287b82f14949aba8df0f47c4cbdbc0be0 - md5: 5f30ae7817d94671df319b612c290550 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + sha256: cdf7bb6fa0086a91749642b1e82ddf5edfe076bce9eeaa511ba94e1fdd9a636c + md5: 555556ef35623a7c0298315685b8bcb3 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1732136899203 + size: 22949 + timestamp: 1732316394073 - kind: conda name: multidict version: 6.1.0 @@ -6939,6 +7401,59 @@ packages: license_family: BSD size: 7484186 timestamp: 1707225809722 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h0d9d63b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f + md5: fd2898519e839d5ceb778343f39a3176 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 374964 + timestamp: 1709159226478 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h488ebb8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 + md5: 7f2e286780f072ed750df46dc2631138 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 341592 + timestamp: 1709159244431 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h9f1df11_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 + md5: 5029846003f0bc14414b9128a1f7c84b + depends: + - libcxx >=16 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 316603 + timestamp: 1709159627299 - kind: conda name: openssl version: 3.4.0 @@ -7417,6 +7932,80 @@ packages: license_family: MIT size: 9332 timestamp: 1602536313357 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h5ab5af3_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + sha256: 3cf43a5eb1f67f3a5f3ef1ec3a685f8767019cce24dbe46c4b76fee8a54fbacf + md5: 1c4bdfe659cfdedd372685ce2494e97b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41756471 + timestamp: 1729068045876 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h7b63e92_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + sha256: 13a464bea02c0df0199c20ef6bad24a6bc336aaf55bf8d6a133d0fe664463224 + md5: 385f46a4df6f97892503a841121a9acf + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41948418 + timestamp: 1729065846594 +- kind: conda + name: pillow + version: 11.0.0 + build: py312haf37ca6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + sha256: 727b4c3faecdb6f6809cf20c5f32d2df4af34e0d5b9146b7588383bcba7990e8 + md5: dc9b51fbd2b6f7fea9b5123458864dbb + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41737424 + timestamp: 1729065920347 - kind: conda name: pip version: 24.3.1 @@ -7662,6 +8251,52 @@ packages: license_family: BSD size: 488976 timestamp: 1729847306692 +- kind: conda + name: pthread-stubs + version: '0.4' + build: h86ecc28_1002 + build_number: 1002 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hb9d3cd8_1002 + build_number: 1002 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hd74edd7_1002 + build_number: 1002 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 - kind: conda name: ptyprocess version: 0.7.0 @@ -7843,30 +8478,31 @@ packages: timestamp: 1711811634025 - kind: conda name: pydantic - version: 2.9.2 - build: pyhd8ed1ab_0 + version: 2.10.1 + build: pyh10f6f8f_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - sha256: 1b7b0dc9f6af4da156bf22b0263be70829364a08145c696d3670facff2f6441a - md5: 1eb533bb8eb2199e3fef3e4aa147319f + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + sha256: b1872231d26ee3ded32bd1fe3ee1b3c7d9834ad72bf28aed70e5cd1235341584 + md5: c15343c9dbdb30766a07e5b70e46c7d3 depends: - annotated-types >=0.6.0 - - pydantic-core 2.23.4 - - python >=3.7 + - pydantic-core 2.27.1 + - python >=3.9 - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 300649 - timestamp: 1726601202431 + size: 315991 + timestamp: 1732286519715 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py312h12e396e_0.conda - sha256: 365fde689865087b2a9da636f36678bd59617b324ce7a538b4806e90602b20f1 - md5: 0845ab52d4ea209049129a6a91bc74ba + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda + sha256: c89741f4eff395f8de70975f42e1f20591f0e0870929d440af35b13399976b09 + md5: 114030cb28527db2c385f07038e914c8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7876,17 +8512,16 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 1611784 - timestamp: 1726525286507 + size: 1635156 + timestamp: 1732254225040 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py312h8cbf658_0.conda - sha256: fea8db180722c812c9812605ddc3d410a242f9b1ee798bc3b4a9f1e06897f3eb - md5: 18d60aa79641cec25c57823f1c8ba28d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda + sha256: 1f59bc1914f77faed3c95217e4d093310771baee4e93a15c0479359559e3fa19 + md5: d980860b8bf193f53d30a19c5d2bf070 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -7896,17 +8531,16 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 1479271 - timestamp: 1726525386163 + size: 1503747 + timestamp: 1732254331303 - kind: conda name: pydantic-core - version: 2.23.4 - build: py312he431725_0 + version: 2.27.1 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py312he431725_0.conda - sha256: d6edd3d0f9e701c8299519d412ad3dc900c7d893a134f2582203cf43585decca - md5: 3148052477686acc581b20a34b478eeb + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda + sha256: 5bba8de2bbbbdb39390abb1e2aff310e8cfd49646ae5a0e0ea4d6582bd1d52ba + md5: 3847a96eaf24a877b6091150ff9c4955 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -7916,9 +8550,8 @@ packages: constrains: - __osx >=11.0 license: MIT - license_family: MIT - size: 1431747 - timestamp: 1726525575527 + size: 1449057 + timestamp: 1732254359451 - kind: conda name: pydantic-settings version: 2.6.1 @@ -8881,19 +9514,19 @@ packages: timestamp: 1712585504123 - kind: conda name: setuptools - version: 75.5.0 + version: 75.6.0 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - sha256: 54dcf5f09f74f69641e0063bc695b38340d0349fa8371b1f2ed0c45c5b2fd224 - md5: ade63405adb52eeff89d506cd55908c0 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + sha256: eeec4645f70ce0ed03348397dced9d218a650a42df98592419af61d2689163ed + md5: 68d7d406366926b09a6a023e3d0f71d7 depends: - python >=3.9 license: MIT license_family: MIT - size: 772480 - timestamp: 1731707561164 + size: 774304 + timestamp: 1732216189406 - kind: conda name: shellingham version: 1.5.4 @@ -9501,14 +10134,13 @@ packages: timestamp: 1726496531769 - kind: conda name: uvicorn - version: 0.32.0 - build: pyh31011fe_1 - build_number: 1 + version: 0.32.1 + build: pyh31011fe_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - sha256: bc1dd02dfe8ba9654c7ba4f359af1a36f88fdc8299e57e25394c26075e7f5ff2 - md5: 3936b8ca7212040c07565e1379ced362 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + sha256: a310c494c817a9f6c985fc6d2772acb953a20170d03b0eabfae0e9d8c76c97ee + md5: fa77fc8110207b3bfc5ccc9d316744f4 depends: - __unix - click >=7.0 @@ -9517,31 +10149,30 @@ packages: - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49065 - timestamp: 1730219789315 + size: 49393 + timestamp: 1732185242260 - kind: conda name: uvicorn-standard - version: 0.32.0 - build: h31011fe_1 - build_number: 1 + version: 0.32.1 + build: h31011fe_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda - sha256: 955132d5f09fab2041cb15fe7d85af4526d95b3629b96c90c8191c60001475a5 - md5: ee1094a994894ddd2cdf63174131a589 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + sha256: 52545f7c88a7c779376900de5f9d81ce36738cd8770b543e89592ad7d1003c40 + md5: 49c2820e0f39cb710becd856ff14d683 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.0 pyh31011fe_1 + - uvicorn 0.32.1 pyh31011fe_0 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7119 - timestamp: 1730219790085 + size: 7136 + timestamp: 1732185243035 - kind: conda name: uvloop version: 0.21.0 @@ -9840,6 +10471,95 @@ packages: license_family: BSD size: 62782 timestamp: 1724958067507 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 + md5: c5f72a733c461aa7785518d29b997cc8 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 15690 + timestamp: 1727036097294 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 + md5: 77cbc488235ebbaab2b6e912d3934bae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 14679 + timestamp: 1727034741045 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hd74edd7_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 + md5: 7e0125f8fb619620a0011dc9297e2493 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 13515 + timestamp: 1727034783560 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: h57736b2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 - kind: conda name: xxhash version: 0.8.2 @@ -9962,12 +10682,12 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.0 build: py312h66e93f0_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py312h66e93f0_0.conda - sha256: 4e870938d29f38cd2aa43247efff6f99f6ecd8973735509122cd3167ccc22add - md5: 99518ade67138dcce4f2751b47ab5b00 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda + sha256: 8a1e51303ecac64f10dd0ec548d472c49954c3e2f38023ef28899191580795e1 + md5: 601d2b19a54fd9346ba18c07c2516339 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 @@ -9978,16 +10698,16 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 150022 - timestamp: 1731927117182 + size: 151247 + timestamp: 1732220988648 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.0 build: py312hb2c0f52_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py312hb2c0f52_0.conda - sha256: 77065689cc05daff357fc6e909133b6c058dbbd638c5b89781ed89483d70174f - md5: 96a074a5adcb189ad15a6c474da1d775 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda + sha256: 2ead24d5c50a2edd6348be5888677100b12b98921d1b6fe2f4cd980b0b85ffb2 + md5: 7dbbd950a7f762c2c8ab835932b12001 depends: - idna >=2.0 - libgcc >=13 @@ -9998,16 +10718,16 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 148123 - timestamp: 1731927164492 + size: 149149 + timestamp: 1732221057827 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.0 build: py312hea69d52_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py312hea69d52_0.conda - sha256: 43d85ffae29642b81e1ef4191560a7700911f3753078ab23248b8275952abcec - md5: e3d4600d565bac01340b12d3c4cba2b2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda + sha256: 4c90de12b1569f85126a12dbbb89f3dc10cee5838335b9c9993ead8bf1594cd3 + md5: f538709098e1642d50f4a01707e7dfdb depends: - __osx >=11.0 - idna >=2.0 @@ -10018,8 +10738,8 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 140245 - timestamp: 1731927409723 + size: 141452 + timestamp: 1732221306526 - kind: conda name: zeromq version: 4.3.5 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 18ecbf7803..9e0e6b580d 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -26,8 +26,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -53,6 +53,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda @@ -73,12 +74,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -86,6 +89,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda @@ -100,11 +104,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -113,26 +119,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda @@ -149,15 +159,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda @@ -180,7 +192,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda @@ -200,16 +212,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda @@ -217,7 +231,7 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -234,8 +248,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -261,6 +275,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda @@ -282,12 +297,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -295,6 +312,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda @@ -309,11 +327,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -322,26 +342,30 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda @@ -358,15 +382,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda @@ -389,7 +415,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda @@ -409,23 +435,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py312h8cbf658_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -442,8 +470,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -469,6 +497,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda @@ -488,11 +517,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -501,6 +532,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda @@ -512,35 +544,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda @@ -557,15 +595,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py312he431725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda @@ -587,7 +627,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda @@ -607,16 +647,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda @@ -685,12 +727,12 @@ packages: timestamp: 1727779893392 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.7 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py312h178313f_0.conda - sha256: 100484cdbd0e6840fc969354e78173a0b8dff80ee53947ec0fc8f0c840486934 - md5: 3a62de1af76079acb81fad6936e1f6f8 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda + sha256: e95adfd637644c9a0641bc5fbec04d53b19330568971a24021253e5054f7750e + md5: a1dc198dad91736555c27caa420029b1 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -705,16 +747,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 908313 - timestamp: 1732088522122 + size: 909778 + timestamp: 1732220397535 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.7 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py312h998013c_0.conda - sha256: e6bae4c7ce7ba1f42667b54495296b21c7414ff9c826c73eeaba0bd050d89af3 - md5: e24152bdeb4fc0ab20472d3c27539196 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda + sha256: 6f5fc3177188871418f4112e87b708499f6c9c484e175ad8c3a2e08554143e85 + md5: 6d8e94bda91469c00eb617a9cdb7f622 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -729,16 +771,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 870500 - timestamp: 1732088770426 + size: 870661 + timestamp: 1732220535266 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.7 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py312hcc812fe_0.conda - sha256: 009e1ed9676f857c90b6fd28f4cd31b11e13f5ba00fc780766e19b8cfaae7390 - md5: 73b5173b83afa78594434ac2912ec2b6 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda + sha256: 932bdef3892216f6219bb604319a63fe99a0780acf780d4265bcf10f906ade6b + md5: a5210c6947a961dec22d272c4bed586a depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -753,8 +795,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 897593 - timestamp: 1732088604447 + size: 900629 + timestamp: 1732220481990 - kind: conda name: aiosignal version: 1.3.1 @@ -1436,13 +1478,12 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h21d7256_1 - build_number: 1 + version: 0.29.5 + build: h21d7256_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - sha256: 0de8dc3a6a9aab74049d85d407d204623a638ade4221a428cef4d91d25d41ef5 - md5: 963a310ba64fd6a113eb4f7fcf89f935 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda + sha256: 54a9f37ba03e20b29215a9e301846ee22368bd6efb9e9afce7c6ad3e64426219 + md5: b2468de19999ee8452757f12f15a9b34 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1458,17 +1499,16 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354101 - timestamp: 1731787070984 + size: 354933 + timestamp: 1732136158458 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h6832833_1 - build_number: 1 + version: 0.29.5 + build: h6832833_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - sha256: 9c94db7881035bd1cfb24985668c5c7a693d70ecbf46e4b23c453774400e4437 - md5: 452a0da8c040f2aa825727af66d05b42 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda + sha256: e42172ffef36e2e5793532ab5b8d8c499fe8c4eaf154404501bd3f97a424e701 + md5: 546159ec6849eaf2b632eb79e3ab16f7 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1483,17 +1523,16 @@ packages: - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 237267 - timestamp: 1731787157065 + size: 236424 + timestamp: 1732136497320 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h8cc6612_1 - build_number: 1 + version: 0.29.5 + build: h8cc6612_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - sha256: 7ff3dcac3578f2946dcc2d1953f20369750efdb228ada2a6f894642677cef4ec - md5: 494aaf00b4413cdf961abfbdeb5c24e9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda + sha256: aac21029314f015d558fc1cb0238b32e3aa1b0473f5ca4f3ef469d0f8c59e026 + md5: e80ca2db9b263c16a44bab78a76165ec depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1508,23 +1547,22 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283847 - timestamp: 1731787045666 + size: 284386 + timestamp: 1732136167312 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h1a02111_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda - sha256: 697d0055c4838f882d029d05baf432fb4d6fbebd92d60edfadeb10fea66f1755 - md5: 109ff9aa7347ca004a3f496a5160cdb9 + build: h775d804_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda + sha256: dae09cbccc5af7282a9b74b424a4d451362fe3b31eb2ccbf571db321f9619c52 + md5: 6e691206e10feb236ca7c0cf985797a8 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1532,45 +1570,46 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2951572 - timestamp: 1731927266611 + size: 2794659 + timestamp: 1732184111138 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h8f08b23_2 - build_number: 2 + build: h8577fd2_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda - sha256: 7b7e17c332d7f382f5f97cefe477cb5e9fae171a00d0c40a78ad6263c64a0af2 - md5: c1111d86333195e42ae29d02d64a545c + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda + sha256: ddd7aaa925ac3d569aa3dc1fe0239fa5c57034a1360683c41d310d6805f0d5bd + md5: 3c789cd7093639a2662b14b87f11b04c depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - libcurl >=8.10.1,<9.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2733405 - timestamp: 1731927979855 + size: 2737395 + timestamp: 1732184718613 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: hf48a0a1_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda - sha256: 246d894d4354e1c7bbd1466881e87f3f92396777ebbd8cbebe53efb16ace88c4 - md5: e1cd103f7450254f9513244169ea6a1a + build: hdaa582e_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda + sha256: a6fdba49b87ad3b92c219f60ac31e0d0b4fea7e651efe6d668288e5a0f7a1755 + md5: 0dca4b37cf80312f8ef84b649e6ad3a3 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1578,8 +1617,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2803239 - timestamp: 1731927417845 + size: 2951998 + timestamp: 1732184141 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2357,6 +2396,53 @@ packages: license: Unlicense size: 17357 timestamp: 1726613593584 +- kind: conda + name: freetype + version: 2.12.1 + build: h267a509_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- kind: conda + name: freetype + version: 2.12.1 + build: hadb7bae_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- kind: conda + name: freetype + version: 2.12.1 + build: hf0a5ef3_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 - kind: conda name: frozenlist version: 1.5.0 @@ -2901,6 +2987,53 @@ packages: license_family: MIT size: 1370023 timestamp: 1719463201255 +- kind: conda + name: lcms2 + version: '2.16' + build: h922389a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d + md5: ffdd8267a04c515e7ce69c727b051414 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 296219 + timestamp: 1701647961116 +- kind: conda + name: lcms2 + version: '2.16' + build: ha0e7c42_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 + md5: 66f6c134e76fe13cce8a9ea5814b5dd5 + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 211959 + timestamp: 1701647962657 +- kind: conda + name: lcms2 + version: '2.16' + build: hb7c19ff_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 - kind: conda name: ld_impl_linux-64 version: '2.43' @@ -2933,6 +3066,50 @@ packages: license_family: GPL size: 698245 timestamp: 1729655345825 +- kind: conda + name: lerc + version: 4.0.0 + build: h27087fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- kind: conda + name: lerc + version: 4.0.0 + build: h4de3ea5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- kind: conda + name: lerc + version: 4.0.0 + build: h9a09cb3_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 - kind: conda name: libabseil version: '20240722.0' @@ -2994,30 +3171,31 @@ packages: - kind: conda name: libarrow version: 18.0.0 - build: h2409f62_7_cpu - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - sha256: baf7322466c5849f0ef4c8bab9f394c1448fc7a1d42f74d775b49e20cea8fcf8 - md5: da6e0816fe9639c270cafdec68b411d6 + build: h3d75c4c_8_cpu + build_number: 8 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda + sha256: f40d35816c995d94d78aec26927650d7ee851cdfa86ebb1429cbd27137cc354a + md5: 704b04f2ad7725f31a22ca07d2789f76 depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.8.0,<3.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3027,24 +3205,23 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5455595 - timestamp: 1731789726593 + size: 7977023 + timestamp: 1732207819418 - kind: conda name: libarrow version: 18.0.0 - build: h3b997a5_7_cpu - build_number: 7 + build: h94eee4b_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - sha256: d8e179b123ca9f62b83115091d3936c64d55506fef9c516b90cd3f2bdea304ca - md5: 32897a50e7f68187c4a524c439c0943c + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda + sha256: aeb31e3713767d5e1d2f29bc05ba04e4cbd48fd72edf8ae66867ac5b22b94160 + md5: 8d5436adb1b35ba955c5600806d52dbc depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3070,41 +3247,39 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8714651 - timestamp: 1731789983840 + size: 8712917 + timestamp: 1732208188022 - kind: conda name: libarrow version: 18.0.0 - build: hf19f309_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - sha256: 83334f90a1759d91324c3cfcdcf4157018020f33901d1833ca28e9a912a4f89a - md5: e42e43720b5203a827bbd1ff05182afa + build: hb943b0e_8_cpu + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda + sha256: ec1e48caf98615d4e6cb5bac539d6ddcdff37fd7a722dab599131974b2a97343 + md5: e1b2b2f162540ebea865e908c865bb9c depends: - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.8.0,<3.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3117,186 +3292,176 @@ packages: - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 7997233 - timestamp: 1731791153311 + size: 5459847 + timestamp: 1732208317959 - kind: conda name: libarrow-acero version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + build: h286801f_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - sha256: 8df47c06ad5b839393aa4703721385d3529a64971227a3a342a1100eeb2fbe78 - md5: 67a94caeec254580852dd71b0cb5bfc7 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda + sha256: b74c5a10cd40e33db50392263cff9aacd6ead0f6d42107e01e92d1e57af1daf1 + md5: 7208462cfc8f9610060695ffab85ab39 depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 491285 - timestamp: 1731789825049 + size: 491510 + timestamp: 1732208453361 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 + build: h5888daf_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - sha256: bc0aa7f6c05c097f224cb2a8f72d22a5cde7ef239fde7a57f18061bf74776cd5 - md5: 786a275d019708cd1c963b12a8fb0c72 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda + sha256: 6a33ef82a569d02b2b4664bdcc4cb6aea624dbf258921ab59afadd655e13953d + md5: 3ac00dbba52c89287214f5e8f0795e7e depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 618726 - timestamp: 1731790016942 + size: 619612 + timestamp: 1732208230617 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 + build: h5ad3122_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - sha256: dda002b70f6ba368057ba9164eabdc0101a979eab329d3269ec4e615c07292c8 - md5: eaec91ad6d3dd2e459744e3116c68553 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda + sha256: e1f98f83cb1c73119c17b97a5b816517df8f9c6565c60b623172b305090efeb0 + md5: 8bdef8781dbf8e3fc894bb295dca036f depends: - - libarrow 18.0.0 hf19f309_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585513 - timestamp: 1731791202130 + size: 586395 + timestamp: 1732207853957 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + build: h286801f_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - sha256: 3d17beb5e336507443f436f21658e0baf6d6dbacc83938a60e7eac20886e5f78 - md5: 75cec89177549b4a87faa6c952fb07a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda + sha256: 7b503c2179880d8d755e4f81e8e058ca869227c1958c172af5ab4c62d637571d + md5: 08b882378a3e10b0be0218e5867638e3 depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow-acero 18.0.0 h286801f_8_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_7_cpu + - libparquet 18.0.0 hda0ea68_8_cpu license: Apache-2.0 - license_family: APACHE - size: 497438 - timestamp: 1731791003104 + size: 498580 + timestamp: 1732209786094 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 + build: h5888daf_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - sha256: ecfcea86bf62a498eb59bfa28c8d6e28e842e9c8eeb594d059ef0fdc7064154f - md5: a742b9a0452b55020ccf662721c1ce44 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda + sha256: 3234ede6af0403cc29258aaaca45fe426e00259c154a4c857087cd805e16f7db + md5: 84e996f59d99626426a73bd0977ef7f3 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow-acero 18.0.0 h5888daf_8_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_7_cpu + - libparquet 18.0.0 h6bd9018_8_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 594424 - timestamp: 1731790074886 + size: 594655 + timestamp: 1732208308056 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 + build: h5ad3122_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - sha256: e2c4cbeef3862b9446ab7052c5889c0923b97d77582fd10437744bcf75f24e05 - md5: 1b769328f659c977a4b72235bbcdaf9c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda + sha256: fdc5c1462ea5e7902db750ae8e281122d52f3c6d859a2283a622e3ad74effdc3 + md5: 23742cf206c1283ab6f90b1ba59ba4ed depends: - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow-acero 18.0.0 h5ad3122_8_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_7_cpu + - libparquet 18.0.0 h23a96eb_8_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 567511 - timestamp: 1731791297133 + size: 568515 + timestamp: 1732207917109 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h14ec2bd_7_cpu - build_number: 7 + build: h14ec2bd_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda - sha256: f9c63c5ad5629d8891bafc100bc8a8e0844ee73b52189a6dcb59522790d93635 - md5: 3c0517a4c9a67370e9279c3b9bc2ce2b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda + sha256: 87d66d7c8d8941d2251777ce8dba057191071e7abc98e6077171a6f657f25c9a + md5: fcd095fe4ad44d48d3dad252332d412a depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu - - libarrow-dataset 18.0.0 h5ad3122_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow-acero 18.0.0 h5ad3122_8_cpu + - libarrow-dataset 18.0.0 h5ad3122_8_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 523066 - timestamp: 1731791341708 + size: 523178 + timestamp: 1732207946621 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h5c8f2c3_7_cpu - build_number: 7 + build: h5c8f2c3_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda - sha256: f4e12c8f48449b47ec7642f5cc0705d59e59c608d563e2848ffceec779c7c220 - md5: be76013fa3fdaec2c0c504e6fdfd282d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda + sha256: ceee34b069762aa81521f8aba1cf5f613250f59db7a2e1570865332ad2da8555 + md5: faa0b78b5daac5dab1651c610204401d depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu - - libarrow-dataset 18.0.0 h5888daf_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow-acero 18.0.0 h5888daf_8_cpu + - libarrow-dataset 18.0.0 h5888daf_8_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 528172 - timestamp: 1731790101854 + size: 527756 + timestamp: 1732208344211 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h6a6e5c5_7_cpu - build_number: 7 + build: h6a6e5c5_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda - sha256: 775c202c379c712f3e77d43ce54d3f9a7ef8dd37d3b68911e886b89f5502eeac - md5: 2a3910690b531fdc9553e2889fda97bf + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda + sha256: 1d7ef3812071a036942cc9bc6742b60354aee1e168338bd18a8596bbd696e43c + md5: 7acbdff23cd797bb9ada6a3de2d7502a depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu - - libarrow-dataset 18.0.0 h286801f_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow-acero 18.0.0 h286801f_8_cpu + - libarrow-dataset 18.0.0 h286801f_8_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - license_family: APACHE - size: 459246 - timestamp: 1731791195089 + size: 459728 + timestamp: 1732209986506 - kind: conda name: libblas version: 3.9.0 @@ -3680,6 +3845,49 @@ packages: license_family: Apache size: 520678 timestamp: 1732060258949 +- kind: conda + name: libdeflate + version: '1.22' + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d + md5: ff6a44e8b1707d02be2fe9a36ea88d4a + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 69601 + timestamp: 1728177137503 +- kind: conda + name: libdeflate + version: '1.22' + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 + md5: b422943d5d772b7cc858b36ad2a92db5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 72242 + timestamp: 1728177071251 +- kind: conda + name: libdeflate + version: '1.22' + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda + md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 54089 + timestamp: 1728177149927 - kind: conda name: libedit version: 3.1.20191231 @@ -4354,6 +4562,52 @@ packages: license: LGPL-2.1-only size: 705775 timestamp: 1702682170569 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 - kind: conda name: liblapack version: 3.9.0 @@ -4562,61 +4816,101 @@ packages: - kind: conda name: libparquet version: 18.0.0 - build: h23a96eb_7_cpu - build_number: 7 + build: h23a96eb_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda - sha256: 405cd8b36b454aac8d8f3f698feb4c8c4fca99eae9724b9312bac1ce0653ec5d - md5: 010433ece4a8287643b92c348c48068d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda + sha256: 23ac81fee2d87e51e7695d7ab8b4860e7ff466d449f31cf144ba4e64f409d36b + md5: 456a8374b7a9c7a9b4ced6297563d354 depends: - - libarrow 18.0.0 hf19f309_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1122091 - timestamp: 1731791274767 + size: 1121714 + timestamp: 1732207900610 - kind: conda name: libparquet version: 18.0.0 - build: h6bd9018_7_cpu - build_number: 7 + build: h6bd9018_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda - sha256: 908e21eab32839375ebe59952e783e40645ca5083b64001679960f2e38e64c31 - md5: 687870f7d9cba5262fdd7e730e9e9ba8 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda + sha256: 3183fa77b6fd965160deb512ac6035c3be2df8af9f6529af20cb2d053d177afd + md5: e2718d24a8af33752dfe0b75e3043b75 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1212405 - timestamp: 1731790060397 + size: 1211318 + timestamp: 1732208288781 - kind: conda name: libparquet version: 18.0.0 - build: hda0ea68_7_cpu - build_number: 7 + build: hda0ea68_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda - sha256: 8343a369243b7c87993955e39fbbac3617413f4a963e271fda5079b6c8fec7b0 - md5: fd32f3b3115477411f3790eb67272081 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda + sha256: 4d91a04771b0fcb9830b5db2c67d77ee001790df7ed8c0bd4057564c5483fb00 + md5: 74f66533d553fc03cdb21af7a5d4d84e depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 881594 - timestamp: 1731790946184 + size: 882388 + timestamp: 1732209712346 +- kind: conda + name: libpng + version: 1.6.44 + build: hadc24fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 + md5: f4cc49d7aa68316213e4b12be35308d1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 290661 + timestamp: 1726234747153 +- kind: conda + name: libpng + version: 1.6.44 + build: hc14010f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 + md5: fb36e93f0ea6a6f5d2b99984f34b049e + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 263385 + timestamp: 1726234714421 +- kind: conda + name: libpng + version: 1.6.44 + build: hc4a20ef_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 + md5: 5d25802b25fcc7419fa13e21affaeb3a + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 294907 + timestamp: 1726236639270 - kind: conda name: libprotobuf version: 5.28.2 @@ -4980,6 +5274,73 @@ packages: license_family: APACHE size: 324342 timestamp: 1727206096912 +- kind: conda + name: libtiff + version: 4.7.0 + build: he137b08_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda + sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 + md5: 63872517c98aa305da58a757c443698e + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 428156 + timestamp: 1728232228989 +- kind: conda + name: libtiff + version: 4.7.0 + build: hec21d91_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d + md5: 1f80061f5ba6956fcdc381f34618cd8d + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 464938 + timestamp: 1728232266969 +- kind: conda + name: libtiff + version: 4.7.0 + build: hfce79cd_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d + md5: b9abf45f7c64caf3303725f1aa0e9a4d + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=17 + - libdeflate >=1.22,<1.23.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 366323 + timestamp: 1728232400072 - kind: conda name: libutf8proc version: 2.8.0 @@ -5091,6 +5452,104 @@ packages: license_family: MIT size: 884647 timestamp: 1729322566955 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d + md5: 5fd7ab3e5f382c70607fbac6335e6e19 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 363577 + timestamp: 1713201785160 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h93a5062_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 + md5: c0af0edfebe780b19940e94871f1a765 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 287750 + timestamp: 1713200194013 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f + md5: b26e8aa824079e1be0294e7152ca4559 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 438953 + timestamp: 1713199854503 +- kind: conda + name: libxcb + version: 1.17.0 + build: h262b8f6_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- kind: conda + name: libxcb + version: 1.17.0 + build: h8a09558_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- kind: conda + name: libxcb + version: 1.17.0 + build: hdb1d25a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 - kind: conda name: libxcrypt version: 4.4.36 @@ -5361,77 +5820,78 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - sha256: c6e86f0fbbd57d65c245b58c9a39f64301c769c587f75aa550f0a3f64629cbec - md5: f8203ce4409d971e909d91b10bf2fa89 - depends: - - max-core ==24.6.0.dev2024112020 release - - max-python >=24.6.0.dev2024112020,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112020 release - - mblack ==24.6.0.dev2024112020 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + sha256: 0715c11abe1f1450cc73936026deab86a7096cb1aadad7d495dc47bfb8be9315 + md5: 50a7636c6a54c27163ea5779a50cdf16 + depends: + - max-core ==24.6.0.dev2024112222 release + - max-python >=24.6.0.dev2024112222,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112222 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1732136899196 + size: 9920 + timestamp: 1732316394065 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - sha256: 540fd3163a864bf60fae9a2afd86f111b54afd76f6dfb59aae9299d8189ea220 - md5: 85cd4cfe4bed145b377b9379319c39fc + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda + sha256: c12d1eab662c3830bcf9e4d83c2a1206b2d59e4aeb41696d3ade0a473e7b0ac4 + md5: 27ab7b56401b8753bbcff421b2491bad depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024112222 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 270965073 - timestamp: 1732136835508 + size: 253776211 + timestamp: 1732316608463 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - sha256: 4e3e1104c4b2c3f26134bf4b865fef2af26cd33aa453244c59cbc27bf58340d6 - md5: 1b76c22a75e2f55fdd8ec123cdfb82aa + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda + sha256: a7e7dfe34fdf9290b5a25d58f367fd598f5cd91a91100078f39eaed2a860f514 + md5: 4041cb2414b5180d0eeb8f6a2e827cb9 depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024112222 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 274655105 - timestamp: 1732136899194 + size: 257425694 + timestamp: 1732316394063 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - sha256: ae86df0b9d20d20756d16a0b66e0d2f12427a496e28d639589fba76c8e508cd7 - md5: 582615e4dae591fac5d708eaec594ebc + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda + sha256: 06a5f2bb3a26c54324cdf405661bc7e0e59cf81645173d67de5877c9ae98a7ca + md5: c236958abed33485496448cea677ab10 depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024112222 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 233689138 - timestamp: 1732137063646 + size: 219411763 + timestamp: 1732316294908 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: 9211cfb8440bf028cce5ec4554f1377ef2524e5bc2532b26029d5072a01a59b4 - md5: 83c7b6adf2b7567243a2e8682f7f33a2 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.12release.conda + sha256: 0e01163f748b2280e78788e17b864f1c90d038a66d9fcee288ec376277fd906a + md5: 1be57f2415870782d7431315b506be09 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python 3.12.* + - pillow - fastapi - numpy >=1.18,<2.0 - opentelemetry-api @@ -5450,19 +5910,20 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 137376849 - timestamp: 1732136835521 + size: 128151671 + timestamp: 1732316608477 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: 21914b325dbf1015b5cb5fef142789721d64fd5ac2f7c6b15b4192a4bb02ae4d - md5: 8b47d04ff478a6b4a66defe8226da80a + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.12release.conda + sha256: 74ac7174a47e8e289a29b32221cd256710d62ae1375ed3ba96bfe9783db4663b + md5: c53cf6a8d7163e83666921a84e21504a depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python 3.12.* + - pillow - fastapi - numpy >=1.18,<2.0 - opentelemetry-api @@ -5481,19 +5942,20 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 140907571 - timestamp: 1732136899208 + size: 131892006 + timestamp: 1732316394076 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: bbbbf91f30719bc4a51bc0317c91b9e1716d024b3721a95b37bd058ca1c66d5e - md5: 4893fb00ccdf17ce31d56617288c15f6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.12release.conda + sha256: 2922cf2ab487ab5d2b7db59fcb0f36e7b54b1be68bdabb115aedbaae32c0092f + md5: a791f8944441b656fed89a0d43f8e81f depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python 3.12.* + - pillow - fastapi - numpy >=1.18,<2.0 - opentelemetry-api @@ -5512,17 +5974,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 125944186 - timestamp: 1732137063649 + size: 118838190 + timestamp: 1732316294911 - kind: conda name: mblack - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - sha256: d684315cf58ea23860f16a1e305bfc9b8a2c7e39554a6d40d46411a5d6fd50cf - md5: bf7e67dddae76fd3bb6a2f623642b200 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + sha256: 6942bd54f783d7d9329e3ffcbb770000c76e798b81ac51b9232cf2ac3abe21a3 + md5: 5085b5da80d5b821d8837d10c4a8f865 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5532,8 +5994,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130610 - timestamp: 1732136899202 + size: 130603 + timestamp: 1732316394070 - kind: conda name: mdurl version: 0.1.2 @@ -5551,21 +6013,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda - sha256: 65ee90ebd5d6250b6f12d6e78fea39c287b82f14949aba8df0f47c4cbdbc0be0 - md5: 5f30ae7817d94671df319b612c290550 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + sha256: cdf7bb6fa0086a91749642b1e82ddf5edfe076bce9eeaa511ba94e1fdd9a636c + md5: 555556ef35623a7c0298315685b8bcb3 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1732136899203 + size: 22949 + timestamp: 1732316394073 - kind: conda name: multidict version: 6.1.0 @@ -5802,6 +6264,59 @@ packages: license_family: BSD size: 7484186 timestamp: 1707225809722 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h0d9d63b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f + md5: fd2898519e839d5ceb778343f39a3176 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 374964 + timestamp: 1709159226478 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h488ebb8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 + md5: 7f2e286780f072ed750df46dc2631138 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 341592 + timestamp: 1709159244431 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h9f1df11_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 + md5: 5029846003f0bc14414b9128a1f7c84b + depends: + - libcxx >=16 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 316603 + timestamp: 1709159627299 - kind: conda name: openssl version: 3.4.0 @@ -6207,6 +6722,80 @@ packages: license_family: MOZILLA size: 41173 timestamp: 1702250135032 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h5ab5af3_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + sha256: 3cf43a5eb1f67f3a5f3ef1ec3a685f8767019cce24dbe46c4b76fee8a54fbacf + md5: 1c4bdfe659cfdedd372685ce2494e97b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41756471 + timestamp: 1729068045876 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h7b63e92_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + sha256: 13a464bea02c0df0199c20ef6bad24a6bc336aaf55bf8d6a133d0fe664463224 + md5: 385f46a4df6f97892503a841121a9acf + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41948418 + timestamp: 1729065846594 +- kind: conda + name: pillow + version: 11.0.0 + build: py312haf37ca6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + sha256: 727b4c3faecdb6f6809cf20c5f32d2df4af34e0d5b9146b7588383bcba7990e8 + md5: dc9b51fbd2b6f7fea9b5123458864dbb + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41737424 + timestamp: 1729065920347 - kind: conda name: platformdirs version: 4.3.6 @@ -6351,6 +6940,52 @@ packages: license_family: BSD size: 447369 timestamp: 1728669902591 +- kind: conda + name: pthread-stubs + version: '0.4' + build: h86ecc28_1002 + build_number: 1002 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hb9d3cd8_1002 + build_number: 1002 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hd74edd7_1002 + build_number: 1002 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 - kind: conda name: pyarrow version: 18.0.0 @@ -6503,30 +7138,31 @@ packages: timestamp: 1711811634025 - kind: conda name: pydantic - version: 2.9.2 - build: pyhd8ed1ab_0 + version: 2.10.1 + build: pyh10f6f8f_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - sha256: 1b7b0dc9f6af4da156bf22b0263be70829364a08145c696d3670facff2f6441a - md5: 1eb533bb8eb2199e3fef3e4aa147319f + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + sha256: b1872231d26ee3ded32bd1fe3ee1b3c7d9834ad72bf28aed70e5cd1235341584 + md5: c15343c9dbdb30766a07e5b70e46c7d3 depends: - annotated-types >=0.6.0 - - pydantic-core 2.23.4 - - python >=3.7 + - pydantic-core 2.27.1 + - python >=3.9 - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 300649 - timestamp: 1726601202431 + size: 315991 + timestamp: 1732286519715 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py312h12e396e_0.conda - sha256: 365fde689865087b2a9da636f36678bd59617b324ce7a538b4806e90602b20f1 - md5: 0845ab52d4ea209049129a6a91bc74ba + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda + sha256: c89741f4eff395f8de70975f42e1f20591f0e0870929d440af35b13399976b09 + md5: 114030cb28527db2c385f07038e914c8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6536,17 +7172,16 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 1611784 - timestamp: 1726525286507 + size: 1635156 + timestamp: 1732254225040 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py312h8cbf658_0.conda - sha256: fea8db180722c812c9812605ddc3d410a242f9b1ee798bc3b4a9f1e06897f3eb - md5: 18d60aa79641cec25c57823f1c8ba28d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda + sha256: 1f59bc1914f77faed3c95217e4d093310771baee4e93a15c0479359559e3fa19 + md5: d980860b8bf193f53d30a19c5d2bf070 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6556,17 +7191,16 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 1479271 - timestamp: 1726525386163 + size: 1503747 + timestamp: 1732254331303 - kind: conda name: pydantic-core - version: 2.23.4 - build: py312he431725_0 + version: 2.27.1 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py312he431725_0.conda - sha256: d6edd3d0f9e701c8299519d412ad3dc900c7d893a134f2582203cf43585decca - md5: 3148052477686acc581b20a34b478eeb + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda + sha256: 5bba8de2bbbbdb39390abb1e2aff310e8cfd49646ae5a0e0ea4d6582bd1d52ba + md5: 3847a96eaf24a877b6091150ff9c4955 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6576,9 +7210,8 @@ packages: constrains: - __osx >=11.0 license: MIT - license_family: MIT - size: 1431747 - timestamp: 1726525575527 + size: 1449057 + timestamp: 1732254359451 - kind: conda name: pydantic-settings version: 2.6.1 @@ -7349,19 +7982,19 @@ packages: timestamp: 1725632294079 - kind: conda name: setuptools - version: 75.5.0 + version: 75.6.0 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - sha256: 54dcf5f09f74f69641e0063bc695b38340d0349fa8371b1f2ed0c45c5b2fd224 - md5: ade63405adb52eeff89d506cd55908c0 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + sha256: eeec4645f70ce0ed03348397dced9d218a650a42df98592419af61d2689163ed + md5: 68d7d406366926b09a6a023e3d0f71d7 depends: - python >=3.9 license: MIT license_family: MIT - size: 772480 - timestamp: 1731707561164 + size: 774304 + timestamp: 1732216189406 - kind: conda name: shellingham version: 1.5.4 @@ -7824,14 +8457,13 @@ packages: timestamp: 1726496531769 - kind: conda name: uvicorn - version: 0.32.0 - build: pyh31011fe_1 - build_number: 1 + version: 0.32.1 + build: pyh31011fe_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - sha256: bc1dd02dfe8ba9654c7ba4f359af1a36f88fdc8299e57e25394c26075e7f5ff2 - md5: 3936b8ca7212040c07565e1379ced362 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + sha256: a310c494c817a9f6c985fc6d2772acb953a20170d03b0eabfae0e9d8c76c97ee + md5: fa77fc8110207b3bfc5ccc9d316744f4 depends: - __unix - click >=7.0 @@ -7840,31 +8472,30 @@ packages: - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49065 - timestamp: 1730219789315 + size: 49393 + timestamp: 1732185242260 - kind: conda name: uvicorn-standard - version: 0.32.0 - build: h31011fe_1 - build_number: 1 + version: 0.32.1 + build: h31011fe_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda - sha256: 955132d5f09fab2041cb15fe7d85af4526d95b3629b96c90c8191c60001475a5 - md5: ee1094a994894ddd2cdf63174131a589 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + sha256: 52545f7c88a7c779376900de5f9d81ce36738cd8770b543e89592ad7d1003c40 + md5: 49c2820e0f39cb710becd856ff14d683 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.0 pyh31011fe_1 + - uvicorn 0.32.1 pyh31011fe_0 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7119 - timestamp: 1730219790085 + size: 7136 + timestamp: 1732185243035 - kind: conda name: uvloop version: 0.21.0 @@ -8087,6 +8718,95 @@ packages: license_family: BSD size: 62782 timestamp: 1724958067507 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 + md5: c5f72a733c461aa7785518d29b997cc8 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 15690 + timestamp: 1727036097294 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 + md5: 77cbc488235ebbaab2b6e912d3934bae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 14679 + timestamp: 1727034741045 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hd74edd7_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 + md5: 7e0125f8fb619620a0011dc9297e2493 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 13515 + timestamp: 1727034783560 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: h57736b2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 - kind: conda name: xxhash version: 0.8.2 @@ -8209,12 +8929,12 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.0 build: py312h66e93f0_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py312h66e93f0_0.conda - sha256: 4e870938d29f38cd2aa43247efff6f99f6ecd8973735509122cd3167ccc22add - md5: 99518ade67138dcce4f2751b47ab5b00 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda + sha256: 8a1e51303ecac64f10dd0ec548d472c49954c3e2f38023ef28899191580795e1 + md5: 601d2b19a54fd9346ba18c07c2516339 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 @@ -8225,16 +8945,16 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 150022 - timestamp: 1731927117182 + size: 151247 + timestamp: 1732220988648 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.0 build: py312hb2c0f52_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py312hb2c0f52_0.conda - sha256: 77065689cc05daff357fc6e909133b6c058dbbd638c5b89781ed89483d70174f - md5: 96a074a5adcb189ad15a6c474da1d775 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda + sha256: 2ead24d5c50a2edd6348be5888677100b12b98921d1b6fe2f4cd980b0b85ffb2 + md5: 7dbbd950a7f762c2c8ab835932b12001 depends: - idna >=2.0 - libgcc >=13 @@ -8245,16 +8965,16 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 148123 - timestamp: 1731927164492 + size: 149149 + timestamp: 1732221057827 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.0 build: py312hea69d52_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py312hea69d52_0.conda - sha256: 43d85ffae29642b81e1ef4191560a7700911f3753078ab23248b8275952abcec - md5: e3d4600d565bac01340b12d3c4cba2b2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda + sha256: 4c90de12b1569f85126a12dbbb89f3dc10cee5838335b9c9993ead8bf1594cd3 + md5: f538709098e1642d50f4a01707e7dfdb depends: - __osx >=11.0 - idna >=2.0 @@ -8265,8 +8985,8 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 140245 - timestamp: 1731927409723 + size: 141452 + timestamp: 1732221306526 - kind: conda name: zeromq version: 4.3.5 diff --git a/magic.lock b/magic.lock index f0daecd646..b071f10e5d 100644 --- a/magic.lock +++ b/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -26,8 +26,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -53,6 +53,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda @@ -73,12 +74,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -86,6 +89,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda @@ -100,11 +104,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -113,9 +119,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda @@ -123,17 +132,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda @@ -150,15 +160,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda @@ -181,7 +193,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda @@ -201,16 +213,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda @@ -218,7 +232,7 @@ environments: linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -235,8 +249,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -262,6 +276,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda @@ -283,12 +298,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -296,6 +313,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda @@ -310,11 +328,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda @@ -323,9 +343,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda @@ -333,17 +356,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda @@ -360,15 +384,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda @@ -391,7 +417,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda @@ -411,23 +437,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py312h8cbf658_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -444,8 +472,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -471,6 +499,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda @@ -490,11 +519,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -503,6 +534,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda @@ -514,18 +546,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_0.conda @@ -533,17 +570,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda @@ -560,15 +598,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py312he431725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda @@ -590,7 +630,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda @@ -610,16 +650,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda @@ -688,12 +730,12 @@ packages: timestamp: 1727779893392 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.7 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.6-py312h178313f_0.conda - sha256: 100484cdbd0e6840fc969354e78173a0b8dff80ee53947ec0fc8f0c840486934 - md5: 3a62de1af76079acb81fad6936e1f6f8 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda + sha256: e95adfd637644c9a0641bc5fbec04d53b19330568971a24021253e5054f7750e + md5: a1dc198dad91736555c27caa420029b1 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -708,16 +750,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 908313 - timestamp: 1732088522122 + size: 909778 + timestamp: 1732220397535 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.7 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.6-py312h998013c_0.conda - sha256: e6bae4c7ce7ba1f42667b54495296b21c7414ff9c826c73eeaba0bd050d89af3 - md5: e24152bdeb4fc0ab20472d3c27539196 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda + sha256: 6f5fc3177188871418f4112e87b708499f6c9c484e175ad8c3a2e08554143e85 + md5: 6d8e94bda91469c00eb617a9cdb7f622 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -732,16 +774,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 870500 - timestamp: 1732088770426 + size: 870661 + timestamp: 1732220535266 - kind: conda name: aiohttp - version: 3.11.6 + version: 3.11.7 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.6-py312hcc812fe_0.conda - sha256: 009e1ed9676f857c90b6fd28f4cd31b11e13f5ba00fc780766e19b8cfaae7390 - md5: 73b5173b83afa78594434ac2912ec2b6 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda + sha256: 932bdef3892216f6219bb604319a63fe99a0780acf780d4265bcf10f906ade6b + md5: a5210c6947a961dec22d272c4bed586a depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -756,8 +798,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 897593 - timestamp: 1732088604447 + size: 900629 + timestamp: 1732220481990 - kind: conda name: aiosignal version: 1.3.1 @@ -1439,13 +1481,12 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h21d7256_1 - build_number: 1 + version: 0.29.5 + build: h21d7256_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.4-h21d7256_1.conda - sha256: 0de8dc3a6a9aab74049d85d407d204623a638ade4221a428cef4d91d25d41ef5 - md5: 963a310ba64fd6a113eb4f7fcf89f935 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda + sha256: 54a9f37ba03e20b29215a9e301846ee22368bd6efb9e9afce7c6ad3e64426219 + md5: b2468de19999ee8452757f12f15a9b34 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1461,17 +1502,16 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354101 - timestamp: 1731787070984 + size: 354933 + timestamp: 1732136158458 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h6832833_1 - build_number: 1 + version: 0.29.5 + build: h6832833_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.4-h6832833_1.conda - sha256: 9c94db7881035bd1cfb24985668c5c7a693d70ecbf46e4b23c453774400e4437 - md5: 452a0da8c040f2aa825727af66d05b42 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda + sha256: e42172ffef36e2e5793532ab5b8d8c499fe8c4eaf154404501bd3f97a424e701 + md5: 546159ec6849eaf2b632eb79e3ab16f7 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1486,17 +1526,16 @@ packages: - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 237267 - timestamp: 1731787157065 + size: 236424 + timestamp: 1732136497320 - kind: conda name: aws-crt-cpp - version: 0.29.4 - build: h8cc6612_1 - build_number: 1 + version: 0.29.5 + build: h8cc6612_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.4-h8cc6612_1.conda - sha256: 7ff3dcac3578f2946dcc2d1953f20369750efdb228ada2a6f894642677cef4ec - md5: 494aaf00b4413cdf961abfbdeb5c24e9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda + sha256: aac21029314f015d558fc1cb0238b32e3aa1b0473f5ca4f3ef469d0f8c59e026 + md5: e80ca2db9b263c16a44bab78a76165ec depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1511,23 +1550,22 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283847 - timestamp: 1731787045666 + size: 284386 + timestamp: 1732136167312 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h1a02111_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h1a02111_2.conda - sha256: 697d0055c4838f882d029d05baf432fb4d6fbebd92d60edfadeb10fea66f1755 - md5: 109ff9aa7347ca004a3f496a5160cdb9 + build: h775d804_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda + sha256: dae09cbccc5af7282a9b74b424a4d451362fe3b31eb2ccbf571db321f9619c52 + md5: 6e691206e10feb236ca7c0cf985797a8 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1535,45 +1573,46 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2951572 - timestamp: 1731927266611 + size: 2794659 + timestamp: 1732184111138 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h8f08b23_2 - build_number: 2 + build: h8577fd2_3 + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8f08b23_2.conda - sha256: 7b7e17c332d7f382f5f97cefe477cb5e9fae171a00d0c40a78ad6263c64a0af2 - md5: c1111d86333195e42ae29d02d64a545c + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda + sha256: ddd7aaa925ac3d569aa3dc1fe0239fa5c57034a1360683c41d310d6805f0d5bd + md5: 3c789cd7093639a2662b14b87f11b04c depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - libcurl >=8.10.1,<9.0a0 - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2733405 - timestamp: 1731927979855 + size: 2737395 + timestamp: 1732184718613 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: hf48a0a1_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-hf48a0a1_2.conda - sha256: 246d894d4354e1c7bbd1466881e87f3f92396777ebbd8cbebe53efb16ace88c4 - md5: e1cd103f7450254f9513244169ea6a1a + build: hdaa582e_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda + sha256: a6fdba49b87ad3b92c219f60ac31e0d0b4fea7e651efe6d668288e5a0f7a1755 + md5: 0dca4b37cf80312f8ef84b649e6ad3a3 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1581,8 +1620,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2803239 - timestamp: 1731927417845 + size: 2951998 + timestamp: 1732184141 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2360,6 +2399,53 @@ packages: license: Unlicense size: 17357 timestamp: 1726613593584 +- kind: conda + name: freetype + version: 2.12.1 + build: h267a509_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- kind: conda + name: freetype + version: 2.12.1 + build: hadb7bae_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- kind: conda + name: freetype + version: 2.12.1 + build: hf0a5ef3_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 - kind: conda name: frozenlist version: 1.5.0 @@ -2904,6 +2990,53 @@ packages: license_family: MIT size: 1370023 timestamp: 1719463201255 +- kind: conda + name: lcms2 + version: '2.16' + build: h922389a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d + md5: ffdd8267a04c515e7ce69c727b051414 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 296219 + timestamp: 1701647961116 +- kind: conda + name: lcms2 + version: '2.16' + build: ha0e7c42_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 + md5: 66f6c134e76fe13cce8a9ea5814b5dd5 + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 211959 + timestamp: 1701647962657 +- kind: conda + name: lcms2 + version: '2.16' + build: hb7c19ff_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 - kind: conda name: ld_impl_linux-64 version: '2.43' @@ -2936,6 +3069,50 @@ packages: license_family: GPL size: 698245 timestamp: 1729655345825 +- kind: conda + name: lerc + version: 4.0.0 + build: h27087fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- kind: conda + name: lerc + version: 4.0.0 + build: h4de3ea5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- kind: conda + name: lerc + version: 4.0.0 + build: h9a09cb3_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 - kind: conda name: libabseil version: '20240722.0' @@ -2997,30 +3174,31 @@ packages: - kind: conda name: libarrow version: 18.0.0 - build: h2409f62_7_cpu - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-h2409f62_7_cpu.conda - sha256: baf7322466c5849f0ef4c8bab9f394c1448fc7a1d42f74d775b49e20cea8fcf8 - md5: da6e0816fe9639c270cafdec68b411d6 + build: h3d75c4c_8_cpu + build_number: 8 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda + sha256: f40d35816c995d94d78aec26927650d7ee851cdfa86ebb1429cbd27137cc354a + md5: 704b04f2ad7725f31a22ca07d2789f76 depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.8.0,<3.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3030,24 +3208,23 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5455595 - timestamp: 1731789726593 + size: 7977023 + timestamp: 1732207819418 - kind: conda name: libarrow version: 18.0.0 - build: h3b997a5_7_cpu - build_number: 7 + build: h94eee4b_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h3b997a5_7_cpu.conda - sha256: d8e179b123ca9f62b83115091d3936c64d55506fef9c516b90cd3f2bdea304ca - md5: 32897a50e7f68187c4a524c439c0943c + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda + sha256: aeb31e3713767d5e1d2f29bc05ba04e4cbd48fd72edf8ae66867ac5b22b94160 + md5: 8d5436adb1b35ba955c5600806d52dbc depends: - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3073,41 +3250,39 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8714651 - timestamp: 1731789983840 + size: 8712917 + timestamp: 1732208188022 - kind: conda name: libarrow version: 18.0.0 - build: hf19f309_7_cpu - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-hf19f309_7_cpu.conda - sha256: 83334f90a1759d91324c3cfcdcf4157018020f33901d1833ca28e9a912a4f89a - md5: e42e43720b5203a827bbd1ff05182afa + build: hb943b0e_8_cpu + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda + sha256: ec1e48caf98615d4e6cb5bac539d6ddcdff37fd7a722dab599131974b2a97343 + md5: e1b2b2f162540ebea865e908c865bb9c depends: - - aws-crt-cpp >=0.29.4,<0.29.5.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.8.0,<3.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3120,186 +3295,176 @@ packages: - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 7997233 - timestamp: 1731791153311 + size: 5459847 + timestamp: 1732208317959 - kind: conda name: libarrow-acero version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + build: h286801f_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_7_cpu.conda - sha256: 8df47c06ad5b839393aa4703721385d3529a64971227a3a342a1100eeb2fbe78 - md5: 67a94caeec254580852dd71b0cb5bfc7 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda + sha256: b74c5a10cd40e33db50392263cff9aacd6ead0f6d42107e01e92d1e57af1daf1 + md5: 7208462cfc8f9610060695ffab85ab39 depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 491285 - timestamp: 1731789825049 + size: 491510 + timestamp: 1732208453361 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 + build: h5888daf_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_7_cpu.conda - sha256: bc0aa7f6c05c097f224cb2a8f72d22a5cde7ef239fde7a57f18061bf74776cd5 - md5: 786a275d019708cd1c963b12a8fb0c72 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda + sha256: 6a33ef82a569d02b2b4664bdcc4cb6aea624dbf258921ab59afadd655e13953d + md5: 3ac00dbba52c89287214f5e8f0795e7e depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 618726 - timestamp: 1731790016942 + size: 619612 + timestamp: 1732208230617 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 + build: h5ad3122_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_7_cpu.conda - sha256: dda002b70f6ba368057ba9164eabdc0101a979eab329d3269ec4e615c07292c8 - md5: eaec91ad6d3dd2e459744e3116c68553 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda + sha256: e1f98f83cb1c73119c17b97a5b816517df8f9c6565c60b623172b305090efeb0 + md5: 8bdef8781dbf8e3fc894bb295dca036f depends: - - libarrow 18.0.0 hf19f309_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585513 - timestamp: 1731791202130 + size: 586395 + timestamp: 1732207853957 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h286801f_7_cpu - build_number: 7 + build: h286801f_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_7_cpu.conda - sha256: 3d17beb5e336507443f436f21658e0baf6d6dbacc83938a60e7eac20886e5f78 - md5: 75cec89177549b4a87faa6c952fb07a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda + sha256: 7b503c2179880d8d755e4f81e8e058ca869227c1958c172af5ab4c62d637571d + md5: 08b882378a3e10b0be0218e5867638e3 depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow-acero 18.0.0 h286801f_8_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_7_cpu + - libparquet 18.0.0 hda0ea68_8_cpu license: Apache-2.0 - license_family: APACHE - size: 497438 - timestamp: 1731791003104 + size: 498580 + timestamp: 1732209786094 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5888daf_7_cpu - build_number: 7 + build: h5888daf_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_7_cpu.conda - sha256: ecfcea86bf62a498eb59bfa28c8d6e28e842e9c8eeb594d059ef0fdc7064154f - md5: a742b9a0452b55020ccf662721c1ce44 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda + sha256: 3234ede6af0403cc29258aaaca45fe426e00259c154a4c857087cd805e16f7db + md5: 84e996f59d99626426a73bd0977ef7f3 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow-acero 18.0.0 h5888daf_8_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_7_cpu + - libparquet 18.0.0 h6bd9018_8_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 594424 - timestamp: 1731790074886 + size: 594655 + timestamp: 1732208308056 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5ad3122_7_cpu - build_number: 7 + build: h5ad3122_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_7_cpu.conda - sha256: e2c4cbeef3862b9446ab7052c5889c0923b97d77582fd10437744bcf75f24e05 - md5: 1b769328f659c977a4b72235bbcdaf9c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda + sha256: fdc5c1462ea5e7902db750ae8e281122d52f3c6d859a2283a622e3ad74effdc3 + md5: 23742cf206c1283ab6f90b1ba59ba4ed depends: - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow-acero 18.0.0 h5ad3122_8_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_7_cpu + - libparquet 18.0.0 h23a96eb_8_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 567511 - timestamp: 1731791297133 + size: 568515 + timestamp: 1732207917109 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h14ec2bd_7_cpu - build_number: 7 + build: h14ec2bd_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_7_cpu.conda - sha256: f9c63c5ad5629d8891bafc100bc8a8e0844ee73b52189a6dcb59522790d93635 - md5: 3c0517a4c9a67370e9279c3b9bc2ce2b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda + sha256: 87d66d7c8d8941d2251777ce8dba057191071e7abc98e6077171a6f657f25c9a + md5: fcd095fe4ad44d48d3dad252332d412a depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hf19f309_7_cpu - - libarrow-acero 18.0.0 h5ad3122_7_cpu - - libarrow-dataset 18.0.0 h5ad3122_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow-acero 18.0.0 h5ad3122_8_cpu + - libarrow-dataset 18.0.0 h5ad3122_8_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 523066 - timestamp: 1731791341708 + size: 523178 + timestamp: 1732207946621 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h5c8f2c3_7_cpu - build_number: 7 + build: h5c8f2c3_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_7_cpu.conda - sha256: f4e12c8f48449b47ec7642f5cc0705d59e59c608d563e2848ffceec779c7c220 - md5: be76013fa3fdaec2c0c504e6fdfd282d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda + sha256: ceee34b069762aa81521f8aba1cf5f613250f59db7a2e1570865332ad2da8555 + md5: faa0b78b5daac5dab1651c610204401d depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3b997a5_7_cpu - - libarrow-acero 18.0.0 h5888daf_7_cpu - - libarrow-dataset 18.0.0 h5888daf_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow-acero 18.0.0 h5888daf_8_cpu + - libarrow-dataset 18.0.0 h5888daf_8_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 528172 - timestamp: 1731790101854 + size: 527756 + timestamp: 1732208344211 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h6a6e5c5_7_cpu - build_number: 7 + build: h6a6e5c5_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_7_cpu.conda - sha256: 775c202c379c712f3e77d43ce54d3f9a7ef8dd37d3b68911e886b89f5502eeac - md5: 2a3910690b531fdc9553e2889fda97bf + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda + sha256: 1d7ef3812071a036942cc9bc6742b60354aee1e168338bd18a8596bbd696e43c + md5: 7acbdff23cd797bb9ada6a3de2d7502a depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h2409f62_7_cpu - - libarrow-acero 18.0.0 h286801f_7_cpu - - libarrow-dataset 18.0.0 h286801f_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow-acero 18.0.0 h286801f_8_cpu + - libarrow-dataset 18.0.0 h286801f_8_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - license_family: APACHE - size: 459246 - timestamp: 1731791195089 + size: 459728 + timestamp: 1732209986506 - kind: conda name: libblas version: 3.9.0 @@ -3683,6 +3848,49 @@ packages: license_family: Apache size: 520678 timestamp: 1732060258949 +- kind: conda + name: libdeflate + version: '1.22' + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d + md5: ff6a44e8b1707d02be2fe9a36ea88d4a + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 69601 + timestamp: 1728177137503 +- kind: conda + name: libdeflate + version: '1.22' + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 + md5: b422943d5d772b7cc858b36ad2a92db5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 72242 + timestamp: 1728177071251 +- kind: conda + name: libdeflate + version: '1.22' + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda + md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 54089 + timestamp: 1728177149927 - kind: conda name: libedit version: 3.1.20191231 @@ -4357,6 +4565,52 @@ packages: license: LGPL-2.1-only size: 705775 timestamp: 1702682170569 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 - kind: conda name: liblapack version: 3.9.0 @@ -4565,61 +4819,101 @@ packages: - kind: conda name: libparquet version: 18.0.0 - build: h23a96eb_7_cpu - build_number: 7 + build: h23a96eb_8_cpu + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_7_cpu.conda - sha256: 405cd8b36b454aac8d8f3f698feb4c8c4fca99eae9724b9312bac1ce0653ec5d - md5: 010433ece4a8287643b92c348c48068d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda + sha256: 23ac81fee2d87e51e7695d7ab8b4860e7ff466d449f31cf144ba4e64f409d36b + md5: 456a8374b7a9c7a9b4ced6297563d354 depends: - - libarrow 18.0.0 hf19f309_7_cpu + - libarrow 18.0.0 h3d75c4c_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1122091 - timestamp: 1731791274767 + size: 1121714 + timestamp: 1732207900610 - kind: conda name: libparquet version: 18.0.0 - build: h6bd9018_7_cpu - build_number: 7 + build: h6bd9018_8_cpu + build_number: 8 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_7_cpu.conda - sha256: 908e21eab32839375ebe59952e783e40645ca5083b64001679960f2e38e64c31 - md5: 687870f7d9cba5262fdd7e730e9e9ba8 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda + sha256: 3183fa77b6fd965160deb512ac6035c3be2df8af9f6529af20cb2d053d177afd + md5: e2718d24a8af33752dfe0b75e3043b75 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h3b997a5_7_cpu + - libarrow 18.0.0 h94eee4b_8_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1212405 - timestamp: 1731790060397 + size: 1211318 + timestamp: 1732208288781 - kind: conda name: libparquet version: 18.0.0 - build: hda0ea68_7_cpu - build_number: 7 + build: hda0ea68_8_cpu + build_number: 8 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_7_cpu.conda - sha256: 8343a369243b7c87993955e39fbbac3617413f4a963e271fda5079b6c8fec7b0 - md5: fd32f3b3115477411f3790eb67272081 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda + sha256: 4d91a04771b0fcb9830b5db2c67d77ee001790df7ed8c0bd4057564c5483fb00 + md5: 74f66533d553fc03cdb21af7a5d4d84e depends: - __osx >=11.0 - - libarrow 18.0.0 h2409f62_7_cpu + - libarrow 18.0.0 hb943b0e_8_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 881594 - timestamp: 1731790946184 + size: 882388 + timestamp: 1732209712346 +- kind: conda + name: libpng + version: 1.6.44 + build: hadc24fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 + md5: f4cc49d7aa68316213e4b12be35308d1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 290661 + timestamp: 1726234747153 +- kind: conda + name: libpng + version: 1.6.44 + build: hc14010f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 + md5: fb36e93f0ea6a6f5d2b99984f34b049e + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 263385 + timestamp: 1726234714421 +- kind: conda + name: libpng + version: 1.6.44 + build: hc4a20ef_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 + md5: 5d25802b25fcc7419fa13e21affaeb3a + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 294907 + timestamp: 1726236639270 - kind: conda name: libprotobuf version: 5.28.2 @@ -4983,6 +5277,73 @@ packages: license_family: APACHE size: 324342 timestamp: 1727206096912 +- kind: conda + name: libtiff + version: 4.7.0 + build: he137b08_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda + sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 + md5: 63872517c98aa305da58a757c443698e + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 428156 + timestamp: 1728232228989 +- kind: conda + name: libtiff + version: 4.7.0 + build: hec21d91_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d + md5: 1f80061f5ba6956fcdc381f34618cd8d + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 464938 + timestamp: 1728232266969 +- kind: conda + name: libtiff + version: 4.7.0 + build: hfce79cd_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d + md5: b9abf45f7c64caf3303725f1aa0e9a4d + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=17 + - libdeflate >=1.22,<1.23.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 366323 + timestamp: 1728232400072 - kind: conda name: libutf8proc version: 2.8.0 @@ -5094,6 +5455,104 @@ packages: license_family: MIT size: 884647 timestamp: 1729322566955 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d + md5: 5fd7ab3e5f382c70607fbac6335e6e19 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 363577 + timestamp: 1713201785160 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h93a5062_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 + md5: c0af0edfebe780b19940e94871f1a765 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 287750 + timestamp: 1713200194013 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f + md5: b26e8aa824079e1be0294e7152ca4559 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 438953 + timestamp: 1713199854503 +- kind: conda + name: libxcb + version: 1.17.0 + build: h262b8f6_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- kind: conda + name: libxcb + version: 1.17.0 + build: h8a09558_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- kind: conda + name: libxcb + version: 1.17.0 + build: hdb1d25a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 - kind: conda name: libxcrypt version: 4.4.36 @@ -5379,77 +5838,78 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112020-release.conda - sha256: c6e86f0fbbd57d65c245b58c9a39f64301c769c587f75aa550f0a3f64629cbec - md5: f8203ce4409d971e909d91b10bf2fa89 - depends: - - max-core ==24.6.0.dev2024112020 release - - max-python >=24.6.0.dev2024112020,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112020 release - - mblack ==24.6.0.dev2024112020 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda + sha256: 0715c11abe1f1450cc73936026deab86a7096cb1aadad7d495dc47bfb8be9315 + md5: 50a7636c6a54c27163ea5779a50cdf16 + depends: + - max-core ==24.6.0.dev2024112222 release + - max-python >=24.6.0.dev2024112222,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112222 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1732136899196 + size: 9920 + timestamp: 1732316394065 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112020-release.conda - sha256: 540fd3163a864bf60fae9a2afd86f111b54afd76f6dfb59aae9299d8189ea220 - md5: 85cd4cfe4bed145b377b9379319c39fc + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda + sha256: c12d1eab662c3830bcf9e4d83c2a1206b2d59e4aeb41696d3ade0a473e7b0ac4 + md5: 27ab7b56401b8753bbcff421b2491bad depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024112222 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 270965073 - timestamp: 1732136835508 + size: 253776211 + timestamp: 1732316608463 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112020-release.conda - sha256: 4e3e1104c4b2c3f26134bf4b865fef2af26cd33aa453244c59cbc27bf58340d6 - md5: 1b76c22a75e2f55fdd8ec123cdfb82aa + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda + sha256: a7e7dfe34fdf9290b5a25d58f367fd598f5cd91a91100078f39eaed2a860f514 + md5: 4041cb2414b5180d0eeb8f6a2e827cb9 depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024112222 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 274655105 - timestamp: 1732136899194 + size: 257425694 + timestamp: 1732316394063 - kind: conda name: max-core - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112020-release.conda - sha256: ae86df0b9d20d20756d16a0b66e0d2f12427a496e28d639589fba76c8e508cd7 - md5: 582615e4dae591fac5d708eaec594ebc + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda + sha256: 06a5f2bb3a26c54324cdf405661bc7e0e59cf81645173d67de5877c9ae98a7ca + md5: c236958abed33485496448cea677ab10 depends: - - mblack ==24.6.0.dev2024112020 release + - mblack ==24.6.0.dev2024112222 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 233689138 - timestamp: 1732137063646 + size: 219411763 + timestamp: 1732316294908 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: 9211cfb8440bf028cce5ec4554f1377ef2524e5bc2532b26029d5072a01a59b4 - md5: 83c7b6adf2b7567243a2e8682f7f33a2 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.12release.conda + sha256: 0e01163f748b2280e78788e17b864f1c90d038a66d9fcee288ec376277fd906a + md5: 1be57f2415870782d7431315b506be09 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python 3.12.* + - pillow - fastapi - numpy >=1.18,<2.0 - opentelemetry-api @@ -5468,19 +5928,20 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 137376849 - timestamp: 1732136835521 + size: 128151671 + timestamp: 1732316608477 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: 21914b325dbf1015b5cb5fef142789721d64fd5ac2f7c6b15b4192a4bb02ae4d - md5: 8b47d04ff478a6b4a66defe8226da80a + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.12release.conda + sha256: 74ac7174a47e8e289a29b32221cd256710d62ae1375ed3ba96bfe9783db4663b + md5: c53cf6a8d7163e83666921a84e21504a depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python 3.12.* + - pillow - fastapi - numpy >=1.18,<2.0 - opentelemetry-api @@ -5499,19 +5960,20 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 140907571 - timestamp: 1732136899208 + size: 131892006 + timestamp: 1732316394076 - kind: conda name: max-python - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112020-3.12release.conda - sha256: bbbbf91f30719bc4a51bc0317c91b9e1716d024b3721a95b37bd058ca1c66d5e - md5: 4893fb00ccdf17ce31d56617288c15f6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.12release.conda + sha256: 2922cf2ab487ab5d2b7db59fcb0f36e7b54b1be68bdabb115aedbaae32c0092f + md5: a791f8944441b656fed89a0d43f8e81f depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python 3.12.* + - pillow - fastapi - numpy >=1.18,<2.0 - opentelemetry-api @@ -5530,17 +5992,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 125944186 - timestamp: 1732137063649 + size: 118838190 + timestamp: 1732316294911 - kind: conda name: mblack - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112020-release.conda - sha256: d684315cf58ea23860f16a1e305bfc9b8a2c7e39554a6d40d46411a5d6fd50cf - md5: bf7e67dddae76fd3bb6a2f623642b200 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + sha256: 6942bd54f783d7d9329e3ffcbb770000c76e798b81ac51b9232cf2ac3abe21a3 + md5: 5085b5da80d5b821d8837d10c4a8f865 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5550,8 +6012,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130610 - timestamp: 1732136899202 + size: 130603 + timestamp: 1732316394070 - kind: conda name: mdurl version: 0.1.2 @@ -5569,21 +6031,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112020 + version: 24.6.0.dev2024112222 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112020-release.conda - sha256: 65ee90ebd5d6250b6f12d6e78fea39c287b82f14949aba8df0f47c4cbdbc0be0 - md5: 5f30ae7817d94671df319b612c290550 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + sha256: cdf7bb6fa0086a91749642b1e82ddf5edfe076bce9eeaa511ba94e1fdd9a636c + md5: 555556ef35623a7c0298315685b8bcb3 depends: - - max-core ==24.6.0.dev2024112020 release + - max-core ==24.6.0.dev2024112222 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1732136899203 + size: 22949 + timestamp: 1732316394073 - kind: conda name: multidict version: 6.1.0 @@ -5820,6 +6282,59 @@ packages: license_family: BSD size: 7484186 timestamp: 1707225809722 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h0d9d63b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f + md5: fd2898519e839d5ceb778343f39a3176 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 374964 + timestamp: 1709159226478 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h488ebb8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 + md5: 7f2e286780f072ed750df46dc2631138 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 341592 + timestamp: 1709159244431 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h9f1df11_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 + md5: 5029846003f0bc14414b9128a1f7c84b + depends: + - libcxx >=16 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 316603 + timestamp: 1709159627299 - kind: conda name: openssl version: 3.4.0 @@ -6225,6 +6740,80 @@ packages: license_family: MOZILLA size: 41173 timestamp: 1702250135032 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h5ab5af3_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + sha256: 3cf43a5eb1f67f3a5f3ef1ec3a685f8767019cce24dbe46c4b76fee8a54fbacf + md5: 1c4bdfe659cfdedd372685ce2494e97b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41756471 + timestamp: 1729068045876 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h7b63e92_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + sha256: 13a464bea02c0df0199c20ef6bad24a6bc336aaf55bf8d6a133d0fe664463224 + md5: 385f46a4df6f97892503a841121a9acf + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41948418 + timestamp: 1729065846594 +- kind: conda + name: pillow + version: 11.0.0 + build: py312haf37ca6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + sha256: 727b4c3faecdb6f6809cf20c5f32d2df4af34e0d5b9146b7588383bcba7990e8 + md5: dc9b51fbd2b6f7fea9b5123458864dbb + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41737424 + timestamp: 1729065920347 - kind: conda name: platformdirs version: 4.3.6 @@ -6369,6 +6958,52 @@ packages: license_family: BSD size: 447369 timestamp: 1728669902591 +- kind: conda + name: pthread-stubs + version: '0.4' + build: h86ecc28_1002 + build_number: 1002 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hb9d3cd8_1002 + build_number: 1002 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hd74edd7_1002 + build_number: 1002 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 - kind: conda name: pyarrow version: 18.0.0 @@ -6521,30 +7156,31 @@ packages: timestamp: 1711811634025 - kind: conda name: pydantic - version: 2.9.2 - build: pyhd8ed1ab_0 + version: 2.10.1 + build: pyh10f6f8f_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.9.2-pyhd8ed1ab_0.conda - sha256: 1b7b0dc9f6af4da156bf22b0263be70829364a08145c696d3670facff2f6441a - md5: 1eb533bb8eb2199e3fef3e4aa147319f + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + sha256: b1872231d26ee3ded32bd1fe3ee1b3c7d9834ad72bf28aed70e5cd1235341584 + md5: c15343c9dbdb30766a07e5b70e46c7d3 depends: - annotated-types >=0.6.0 - - pydantic-core 2.23.4 - - python >=3.7 + - pydantic-core 2.27.1 + - python >=3.9 - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 300649 - timestamp: 1726601202431 + size: 315991 + timestamp: 1732286519715 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.23.4-py312h12e396e_0.conda - sha256: 365fde689865087b2a9da636f36678bd59617b324ce7a538b4806e90602b20f1 - md5: 0845ab52d4ea209049129a6a91bc74ba + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda + sha256: c89741f4eff395f8de70975f42e1f20591f0e0870929d440af35b13399976b09 + md5: 114030cb28527db2c385f07038e914c8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6554,17 +7190,16 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 1611784 - timestamp: 1726525286507 + size: 1635156 + timestamp: 1732254225040 - kind: conda name: pydantic-core - version: 2.23.4 + version: 2.27.1 build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.23.4-py312h8cbf658_0.conda - sha256: fea8db180722c812c9812605ddc3d410a242f9b1ee798bc3b4a9f1e06897f3eb - md5: 18d60aa79641cec25c57823f1c8ba28d + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda + sha256: 1f59bc1914f77faed3c95217e4d093310771baee4e93a15c0479359559e3fa19 + md5: d980860b8bf193f53d30a19c5d2bf070 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6574,17 +7209,16 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 1479271 - timestamp: 1726525386163 + size: 1503747 + timestamp: 1732254331303 - kind: conda name: pydantic-core - version: 2.23.4 - build: py312he431725_0 + version: 2.27.1 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.23.4-py312he431725_0.conda - sha256: d6edd3d0f9e701c8299519d412ad3dc900c7d893a134f2582203cf43585decca - md5: 3148052477686acc581b20a34b478eeb + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda + sha256: 5bba8de2bbbbdb39390abb1e2aff310e8cfd49646ae5a0e0ea4d6582bd1d52ba + md5: 3847a96eaf24a877b6091150ff9c4955 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6594,9 +7228,8 @@ packages: constrains: - __osx >=11.0 license: MIT - license_family: MIT - size: 1431747 - timestamp: 1726525575527 + size: 1449057 + timestamp: 1732254359451 - kind: conda name: pydantic-settings version: 2.6.1 @@ -7367,19 +8000,19 @@ packages: timestamp: 1725632294079 - kind: conda name: setuptools - version: 75.5.0 + version: 75.6.0 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.5.0-pyhff2d567_0.conda - sha256: 54dcf5f09f74f69641e0063bc695b38340d0349fa8371b1f2ed0c45c5b2fd224 - md5: ade63405adb52eeff89d506cd55908c0 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + sha256: eeec4645f70ce0ed03348397dced9d218a650a42df98592419af61d2689163ed + md5: 68d7d406366926b09a6a023e3d0f71d7 depends: - python >=3.9 license: MIT license_family: MIT - size: 772480 - timestamp: 1731707561164 + size: 774304 + timestamp: 1732216189406 - kind: conda name: shellingham version: 1.5.4 @@ -7842,14 +8475,13 @@ packages: timestamp: 1726496531769 - kind: conda name: uvicorn - version: 0.32.0 - build: pyh31011fe_1 - build_number: 1 + version: 0.32.1 + build: pyh31011fe_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.0-pyh31011fe_1.conda - sha256: bc1dd02dfe8ba9654c7ba4f359af1a36f88fdc8299e57e25394c26075e7f5ff2 - md5: 3936b8ca7212040c07565e1379ced362 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + sha256: a310c494c817a9f6c985fc6d2772acb953a20170d03b0eabfae0e9d8c76c97ee + md5: fa77fc8110207b3bfc5ccc9d316744f4 depends: - __unix - click >=7.0 @@ -7858,31 +8490,30 @@ packages: - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49065 - timestamp: 1730219789315 + size: 49393 + timestamp: 1732185242260 - kind: conda name: uvicorn-standard - version: 0.32.0 - build: h31011fe_1 - build_number: 1 + version: 0.32.1 + build: h31011fe_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.0-h31011fe_1.conda - sha256: 955132d5f09fab2041cb15fe7d85af4526d95b3629b96c90c8191c60001475a5 - md5: ee1094a994894ddd2cdf63174131a589 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + sha256: 52545f7c88a7c779376900de5f9d81ce36738cd8770b543e89592ad7d1003c40 + md5: 49c2820e0f39cb710becd856ff14d683 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.0 pyh31011fe_1 + - uvicorn 0.32.1 pyh31011fe_0 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7119 - timestamp: 1730219790085 + size: 7136 + timestamp: 1732185243035 - kind: conda name: uvloop version: 0.21.0 @@ -8105,6 +8736,95 @@ packages: license_family: BSD size: 62782 timestamp: 1724958067507 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 + md5: c5f72a733c461aa7785518d29b997cc8 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 15690 + timestamp: 1727036097294 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 + md5: 77cbc488235ebbaab2b6e912d3934bae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 14679 + timestamp: 1727034741045 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hd74edd7_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 + md5: 7e0125f8fb619620a0011dc9297e2493 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 13515 + timestamp: 1727034783560 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: h57736b2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 - kind: conda name: xxhash version: 0.8.2 @@ -8227,12 +8947,12 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.0 build: py312h66e93f0_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.17.2-py312h66e93f0_0.conda - sha256: 4e870938d29f38cd2aa43247efff6f99f6ecd8973735509122cd3167ccc22add - md5: 99518ade67138dcce4f2751b47ab5b00 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda + sha256: 8a1e51303ecac64f10dd0ec548d472c49954c3e2f38023ef28899191580795e1 + md5: 601d2b19a54fd9346ba18c07c2516339 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 @@ -8243,16 +8963,16 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 150022 - timestamp: 1731927117182 + size: 151247 + timestamp: 1732220988648 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.0 build: py312hb2c0f52_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.17.2-py312hb2c0f52_0.conda - sha256: 77065689cc05daff357fc6e909133b6c058dbbd638c5b89781ed89483d70174f - md5: 96a074a5adcb189ad15a6c474da1d775 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda + sha256: 2ead24d5c50a2edd6348be5888677100b12b98921d1b6fe2f4cd980b0b85ffb2 + md5: 7dbbd950a7f762c2c8ab835932b12001 depends: - idna >=2.0 - libgcc >=13 @@ -8263,16 +8983,16 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 148123 - timestamp: 1731927164492 + size: 149149 + timestamp: 1732221057827 - kind: conda name: yarl - version: 1.17.2 + version: 1.18.0 build: py312hea69d52_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.17.2-py312hea69d52_0.conda - sha256: 43d85ffae29642b81e1ef4191560a7700911f3753078ab23248b8275952abcec - md5: e3d4600d565bac01340b12d3c4cba2b2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda + sha256: 4c90de12b1569f85126a12dbbb89f3dc10cee5838335b9c9993ead8bf1594cd3 + md5: f538709098e1642d50f4a01707e7dfdb depends: - __osx >=11.0 - idna >=2.0 @@ -8283,8 +9003,8 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 140245 - timestamp: 1731927409723 + size: 141452 + timestamp: 1732221306526 - kind: conda name: zeromq version: 4.3.5 From 67636b1dccd7a86c80a7190eb0f3ff26a2f4c97e Mon Sep 17 00:00:00 2001 From: Rasool Sharifi Date: Fri, 22 Nov 2024 22:28:58 -0800 Subject: [PATCH 013/119] [stdlib] Public title Added test case for fp8 `ldmatrix` MODULAR_ORIG_COMMIT_REV_ID: 372c4c4113a837ec218d689943fdfe08995647c1 --- stdlib/src/utils/numerics.mojo | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/stdlib/src/utils/numerics.mojo b/stdlib/src/utils/numerics.mojo index 05db78d5f5..f9a52a9972 100644 --- a/stdlib/src/utils/numerics.mojo +++ b/stdlib/src/utils/numerics.mojo @@ -1001,7 +1001,9 @@ fn get_accum_type[type: DType]() -> DType: DType.float32 if type is a half-precision float, type otherwise. """ - return DType.float32 if type.is_half_float() else type + return DType.float32 if ( + type.is_half_float() or type in (DType.float8e4m3, DType.float8e5m2) + ) else type # ===----------------------------------------------------------------------=== # From 63c6494a7e1852b191ed7d147c460a7e26328d4f Mon Sep 17 00:00:00 2001 From: modularbot Date: Sun, 24 Nov 2024 01:18:15 +0000 Subject: [PATCH 014/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024112323 --- examples/magic.lock | 258 ++++++++++++++++++-------------- examples/notebooks/magic.lock | 274 +++++++++++++++++++--------------- examples/operators/magic.lock | 258 ++++++++++++++++++-------------- magic.lock | 258 ++++++++++++++++++-------------- 4 files changed, 584 insertions(+), 464 deletions(-) diff --git a/examples/magic.lock b/examples/magic.lock index ff5b22227e..7f1e9afca4 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -115,7 +115,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -338,7 +338,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -554,7 +554,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -3208,6 +3208,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 7977023 timestamp: 1732207819418 - kind: conda @@ -3251,6 +3252,7 @@ packages: - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 8712917 timestamp: 1732208188022 - kind: conda @@ -3292,6 +3294,7 @@ packages: - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 5459847 timestamp: 1732208317959 - kind: conda @@ -3308,6 +3311,7 @@ packages: - libarrow 18.0.0 hb943b0e_8_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 491510 timestamp: 1732208453361 - kind: conda @@ -3325,6 +3329,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 619612 timestamp: 1732208230617 - kind: conda @@ -3341,6 +3346,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 586395 timestamp: 1732207853957 - kind: conda @@ -3359,6 +3365,7 @@ packages: - libcxx >=18 - libparquet 18.0.0 hda0ea68_8_cpu license: Apache-2.0 + license_family: APACHE size: 498580 timestamp: 1732209786094 - kind: conda @@ -3378,6 +3385,7 @@ packages: - libparquet 18.0.0 h6bd9018_8_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 594655 timestamp: 1732208308056 - kind: conda @@ -3396,6 +3404,7 @@ packages: - libparquet 18.0.0 h23a96eb_8_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 568515 timestamp: 1732207917109 - kind: conda @@ -3417,6 +3426,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 523178 timestamp: 1732207946621 - kind: conda @@ -3439,6 +3449,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 527756 timestamp: 1732208344211 - kind: conda @@ -3460,6 +3471,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 459728 timestamp: 1732209986506 - kind: conda @@ -4829,6 +4841,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1121714 timestamp: 1732207900610 - kind: conda @@ -4848,6 +4861,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1211318 timestamp: 1732208288781 - kind: conda @@ -4866,6 +4880,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 882388 timestamp: 1732209712346 - kind: conda @@ -5114,51 +5129,52 @@ packages: timestamp: 1730208187962 - kind: conda name: libssh2 - version: 1.11.0 - build: h0841786_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda - sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d - md5: 1f5a58e686b13bcfde88b93f547d23fe + version: 1.11.1 + build: h9cc3647_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 271133 - timestamp: 1685837707056 + size: 279028 + timestamp: 1732349599461 - kind: conda name: libssh2 - version: 1.11.0 - build: h492db2e_0 + version: 1.11.1 + build: ha41c0db_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda - sha256: 409163dd4a888b9266369f1bce57b5ca56c216e34249637c3e10eb404e356171 - md5: 45532845e121677ad328c9af9953f161 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 284335 - timestamp: 1685837600415 + size: 311577 + timestamp: 1732349396421 - kind: conda name: libssh2 - version: 1.11.0 - build: h7a5bd25_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda - sha256: bb57d0c53289721fff1eeb3103a1c6a988178e88d8a8f4345b0b91a35f0e0015 - md5: 029f7dc931a3b626b94823bc77830b01 + version: 1.11.1 + build: hf672d98_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 depends: - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 255610 - timestamp: 1685837894256 + size: 304278 + timestamp: 1732349402869 - kind: conda name: libstdcxx version: 14.2.0 @@ -5700,6 +5716,7 @@ packages: constrains: - openmp 19.1.4|19.1.4.* license: Apache-2.0 WITH LLVM-exception + license_family: APACHE size: 281554 timestamp: 1732102484807 - kind: conda @@ -5820,76 +5837,76 @@ packages: timestamp: 1729352296161 - kind: conda name: max - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - sha256: 0715c11abe1f1450cc73936026deab86a7096cb1aadad7d495dc47bfb8be9315 - md5: 50a7636c6a54c27163ea5779a50cdf16 - depends: - - max-core ==24.6.0.dev2024112222 release - - max-python >=24.6.0.dev2024112222,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112222 release - - mblack ==24.6.0.dev2024112222 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + sha256: 219c78ed4134180964685c0378acf24c7ae629c4018d6328326a207854b6dfb1 + md5: 9b7deffd846eb9e9f850665d712ec711 + depends: + - max-core ==24.6.0.dev2024112323 release + - max-python >=24.6.0.dev2024112323,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112323 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1732316394065 + size: 9919 + timestamp: 1732406411807 - kind: conda name: max-core - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda - sha256: c12d1eab662c3830bcf9e4d83c2a1206b2d59e4aeb41696d3ade0a473e7b0ac4 - md5: 27ab7b56401b8753bbcff421b2491bad + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda + sha256: 36171d5aed2c16c0183fe2f52c09816216851267f2b054587cd3dc26b7520ad3 + md5: cc06c274f3b0ae3769f03e9cc28921d6 depends: - - mblack ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112323 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253776211 - timestamp: 1732316608463 + size: 253847293 + timestamp: 1732406280435 - kind: conda name: max-core - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda - sha256: a7e7dfe34fdf9290b5a25d58f367fd598f5cd91a91100078f39eaed2a860f514 - md5: 4041cb2414b5180d0eeb8f6a2e827cb9 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda + sha256: 9b40202bf2045e266d8f181194c94751c7c133cb20ad40c6a7d61f48733a9155 + md5: 1f072dc6ed65b69e6d55f679c71288db depends: - - mblack ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112323 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257425694 - timestamp: 1732316394063 + size: 257475790 + timestamp: 1732406411805 - kind: conda name: max-core - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda - sha256: 06a5f2bb3a26c54324cdf405661bc7e0e59cf81645173d67de5877c9ae98a7ca - md5: c236958abed33485496448cea677ab10 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda + sha256: f24bc0752f1dfda4fafb13d0097117f2775a6082746800343609d5a00b7f62e7 + md5: 3d3f801ec48006926c1d5ec7b5575440 depends: - - mblack ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112323 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219411763 - timestamp: 1732316294908 + size: 219443302 + timestamp: 1732406264206 - kind: conda name: max-python - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.11release.conda - sha256: 895bc19b8653a420729e9f23fcc4835e7a33c6c49a3a7f203c4ac8a8a9d7a6e5 - md5: 2addbf5311a700544a5adaad069643f5 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.11release.conda + sha256: fd89ca0c20d0c3c0262c6dab1ee89ecf31e61dbf243ad0d64ff253cfc875c574 + md5: 4a151ad66a5b20391d0e7a42df5b63e9 depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python 3.11.* - pillow - fastapi @@ -5910,18 +5927,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128137516 - timestamp: 1732316608473 + size: 128165257 + timestamp: 1732406280449 - kind: conda name: max-python - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.11release.conda - sha256: 6bcd28fcba81f781ad6e020f8dee81d13c78d5ec1c7991f3f3a6abd41bfb3951 - md5: 16d5a8f991c092675481029b3ca3bb73 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.11release.conda + sha256: 3c0e711d468d7dfc7b3fd1b5deead09c7621d3b3cfb2bc69d1448717915402f4 + md5: 3c9a0d245fd92408a6ceab6205d8990a depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python 3.11.* - pillow - fastapi @@ -5942,18 +5959,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131887748 - timestamp: 1732316394072 + size: 131917666 + timestamp: 1732406411816 - kind: conda name: max-python - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.11release.conda - sha256: 7e689883b88bd3554c7522bdfcf11101d698b56b61fd3932289f0c1aada34d84 - md5: fda716bdbd23e84c90585314e1d75e7f + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.11release.conda + sha256: 9b5f0ed109fc78071c62decbd7b72fd99cffc0ca6384011031bfe9727a644c6f + md5: 62aa1657aafa6c396aa99cb87f61c685 depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python 3.11.* - pillow - fastapi @@ -5974,17 +5991,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118843149 - timestamp: 1732316294910 + size: 118821688 + timestamp: 1732406264209 - kind: conda name: mblack - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - sha256: 6942bd54f783d7d9329e3ffcbb770000c76e798b81ac51b9232cf2ac3abe21a3 - md5: 5085b5da80d5b821d8837d10c4a8f865 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + sha256: 39e8ebbbf4e31cb445bb9b6e872c806613d104117d6f1f11dc46c2c6d883fe6d + md5: 396656af3eff5d308f9bf49f8ff06ebe depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5994,8 +6011,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130603 - timestamp: 1732316394070 + size: 130606 + timestamp: 1732406411814 - kind: conda name: mdurl version: 0.1.2 @@ -6013,21 +6030,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - sha256: cdf7bb6fa0086a91749642b1e82ddf5edfe076bce9eeaa511ba94e1fdd9a636c - md5: 555556ef35623a7c0298315685b8bcb3 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + sha256: c2b188e2396155b798910eaca449966b8f9e07f7262762e17bf673fd556c8607 + md5: 6ff069c857c0986561e4c786d267e5a2 depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22949 - timestamp: 1732316394073 + timestamp: 1732406411814 - kind: conda name: multidict version: 6.1.0 @@ -6378,6 +6395,7 @@ packages: - python >=3.8 - setuptools >=16.0 license: Apache-2.0 + license_family: APACHE size: 44014 timestamp: 1731985724169 - kind: conda @@ -6394,6 +6412,7 @@ packages: - opentelemetry-proto 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 18838 timestamp: 1731991715474 - kind: conda @@ -6415,6 +6434,7 @@ packages: - python >=3.8 - requests ~=2.7 license: Apache-2.0 + license_family: APACHE size: 17007 timestamp: 1732094238214 - kind: conda @@ -6452,6 +6472,7 @@ packages: - setuptools >=16.0 - wrapt <2.0.0,>=1.0.0 license: Apache-2.0 + license_family: APACHE size: 31616 timestamp: 1732070359772 - kind: conda @@ -6471,6 +6492,7 @@ packages: - opentelemetry-util-http 0.49b2 - python >=3.7 license: Apache-2.0 + license_family: APACHE size: 23749 timestamp: 1732086813641 - kind: conda @@ -6490,6 +6512,7 @@ packages: - opentelemetry-util-http 0.49b2 - python >=3.7 license: Apache-2.0 + license_family: APACHE size: 20288 timestamp: 1732093785486 - kind: conda @@ -6505,6 +6528,7 @@ packages: - protobuf <6.0,>=5.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 37108 timestamp: 1731988686996 - kind: conda @@ -6523,6 +6547,7 @@ packages: - typing-extensions >=3.7.4 - typing_extensions >=3.7.4 license: Apache-2.0 + license_family: APACHE size: 78017 timestamp: 1732070451972 - kind: conda @@ -6539,6 +6564,7 @@ packages: - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 81534 timestamp: 1732067304518 - kind: conda @@ -6553,6 +6579,7 @@ packages: depends: - python >=3.8 license: Apache-2.0 + license_family: APACHE size: 19241 timestamp: 1732081026829 - kind: conda @@ -7172,6 +7199,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 1503196 timestamp: 1732254269904 - kind: conda @@ -7191,6 +7219,7 @@ packages: constrains: - __osx >=11.0 license: MIT + license_family: MIT size: 1451573 timestamp: 1732254367639 - kind: conda @@ -7210,6 +7239,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 1632797 timestamp: 1732254154568 - kind: conda diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 7bb4202ca2..ee57b7d832 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -149,7 +149,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda @@ -166,13 +166,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -287,7 +287,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda @@ -443,7 +443,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda @@ -460,13 +460,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -581,7 +581,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda @@ -731,7 +731,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 @@ -745,13 +745,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -867,7 +867,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda @@ -4210,6 +4210,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 7977023 timestamp: 1732207819418 - kind: conda @@ -4253,6 +4254,7 @@ packages: - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 8712917 timestamp: 1732208188022 - kind: conda @@ -4294,6 +4296,7 @@ packages: - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 5459847 timestamp: 1732208317959 - kind: conda @@ -4310,6 +4313,7 @@ packages: - libarrow 18.0.0 hb943b0e_8_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 491510 timestamp: 1732208453361 - kind: conda @@ -4327,6 +4331,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 619612 timestamp: 1732208230617 - kind: conda @@ -4343,6 +4348,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 586395 timestamp: 1732207853957 - kind: conda @@ -4361,6 +4367,7 @@ packages: - libcxx >=18 - libparquet 18.0.0 hda0ea68_8_cpu license: Apache-2.0 + license_family: APACHE size: 498580 timestamp: 1732209786094 - kind: conda @@ -4380,6 +4387,7 @@ packages: - libparquet 18.0.0 h6bd9018_8_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 594655 timestamp: 1732208308056 - kind: conda @@ -4398,6 +4406,7 @@ packages: - libparquet 18.0.0 h23a96eb_8_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 568515 timestamp: 1732207917109 - kind: conda @@ -4419,6 +4428,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 523178 timestamp: 1732207946621 - kind: conda @@ -4441,6 +4451,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 527756 timestamp: 1732208344211 - kind: conda @@ -4462,6 +4473,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 459728 timestamp: 1732209986506 - kind: conda @@ -5831,6 +5843,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1121714 timestamp: 1732207900610 - kind: conda @@ -5850,6 +5863,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1211318 timestamp: 1732208288781 - kind: conda @@ -5868,6 +5882,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 882388 timestamp: 1732209712346 - kind: conda @@ -6116,51 +6131,52 @@ packages: timestamp: 1730208187962 - kind: conda name: libssh2 - version: 1.11.0 - build: h0841786_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda - sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d - md5: 1f5a58e686b13bcfde88b93f547d23fe + version: 1.11.1 + build: h9cc3647_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 271133 - timestamp: 1685837707056 + size: 279028 + timestamp: 1732349599461 - kind: conda name: libssh2 - version: 1.11.0 - build: h492db2e_0 + version: 1.11.1 + build: ha41c0db_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda - sha256: 409163dd4a888b9266369f1bce57b5ca56c216e34249637c3e10eb404e356171 - md5: 45532845e121677ad328c9af9953f161 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 284335 - timestamp: 1685837600415 + size: 311577 + timestamp: 1732349396421 - kind: conda name: libssh2 - version: 1.11.0 - build: h7a5bd25_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda - sha256: bb57d0c53289721fff1eeb3103a1c6a988178e88d8a8f4345b0b91a35f0e0015 - md5: 029f7dc931a3b626b94823bc77830b01 + version: 1.11.1 + build: hf672d98_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 depends: - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 255610 - timestamp: 1685837894256 + size: 304278 + timestamp: 1732349402869 - kind: conda name: libstdcxx version: 14.2.0 @@ -6702,6 +6718,7 @@ packages: constrains: - openmp 19.1.4|19.1.4.* license: Apache-2.0 WITH LLVM-exception + license_family: APACHE size: 281554 timestamp: 1732102484807 - kind: conda @@ -6838,76 +6855,76 @@ packages: timestamp: 1713250613726 - kind: conda name: max - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - sha256: 0715c11abe1f1450cc73936026deab86a7096cb1aadad7d495dc47bfb8be9315 - md5: 50a7636c6a54c27163ea5779a50cdf16 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + sha256: 219c78ed4134180964685c0378acf24c7ae629c4018d6328326a207854b6dfb1 + md5: 9b7deffd846eb9e9f850665d712ec711 depends: - - max-core ==24.6.0.dev2024112222 release - - max-python >=24.6.0.dev2024112222,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112222 release - - mblack ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release + - max-python >=24.6.0.dev2024112323,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112323 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1732316394065 + size: 9919 + timestamp: 1732406411807 - kind: conda name: max-core - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda - sha256: c12d1eab662c3830bcf9e4d83c2a1206b2d59e4aeb41696d3ade0a473e7b0ac4 - md5: 27ab7b56401b8753bbcff421b2491bad + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda + sha256: 36171d5aed2c16c0183fe2f52c09816216851267f2b054587cd3dc26b7520ad3 + md5: cc06c274f3b0ae3769f03e9cc28921d6 depends: - - mblack ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112323 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253776211 - timestamp: 1732316608463 + size: 253847293 + timestamp: 1732406280435 - kind: conda name: max-core - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda - sha256: a7e7dfe34fdf9290b5a25d58f367fd598f5cd91a91100078f39eaed2a860f514 - md5: 4041cb2414b5180d0eeb8f6a2e827cb9 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda + sha256: 9b40202bf2045e266d8f181194c94751c7c133cb20ad40c6a7d61f48733a9155 + md5: 1f072dc6ed65b69e6d55f679c71288db depends: - - mblack ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112323 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257425694 - timestamp: 1732316394063 + size: 257475790 + timestamp: 1732406411805 - kind: conda name: max-core - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda - sha256: 06a5f2bb3a26c54324cdf405661bc7e0e59cf81645173d67de5877c9ae98a7ca - md5: c236958abed33485496448cea677ab10 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda + sha256: f24bc0752f1dfda4fafb13d0097117f2775a6082746800343609d5a00b7f62e7 + md5: 3d3f801ec48006926c1d5ec7b5575440 depends: - - mblack ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112323 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219411763 - timestamp: 1732316294908 + size: 219443302 + timestamp: 1732406264206 - kind: conda name: max-python - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.12release.conda - sha256: 0e01163f748b2280e78788e17b864f1c90d038a66d9fcee288ec376277fd906a - md5: 1be57f2415870782d7431315b506be09 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.12release.conda + sha256: 025746198af5813bd882160a475c52597cd00e21a30cd94376a4226523b60584 + md5: 64309c91fa701838ef868ece88137ef6 depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python 3.12.* - pillow - fastapi @@ -6928,18 +6945,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128151671 - timestamp: 1732316608477 + size: 128119457 + timestamp: 1732406280455 - kind: conda name: max-python - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.12release.conda - sha256: 74ac7174a47e8e289a29b32221cd256710d62ae1375ed3ba96bfe9783db4663b - md5: c53cf6a8d7163e83666921a84e21504a + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.12release.conda + sha256: bf2bad0a241336c7456127b04ac301e000235a5893575507938cdb8e54965133 + md5: 6bf2de92f8e83b07c59a0e9ed1435616 depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python 3.12.* - pillow - fastapi @@ -6960,18 +6977,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131892006 - timestamp: 1732316394076 + size: 131882772 + timestamp: 1732406411819 - kind: conda name: max-python - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.12release.conda - sha256: 2922cf2ab487ab5d2b7db59fcb0f36e7b54b1be68bdabb115aedbaae32c0092f - md5: a791f8944441b656fed89a0d43f8e81f + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.12release.conda + sha256: c5ba9aee7d326b21d1bc5d01f83cf0caf4568ab6b539764c62ecaea1cee10f3f + md5: 5bb5d090479613314538291ff9f0882e depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python 3.12.* - pillow - fastapi @@ -6992,17 +7009,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118838190 - timestamp: 1732316294911 + size: 118813299 + timestamp: 1732406264210 - kind: conda name: mblack - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - sha256: 6942bd54f783d7d9329e3ffcbb770000c76e798b81ac51b9232cf2ac3abe21a3 - md5: 5085b5da80d5b821d8837d10c4a8f865 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + sha256: 39e8ebbbf4e31cb445bb9b6e872c806613d104117d6f1f11dc46c2c6d883fe6d + md5: 396656af3eff5d308f9bf49f8ff06ebe depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7012,8 +7029,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130603 - timestamp: 1732316394070 + size: 130606 + timestamp: 1732406411814 - kind: conda name: mdurl version: 0.1.2 @@ -7046,21 +7063,21 @@ packages: timestamp: 1698947249750 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - sha256: cdf7bb6fa0086a91749642b1e82ddf5edfe076bce9eeaa511ba94e1fdd9a636c - md5: 555556ef35623a7c0298315685b8bcb3 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + sha256: c2b188e2396155b798910eaca449966b8f9e07f7262762e17bf673fd556c8607 + md5: 6ff069c857c0986561e4c786d267e5a2 depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22949 - timestamp: 1732316394073 + timestamp: 1732406411814 - kind: conda name: multidict version: 6.1.0 @@ -7515,6 +7532,7 @@ packages: - python >=3.8 - setuptools >=16.0 license: Apache-2.0 + license_family: APACHE size: 44014 timestamp: 1731985724169 - kind: conda @@ -7531,6 +7549,7 @@ packages: - opentelemetry-proto 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 18838 timestamp: 1731991715474 - kind: conda @@ -7552,6 +7571,7 @@ packages: - python >=3.8 - requests ~=2.7 license: Apache-2.0 + license_family: APACHE size: 17007 timestamp: 1732094238214 - kind: conda @@ -7589,6 +7609,7 @@ packages: - setuptools >=16.0 - wrapt <2.0.0,>=1.0.0 license: Apache-2.0 + license_family: APACHE size: 31616 timestamp: 1732070359772 - kind: conda @@ -7608,6 +7629,7 @@ packages: - opentelemetry-util-http 0.49b2 - python >=3.7 license: Apache-2.0 + license_family: APACHE size: 23749 timestamp: 1732086813641 - kind: conda @@ -7627,6 +7649,7 @@ packages: - opentelemetry-util-http 0.49b2 - python >=3.7 license: Apache-2.0 + license_family: APACHE size: 20288 timestamp: 1732093785486 - kind: conda @@ -7642,6 +7665,7 @@ packages: - protobuf <6.0,>=5.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 37108 timestamp: 1731988686996 - kind: conda @@ -7660,6 +7684,7 @@ packages: - typing-extensions >=3.7.4 - typing_extensions >=3.7.4 license: Apache-2.0 + license_family: APACHE size: 78017 timestamp: 1732070451972 - kind: conda @@ -7676,6 +7701,7 @@ packages: - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 81534 timestamp: 1732067304518 - kind: conda @@ -7690,6 +7716,7 @@ packages: depends: - python >=3.8 license: Apache-2.0 + license_family: APACHE size: 19241 timestamp: 1732081026829 - kind: conda @@ -8512,6 +8539,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 1635156 timestamp: 1732254225040 - kind: conda @@ -8531,6 +8559,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 1503747 timestamp: 1732254331303 - kind: conda @@ -8550,6 +8579,7 @@ packages: constrains: - __osx >=11.0 license: MIT + license_family: MIT size: 1449057 timestamp: 1732254359451 - kind: conda @@ -10404,19 +10434,19 @@ packages: timestamp: 1731498944076 - kind: conda name: wheel - version: 0.45.0 + version: 0.45.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.0-pyhd8ed1ab_0.conda - sha256: 8a51067f8e1a2cb0b5e89672dbcc0369e344a92e869c38b2946584aa09ab7088 - md5: f9751d7c71df27b2d29f5cab3378982e + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda + sha256: 24f6851a336a50c53d6b50b142c1654872494a62528d57c3ff40240cbd8b13be + md5: bdb2f437ce62fd2f1fef9119a37a12d9 depends: - python >=3.8 license: MIT license_family: MIT - size: 62755 - timestamp: 1731120002488 + size: 62998 + timestamp: 1732339880578 - kind: conda name: wrapt version: 1.16.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 9e0e6b580d..760ab41fb9 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -115,7 +115,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -338,7 +338,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -554,7 +554,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -3208,6 +3208,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 7977023 timestamp: 1732207819418 - kind: conda @@ -3251,6 +3252,7 @@ packages: - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 8712917 timestamp: 1732208188022 - kind: conda @@ -3292,6 +3294,7 @@ packages: - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 5459847 timestamp: 1732208317959 - kind: conda @@ -3308,6 +3311,7 @@ packages: - libarrow 18.0.0 hb943b0e_8_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 491510 timestamp: 1732208453361 - kind: conda @@ -3325,6 +3329,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 619612 timestamp: 1732208230617 - kind: conda @@ -3341,6 +3346,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 586395 timestamp: 1732207853957 - kind: conda @@ -3359,6 +3365,7 @@ packages: - libcxx >=18 - libparquet 18.0.0 hda0ea68_8_cpu license: Apache-2.0 + license_family: APACHE size: 498580 timestamp: 1732209786094 - kind: conda @@ -3378,6 +3385,7 @@ packages: - libparquet 18.0.0 h6bd9018_8_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 594655 timestamp: 1732208308056 - kind: conda @@ -3396,6 +3404,7 @@ packages: - libparquet 18.0.0 h23a96eb_8_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 568515 timestamp: 1732207917109 - kind: conda @@ -3417,6 +3426,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 523178 timestamp: 1732207946621 - kind: conda @@ -3439,6 +3449,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 527756 timestamp: 1732208344211 - kind: conda @@ -3460,6 +3471,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 459728 timestamp: 1732209986506 - kind: conda @@ -4829,6 +4841,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1121714 timestamp: 1732207900610 - kind: conda @@ -4848,6 +4861,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1211318 timestamp: 1732208288781 - kind: conda @@ -4866,6 +4880,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 882388 timestamp: 1732209712346 - kind: conda @@ -5114,51 +5129,52 @@ packages: timestamp: 1730208187962 - kind: conda name: libssh2 - version: 1.11.0 - build: h0841786_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda - sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d - md5: 1f5a58e686b13bcfde88b93f547d23fe + version: 1.11.1 + build: h9cc3647_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 271133 - timestamp: 1685837707056 + size: 279028 + timestamp: 1732349599461 - kind: conda name: libssh2 - version: 1.11.0 - build: h492db2e_0 + version: 1.11.1 + build: ha41c0db_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda - sha256: 409163dd4a888b9266369f1bce57b5ca56c216e34249637c3e10eb404e356171 - md5: 45532845e121677ad328c9af9953f161 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 284335 - timestamp: 1685837600415 + size: 311577 + timestamp: 1732349396421 - kind: conda name: libssh2 - version: 1.11.0 - build: h7a5bd25_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda - sha256: bb57d0c53289721fff1eeb3103a1c6a988178e88d8a8f4345b0b91a35f0e0015 - md5: 029f7dc931a3b626b94823bc77830b01 + version: 1.11.1 + build: hf672d98_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 depends: - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 255610 - timestamp: 1685837894256 + size: 304278 + timestamp: 1732349402869 - kind: conda name: libstdcxx version: 14.2.0 @@ -5700,6 +5716,7 @@ packages: constrains: - openmp 19.1.4|19.1.4.* license: Apache-2.0 WITH LLVM-exception + license_family: APACHE size: 281554 timestamp: 1732102484807 - kind: conda @@ -5820,76 +5837,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - sha256: 0715c11abe1f1450cc73936026deab86a7096cb1aadad7d495dc47bfb8be9315 - md5: 50a7636c6a54c27163ea5779a50cdf16 - depends: - - max-core ==24.6.0.dev2024112222 release - - max-python >=24.6.0.dev2024112222,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112222 release - - mblack ==24.6.0.dev2024112222 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + sha256: 219c78ed4134180964685c0378acf24c7ae629c4018d6328326a207854b6dfb1 + md5: 9b7deffd846eb9e9f850665d712ec711 + depends: + - max-core ==24.6.0.dev2024112323 release + - max-python >=24.6.0.dev2024112323,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112323 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1732316394065 + size: 9919 + timestamp: 1732406411807 - kind: conda name: max-core - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda - sha256: c12d1eab662c3830bcf9e4d83c2a1206b2d59e4aeb41696d3ade0a473e7b0ac4 - md5: 27ab7b56401b8753bbcff421b2491bad + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda + sha256: 36171d5aed2c16c0183fe2f52c09816216851267f2b054587cd3dc26b7520ad3 + md5: cc06c274f3b0ae3769f03e9cc28921d6 depends: - - mblack ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112323 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253776211 - timestamp: 1732316608463 + size: 253847293 + timestamp: 1732406280435 - kind: conda name: max-core - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda - sha256: a7e7dfe34fdf9290b5a25d58f367fd598f5cd91a91100078f39eaed2a860f514 - md5: 4041cb2414b5180d0eeb8f6a2e827cb9 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda + sha256: 9b40202bf2045e266d8f181194c94751c7c133cb20ad40c6a7d61f48733a9155 + md5: 1f072dc6ed65b69e6d55f679c71288db depends: - - mblack ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112323 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257425694 - timestamp: 1732316394063 + size: 257475790 + timestamp: 1732406411805 - kind: conda name: max-core - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda - sha256: 06a5f2bb3a26c54324cdf405661bc7e0e59cf81645173d67de5877c9ae98a7ca - md5: c236958abed33485496448cea677ab10 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda + sha256: f24bc0752f1dfda4fafb13d0097117f2775a6082746800343609d5a00b7f62e7 + md5: 3d3f801ec48006926c1d5ec7b5575440 depends: - - mblack ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112323 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219411763 - timestamp: 1732316294908 + size: 219443302 + timestamp: 1732406264206 - kind: conda name: max-python - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.12release.conda - sha256: 0e01163f748b2280e78788e17b864f1c90d038a66d9fcee288ec376277fd906a - md5: 1be57f2415870782d7431315b506be09 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.12release.conda + sha256: 025746198af5813bd882160a475c52597cd00e21a30cd94376a4226523b60584 + md5: 64309c91fa701838ef868ece88137ef6 depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python 3.12.* - pillow - fastapi @@ -5910,18 +5927,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128151671 - timestamp: 1732316608477 + size: 128119457 + timestamp: 1732406280455 - kind: conda name: max-python - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.12release.conda - sha256: 74ac7174a47e8e289a29b32221cd256710d62ae1375ed3ba96bfe9783db4663b - md5: c53cf6a8d7163e83666921a84e21504a + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.12release.conda + sha256: bf2bad0a241336c7456127b04ac301e000235a5893575507938cdb8e54965133 + md5: 6bf2de92f8e83b07c59a0e9ed1435616 depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python 3.12.* - pillow - fastapi @@ -5942,18 +5959,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131892006 - timestamp: 1732316394076 + size: 131882772 + timestamp: 1732406411819 - kind: conda name: max-python - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.12release.conda - sha256: 2922cf2ab487ab5d2b7db59fcb0f36e7b54b1be68bdabb115aedbaae32c0092f - md5: a791f8944441b656fed89a0d43f8e81f + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.12release.conda + sha256: c5ba9aee7d326b21d1bc5d01f83cf0caf4568ab6b539764c62ecaea1cee10f3f + md5: 5bb5d090479613314538291ff9f0882e depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python 3.12.* - pillow - fastapi @@ -5974,17 +5991,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118838190 - timestamp: 1732316294911 + size: 118813299 + timestamp: 1732406264210 - kind: conda name: mblack - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - sha256: 6942bd54f783d7d9329e3ffcbb770000c76e798b81ac51b9232cf2ac3abe21a3 - md5: 5085b5da80d5b821d8837d10c4a8f865 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + sha256: 39e8ebbbf4e31cb445bb9b6e872c806613d104117d6f1f11dc46c2c6d883fe6d + md5: 396656af3eff5d308f9bf49f8ff06ebe depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5994,8 +6011,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130603 - timestamp: 1732316394070 + size: 130606 + timestamp: 1732406411814 - kind: conda name: mdurl version: 0.1.2 @@ -6013,21 +6030,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - sha256: cdf7bb6fa0086a91749642b1e82ddf5edfe076bce9eeaa511ba94e1fdd9a636c - md5: 555556ef35623a7c0298315685b8bcb3 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + sha256: c2b188e2396155b798910eaca449966b8f9e07f7262762e17bf673fd556c8607 + md5: 6ff069c857c0986561e4c786d267e5a2 depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22949 - timestamp: 1732316394073 + timestamp: 1732406411814 - kind: conda name: multidict version: 6.1.0 @@ -6378,6 +6395,7 @@ packages: - python >=3.8 - setuptools >=16.0 license: Apache-2.0 + license_family: APACHE size: 44014 timestamp: 1731985724169 - kind: conda @@ -6394,6 +6412,7 @@ packages: - opentelemetry-proto 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 18838 timestamp: 1731991715474 - kind: conda @@ -6415,6 +6434,7 @@ packages: - python >=3.8 - requests ~=2.7 license: Apache-2.0 + license_family: APACHE size: 17007 timestamp: 1732094238214 - kind: conda @@ -6452,6 +6472,7 @@ packages: - setuptools >=16.0 - wrapt <2.0.0,>=1.0.0 license: Apache-2.0 + license_family: APACHE size: 31616 timestamp: 1732070359772 - kind: conda @@ -6471,6 +6492,7 @@ packages: - opentelemetry-util-http 0.49b2 - python >=3.7 license: Apache-2.0 + license_family: APACHE size: 23749 timestamp: 1732086813641 - kind: conda @@ -6490,6 +6512,7 @@ packages: - opentelemetry-util-http 0.49b2 - python >=3.7 license: Apache-2.0 + license_family: APACHE size: 20288 timestamp: 1732093785486 - kind: conda @@ -6505,6 +6528,7 @@ packages: - protobuf <6.0,>=5.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 37108 timestamp: 1731988686996 - kind: conda @@ -6523,6 +6547,7 @@ packages: - typing-extensions >=3.7.4 - typing_extensions >=3.7.4 license: Apache-2.0 + license_family: APACHE size: 78017 timestamp: 1732070451972 - kind: conda @@ -6539,6 +6564,7 @@ packages: - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 81534 timestamp: 1732067304518 - kind: conda @@ -6553,6 +6579,7 @@ packages: depends: - python >=3.8 license: Apache-2.0 + license_family: APACHE size: 19241 timestamp: 1732081026829 - kind: conda @@ -7172,6 +7199,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 1635156 timestamp: 1732254225040 - kind: conda @@ -7191,6 +7219,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 1503747 timestamp: 1732254331303 - kind: conda @@ -7210,6 +7239,7 @@ packages: constrains: - __osx >=11.0 license: MIT + license_family: MIT size: 1449057 timestamp: 1732254359451 - kind: conda diff --git a/magic.lock b/magic.lock index b071f10e5d..b7fd7df7ec 100644 --- a/magic.lock +++ b/magic.lock @@ -115,7 +115,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda @@ -132,12 +132,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -339,7 +339,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda @@ -356,12 +356,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -556,7 +556,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 @@ -570,12 +570,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -3211,6 +3211,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 7977023 timestamp: 1732207819418 - kind: conda @@ -3254,6 +3255,7 @@ packages: - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 8712917 timestamp: 1732208188022 - kind: conda @@ -3295,6 +3297,7 @@ packages: - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 5459847 timestamp: 1732208317959 - kind: conda @@ -3311,6 +3314,7 @@ packages: - libarrow 18.0.0 hb943b0e_8_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 491510 timestamp: 1732208453361 - kind: conda @@ -3328,6 +3332,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 619612 timestamp: 1732208230617 - kind: conda @@ -3344,6 +3349,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 586395 timestamp: 1732207853957 - kind: conda @@ -3362,6 +3368,7 @@ packages: - libcxx >=18 - libparquet 18.0.0 hda0ea68_8_cpu license: Apache-2.0 + license_family: APACHE size: 498580 timestamp: 1732209786094 - kind: conda @@ -3381,6 +3388,7 @@ packages: - libparquet 18.0.0 h6bd9018_8_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 594655 timestamp: 1732208308056 - kind: conda @@ -3399,6 +3407,7 @@ packages: - libparquet 18.0.0 h23a96eb_8_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 568515 timestamp: 1732207917109 - kind: conda @@ -3420,6 +3429,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 523178 timestamp: 1732207946621 - kind: conda @@ -3442,6 +3452,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 527756 timestamp: 1732208344211 - kind: conda @@ -3463,6 +3474,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 459728 timestamp: 1732209986506 - kind: conda @@ -4832,6 +4844,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1121714 timestamp: 1732207900610 - kind: conda @@ -4851,6 +4864,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1211318 timestamp: 1732208288781 - kind: conda @@ -4869,6 +4883,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 882388 timestamp: 1732209712346 - kind: conda @@ -5117,51 +5132,52 @@ packages: timestamp: 1730208187962 - kind: conda name: libssh2 - version: 1.11.0 - build: h0841786_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda - sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d - md5: 1f5a58e686b13bcfde88b93f547d23fe + version: 1.11.1 + build: h9cc3647_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 271133 - timestamp: 1685837707056 + size: 279028 + timestamp: 1732349599461 - kind: conda name: libssh2 - version: 1.11.0 - build: h492db2e_0 + version: 1.11.1 + build: ha41c0db_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.0-h492db2e_0.conda - sha256: 409163dd4a888b9266369f1bce57b5ca56c216e34249637c3e10eb404e356171 - md5: 45532845e121677ad328c9af9953f161 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 284335 - timestamp: 1685837600415 + size: 311577 + timestamp: 1732349396421 - kind: conda name: libssh2 - version: 1.11.0 - build: h7a5bd25_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.0-h7a5bd25_0.conda - sha256: bb57d0c53289721fff1eeb3103a1c6a988178e88d8a8f4345b0b91a35f0e0015 - md5: 029f7dc931a3b626b94823bc77830b01 + version: 1.11.1 + build: hf672d98_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 depends: - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.1,<4.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 255610 - timestamp: 1685837894256 + size: 304278 + timestamp: 1732349402869 - kind: conda name: libstdcxx version: 14.2.0 @@ -5718,6 +5734,7 @@ packages: constrains: - openmp 19.1.4|19.1.4.* license: Apache-2.0 WITH LLVM-exception + license_family: APACHE size: 281554 timestamp: 1732102484807 - kind: conda @@ -5838,76 +5855,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112222-release.conda - sha256: 0715c11abe1f1450cc73936026deab86a7096cb1aadad7d495dc47bfb8be9315 - md5: 50a7636c6a54c27163ea5779a50cdf16 - depends: - - max-core ==24.6.0.dev2024112222 release - - max-python >=24.6.0.dev2024112222,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112222 release - - mblack ==24.6.0.dev2024112222 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda + sha256: 219c78ed4134180964685c0378acf24c7ae629c4018d6328326a207854b6dfb1 + md5: 9b7deffd846eb9e9f850665d712ec711 + depends: + - max-core ==24.6.0.dev2024112323 release + - max-python >=24.6.0.dev2024112323,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112323 release license: LicenseRef-Modular-Proprietary - size: 9920 - timestamp: 1732316394065 + size: 9919 + timestamp: 1732406411807 - kind: conda name: max-core - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112222-release.conda - sha256: c12d1eab662c3830bcf9e4d83c2a1206b2d59e4aeb41696d3ade0a473e7b0ac4 - md5: 27ab7b56401b8753bbcff421b2491bad + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda + sha256: 36171d5aed2c16c0183fe2f52c09816216851267f2b054587cd3dc26b7520ad3 + md5: cc06c274f3b0ae3769f03e9cc28921d6 depends: - - mblack ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112323 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253776211 - timestamp: 1732316608463 + size: 253847293 + timestamp: 1732406280435 - kind: conda name: max-core - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112222-release.conda - sha256: a7e7dfe34fdf9290b5a25d58f367fd598f5cd91a91100078f39eaed2a860f514 - md5: 4041cb2414b5180d0eeb8f6a2e827cb9 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda + sha256: 9b40202bf2045e266d8f181194c94751c7c133cb20ad40c6a7d61f48733a9155 + md5: 1f072dc6ed65b69e6d55f679c71288db depends: - - mblack ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112323 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257425694 - timestamp: 1732316394063 + size: 257475790 + timestamp: 1732406411805 - kind: conda name: max-core - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112222-release.conda - sha256: 06a5f2bb3a26c54324cdf405661bc7e0e59cf81645173d67de5877c9ae98a7ca - md5: c236958abed33485496448cea677ab10 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda + sha256: f24bc0752f1dfda4fafb13d0097117f2775a6082746800343609d5a00b7f62e7 + md5: 3d3f801ec48006926c1d5ec7b5575440 depends: - - mblack ==24.6.0.dev2024112222 release + - mblack ==24.6.0.dev2024112323 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219411763 - timestamp: 1732316294908 + size: 219443302 + timestamp: 1732406264206 - kind: conda name: max-python - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112222-3.12release.conda - sha256: 0e01163f748b2280e78788e17b864f1c90d038a66d9fcee288ec376277fd906a - md5: 1be57f2415870782d7431315b506be09 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.12release.conda + sha256: 025746198af5813bd882160a475c52597cd00e21a30cd94376a4226523b60584 + md5: 64309c91fa701838ef868ece88137ef6 depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python 3.12.* - pillow - fastapi @@ -5928,18 +5945,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128151671 - timestamp: 1732316608477 + size: 128119457 + timestamp: 1732406280455 - kind: conda name: max-python - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112222-3.12release.conda - sha256: 74ac7174a47e8e289a29b32221cd256710d62ae1375ed3ba96bfe9783db4663b - md5: c53cf6a8d7163e83666921a84e21504a + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.12release.conda + sha256: bf2bad0a241336c7456127b04ac301e000235a5893575507938cdb8e54965133 + md5: 6bf2de92f8e83b07c59a0e9ed1435616 depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python 3.12.* - pillow - fastapi @@ -5960,18 +5977,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131892006 - timestamp: 1732316394076 + size: 131882772 + timestamp: 1732406411819 - kind: conda name: max-python - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112222-3.12release.conda - sha256: 2922cf2ab487ab5d2b7db59fcb0f36e7b54b1be68bdabb115aedbaae32c0092f - md5: a791f8944441b656fed89a0d43f8e81f + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.12release.conda + sha256: c5ba9aee7d326b21d1bc5d01f83cf0caf4568ab6b539764c62ecaea1cee10f3f + md5: 5bb5d090479613314538291ff9f0882e depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python 3.12.* - pillow - fastapi @@ -5992,17 +6009,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118838190 - timestamp: 1732316294911 + size: 118813299 + timestamp: 1732406264210 - kind: conda name: mblack - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112222-release.conda - sha256: 6942bd54f783d7d9329e3ffcbb770000c76e798b81ac51b9232cf2ac3abe21a3 - md5: 5085b5da80d5b821d8837d10c4a8f865 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + sha256: 39e8ebbbf4e31cb445bb9b6e872c806613d104117d6f1f11dc46c2c6d883fe6d + md5: 396656af3eff5d308f9bf49f8ff06ebe depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6012,8 +6029,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130603 - timestamp: 1732316394070 + size: 130606 + timestamp: 1732406411814 - kind: conda name: mdurl version: 0.1.2 @@ -6031,21 +6048,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112222 + version: 24.6.0.dev2024112323 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112222-release.conda - sha256: cdf7bb6fa0086a91749642b1e82ddf5edfe076bce9eeaa511ba94e1fdd9a636c - md5: 555556ef35623a7c0298315685b8bcb3 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + sha256: c2b188e2396155b798910eaca449966b8f9e07f7262762e17bf673fd556c8607 + md5: 6ff069c857c0986561e4c786d267e5a2 depends: - - max-core ==24.6.0.dev2024112222 release + - max-core ==24.6.0.dev2024112323 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22949 - timestamp: 1732316394073 + timestamp: 1732406411814 - kind: conda name: multidict version: 6.1.0 @@ -6396,6 +6413,7 @@ packages: - python >=3.8 - setuptools >=16.0 license: Apache-2.0 + license_family: APACHE size: 44014 timestamp: 1731985724169 - kind: conda @@ -6412,6 +6430,7 @@ packages: - opentelemetry-proto 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 18838 timestamp: 1731991715474 - kind: conda @@ -6433,6 +6452,7 @@ packages: - python >=3.8 - requests ~=2.7 license: Apache-2.0 + license_family: APACHE size: 17007 timestamp: 1732094238214 - kind: conda @@ -6470,6 +6490,7 @@ packages: - setuptools >=16.0 - wrapt <2.0.0,>=1.0.0 license: Apache-2.0 + license_family: APACHE size: 31616 timestamp: 1732070359772 - kind: conda @@ -6489,6 +6510,7 @@ packages: - opentelemetry-util-http 0.49b2 - python >=3.7 license: Apache-2.0 + license_family: APACHE size: 23749 timestamp: 1732086813641 - kind: conda @@ -6508,6 +6530,7 @@ packages: - opentelemetry-util-http 0.49b2 - python >=3.7 license: Apache-2.0 + license_family: APACHE size: 20288 timestamp: 1732093785486 - kind: conda @@ -6523,6 +6546,7 @@ packages: - protobuf <6.0,>=5.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 37108 timestamp: 1731988686996 - kind: conda @@ -6541,6 +6565,7 @@ packages: - typing-extensions >=3.7.4 - typing_extensions >=3.7.4 license: Apache-2.0 + license_family: APACHE size: 78017 timestamp: 1732070451972 - kind: conda @@ -6557,6 +6582,7 @@ packages: - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 81534 timestamp: 1732067304518 - kind: conda @@ -6571,6 +6597,7 @@ packages: depends: - python >=3.8 license: Apache-2.0 + license_family: APACHE size: 19241 timestamp: 1732081026829 - kind: conda @@ -7190,6 +7217,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 1635156 timestamp: 1732254225040 - kind: conda @@ -7209,6 +7237,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 1503747 timestamp: 1732254331303 - kind: conda @@ -7228,6 +7257,7 @@ packages: constrains: - __osx >=11.0 license: MIT + license_family: MIT size: 1449057 timestamp: 1732254359451 - kind: conda From d7081818d87ac389aa0c1952bb3f30ed2b354242 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sun, 24 Nov 2024 07:20:01 +0000 Subject: [PATCH 015/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024112405 --- examples/magic.lock | 162 +++++++++++++++++----------------- examples/notebooks/magic.lock | 160 ++++++++++++++++----------------- examples/operators/magic.lock | 162 +++++++++++++++++----------------- magic.lock | 162 +++++++++++++++++----------------- 4 files changed, 323 insertions(+), 323 deletions(-) diff --git a/examples/magic.lock b/examples/magic.lock index 7f1e9afca4..b8433b911f 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -5837,76 +5837,76 @@ packages: timestamp: 1729352296161 - kind: conda name: max - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - sha256: 219c78ed4134180964685c0378acf24c7ae629c4018d6328326a207854b6dfb1 - md5: 9b7deffd846eb9e9f850665d712ec711 - depends: - - max-core ==24.6.0.dev2024112323 release - - max-python >=24.6.0.dev2024112323,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112323 release - - mblack ==24.6.0.dev2024112323 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + sha256: 0c51c894f4c18c5d94ff1cbee4693b276a80b3a3fc47d19579db937775dc2b33 + md5: 56c2797c044fef1819e2238ecb529a9e + depends: + - max-core ==24.6.0.dev2024112405 release + - max-python >=24.6.0.dev2024112405,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112405 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1732406411807 + size: 9929 + timestamp: 1732425690564 - kind: conda name: max-core - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda - sha256: 36171d5aed2c16c0183fe2f52c09816216851267f2b054587cd3dc26b7520ad3 - md5: cc06c274f3b0ae3769f03e9cc28921d6 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda + sha256: 1d9baa3080a2553b3ee2da24f958f4a0dc50aaaf783869ab9d37ebe6161465b3 + md5: e9ef668ea8823978e2dd96f387bfe118 depends: - - mblack ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112405 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253847293 - timestamp: 1732406280435 + size: 253847269 + timestamp: 1732425902635 - kind: conda name: max-core - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda - sha256: 9b40202bf2045e266d8f181194c94751c7c133cb20ad40c6a7d61f48733a9155 - md5: 1f072dc6ed65b69e6d55f679c71288db + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda + sha256: 9d38562330f9e238eaf752b5469eae24e31a43b2a82d7970930ec0444d48efea + md5: 2703ae29a9de31839ccd0ff988b31cb7 depends: - - mblack ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112405 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257475790 - timestamp: 1732406411805 + size: 257476425 + timestamp: 1732425690562 - kind: conda name: max-core - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda - sha256: f24bc0752f1dfda4fafb13d0097117f2775a6082746800343609d5a00b7f62e7 - md5: 3d3f801ec48006926c1d5ec7b5575440 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda + sha256: c90c2628c27fe9248611e8ce01aab12ab41a481ec9b6200a8f0ddab17b8959f0 + md5: 86cdc30e3294f7272eed2df1bb2ead86 depends: - - mblack ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112405 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219443302 - timestamp: 1732406264206 + size: 219446659 + timestamp: 1732425673927 - kind: conda name: max-python - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.11release.conda - sha256: fd89ca0c20d0c3c0262c6dab1ee89ecf31e61dbf243ad0d64ff253cfc875c574 - md5: 4a151ad66a5b20391d0e7a42df5b63e9 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.11release.conda + sha256: b68032e43b4279976baf7979c370b3934a46f46a69233ab9ccd1e74271a0b15c + md5: f898754bae63bd70554a8f96a33dcf82 depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python 3.11.* - pillow - fastapi @@ -5927,18 +5927,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128165257 - timestamp: 1732406280449 + size: 128164652 + timestamp: 1732425902645 - kind: conda name: max-python - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.11release.conda - sha256: 3c0e711d468d7dfc7b3fd1b5deead09c7621d3b3cfb2bc69d1448717915402f4 - md5: 3c9a0d245fd92408a6ceab6205d8990a + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.11release.conda + sha256: a1109568f0e7727f1c26fae69f2b1658859df59d28eca518af30ff9f51f98cf3 + md5: 86b59dcaba65255a68af84d0d5850fb4 depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python 3.11.* - pillow - fastapi @@ -5959,18 +5959,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131917666 - timestamp: 1732406411816 + size: 131918017 + timestamp: 1732425690572 - kind: conda name: max-python - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.11release.conda - sha256: 9b5f0ed109fc78071c62decbd7b72fd99cffc0ca6384011031bfe9727a644c6f - md5: 62aa1657aafa6c396aa99cb87f61c685 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.11release.conda + sha256: 90b43300fd2ea88393b2493578b2b1238fd36bfb85f49abbf06f2ec4c98590f9 + md5: 91cfbda006ffc70fd5b350d65b418c8b depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python 3.11.* - pillow - fastapi @@ -5991,17 +5991,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118821688 - timestamp: 1732406264209 + size: 118823356 + timestamp: 1732425673930 - kind: conda name: mblack - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - sha256: 39e8ebbbf4e31cb445bb9b6e872c806613d104117d6f1f11dc46c2c6d883fe6d - md5: 396656af3eff5d308f9bf49f8ff06ebe + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + sha256: 622efd567ef94cc5ec8a0f9bae36bcb1a058f0111a915b4392e79ead42c0059e + md5: 65eefd70b4ee52631de23a0ad329aed2 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6011,8 +6011,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130606 - timestamp: 1732406411814 + size: 130607 + timestamp: 1732425690570 - kind: conda name: mdurl version: 0.1.2 @@ -6030,21 +6030,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - sha256: c2b188e2396155b798910eaca449966b8f9e07f7262762e17bf673fd556c8607 - md5: 6ff069c857c0986561e4c786d267e5a2 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + sha256: 315878c6982f82eff3751615795a5881bd9c9fba480dba557c42301d2b3e1fb4 + md5: f1016770b1c7511a54282b96ecc0ecb0 depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22949 - timestamp: 1732406411814 + size: 22950 + timestamp: 1732425690573 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index ee57b7d832..5f1970107c 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -166,13 +166,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -460,13 +460,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -745,13 +745,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -6855,76 +6855,76 @@ packages: timestamp: 1713250613726 - kind: conda name: max - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - sha256: 219c78ed4134180964685c0378acf24c7ae629c4018d6328326a207854b6dfb1 - md5: 9b7deffd846eb9e9f850665d712ec711 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + sha256: 0c51c894f4c18c5d94ff1cbee4693b276a80b3a3fc47d19579db937775dc2b33 + md5: 56c2797c044fef1819e2238ecb529a9e depends: - - max-core ==24.6.0.dev2024112323 release - - max-python >=24.6.0.dev2024112323,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112323 release - - mblack ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release + - max-python >=24.6.0.dev2024112405,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112405 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1732406411807 + size: 9929 + timestamp: 1732425690564 - kind: conda name: max-core - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda - sha256: 36171d5aed2c16c0183fe2f52c09816216851267f2b054587cd3dc26b7520ad3 - md5: cc06c274f3b0ae3769f03e9cc28921d6 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda + sha256: 1d9baa3080a2553b3ee2da24f958f4a0dc50aaaf783869ab9d37ebe6161465b3 + md5: e9ef668ea8823978e2dd96f387bfe118 depends: - - mblack ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112405 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253847293 - timestamp: 1732406280435 + size: 253847269 + timestamp: 1732425902635 - kind: conda name: max-core - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda - sha256: 9b40202bf2045e266d8f181194c94751c7c133cb20ad40c6a7d61f48733a9155 - md5: 1f072dc6ed65b69e6d55f679c71288db + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda + sha256: 9d38562330f9e238eaf752b5469eae24e31a43b2a82d7970930ec0444d48efea + md5: 2703ae29a9de31839ccd0ff988b31cb7 depends: - - mblack ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112405 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257475790 - timestamp: 1732406411805 + size: 257476425 + timestamp: 1732425690562 - kind: conda name: max-core - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda - sha256: f24bc0752f1dfda4fafb13d0097117f2775a6082746800343609d5a00b7f62e7 - md5: 3d3f801ec48006926c1d5ec7b5575440 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda + sha256: c90c2628c27fe9248611e8ce01aab12ab41a481ec9b6200a8f0ddab17b8959f0 + md5: 86cdc30e3294f7272eed2df1bb2ead86 depends: - - mblack ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112405 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219443302 - timestamp: 1732406264206 + size: 219446659 + timestamp: 1732425673927 - kind: conda name: max-python - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.12release.conda - sha256: 025746198af5813bd882160a475c52597cd00e21a30cd94376a4226523b60584 - md5: 64309c91fa701838ef868ece88137ef6 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.12release.conda + sha256: 2aa3d6cae52df1795fd197da31f4143827032ad9efa10701cf76d3049c805fcc + md5: f05646fc5565b832a51b6a1b6fed94e0 depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python 3.12.* - pillow - fastapi @@ -6945,18 +6945,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128119457 - timestamp: 1732406280455 + size: 128119479 + timestamp: 1732425902648 - kind: conda name: max-python - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.12release.conda - sha256: bf2bad0a241336c7456127b04ac301e000235a5893575507938cdb8e54965133 - md5: 6bf2de92f8e83b07c59a0e9ed1435616 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.12release.conda + sha256: acb661e00a75bad48440055e4d3941eca99416e2806fd7550b20749aa11b5ffe + md5: a4c81577696a8b93a39864be898f31b7 depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python 3.12.* - pillow - fastapi @@ -6977,18 +6977,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131882772 - timestamp: 1732406411819 + size: 131882789 + timestamp: 1732425690576 - kind: conda name: max-python - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.12release.conda - sha256: c5ba9aee7d326b21d1bc5d01f83cf0caf4568ab6b539764c62ecaea1cee10f3f - md5: 5bb5d090479613314538291ff9f0882e + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.12release.conda + sha256: 5348a5891530ce04f7715107ec312479272be38972e532943bc17a76365d4e9b + md5: 0e945ba7af7ae58d1bfa047acb1cef31 depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python 3.12.* - pillow - fastapi @@ -7009,17 +7009,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118813299 - timestamp: 1732406264210 + size: 118816744 + timestamp: 1732425673931 - kind: conda name: mblack - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - sha256: 39e8ebbbf4e31cb445bb9b6e872c806613d104117d6f1f11dc46c2c6d883fe6d - md5: 396656af3eff5d308f9bf49f8ff06ebe + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + sha256: 622efd567ef94cc5ec8a0f9bae36bcb1a058f0111a915b4392e79ead42c0059e + md5: 65eefd70b4ee52631de23a0ad329aed2 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7029,8 +7029,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130606 - timestamp: 1732406411814 + size: 130607 + timestamp: 1732425690570 - kind: conda name: mdurl version: 0.1.2 @@ -7063,21 +7063,21 @@ packages: timestamp: 1698947249750 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - sha256: c2b188e2396155b798910eaca449966b8f9e07f7262762e17bf673fd556c8607 - md5: 6ff069c857c0986561e4c786d267e5a2 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + sha256: 315878c6982f82eff3751615795a5881bd9c9fba480dba557c42301d2b3e1fb4 + md5: f1016770b1c7511a54282b96ecc0ecb0 depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22949 - timestamp: 1732406411814 + size: 22950 + timestamp: 1732425690573 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 760ab41fb9..5889616f1e 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -5837,76 +5837,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - sha256: 219c78ed4134180964685c0378acf24c7ae629c4018d6328326a207854b6dfb1 - md5: 9b7deffd846eb9e9f850665d712ec711 - depends: - - max-core ==24.6.0.dev2024112323 release - - max-python >=24.6.0.dev2024112323,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112323 release - - mblack ==24.6.0.dev2024112323 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + sha256: 0c51c894f4c18c5d94ff1cbee4693b276a80b3a3fc47d19579db937775dc2b33 + md5: 56c2797c044fef1819e2238ecb529a9e + depends: + - max-core ==24.6.0.dev2024112405 release + - max-python >=24.6.0.dev2024112405,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112405 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1732406411807 + size: 9929 + timestamp: 1732425690564 - kind: conda name: max-core - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda - sha256: 36171d5aed2c16c0183fe2f52c09816216851267f2b054587cd3dc26b7520ad3 - md5: cc06c274f3b0ae3769f03e9cc28921d6 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda + sha256: 1d9baa3080a2553b3ee2da24f958f4a0dc50aaaf783869ab9d37ebe6161465b3 + md5: e9ef668ea8823978e2dd96f387bfe118 depends: - - mblack ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112405 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253847293 - timestamp: 1732406280435 + size: 253847269 + timestamp: 1732425902635 - kind: conda name: max-core - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda - sha256: 9b40202bf2045e266d8f181194c94751c7c133cb20ad40c6a7d61f48733a9155 - md5: 1f072dc6ed65b69e6d55f679c71288db + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda + sha256: 9d38562330f9e238eaf752b5469eae24e31a43b2a82d7970930ec0444d48efea + md5: 2703ae29a9de31839ccd0ff988b31cb7 depends: - - mblack ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112405 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257475790 - timestamp: 1732406411805 + size: 257476425 + timestamp: 1732425690562 - kind: conda name: max-core - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda - sha256: f24bc0752f1dfda4fafb13d0097117f2775a6082746800343609d5a00b7f62e7 - md5: 3d3f801ec48006926c1d5ec7b5575440 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda + sha256: c90c2628c27fe9248611e8ce01aab12ab41a481ec9b6200a8f0ddab17b8959f0 + md5: 86cdc30e3294f7272eed2df1bb2ead86 depends: - - mblack ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112405 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219443302 - timestamp: 1732406264206 + size: 219446659 + timestamp: 1732425673927 - kind: conda name: max-python - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.12release.conda - sha256: 025746198af5813bd882160a475c52597cd00e21a30cd94376a4226523b60584 - md5: 64309c91fa701838ef868ece88137ef6 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.12release.conda + sha256: 2aa3d6cae52df1795fd197da31f4143827032ad9efa10701cf76d3049c805fcc + md5: f05646fc5565b832a51b6a1b6fed94e0 depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python 3.12.* - pillow - fastapi @@ -5927,18 +5927,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128119457 - timestamp: 1732406280455 + size: 128119479 + timestamp: 1732425902648 - kind: conda name: max-python - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.12release.conda - sha256: bf2bad0a241336c7456127b04ac301e000235a5893575507938cdb8e54965133 - md5: 6bf2de92f8e83b07c59a0e9ed1435616 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.12release.conda + sha256: acb661e00a75bad48440055e4d3941eca99416e2806fd7550b20749aa11b5ffe + md5: a4c81577696a8b93a39864be898f31b7 depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python 3.12.* - pillow - fastapi @@ -5959,18 +5959,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131882772 - timestamp: 1732406411819 + size: 131882789 + timestamp: 1732425690576 - kind: conda name: max-python - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.12release.conda - sha256: c5ba9aee7d326b21d1bc5d01f83cf0caf4568ab6b539764c62ecaea1cee10f3f - md5: 5bb5d090479613314538291ff9f0882e + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.12release.conda + sha256: 5348a5891530ce04f7715107ec312479272be38972e532943bc17a76365d4e9b + md5: 0e945ba7af7ae58d1bfa047acb1cef31 depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python 3.12.* - pillow - fastapi @@ -5991,17 +5991,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118813299 - timestamp: 1732406264210 + size: 118816744 + timestamp: 1732425673931 - kind: conda name: mblack - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - sha256: 39e8ebbbf4e31cb445bb9b6e872c806613d104117d6f1f11dc46c2c6d883fe6d - md5: 396656af3eff5d308f9bf49f8ff06ebe + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + sha256: 622efd567ef94cc5ec8a0f9bae36bcb1a058f0111a915b4392e79ead42c0059e + md5: 65eefd70b4ee52631de23a0ad329aed2 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6011,8 +6011,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130606 - timestamp: 1732406411814 + size: 130607 + timestamp: 1732425690570 - kind: conda name: mdurl version: 0.1.2 @@ -6030,21 +6030,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - sha256: c2b188e2396155b798910eaca449966b8f9e07f7262762e17bf673fd556c8607 - md5: 6ff069c857c0986561e4c786d267e5a2 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + sha256: 315878c6982f82eff3751615795a5881bd9c9fba480dba557c42301d2b3e1fb4 + md5: f1016770b1c7511a54282b96ecc0ecb0 depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22949 - timestamp: 1732406411814 + size: 22950 + timestamp: 1732425690573 - kind: conda name: multidict version: 6.1.0 diff --git a/magic.lock b/magic.lock index b7fd7df7ec..78ce8a0308 100644 --- a/magic.lock +++ b/magic.lock @@ -132,12 +132,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -356,12 +356,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -570,12 +570,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -5855,76 +5855,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112323-release.conda - sha256: 219c78ed4134180964685c0378acf24c7ae629c4018d6328326a207854b6dfb1 - md5: 9b7deffd846eb9e9f850665d712ec711 - depends: - - max-core ==24.6.0.dev2024112323 release - - max-python >=24.6.0.dev2024112323,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112323 release - - mblack ==24.6.0.dev2024112323 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda + sha256: 0c51c894f4c18c5d94ff1cbee4693b276a80b3a3fc47d19579db937775dc2b33 + md5: 56c2797c044fef1819e2238ecb529a9e + depends: + - max-core ==24.6.0.dev2024112405 release + - max-python >=24.6.0.dev2024112405,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112405 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1732406411807 + size: 9929 + timestamp: 1732425690564 - kind: conda name: max-core - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112323-release.conda - sha256: 36171d5aed2c16c0183fe2f52c09816216851267f2b054587cd3dc26b7520ad3 - md5: cc06c274f3b0ae3769f03e9cc28921d6 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda + sha256: 1d9baa3080a2553b3ee2da24f958f4a0dc50aaaf783869ab9d37ebe6161465b3 + md5: e9ef668ea8823978e2dd96f387bfe118 depends: - - mblack ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112405 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253847293 - timestamp: 1732406280435 + size: 253847269 + timestamp: 1732425902635 - kind: conda name: max-core - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112323-release.conda - sha256: 9b40202bf2045e266d8f181194c94751c7c133cb20ad40c6a7d61f48733a9155 - md5: 1f072dc6ed65b69e6d55f679c71288db + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda + sha256: 9d38562330f9e238eaf752b5469eae24e31a43b2a82d7970930ec0444d48efea + md5: 2703ae29a9de31839ccd0ff988b31cb7 depends: - - mblack ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112405 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257475790 - timestamp: 1732406411805 + size: 257476425 + timestamp: 1732425690562 - kind: conda name: max-core - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112323-release.conda - sha256: f24bc0752f1dfda4fafb13d0097117f2775a6082746800343609d5a00b7f62e7 - md5: 3d3f801ec48006926c1d5ec7b5575440 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda + sha256: c90c2628c27fe9248611e8ce01aab12ab41a481ec9b6200a8f0ddab17b8959f0 + md5: 86cdc30e3294f7272eed2df1bb2ead86 depends: - - mblack ==24.6.0.dev2024112323 release + - mblack ==24.6.0.dev2024112405 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219443302 - timestamp: 1732406264206 + size: 219446659 + timestamp: 1732425673927 - kind: conda name: max-python - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112323-3.12release.conda - sha256: 025746198af5813bd882160a475c52597cd00e21a30cd94376a4226523b60584 - md5: 64309c91fa701838ef868ece88137ef6 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.12release.conda + sha256: 2aa3d6cae52df1795fd197da31f4143827032ad9efa10701cf76d3049c805fcc + md5: f05646fc5565b832a51b6a1b6fed94e0 depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python 3.12.* - pillow - fastapi @@ -5945,18 +5945,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128119457 - timestamp: 1732406280455 + size: 128119479 + timestamp: 1732425902648 - kind: conda name: max-python - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112323-3.12release.conda - sha256: bf2bad0a241336c7456127b04ac301e000235a5893575507938cdb8e54965133 - md5: 6bf2de92f8e83b07c59a0e9ed1435616 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.12release.conda + sha256: acb661e00a75bad48440055e4d3941eca99416e2806fd7550b20749aa11b5ffe + md5: a4c81577696a8b93a39864be898f31b7 depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python 3.12.* - pillow - fastapi @@ -5977,18 +5977,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131882772 - timestamp: 1732406411819 + size: 131882789 + timestamp: 1732425690576 - kind: conda name: max-python - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112323-3.12release.conda - sha256: c5ba9aee7d326b21d1bc5d01f83cf0caf4568ab6b539764c62ecaea1cee10f3f - md5: 5bb5d090479613314538291ff9f0882e + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.12release.conda + sha256: 5348a5891530ce04f7715107ec312479272be38972e532943bc17a76365d4e9b + md5: 0e945ba7af7ae58d1bfa047acb1cef31 depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python 3.12.* - pillow - fastapi @@ -6009,17 +6009,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118813299 - timestamp: 1732406264210 + size: 118816744 + timestamp: 1732425673931 - kind: conda name: mblack - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112323-release.conda - sha256: 39e8ebbbf4e31cb445bb9b6e872c806613d104117d6f1f11dc46c2c6d883fe6d - md5: 396656af3eff5d308f9bf49f8ff06ebe + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + sha256: 622efd567ef94cc5ec8a0f9bae36bcb1a058f0111a915b4392e79ead42c0059e + md5: 65eefd70b4ee52631de23a0ad329aed2 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6029,8 +6029,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130606 - timestamp: 1732406411814 + size: 130607 + timestamp: 1732425690570 - kind: conda name: mdurl version: 0.1.2 @@ -6048,21 +6048,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112323 + version: 24.6.0.dev2024112405 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112323-release.conda - sha256: c2b188e2396155b798910eaca449966b8f9e07f7262762e17bf673fd556c8607 - md5: 6ff069c857c0986561e4c786d267e5a2 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + sha256: 315878c6982f82eff3751615795a5881bd9c9fba480dba557c42301d2b3e1fb4 + md5: f1016770b1c7511a54282b96ecc0ecb0 depends: - - max-core ==24.6.0.dev2024112323 release + - max-core ==24.6.0.dev2024112405 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22949 - timestamp: 1732406411814 + size: 22950 + timestamp: 1732425690573 - kind: conda name: multidict version: 6.1.0 From f686a2d80cf1681fb18e963847c7502ca0e62e53 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 23 Nov 2024 22:36:25 -0800 Subject: [PATCH 016/119] [mojo-stdlib][KGEN] Expand constrained to work with a `String` parameter This introduces a new `kgen.param.assert.ex` operation that takes a pointer+length for data as a parameter, and uses that to introduce an overload of `constrained` that takes a general `String` instead of just a `StringLiteral`. This allows more interesting expressions, but at the cost of compile time. The existing overload of `constrained` is retained so the majority of callers that pass in a string literal directly will not see any compile time impact. MODULAR_ORIG_COMMIT_REV_ID: 724d791274d08a582b6c738d445fdac90e9fef72 --- stdlib/src/builtin/constrained.mojo | 40 ++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/stdlib/src/builtin/constrained.mojo b/stdlib/src/builtin/constrained.mojo index c7cbb756b4..b0898c3447 100644 --- a/stdlib/src/builtin/constrained.mojo +++ b/stdlib/src/builtin/constrained.mojo @@ -54,4 +54,42 @@ fn constrained[cond: Bool, msg: StringLiteral = "param assertion failed"](): __mlir_op.`kgen.param.assert`[ cond = cond.__mlir_i1__(), message = msg.value ]() - return + + +@always_inline("nodebug") +fn constrained[cond: Bool, msg: String](): + """Compile time checks that the condition is true. + + The `constrained` is similar to `static_assert` in C++ and is used to + introduce constraints on the enclosing function. In Mojo, the assert places + a constraint on the function. The message is displayed when the assertion + fails, and takes a generalized string. + + Parameters: + cond: The bool value to assert. + msg: The message to display on failure. + + Example: + + ```mojo + from sys.info import num_physical_cores + + def main(): + alias cores_to_use = 2 + multicore_check[cores_to_use]() + + def multicore_check[cores: Int](): + constrained[ + cores <= num_physical_cores(), + "build failed: not enough cores" + ]() + constrained[ + cores >= 2, + "at least two cores are required" + ]() + """ + __mlir_op.`kgen.param.assert.ex`[ + cond = cond.__mlir_i1__(), + messageStart = msg.unsafe_ptr().address, + messageLength = msg.byte_length().value, + ]() From f7b54a786a1edbf08581ed6670f588e12ea4e910 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 24 Nov 2024 10:52:13 -0800 Subject: [PATCH 017/119] [mojo-lang] Fix AST doc printing of result types. (#51498) This fixes result type printing to use pretty symbolic names for parameters instead of $1 etc. This is done by using the result type from the function type, instead of the structural signaturetype. This fixes MOTO-418 MODULAR_ORIG_COMMIT_REV_ID: 401f480c7dee0b4e190b4f4074f09c5d18919806 --- docs/changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 4fb30d7c4a..5dc1d9d472 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -586,3 +586,6 @@ what we publish. - Tooling now prints the origins of `ref` arguments and results correctly, and prints `self` instead of `self: Self` in methods. + +- The LSP and generated documentation now print parametric result types + correctly, e.g. showing `SIMD[type, simd_width]` instead of `SIMD[$0, $1]`. From df2c2fe483ff73bace602f66b04313d872076008 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 24 Nov 2024 12:02:50 -0800 Subject: [PATCH 018/119] [mojo-stdlib] Introduce a new comptime String -> StringLiteral ctor This introduces a new `StringLiteral.from_string[someString]()` method that converts a comptime String value into a StringLiteral. This allows us to bridge the gap between dynamic-at-comptime strings and static-at-runtime strings in a nice and general way. This replaces the use of `kgen.param.assert.ex` I introduced in a previous patch, but doesn't remove the machinery for that. I will do so in a later patch. MODULAR_ORIG_COMMIT_REV_ID: eed76a05871ed19f015afd7229976fb52a8e2a97 --- docs/changelog.md | 4 ++++ stdlib/src/builtin/constrained.mojo | 6 +----- stdlib/src/builtin/string_literal.mojo | 23 +++++++++++++++++++++++ 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 5dc1d9d472..c8ec0e274b 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -274,6 +274,10 @@ what we publish. memory allocation and performance. These options allow for optimized memory usage and reduced buffer reallocations, providing flexibility based on application requirements. +- A new `StringLiteral.from_string[someString]()` method is available. It + allows forming a runtime-constant StringLiteral from a compile-time-dynamic + `String` value. + ### 🦋 Changed - The argument convention for `__init__` methods has been changed from `inout` diff --git a/stdlib/src/builtin/constrained.mojo b/stdlib/src/builtin/constrained.mojo index b0898c3447..09d934ff1c 100644 --- a/stdlib/src/builtin/constrained.mojo +++ b/stdlib/src/builtin/constrained.mojo @@ -88,8 +88,4 @@ fn constrained[cond: Bool, msg: String](): "at least two cores are required" ]() """ - __mlir_op.`kgen.param.assert.ex`[ - cond = cond.__mlir_i1__(), - messageStart = msg.unsafe_ptr().address, - messageLength = msg.byte_length().value, - ]() + constrained[cond, StringLiteral.from_string[msg]()]() diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index b4f01993b3..85f4f544df 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -86,6 +86,29 @@ struct StringLiteral( """ self = other + # TODO(MOCO-1460): This should be: fn __init__[*, value: String](out self): + # but Mojo tries to bind the parameter in `StringLiteral["foo"]()` to the + # type instead of the initializer. Use a static method to work around this + # for now. + @always_inline("nodebug") + @staticmethod + fn from_string[value: String]() -> StringLiteral: + """Form a string literal from an arbitrary compile-time String value. + + Parameters: + value: The string value to use. + + Returns: + The string value as a StringLiteral. + """ + return __mlir_attr[ + `#kgen.param.expr : !kgen.string`, + ] + # ===-------------------------------------------------------------------===# # Operator dunders # ===-------------------------------------------------------------------===# From 61061d986e1934e0cf67e38a52159c217eb95dc2 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Sun, 24 Nov 2024 14:34:58 -0600 Subject: [PATCH 019/119] [stdlib] feat: Make `Origin` wrap an MLIR origin value Up until this point, `Origin` has effectively been used only as a parametric alias around a `!lit.origin`. With this change, `Origin` becomes a first-class type, with the intention that we migrate uses of the `Origin[..].type` parameter "alias" usage pattern to just `Origin[..]`. Actually doing that migration will require fixing several compiler bugs along the way. MODULAR_ORIG_COMMIT_REV_ID: 5860ed9f5719eb952cc88d674c25cab9721fe699 --- stdlib/src/builtin/type_aliases.mojo | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/stdlib/src/builtin/type_aliases.mojo b/stdlib/src/builtin/type_aliases.mojo index 70d70a664e..f255368e96 100644 --- a/stdlib/src/builtin/type_aliases.mojo +++ b/stdlib/src/builtin/type_aliases.mojo @@ -44,6 +44,7 @@ alias OriginSet = __mlir_type.`!lit.origin.set` # Helper to build a value of !lit.origin type. # TODO: Should be a parametric alias. +@value struct Origin[is_mutable: Bool]: """This represents a origin reference of potentially parametric type. TODO: This should be replaced with a parametric type alias. @@ -57,3 +58,26 @@ struct Origin[is_mutable: Bool]: is_mutable.value, `>`, ] + + # ===-------------------------------------------------------------------===# + # Fields + # ===-------------------------------------------------------------------===# + + var _mlir_origin: Self.type + + # ===-------------------------------------------------------------------===# + # Life cycle methods + # ===-------------------------------------------------------------------===# + + # NOTE: + # Needs to be @implicit convertible for the time being so that + # `__origin_of(..)` can implicilty convert to `Origin` in use cases like: + # Span[Byte, __origin_of(self)] + @implicit + @always_inline("nodebug") + fn __init__(out self, mlir_origin: Self.type): + """Initialize an Origin from a raw MLIR `!lit.origin` value. + + Args: + mlir_origin: The raw MLIR origin value.""" + self._mlir_origin = mlir_origin From b9e6169440629f925b199355820440ec81560b4e Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sun, 24 Nov 2024 14:43:13 -0800 Subject: [PATCH 020/119] [KGEN] Remove pop.string.create in favor of StringLiteral.from_string MODULAR_ORIG_COMMIT_REV_ID: 5519577fce3c3f2eb137c79cc87cd2445492ec9a --- stdlib/src/builtin/simd.mojo | 2 +- stdlib/src/builtin/string_literal.mojo | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index a0c68f35f7..6b8c9edbdf 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -3368,7 +3368,7 @@ fn _write_scalar[ elif dtype.is_integral(): @parameter - if is_gpu(): + if is_gpu() or dtype.is_integral(): var err = _try_write_int(writer, value) if err: abort( diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 85f4f544df..c6859b4f04 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -925,9 +925,12 @@ struct StringLiteral( return str(self).lstrip() -fn _to_string_literal(i: Int) -> StringLiteral: - return __mlir_op.`pop.string.create`(i) +fn _to_string_literal[val: Int]() -> StringLiteral: + alias s = StringLiteral.from_string[str(val)]() + return s -fn _to_string_literal(i: SIMD) -> StringLiteral: - return __mlir_op.`pop.string.create`(i) +fn _to_string_literal[val: SIMD]() -> StringLiteral: + constrained[val.type.is_integral(), "input type must be integral"]() + alias s = StringLiteral.from_string[str(val)]() + return s From 0f655714fa726e6661dbdfdc7f6df0c0b3d245c8 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 24 Nov 2024 15:03:47 -0800 Subject: [PATCH 021/119] [mojo-stdlib] Mark Origin register passable. This marks the type as register_passable and tidies it up a bit. Doing so allows it to be used with the legacy `T{..}` initializer syntax, which is handy for various workarounds. MODULAR_ORIG_COMMIT_REV_ID: 9ee5247be330d992e5207eca041532bb10c34600 --- stdlib/src/builtin/type_aliases.mojo | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/stdlib/src/builtin/type_aliases.mojo b/stdlib/src/builtin/type_aliases.mojo index f255368e96..5bbee8d763 100644 --- a/stdlib/src/builtin/type_aliases.mojo +++ b/stdlib/src/builtin/type_aliases.mojo @@ -42,15 +42,13 @@ alias OriginSet = __mlir_type.`!lit.origin.set` """A set of origin parameters.""" -# Helper to build a value of !lit.origin type. -# TODO: Should be a parametric alias. @value +@register_passable("trivial") struct Origin[is_mutable: Bool]: - """This represents a origin reference of potentially parametric type. - TODO: This should be replaced with a parametric type alias. + """This represents a origin reference for a memory value. Parameters: - is_mutable: Whether the origin reference is mutable. + is_mutable: Whether the origin is mutable. """ alias type = __mlir_type[ From 91ef9359905fec2a898fd03cad12f0baf8d3afb0 Mon Sep 17 00:00:00 2001 From: modularbot Date: Mon, 25 Nov 2024 06:39:58 +0000 Subject: [PATCH 022/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024112505 --- examples/magic.lock | 698 +++++++++++++++++---------------- examples/notebooks/magic.lock | 698 +++++++++++++++++---------------- examples/operators/magic.lock | 700 +++++++++++++++++----------------- magic.lock | 700 +++++++++++++++++----------------- 4 files changed, 1366 insertions(+), 1430 deletions(-) diff --git a/examples/magic.lock b/examples/magic.lock index b8433b911f..cedba1c059 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -36,7 +36,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py311hfdbb021_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda @@ -78,10 +78,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -165,8 +165,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py311hfdbb021_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py311h38be061_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py311h4854187_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py311h38be061_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py311h4854187_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py311h9e33e62_0.conda @@ -200,9 +200,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py311h182c674_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py311h182c674_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py311h9ecbd09_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda @@ -258,7 +258,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py311h89d996e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py311h14e8bb7_0.conda @@ -301,10 +301,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -332,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -388,8 +388,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py311ha879c10_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py311h89d996e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py311hfecb2dc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py311ha6d2531_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py311hfecb2dc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py311ha6d2531_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py311h0ca61a2_0.conda @@ -423,9 +423,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py311h5e37e04_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py311h5e37e04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py311h5487e9b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda @@ -480,7 +480,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py311h3f08180_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda @@ -520,10 +520,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -548,7 +548,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -601,8 +601,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py311h460d6c5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py311h6885ffc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py311ha1ab1f8_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py311he04fa90_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py311ha1ab1f8_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py311he04fa90_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py311h3ff9189_0.conda @@ -635,9 +635,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py311h82b0fb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py311h82b0fb8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py311h460d6c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda @@ -2021,47 +2021,49 @@ packages: - kind: conda name: c-ares version: 1.34.3 - build: h5505292_0 + build: h5505292_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda - sha256: e9e0f737286f9f4173c76fb01a11ffbe87cfc2da4e99760e1e18f47851d7ae06 - md5: d0155a4f41f28628c7409ea000eeb19c + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda + sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 + md5: fb72102e8a8f9bcd38e40af09ff41c42 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 178951 - timestamp: 1731182071026 + size: 179318 + timestamp: 1732447193278 - kind: conda name: c-ares version: 1.34.3 - build: ha64f414_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda - sha256: c0ec34413744c572f2f95390bbf19189d1460ecc7fb08902287e6289d327a7bd - md5: fb47a36e80869a6580454a8606b78619 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda + sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 + md5: 0cd9ebf65479cdceb6a4888b764dafcd depends: - - __glibc >=2.28,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 215455 - timestamp: 1731181925271 + size: 214791 + timestamp: 1732447020593 - kind: conda name: c-ares version: 1.34.3 - build: heb4867d_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda - sha256: 1015d731c05ef7de298834833d680b08dea58980b907f644345bd457f9498c99 - md5: 09a6c610d002e54e18353c06ef61a253 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda + sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 + md5: ee228789a85f961d14567252a03e725f depends: - - __glibc >=2.28,<3.0.a0 + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 205575 - timestamp: 1731181837907 + size: 204857 + timestamp: 1732447031823 - kind: conda name: ca-certificates version: 2024.8.30 @@ -3171,12 +3173,12 @@ packages: - kind: conda name: libarrow version: 18.0.0 - build: h3d75c4c_8_cpu - build_number: 8 + build: h3d75c4c_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda - sha256: f40d35816c995d94d78aec26927650d7ee851cdfa86ebb1429cbd27137cc354a - md5: 704b04f2ad7725f31a22ca07d2789f76 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda + sha256: 8552a3b30a89350fa46dbee1ba06d039605e6c5f200904f2b6c57fb32b7bbbc0 + md5: ff87e5f8ad826fc724763128f1d151a1 depends: - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 @@ -3204,22 +3206,21 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 7977023 - timestamp: 1732207819418 + size: 8073099 + timestamp: 1732499447839 - kind: conda name: libarrow version: 18.0.0 - build: h94eee4b_8_cpu - build_number: 8 + build: h94eee4b_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda - sha256: aeb31e3713767d5e1d2f29bc05ba04e4cbd48fd72edf8ae66867ac5b22b94160 - md5: 8d5436adb1b35ba955c5600806d52dbc + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda + sha256: 4d59165cbb67020d5ecd819e944874ab6ff2085e496ceb47e9f23526d7d860c9 + md5: fe2841c29f3753146d4e89217d22d043 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -3248,22 +3249,21 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8712917 - timestamp: 1732208188022 + size: 8775158 + timestamp: 1732498040333 - kind: conda name: libarrow version: 18.0.0 - build: hb943b0e_8_cpu - build_number: 8 + build: hb943b0e_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda - sha256: ec1e48caf98615d4e6cb5bac539d6ddcdff37fd7a722dab599131974b2a97343 - md5: e1b2b2f162540ebea865e908c865bb9c + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda + sha256: c4c7518b2e2bd8dd4573720a500ba68665041ec486e0cf9a034bb6bc1cf94ff8 + md5: dc4cb1c42c1b348f6f272b925fab201a depends: - __osx >=11.0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -3290,190 +3290,180 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5459847 - timestamp: 1732208317959 + size: 5516035 + timestamp: 1732496751328 - kind: conda name: libarrow-acero version: 18.0.0 - build: h286801f_8_cpu - build_number: 8 + build: h286801f_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda - sha256: b74c5a10cd40e33db50392263cff9aacd6ead0f6d42107e01e92d1e57af1daf1 - md5: 7208462cfc8f9610060695ffab85ab39 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda + sha256: 2740f7cbeb633a3f6ac777b91fe726ca87d7361ac90b66a8417a9b9099189a47 + md5: 8b516d4e381d099f6bef4145ed7f1491 depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 491510 - timestamp: 1732208453361 + size: 493686 + timestamp: 1732496844787 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5888daf_8_cpu - build_number: 8 + build: h5888daf_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda - sha256: 6a33ef82a569d02b2b4664bdcc4cb6aea624dbf258921ab59afadd655e13953d - md5: 3ac00dbba52c89287214f5e8f0795e7e + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda + sha256: d714e7dfed613d1f093d60b6691c90cf2740b025860249a167ff08e6fa9c602c + md5: b36def03eb1624ad1ca6cd5866104096 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 619612 - timestamp: 1732208230617 + size: 622189 + timestamp: 1732498078370 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5ad3122_8_cpu - build_number: 8 + build: h5ad3122_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda - sha256: e1f98f83cb1c73119c17b97a5b816517df8f9c6565c60b623172b305090efeb0 - md5: 8bdef8781dbf8e3fc894bb295dca036f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda + sha256: 7e32e17d9de8856e6133180c5e10011867762057715efb943a86e46b61139825 + md5: 826de4db28e16eeac2a8c677d7702e30 depends: - - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 586395 - timestamp: 1732207853957 + size: 588517 + timestamp: 1732499522102 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h286801f_8_cpu - build_number: 8 + build: h286801f_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda - sha256: 7b503c2179880d8d755e4f81e8e058ca869227c1958c172af5ab4c62d637571d - md5: 08b882378a3e10b0be0218e5867638e3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda + sha256: 3a962b0591720234e724f887ec1975792daa987f34fc161b864183f61dd01bbb + md5: fb7cd00c96acf4ae83475fba8bd9d1ca depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_8_cpu - - libarrow-acero 18.0.0 h286801f_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow-acero 18.0.0 h286801f_9_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_8_cpu + - libparquet 18.0.0 hda0ea68_9_cpu license: Apache-2.0 - license_family: APACHE - size: 498580 - timestamp: 1732209786094 + size: 499874 + timestamp: 1732497930387 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5888daf_8_cpu - build_number: 8 + build: h5888daf_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda - sha256: 3234ede6af0403cc29258aaaca45fe426e00259c154a4c857087cd805e16f7db - md5: 84e996f59d99626426a73bd0977ef7f3 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda + sha256: d4e375d2d92c8845b4f634e7c4cc5d5643294ab74c64cfe0d4ef473816e1028a + md5: 07a60ef65486d08c96f324594dc2b5a1 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_8_cpu - - libarrow-acero 18.0.0 h5888daf_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow-acero 18.0.0 h5888daf_9_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_8_cpu + - libparquet 18.0.0 h6bd9018_9_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 594655 - timestamp: 1732208308056 + size: 596492 + timestamp: 1732498166295 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5ad3122_8_cpu - build_number: 8 + build: h5ad3122_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda - sha256: fdc5c1462ea5e7902db750ae8e281122d52f3c6d859a2283a622e3ad74effdc3 - md5: 23742cf206c1283ab6f90b1ba59ba4ed + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda + sha256: ec5655b25deb8d4868ed1fa1cd47e64e34581550ee7b024c65861aff91ef105c + md5: 763a682b8976e760576f62422ed69728 depends: - - libarrow 18.0.0 h3d75c4c_8_cpu - - libarrow-acero 18.0.0 h5ad3122_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow-acero 18.0.0 h5ad3122_9_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_8_cpu + - libparquet 18.0.0 h23a96eb_9_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 568515 - timestamp: 1732207917109 + size: 571675 + timestamp: 1732499604040 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h14ec2bd_8_cpu - build_number: 8 + build: h14ec2bd_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda - sha256: 87d66d7c8d8941d2251777ce8dba057191071e7abc98e6077171a6f657f25c9a - md5: fcd095fe4ad44d48d3dad252332d412a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda + sha256: b1def0e7420f2cecfc8eccd0c8ae24c51e58623c3924e11208d69fefc3d07525 + md5: c472236ec8407f4591d5fe682d3c7ad7 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3d75c4c_8_cpu - - libarrow-acero 18.0.0 h5ad3122_8_cpu - - libarrow-dataset 18.0.0 h5ad3122_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow-acero 18.0.0 h5ad3122_9_cpu + - libarrow-dataset 18.0.0 h5ad3122_9_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 523178 - timestamp: 1732207946621 + size: 528225 + timestamp: 1732499642412 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h5c8f2c3_8_cpu - build_number: 8 + build: h5c8f2c3_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda - sha256: ceee34b069762aa81521f8aba1cf5f613250f59db7a2e1570865332ad2da8555 - md5: faa0b78b5daac5dab1651c610204401d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda + sha256: 48b9bbcb4529cf41add523aef49acee69e0634f0e3d6f3d1101b16cb8d13cb2e + md5: a8fcd78ee422057362d928e2dd63ed8e depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h94eee4b_8_cpu - - libarrow-acero 18.0.0 h5888daf_8_cpu - - libarrow-dataset 18.0.0 h5888daf_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow-acero 18.0.0 h5888daf_9_cpu + - libarrow-dataset 18.0.0 h5888daf_9_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 527756 - timestamp: 1732208344211 + size: 530637 + timestamp: 1732498203493 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h6a6e5c5_8_cpu - build_number: 8 + build: h6a6e5c5_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda - sha256: 1d7ef3812071a036942cc9bc6742b60354aee1e168338bd18a8596bbd696e43c - md5: 7acbdff23cd797bb9ada6a3de2d7502a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda + sha256: 0623669f06c3ebd51421391a44f430986e627de1b215202aa80777a17a353b52 + md5: c0b80e0e4abd9c06a57b58c46224f8b2 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hb943b0e_8_cpu - - libarrow-acero 18.0.0 h286801f_8_cpu - - libarrow-dataset 18.0.0 h286801f_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow-acero 18.0.0 h286801f_9_cpu + - libarrow-dataset 18.0.0 h286801f_9_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - license_family: APACHE - size: 459728 - timestamp: 1732209986506 + size: 461278 + timestamp: 1732498084570 - kind: conda name: libblas version: 3.9.0 @@ -4828,61 +4818,58 @@ packages: - kind: conda name: libparquet version: 18.0.0 - build: h23a96eb_8_cpu - build_number: 8 + build: h23a96eb_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda - sha256: 23ac81fee2d87e51e7695d7ab8b4860e7ff466d449f31cf144ba4e64f409d36b - md5: 456a8374b7a9c7a9b4ced6297563d354 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda + sha256: 16a5200afeb34827cdbc80f8fbc73a6a61e8af138ba57b72ffb41fdd82455e7d + md5: b6e1289678df3e7abf18619af5e378c2 depends: - - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1121714 - timestamp: 1732207900610 + size: 1123929 + timestamp: 1732499582562 - kind: conda name: libparquet version: 18.0.0 - build: h6bd9018_8_cpu - build_number: 8 + build: h6bd9018_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda - sha256: 3183fa77b6fd965160deb512ac6035c3be2df8af9f6529af20cb2d053d177afd - md5: e2718d24a8af33752dfe0b75e3043b75 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda + sha256: 22dd2354ee45e797dd52fbb8325aea3795440821480d4572fc30e4f268239a54 + md5: 79817c62827b836349adf32b218edd95 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1211318 - timestamp: 1732208288781 + size: 1213917 + timestamp: 1732498145973 - kind: conda name: libparquet version: 18.0.0 - build: hda0ea68_8_cpu - build_number: 8 + build: hda0ea68_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda - sha256: 4d91a04771b0fcb9830b5db2c67d77ee001790df7ed8c0bd4057564c5483fb00 - md5: 74f66533d553fc03cdb21af7a5d4d84e + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda + sha256: 6e93414ddda2853bc113bb5895eefa3f65de675ee94eb86e48109196f809425c + md5: 48c0673e0a561279ac8ed3b3cba1c448 depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 882388 - timestamp: 1732209712346 + size: 883867 + timestamp: 1732497873361 - kind: conda name: libpng version: 1.6.44 @@ -5837,76 +5824,76 @@ packages: timestamp: 1729352296161 - kind: conda name: max - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - sha256: 0c51c894f4c18c5d94ff1cbee4693b276a80b3a3fc47d19579db937775dc2b33 - md5: 56c2797c044fef1819e2238ecb529a9e - depends: - - max-core ==24.6.0.dev2024112405 release - - max-python >=24.6.0.dev2024112405,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112405 release - - mblack ==24.6.0.dev2024112405 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + sha256: e8544da30dc3cde2d5201181a0fb554c2fdb1a279343dc6fdc3b3699e480da65 + md5: 18ada131191a1b297d0be0d940b029f4 + depends: + - max-core ==24.6.0.dev2024112505 release + - max-python >=24.6.0.dev2024112505,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112505 release license: LicenseRef-Modular-Proprietary - size: 9929 - timestamp: 1732425690564 + size: 9930 + timestamp: 1732512294393 - kind: conda name: max-core - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda - sha256: 1d9baa3080a2553b3ee2da24f958f4a0dc50aaaf783869ab9d37ebe6161465b3 - md5: e9ef668ea8823978e2dd96f387bfe118 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda + sha256: 12ba51fe5626bd74c1efd8fdf5717feac6eefbf22efc05ce722babb0c9c123ed + md5: efc447f7345cbcf1fadb3c485c5d1a83 depends: - - mblack ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112505 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253847269 - timestamp: 1732425902635 + size: 253852848 + timestamp: 1732512311477 - kind: conda name: max-core - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda - sha256: 9d38562330f9e238eaf752b5469eae24e31a43b2a82d7970930ec0444d48efea - md5: 2703ae29a9de31839ccd0ff988b31cb7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda + sha256: b9045359f837e8baa054ebe53025af5756ff6ecf06803a401e2e4ccad36d7297 + md5: 8fcd55d2b633c9f27cc956ea7c0fa9d8 depends: - - mblack ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112505 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257476425 - timestamp: 1732425690562 + size: 257504019 + timestamp: 1732512294391 - kind: conda name: max-core - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda - sha256: c90c2628c27fe9248611e8ce01aab12ab41a481ec9b6200a8f0ddab17b8959f0 - md5: 86cdc30e3294f7272eed2df1bb2ead86 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda + sha256: 8ebbb263653bcc4b962205134f45d87f343f03513208f9ac7144f6ada5ca65ed + md5: 3d74098f452358f071362533e5518745 depends: - - mblack ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112505 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219446659 - timestamp: 1732425673927 + size: 219479698 + timestamp: 1732512237302 - kind: conda name: max-python - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.11release.conda - sha256: b68032e43b4279976baf7979c370b3934a46f46a69233ab9ccd1e74271a0b15c - md5: f898754bae63bd70554a8f96a33dcf82 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.11release.conda + sha256: 33493ea4cb1487ef8d6757a8aa212d6381420f153565fab23b7b4eb428b76a70 + md5: a629a63aea4af73b4adef7015d2a7a7f depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python 3.11.* - pillow - fastapi @@ -5927,18 +5914,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128164652 - timestamp: 1732425902645 + size: 128152518 + timestamp: 1732512311488 - kind: conda name: max-python - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.11release.conda - sha256: a1109568f0e7727f1c26fae69f2b1658859df59d28eca518af30ff9f51f98cf3 - md5: 86b59dcaba65255a68af84d0d5850fb4 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.11release.conda + sha256: 4f151d10b610afc3aae4416c81fc31dfe77b340cad8d211480d6a39cb628038a + md5: edb4087231b757f949d02dc4a765670e depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python 3.11.* - pillow - fastapi @@ -5959,18 +5946,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131918017 - timestamp: 1732425690572 + size: 131912451 + timestamp: 1732512294402 - kind: conda name: max-python - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.11release.conda - sha256: 90b43300fd2ea88393b2493578b2b1238fd36bfb85f49abbf06f2ec4c98590f9 - md5: 91cfbda006ffc70fd5b350d65b418c8b + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.11release.conda + sha256: 7854f87aea717b77a235a70b7b6f60fc88385b9aa595ce7eb1fe81d7dd5259be + md5: 3bd720edff1ec36145e87d81dcf8b960 depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python 3.11.* - pillow - fastapi @@ -5991,17 +5978,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118823356 - timestamp: 1732425673930 + size: 118818435 + timestamp: 1732512237305 - kind: conda name: mblack - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - sha256: 622efd567ef94cc5ec8a0f9bae36bcb1a058f0111a915b4392e79ead42c0059e - md5: 65eefd70b4ee52631de23a0ad329aed2 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + sha256: f72d60f0534d53ce247c450b04bfb6bc67a59f408ee3534392a7d812dc5fa03c + md5: 91a2bae1d55ec1c3bdf9db8d046acd12 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6011,8 +5998,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130607 - timestamp: 1732425690570 + size: 130604 + timestamp: 1732512294400 - kind: conda name: mdurl version: 0.1.2 @@ -6030,21 +6017,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - sha256: 315878c6982f82eff3751615795a5881bd9c9fba480dba557c42301d2b3e1fb4 - md5: f1016770b1c7511a54282b96ecc0ecb0 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + sha256: 0b1430e59f40378948363378136c258aa1dbc9d9169f2bcd6468cec240fe8233 + md5: 94f0c957f1f19fec3edd8d58e6b6a7db depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22950 - timestamp: 1732425690573 + size: 22945 + timestamp: 1732512294400 - kind: conda name: multidict version: 6.1.0 @@ -7016,75 +7003,72 @@ packages: - kind: conda name: pyarrow version: 18.0.0 - build: py311h38be061_1 - build_number: 1 + build: py311h38be061_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py311h38be061_1.conda - sha256: 4248bbc50c631c824d05b2a648ee7c650960d080aa4abc0f25336726d995b6fb - md5: eeda074d8e993dac2355fa8887320359 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py311h38be061_2.conda + sha256: 8daf047b57781ceeb8ac24140af6e36006b93d33ecf41de2a9c45c0ecf9e3a48 + md5: baa4ebebfe347c50ee7ecdcd8a93a82a depends: - libarrow-acero 18.0.0.* - libarrow-dataset 18.0.0.* - libarrow-substrait 18.0.0.* - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + - pyarrow-core 18.0.0 *_2_* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: Apache-2.0 - license_family: APACHE - size: 25157 - timestamp: 1731058869216 + size: 25181 + timestamp: 1732456924036 - kind: conda name: pyarrow version: 18.0.0 - build: py311ha1ab1f8_1 - build_number: 1 + build: py311ha1ab1f8_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py311ha1ab1f8_1.conda - sha256: 5f087472e5eb7577e97c030cbc527e1c24ee290f259379e8deabcd6a17838638 - md5: 342deac3c2230b86fdd97fafaf7d22ac + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py311ha1ab1f8_2.conda + sha256: c90c884100ca29437f5ea85b1bb402e3029a22bc4cc8937fa6aac7debd78707b + md5: d42fff081da969a020ddf7a53a327c68 depends: - libarrow-acero 18.0.0.* - libarrow-dataset 18.0.0.* - libarrow-substrait 18.0.0.* - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + - pyarrow-core 18.0.0 *_2_* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: Apache-2.0 - license_family: APACHE - size: 25371 - timestamp: 1731058530169 + size: 25307 + timestamp: 1732456774372 - kind: conda name: pyarrow version: 18.0.0 - build: py311hfecb2dc_1 - build_number: 1 + build: py311hfecb2dc_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py311hfecb2dc_1.conda - sha256: 3631ef62b30e84811b26cf737d3d04af39781789998c461f7c6f671488c007f6 - md5: b3992e5e32e9d0f698b97147115e0bfe + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py311hfecb2dc_2.conda + sha256: 2169b66a318f5d3271c8ef3e969d770fe3c94129260cbcaaeeb69e34ca6666a8 + md5: ec731f5c5f73c994ff50cdb3cf5c7096 depends: - libarrow-acero 18.0.0.* - libarrow-dataset 18.0.0.* - libarrow-substrait 18.0.0.* - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + - pyarrow-core 18.0.0 *_2_* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: Apache-2.0 - license_family: APACHE - size: 25398 - timestamp: 1731059252216 + size: 25384 + timestamp: 1732457267195 - kind: conda name: pyarrow-core version: 18.0.0 - build: py311h4854187_1_cpu - build_number: 1 + build: py311h4854187_2_cpu + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py311h4854187_1_cpu.conda - sha256: 5009dceb335479761fe3efcc41aa4829cf924d19cb63dde74da08da30aff48aa - md5: 3c14bc71dda64e1eb6273a63b2561cc9 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py311h4854187_2_cpu.conda + sha256: 9e04c53771353fa687cbfb1b96dda2754825e603da3631c420287deabc303c42 + md5: c6542a932c045f492cfe296d396db10a depends: - __glibc >=2.17,<3.0.a0 - libarrow 18.0.0.* *cpu @@ -7097,18 +7081,17 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 4589659 - timestamp: 1731058468008 + size: 4577580 + timestamp: 1732456556333 - kind: conda name: pyarrow-core version: 18.0.0 - build: py311ha6d2531_1_cpu - build_number: 1 + build: py311ha6d2531_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py311ha6d2531_1_cpu.conda - sha256: 4c54d4caa850601acdd78576e3647cedf4f4b344e4ddcf34ff693a867b22e5dc - md5: 396789b43363c50fe20e2dd7bb7e492a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py311ha6d2531_2_cpu.conda + sha256: b294c120476fbc6113fb8697c52937741477f64ba6a73bafd378421adbabb1dc + md5: b69ba2d10dcb1725d1b6ab453d4a2002 depends: - libarrow 18.0.0.* *cpu - libgcc >=13 @@ -7118,21 +7101,20 @@ packages: - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 license: Apache-2.0 - license_family: APACHE - size: 4446613 - timestamp: 1731058813821 + size: 4439708 + timestamp: 1732456621 - kind: conda name: pyarrow-core version: 18.0.0 - build: py311he04fa90_1_cpu - build_number: 1 + build: py311he04fa90_2_cpu + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py311he04fa90_1_cpu.conda - sha256: 3b4bc16e3f044a4f0ac75955ddf17fb4fc4e39feef7e5af8ede834ffbf52e888 - md5: f1da706c05d2113a7a1a1d8d07a63c7d + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py311he04fa90_2_cpu.conda + sha256: e54338d770730313c1396b7f2a20010c1382f5c8d1769c0507b4618b38b6212a + md5: de0248473b5bdab3e92ba8099fb6f6fe depends: - __osx >=11.0 - libarrow 18.0.0.* *cpu @@ -7145,9 +7127,8 @@ packages: - apache-arrow-proc =*=cpu - numpy >=1.21,<3 license: Apache-2.0 - license_family: APACHE - size: 3934172 - timestamp: 1731058505049 + size: 3955951 + timestamp: 1732456749904 - kind: conda name: pycparser version: '2.22' @@ -8202,38 +8183,40 @@ packages: - kind: conda name: tokenizers version: 0.20.3 - build: py311h182c674_0 + build: py311h182c674_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py311h182c674_0.conda - sha256: d67d6c2e41455f278423e45e6a15b75178b72c74c1e5fc86bde11c6bb541b404 - md5: e921b17fbc6f84c8fcb541ad20f107dd + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py311h182c674_1.conda + sha256: e33349805a0b60a30d634dba94cb368066faf330a70dfe078ca38346904f31d0 + md5: 59f247e6b7d2fb63391c58be3e2aad56 depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2241843 - timestamp: 1730868701129 + size: 2253964 + timestamp: 1732467653745 - kind: conda name: tokenizers version: 0.20.3 - build: py311h5e37e04_0 + build: py311h5e37e04_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py311h5e37e04_0.conda - sha256: 4802838c34fbf96466e45dfebebe0c8d8f21feeaf2af83fd8843d289791e3f50 - md5: 4c258d740f87f7d158b2915256038d42 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py311h5e37e04_1.conda + sha256: 86625016fe6051d275a3e1938ba2a88a065a9ba90e961c0ca20660f6d35d7340 + md5: 4c274736765f1b78546ee040f51a1250 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 @@ -8241,16 +8224,17 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2365649 - timestamp: 1730868813351 + size: 2327871 + timestamp: 1732467841931 - kind: conda name: tokenizers version: 0.20.3 - build: py311h82b0fb8_0 + build: py311h82b0fb8_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py311h82b0fb8_0.conda - sha256: 5dc6cb3757f6b5f74457c96db35f8f965b1aaa6964fae721f41de9f5150b8574 - md5: 7e573a11736155aa74ac0a04b3ce0cfc + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py311h82b0fb8_1.conda + sha256: 91af8884a03f473f4283d4d88a169b4eada51fb974cc8351bc620fbf86212a05 + md5: 4bf21a29e0d8e5183531104c5b6445fd depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -8262,8 +8246,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1918127 - timestamp: 1730869157744 + size: 1929990 + timestamp: 1732468079805 - kind: conda name: tornado version: 6.4.1 @@ -8319,19 +8303,19 @@ packages: timestamp: 1724956239832 - kind: conda name: tqdm - version: 4.67.0 + version: 4.67.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - sha256: fb25b18cec1ebae56e7d7ebbd3e504f063b61a0fac17b1ca798fcaf205bdc874 - md5: 196a9e6ab4e036ceafa516ea036619b0 + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d + md5: 4085c9db273a148e149c03627350e22c depends: - colorama - python >=3.7 license: MPL-2.0 or MIT - size: 89434 - timestamp: 1730926216380 + size: 89484 + timestamp: 1732497312317 - kind: conda name: traitlets version: 5.14.3 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 5f1970107c..6e5fb699b9 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -44,7 +44,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 @@ -112,10 +112,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -143,7 +143,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -166,13 +166,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -217,8 +217,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda @@ -262,10 +262,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda @@ -337,7 +337,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 @@ -406,10 +406,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -437,7 +437,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -460,13 +460,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -511,8 +511,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda @@ -556,10 +556,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda @@ -631,7 +631,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 @@ -697,10 +697,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -725,7 +725,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -745,13 +745,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -796,8 +796,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda @@ -842,10 +842,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda @@ -2425,47 +2425,49 @@ packages: - kind: conda name: c-ares version: 1.34.3 - build: h5505292_0 + build: h5505292_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda - sha256: e9e0f737286f9f4173c76fb01a11ffbe87cfc2da4e99760e1e18f47851d7ae06 - md5: d0155a4f41f28628c7409ea000eeb19c + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda + sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 + md5: fb72102e8a8f9bcd38e40af09ff41c42 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 178951 - timestamp: 1731182071026 + size: 179318 + timestamp: 1732447193278 - kind: conda name: c-ares version: 1.34.3 - build: ha64f414_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda - sha256: c0ec34413744c572f2f95390bbf19189d1460ecc7fb08902287e6289d327a7bd - md5: fb47a36e80869a6580454a8606b78619 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda + sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 + md5: 0cd9ebf65479cdceb6a4888b764dafcd depends: - - __glibc >=2.28,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 215455 - timestamp: 1731181925271 + size: 214791 + timestamp: 1732447020593 - kind: conda name: c-ares version: 1.34.3 - build: heb4867d_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda - sha256: 1015d731c05ef7de298834833d680b08dea58980b907f644345bd457f9498c99 - md5: 09a6c610d002e54e18353c06ef61a253 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda + sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 + md5: ee228789a85f961d14567252a03e725f depends: - - __glibc >=2.28,<3.0.a0 + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 205575 - timestamp: 1731181837907 + size: 204857 + timestamp: 1732447031823 - kind: conda name: ca-certificates version: 2024.8.30 @@ -4173,12 +4175,12 @@ packages: - kind: conda name: libarrow version: 18.0.0 - build: h3d75c4c_8_cpu - build_number: 8 + build: h3d75c4c_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda - sha256: f40d35816c995d94d78aec26927650d7ee851cdfa86ebb1429cbd27137cc354a - md5: 704b04f2ad7725f31a22ca07d2789f76 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda + sha256: 8552a3b30a89350fa46dbee1ba06d039605e6c5f200904f2b6c57fb32b7bbbc0 + md5: ff87e5f8ad826fc724763128f1d151a1 depends: - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 @@ -4206,22 +4208,21 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 7977023 - timestamp: 1732207819418 + size: 8073099 + timestamp: 1732499447839 - kind: conda name: libarrow version: 18.0.0 - build: h94eee4b_8_cpu - build_number: 8 + build: h94eee4b_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda - sha256: aeb31e3713767d5e1d2f29bc05ba04e4cbd48fd72edf8ae66867ac5b22b94160 - md5: 8d5436adb1b35ba955c5600806d52dbc + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda + sha256: 4d59165cbb67020d5ecd819e944874ab6ff2085e496ceb47e9f23526d7d860c9 + md5: fe2841c29f3753146d4e89217d22d043 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -4250,22 +4251,21 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8712917 - timestamp: 1732208188022 + size: 8775158 + timestamp: 1732498040333 - kind: conda name: libarrow version: 18.0.0 - build: hb943b0e_8_cpu - build_number: 8 + build: hb943b0e_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda - sha256: ec1e48caf98615d4e6cb5bac539d6ddcdff37fd7a722dab599131974b2a97343 - md5: e1b2b2f162540ebea865e908c865bb9c + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda + sha256: c4c7518b2e2bd8dd4573720a500ba68665041ec486e0cf9a034bb6bc1cf94ff8 + md5: dc4cb1c42c1b348f6f272b925fab201a depends: - __osx >=11.0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -4292,190 +4292,180 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5459847 - timestamp: 1732208317959 + size: 5516035 + timestamp: 1732496751328 - kind: conda name: libarrow-acero version: 18.0.0 - build: h286801f_8_cpu - build_number: 8 + build: h286801f_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda - sha256: b74c5a10cd40e33db50392263cff9aacd6ead0f6d42107e01e92d1e57af1daf1 - md5: 7208462cfc8f9610060695ffab85ab39 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda + sha256: 2740f7cbeb633a3f6ac777b91fe726ca87d7361ac90b66a8417a9b9099189a47 + md5: 8b516d4e381d099f6bef4145ed7f1491 depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 491510 - timestamp: 1732208453361 + size: 493686 + timestamp: 1732496844787 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5888daf_8_cpu - build_number: 8 + build: h5888daf_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda - sha256: 6a33ef82a569d02b2b4664bdcc4cb6aea624dbf258921ab59afadd655e13953d - md5: 3ac00dbba52c89287214f5e8f0795e7e + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda + sha256: d714e7dfed613d1f093d60b6691c90cf2740b025860249a167ff08e6fa9c602c + md5: b36def03eb1624ad1ca6cd5866104096 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 619612 - timestamp: 1732208230617 + size: 622189 + timestamp: 1732498078370 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5ad3122_8_cpu - build_number: 8 + build: h5ad3122_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda - sha256: e1f98f83cb1c73119c17b97a5b816517df8f9c6565c60b623172b305090efeb0 - md5: 8bdef8781dbf8e3fc894bb295dca036f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda + sha256: 7e32e17d9de8856e6133180c5e10011867762057715efb943a86e46b61139825 + md5: 826de4db28e16eeac2a8c677d7702e30 depends: - - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 586395 - timestamp: 1732207853957 + size: 588517 + timestamp: 1732499522102 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h286801f_8_cpu - build_number: 8 + build: h286801f_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda - sha256: 7b503c2179880d8d755e4f81e8e058ca869227c1958c172af5ab4c62d637571d - md5: 08b882378a3e10b0be0218e5867638e3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda + sha256: 3a962b0591720234e724f887ec1975792daa987f34fc161b864183f61dd01bbb + md5: fb7cd00c96acf4ae83475fba8bd9d1ca depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_8_cpu - - libarrow-acero 18.0.0 h286801f_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow-acero 18.0.0 h286801f_9_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_8_cpu + - libparquet 18.0.0 hda0ea68_9_cpu license: Apache-2.0 - license_family: APACHE - size: 498580 - timestamp: 1732209786094 + size: 499874 + timestamp: 1732497930387 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5888daf_8_cpu - build_number: 8 + build: h5888daf_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda - sha256: 3234ede6af0403cc29258aaaca45fe426e00259c154a4c857087cd805e16f7db - md5: 84e996f59d99626426a73bd0977ef7f3 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda + sha256: d4e375d2d92c8845b4f634e7c4cc5d5643294ab74c64cfe0d4ef473816e1028a + md5: 07a60ef65486d08c96f324594dc2b5a1 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_8_cpu - - libarrow-acero 18.0.0 h5888daf_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow-acero 18.0.0 h5888daf_9_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_8_cpu + - libparquet 18.0.0 h6bd9018_9_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 594655 - timestamp: 1732208308056 + size: 596492 + timestamp: 1732498166295 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5ad3122_8_cpu - build_number: 8 + build: h5ad3122_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda - sha256: fdc5c1462ea5e7902db750ae8e281122d52f3c6d859a2283a622e3ad74effdc3 - md5: 23742cf206c1283ab6f90b1ba59ba4ed + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda + sha256: ec5655b25deb8d4868ed1fa1cd47e64e34581550ee7b024c65861aff91ef105c + md5: 763a682b8976e760576f62422ed69728 depends: - - libarrow 18.0.0 h3d75c4c_8_cpu - - libarrow-acero 18.0.0 h5ad3122_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow-acero 18.0.0 h5ad3122_9_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_8_cpu + - libparquet 18.0.0 h23a96eb_9_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 568515 - timestamp: 1732207917109 + size: 571675 + timestamp: 1732499604040 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h14ec2bd_8_cpu - build_number: 8 + build: h14ec2bd_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda - sha256: 87d66d7c8d8941d2251777ce8dba057191071e7abc98e6077171a6f657f25c9a - md5: fcd095fe4ad44d48d3dad252332d412a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda + sha256: b1def0e7420f2cecfc8eccd0c8ae24c51e58623c3924e11208d69fefc3d07525 + md5: c472236ec8407f4591d5fe682d3c7ad7 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3d75c4c_8_cpu - - libarrow-acero 18.0.0 h5ad3122_8_cpu - - libarrow-dataset 18.0.0 h5ad3122_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow-acero 18.0.0 h5ad3122_9_cpu + - libarrow-dataset 18.0.0 h5ad3122_9_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 523178 - timestamp: 1732207946621 + size: 528225 + timestamp: 1732499642412 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h5c8f2c3_8_cpu - build_number: 8 + build: h5c8f2c3_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda - sha256: ceee34b069762aa81521f8aba1cf5f613250f59db7a2e1570865332ad2da8555 - md5: faa0b78b5daac5dab1651c610204401d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda + sha256: 48b9bbcb4529cf41add523aef49acee69e0634f0e3d6f3d1101b16cb8d13cb2e + md5: a8fcd78ee422057362d928e2dd63ed8e depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h94eee4b_8_cpu - - libarrow-acero 18.0.0 h5888daf_8_cpu - - libarrow-dataset 18.0.0 h5888daf_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow-acero 18.0.0 h5888daf_9_cpu + - libarrow-dataset 18.0.0 h5888daf_9_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 527756 - timestamp: 1732208344211 + size: 530637 + timestamp: 1732498203493 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h6a6e5c5_8_cpu - build_number: 8 + build: h6a6e5c5_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda - sha256: 1d7ef3812071a036942cc9bc6742b60354aee1e168338bd18a8596bbd696e43c - md5: 7acbdff23cd797bb9ada6a3de2d7502a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda + sha256: 0623669f06c3ebd51421391a44f430986e627de1b215202aa80777a17a353b52 + md5: c0b80e0e4abd9c06a57b58c46224f8b2 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hb943b0e_8_cpu - - libarrow-acero 18.0.0 h286801f_8_cpu - - libarrow-dataset 18.0.0 h286801f_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow-acero 18.0.0 h286801f_9_cpu + - libarrow-dataset 18.0.0 h286801f_9_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - license_family: APACHE - size: 459728 - timestamp: 1732209986506 + size: 461278 + timestamp: 1732498084570 - kind: conda name: libblas version: 3.9.0 @@ -5830,61 +5820,58 @@ packages: - kind: conda name: libparquet version: 18.0.0 - build: h23a96eb_8_cpu - build_number: 8 + build: h23a96eb_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda - sha256: 23ac81fee2d87e51e7695d7ab8b4860e7ff466d449f31cf144ba4e64f409d36b - md5: 456a8374b7a9c7a9b4ced6297563d354 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda + sha256: 16a5200afeb34827cdbc80f8fbc73a6a61e8af138ba57b72ffb41fdd82455e7d + md5: b6e1289678df3e7abf18619af5e378c2 depends: - - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1121714 - timestamp: 1732207900610 + size: 1123929 + timestamp: 1732499582562 - kind: conda name: libparquet version: 18.0.0 - build: h6bd9018_8_cpu - build_number: 8 + build: h6bd9018_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda - sha256: 3183fa77b6fd965160deb512ac6035c3be2df8af9f6529af20cb2d053d177afd - md5: e2718d24a8af33752dfe0b75e3043b75 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda + sha256: 22dd2354ee45e797dd52fbb8325aea3795440821480d4572fc30e4f268239a54 + md5: 79817c62827b836349adf32b218edd95 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1211318 - timestamp: 1732208288781 + size: 1213917 + timestamp: 1732498145973 - kind: conda name: libparquet version: 18.0.0 - build: hda0ea68_8_cpu - build_number: 8 + build: hda0ea68_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda - sha256: 4d91a04771b0fcb9830b5db2c67d77ee001790df7ed8c0bd4057564c5483fb00 - md5: 74f66533d553fc03cdb21af7a5d4d84e + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda + sha256: 6e93414ddda2853bc113bb5895eefa3f65de675ee94eb86e48109196f809425c + md5: 48c0673e0a561279ac8ed3b3cba1c448 depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 882388 - timestamp: 1732209712346 + size: 883867 + timestamp: 1732497873361 - kind: conda name: libpng version: 1.6.44 @@ -6855,76 +6842,76 @@ packages: timestamp: 1713250613726 - kind: conda name: max - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - sha256: 0c51c894f4c18c5d94ff1cbee4693b276a80b3a3fc47d19579db937775dc2b33 - md5: 56c2797c044fef1819e2238ecb529a9e + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + sha256: e8544da30dc3cde2d5201181a0fb554c2fdb1a279343dc6fdc3b3699e480da65 + md5: 18ada131191a1b297d0be0d940b029f4 depends: - - max-core ==24.6.0.dev2024112405 release - - max-python >=24.6.0.dev2024112405,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112405 release - - mblack ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release + - max-python >=24.6.0.dev2024112505,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112505 release license: LicenseRef-Modular-Proprietary - size: 9929 - timestamp: 1732425690564 + size: 9930 + timestamp: 1732512294393 - kind: conda name: max-core - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda - sha256: 1d9baa3080a2553b3ee2da24f958f4a0dc50aaaf783869ab9d37ebe6161465b3 - md5: e9ef668ea8823978e2dd96f387bfe118 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda + sha256: 12ba51fe5626bd74c1efd8fdf5717feac6eefbf22efc05ce722babb0c9c123ed + md5: efc447f7345cbcf1fadb3c485c5d1a83 depends: - - mblack ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112505 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253847269 - timestamp: 1732425902635 + size: 253852848 + timestamp: 1732512311477 - kind: conda name: max-core - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda - sha256: 9d38562330f9e238eaf752b5469eae24e31a43b2a82d7970930ec0444d48efea - md5: 2703ae29a9de31839ccd0ff988b31cb7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda + sha256: b9045359f837e8baa054ebe53025af5756ff6ecf06803a401e2e4ccad36d7297 + md5: 8fcd55d2b633c9f27cc956ea7c0fa9d8 depends: - - mblack ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112505 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257476425 - timestamp: 1732425690562 + size: 257504019 + timestamp: 1732512294391 - kind: conda name: max-core - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda - sha256: c90c2628c27fe9248611e8ce01aab12ab41a481ec9b6200a8f0ddab17b8959f0 - md5: 86cdc30e3294f7272eed2df1bb2ead86 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda + sha256: 8ebbb263653bcc4b962205134f45d87f343f03513208f9ac7144f6ada5ca65ed + md5: 3d74098f452358f071362533e5518745 depends: - - mblack ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112505 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219446659 - timestamp: 1732425673927 + size: 219479698 + timestamp: 1732512237302 - kind: conda name: max-python - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.12release.conda - sha256: 2aa3d6cae52df1795fd197da31f4143827032ad9efa10701cf76d3049c805fcc - md5: f05646fc5565b832a51b6a1b6fed94e0 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.12release.conda + sha256: 553628bfa9b9759ddccec73380d63055dcfe82bd6df75f1cb03b12365a811bd7 + md5: ff7c6ff7bb937590832e17bdd742d3ea depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python 3.12.* - pillow - fastapi @@ -6945,18 +6932,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128119479 - timestamp: 1732425902648 + size: 128104249 + timestamp: 1732512311491 - kind: conda name: max-python - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.12release.conda - sha256: acb661e00a75bad48440055e4d3941eca99416e2806fd7550b20749aa11b5ffe - md5: a4c81577696a8b93a39864be898f31b7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.12release.conda + sha256: 1ccf3bfaeef2d63ab0c8d0438ae2c8c6e959790bfcff7334cbce9897dc28c24f + md5: da598be4350ad1ed46b21e07885b13cc depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python 3.12.* - pillow - fastapi @@ -6977,18 +6964,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131882789 - timestamp: 1732425690576 + size: 131886497 + timestamp: 1732512294405 - kind: conda name: max-python - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.12release.conda - sha256: 5348a5891530ce04f7715107ec312479272be38972e532943bc17a76365d4e9b - md5: 0e945ba7af7ae58d1bfa047acb1cef31 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.12release.conda + sha256: 22c4adb8497b98823bdb7b10117fbd3cff1198ead9f688f533913dedeaf3584b + md5: 8870a7f3214bc3117548074e5fe79d3c depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python 3.12.* - pillow - fastapi @@ -7009,17 +6996,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118816744 - timestamp: 1732425673931 + size: 118834124 + timestamp: 1732512237306 - kind: conda name: mblack - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - sha256: 622efd567ef94cc5ec8a0f9bae36bcb1a058f0111a915b4392e79ead42c0059e - md5: 65eefd70b4ee52631de23a0ad329aed2 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + sha256: f72d60f0534d53ce247c450b04bfb6bc67a59f408ee3534392a7d812dc5fa03c + md5: 91a2bae1d55ec1c3bdf9db8d046acd12 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7029,8 +7016,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130607 - timestamp: 1732425690570 + size: 130604 + timestamp: 1732512294400 - kind: conda name: mdurl version: 0.1.2 @@ -7063,21 +7050,21 @@ packages: timestamp: 1698947249750 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - sha256: 315878c6982f82eff3751615795a5881bd9c9fba480dba557c42301d2b3e1fb4 - md5: f1016770b1c7511a54282b96ecc0ecb0 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + sha256: 0b1430e59f40378948363378136c258aa1dbc9d9169f2bcd6468cec240fe8233 + md5: 94f0c957f1f19fec3edd8d58e6b6a7db depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22950 - timestamp: 1732425690573 + size: 22945 + timestamp: 1732512294400 - kind: conda name: multidict version: 6.1.0 @@ -8356,75 +8343,72 @@ packages: - kind: conda name: pyarrow version: 18.0.0 - build: py312h1f38498_1 - build_number: 1 + build: py312h1f38498_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_1.conda - sha256: c411c8bf7c22113a1d4ceac1c8df638a223ffcec9b4e5fc528631b64f3df7ccd - md5: 4510221533398449a8f707bda652dd27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_2.conda + sha256: 11c045b44019dbe908315aabb47491519c0a4b5ef07e97a056a9d57d07823de3 + md5: 71ea0ef18b1127e26efaedc875e1853a depends: - libarrow-acero 18.0.0.* - libarrow-dataset 18.0.0.* - libarrow-substrait 18.0.0.* - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + - pyarrow-core 18.0.0 *_2_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - license_family: APACHE - size: 25409 - timestamp: 1731058762728 + size: 25410 + timestamp: 1732456749184 - kind: conda name: pyarrow version: 18.0.0 - build: py312h7900ff3_1 - build_number: 1 + build: py312h7900ff3_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_1.conda - sha256: 948514cde269fb6874a3945c8b2c26666588ac7835eb19fa7ec11c0547250b8d - md5: ea33ac754057779cd2df785661486310 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_2.conda + sha256: 6c41b69f6cde950f9cb10b80cef1808d0081730038ef7a2675d612b2b126e9cf + md5: 3d91e33cf1a2274d52b9a1ca95bd34a0 depends: - libarrow-acero 18.0.0.* - libarrow-dataset 18.0.0.* - libarrow-substrait 18.0.0.* - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + - pyarrow-core 18.0.0 *_2_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - license_family: APACHE - size: 25161 - timestamp: 1731058699977 + size: 25195 + timestamp: 1732457103551 - kind: conda name: pyarrow version: 18.0.0 - build: py312h8025657_1 - build_number: 1 + build: py312h8025657_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_1.conda - sha256: ec1bace4edb04a2cb0bca92c378044260bf798a42aefc5ac1156826b3a4c79c8 - md5: be32cb6508ecd041d0468be137a9c60b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_2.conda + sha256: 6e892f137ec19d1159b0acc2596846674d36d450bf1469e9d19a913e995bdc3b + md5: 2b2ab50988395f978e700638f754db0a depends: - libarrow-acero 18.0.0.* - libarrow-dataset 18.0.0.* - libarrow-substrait 18.0.0.* - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + - pyarrow-core 18.0.0 *_2_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - license_family: APACHE - size: 25338 - timestamp: 1731059175489 + size: 25371 + timestamp: 1732457047763 - kind: conda name: pyarrow-core version: 18.0.0 - build: py312h01725c0_1_cpu - build_number: 1 + build: py312h01725c0_2_cpu + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_1_cpu.conda - sha256: 240ab4328ebbfd81fe4f93cacd24fc44cd9e58edf9a95acc492e1025525f9a82 - md5: c8ae967c39337603035d59c8994c23f9 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_2_cpu.conda + sha256: b4457d8e702f7d2eeac03917a2375ebe39cd1f0cb1aa7e4d2864865c29c0bd00 + md5: 190d4fccaa0d28d9f3a7489add69294e depends: - __glibc >=2.17,<3.0.a0 - libarrow 18.0.0.* *cpu @@ -8437,18 +8421,17 @@ packages: - apache-arrow-proc =*=cpu - numpy >=1.21,<3 license: Apache-2.0 - license_family: APACHE - size: 4578590 - timestamp: 1731058358731 + size: 4572029 + timestamp: 1732456649794 - kind: conda name: pyarrow-core version: 18.0.0 - build: py312h66f7834_1_cpu - build_number: 1 + build: py312h66f7834_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_1_cpu.conda - sha256: ded4bd91b1e0f6eaee9bdd4cba76efb424a3279d69946aec8fc65671fae213eb - md5: 8d857df755335de36fc7d10f897ac7c5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_2_cpu.conda + sha256: 61bdcd4b7900348af7990042f4d7e326f9aa1c75720e47e4d278f902d8efcda8 + md5: 273c8148c2203863fd566d5396d2cc6b depends: - libarrow 18.0.0.* *cpu - libgcc >=13 @@ -8458,21 +8441,20 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 license: Apache-2.0 - license_family: APACHE - size: 4408381 - timestamp: 1731058794401 + size: 4397059 + timestamp: 1732456712314 - kind: conda name: pyarrow-core version: 18.0.0 - build: py312hc40f475_1_cpu - build_number: 1 + build: py312hc40f475_2_cpu + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_1_cpu.conda - sha256: afa1d9cfb76ab37ae837c6a68f9a79e0a25f96da826c373be9728fed152eaec9 - md5: 801f7771b21af9ca4016d9c2f9ff2a08 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_2_cpu.conda + sha256: 83633ec13d303fee24c6f45a8fca0fedad4a80e7ea552a4f06b5643a26ba99f1 + md5: 35308386ec8499ac7114af0edd8de3a2 depends: - __osx >=11.0 - libarrow 18.0.0.* *cpu @@ -8482,12 +8464,11 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 3915622 - timestamp: 1731058726842 + size: 3918835 + timestamp: 1732456722657 - kind: conda name: pycparser version: '2.22' @@ -9817,38 +9798,40 @@ packages: - kind: conda name: tokenizers version: 0.20.3 - build: py312h8360d73_0 + build: py312h8360d73_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_0.conda - sha256: 2b48bbbcb2b08bc9039e5a5a5eabbf1eb1821795ff6f900b17d8d3d5c5c03d93 - md5: 1beb85f5436b30da8576a1af2a3d2103 + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_1.conda + sha256: 852868de63102c2f16640e688fd500ca10801b667b5fd350144ebde391576d5a + md5: 228c10e93df46415c452f78e8ae57df9 depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2238863 - timestamp: 1730868742992 + size: 2250848 + timestamp: 1732467704757 - kind: conda name: tokenizers version: 0.20.3 - build: py312ha0d6ea1_0 + build: py312ha0d6ea1_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_0.conda - sha256: d24effa51dd060bdd0a2a532a200140874099a36da0dbf73a80a2056467bd7fd - md5: 5f8b2f868dce23e87f320d219f15157f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_1.conda + sha256: 67c7b487e2b33164d1c1f5af7b9b0d09f5dd88b44fb365d4614e35dc620bc6db + md5: f06befe91e2cbd9a60d200f515d85941 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -9856,16 +9839,17 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2361365 - timestamp: 1730868864797 + size: 2327232 + timestamp: 1732467837340 - kind: conda name: tokenizers version: 0.20.3 - build: py312hf3e4074_0 + build: py312hf3e4074_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_0.conda - sha256: 36bfc57262489d8a730aa309e3694053405df57d42675d3c9f8e7ab45bde6a1f - md5: bf872619ecf7b22776aae2b09408266c + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_1.conda + sha256: 7423f3b3c961262c6170fa20d4bfdf61a1ba5b4ad472572fc8d0d11a36971ab6 + md5: 365a21a164c0a86a6726f3adcb4207f4 depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -9877,8 +9861,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1917015 - timestamp: 1730869025269 + size: 1925335 + timestamp: 1732467947397 - kind: conda name: tomli version: 2.1.0 @@ -9949,19 +9933,19 @@ packages: timestamp: 1724956252424 - kind: conda name: tqdm - version: 4.67.0 + version: 4.67.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - sha256: fb25b18cec1ebae56e7d7ebbd3e504f063b61a0fac17b1ca798fcaf205bdc874 - md5: 196a9e6ab4e036ceafa516ea036619b0 + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d + md5: 4085c9db273a148e149c03627350e22c depends: - colorama - python >=3.7 license: MPL-2.0 or MIT - size: 89434 - timestamp: 1730926216380 + size: 89484 + timestamp: 1732497312317 - kind: conda name: traitlets version: 5.14.3 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 5889616f1e..6d8712e6ed 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -36,7 +36,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda @@ -78,10 +78,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -165,8 +165,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda @@ -200,9 +200,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda @@ -258,7 +258,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda @@ -301,10 +301,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -332,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -388,8 +388,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda @@ -423,9 +423,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda @@ -480,7 +480,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda @@ -520,10 +520,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -548,7 +548,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -601,8 +601,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda @@ -635,9 +635,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda @@ -2021,47 +2021,49 @@ packages: - kind: conda name: c-ares version: 1.34.3 - build: h5505292_0 + build: h5505292_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda - sha256: e9e0f737286f9f4173c76fb01a11ffbe87cfc2da4e99760e1e18f47851d7ae06 - md5: d0155a4f41f28628c7409ea000eeb19c + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda + sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 + md5: fb72102e8a8f9bcd38e40af09ff41c42 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 178951 - timestamp: 1731182071026 + size: 179318 + timestamp: 1732447193278 - kind: conda name: c-ares version: 1.34.3 - build: ha64f414_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda - sha256: c0ec34413744c572f2f95390bbf19189d1460ecc7fb08902287e6289d327a7bd - md5: fb47a36e80869a6580454a8606b78619 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda + sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 + md5: 0cd9ebf65479cdceb6a4888b764dafcd depends: - - __glibc >=2.28,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 215455 - timestamp: 1731181925271 + size: 214791 + timestamp: 1732447020593 - kind: conda name: c-ares version: 1.34.3 - build: heb4867d_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda - sha256: 1015d731c05ef7de298834833d680b08dea58980b907f644345bd457f9498c99 - md5: 09a6c610d002e54e18353c06ef61a253 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda + sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 + md5: ee228789a85f961d14567252a03e725f depends: - - __glibc >=2.28,<3.0.a0 + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 205575 - timestamp: 1731181837907 + size: 204857 + timestamp: 1732447031823 - kind: conda name: ca-certificates version: 2024.8.30 @@ -3171,12 +3173,12 @@ packages: - kind: conda name: libarrow version: 18.0.0 - build: h3d75c4c_8_cpu - build_number: 8 + build: h3d75c4c_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda - sha256: f40d35816c995d94d78aec26927650d7ee851cdfa86ebb1429cbd27137cc354a - md5: 704b04f2ad7725f31a22ca07d2789f76 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda + sha256: 8552a3b30a89350fa46dbee1ba06d039605e6c5f200904f2b6c57fb32b7bbbc0 + md5: ff87e5f8ad826fc724763128f1d151a1 depends: - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 @@ -3204,22 +3206,21 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 7977023 - timestamp: 1732207819418 + size: 8073099 + timestamp: 1732499447839 - kind: conda name: libarrow version: 18.0.0 - build: h94eee4b_8_cpu - build_number: 8 + build: h94eee4b_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda - sha256: aeb31e3713767d5e1d2f29bc05ba04e4cbd48fd72edf8ae66867ac5b22b94160 - md5: 8d5436adb1b35ba955c5600806d52dbc + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda + sha256: 4d59165cbb67020d5ecd819e944874ab6ff2085e496ceb47e9f23526d7d860c9 + md5: fe2841c29f3753146d4e89217d22d043 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -3248,22 +3249,21 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8712917 - timestamp: 1732208188022 + size: 8775158 + timestamp: 1732498040333 - kind: conda name: libarrow version: 18.0.0 - build: hb943b0e_8_cpu - build_number: 8 + build: hb943b0e_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda - sha256: ec1e48caf98615d4e6cb5bac539d6ddcdff37fd7a722dab599131974b2a97343 - md5: e1b2b2f162540ebea865e908c865bb9c + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda + sha256: c4c7518b2e2bd8dd4573720a500ba68665041ec486e0cf9a034bb6bc1cf94ff8 + md5: dc4cb1c42c1b348f6f272b925fab201a depends: - __osx >=11.0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -3290,190 +3290,180 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5459847 - timestamp: 1732208317959 + size: 5516035 + timestamp: 1732496751328 - kind: conda name: libarrow-acero version: 18.0.0 - build: h286801f_8_cpu - build_number: 8 + build: h286801f_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda - sha256: b74c5a10cd40e33db50392263cff9aacd6ead0f6d42107e01e92d1e57af1daf1 - md5: 7208462cfc8f9610060695ffab85ab39 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda + sha256: 2740f7cbeb633a3f6ac777b91fe726ca87d7361ac90b66a8417a9b9099189a47 + md5: 8b516d4e381d099f6bef4145ed7f1491 depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 491510 - timestamp: 1732208453361 + size: 493686 + timestamp: 1732496844787 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5888daf_8_cpu - build_number: 8 + build: h5888daf_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda - sha256: 6a33ef82a569d02b2b4664bdcc4cb6aea624dbf258921ab59afadd655e13953d - md5: 3ac00dbba52c89287214f5e8f0795e7e + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda + sha256: d714e7dfed613d1f093d60b6691c90cf2740b025860249a167ff08e6fa9c602c + md5: b36def03eb1624ad1ca6cd5866104096 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 619612 - timestamp: 1732208230617 + size: 622189 + timestamp: 1732498078370 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5ad3122_8_cpu - build_number: 8 + build: h5ad3122_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda - sha256: e1f98f83cb1c73119c17b97a5b816517df8f9c6565c60b623172b305090efeb0 - md5: 8bdef8781dbf8e3fc894bb295dca036f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda + sha256: 7e32e17d9de8856e6133180c5e10011867762057715efb943a86e46b61139825 + md5: 826de4db28e16eeac2a8c677d7702e30 depends: - - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 586395 - timestamp: 1732207853957 + size: 588517 + timestamp: 1732499522102 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h286801f_8_cpu - build_number: 8 + build: h286801f_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda - sha256: 7b503c2179880d8d755e4f81e8e058ca869227c1958c172af5ab4c62d637571d - md5: 08b882378a3e10b0be0218e5867638e3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda + sha256: 3a962b0591720234e724f887ec1975792daa987f34fc161b864183f61dd01bbb + md5: fb7cd00c96acf4ae83475fba8bd9d1ca depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_8_cpu - - libarrow-acero 18.0.0 h286801f_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow-acero 18.0.0 h286801f_9_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_8_cpu + - libparquet 18.0.0 hda0ea68_9_cpu license: Apache-2.0 - license_family: APACHE - size: 498580 - timestamp: 1732209786094 + size: 499874 + timestamp: 1732497930387 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5888daf_8_cpu - build_number: 8 + build: h5888daf_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda - sha256: 3234ede6af0403cc29258aaaca45fe426e00259c154a4c857087cd805e16f7db - md5: 84e996f59d99626426a73bd0977ef7f3 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda + sha256: d4e375d2d92c8845b4f634e7c4cc5d5643294ab74c64cfe0d4ef473816e1028a + md5: 07a60ef65486d08c96f324594dc2b5a1 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_8_cpu - - libarrow-acero 18.0.0 h5888daf_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow-acero 18.0.0 h5888daf_9_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_8_cpu + - libparquet 18.0.0 h6bd9018_9_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 594655 - timestamp: 1732208308056 + size: 596492 + timestamp: 1732498166295 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5ad3122_8_cpu - build_number: 8 + build: h5ad3122_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda - sha256: fdc5c1462ea5e7902db750ae8e281122d52f3c6d859a2283a622e3ad74effdc3 - md5: 23742cf206c1283ab6f90b1ba59ba4ed + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda + sha256: ec5655b25deb8d4868ed1fa1cd47e64e34581550ee7b024c65861aff91ef105c + md5: 763a682b8976e760576f62422ed69728 depends: - - libarrow 18.0.0 h3d75c4c_8_cpu - - libarrow-acero 18.0.0 h5ad3122_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow-acero 18.0.0 h5ad3122_9_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_8_cpu + - libparquet 18.0.0 h23a96eb_9_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 568515 - timestamp: 1732207917109 + size: 571675 + timestamp: 1732499604040 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h14ec2bd_8_cpu - build_number: 8 + build: h14ec2bd_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda - sha256: 87d66d7c8d8941d2251777ce8dba057191071e7abc98e6077171a6f657f25c9a - md5: fcd095fe4ad44d48d3dad252332d412a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda + sha256: b1def0e7420f2cecfc8eccd0c8ae24c51e58623c3924e11208d69fefc3d07525 + md5: c472236ec8407f4591d5fe682d3c7ad7 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3d75c4c_8_cpu - - libarrow-acero 18.0.0 h5ad3122_8_cpu - - libarrow-dataset 18.0.0 h5ad3122_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow-acero 18.0.0 h5ad3122_9_cpu + - libarrow-dataset 18.0.0 h5ad3122_9_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 523178 - timestamp: 1732207946621 + size: 528225 + timestamp: 1732499642412 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h5c8f2c3_8_cpu - build_number: 8 + build: h5c8f2c3_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda - sha256: ceee34b069762aa81521f8aba1cf5f613250f59db7a2e1570865332ad2da8555 - md5: faa0b78b5daac5dab1651c610204401d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda + sha256: 48b9bbcb4529cf41add523aef49acee69e0634f0e3d6f3d1101b16cb8d13cb2e + md5: a8fcd78ee422057362d928e2dd63ed8e depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h94eee4b_8_cpu - - libarrow-acero 18.0.0 h5888daf_8_cpu - - libarrow-dataset 18.0.0 h5888daf_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow-acero 18.0.0 h5888daf_9_cpu + - libarrow-dataset 18.0.0 h5888daf_9_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 527756 - timestamp: 1732208344211 + size: 530637 + timestamp: 1732498203493 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h6a6e5c5_8_cpu - build_number: 8 + build: h6a6e5c5_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda - sha256: 1d7ef3812071a036942cc9bc6742b60354aee1e168338bd18a8596bbd696e43c - md5: 7acbdff23cd797bb9ada6a3de2d7502a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda + sha256: 0623669f06c3ebd51421391a44f430986e627de1b215202aa80777a17a353b52 + md5: c0b80e0e4abd9c06a57b58c46224f8b2 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hb943b0e_8_cpu - - libarrow-acero 18.0.0 h286801f_8_cpu - - libarrow-dataset 18.0.0 h286801f_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow-acero 18.0.0 h286801f_9_cpu + - libarrow-dataset 18.0.0 h286801f_9_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - license_family: APACHE - size: 459728 - timestamp: 1732209986506 + size: 461278 + timestamp: 1732498084570 - kind: conda name: libblas version: 3.9.0 @@ -4828,61 +4818,58 @@ packages: - kind: conda name: libparquet version: 18.0.0 - build: h23a96eb_8_cpu - build_number: 8 + build: h23a96eb_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda - sha256: 23ac81fee2d87e51e7695d7ab8b4860e7ff466d449f31cf144ba4e64f409d36b - md5: 456a8374b7a9c7a9b4ced6297563d354 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda + sha256: 16a5200afeb34827cdbc80f8fbc73a6a61e8af138ba57b72ffb41fdd82455e7d + md5: b6e1289678df3e7abf18619af5e378c2 depends: - - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1121714 - timestamp: 1732207900610 + size: 1123929 + timestamp: 1732499582562 - kind: conda name: libparquet version: 18.0.0 - build: h6bd9018_8_cpu - build_number: 8 + build: h6bd9018_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda - sha256: 3183fa77b6fd965160deb512ac6035c3be2df8af9f6529af20cb2d053d177afd - md5: e2718d24a8af33752dfe0b75e3043b75 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda + sha256: 22dd2354ee45e797dd52fbb8325aea3795440821480d4572fc30e4f268239a54 + md5: 79817c62827b836349adf32b218edd95 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1211318 - timestamp: 1732208288781 + size: 1213917 + timestamp: 1732498145973 - kind: conda name: libparquet version: 18.0.0 - build: hda0ea68_8_cpu - build_number: 8 + build: hda0ea68_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda - sha256: 4d91a04771b0fcb9830b5db2c67d77ee001790df7ed8c0bd4057564c5483fb00 - md5: 74f66533d553fc03cdb21af7a5d4d84e + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda + sha256: 6e93414ddda2853bc113bb5895eefa3f65de675ee94eb86e48109196f809425c + md5: 48c0673e0a561279ac8ed3b3cba1c448 depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 882388 - timestamp: 1732209712346 + size: 883867 + timestamp: 1732497873361 - kind: conda name: libpng version: 1.6.44 @@ -5837,76 +5824,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - sha256: 0c51c894f4c18c5d94ff1cbee4693b276a80b3a3fc47d19579db937775dc2b33 - md5: 56c2797c044fef1819e2238ecb529a9e - depends: - - max-core ==24.6.0.dev2024112405 release - - max-python >=24.6.0.dev2024112405,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112405 release - - mblack ==24.6.0.dev2024112405 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + sha256: e8544da30dc3cde2d5201181a0fb554c2fdb1a279343dc6fdc3b3699e480da65 + md5: 18ada131191a1b297d0be0d940b029f4 + depends: + - max-core ==24.6.0.dev2024112505 release + - max-python >=24.6.0.dev2024112505,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112505 release license: LicenseRef-Modular-Proprietary - size: 9929 - timestamp: 1732425690564 + size: 9930 + timestamp: 1732512294393 - kind: conda name: max-core - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda - sha256: 1d9baa3080a2553b3ee2da24f958f4a0dc50aaaf783869ab9d37ebe6161465b3 - md5: e9ef668ea8823978e2dd96f387bfe118 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda + sha256: 12ba51fe5626bd74c1efd8fdf5717feac6eefbf22efc05ce722babb0c9c123ed + md5: efc447f7345cbcf1fadb3c485c5d1a83 depends: - - mblack ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112505 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253847269 - timestamp: 1732425902635 + size: 253852848 + timestamp: 1732512311477 - kind: conda name: max-core - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda - sha256: 9d38562330f9e238eaf752b5469eae24e31a43b2a82d7970930ec0444d48efea - md5: 2703ae29a9de31839ccd0ff988b31cb7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda + sha256: b9045359f837e8baa054ebe53025af5756ff6ecf06803a401e2e4ccad36d7297 + md5: 8fcd55d2b633c9f27cc956ea7c0fa9d8 depends: - - mblack ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112505 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257476425 - timestamp: 1732425690562 + size: 257504019 + timestamp: 1732512294391 - kind: conda name: max-core - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda - sha256: c90c2628c27fe9248611e8ce01aab12ab41a481ec9b6200a8f0ddab17b8959f0 - md5: 86cdc30e3294f7272eed2df1bb2ead86 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda + sha256: 8ebbb263653bcc4b962205134f45d87f343f03513208f9ac7144f6ada5ca65ed + md5: 3d74098f452358f071362533e5518745 depends: - - mblack ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112505 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219446659 - timestamp: 1732425673927 + size: 219479698 + timestamp: 1732512237302 - kind: conda name: max-python - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.12release.conda - sha256: 2aa3d6cae52df1795fd197da31f4143827032ad9efa10701cf76d3049c805fcc - md5: f05646fc5565b832a51b6a1b6fed94e0 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.12release.conda + sha256: 553628bfa9b9759ddccec73380d63055dcfe82bd6df75f1cb03b12365a811bd7 + md5: ff7c6ff7bb937590832e17bdd742d3ea depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python 3.12.* - pillow - fastapi @@ -5927,18 +5914,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128119479 - timestamp: 1732425902648 + size: 128104249 + timestamp: 1732512311491 - kind: conda name: max-python - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.12release.conda - sha256: acb661e00a75bad48440055e4d3941eca99416e2806fd7550b20749aa11b5ffe - md5: a4c81577696a8b93a39864be898f31b7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.12release.conda + sha256: 1ccf3bfaeef2d63ab0c8d0438ae2c8c6e959790bfcff7334cbce9897dc28c24f + md5: da598be4350ad1ed46b21e07885b13cc depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python 3.12.* - pillow - fastapi @@ -5959,18 +5946,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131882789 - timestamp: 1732425690576 + size: 131886497 + timestamp: 1732512294405 - kind: conda name: max-python - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.12release.conda - sha256: 5348a5891530ce04f7715107ec312479272be38972e532943bc17a76365d4e9b - md5: 0e945ba7af7ae58d1bfa047acb1cef31 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.12release.conda + sha256: 22c4adb8497b98823bdb7b10117fbd3cff1198ead9f688f533913dedeaf3584b + md5: 8870a7f3214bc3117548074e5fe79d3c depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python 3.12.* - pillow - fastapi @@ -5991,17 +5978,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118816744 - timestamp: 1732425673931 + size: 118834124 + timestamp: 1732512237306 - kind: conda name: mblack - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - sha256: 622efd567ef94cc5ec8a0f9bae36bcb1a058f0111a915b4392e79ead42c0059e - md5: 65eefd70b4ee52631de23a0ad329aed2 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + sha256: f72d60f0534d53ce247c450b04bfb6bc67a59f408ee3534392a7d812dc5fa03c + md5: 91a2bae1d55ec1c3bdf9db8d046acd12 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6011,8 +5998,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130607 - timestamp: 1732425690570 + size: 130604 + timestamp: 1732512294400 - kind: conda name: mdurl version: 0.1.2 @@ -6030,21 +6017,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - sha256: 315878c6982f82eff3751615795a5881bd9c9fba480dba557c42301d2b3e1fb4 - md5: f1016770b1c7511a54282b96ecc0ecb0 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + sha256: 0b1430e59f40378948363378136c258aa1dbc9d9169f2bcd6468cec240fe8233 + md5: 94f0c957f1f19fec3edd8d58e6b6a7db depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22950 - timestamp: 1732425690573 + size: 22945 + timestamp: 1732512294400 - kind: conda name: multidict version: 6.1.0 @@ -7016,75 +7003,72 @@ packages: - kind: conda name: pyarrow version: 18.0.0 - build: py312h1f38498_1 - build_number: 1 + build: py312h1f38498_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_1.conda - sha256: c411c8bf7c22113a1d4ceac1c8df638a223ffcec9b4e5fc528631b64f3df7ccd - md5: 4510221533398449a8f707bda652dd27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_2.conda + sha256: 11c045b44019dbe908315aabb47491519c0a4b5ef07e97a056a9d57d07823de3 + md5: 71ea0ef18b1127e26efaedc875e1853a depends: - libarrow-acero 18.0.0.* - libarrow-dataset 18.0.0.* - libarrow-substrait 18.0.0.* - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + - pyarrow-core 18.0.0 *_2_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - license_family: APACHE - size: 25409 - timestamp: 1731058762728 + size: 25410 + timestamp: 1732456749184 - kind: conda name: pyarrow version: 18.0.0 - build: py312h7900ff3_1 - build_number: 1 + build: py312h7900ff3_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_1.conda - sha256: 948514cde269fb6874a3945c8b2c26666588ac7835eb19fa7ec11c0547250b8d - md5: ea33ac754057779cd2df785661486310 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_2.conda + sha256: 6c41b69f6cde950f9cb10b80cef1808d0081730038ef7a2675d612b2b126e9cf + md5: 3d91e33cf1a2274d52b9a1ca95bd34a0 depends: - libarrow-acero 18.0.0.* - libarrow-dataset 18.0.0.* - libarrow-substrait 18.0.0.* - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + - pyarrow-core 18.0.0 *_2_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - license_family: APACHE - size: 25161 - timestamp: 1731058699977 + size: 25195 + timestamp: 1732457103551 - kind: conda name: pyarrow version: 18.0.0 - build: py312h8025657_1 - build_number: 1 + build: py312h8025657_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_1.conda - sha256: ec1bace4edb04a2cb0bca92c378044260bf798a42aefc5ac1156826b3a4c79c8 - md5: be32cb6508ecd041d0468be137a9c60b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_2.conda + sha256: 6e892f137ec19d1159b0acc2596846674d36d450bf1469e9d19a913e995bdc3b + md5: 2b2ab50988395f978e700638f754db0a depends: - libarrow-acero 18.0.0.* - libarrow-dataset 18.0.0.* - libarrow-substrait 18.0.0.* - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + - pyarrow-core 18.0.0 *_2_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - license_family: APACHE - size: 25338 - timestamp: 1731059175489 + size: 25371 + timestamp: 1732457047763 - kind: conda name: pyarrow-core version: 18.0.0 - build: py312h01725c0_1_cpu - build_number: 1 + build: py312h01725c0_2_cpu + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_1_cpu.conda - sha256: 240ab4328ebbfd81fe4f93cacd24fc44cd9e58edf9a95acc492e1025525f9a82 - md5: c8ae967c39337603035d59c8994c23f9 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_2_cpu.conda + sha256: b4457d8e702f7d2eeac03917a2375ebe39cd1f0cb1aa7e4d2864865c29c0bd00 + md5: 190d4fccaa0d28d9f3a7489add69294e depends: - __glibc >=2.17,<3.0.a0 - libarrow 18.0.0.* *cpu @@ -7097,18 +7081,17 @@ packages: - apache-arrow-proc =*=cpu - numpy >=1.21,<3 license: Apache-2.0 - license_family: APACHE - size: 4578590 - timestamp: 1731058358731 + size: 4572029 + timestamp: 1732456649794 - kind: conda name: pyarrow-core version: 18.0.0 - build: py312h66f7834_1_cpu - build_number: 1 + build: py312h66f7834_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_1_cpu.conda - sha256: ded4bd91b1e0f6eaee9bdd4cba76efb424a3279d69946aec8fc65671fae213eb - md5: 8d857df755335de36fc7d10f897ac7c5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_2_cpu.conda + sha256: 61bdcd4b7900348af7990042f4d7e326f9aa1c75720e47e4d278f902d8efcda8 + md5: 273c8148c2203863fd566d5396d2cc6b depends: - libarrow 18.0.0.* *cpu - libgcc >=13 @@ -7118,21 +7101,20 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 license: Apache-2.0 - license_family: APACHE - size: 4408381 - timestamp: 1731058794401 + size: 4397059 + timestamp: 1732456712314 - kind: conda name: pyarrow-core version: 18.0.0 - build: py312hc40f475_1_cpu - build_number: 1 + build: py312hc40f475_2_cpu + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_1_cpu.conda - sha256: afa1d9cfb76ab37ae837c6a68f9a79e0a25f96da826c373be9728fed152eaec9 - md5: 801f7771b21af9ca4016d9c2f9ff2a08 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_2_cpu.conda + sha256: 83633ec13d303fee24c6f45a8fca0fedad4a80e7ea552a4f06b5643a26ba99f1 + md5: 35308386ec8499ac7114af0edd8de3a2 depends: - __osx >=11.0 - libarrow 18.0.0.* *cpu @@ -7142,12 +7124,11 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 3915622 - timestamp: 1731058726842 + size: 3918835 + timestamp: 1732456722657 - kind: conda name: pycparser version: '2.22' @@ -8199,38 +8180,40 @@ packages: - kind: conda name: tokenizers version: 0.20.3 - build: py312h8360d73_0 + build: py312h8360d73_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_0.conda - sha256: 2b48bbbcb2b08bc9039e5a5a5eabbf1eb1821795ff6f900b17d8d3d5c5c03d93 - md5: 1beb85f5436b30da8576a1af2a3d2103 + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_1.conda + sha256: 852868de63102c2f16640e688fd500ca10801b667b5fd350144ebde391576d5a + md5: 228c10e93df46415c452f78e8ae57df9 depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2238863 - timestamp: 1730868742992 + size: 2250848 + timestamp: 1732467704757 - kind: conda name: tokenizers version: 0.20.3 - build: py312ha0d6ea1_0 + build: py312ha0d6ea1_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_0.conda - sha256: d24effa51dd060bdd0a2a532a200140874099a36da0dbf73a80a2056467bd7fd - md5: 5f8b2f868dce23e87f320d219f15157f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_1.conda + sha256: 67c7b487e2b33164d1c1f5af7b9b0d09f5dd88b44fb365d4614e35dc620bc6db + md5: f06befe91e2cbd9a60d200f515d85941 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -8238,16 +8221,17 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2361365 - timestamp: 1730868864797 + size: 2327232 + timestamp: 1732467837340 - kind: conda name: tokenizers version: 0.20.3 - build: py312hf3e4074_0 + build: py312hf3e4074_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_0.conda - sha256: 36bfc57262489d8a730aa309e3694053405df57d42675d3c9f8e7ab45bde6a1f - md5: bf872619ecf7b22776aae2b09408266c + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_1.conda + sha256: 7423f3b3c961262c6170fa20d4bfdf61a1ba5b4ad472572fc8d0d11a36971ab6 + md5: 365a21a164c0a86a6726f3adcb4207f4 depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -8259,8 +8243,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1917015 - timestamp: 1730869025269 + size: 1925335 + timestamp: 1732467947397 - kind: conda name: tornado version: 6.4.1 @@ -8316,19 +8300,19 @@ packages: timestamp: 1724956252424 - kind: conda name: tqdm - version: 4.67.0 + version: 4.67.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - sha256: fb25b18cec1ebae56e7d7ebbd3e504f063b61a0fac17b1ca798fcaf205bdc874 - md5: 196a9e6ab4e036ceafa516ea036619b0 + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d + md5: 4085c9db273a148e149c03627350e22c depends: - colorama - python >=3.7 license: MPL-2.0 or MIT - size: 89434 - timestamp: 1730926216380 + size: 89484 + timestamp: 1732497312317 - kind: conda name: traitlets version: 5.14.3 diff --git a/magic.lock b/magic.lock index 78ce8a0308..19a7d3d373 100644 --- a/magic.lock +++ b/magic.lock @@ -36,7 +36,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda @@ -78,10 +78,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -132,12 +132,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -166,8 +166,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda @@ -201,9 +201,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda @@ -259,7 +259,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda @@ -302,10 +302,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -333,7 +333,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -356,12 +356,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -390,8 +390,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda @@ -425,9 +425,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda @@ -482,7 +482,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda @@ -522,10 +522,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -550,7 +550,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -570,12 +570,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -604,8 +604,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda @@ -638,9 +638,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda @@ -2024,47 +2024,49 @@ packages: - kind: conda name: c-ares version: 1.34.3 - build: h5505292_0 + build: h5505292_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_0.conda - sha256: e9e0f737286f9f4173c76fb01a11ffbe87cfc2da4e99760e1e18f47851d7ae06 - md5: d0155a4f41f28628c7409ea000eeb19c + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda + sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 + md5: fb72102e8a8f9bcd38e40af09ff41c42 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 178951 - timestamp: 1731182071026 + size: 179318 + timestamp: 1732447193278 - kind: conda name: c-ares version: 1.34.3 - build: ha64f414_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-ha64f414_0.conda - sha256: c0ec34413744c572f2f95390bbf19189d1460ecc7fb08902287e6289d327a7bd - md5: fb47a36e80869a6580454a8606b78619 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda + sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 + md5: 0cd9ebf65479cdceb6a4888b764dafcd depends: - - __glibc >=2.28,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 215455 - timestamp: 1731181925271 + size: 214791 + timestamp: 1732447020593 - kind: conda name: c-ares version: 1.34.3 - build: heb4867d_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-heb4867d_0.conda - sha256: 1015d731c05ef7de298834833d680b08dea58980b907f644345bd457f9498c99 - md5: 09a6c610d002e54e18353c06ef61a253 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda + sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 + md5: ee228789a85f961d14567252a03e725f depends: - - __glibc >=2.28,<3.0.a0 + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 205575 - timestamp: 1731181837907 + size: 204857 + timestamp: 1732447031823 - kind: conda name: ca-certificates version: 2024.8.30 @@ -3174,12 +3176,12 @@ packages: - kind: conda name: libarrow version: 18.0.0 - build: h3d75c4c_8_cpu - build_number: 8 + build: h3d75c4c_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_8_cpu.conda - sha256: f40d35816c995d94d78aec26927650d7ee851cdfa86ebb1429cbd27137cc354a - md5: 704b04f2ad7725f31a22ca07d2789f76 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda + sha256: 8552a3b30a89350fa46dbee1ba06d039605e6c5f200904f2b6c57fb32b7bbbc0 + md5: ff87e5f8ad826fc724763128f1d151a1 depends: - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 @@ -3207,22 +3209,21 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 7977023 - timestamp: 1732207819418 + size: 8073099 + timestamp: 1732499447839 - kind: conda name: libarrow version: 18.0.0 - build: h94eee4b_8_cpu - build_number: 8 + build: h94eee4b_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_8_cpu.conda - sha256: aeb31e3713767d5e1d2f29bc05ba04e4cbd48fd72edf8ae66867ac5b22b94160 - md5: 8d5436adb1b35ba955c5600806d52dbc + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda + sha256: 4d59165cbb67020d5ecd819e944874ab6ff2085e496ceb47e9f23526d7d860c9 + md5: fe2841c29f3753146d4e89217d22d043 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -3251,22 +3252,21 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8712917 - timestamp: 1732208188022 + size: 8775158 + timestamp: 1732498040333 - kind: conda name: libarrow version: 18.0.0 - build: hb943b0e_8_cpu - build_number: 8 + build: hb943b0e_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_8_cpu.conda - sha256: ec1e48caf98615d4e6cb5bac539d6ddcdff37fd7a722dab599131974b2a97343 - md5: e1b2b2f162540ebea865e908c865bb9c + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda + sha256: c4c7518b2e2bd8dd4573720a500ba68665041ec486e0cf9a034bb6bc1cf94ff8 + md5: dc4cb1c42c1b348f6f272b925fab201a depends: - __osx >=11.0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -3293,190 +3293,180 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5459847 - timestamp: 1732208317959 + size: 5516035 + timestamp: 1732496751328 - kind: conda name: libarrow-acero version: 18.0.0 - build: h286801f_8_cpu - build_number: 8 + build: h286801f_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_8_cpu.conda - sha256: b74c5a10cd40e33db50392263cff9aacd6ead0f6d42107e01e92d1e57af1daf1 - md5: 7208462cfc8f9610060695ffab85ab39 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda + sha256: 2740f7cbeb633a3f6ac777b91fe726ca87d7361ac90b66a8417a9b9099189a47 + md5: 8b516d4e381d099f6bef4145ed7f1491 depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 491510 - timestamp: 1732208453361 + size: 493686 + timestamp: 1732496844787 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5888daf_8_cpu - build_number: 8 + build: h5888daf_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_8_cpu.conda - sha256: 6a33ef82a569d02b2b4664bdcc4cb6aea624dbf258921ab59afadd655e13953d - md5: 3ac00dbba52c89287214f5e8f0795e7e + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda + sha256: d714e7dfed613d1f093d60b6691c90cf2740b025860249a167ff08e6fa9c602c + md5: b36def03eb1624ad1ca6cd5866104096 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 619612 - timestamp: 1732208230617 + size: 622189 + timestamp: 1732498078370 - kind: conda name: libarrow-acero version: 18.0.0 - build: h5ad3122_8_cpu - build_number: 8 + build: h5ad3122_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_8_cpu.conda - sha256: e1f98f83cb1c73119c17b97a5b816517df8f9c6565c60b623172b305090efeb0 - md5: 8bdef8781dbf8e3fc894bb295dca036f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda + sha256: 7e32e17d9de8856e6133180c5e10011867762057715efb943a86e46b61139825 + md5: 826de4db28e16eeac2a8c677d7702e30 depends: - - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 586395 - timestamp: 1732207853957 + size: 588517 + timestamp: 1732499522102 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h286801f_8_cpu - build_number: 8 + build: h286801f_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_8_cpu.conda - sha256: 7b503c2179880d8d755e4f81e8e058ca869227c1958c172af5ab4c62d637571d - md5: 08b882378a3e10b0be0218e5867638e3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda + sha256: 3a962b0591720234e724f887ec1975792daa987f34fc161b864183f61dd01bbb + md5: fb7cd00c96acf4ae83475fba8bd9d1ca depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_8_cpu - - libarrow-acero 18.0.0 h286801f_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow-acero 18.0.0 h286801f_9_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_8_cpu + - libparquet 18.0.0 hda0ea68_9_cpu license: Apache-2.0 - license_family: APACHE - size: 498580 - timestamp: 1732209786094 + size: 499874 + timestamp: 1732497930387 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5888daf_8_cpu - build_number: 8 + build: h5888daf_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_8_cpu.conda - sha256: 3234ede6af0403cc29258aaaca45fe426e00259c154a4c857087cd805e16f7db - md5: 84e996f59d99626426a73bd0977ef7f3 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda + sha256: d4e375d2d92c8845b4f634e7c4cc5d5643294ab74c64cfe0d4ef473816e1028a + md5: 07a60ef65486d08c96f324594dc2b5a1 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_8_cpu - - libarrow-acero 18.0.0 h5888daf_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow-acero 18.0.0 h5888daf_9_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_8_cpu + - libparquet 18.0.0 h6bd9018_9_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 594655 - timestamp: 1732208308056 + size: 596492 + timestamp: 1732498166295 - kind: conda name: libarrow-dataset version: 18.0.0 - build: h5ad3122_8_cpu - build_number: 8 + build: h5ad3122_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_8_cpu.conda - sha256: fdc5c1462ea5e7902db750ae8e281122d52f3c6d859a2283a622e3ad74effdc3 - md5: 23742cf206c1283ab6f90b1ba59ba4ed + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda + sha256: ec5655b25deb8d4868ed1fa1cd47e64e34581550ee7b024c65861aff91ef105c + md5: 763a682b8976e760576f62422ed69728 depends: - - libarrow 18.0.0 h3d75c4c_8_cpu - - libarrow-acero 18.0.0 h5ad3122_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow-acero 18.0.0 h5ad3122_9_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_8_cpu + - libparquet 18.0.0 h23a96eb_9_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 568515 - timestamp: 1732207917109 + size: 571675 + timestamp: 1732499604040 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h14ec2bd_8_cpu - build_number: 8 + build: h14ec2bd_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_8_cpu.conda - sha256: 87d66d7c8d8941d2251777ce8dba057191071e7abc98e6077171a6f657f25c9a - md5: fcd095fe4ad44d48d3dad252332d412a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda + sha256: b1def0e7420f2cecfc8eccd0c8ae24c51e58623c3924e11208d69fefc3d07525 + md5: c472236ec8407f4591d5fe682d3c7ad7 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3d75c4c_8_cpu - - libarrow-acero 18.0.0 h5ad3122_8_cpu - - libarrow-dataset 18.0.0 h5ad3122_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow-acero 18.0.0 h5ad3122_9_cpu + - libarrow-dataset 18.0.0 h5ad3122_9_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 523178 - timestamp: 1732207946621 + size: 528225 + timestamp: 1732499642412 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h5c8f2c3_8_cpu - build_number: 8 + build: h5c8f2c3_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_8_cpu.conda - sha256: ceee34b069762aa81521f8aba1cf5f613250f59db7a2e1570865332ad2da8555 - md5: faa0b78b5daac5dab1651c610204401d + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda + sha256: 48b9bbcb4529cf41add523aef49acee69e0634f0e3d6f3d1101b16cb8d13cb2e + md5: a8fcd78ee422057362d928e2dd63ed8e depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h94eee4b_8_cpu - - libarrow-acero 18.0.0 h5888daf_8_cpu - - libarrow-dataset 18.0.0 h5888daf_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow-acero 18.0.0 h5888daf_9_cpu + - libarrow-dataset 18.0.0 h5888daf_9_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 527756 - timestamp: 1732208344211 + size: 530637 + timestamp: 1732498203493 - kind: conda name: libarrow-substrait version: 18.0.0 - build: h6a6e5c5_8_cpu - build_number: 8 + build: h6a6e5c5_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_8_cpu.conda - sha256: 1d7ef3812071a036942cc9bc6742b60354aee1e168338bd18a8596bbd696e43c - md5: 7acbdff23cd797bb9ada6a3de2d7502a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda + sha256: 0623669f06c3ebd51421391a44f430986e627de1b215202aa80777a17a353b52 + md5: c0b80e0e4abd9c06a57b58c46224f8b2 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hb943b0e_8_cpu - - libarrow-acero 18.0.0 h286801f_8_cpu - - libarrow-dataset 18.0.0 h286801f_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow-acero 18.0.0 h286801f_9_cpu + - libarrow-dataset 18.0.0 h286801f_9_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - license_family: APACHE - size: 459728 - timestamp: 1732209986506 + size: 461278 + timestamp: 1732498084570 - kind: conda name: libblas version: 3.9.0 @@ -4831,61 +4821,58 @@ packages: - kind: conda name: libparquet version: 18.0.0 - build: h23a96eb_8_cpu - build_number: 8 + build: h23a96eb_9_cpu + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_8_cpu.conda - sha256: 23ac81fee2d87e51e7695d7ab8b4860e7ff466d449f31cf144ba4e64f409d36b - md5: 456a8374b7a9c7a9b4ced6297563d354 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda + sha256: 16a5200afeb34827cdbc80f8fbc73a6a61e8af138ba57b72ffb41fdd82455e7d + md5: b6e1289678df3e7abf18619af5e378c2 depends: - - libarrow 18.0.0 h3d75c4c_8_cpu + - libarrow 18.0.0 h3d75c4c_9_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1121714 - timestamp: 1732207900610 + size: 1123929 + timestamp: 1732499582562 - kind: conda name: libparquet version: 18.0.0 - build: h6bd9018_8_cpu - build_number: 8 + build: h6bd9018_9_cpu + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_8_cpu.conda - sha256: 3183fa77b6fd965160deb512ac6035c3be2df8af9f6529af20cb2d053d177afd - md5: e2718d24a8af33752dfe0b75e3043b75 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda + sha256: 22dd2354ee45e797dd52fbb8325aea3795440821480d4572fc30e4f268239a54 + md5: 79817c62827b836349adf32b218edd95 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_8_cpu + - libarrow 18.0.0 h94eee4b_9_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1211318 - timestamp: 1732208288781 + size: 1213917 + timestamp: 1732498145973 - kind: conda name: libparquet version: 18.0.0 - build: hda0ea68_8_cpu - build_number: 8 + build: hda0ea68_9_cpu + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_8_cpu.conda - sha256: 4d91a04771b0fcb9830b5db2c67d77ee001790df7ed8c0bd4057564c5483fb00 - md5: 74f66533d553fc03cdb21af7a5d4d84e + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda + sha256: 6e93414ddda2853bc113bb5895eefa3f65de675ee94eb86e48109196f809425c + md5: 48c0673e0a561279ac8ed3b3cba1c448 depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_8_cpu + - libarrow 18.0.0 hb943b0e_9_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 882388 - timestamp: 1732209712346 + size: 883867 + timestamp: 1732497873361 - kind: conda name: libpng version: 1.6.44 @@ -5855,76 +5842,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112405-release.conda - sha256: 0c51c894f4c18c5d94ff1cbee4693b276a80b3a3fc47d19579db937775dc2b33 - md5: 56c2797c044fef1819e2238ecb529a9e - depends: - - max-core ==24.6.0.dev2024112405 release - - max-python >=24.6.0.dev2024112405,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112405 release - - mblack ==24.6.0.dev2024112405 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda + sha256: e8544da30dc3cde2d5201181a0fb554c2fdb1a279343dc6fdc3b3699e480da65 + md5: 18ada131191a1b297d0be0d940b029f4 + depends: + - max-core ==24.6.0.dev2024112505 release + - max-python >=24.6.0.dev2024112505,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112505 release license: LicenseRef-Modular-Proprietary - size: 9929 - timestamp: 1732425690564 + size: 9930 + timestamp: 1732512294393 - kind: conda name: max-core - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112405-release.conda - sha256: 1d9baa3080a2553b3ee2da24f958f4a0dc50aaaf783869ab9d37ebe6161465b3 - md5: e9ef668ea8823978e2dd96f387bfe118 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda + sha256: 12ba51fe5626bd74c1efd8fdf5717feac6eefbf22efc05ce722babb0c9c123ed + md5: efc447f7345cbcf1fadb3c485c5d1a83 depends: - - mblack ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112505 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253847269 - timestamp: 1732425902635 + size: 253852848 + timestamp: 1732512311477 - kind: conda name: max-core - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112405-release.conda - sha256: 9d38562330f9e238eaf752b5469eae24e31a43b2a82d7970930ec0444d48efea - md5: 2703ae29a9de31839ccd0ff988b31cb7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda + sha256: b9045359f837e8baa054ebe53025af5756ff6ecf06803a401e2e4ccad36d7297 + md5: 8fcd55d2b633c9f27cc956ea7c0fa9d8 depends: - - mblack ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112505 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257476425 - timestamp: 1732425690562 + size: 257504019 + timestamp: 1732512294391 - kind: conda name: max-core - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112405-release.conda - sha256: c90c2628c27fe9248611e8ce01aab12ab41a481ec9b6200a8f0ddab17b8959f0 - md5: 86cdc30e3294f7272eed2df1bb2ead86 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda + sha256: 8ebbb263653bcc4b962205134f45d87f343f03513208f9ac7144f6ada5ca65ed + md5: 3d74098f452358f071362533e5518745 depends: - - mblack ==24.6.0.dev2024112405 release + - mblack ==24.6.0.dev2024112505 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219446659 - timestamp: 1732425673927 + size: 219479698 + timestamp: 1732512237302 - kind: conda name: max-python - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112405-3.12release.conda - sha256: 2aa3d6cae52df1795fd197da31f4143827032ad9efa10701cf76d3049c805fcc - md5: f05646fc5565b832a51b6a1b6fed94e0 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.12release.conda + sha256: 553628bfa9b9759ddccec73380d63055dcfe82bd6df75f1cb03b12365a811bd7 + md5: ff7c6ff7bb937590832e17bdd742d3ea depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python 3.12.* - pillow - fastapi @@ -5945,18 +5932,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128119479 - timestamp: 1732425902648 + size: 128104249 + timestamp: 1732512311491 - kind: conda name: max-python - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112405-3.12release.conda - sha256: acb661e00a75bad48440055e4d3941eca99416e2806fd7550b20749aa11b5ffe - md5: a4c81577696a8b93a39864be898f31b7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.12release.conda + sha256: 1ccf3bfaeef2d63ab0c8d0438ae2c8c6e959790bfcff7334cbce9897dc28c24f + md5: da598be4350ad1ed46b21e07885b13cc depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python 3.12.* - pillow - fastapi @@ -5977,18 +5964,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131882789 - timestamp: 1732425690576 + size: 131886497 + timestamp: 1732512294405 - kind: conda name: max-python - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112405-3.12release.conda - sha256: 5348a5891530ce04f7715107ec312479272be38972e532943bc17a76365d4e9b - md5: 0e945ba7af7ae58d1bfa047acb1cef31 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.12release.conda + sha256: 22c4adb8497b98823bdb7b10117fbd3cff1198ead9f688f533913dedeaf3584b + md5: 8870a7f3214bc3117548074e5fe79d3c depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python 3.12.* - pillow - fastapi @@ -6009,17 +5996,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118816744 - timestamp: 1732425673931 + size: 118834124 + timestamp: 1732512237306 - kind: conda name: mblack - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112405-release.conda - sha256: 622efd567ef94cc5ec8a0f9bae36bcb1a058f0111a915b4392e79ead42c0059e - md5: 65eefd70b4ee52631de23a0ad329aed2 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + sha256: f72d60f0534d53ce247c450b04bfb6bc67a59f408ee3534392a7d812dc5fa03c + md5: 91a2bae1d55ec1c3bdf9db8d046acd12 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6029,8 +6016,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130607 - timestamp: 1732425690570 + size: 130604 + timestamp: 1732512294400 - kind: conda name: mdurl version: 0.1.2 @@ -6048,21 +6035,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112405 + version: 24.6.0.dev2024112505 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112405-release.conda - sha256: 315878c6982f82eff3751615795a5881bd9c9fba480dba557c42301d2b3e1fb4 - md5: f1016770b1c7511a54282b96ecc0ecb0 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + sha256: 0b1430e59f40378948363378136c258aa1dbc9d9169f2bcd6468cec240fe8233 + md5: 94f0c957f1f19fec3edd8d58e6b6a7db depends: - - max-core ==24.6.0.dev2024112405 release + - max-core ==24.6.0.dev2024112505 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22950 - timestamp: 1732425690573 + size: 22945 + timestamp: 1732512294400 - kind: conda name: multidict version: 6.1.0 @@ -7034,75 +7021,72 @@ packages: - kind: conda name: pyarrow version: 18.0.0 - build: py312h1f38498_1 - build_number: 1 + build: py312h1f38498_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_1.conda - sha256: c411c8bf7c22113a1d4ceac1c8df638a223ffcec9b4e5fc528631b64f3df7ccd - md5: 4510221533398449a8f707bda652dd27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_2.conda + sha256: 11c045b44019dbe908315aabb47491519c0a4b5ef07e97a056a9d57d07823de3 + md5: 71ea0ef18b1127e26efaedc875e1853a depends: - libarrow-acero 18.0.0.* - libarrow-dataset 18.0.0.* - libarrow-substrait 18.0.0.* - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + - pyarrow-core 18.0.0 *_2_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - license_family: APACHE - size: 25409 - timestamp: 1731058762728 + size: 25410 + timestamp: 1732456749184 - kind: conda name: pyarrow version: 18.0.0 - build: py312h7900ff3_1 - build_number: 1 + build: py312h7900ff3_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_1.conda - sha256: 948514cde269fb6874a3945c8b2c26666588ac7835eb19fa7ec11c0547250b8d - md5: ea33ac754057779cd2df785661486310 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_2.conda + sha256: 6c41b69f6cde950f9cb10b80cef1808d0081730038ef7a2675d612b2b126e9cf + md5: 3d91e33cf1a2274d52b9a1ca95bd34a0 depends: - libarrow-acero 18.0.0.* - libarrow-dataset 18.0.0.* - libarrow-substrait 18.0.0.* - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + - pyarrow-core 18.0.0 *_2_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - license_family: APACHE - size: 25161 - timestamp: 1731058699977 + size: 25195 + timestamp: 1732457103551 - kind: conda name: pyarrow version: 18.0.0 - build: py312h8025657_1 - build_number: 1 + build: py312h8025657_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_1.conda - sha256: ec1bace4edb04a2cb0bca92c378044260bf798a42aefc5ac1156826b3a4c79c8 - md5: be32cb6508ecd041d0468be137a9c60b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_2.conda + sha256: 6e892f137ec19d1159b0acc2596846674d36d450bf1469e9d19a913e995bdc3b + md5: 2b2ab50988395f978e700638f754db0a depends: - libarrow-acero 18.0.0.* - libarrow-dataset 18.0.0.* - libarrow-substrait 18.0.0.* - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_1_* + - pyarrow-core 18.0.0 *_2_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - license_family: APACHE - size: 25338 - timestamp: 1731059175489 + size: 25371 + timestamp: 1732457047763 - kind: conda name: pyarrow-core version: 18.0.0 - build: py312h01725c0_1_cpu - build_number: 1 + build: py312h01725c0_2_cpu + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_1_cpu.conda - sha256: 240ab4328ebbfd81fe4f93cacd24fc44cd9e58edf9a95acc492e1025525f9a82 - md5: c8ae967c39337603035d59c8994c23f9 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_2_cpu.conda + sha256: b4457d8e702f7d2eeac03917a2375ebe39cd1f0cb1aa7e4d2864865c29c0bd00 + md5: 190d4fccaa0d28d9f3a7489add69294e depends: - __glibc >=2.17,<3.0.a0 - libarrow 18.0.0.* *cpu @@ -7115,18 +7099,17 @@ packages: - apache-arrow-proc =*=cpu - numpy >=1.21,<3 license: Apache-2.0 - license_family: APACHE - size: 4578590 - timestamp: 1731058358731 + size: 4572029 + timestamp: 1732456649794 - kind: conda name: pyarrow-core version: 18.0.0 - build: py312h66f7834_1_cpu - build_number: 1 + build: py312h66f7834_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_1_cpu.conda - sha256: ded4bd91b1e0f6eaee9bdd4cba76efb424a3279d69946aec8fc65671fae213eb - md5: 8d857df755335de36fc7d10f897ac7c5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_2_cpu.conda + sha256: 61bdcd4b7900348af7990042f4d7e326f9aa1c75720e47e4d278f902d8efcda8 + md5: 273c8148c2203863fd566d5396d2cc6b depends: - libarrow 18.0.0.* *cpu - libgcc >=13 @@ -7136,21 +7119,20 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - numpy >=1.21,<3 - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 license: Apache-2.0 - license_family: APACHE - size: 4408381 - timestamp: 1731058794401 + size: 4397059 + timestamp: 1732456712314 - kind: conda name: pyarrow-core version: 18.0.0 - build: py312hc40f475_1_cpu - build_number: 1 + build: py312hc40f475_2_cpu + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_1_cpu.conda - sha256: afa1d9cfb76ab37ae837c6a68f9a79e0a25f96da826c373be9728fed152eaec9 - md5: 801f7771b21af9ca4016d9c2f9ff2a08 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_2_cpu.conda + sha256: 83633ec13d303fee24c6f45a8fca0fedad4a80e7ea552a4f06b5643a26ba99f1 + md5: 35308386ec8499ac7114af0edd8de3a2 depends: - __osx >=11.0 - libarrow 18.0.0.* *cpu @@ -7160,12 +7142,11 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 3915622 - timestamp: 1731058726842 + size: 3918835 + timestamp: 1732456722657 - kind: conda name: pycparser version: '2.22' @@ -8217,38 +8198,40 @@ packages: - kind: conda name: tokenizers version: 0.20.3 - build: py312h8360d73_0 + build: py312h8360d73_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_0.conda - sha256: 2b48bbbcb2b08bc9039e5a5a5eabbf1eb1821795ff6f900b17d8d3d5c5c03d93 - md5: 1beb85f5436b30da8576a1af2a3d2103 + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_1.conda + sha256: 852868de63102c2f16640e688fd500ca10801b667b5fd350144ebde391576d5a + md5: 228c10e93df46415c452f78e8ae57df9 depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2238863 - timestamp: 1730868742992 + size: 2250848 + timestamp: 1732467704757 - kind: conda name: tokenizers version: 0.20.3 - build: py312ha0d6ea1_0 + build: py312ha0d6ea1_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_0.conda - sha256: d24effa51dd060bdd0a2a532a200140874099a36da0dbf73a80a2056467bd7fd - md5: 5f8b2f868dce23e87f320d219f15157f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_1.conda + sha256: 67c7b487e2b33164d1c1f5af7b9b0d09f5dd88b44fb365d4614e35dc620bc6db + md5: f06befe91e2cbd9a60d200f515d85941 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -8256,16 +8239,17 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2361365 - timestamp: 1730868864797 + size: 2327232 + timestamp: 1732467837340 - kind: conda name: tokenizers version: 0.20.3 - build: py312hf3e4074_0 + build: py312hf3e4074_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_0.conda - sha256: 36bfc57262489d8a730aa309e3694053405df57d42675d3c9f8e7ab45bde6a1f - md5: bf872619ecf7b22776aae2b09408266c + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_1.conda + sha256: 7423f3b3c961262c6170fa20d4bfdf61a1ba5b4ad472572fc8d0d11a36971ab6 + md5: 365a21a164c0a86a6726f3adcb4207f4 depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -8277,8 +8261,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1917015 - timestamp: 1730869025269 + size: 1925335 + timestamp: 1732467947397 - kind: conda name: tornado version: 6.4.1 @@ -8334,19 +8318,19 @@ packages: timestamp: 1724956252424 - kind: conda name: tqdm - version: 4.67.0 + version: 4.67.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.0-pyhd8ed1ab_0.conda - sha256: fb25b18cec1ebae56e7d7ebbd3e504f063b61a0fac17b1ca798fcaf205bdc874 - md5: 196a9e6ab4e036ceafa516ea036619b0 + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d + md5: 4085c9db273a148e149c03627350e22c depends: - colorama - python >=3.7 license: MPL-2.0 or MIT - size: 89434 - timestamp: 1730926216380 + size: 89484 + timestamp: 1732497312317 - kind: conda name: traitlets version: 5.14.3 From 1a3ad90e30e073e58c04e17627a9080b6aa19dc9 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sun, 24 Nov 2024 21:35:25 -0800 Subject: [PATCH 023/119] [Stdlib] Move the _sub_with_saturation to the b64 module Moves the helper function which is used only in the b64 module outside the SIMD file. MODULAR_ORIG_COMMIT_REV_ID: c7071970e04d72c0337b5bccda044219b64a5abf --- stdlib/src/base64/_b64encode.mojo | 12 +++++++++++- stdlib/src/builtin/simd.mojo | 10 ---------- stdlib/src/utils/_utf8_validation.mojo | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/stdlib/src/base64/_b64encode.mojo b/stdlib/src/base64/_b64encode.mojo index d867a91be5..03aa0a56ab 100644 --- a/stdlib/src/base64/_b64encode.mojo +++ b/stdlib/src/base64/_b64encode.mojo @@ -24,11 +24,11 @@ Instructions, ACM Transactions on the Web 12 (3), 2018. https://arxiv.org/abs/1704.00605 """ -from builtin.simd import _sub_with_saturation from collections import InlineArray from math.math import _compile_time_iota from memory import memcpy, bitcast, UnsafePointer from utils import IndexList +from sys import llvm_intrinsic alias Bytes = SIMD[DType.uint8, _] @@ -291,3 +291,13 @@ fn _rshift_bits_in_u16[shift: Int](input: Bytes) -> __type_of(input): var u16 = bitcast[DType.uint16, input.size // 2](input) var res = bit.rotate_bits_right[shift](u16) return bitcast[DType.uint8, input.size](res) + + +@always_inline +fn _sub_with_saturation[ + width: Int, // +](a: SIMD[DType.uint8, width], b: SIMD[DType.uint8, width]) -> SIMD[ + DType.uint8, width +]: + # generates a single `vpsubusb` on x86 with AVX + return llvm_intrinsic["llvm.usub.sat", __type_of(a)](a, b) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 6b8c9edbdf..8146759a4b 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -3311,16 +3311,6 @@ fn _modf(x: SIMD) -> Tuple[__type_of(x), __type_of(x)]: return (result_int, result_frac) -@always_inline("nodebug") -fn _sub_with_saturation[ - width: Int, // -](a: SIMD[DType.uint8, width], b: SIMD[DType.uint8, width]) -> SIMD[ - DType.uint8, width -]: - # generates a single `vpsubusb` on x86 with AVX - return llvm_intrinsic["llvm.usub.sat", __type_of(a)](a, b) - - # ===----------------------------------------------------------------------=== # # floor # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/utils/_utf8_validation.mojo b/stdlib/src/utils/_utf8_validation.mojo index 800ed5626b..3cc522d33d 100644 --- a/stdlib/src/utils/_utf8_validation.mojo +++ b/stdlib/src/utils/_utf8_validation.mojo @@ -27,7 +27,7 @@ https://github.com/simdutf/SimdUnicode/blob/main/src/UTF8.cs from memory import UnsafePointer from sys.intrinsics import llvm_intrinsic -from builtin.simd import _sub_with_saturation +from base64._b64encode import _sub_with_saturation alias TOO_SHORT: UInt8 = 1 << 0 alias TOO_LONG: UInt8 = 1 << 1 From 1b38d51ee3bf7f8aea8058768b2b209be049d5ce Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sun, 24 Nov 2024 21:42:50 -0800 Subject: [PATCH 024/119] [******][GPU] Move the host side check for the gpu target to sys module MODULAR_ORIG_COMMIT_REV_ID: b208657c08af3a11d4c2ddd0ef74e88bfb5c0a55 --- stdlib/src/sys/__init__.mojo | 2 ++ stdlib/src/sys/info.mojo | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/stdlib/src/sys/__init__.mojo b/stdlib/src/sys/__init__.mojo index 632dde283e..1323b94f86 100644 --- a/stdlib/src/sys/__init__.mojo +++ b/stdlib/src/sys/__init__.mojo @@ -50,6 +50,8 @@ from .info import ( is_nvidia_gpu, is_amd_gpu, is_gpu, + has_amd_gpu, + has_nvidia_gpu, ) from .intrinsics import ( PrefetchCache, diff --git a/stdlib/src/sys/info.mojo b/stdlib/src/sys/info.mojo index 9930fe79a0..840e5de7f6 100644 --- a/stdlib/src/sys/info.mojo +++ b/stdlib/src/sys/info.mojo @@ -863,3 +863,28 @@ fn _macos_version() raises -> Tuple[Int, Int, Int]: patch = int(osver[: osver.find(".")]) return (major, minor, patch) + + +# ===----------------------------------------------------------------------===# +# Detect GPU on host side +# ===----------------------------------------------------------------------===# + + +@always_inline("nodebug") +fn has_amd_gpu() -> Bool: + """Returns True if the host system has an AMD GPU and False otherwise. + + Returns: + True if the host system has an AMD GPU. + """ + return "amd" in _accelerator_arch() + + +@always_inline("nodebug") +fn has_nvidia_gpu() -> Bool: + """Returns True if the host system has an NVIDIA GPU and False otherwise. + + Returns: + True if the host system has an NVIDIA GPU. + """ + return "nvidia" in _accelerator_arch() From 17d597d2e196fd4552ec1e155fca7a9e05f555f7 Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Mon, 25 Nov 2024 12:36:00 -0700 Subject: [PATCH 025/119] [stdlib][docs] Clarify SLA review time Add some more color on the SLA review time and adjust expectations based on current contributor volume and team size. MODULAR_ORIG_COMMIT_REV_ID: 482ba59d73ab9528d1733e210dd8aef23886a8c6 --- CONTRIBUTING.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a5392781df..72f230da1b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -386,7 +386,64 @@ By making a contribution to this project, I certify that: this project or the open source license(s) involved. ``` -### Review time SLA +### Guidelines for Review Time -The team commits to reviewing submitted pull requests within a week of -submission. +1. Pull Request (PR) Review Timeline + +- Initial Review: + - Maintainers will provide an initial review or feedback within 3 weeks of + the PR submission. At times, it may be significantly quicker, but it + depends on a variety of factors. +- Subsequent Reviews: + - Once a contributor addresses feedback, maintainers will review updates as + soon as they can, typically within 5 business days. + +1. Issue Triage Timeline + +- New Issues: + - Maintainers will label and acknowledge new issues within 10 days of the + issue submission. + +1. Proposals + +- Proposals take more time for the team to review, discuss, and make sure this + is in line with the overall strategy and vision for the standard library. + These will get discussed in the team's weekly design meetings internally and + feedback will be communicated back on the relevant proposal. As a team, we'll + ensure these get reviewed and discussed within 6 weeks of submission. + +#### Exceptions + +While we strive our best to adhere to these timelines, there may be occasional +delays due any of the following: + +- High volume of contributions. +- Maintainers' availability (e.g. holidays, team events). +- Complex issues or PRs requiring extended discussion (these may get deferred to + the team's weekly design discussion meetings). + +Note that just because a pull request has been reviewed does not necessarily +mean it will be able to merged internally immediately. This could be due to a +variety of reasons, such as: + +- Mojo compiler bugs. These take time to find a minimal reproducer, file an + issue with the compiler team, and then get prioritized and fixed. +- Internal bugs that get exposed due to a changeset. +- Massive refactorings due to an external changeset. These also take time to + fix - remember, we have the largest Mojo codebase in the world internally. + +If delays occur, we'll provide status updates in the relevant thread (pull +request or GitHub issue). Please bare with us as Mojo is an early language. +We look forward to working together with you in making Mojo better for everyone! + +#### How You Can Help + +To ensure quicker reviews: + +- **Ensure your PR is small and focused.** See the [pull request size section](#about-pull-request-sizes) + for more info. +- Write a good commit message/PR summary outlining the motivation and describing + the changes. In the near future, we'll provide a pull request template to + clarify this further. +- Use descriptive titles and comments for clarity. +- Code-review other contributor pull requests and help each other. From 10f3a0f8899bfba9dea64d00ab53327f0ce79499 Mon Sep 17 00:00:00 2001 From: Ken Jones <165197230+KenJones-Modular@users.noreply.github.com> Date: Mon, 25 Nov 2024 13:28:00 -0800 Subject: [PATCH 026/119] Reference solution for the new Intro to Mojo tutorial, an implementation of Conway's Game of Life MODULAR_ORIG_COMMIT_REV_ID: 51d3816123bfcef47eca4d24c31d3f6daf2ce858 --- examples/life/README.md | 77 +++++++++++++++++ examples/life/benchmark.mojo | 61 ++++++++++++++ examples/life/gridv1.mojo | 124 ++++++++++++++++++++++++++++ examples/life/gridv2.mojo | 121 +++++++++++++++++++++++++++ examples/life/lifev1.mojo | 85 +++++++++++++++++++ examples/life/lifev2.mojo | 85 +++++++++++++++++++ examples/life/mojoproject.toml | 19 +++++ examples/life/test/test_gridv1.mojo | 75 +++++++++++++++++ examples/life/test/test_gridv2.mojo | 84 +++++++++++++++++++ 9 files changed, 731 insertions(+) create mode 100644 examples/life/README.md create mode 100644 examples/life/benchmark.mojo create mode 100644 examples/life/gridv1.mojo create mode 100644 examples/life/gridv2.mojo create mode 100644 examples/life/lifev1.mojo create mode 100644 examples/life/lifev2.mojo create mode 100644 examples/life/mojoproject.toml create mode 100644 examples/life/test/test_gridv1.mojo create mode 100644 examples/life/test/test_gridv2.mojo diff --git a/examples/life/README.md b/examples/life/README.md new file mode 100644 index 0000000000..49a1884991 --- /dev/null +++ b/examples/life/README.md @@ -0,0 +1,77 @@ +# Introduction to Mojo tutorial solution + +This directory contains a complete solution for the [Introduction to +Mojo](https://docs.modular.com/mojo/manual/basics) tutorial project, which is an +implementation of [Conway's Game of +Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) cellular +automation. + +## Files + +This directory contains the following files: + +- The source files `lifev1.mojo` and `gridv1.mojo` provide an initial version of + the project, with a `Grid` struct representing the grid of cells as a + `List[List[Int]]`. + +- The source files `lifev2.mojo` and `gridv2.mojo` provide a subsequent version + of the project, with a `Grid` struct representing the grid of cells as a block + of memory managed by `UnsafePointer`. + +- The `benchmark.mojo` file performs a simple performance benchmark of the two + versions by running 1,000 evolutions of each `Grid` implementation using a + 1,024 x 1,024 grid. + +- The `test` directory contains unit tests for each `Grid` implementation using + the [Mojo testing framework](https://docs.modular.com/mojo/tools/testing). + +- The `mojoproject.toml` file is a [Magic](https://docs.modular.com/magic/) + project file containing the project dependencies and task definitions. + +## Run the code + +If you have [`magic`](https://docs.modular.com/magic) installed, you can +execute version 1 of the program by running the following command: + +```bash +magic run lifev1 +``` + +This displays a window that shows an initial random state for the grid and then +automatically updates it with subsequent generations. Quit the program by +pressing the `q` or `` key or by closing the window. + +You can execute version 2 of the program by running the following command: + +```bash +magic run lifev2 +``` + +Just like for version 1, this displays a window that shows an initial random +state for the grid and then automatically updates it with subsequent +generations. Quit the program by pressing the `q` or `` key or by +closing the window. + +You can execute the benchmark program by running the following command: + +```bash +magic run benchmark +``` + +You can run the unit tests by running the following command: + +```bash +magic run test +``` + +## Dependencies + +This project includes an example of using a Python package, +[pygame](https://www.pygame.org/wiki/about), from Mojo. Building the program +does *not* embed pygame or a Python runtime in the resulting executable. +Therefore, to run this program your environment must have both a compatible +Python runtime (Python 3.12) and the pygame package installed. + +The easiest way to ensure that the runtime dependencies are met is to run the +program with [`magic`](https://docs.modular.com/magic/), which manages a virtual +environment for the project as defined by the `mojoproject.toml` file. diff --git a/examples/life/benchmark.mojo b/examples/life/benchmark.mojo new file mode 100644 index 0000000000..268e9496ff --- /dev/null +++ b/examples/life/benchmark.mojo @@ -0,0 +1,61 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import gridv1 +import gridv2 +from time import perf_counter_ns + + +def main(): + alias warmup_iterations = 10 + alias benchmark_iterations = 1000 + alias rows = 1024 + alias cols = 1024 + + # Initial state + gridv1 = gridv1.Grid.random(rows, cols, seed=42) + gridv2 = gridv2.Grid[rows, cols].random(seed=42) + + # Warm up + warmv1 = gridv1 + for i in range(warmup_iterations): + warmv1 = warmv1.evolve() + + warmv2 = gridv2 + for i in range(warmup_iterations): + warmv2 = warmv2.evolve() + + # Benchmark + start_time = perf_counter_ns() + for i in range(benchmark_iterations): + gridv1 = gridv1.evolve() + stop_time = perf_counter_ns() + elapsed = round((stop_time - start_time) / 1e6, 3) + print( + benchmark_iterations, + "evolutions of gridv1.Grid elapsed time: ", + elapsed, + "ms", + ) + + start_time = perf_counter_ns() + for i in range(benchmark_iterations): + gridv2 = gridv2.evolve() + stop_time = perf_counter_ns() + elapsed = round((stop_time - start_time) / 1e6, 3) + print( + benchmark_iterations, + "evolutions of gridv2.Grid elapsed time: ", + elapsed, + "ms", + ) diff --git a/examples/life/gridv1.mojo b/examples/life/gridv1.mojo new file mode 100644 index 0000000000..e416860928 --- /dev/null +++ b/examples/life/gridv1.mojo @@ -0,0 +1,124 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from collections import Optional +import random + + +@value +struct Grid(StringableRaising): + # ===-------------------------------------------------------------------===# + # Fields + # ===-------------------------------------------------------------------===# + + var rows: Int + var cols: Int + var data: List[List[Int]] + + # ===-------------------------------------------------------------------===# + # Indexing + # ===-------------------------------------------------------------------===# + + def __getitem__(self, row: Int, col: Int) -> Int: + return self.data[row][col] + + def __setitem__(inout self, row: Int, col: Int, value: Int) -> None: + self.data[row][col] = value + + # ===-------------------------------------------------------------------===# + # Trait implementations + # ===-------------------------------------------------------------------===# + + def __str__(self) -> String: + str = String() + for row in range(self.rows): + for col in range(self.cols): + if self[row, col] == 1: + str += "*" + else: + str += " " + if row != self.rows - 1: + str += "\n" + return str + + # ===-------------------------------------------------------------------===# + # Factory methods + # ===-------------------------------------------------------------------===# + + @staticmethod + def glider() -> Self: + var glider = List( + List(0, 1, 0, 0, 0, 0, 0, 0), + List(0, 0, 1, 0, 0, 0, 0, 0), + List(1, 1, 1, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + List(0, 0, 0, 0, 0, 0, 0, 0), + ) + return Grid(8, 8, glider) + + @staticmethod + def random(rows: Int, cols: Int, seed: Optional[Int] = None) -> Self: + if seed: + random.seed(seed.value()) + else: + random.seed() + + data = List[List[Int]]() + + for row in range(rows): + row_data = List[Int]() + for col in range(cols): + row_data.append(int(random.random_si64(0, 1))) + data.append(row_data) + + return Self(rows, cols, data) + + # ===-------------------------------------------------------------------===# + # Methods + # ===-------------------------------------------------------------------===# + + def evolve(self) -> Self: + next_generation = List[List[Int]]() + + for row in range(self.rows): + row_data = List[Int]() + + row_above = (row - 1) % self.rows + row_below = (row + 1) % self.rows + + for col in range(self.cols): + col_left = (col - 1) % self.cols + col_right = (col + 1) % self.cols + + num_neighbors = ( + self[row_above, col_left] + + self[row_above, col] + + self[row_above, col_right] + + self[row, col_left] + + self[row, col_right] + + self[row_below, col_left] + + self[row_below, col] + + self[row_below, col_right] + ) + + if num_neighbors | self[row, col] == 3: + row_data.append(1) + else: + row_data.append(0) + + next_generation.append(row_data) + + return Self(self.rows, self.cols, next_generation) diff --git a/examples/life/gridv2.mojo b/examples/life/gridv2.mojo new file mode 100644 index 0000000000..8f937a2046 --- /dev/null +++ b/examples/life/gridv2.mojo @@ -0,0 +1,121 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from collections import Optional +from memory import memcpy, memset_zero, UnsafePointer +import random + + +struct Grid[rows: Int, cols: Int](StringableRaising): + # ===-------------------------------------------------------------------===# + # Fields + # ===-------------------------------------------------------------------===# + + alias num_cells = rows * cols + var data: UnsafePointer[Int8] + + # ===-------------------------------------------------------------------===# + # Life cycle methods + # ===-------------------------------------------------------------------===# + + def __init__(out self): + self.data = UnsafePointer[Int8].alloc(self.num_cells) + memset_zero(self.data, self.num_cells) + + fn __copyinit__(out self, existing: Self): + self.data = UnsafePointer[Int8].alloc(self.num_cells) + memcpy(dest=self.data, src=existing.data, count=self.num_cells) + # The lifetime of `existing` continues unchanged + + fn __moveinit__(out self, owned existing: Self): + self.data = existing.data + # Then the lifetime of `existing` ends here, but + # Mojo does NOT call its destructor + + fn __del__(owned self): + for i in range(self.num_cells): + (self.data + i).destroy_pointee() + self.data.free() + + # ===-------------------------------------------------------------------===# + # Factory methods + # ===-------------------------------------------------------------------===# + + @staticmethod + def random(seed: Optional[Int] = None) -> Self: + if seed: + random.seed(seed.value()) + else: + random.seed() + + grid = Self() + random.randint(grid.data, grid.num_cells, 0, 1) + + return grid + + # ===-------------------------------------------------------------------===# + # Indexing + # ===-------------------------------------------------------------------===# + + def __getitem__(self, row: Int, col: Int) -> Int8: + return (self.data + row * cols + col)[] + + def __setitem__(inout self, row: Int, col: Int, value: Int8) -> None: + (self.data + row * cols + col)[] = value + + # ===-------------------------------------------------------------------===# + # Trait implementations + # ===-------------------------------------------------------------------===# + + def __str__(self) -> String: + str = String() + for row in range(rows): + for col in range(cols): + if self[row, col] == 1: + str += "*" + else: + str += " " + if row != rows - 1: + str += "\n" + return str + + # ===-------------------------------------------------------------------===# + # Methods + # ===-------------------------------------------------------------------===# + + def evolve(self) -> Self: + next_generation = Self() + + for row in range(rows): + row_above = (row - 1) % rows + row_below = (row + 1) % rows + + for col in range(cols): + col_left = (col - 1) % cols + col_right = (col + 1) % cols + + num_neighbors = ( + self[row_above, col_left] + + self[row_above, col] + + self[row_above, col_right] + + self[row, col_left] + + self[row, col_right] + + self[row_below, col_left] + + self[row_below, col] + + self[row_below, col_right] + ) + + if num_neighbors | self[row, col] == 3: + next_generation[row, col] = 1 + + return next_generation diff --git a/examples/life/lifev1.mojo b/examples/life/lifev1.mojo new file mode 100644 index 0000000000..c87ca0eeb0 --- /dev/null +++ b/examples/life/lifev1.mojo @@ -0,0 +1,85 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from gridv1 import Grid +from python import Python, PythonObject +import time + + +def run_display( + owned grid: Grid, + window_height: Int = 600, + window_width: Int = 600, + background_color: String = "black", + cell_color: String = "green", + pause: Float64 = 0.1, +) -> None: + # Import the pygame Python package + pygame = Python.import_module("pygame") + + # Initialize pygame modules + pygame.init() + + # Create a window and set its title + window = pygame.display.set_mode((window_height, window_width)) + pygame.display.set_caption("Conway's Game of Life") + + cell_height = window_height / grid.rows + cell_width = window_width / grid.cols + border_size = 1 + cell_fill_color = pygame.Color(cell_color) + background_fill_color = pygame.Color(background_color) + + running = True + while running: + # Poll for events + event = pygame.event.poll() + if event.type == pygame.QUIT: + # Quit if the window is closed + running = False + elif event.type == pygame.KEYDOWN: + # Also quit if the user presses or 'q' + if event.key == pygame.K_ESCAPE or event.key == pygame.K_q: + running = False + + # Clear the window by painting with the background color + window.fill(background_fill_color) + + # Draw each live cell in the grid + for row in range(grid.rows): + for col in range(grid.cols): + if grid.data[row][col]: + x = col * cell_width + border_size + y = row * cell_height + border_size + width = cell_width - border_size + height = cell_height - border_size + pygame.draw.rect( + window, cell_fill_color, (x, y, width, height) + ) + + # Update the display + pygame.display.flip() + + # Pause to let the user appreciate the scene + time.sleep(pause) + + # Next generation + grid = grid.evolve() + + # Shut down pygame cleanly + pygame.quit() + + +def main(): + start = Grid.random(128, 128) + run_display(start) diff --git a/examples/life/lifev2.mojo b/examples/life/lifev2.mojo new file mode 100644 index 0000000000..c399d2eb9b --- /dev/null +++ b/examples/life/lifev2.mojo @@ -0,0 +1,85 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from gridv2 import Grid +from python import Python, PythonObject +import time + + +def run_display( + owned grid: Grid, + window_height: Int = 600, + window_width: Int = 600, + background_color: String = "black", + cell_color: String = "green", + pause: Float64 = 0.1, +) -> None: + # Import the pygame Python package + pygame = Python.import_module("pygame") + + # Initialize pygame modules + pygame.init() + + # Create a window and set its title + window = pygame.display.set_mode((window_height, window_width)) + pygame.display.set_caption("Conway's Game of Life") + + cell_height = window_height / grid.rows + cell_width = window_width / grid.cols + border_size = 1 + cell_fill_color = pygame.Color(cell_color) + background_fill_color = pygame.Color(background_color) + + running = True + while running: + # Poll for events + event = pygame.event.poll() + if event.type == pygame.QUIT: + # Quit if the window is closed + running = False + elif event.type == pygame.KEYDOWN: + # Also quit if the user presses or 'q' + if event.key == pygame.K_ESCAPE or event.key == pygame.K_q: + running = False + + # Clear the window by painting with the background color + window.fill(background_fill_color) + + # Draw each live cell in the grid + for row in range(grid.rows): + for col in range(grid.cols): + if grid[row, col]: + x = col * cell_width + border_size + y = row * cell_height + border_size + width = cell_width - border_size + height = cell_height - border_size + pygame.draw.rect( + window, cell_fill_color, (x, y, width, height) + ) + + # Update the display + pygame.display.flip() + + # Pause to let the user appreciate the scene + time.sleep(pause) + + # Next generation + grid = grid.evolve() + + # Shut down pygame cleanly + pygame.quit() + + +def main(): + start = Grid[128, 128].random() + run_display(start, window_height=600, window_width=600) diff --git a/examples/life/mojoproject.toml b/examples/life/mojoproject.toml new file mode 100644 index 0000000000..2d38853796 --- /dev/null +++ b/examples/life/mojoproject.toml @@ -0,0 +1,19 @@ +[project] +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +description = "Introduction to Mojo Tutorial: Conway's Game of Life" +name = "life" +platforms = ["osx-arm64", "linux-64", "linux-aarch64"] +version = "0.1.0" + +[dependencies] +max = "*" +python = "3.12.*" +pygame = ">=2.6.1,<3" + +[tasks] +lifev1 = "mojo run lifev1.mojo" +lifev2 = "mojo run lifev2.mojo" +main = "mojo run benchmark.mojo" +benchmark = "mojo run benchmark.mojo" +tests = "mojo test -I . test" diff --git a/examples/life/test/test_gridv1.mojo b/examples/life/test/test_gridv1.mojo new file mode 100644 index 0000000000..bded4cc2f5 --- /dev/null +++ b/examples/life/test/test_gridv1.mojo @@ -0,0 +1,75 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from gridv1 import Grid +from testing import * + +var data4x4 = List( + List(0, 1, 1, 0), + List(1, 1, 0, 0), + List(0, 0, 1, 1), + List(1, 0, 0, 1), +) +var str4x4 = " ** \n** \n **\n* *" + + +def test_gridv1_init(): + grid = Grid(4, 4, data4x4) + assert_equal(4, grid.rows) + assert_equal(4, grid.cols) + for row in range(4): + assert_equal(data4x4[row], grid.data[row]) + + +def test_gridv1_index(): + grid = Grid(4, 4, data4x4) + for row in range(4): + for col in range(4): + assert_equal(data4x4[row][col], grid[row, col]) + grid[row, col] = 1 + assert_equal(1, grid[row, col]) + grid[row, col] = 0 + assert_equal(0, grid[row, col]) + + +def test_gridv1_str(): + grid = Grid(4, 4, data4x4) + grid_str = str(grid) + assert_equal(str4x4, grid_str) + + +def test_gridv1_evolve(): + data_gen2 = List( + List(0, 0, 1, 0), + List(1, 0, 0, 0), + List(0, 0, 1, 0), + List(1, 0, 0, 0), + ) + data_gen3 = List( + List(0, 1, 0, 1), + List(0, 1, 0, 1), + List(0, 1, 0, 1), + List(0, 1, 0, 1), + ) + + grid_gen1 = Grid(4, 4, data4x4) + + grid_gen2 = grid_gen1.evolve() + for row in range(4): + for col in range(4): + assert_equal(data_gen2[row][col], grid_gen2[row, col]) + + grid_gen3 = grid_gen2.evolve() + for row in range(4): + for col in range(4): + assert_equal(data_gen3[row][col], grid_gen3[row, col]) diff --git a/examples/life/test/test_gridv2.mojo b/examples/life/test/test_gridv2.mojo new file mode 100644 index 0000000000..1987272743 --- /dev/null +++ b/examples/life/test/test_gridv2.mojo @@ -0,0 +1,84 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from gridv2 import Grid +from testing import * + +var data4x4 = List( + List(0, 1, 1, 0), + List(1, 1, 0, 0), + List(0, 0, 1, 1), + List(1, 0, 0, 1), +) +var str4x4 = " ** \n** \n **\n* *" + + +def grid4x4() -> Grid[4, 4]: + grid = Grid[4, 4]() + for row in range(4): + for col in range(4): + grid[row, col] = data4x4[row][col] + return grid + + +def test_gridv2_init(): + grid = Grid[4, 4]() + assert_equal(4, grid.rows) + assert_equal(4, grid.cols) + for row in range(4): + for col in range(4): + assert_equal(0, grid[row, col]) + + +def test_gridv2_index(): + grid = grid4x4() + for row in range(4): + for col in range(4): + assert_equal(data4x4[row][col], grid[row, col]) + grid[row, col] = 1 + assert_equal(1, grid[row, col]) + grid[row, col] = 0 + assert_equal(0, grid[row, col]) + + +def test_gridv2_str(): + grid = grid4x4() + grid_str = str(grid) + assert_equal(str4x4, grid_str) + + +def test_gridv2_evolve(): + data_gen2 = List( + List(0, 0, 1, 0), + List(1, 0, 0, 0), + List(0, 0, 1, 0), + List(1, 0, 0, 0), + ) + data_gen3 = List( + List(0, 1, 0, 1), + List(0, 1, 0, 1), + List(0, 1, 0, 1), + List(0, 1, 0, 1), + ) + + grid_gen1 = grid4x4() + + grid_gen2 = grid_gen1.evolve() + for row in range(4): + for col in range(4): + assert_equal(data_gen2[row][col], grid_gen2[row, col]) + + grid_gen3 = grid_gen2.evolve() + for row in range(4): + for col in range(4): + assert_equal(data_gen3[row][col], grid_gen3[row, col]) From 2326f1d262ab3c284128b6dd485e910e552bd27a Mon Sep 17 00:00:00 2001 From: Scott Main Date: Mon, 25 Nov 2024 14:41:06 -0800 Subject: [PATCH 027/119] Convert Mojo docs from notebooks to MDX This PR is purely a file format change; there are no copy changes. We started writing the docs as notebooks because it was convenient to write code snippets that we could execute in situ and print outputs for the docs. We also thought this would allow us to test all the code in CI, but that has proven much more difficult than we had hoped. Although it's still nice to run code in situ, this does not outweigh the problems. The primary problems are: Editing the docs is slightly more cumbersome compared to markdown because it's done in a GUI, and GitHub reviews are very challenging because we can't comment on the rendered view (you must instead open the JSON source and make comments there, which is thoroughly confusing). Switching to markdown should make editing and reviewing documents much faster. For code testing, we will rely more on GitHub code examples that _can_ be tested in CI (and copy them into the markdown). We're using `.mdx` instead of `.md` because MDX is more reliable and extensible with Docusaurus. The CommonMark processor for `.md` files has some bugs, such as an inability to faithfully parse some types of HTML inside markdown. MODULAR_ORIG_COMMIT_REV_ID: 595d2f763197aa502263eb76ce388b0781738366 --- docs/manual/basics.ipynb | 741 ------- docs/manual/basics.mdx | 406 ++++ docs/manual/control-flow.ipynb | 887 -------- docs/manual/control-flow.mdx | 500 +++++ docs/manual/decorators/always-inline.ipynb | 102 - docs/manual/decorators/always-inline.md | 46 + docs/manual/decorators/copy-capture.ipynb | 64 - docs/manual/decorators/copy-capture.md | 27 + docs/manual/decorators/index.mdx | 14 +- .../manual/decorators/nonmaterializable.ipynb | 112 - docs/manual/decorators/nonmaterializable.md | 59 + docs/manual/decorators/parameter.ipynb | 195 -- docs/manual/decorators/parameter.md | 115 + .../manual/decorators/register-passable.ipynb | 205 -- docs/manual/decorators/register-passable.md | 105 + docs/manual/decorators/staticmethod.ipynb | 85 - docs/manual/decorators/staticmethod.md | 39 + docs/manual/decorators/value.ipynb | 111 - docs/manual/decorators/value.md | 49 + docs/manual/functions.ipynb | 855 -------- docs/manual/functions.mdx | 598 ++++++ docs/manual/lifecycle/death.ipynb | 548 ----- docs/manual/lifecycle/death.mdx | 411 ++++ docs/manual/lifecycle/index.ipynb | 128 -- docs/manual/lifecycle/index.mdx | 86 + docs/manual/lifecycle/life.ipynb | 926 -------- docs/manual/lifecycle/life.mdx | 691 ++++++ docs/manual/parameters/index.ipynb | 1908 ----------------- docs/manual/parameters/index.mdx | 1270 +++++++++++ docs/manual/pointers.ipynb | 751 ------- docs/manual/pointers.mdx | 530 +++++ docs/manual/python/index.ipynb | 297 --- docs/manual/python/index.mdx | 236 ++ docs/manual/python/types.ipynb | 292 --- docs/manual/python/types.mdx | 172 ++ docs/manual/structs.ipynb | 485 ----- docs/manual/structs.mdx | 317 +++ docs/manual/traits.ipynb | 750 ------- docs/manual/traits.mdx | 515 +++++ docs/manual/types.ipynb | 1124 ---------- docs/manual/types.mdx | 763 +++++++ docs/manual/values/index.ipynb | 158 -- docs/manual/values/index.mdx | 111 + docs/manual/values/lifetimes.ipynb | 595 ----- docs/manual/values/lifetimes.mdx | 434 ++++ docs/manual/values/ownership.ipynb | 653 ------ docs/manual/values/ownership.mdx | 465 ++++ docs/manual/values/value-semantics.ipynb | 431 ---- docs/manual/values/value-semantics.mdx | 270 +++ docs/manual/variables.ipynb | 493 ----- docs/manual/variables.mdx | 299 +++ docs/tools/debugging.ipynb | 637 ------ docs/tools/debugging.mdx | 543 +++++ docs/tools/testing.ipynb | 792 ------- docs/tools/testing.mdx | 648 ++++++ 55 files changed, 9712 insertions(+), 14332 deletions(-) delete mode 100644 docs/manual/basics.ipynb create mode 100644 docs/manual/basics.mdx delete mode 100644 docs/manual/control-flow.ipynb create mode 100644 docs/manual/control-flow.mdx delete mode 100644 docs/manual/decorators/always-inline.ipynb create mode 100644 docs/manual/decorators/always-inline.md delete mode 100644 docs/manual/decorators/copy-capture.ipynb create mode 100644 docs/manual/decorators/copy-capture.md delete mode 100644 docs/manual/decorators/nonmaterializable.ipynb create mode 100644 docs/manual/decorators/nonmaterializable.md delete mode 100644 docs/manual/decorators/parameter.ipynb create mode 100644 docs/manual/decorators/parameter.md delete mode 100644 docs/manual/decorators/register-passable.ipynb create mode 100644 docs/manual/decorators/register-passable.md delete mode 100644 docs/manual/decorators/staticmethod.ipynb create mode 100644 docs/manual/decorators/staticmethod.md delete mode 100644 docs/manual/decorators/value.ipynb create mode 100644 docs/manual/decorators/value.md delete mode 100755 docs/manual/functions.ipynb create mode 100644 docs/manual/functions.mdx delete mode 100644 docs/manual/lifecycle/death.ipynb create mode 100644 docs/manual/lifecycle/death.mdx delete mode 100644 docs/manual/lifecycle/index.ipynb create mode 100644 docs/manual/lifecycle/index.mdx delete mode 100644 docs/manual/lifecycle/life.ipynb create mode 100644 docs/manual/lifecycle/life.mdx delete mode 100644 docs/manual/parameters/index.ipynb create mode 100644 docs/manual/parameters/index.mdx delete mode 100644 docs/manual/pointers.ipynb create mode 100644 docs/manual/pointers.mdx delete mode 100644 docs/manual/python/index.ipynb create mode 100644 docs/manual/python/index.mdx delete mode 100644 docs/manual/python/types.ipynb create mode 100644 docs/manual/python/types.mdx delete mode 100644 docs/manual/structs.ipynb create mode 100644 docs/manual/structs.mdx delete mode 100755 docs/manual/traits.ipynb create mode 100644 docs/manual/traits.mdx delete mode 100644 docs/manual/types.ipynb create mode 100644 docs/manual/types.mdx delete mode 100644 docs/manual/values/index.ipynb create mode 100644 docs/manual/values/index.mdx delete mode 100644 docs/manual/values/lifetimes.ipynb create mode 100644 docs/manual/values/lifetimes.mdx delete mode 100644 docs/manual/values/ownership.ipynb create mode 100644 docs/manual/values/ownership.mdx delete mode 100644 docs/manual/values/value-semantics.ipynb create mode 100644 docs/manual/values/value-semantics.mdx delete mode 100644 docs/manual/variables.ipynb create mode 100644 docs/manual/variables.mdx delete mode 100644 docs/tools/debugging.ipynb create mode 100644 docs/tools/debugging.mdx delete mode 100644 docs/tools/testing.ipynb create mode 100644 docs/tools/testing.mdx diff --git a/docs/manual/basics.ipynb b/docs/manual/basics.ipynb deleted file mode 100644 index 05d218396d..0000000000 --- a/docs/manual/basics.ipynb +++ /dev/null @@ -1,741 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Introduction to Mojo\n", - "sidebar_position: 1\n", - "description: Introduction to Mojo's basic language features.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "At this point, you should have already set up the Mojo\n", - "SDK and run [\"Hello\n", - "world\"](/mojo/manual/get-started). Now let's talk about how\n", - "to write Mojo code.\n", - "\n", - "If\n", - "you know Python, then a lot of Mojo code will look familiar. However, Mojo\n", - "is—first and foremost—designed for high-performance systems programming, with\n", - "features like strong type checking, memory safety, next-generation compiler\n", - "technologies, and more. As such, Mojo also has a lot in common with languages\n", - "like C++ and Rust.\n", - "\n", - "Yet, we've designed Mojo to be flexible, so you can incrementally adopt\n", - "systems-programming features like strong type checking as you see fit—Mojo does\n", - "not *require* strong type checking.\n", - "\n", - "On this page, we'll introduce the essential Mojo syntax, so you can start\n", - "coding quickly and understand other Mojo code you encounter. Subsequent\n", - "sections in the Mojo Manual dive deeper into these topics, and links are\n", - "provided below as appropriate.\n", - "\n", - "Let's get started! 🔥\n", - "\n", - ":::note\n", - "\n", - "Mojo is a young language and there are many [features still\n", - "missing](/mojo/roadmap). As such, Mojo is currently **not** meant for\n", - "beginners. Even this basics section assumes some programming experience.\n", - "However, throughout the Mojo Manual, we try not to assume experience with any\n", - "particular language.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Functions" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo functions can be declared with either `fn` or `def`.\n", - "\n", - "The `fn` declaration enforces type-checking and memory-safe behaviors (Rust\n", - "style), while `def` allows no type declarations and dynamic behaviors (Python\n", - "style).\n", - "\n", - "For example, this `def` function doesn't require declaration of argument types\n", - "or the return type:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def greet(name):\n", - " return \"Hello, \" + name + \"!\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "While the same thing as an `fn` function requires that you specify the\n", - "argument type and the return type like this:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn greet2(name: String) -> String:\n", - " return \"Hello, \" + name + \"!\"" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Both functions have the same result, but the `fn` function provides\n", - "compile-time checks to ensure the function receives and returns the correct\n", - "types. Whereas, the `def` function might fail at runtime if it receives the\n", - "wrong type.\n", - "\n", - "Currently, Mojo doesn't support top-level code in a `.mojo` (or `.🔥`) file, so\n", - "every program must include a function named `main()` as the entry point.\n", - "You can declare it with either `def` or `fn`:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def main():\n", - " print(\"Hello, world!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "You don't need a `main()` function when coding in the\n", - "[REPL](/mojo/manual/get-started#2-run-code-in-the-repl) or in a\n", - "[Jupyter\n", - "notebook](https://github.com/modularml/mojo/tree/main/examples/notebooks#readme).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more details, see the page about\n", - "[functions](/mojo/manual/functions)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Value ownership and argument mutability" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you're wondering whether function arguments are passed by value or\n", - "passed by reference, the short answer is: `def` functions receive arguments\n", - "\"by value\" and `fn` functions receive arguments \"by immutable reference.\"\n", - "\n", - "The longer short answer is that Mojo allows you to specify for each argument\n", - "whether it should be passed by value (as `owned`), or whether it should be\n", - "passed by reference (as `borrowed` for an immutable reference, or as `inout`\n", - "for a mutable reference).\n", - "\n", - "This feature is entwined with Mojo's value ownership model, which protects you\n", - "from memory errors by ensuring that only one variable \"owns\" a value at any\n", - "given time (but allowing other variables to receive a reference to it).\n", - "Ownership then ensures that the value is destroyed when the lifetime of the\n", - "owner ends (and there are no outstanding references).\n", - "\n", - "But that's still a short answer, because going much further is a slippery slope\n", - "into complexity that is out of scope for this section. For the complete\n", - "answer, see the section about [value ownership](/mojo/manual/values/).\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Variables" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can declare variables with the `var` keyword. Or, if your code is in a\n", - "`def` function, you can omit the `var` (in an `fn` function, you must include\n", - "the `var` keyword).\n", - "\n", - "For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "def do_math(x):\n", - " var y = x + x\n", - " y = y * y\n", - " print(y)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Optionally, you can also declare a variable type like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "def add_one(x):\n", - " var y: Int = 1\n", - " print(x + y)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Even in an `fn` function, declaring the variable type is optional\n", - "(only the argument and return types must be declared in `fn` functions).\n", - "\n", - "For more details, see the page about\n", - "[variables](/mojo/manual/variables)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Structs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can build high-level abstractions for types (or \"objects\") as a `struct`. \n", - "\n", - "A `struct` in Mojo is similar to a `class` in Python: they both support\n", - "methods, fields, operator overloading, decorators for metaprogramming, and so\n", - "on. However, Mojo structs are completely static—they are bound at compile-time,\n", - "so they do not allow dynamic dispatch or any runtime changes to the structure.\n", - "(Mojo will also support Python-style classes in the future.)\n", - "\n", - "For example, here's a basic struct:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPair:\n", - " var first: Int\n", - " var second: Int\n", - "\n", - " fn __init__(out self, first: Int, second: Int):\n", - " self.first = first\n", - " self.second = second\n", - "\n", - " fn dump(self):\n", - " print(self.first, self.second)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And here's how you can use it:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "fn use_mypair():\n", - " var mine = MyPair(2, 4)\n", - " mine.dump()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more details, see the page about\n", - "[structs](/mojo/manual/structs)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Traits\n", - "\n", - "A trait is like a template of characteristics for a struct. If you want to\n", - "create a struct with the characteristics defined in a trait, you must implement\n", - "each characteristic (such as each method). Each characteristic in a trait is a\n", - "\"requirement\" for the struct, and when your struct implements each requirement,\n", - "it's said to \"conform\" to the trait.\n", - "\n", - "Currently, the only characteristics that traits can define are method signatures. Also, traits\n", - "currently cannot implement default behaviors for methods.\n", - "\n", - "Using traits allows you to write generic functions that can accept any type\n", - "that conforms to a trait, rather than accept only specific types.\n", - "\n", - "For example, here's how you can create a trait (notice the function is not\n", - "implemented):" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "trait SomeTrait:\n", - " fn required_method(self, x: Int): ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And here's how to create a struct that conforms to the trait:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct SomeStruct(SomeTrait):\n", - " fn required_method(self, x: Int):\n", - " print(\"hello traits\", x)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Then, here's a function that uses the trait as an argument type (instead of the\n", - "struct type):" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "fn fun_with_traits[T: SomeTrait](x: T):\n", - " x.required_method(42)\n", - "\n", - "fn use_trait_function():\n", - " var thing = SomeStruct()\n", - " fun_with_traits(thing)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "You're probably wondering about the square brackets on `fun_with_traits()`.\n", - "These aren't function _arguments_ (which go in parentheses); these are function\n", - "_parameters_, which we'll explain next.\n", - "\n", - ":::\n", - "\n", - "Without traits, the `x` argument in `fun_with_traits()` would have to declare a\n", - "specific type that implements `required_method()`, such as `SomeStruct`\n", - "(but then the function would accept only that type). With traits, the function\n", - "can accept any type for `x` as long as it conforms to (it \"implements\")\n", - "`SomeTrait`. Thus, `fun_with_traits()` is known as a \"generic function\" because\n", - "it accepts a _generalized_ type instead of a specific type.\n", - "\n", - "For more details, see the page about [traits](/mojo/manual/traits)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Parameterization" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In Mojo, a parameter is a compile-time variable that becomes a runtime\n", - "constant, and it's declared in square brackets on a function or struct.\n", - "Parameters allow for compile-time metaprogramming, which means you can generate\n", - "or modify code at compile time.\n", - "\n", - "Many other languages use \"parameter\" and \"argument\" interchangeably, so be\n", - "aware that when we say things like \"parameter\" and \"parametric function,\" we're\n", - "talking about these compile-time parameters. Whereas, a function \"argument\" is\n", - "a runtime value that's declared in parentheses.\n", - "\n", - "Parameterization is a complex topic that's covered in much more detail in the\n", - "[Metaprogramming](/mojo/manual/parameters/) section, but we want to break the\n", - "ice just a little bit here. To get you started, let's look at a parametric\n", - "function:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "fn repeat[count: Int](msg: String):\n", - " for i in range(count):\n", - " print(msg)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This function has one parameter of type `Int` and one argument of type\n", - "`String`. To call the function, you need to specify both the parameter and the\n", - "argument:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "fn call_repeat():\n", - " repeat[3](\"Hello\")\n", - " # Prints \"Hello\" 3 times" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "By specifying `count` as a parameter, the Mojo compiler is able to optimize the\n", - "function because this value is guaranteed to not change at runtime. The\n", - "compiler effectively generates a unique version of the `repeat()` function that\n", - "repeats the message only 3 times. This makes the code more performant because\n", - "there's less to compute at runtime.\n", - "\n", - "Similarly, you can define a struct with parameters, which effectively allows\n", - "you to define variants of that type at compile-time, depending on the parameter\n", - "values.\n", - "\n", - "For more detail on parameters, see the section on\n", - "[Metaprogramming](/mojo/manual/parameters/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Blocks and statements" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Code blocks such as functions, conditions, and loops are defined\n", - "with a colon followed by indented lines. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def loop():\n", - " for x in range(5):\n", - " if x % 2 == 0:\n", - " print(x)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can use any number of spaces or tabs for your indentation (we prefer 4\n", - "spaces).\n", - "\n", - "All code statements in Mojo end with a newline. However, statements can span\n", - "multiple lines if you indent the following lines. For example, this long string\n", - "spans two lines:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def print_line():\n", - " long_text = \"This is a long line of text that is a lot easier to read if\"\n", - " \" it is broken up across two lines instead of one long line.\"\n", - " print(long_text)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "And you can chain function calls across lines:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def print_hello():\n", - " text = String(\",\")\n", - " .join(\"Hello\", \" world!\")\n", - " print(text)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Code comments\n", - "\n", - "You can create a one-line comment using the hash `#` symbol:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# This is a comment. The Mojo compiler ignores this line." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Comments may also follow some code:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "var message = \"Hello, World!\" # This is also a valid comment" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can instead write longer comments across many lines using triple quotes:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "\"\"\"\n", - "This is also a comment, but it's easier to write across\n", - "many lines, because each line doesn't need the # symbol.\n", - "\"\"\"" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Triple quotes is the preferred method of writing API documentation. For example:\n", - "\n", - "```mojo\n", - "fn print(x: String):\n", - " \"\"\"Prints a string.\n", - "\n", - " Args:\n", - " x: The string to print.\n", - " \"\"\"\n", - " ...\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Documenting your code with these kinds of comments (known as \"docstrings\")\n", - "is a topic we've yet to fully specify, but you can generate an API reference\n", - "from docstrings using the [`mojo doc` command](/mojo/cli/doc)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Python integration" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo does not yet adopt the full syntax of Python, but we've built a mechanism to import\n", - "Python modules as-is, so you can leverage existing Python code right away.\n", - "\n", - "For example, here's how you can import and use NumPy (you must have Python\n", - "`numpy` installed):" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from python import Python\n", - "\n", - "def main():\n", - " var np = Python.import_module(\"numpy\")\n", - " var ar = np.arange(15).reshape(3, 5)\n", - " print(ar)\n", - " print(ar.shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "**Note:** You must have the Python module (such as `numpy`) installed already.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more details, see the page about\n", - "[Python integration](/mojo/manual/python/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Next steps" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Hopefully this page has given you enough information to start experimenting with\n", - "Mojo, but this is only touching the surface of what's available in Mojo.\n", - "\n", - "If you're in the mood to read more, continue through each page of this\n", - "Mojo Manual using the buttons at the bottom of each page—the next page from\n", - "here is [Functions](/mojo/manual/functions).\n", - "\n", - "Otherwise, here are some other resources to check out:\n", - "\n", - "- If you want to experiment with some code, clone [the Mojo\n", - "repo](https://github.com/modularml/mojo/) to try our code examples:\n", - "\n", - " ```sh\n", - " git clone https://github.com/modularml/mojo.git\n", - " ```\n", - "\n", - " In addition to several `.mojo` examples, the repo includes [Jupyter\n", - " notebooks](https://github.com/modularml/mojo/tree/main/examples/notebooks#readme)\n", - " that teach advanced Mojo features.\n", - "\n", - "- To see all the available Mojo APIs, check out the [Mojo standard library\n", - " reference](/mojo/lib)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/basics.mdx b/docs/manual/basics.mdx new file mode 100644 index 0000000000..2253f8c7c9 --- /dev/null +++ b/docs/manual/basics.mdx @@ -0,0 +1,406 @@ +--- +title: Introduction to Mojo +sidebar_position: 1 +description: Introduction to Mojo's basic language features. +--- + +At this point, you should have already set up the Mojo +SDK and run ["Hello +world"](/mojo/manual/get-started). Now let's talk about how +to write Mojo code. + +If +you know Python, then a lot of Mojo code will look familiar. However, Mojo +is—first and foremost—designed for high-performance systems programming, with +features like strong type checking, memory safety, next-generation compiler +technologies, and more. As such, Mojo also has a lot in common with languages +like C++ and Rust. + +Yet, we've designed Mojo to be flexible, so you can incrementally adopt +systems-programming features like strong type checking as you see fit—Mojo does +not *require* strong type checking. + +On this page, we'll introduce the essential Mojo syntax, so you can start +coding quickly and understand other Mojo code you encounter. Subsequent +sections in the Mojo Manual dive deeper into these topics, and links are +provided below as appropriate. + +Let's get started! 🔥 + +:::note + +Mojo is a young language and there are many [features still +missing](/mojo/roadmap). As such, Mojo is currently **not** meant for +beginners. Even this basics section assumes some programming experience. +However, throughout the Mojo Manual, we try not to assume experience with any +particular language. + +::: + +## Functions + +Mojo functions can be declared with either `fn` or `def`. + +The `fn` declaration enforces type-checking and memory-safe behaviors (Rust +style), while `def` allows no type declarations and dynamic behaviors (Python +style). + +For example, this `def` function doesn't require declaration of argument types +or the return type: + +```mojo +def greet(name): + return "Hello, " + name + "!" +``` + +While the same thing as an `fn` function requires that you specify the +argument type and the return type like this: + +```mojo +fn greet2(name: String) -> String: + return "Hello, " + name + "!" +``` + +Both functions have the same result, but the `fn` function provides +compile-time checks to ensure the function receives and returns the correct +types. Whereas, the `def` function might fail at runtime if it receives the +wrong type. + +Currently, Mojo doesn't support top-level code in a `.mojo` (or `.🔥`) file, so +every program must include a function named `main()` as the entry point. +You can declare it with either `def` or `fn`: + +```mojo +def main(): + print("Hello, world!") +``` + +:::note + +You don't need a `main()` function when coding in the +[REPL](/mojo/manual/get-started#2-run-code-in-the-repl) or in a +[Jupyter +notebook](https://github.com/modularml/mojo/tree/main/examples/notebooks#readme). + +::: + +For more details, see the page about +[functions](/mojo/manual/functions). + +### Value ownership and argument mutability + +If you're wondering whether function arguments are passed by value or +passed by reference, the short answer is: `def` functions receive arguments +"by value" and `fn` functions receive arguments "by immutable reference." + +The longer short answer is that Mojo allows you to specify for each argument +whether it should be passed by value (as `owned`), or whether it should be +passed by reference (as `borrowed` for an immutable reference, or as `inout` +for a mutable reference). + +This feature is entwined with Mojo's value ownership model, which protects you +from memory errors by ensuring that only one variable "owns" a value at any +given time (but allowing other variables to receive a reference to it). +Ownership then ensures that the value is destroyed when the lifetime of the +owner ends (and there are no outstanding references). + +But that's still a short answer, because going much further is a slippery slope +into complexity that is out of scope for this section. For the complete +answer, see the section about [value ownership](/mojo/manual/values/). + +## Variables + +You can declare variables with the `var` keyword. Or, if your code is in a +`def` function, you can omit the `var` (in an `fn` function, you must include +the `var` keyword). + +For example: + +```mojo +def do_math(x): + var y = x + x + y = y * y + print(y) +``` + +Optionally, you can also declare a variable type like this: + +```mojo +def add_one(x): + var y: Int = 1 + print(x + y) +``` + +Even in an `fn` function, declaring the variable type is optional +(only the argument and return types must be declared in `fn` functions). + +For more details, see the page about +[variables](/mojo/manual/variables). + +## Structs + +You can build high-level abstractions for types (or "objects") as a `struct`. + +A `struct` in Mojo is similar to a `class` in Python: they both support +methods, fields, operator overloading, decorators for metaprogramming, and so +on. However, Mojo structs are completely static—they are bound at compile-time, +so they do not allow dynamic dispatch or any runtime changes to the structure. +(Mojo will also support Python-style classes in the future.) + +For example, here's a basic struct: + +```mojo +struct MyPair: + var first: Int + var second: Int + + fn __init__(out self, first: Int, second: Int): + self.first = first + self.second = second + + fn dump(self): + print(self.first, self.second) +``` + +And here's how you can use it: + +```mojo +fn use_mypair(): + var mine = MyPair(2, 4) + mine.dump() +``` + +For more details, see the page about +[structs](/mojo/manual/structs). + +### Traits + +A trait is like a template of characteristics for a struct. If you want to +create a struct with the characteristics defined in a trait, you must implement +each characteristic (such as each method). Each characteristic in a trait is a +"requirement" for the struct, and when your struct implements each requirement, +it's said to "conform" to the trait. + +Currently, the only characteristics that traits can define are method signatures. Also, traits +currently cannot implement default behaviors for methods. + +Using traits allows you to write generic functions that can accept any type +that conforms to a trait, rather than accept only specific types. + +For example, here's how you can create a trait (notice the function is not +implemented): + +```mojo +trait SomeTrait: + fn required_method(self, x: Int): ... +``` + +And here's how to create a struct that conforms to the trait: + +```mojo +@value +struct SomeStruct(SomeTrait): + fn required_method(self, x: Int): + print("hello traits", x) +``` + +Then, here's a function that uses the trait as an argument type (instead of the +struct type): + +```mojo +fn fun_with_traits[T: SomeTrait](x: T): + x.required_method(42) + +fn use_trait_function(): + var thing = SomeStruct() + fun_with_traits(thing) +``` + +:::note + +You're probably wondering about the square brackets on `fun_with_traits()`. +These aren't function *arguments* (which go in parentheses); these are function +*parameters*, which we'll explain next. + +::: + +Without traits, the `x` argument in `fun_with_traits()` would have to declare a +specific type that implements `required_method()`, such as `SomeStruct` +(but then the function would accept only that type). With traits, the function +can accept any type for `x` as long as it conforms to (it "implements") +`SomeTrait`. Thus, `fun_with_traits()` is known as a "generic function" because +it accepts a *generalized* type instead of a specific type. + +For more details, see the page about [traits](/mojo/manual/traits). + +## Parameterization + +In Mojo, a parameter is a compile-time variable that becomes a runtime +constant, and it's declared in square brackets on a function or struct. +Parameters allow for compile-time metaprogramming, which means you can generate +or modify code at compile time. + +Many other languages use "parameter" and "argument" interchangeably, so be +aware that when we say things like "parameter" and "parametric function," we're +talking about these compile-time parameters. Whereas, a function "argument" is +a runtime value that's declared in parentheses. + +Parameterization is a complex topic that's covered in much more detail in the +[Metaprogramming](/mojo/manual/parameters/) section, but we want to break the +ice just a little bit here. To get you started, let's look at a parametric +function: + +```mojo +fn repeat[count: Int](msg: String): + for i in range(count): + print(msg) +``` + +This function has one parameter of type `Int` and one argument of type +`String`. To call the function, you need to specify both the parameter and the +argument: + +```mojo +fn call_repeat(): + repeat[3]("Hello") + # Prints "Hello" 3 times +``` + +By specifying `count` as a parameter, the Mojo compiler is able to optimize the +function because this value is guaranteed to not change at runtime. The +compiler effectively generates a unique version of the `repeat()` function that +repeats the message only 3 times. This makes the code more performant because +there's less to compute at runtime. + +Similarly, you can define a struct with parameters, which effectively allows +you to define variants of that type at compile-time, depending on the parameter +values. + +For more detail on parameters, see the section on +[Metaprogramming](/mojo/manual/parameters/). + +## Blocks and statements + +Code blocks such as functions, conditions, and loops are defined +with a colon followed by indented lines. For example: + +```mojo +def loop(): + for x in range(5): + if x % 2 == 0: + print(x) +``` + +You can use any number of spaces or tabs for your indentation (we prefer 4 +spaces). + +All code statements in Mojo end with a newline. However, statements can span +multiple lines if you indent the following lines. For example, this long string +spans two lines: + +```mojo +def print_line(): + long_text = "This is a long line of text that is a lot easier to read if" + " it is broken up across two lines instead of one long line." + print(long_text) +``` + +And you can chain function calls across lines: + +```mojo +def print_hello(): + text = String(",") + .join("Hello", " world!") + print(text) +``` + +## Code comments + +You can create a one-line comment using the hash `#` symbol: + +```mojo +# This is a comment. The Mojo compiler ignores this line. +``` + +Comments may also follow some code: + +```mojo +var message = "Hello, World!" # This is also a valid comment +``` + +You can instead write longer comments across many lines using triple quotes: + +```mojo +""" +This is also a comment, but it's easier to write across +many lines, because each line doesn't need the # symbol. +""" +``` + +Triple quotes is the preferred method of writing API documentation. For example: + +```mojo +fn print(x: String): + """Prints a string. + + Args: + x: The string to print. + """ + ... +``` + +Documenting your code with these kinds of comments (known as "docstrings") +is a topic we've yet to fully specify, but you can generate an API reference +from docstrings using the [`mojo doc` command](/mojo/cli/doc). + +## Python integration + +Mojo does not yet adopt the full syntax of Python, but we've built a mechanism to import +Python modules as-is, so you can leverage existing Python code right away. + +For example, here's how you can import and use NumPy (you must have Python +`numpy` installed): + +```mojo +from python import Python + +def main(): + var np = Python.import_module("numpy") + var ar = np.arange(15).reshape(3, 5) + print(ar) + print(ar.shape) +``` + +:::note + +**Note:** You must have the Python module (such as `numpy`) installed already. + +::: + +For more details, see the page about +[Python integration](/mojo/manual/python/). + +## Next steps + +Hopefully this page has given you enough information to start experimenting with +Mojo, but this is only touching the surface of what's available in Mojo. + +If you're in the mood to read more, continue through each page of this +Mojo Manual using the buttons at the bottom of each page—the next page from +here is [Functions](/mojo/manual/functions). + +Otherwise, here are some other resources to check out: + +* If you want to experiment with some code, clone [the Mojo + repo](https://github.com/modularml/mojo/) to try our code examples: + + ```sh + git clone https://github.com/modularml/mojo.git + ``` + + In addition to several `.mojo` examples, the repo includes [Jupyter + notebooks](https://github.com/modularml/mojo/tree/main/examples/notebooks#readme) + that teach advanced Mojo features. + +* To see all the available Mojo APIs, check out the [Mojo standard library + reference](/mojo/lib). diff --git a/docs/manual/control-flow.ipynb b/docs/manual/control-flow.ipynb deleted file mode 100644 index 8ee4dab294..0000000000 --- a/docs/manual/control-flow.ipynb +++ /dev/null @@ -1,887 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Control flow\n", - "description: Mojo control flow statements.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo includes several traditional control flow structures for conditional and\n", - "repeated execution of code blocks.\n", - "\n", - "## The `if` statement\n", - "\n", - "Mojo supports the `if` statement for conditional code execution. With it you can\n", - "conditionally execute an indented code block if a given\n", - "[boolean](/mojo/manual/types#booleans) expression evaluates to `True`.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "It is warm.\n", - "The temperature is 77.0 Fahrenheit.\n" - ] - } - ], - "source": [ - "temp_celsius = 25\n", - "if temp_celsius > 20:\n", - " print(\"It is warm.\")\n", - " print(\"The temperature is\", temp_celsius * 9 / 5 + 32, \"Fahrenheit.\" )" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can write the entire `if` statement as a single line if all you need to\n", - "execute conditionally is a single, short statement." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "It is warm.\n" - ] - } - ], - "source": [ - "temp_celsius = 22\n", - "if temp_celsius < 15: print(\"It is cool.\") # Skipped because condition is False\n", - "if temp_celsius > 20: print(\"It is warm.\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Optionally, an `if` statement can include any number of additional `elif`\n", - "clauses, each specifying a boolean condition and associated code block to\n", - "execute if `True`. The conditions are tested in the order given. When a\n", - "condition evaluates to `True`, the associated code block is executed and no\n", - "further conditions are tested.\n", - "\n", - "Additionally, an `if` statement can include an optional `else` clause providing\n", - "a code block to execute if all conditions evaluate to `False`." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "It is warm.\n" - ] - } - ], - "source": [ - "temp_celsius = 25\n", - "if temp_celsius <= 0:\n", - " print(\"It is freezing.\")\n", - "elif temp_celsius < 20:\n", - " print(\"It is cool.\")\n", - "elif temp_celsius < 30:\n", - " print(\"It is warm.\")\n", - "else:\n", - " print(\"It is hot.\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note TODO\n", - "\n", - "Mojo currently does not support the equivalent of a Python `match` or C `switch`\n", - "statement for pattern matching and conditional execution.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Short-circuit evaluation\n", - "\n", - "Mojo follows [short-circuit evaluation](https://en.wikipedia.org/wiki/Short-circuit_evaluation)\n", - "semantics for boolean operators. If the first argument to an `or` operator\n", - "evaluates to `True`, the second argument is not evaluated.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Short-circuit \"or\" evaluation\n", - "Executing true_func\n", - "True result\n" - ] - } - ], - "source": [ - "def true_func() -> Bool:\n", - " print(\"Executing true_func\")\n", - " return True\n", - "\n", - "def false_func() -> Bool:\n", - " print(\"Executing false_func\")\n", - " return False\n", - "\n", - "print('Short-circuit \"or\" evaluation')\n", - "if true_func() or false_func():\n", - " print(\"True result\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If the first argument to an `and` operator evaluates to `False`, the second\n", - "argument is not evaluated." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Short-circuit \"and\" evaluation\n", - "Executing false_func\n" - ] - } - ], - "source": [ - "print('Short-circuit \"and\" evaluation')\n", - "if false_func() and true_func():\n", - " print(\"True result\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Conditional expressions\n", - "\n", - "Mojo also supports conditional expressions (or what is sometimes called a\n", - "[_ternary conditional operator_](https://en.wikipedia.org/wiki/Ternary_conditional_operator))\n", - "using the syntaxtrue_result if boolean_expression else false_result, just as\n", - "in Python. This is most often used as a concise way to assign one of two\n", - "different values to a variable, based on a boolean condition." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The forecast for today is cool\n" - ] - } - ], - "source": [ - "temp_celsius = 15\n", - "forecast = \"warm\" if temp_celsius > 20 else \"cool\"\n", - "print(\"The forecast for today is\", forecast)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The alternative, written as a multi-line `if` statement, is more verbose." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The forecast for today is cool\n" - ] - } - ], - "source": [ - "if temp_celsius > 20:\n", - " forecast = \"warm\"\n", - "else:\n", - " forecast = \"cool\"\n", - "print(\"The forecast for today is\", forecast)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## The `while` statement\n", - "\n", - "The `while` loop repeatedly executes a code block while a given boolean\n", - "expression evaluates to `True`. For example, the following loop prints values\n", - "from the Fibonacci series that are less than 50." - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0, 1, 1, 2, 3, 5, 8, 13, 21, 34" - ] - } - ], - "source": [ - "fib_prev = 0\n", - "fib_curr = 1\n", - "\n", - "print(fib_prev, end=\"\")\n", - "while fib_curr < 50:\n", - " print(\",\", fib_curr, end=\"\")\n", - " fib_prev, fib_curr = fib_curr, fib_prev + fib_curr" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A `continue` statement skips execution of the rest of the code block and\n", - "resumes with the loop test expression." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1, 2, 4, 5, " - ] - } - ], - "source": [ - "n = 0\n", - "while n < 5:\n", - " n += 1\n", - " if n == 3:\n", - " continue\n", - " print(n, end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A `break` statement terminates execution of the loop." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1, 2, " - ] - } - ], - "source": [ - "n = 0\n", - "while n < 5:\n", - " n += 1\n", - " if n == 3:\n", - " break\n", - " print(n, end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Optionally, a `while` loop can include an `else` clause. The body of the `else`\n", - "clause executes when the loop's boolean condition evaluates to `False`, even if\n", - "it occurs the first time tested." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loop completed\n" - ] - } - ], - "source": [ - "n = 5\n", - "\n", - "while n < 4:\n", - " print(n)\n", - " n += 1\n", - "else:\n", - " print(\"Loop completed\")\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "The `else` clause does _not_ execute if a `break` or `return` statement\n", - "exits the `while` loop.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n" - ] - } - ], - "source": [ - "n = 0\n", - "while n < 5:\n", - " n += 1\n", - " if n == 3:\n", - " break\n", - " print(n)\n", - "else:\n", - " print(\"Executing else clause\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## The `for` statement\n", - "\n", - "The `for` loop iterates over a sequence, executing a code block for each\n", - "element in the sequence.\n", - "The Mojo `for` loop can iterate over any type that implements an `__iter__()`\n", - "method that returns a type that defines `__next__()` and `__len__()` methods.\n", - "\n", - "### Iterating over Mojo collections\n", - "\n", - "All of the collection types in the [`collections`](/mojo/stdlib/collections)\n", - "module support `for` loop iteration. See the\n", - "[Collection types](/mojo/manual/types#collection-types) documentation for more\n", - "information on Mojo collection types.\n", - "\n", - ":::caution TODO\n", - "\n", - "Iterating over Mojo native collections currently assigns the loop index variable\n", - "a [`Reference`](/mojo/stdlib/memory/reference/Reference) to each item, not the\n", - "item itself. You can access the item using the dereference operator, `[]`, as\n", - "shown in the examples below. This may change in a future version of Mojo.\n", - "\n", - ":::\n", - "\n", - "The following shows an example of iterating over a Mojo\n", - "[`List`](/mojo/stdlib/collections/list/List)." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "California\n", - "Hawaii\n", - "Oregon\n" - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "states = List[String](\"California\", \"Hawaii\", \"Oregon\")\n", - "for state in states:\n", - " print(state[])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The same technique works for iterating over a Mojo\n", - "[`Set`](/mojo/stdlib/collections/set/Set)." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "42\n", - "0\n" - ] - } - ], - "source": [ - "from collections import Set\n", - "\n", - "values = Set[Int](42, 0)\n", - "for item in values:\n", - " print(item[])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There are two techniques for iterating over a Mojo\n", - "[`Dict`](/mojo/stdlib/collections/dict/Dict). The first is to iterate directly\n", - "using the `Dict`, which produces a sequence of the dictionary's keys." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Sacramento, California\n", - "Honolulu, Hawaii\n", - "Salem, Oregon\n" - ] - } - ], - "source": [ - "from collections import Dict\n", - "\n", - "capitals = Dict[String, String]()\n", - "capitals[\"California\"] = \"Sacramento\"\n", - "capitals[\"Hawaii\"] = \"Honolulu\"\n", - "capitals[\"Oregon\"] = \"Salem\"\n", - "\n", - "for state in capitals:\n", - " print(capitals[state[]] + \", \" + state[])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The second approach to iterating over a Mojo `Dict` is to invoke its\n", - "[`items()`](/mojo/stdlib/collections/dict/Dict#items) method, which produces a\n", - "sequence of [`DictEntry`](/mojo/stdlib/collections/dict/DictEntry) objects.\n", - "Within the loop body, you can then access the `key` and `value` fields of the\n", - "entry." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Sacramento, California\n", - "Honolulu, Hawaii\n", - "Salem, Oregon\n" - ] - } - ], - "source": [ - "for item in capitals.items():\n", - " print(item[].value + \", \" + item[].key)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Another type of iterable provided by the Mojo standard library is a _range_,\n", - "which is a sequence of integers generated by the\n", - "[`range()`](/mojo/stdlib/builtin/range/range) function. It differs from the\n", - "collection types shown above in that it's implemented as a\n", - "[generator](https://en.wikipedia.org/wiki/Generator_(computer_programming)),\n", - "producing each value as needed rather than materializing the entire sequence\n", - "in memory. Additionally, each value assigned to the loop index variable is\n", - "simply the `Int` value rather than a `Reference` to the value, so you should\n", - "not use the dereference operator on it within the loop. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0, 1, 2, 3, 4, " - ] - } - ], - "source": [ - "for i in range(5):\n", - " print(i, end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### `for` loop control statements\n", - "\n", - "A `continue` statement skips execution of the rest of the code block and\n", - "resumes the loop with the next element of the collection." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0, 1, 2, 4, " - ] - } - ], - "source": [ - "for i in range(5):\n", - " if i == 3:\n", - " continue\n", - " print(i, end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A `break` statement terminates execution of the loop." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0, 1, 2, " - ] - } - ], - "source": [ - "for i in range(5):\n", - " if i == 3:\n", - " break\n", - " print(i, end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Optionally, a `for` loop can include an `else` clause. The body of the `else`\n", - "clause executes after iterating over all of the elements in a collection." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0, 1, 2, 3, 4, \n", - "Finished executing 'for' loop\n" - ] - } - ], - "source": [ - "for i in range(5):\n", - " print(i, end=\", \")\n", - "else:\n", - " print(\"\\nFinished executing 'for' loop\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `else` clause executes even if the collection is empty." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Finished executing 'for' loop\n" - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "empty = List[Int]()\n", - "for i in empty:\n", - " print(i[])\n", - "else:\n", - " print(\"Finished executing 'for' loop\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "The `else` clause does _not_ execute if a `break` or `return` statement\n", - "terminates the `for` loop.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found a dog\n" - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "animals = List[String](\"cat\", \"aardvark\", \"hippopotamus\", \"dog\")\n", - "for animal in animals:\n", - " if animal[] == \"dog\":\n", - " print(\"Found a dog\")\n", - " break\n", - "else:\n", - " print(\"No dog found\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Iterating over Python collections\n", - "\n", - "The Mojo `for` loop supports iterating over Python collection types. Each item\n", - "retrieved by the loop is a\n", - "[`PythonObject`](/mojo/stdlib/python/object/PythonObject) wrapper around\n", - "the Python object. Refer to the [Python types](/mojo/manual/python/types)\n", - "documentation for more information on manipulating Python objects from Mojo.\n", - "\n", - "The following is a simple example of iterating over a mixed-type Python list." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "42\n", - "cat\n", - "3.14159\n" - ] - } - ], - "source": [ - "from python import Python\n", - "\n", - "# Create a mixed-type Python list\n", - "py_list = Python.evaluate(\"[42, 'cat', 3.14159]\")\n", - "for py_obj in py_list: # Each element is of type \"PythonObject\"\n", - " print(py_obj)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note TODO\n", - "\n", - "Iterating over a Mojo collection currently assigns the loop index variable a\n", - "`Reference` to each element, which then requires you to use the dereference\n", - "operator within the loop body. In contrast, iterating over a Python collection\n", - "assigns a `PythonObject` wrapper for the element, which does _not_ require you\n", - "to use the dereference operator.\n", - "\n", - ":::\n", - "\n", - "\n", - "There are two techniques for iterating over a Python dictionary. The first is to\n", - "iterate directly using the dictionary, which produces a sequence of its keys." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a 1\n", - "b 2.71828\n", - "c sushi\n" - ] - } - ], - "source": [ - "from python import Python\n", - "\n", - "# Create a mixed-type Python dictionary\n", - "py_dict = Python.evaluate(\"{'a': 1, 'b': 2.71828, 'c': 'sushi'}\")\n", - "for py_key in py_dict: # Each element is of type \"PythonObject\"\n", - " print(py_key, py_dict[py_key])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The second approach to iterating over a Python dictionary is to invoke its\n", - "`items()` method, which produces a sequence of 2-tuple objects.\n", - "Within the loop body, you can then access the key and value by index." - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "a 1\n", - "b 2.71828\n", - "c sushi\n" - ] - } - ], - "source": [ - "for py_tuple in py_dict.items(): # Each element is of type \"PythonObject\"\n", - " print(py_tuple[0], py_tuple[1])" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/control-flow.mdx b/docs/manual/control-flow.mdx new file mode 100644 index 0000000000..330abc2ed0 --- /dev/null +++ b/docs/manual/control-flow.mdx @@ -0,0 +1,500 @@ +--- +title: Control flow +description: Mojo control flow statements. +--- + +Mojo includes several traditional control flow structures for conditional and +repeated execution of code blocks. + +## The `if` statement + +Mojo supports the `if` statement for conditional code execution. With it you can +conditionally execute an indented code block if a given +[boolean](/mojo/manual/types#booleans) expression evaluates to `True`. + +```mojo +temp_celsius = 25 +if temp_celsius > 20: + print("It is warm.") + print("The temperature is", temp_celsius * 9 / 5 + 32, "Fahrenheit." ) +``` + +```output +It is warm. +The temperature is 77.0 Fahrenheit. +``` + +You can write the entire `if` statement as a single line if all you need to +execute conditionally is a single, short statement. + +```mojo +temp_celsius = 22 +if temp_celsius < 15: print("It is cool.") # Skipped because condition is False +if temp_celsius > 20: print("It is warm.") +``` + +```output +It is warm. +``` + +Optionally, an `if` statement can include any number of additional `elif` +clauses, each specifying a boolean condition and associated code block to +execute if `True`. The conditions are tested in the order given. When a +condition evaluates to `True`, the associated code block is executed and no +further conditions are tested. + +Additionally, an `if` statement can include an optional `else` clause providing +a code block to execute if all conditions evaluate to `False`. + +```mojo +temp_celsius = 25 +if temp_celsius <= 0: + print("It is freezing.") +elif temp_celsius < 20: + print("It is cool.") +elif temp_celsius < 30: + print("It is warm.") +else: + print("It is hot.") +``` + +```output +It is warm. +``` + +:::note TODO + +Mojo currently does not support the equivalent of a Python `match` or C `switch` +statement for pattern matching and conditional execution. + +::: + +### Short-circuit evaluation + +Mojo follows [short-circuit evaluation](https://en.wikipedia.org/wiki/Short-circuit_evaluation) +semantics for boolean operators. If the first argument to an `or` operator +evaluates to `True`, the second argument is not evaluated. + +```mojo +def true_func() -> Bool: + print("Executing true_func") + return True + +def false_func() -> Bool: + print("Executing false_func") + return False + +print('Short-circuit "or" evaluation') +if true_func() or false_func(): + print("True result") +``` + +```output +Short-circuit "or" evaluation +Executing true_func +True result +``` + +If the first argument to an `and` operator evaluates to `False`, the second +argument is not evaluated. + +```mojo +print('Short-circuit "and" evaluation') +if false_func() and true_func(): + print("True result") +``` + +```output +Short-circuit "and" evaluation +Executing false_func +``` + +### Conditional expressions + +Mojo also supports conditional expressions (or what is sometimes called a +[*ternary conditional operator*](https://en.wikipedia.org/wiki/Ternary_conditional_operator)) +using the syntaxtrue_result if boolean_expression else false_result, just as +in Python. This is most often used as a concise way to assign one of two +different values to a variable, based on a boolean condition. + +```mojo +temp_celsius = 15 +forecast = "warm" if temp_celsius > 20 else "cool" +print("The forecast for today is", forecast) +``` + +```output +The forecast for today is cool +``` + +The alternative, written as a multi-line `if` statement, is more verbose. + +```mojo +if temp_celsius > 20: + forecast = "warm" +else: + forecast = "cool" +print("The forecast for today is", forecast) +``` + +```output +The forecast for today is cool +``` + +## The `while` statement + +The `while` loop repeatedly executes a code block while a given boolean +expression evaluates to `True`. For example, the following loop prints values +from the Fibonacci series that are less than 50. + +```mojo +fib_prev = 0 +fib_curr = 1 + +print(fib_prev, end="") +while fib_curr < 50: + print(",", fib_curr, end="") + fib_prev, fib_curr = fib_curr, fib_prev + fib_curr +``` + +```output +0, 1, 1, 2, 3, 5, 8, 13, 21, 34 +``` + +A `continue` statement skips execution of the rest of the code block and +resumes with the loop test expression. + +```mojo +n = 0 +while n < 5: + n += 1 + if n == 3: + continue + print(n, end=", ") +``` + +```output +1, 2, 4, 5, +``` + +A `break` statement terminates execution of the loop. + +```mojo +n = 0 +while n < 5: + n += 1 + if n == 3: + break + print(n, end=", ") +``` + +```output +1, 2, +``` + +Optionally, a `while` loop can include an `else` clause. The body of the `else` +clause executes when the loop's boolean condition evaluates to `False`, even if +it occurs the first time tested. + +```mojo +n = 5 + +while n < 4: + print(n) + n += 1 +else: + print("Loop completed") + +``` + +```output +Loop completed +``` + +:::note + +The `else` clause does *not* execute if a `break` or `return` statement +exits the `while` loop. + +::: + +```mojo +n = 0 +while n < 5: + n += 1 + if n == 3: + break + print(n) +else: + print("Executing else clause") +``` + +```output +1 +2 +``` + +## The `for` statement + +The `for` loop iterates over a sequence, executing a code block for each +element in the sequence. +The Mojo `for` loop can iterate over any type that implements an `__iter__()` +method that returns a type that defines `__next__()` and `__len__()` methods. + +### Iterating over Mojo collections + +All of the collection types in the [`collections`](/mojo/stdlib/collections) +module support `for` loop iteration. See the +[Collection types](/mojo/manual/types#collection-types) documentation for more +information on Mojo collection types. + +:::caution TODO + +Iterating over Mojo native collections currently assigns the loop index variable +a [`Reference`](/mojo/stdlib/memory/reference/Reference) to each item, not the +item itself. You can access the item using the dereference operator, `[]`, as +shown in the examples below. This may change in a future version of Mojo. + +::: + +The following shows an example of iterating over a Mojo +[`List`](/mojo/stdlib/collections/list/List). + +```mojo +from collections import List + +states = List[String]("California", "Hawaii", "Oregon") +for state in states: + print(state[]) +``` + +```output +California +Hawaii +Oregon +``` + +The same technique works for iterating over a Mojo +[`Set`](/mojo/stdlib/collections/set/Set). + +```mojo +from collections import Set + +values = Set[Int](42, 0) +for item in values: + print(item[]) +``` + +```output +42 +0 +``` + +There are two techniques for iterating over a Mojo +[`Dict`](/mojo/stdlib/collections/dict/Dict). The first is to iterate directly +using the `Dict`, which produces a sequence of the dictionary's keys. + +```mojo +from collections import Dict + +capitals = Dict[String, String]() +capitals["California"] = "Sacramento" +capitals["Hawaii"] = "Honolulu" +capitals["Oregon"] = "Salem" + +for state in capitals: + print(capitals[state[]] + ", " + state[]) +``` + +```output +Sacramento, California +Honolulu, Hawaii +Salem, Oregon +``` + +The second approach to iterating over a Mojo `Dict` is to invoke its +[`items()`](/mojo/stdlib/collections/dict/Dict#items) method, which produces a +sequence of [`DictEntry`](/mojo/stdlib/collections/dict/DictEntry) objects. +Within the loop body, you can then access the `key` and `value` fields of the +entry. + +```mojo +for item in capitals.items(): + print(item[].value + ", " + item[].key) +``` + +```output +Sacramento, California +Honolulu, Hawaii +Salem, Oregon +``` + +Another type of iterable provided by the Mojo standard library is a *range*, +which is a sequence of integers generated by the +[`range()`](/mojo/stdlib/builtin/range/range) function. It differs from the +collection types shown above in that it's implemented as a +[generator](https://en.wikipedia.org/wiki/Generator_\(computer_programming\)), +producing each value as needed rather than materializing the entire sequence +in memory. Additionally, each value assigned to the loop index variable is +simply the `Int` value rather than a `Reference` to the value, so you should +not use the dereference operator on it within the loop. For example: + +```mojo +for i in range(5): + print(i, end=", ") +``` + +```output +0, 1, 2, 3, 4, +``` + +### `for` loop control statements + +A `continue` statement skips execution of the rest of the code block and +resumes the loop with the next element of the collection. + +```mojo +for i in range(5): + if i == 3: + continue + print(i, end=", ") +``` + +```output +0, 1, 2, 4, +``` + +A `break` statement terminates execution of the loop. + +```mojo +for i in range(5): + if i == 3: + break + print(i, end=", ") +``` + +```output +0, 1, 2, +``` + +Optionally, a `for` loop can include an `else` clause. The body of the `else` +clause executes after iterating over all of the elements in a collection. + +```mojo +for i in range(5): + print(i, end=", ") +else: + print("\nFinished executing 'for' loop") +``` + +```output +0, 1, 2, 3, 4, +Finished executing 'for' loop +``` + +The `else` clause executes even if the collection is empty. + +```mojo +from collections import List + +empty = List[Int]() +for i in empty: + print(i[]) +else: + print("Finished executing 'for' loop") +``` + +```output +Finished executing 'for' loop +``` + +:::note + +The `else` clause does *not* execute if a `break` or `return` statement +terminates the `for` loop. + +::: + +```mojo +from collections import List + +animals = List[String]("cat", "aardvark", "hippopotamus", "dog") +for animal in animals: + if animal[] == "dog": + print("Found a dog") + break +else: + print("No dog found") +``` + +```output +Found a dog +``` + +### Iterating over Python collections + +The Mojo `for` loop supports iterating over Python collection types. Each item +retrieved by the loop is a +[`PythonObject`](/mojo/stdlib/python/object/PythonObject) wrapper around +the Python object. Refer to the [Python types](/mojo/manual/python/types) +documentation for more information on manipulating Python objects from Mojo. + +The following is a simple example of iterating over a mixed-type Python list. + +```mojo +from python import Python + +# Create a mixed-type Python list +py_list = Python.evaluate("[42, 'cat', 3.14159]") +for py_obj in py_list: # Each element is of type "PythonObject" + print(py_obj) +``` + +```output +42 +cat +3.14159 +``` + +:::note TODO + +Iterating over a Mojo collection currently assigns the loop index variable a +`Reference` to each element, which then requires you to use the dereference +operator within the loop body. In contrast, iterating over a Python collection +assigns a `PythonObject` wrapper for the element, which does *not* require you +to use the dereference operator. + +::: + +There are two techniques for iterating over a Python dictionary. The first is to +iterate directly using the dictionary, which produces a sequence of its keys. + +```mojo +from python import Python + +# Create a mixed-type Python dictionary +py_dict = Python.evaluate("{'a': 1, 'b': 2.71828, 'c': 'sushi'}") +for py_key in py_dict: # Each element is of type "PythonObject" + print(py_key, py_dict[py_key]) +``` + +```output +a 1 +b 2.71828 +c sushi +``` + +The second approach to iterating over a Python dictionary is to invoke its +`items()` method, which produces a sequence of 2-tuple objects. +Within the loop body, you can then access the key and value by index. + +```mojo +for py_tuple in py_dict.items(): # Each element is of type "PythonObject" + print(py_tuple[0], py_tuple[1]) +``` + +```output +a 1 +b 2.71828 +c sushi +``` diff --git a/docs/manual/decorators/always-inline.ipynb b/docs/manual/decorators/always-inline.ipynb deleted file mode 100644 index f272691b9b..0000000000 --- a/docs/manual/decorators/always-inline.ipynb +++ /dev/null @@ -1,102 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: '`@always_inline`'\n", - "description: Copies the body of a function directly into the body of the calling function.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add the `@always_inline` decorator on any function to make the Mojo\n", - "compiler \"inline\" the body of the function (copy it) directly into the body of\n", - "the calling function.\n", - "\n", - "This eliminates potential performance costs associated with function calls\n", - "jumping to a new point in code. Normally, the compiler will do this\n", - "automatically where it can improve performance, but this decorator forces it to\n", - "do so. The downside is that it can increase the binary size by duplicating the\n", - "function at every call site.\n", - "\n", - "For example:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "@always_inline\n", - "fn add(a: Int, b: Int) -> Int:\n", - " return a + b\n", - "\n", - "print(add(1, 2))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Because `add()` is decorated with `@always_inline`, Mojo compiles this program\n", - "without adding the `add()` function to the call stack, and it instead performs\n", - "the addition directly at the `print()` call site, as if it were written like\n", - "this:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "print(1 + 2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## `@always_inline(\"nodebug\")`\n", - "\n", - "You can also use the decorator with the `\"nodebug\"` argument, which has the\n", - "same effect to inline the function, but without debug information. This means\n", - "that you can't step into the function when debugging.\n", - "\n", - "This decorator is intended to be used on the lowest-level functions in a\n", - "library, which may wrap primitive functions, MLIR operations, or inline\n", - "assembly. Marking these functions as \"nodebug\" prevents users from accidentally\n", - "stepping into low-level non-Mojo code when debugging." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/decorators/always-inline.md b/docs/manual/decorators/always-inline.md new file mode 100644 index 0000000000..d84ae98b63 --- /dev/null +++ b/docs/manual/decorators/always-inline.md @@ -0,0 +1,46 @@ +--- +title: '@always_inline' +description: Copies the body of a function directly into the body of the calling function. +codeTitle: true + +--- + +You can add the `@always_inline` decorator on any function to make the Mojo +compiler "inline" the body of the function (copy it) directly into the body of +the calling function. + +This eliminates potential performance costs associated with function calls +jumping to a new point in code. Normally, the compiler will do this +automatically where it can improve performance, but this decorator forces it to +do so. The downside is that it can increase the binary size by duplicating the +function at every call site. + +For example: + +```mojo +@always_inline +fn add(a: Int, b: Int) -> Int: + return a + b + +print(add(1, 2)) +``` + +Because `add()` is decorated with `@always_inline`, Mojo compiles this program +without adding the `add()` function to the call stack, and it instead performs +the addition directly at the `print()` call site, as if it were written like +this: + +```mojo +print(1 + 2) +``` + +## `@always_inline("nodebug")` + +You can also use the decorator with the `"nodebug"` argument, which has the +same effect to inline the function, but without debug information. This means +that you can't step into the function when debugging. + +This decorator is intended to be used on the lowest-level functions in a +library, which may wrap primitive functions, MLIR operations, or inline +assembly. Marking these functions as "nodebug" prevents users from accidentally +stepping into low-level non-Mojo code when debugging. diff --git a/docs/manual/decorators/copy-capture.ipynb b/docs/manual/decorators/copy-capture.ipynb deleted file mode 100644 index e5e59dfe87..0000000000 --- a/docs/manual/decorators/copy-capture.ipynb +++ /dev/null @@ -1,64 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: '`@__copy_capture`'\n", - "description: Captures register-passable typed values by copy.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add the `__copy_capture` decorator on a parametric closure to capture register-passable values by copy. This decorator causes a nested function to copy the value of the indicated variable into the closure object at the point of formation instead of capturing that variable by reference. This allows the closure to be passed as an escaping function, without lifetime concerns." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - " fn foo(x: Int):\n", - " var z = x\n", - "\n", - " @__copy_capture(z)\n", - " @parameter\n", - " fn formatter() -> Int:\n", - " return z\n", - " z = 2\n", - " print(formatter())\n", - "\n", - " fn main():\n", - " foo(5)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/decorators/copy-capture.md b/docs/manual/decorators/copy-capture.md new file mode 100644 index 0000000000..394e9d6a17 --- /dev/null +++ b/docs/manual/decorators/copy-capture.md @@ -0,0 +1,27 @@ +--- +title: '@__copy_capture' +description: Captures register-passable typed values by copy. +codeTitle: true + +--- + +You can add the `__copy_capture` decorator on a parametric closure to capture +register-passable values by copy. This decorator causes a nested function to +copy the value of the indicated variable into the closure object at the point +of formation instead of capturing that variable by reference. This allows the +closure to be passed as an escaping function, without lifetime concerns. + +```mojo + fn foo(x: Int): + var z = x + + @__copy_capture(z) + @parameter + fn formatter() -> Int: + return z + z = 2 + print(formatter()) + + fn main(): + foo(5) +``` diff --git a/docs/manual/decorators/index.mdx b/docs/manual/decorators/index.mdx index f7c7d1a6af..2a65a9f213 100644 --- a/docs/manual/decorators/index.mdx +++ b/docs/manual/decorators/index.mdx @@ -7,13 +7,13 @@ hide_table_of_contents: true listing: - id: docs contents: - - always-inline.ipynb - - copy-capture.ipynb - - nonmaterializable.ipynb - - parameter.ipynb - - register-passable.ipynb - - staticmethod.ipynb - - value.ipynb + - always-inline.md + - copy-capture.md + - nonmaterializable.md + - parameter.md + - register-passable.md + - staticmethod.md + - value.md type: grid page-size: 99 --- diff --git a/docs/manual/decorators/nonmaterializable.ipynb b/docs/manual/decorators/nonmaterializable.ipynb deleted file mode 100644 index 49d6b312fc..0000000000 --- a/docs/manual/decorators/nonmaterializable.ipynb +++ /dev/null @@ -1,112 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: '`@nonmaterializable`'\n", - "description: Declares that a type should exist only in the parameter domain.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add the `@nonmaterializable` decorator on a struct to declare that the\n", - "type can exist only in the parameter domain (it can be used for metaprogramming\n", - "only, and not as a runtime type). And, if an instance of this type does\n", - "transition into the runtime domain, this decorator declares what type it\n", - "becomes there.\n", - "\n", - "To use it, declare your type with `@nonmaterializable(TargetType)`, where\n", - "`TargetType` is the type that the object should convert to if it becomes a\n", - "runtime value (you must declare the `TargetType`). For example, if a struct is\n", - "marked as `@nonmaterializable(Foo)`, then anywhere that it goes from a\n", - "parameter value to a runtime value, it automatically converts into the `Foo`\n", - "type.\n", - "\n", - "For example, the following `NmStruct` type can be used in the parameter domain,\n", - "but the `converted_to_has_bool` instance of it is converted to `HasBool` when it's\n", - "materialized as a runtime value:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "@register_passable(\"trivial\")\n", - "struct HasBool:\n", - " var x: Bool\n", - "\n", - " fn __init__(out self, x: Bool):\n", - " self.x = x\n", - "\n", - " @always_inline(\"nodebug\")\n", - " fn __init__(out self, nms: NmStruct):\n", - " self.x = True if (nms.x == 77) else False\n", - "\n", - "@value\n", - "@nonmaterializable(HasBool)\n", - "@register_passable(\"trivial\")\n", - "struct NmStruct:\n", - " var x: Int\n", - "\n", - " @always_inline(\"nodebug\")\n", - " fn __add__(self, rhs: Self) -> Self:\n", - " return NmStruct(self.x + rhs.x)\n", - "\n", - "alias still_nm_struct = NmStruct(1) + NmStruct(2)\n", - "# When materializing to a run-time variable, it is automatically converted,\n", - "# even without a type annotation.\n", - "var converted_to_has_bool = still_nm_struct" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "A non-materializable struct must have all of its methods annotated\n", - "as `@always_inline`, and it must be computable in the parameter domain.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/decorators/nonmaterializable.md b/docs/manual/decorators/nonmaterializable.md new file mode 100644 index 0000000000..d24847c0dc --- /dev/null +++ b/docs/manual/decorators/nonmaterializable.md @@ -0,0 +1,59 @@ +--- +title: '@nonmaterializable' +description: Declares that a type should exist only in the parameter domain. +codeTitle: true + +--- + +You can add the `@nonmaterializable` decorator on a struct to declare that the +type can exist only in the parameter domain (it can be used for metaprogramming +only, and not as a runtime type). And, if an instance of this type does +transition into the runtime domain, this decorator declares what type it +becomes there. + +To use it, declare your type with `@nonmaterializable(TargetType)`, where +`TargetType` is the type that the object should convert to if it becomes a +runtime value (you must declare the `TargetType`). For example, if a struct is +marked as `@nonmaterializable(Foo)`, then anywhere that it goes from a +parameter value to a runtime value, it automatically converts into the `Foo` +type. + +For example, the following `NmStruct` type can be used in the parameter domain, +but the `converted_to_has_bool` instance of it is converted to `HasBool` when it's +materialized as a runtime value: + +```mojo +@value +@register_passable("trivial") +struct HasBool: + var x: Bool + + fn __init__(out self, x: Bool): + self.x = x + + @always_inline("nodebug") + fn __init__(out self, nms: NmStruct): + self.x = True if (nms.x == 77) else False + +@value +@nonmaterializable(HasBool) +@register_passable("trivial") +struct NmStruct: + var x: Int + + @always_inline("nodebug") + fn __add__(self, rhs: Self) -> Self: + return NmStruct(self.x + rhs.x) + +alias still_nm_struct = NmStruct(1) + NmStruct(2) +# When materializing to a run-time variable, it is automatically converted, +# even without a type annotation. +var converted_to_has_bool = still_nm_struct +``` + +:::note + +A non-materializable struct must have all of its methods annotated +as `@always_inline`, and it must be computable in the parameter domain. + +::: diff --git a/docs/manual/decorators/parameter.ipynb b/docs/manual/decorators/parameter.ipynb deleted file mode 100644 index 1cb7334442..0000000000 --- a/docs/manual/decorators/parameter.ipynb +++ /dev/null @@ -1,195 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: '`@parameter`'\n", - "description: Executes a function or if statement at compile time.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add the `@parameter` decorator on an `if` statement or on a nested\n", - "function to run that code at compile time.\n", - "\n", - "## Parametric if statement\n", - "\n", - "You can add `@parameter` to any `if` condition that's based on a valid\n", - "parameter expression (it's an expression that evaluates at compile time). This\n", - "ensures that only the live branch of the `if` statement is compiled into the\n", - "program, which can reduce your final binary size. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "this will be included in the binary\n" - ] - } - ], - "source": [ - "@parameter\n", - "if True:\n", - " print(\"this will be included in the binary\")\n", - "else:\n", - " print(\"this will be eliminated at compile time\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Parametric for statement\n", - "\n", - "You can add the `@parameter` decorator to an `for` loop to create a loop that's\n", - "evaluated at compile time. The loop sequence and induction values must be\n", - "a valid parameter expressions (that is, an expressions that evaluate at compile\n", - "time).\n", - "\n", - "This has the effect of \"unrolling\" the loop.\n", - "\n", - " ```mojo\n", - " fn parameter_for[max: Int]():\n", - " @parameter\n", - " for i in range(max)\n", - " @parameter\n", - " if i == 10:\n", - " print(\"found 10!\")\n", - " ```\n", - "\n", - " Currently, `@parameter for` requires the sequence's `__iter__` method to\n", - " return a `_StridedRangeIterator`, meaning the induction variables must be\n", - " `Int`. The intention is to lift these restrictions in the future.\n", - "\n", - "### Compared to `unroll()`\n", - "\n", - "The Mojo standard library also includes a function called\n", - "[`unroll()`](/mojo/stdlib/utils/loop/unroll) that unrolls a\n", - "given function that you want to call repeatedly, but has some important\n", - "differences when compared to the parametric `for` statement:\n", - "\n", - "- The `@parameter` decorator operates on `for` loop expressions. The \n", - " `unroll()` function is a higher-order function that takes a parametric closure\n", - " (see below) and executes it a specified number of times.\n", - "\n", - "- The parametric `for` statement is more versatile, since you can do anything \n", - " you can do in a `for` statement: including using arbitrary sequences, \n", - " early-exiting from the loop, skipping iterations with `continue` and so on.\n", - " \n", - " By contrast, `unroll()` simply takes a function and a count, and executes\n", - " the function the specified number of times.\n", - "\n", - "Both `unroll()` and `@parameter for` unroll at the beginning of compilation, \n", - "which might explode the size of the program that still needs to be compiled,\n", - "depending on the amount of code that's unrolled." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Parametric closure\n", - "\n", - "You can add `@parameter` on a nested function to create a “parametric”\n", - "capturing closure. This means you can create a closure function that captures\n", - "values from the outer scope (regardless of whether they are variables or\n", - "parameters), and then use that closure as a parameter. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3\n" - ] - } - ], - "source": [ - "fn use_closure[func: fn(Int) capturing [_] -> Int](num: Int) -> Int:\n", - " return func(num)\n", - "\n", - "fn create_closure():\n", - " var x = 1\n", - "\n", - " @parameter\n", - " fn add(i: Int) -> Int:\n", - " return x + i\n", - "\n", - " var y = use_closure[add](2)\n", - " print(y)\n", - "\n", - "create_closure()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Without the `@parameter` decorator, you'll get a compiler error that says you\n", - "\"cannot use a dynamic value in call parameter\"—referring to the\n", - "`use_closure[add](2)` call—because the `add()` closure would still be dynamic.\n", - "\n", - "Note the `[_]` in the function type:\n", - "\n", - "```mojo\n", - "fn use_closure[func: fn(Int) capturing [_] -> Int](num: Int) -> Int:\n", - "```\n", - "\n", - "This origin specifier represents the set of origins for the values captured by\n", - "the parametric closure. This allows the compiler to correctly extend the\n", - "lifetimes of those values. For more information on lifetimes and origins, see\n", - "[Lifetimes, origins and references](/mojo/manual/values/lifetimes).\n", - "\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/decorators/parameter.md b/docs/manual/decorators/parameter.md new file mode 100644 index 0000000000..c82d9c6783 --- /dev/null +++ b/docs/manual/decorators/parameter.md @@ -0,0 +1,115 @@ +--- +title: '@parameter' +description: Executes a function or if statement at compile time. +codeTitle: true + +--- + +You can add the `@parameter` decorator on an `if` statement or on a nested +function to run that code at compile time. + +## Parametric if statement + +You can add `@parameter` to any `if` condition that's based on a valid +parameter expression (it's an expression that evaluates at compile time). This +ensures that only the live branch of the `if` statement is compiled into the +program, which can reduce your final binary size. For example: + +```mojo +@parameter +if True: + print("this will be included in the binary") +else: + print("this will be eliminated at compile time") +``` + +```output +this will be included in the binary +``` + +## Parametric for statement + +You can add the `@parameter` decorator to an `for` loop to create a loop that's +evaluated at compile time. The loop sequence and induction values must be +a valid parameter expressions (that is, an expressions that evaluate at compile +time). + +This has the effect of "unrolling" the loop. + +```mojo +fn parameter_for[max: Int](): + @parameter + for i in range(max) + @parameter + if i == 10: + print("found 10!") +``` + +Currently, `@parameter for` requires the sequence's `__iter__` method to +return a `_StridedRangeIterator`, meaning the induction variables must be +`Int`. The intention is to lift these restrictions in the future. + +### Compared to `unroll()` + +The Mojo standard library also includes a function called +[`unroll()`](/mojo/stdlib/utils/loop/unroll) that unrolls a +given function that you want to call repeatedly, but has some important +differences when compared to the parametric `for` statement: + +- The `@parameter` decorator operates on `for` loop expressions. The + `unroll()` function is a higher-order function that takes a parametric closure + (see below) and executes it a specified number of times. + +- The parametric `for` statement is more versatile, since you can do anything + you can do in a `for` statement: including using arbitrary sequences, + early-exiting from the loop, skipping iterations with `continue` and so on. + + By contrast, `unroll()` simply takes a function and a count, and executes + the function the specified number of times. + +Both `unroll()` and `@parameter for` unroll at the beginning of compilation, +which might explode the size of the program that still needs to be compiled, +depending on the amount of code that's unrolled. + +## Parametric closure + +You can add `@parameter` on a nested function to create a “parametric” +capturing closure. This means you can create a closure function that captures +values from the outer scope (regardless of whether they are variables or +parameters), and then use that closure as a parameter. For example: + +```mojo +fn use_closure[func: fn(Int) capturing [_] -> Int](num: Int) -> Int: + return func(num) + +fn create_closure(): + var x = 1 + + @parameter + fn add(i: Int) -> Int: + return x + i + + var y = use_closure[add](2) + print(y) + +create_closure() +``` + +```output +3 +``` + +Without the `@parameter` decorator, you'll get a compiler error that says you +"cannot use a dynamic value in call parameter"—referring to the +`use_closure[add](2)` call—because the `add()` closure would still be dynamic. + +Note the `[_]` in the function type: + +```mojo +fn use_closure[func: fn(Int) capturing [_] -> Int](num: Int) -> Int: +``` + +This origin specifier represents the set of origins for the values captured by +the parametric closure. This allows the compiler to correctly extend the +lifetimes of those values. For more information on lifetimes and origins, see +[Lifetimes, origins and references](/mojo/manual/values/lifetimes). diff --git a/docs/manual/decorators/register-passable.ipynb b/docs/manual/decorators/register-passable.ipynb deleted file mode 100644 index 174418abaa..0000000000 --- a/docs/manual/decorators/register-passable.ipynb +++ /dev/null @@ -1,205 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: '`@register_passable`'\n", - "description: Declares that a type should be passed in machine registers.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add the `@register_passable` decorator on a struct to tell Mojo that\n", - "the type should be passed in machine registers (such as a CPU register; subject\n", - "to the details of the underlying architecture). For tiny data types like an\n", - "integer or floating-point number, this is much more efficient than storing\n", - "values in stack memory. This means the type is always passed by value and\n", - "cannot be passed by reference.\n", - "\n", - "The basic `@register_passable` decorator does not change the fundamental\n", - "behavior of a type: it still needs an `__init__()` and `__copyinit__()` method\n", - "to be copyable (and it may have a `__del__()` method, if necessary). For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "@register_passable\n", - "struct Pair:\n", - " var a: Int\n", - " var b: Int\n", - "\n", - " fn __init__(out self, one: Int, two: Int):\n", - " self.a = one\n", - " self.b = two\n", - "\n", - " fn __copyinit__(out self, existing: Self):\n", - " self.a = existing.a\n", - " self.b = existing.b\n", - "\n", - "fn test_pair():\n", - " var x = Pair(5, 10)\n", - " var y = x\n", - "\n", - " print(y.a, y.b)\n", - " y.a = 10\n", - " y.b = 20\n", - " print(y.a, y.b)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5 10\n", - "10 20\n" - ] - } - ], - "source": [ - "test_pair()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This behavior is what we expect from `Pair`, with or without the decorator." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You should be aware of a few other observable effects:\n", - "\n", - "1. `@register_passable` types cannot hold instances of types\n", - "that are not also `@register_passable`.\n", - "\n", - "1. `@register_passable` types do not have a predictable identity,\n", - "and so the `self` pointer is not stable/predictable (e.g. in hash tables).\n", - "\n", - "1. `@register_passable` arguments and result are exposed to C and C++ directly,\n", - "instead of being passed by-pointer.\n", - "\n", - "1. `@register_passable` types cannot have a [`__moveinit__()`\n", - "constructor](/mojo/manual/lifecycle/life#move-constructor), because\n", - "values passed in a register cannot be passed by reference.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## `@register_passable(\"trivial\")`" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Most types that use `@register_passable` are just \"bags of bits,\" which we call\n", - "\"trivial\" types. These trivial types are simple and should be copied, moved,\n", - "and destroyed without any custom constructors or a destructor. For these types,\n", - "you can add the `\"trivial\"` argument, and Mojo synthesizes all the lifecycle\n", - "methods as appropriate for a trivial register-passable type:" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [], - "source": [ - "@register_passable(\"trivial\")\n", - "struct Pair:\n", - " var a: Int\n", - " var b: Int" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is similar to the [`@value`](/mojo/manual/decorators/value) decorator,\n", - "except when using `@register_passable(\"trivial\")` the only lifecycle method\n", - "you're allowed to define is the `__init__()` constructor (but you don't have\n", - "to)—you _cannot_ define any copy or move constructors or a destructor.\n", - "\n", - "Examples of trivial types include:\n", - "\n", - "- Arithmetic types such as `Int`, `Bool`, `Float64` etc.\n", - "- Pointers (the address value is trivial, not the data being pointed to).\n", - "- Arrays of other trivial types, including SIMD." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more information about lifecycle methods (constructors and destructors)\n", - "see the section about [Value lifecycle](/mojo/manual/lifecycle/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note TODO\n", - "\n", - "This decorator is due for reconsideration. Lack of custom\n", - "copy/move/destroy logic and \"passability in a register\" are orthogonal concerns\n", - "and should be split. This former logic should be subsumed into a more general\n", - "decorator, which is orthogonal to `@register_passable`.\n", - "\n", - ":::" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/decorators/register-passable.md b/docs/manual/decorators/register-passable.md new file mode 100644 index 0000000000..16e3ec0587 --- /dev/null +++ b/docs/manual/decorators/register-passable.md @@ -0,0 +1,105 @@ +--- +title: '@register_passable' +description: Declares that a type should be passed in machine registers. +codeTitle: true + +--- + +You can add the `@register_passable` decorator on a struct to tell Mojo that +the type should be passed in machine registers (such as a CPU register; subject +to the details of the underlying architecture). For tiny data types like an +integer or floating-point number, this is much more efficient than storing +values in stack memory. This means the type is always passed by value and +cannot be passed by reference. + +The basic `@register_passable` decorator does not change the fundamental +behavior of a type: it still needs an `__init__()` and `__copyinit__()` method +to be copyable (and it may have a `__del__()` method, if necessary). For example: + +```mojo +@register_passable +struct Pair: + var a: Int + var b: Int + + fn __init__(out self, one: Int, two: Int): + self.a = one + self.b = two + + fn __copyinit__(out self, existing: Self): + self.a = existing.a + self.b = existing.b + +fn test_pair(): + var x = Pair(5, 10) + var y = x + + print(y.a, y.b) + y.a = 10 + y.b = 20 + print(y.a, y.b) +``` + +```mojo +test_pair() +``` + +```output +5 10 +10 20 +``` + +This behavior is what we expect from `Pair`, with or without the decorator. + +You should be aware of a few other observable effects: + +1. `@register_passable` types cannot hold instances of types + that are not also `@register_passable`. + +2. `@register_passable` types do not have a predictable identity, + and so the `self` pointer is not stable/predictable (e.g. in hash tables). + +3. `@register_passable` arguments and result are exposed to C and C++ directly, + instead of being passed by-pointer. + +4. `@register_passable` types cannot have a [`__moveinit__()` + constructor](/mojo/manual/lifecycle/life#move-constructor), because + values passed in a register cannot be passed by reference. + +## `@register_passable("trivial")` + +Most types that use `@register_passable` are just "bags of bits," which we call +"trivial" types. These trivial types are simple and should be copied, moved, +and destroyed without any custom constructors or a destructor. For these types, +you can add the `"trivial"` argument, and Mojo synthesizes all the lifecycle +methods as appropriate for a trivial register-passable type: + +```mojo +@register_passable("trivial") +struct Pair: + var a: Int + var b: Int +``` + +This is similar to the [`@value`](/mojo/manual/decorators/value) decorator, +except when using `@register_passable("trivial")` the only lifecycle method +you're allowed to define is the `__init__()` constructor (but you don't have +to)—you *cannot* define any copy or move constructors or a destructor. + +Examples of trivial types include: + +- Arithmetic types such as `Int`, `Bool`, `Float64` etc. +- Pointers (the address value is trivial, not the data being pointed to). +- Arrays of other trivial types, including SIMD. + +For more information about lifecycle methods (constructors and destructors) +see the section about [Value lifecycle](/mojo/manual/lifecycle/). + +:::note TODO + +This decorator is due for reconsideration. Lack of custom +copy/move/destroy logic and "passability in a register" are orthogonal concerns +and should be split. This former logic should be subsumed into a more general +decorator, which is orthogonal to `@register_passable`. + +::: diff --git a/docs/manual/decorators/staticmethod.ipynb b/docs/manual/decorators/staticmethod.ipynb deleted file mode 100644 index bcd9a4d2e5..0000000000 --- a/docs/manual/decorators/staticmethod.ipynb +++ /dev/null @@ -1,85 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: '`@staticmethod`'\n", - "description: Declares a struct method as static.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add the `@staticmethod` decorator on a struct method to declare a static\n", - "method. \n", - "\n", - "For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "from collections import List\n", - "from pathlib import Path\n", - "\n", - "\n", - "struct MyStruct:\n", - " var data: List[UInt8]\n", - "\n", - " fn __init__(out self):\n", - " self.data = List[UInt8]()\n", - "\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " self.data = existing.data ^\n", - "\n", - " @staticmethod\n", - " fn load_from_file(file_path: Path) raises -> Self:\n", - " var new_struct = MyStruct()\n", - " new_struct.data = file_path.read_bytes()\n", - " return new_struct ^" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Unlike an instance method, a static method doesn't take an implicit `self`\n", - "argument. It's not attached to a specific instance of a struct, so it can't\n", - "access instance data.\n", - "\n", - "For more information see the documentation on\n", - "[static methods](/mojo/manual/structs#static-methods)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/decorators/staticmethod.md b/docs/manual/decorators/staticmethod.md new file mode 100644 index 0000000000..686c86cd4c --- /dev/null +++ b/docs/manual/decorators/staticmethod.md @@ -0,0 +1,39 @@ +--- +title: '@staticmethod' +description: Declares a struct method as static. +codeTitle: true + +--- + +You can add the `@staticmethod` decorator on a struct method to declare a static +method. + +For example: + +```mojo +from collections import List +from pathlib import Path + + +struct MyStruct: + var data: List[UInt8] + + fn __init__(out self): + self.data = List[UInt8]() + + fn __moveinit__(out self, owned existing: Self): + self.data = existing.data ^ + + @staticmethod + fn load_from_file(file_path: Path) raises -> Self: + var new_struct = MyStruct() + new_struct.data = file_path.read_bytes() + return new_struct ^ +``` + +Unlike an instance method, a static method doesn't take an implicit `self` +argument. It's not attached to a specific instance of a struct, so it can't +access instance data. + +For more information see the documentation on +[static methods](/mojo/manual/structs#static-methods). diff --git a/docs/manual/decorators/value.ipynb b/docs/manual/decorators/value.ipynb deleted file mode 100644 index f82a54a21b..0000000000 --- a/docs/manual/decorators/value.ipynb +++ /dev/null @@ -1,111 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: '`@value`'\n", - "description: Generates boilerplate lifecycle methods for a struct.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can add the `@value` decorator on a struct to generate boilerplate\n", - "lifecycle methods, including the member-wise `__init__()` constructor,\n", - "`__copyinit__()` copy constructor, and `__moveinit__()` move constructor.\n", - "\n", - "For example, consider a simple struct like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct MyPet:\n", - " var name: String\n", - " var age: Int" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo sees the `@value` decorator and notices that you don't have any constructors\n", - "and it synthesizes them for you, the result being as if you had actually\n", - "written this:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, owned name: String, age: Int):\n", - " self.name = name^\n", - " self.age = age\n", - "\n", - " fn __copyinit__(out self, existing: Self):\n", - " self.name = existing.name\n", - " self.age = existing.age\n", - "\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " self.name = existing.name^\n", - " self.age = existing.age" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo synthesizes each lifecycle method only when it doesn't exist, so\n", - "you can use `@value` and still define your own versions to override the default\n", - "behavior. For example, it is fairly common to use the default member-wise and\n", - "move constructor, but create a custom copy constructor." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more information about these lifecycle methods, read\n", - "[Life of a value](/mojo/manual/lifecycle/life)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/decorators/value.md b/docs/manual/decorators/value.md new file mode 100644 index 0000000000..f60f03259b --- /dev/null +++ b/docs/manual/decorators/value.md @@ -0,0 +1,49 @@ +--- +title: '@value' +description: Generates boilerplate lifecycle methods for a struct. +codeTitle: true + +--- + +You can add the `@value` decorator on a struct to generate boilerplate +lifecycle methods, including the member-wise `__init__()` constructor, +`__copyinit__()` copy constructor, and `__moveinit__()` move constructor. + +For example, consider a simple struct like this: + +```mojo +@value +struct MyPet: + var name: String + var age: Int +``` + +Mojo sees the `@value` decorator and notices that you don't have any constructors +and it synthesizes them for you, the result being as if you had actually +written this: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, owned name: String, age: Int): + self.name = name^ + self.age = age + + fn __copyinit__(out self, existing: Self): + self.name = existing.name + self.age = existing.age + + fn __moveinit__(out self, owned existing: Self): + self.name = existing.name^ + self.age = existing.age +``` + +Mojo synthesizes each lifecycle method only when it doesn't exist, so +you can use `@value` and still define your own versions to override the default +behavior. For example, it is fairly common to use the default member-wise and +move constructor, but create a custom copy constructor. + +For more information about these lifecycle methods, read +[Life of a value](/mojo/manual/lifecycle/life). diff --git a/docs/manual/functions.ipynb b/docs/manual/functions.ipynb deleted file mode 100755 index 6f24f70e0d..0000000000 --- a/docs/manual/functions.ipynb +++ /dev/null @@ -1,855 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Functions\n", - "sidebar_position: 2\n", - "description: Introduction to Mojo `fn` and `def` functions.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As mentioned in [Language basics](/mojo/manual/basics), Mojo supports two\n", - "types of functions: `def` and `fn` functions. You can use either declaration\n", - "with any function, including the `main()` function, but they have different\n", - "default behaviors, as described on this page.\n", - "\n", - "We believe both `def` and `fn` have good use cases and don't consider either to\n", - "be better than the other. Deciding which to use is a matter of personal taste as\n", - "to which style best fits a given task.\n", - "\n", - "We believe Mojo's flexibility in this regard is a superpower that allows you to\n", - "write code in the manner that's best for your project.\n", - "\n", - ":::note\n", - "\n", - "Functions declared inside a [`struct`](/mojo/manual/structs) are called\n", - "\"methods,\" but they have all the same qualities as \"functions\" described here.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## `fn` functions\n", - "\n", - "The `fn` function has somewhat stricter rules than the `def` function.\n", - "\n", - "Here's an example of an `fn` function:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn greet(name: String) -> String:\n", - " var greeting = \"Hello, \" + name + \"!\"\n", - " return greeting" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As far as a function caller is concerned, `def` and `fn` functions are\n", - "interchangeable. That is, there's nothing a `def` can do that an `fn` can't\n", - "(and vice versa). The difference is that, compared to a `def` function, an `fn`\n", - "function is more strict on the inside.\n", - "\n", - "Here's everything to know about `fn`:\n", - "\n", - "- Arguments must specify a type (except for the\n", - " `self` argument in [struct methods](/mojo/manual/structs#methods)).\n", - "\n", - "- Return values must specify a type, unless the function doesn't return a value.\n", - " \n", - " If you don't specify a return type, it defaults to `None` (meaning no return\n", - " value).\n", - "\n", - "- By default, arguments are received as an immutable reference (values are\n", - " read-only, using the `borrowed` [argument\n", - " convention](/mojo/manual/values/ownership#argument-conventions)).\n", - " \n", - " This prevents accidental mutations, and permits the use of non-copyable types\n", - " as arguments.\n", - " \n", - " If you want a local copy, you can simply assign the value to a local\n", - " variable. Or, you can get a mutable reference to the value by declaring the\n", - " `inout` [argument\n", - " convention](/mojo/manual/values/ownership#argument-conventions)).\n", - "\n", - "- If the function raises an exception, it must be explicitly declared with the\n", - " `raises` keyword. (A `def` function does not need to declare exceptions.)\n", - "\n", - "By enforcing these type checks, using the `fn` function helps avoid a variety\n", - "of runtime errors." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## `def` functions\n", - "\n", - "Compared to an `fn` function, a `def` function has fewer restrictions.\n", - "The `def` function works more like a Python\n", - "`def` function. For example, this function works the same in Python and Mojo:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "def greet(name):\n", - " greeting = \"Hello, \" + name + \"!\"\n", - " return greeting" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In a Mojo `def` function, you have the option to specify the argument type and\n", - "the return type. You can also declare variables with `var`, with or without\n", - "explicit typing. So you can write a `def` function that looks almost exactly\n", - "like the `fn` function shown earlier:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "def greet(name: String) -> String:\n", - " var greeting = \"Hello, \" + name + \"!\"\n", - " return greeting" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This way, the compiler ensures that `name` is a string, and the return type is a\n", - "string.\n", - "\n", - "Here's everything to know about `def`:\n", - "\n", - "- Arguments don't require a declared type.\n", - "\n", - " Undeclared arguments are actually passed as an\n", - " [`object`](/mojo/stdlib/builtin/object/object), which allows the\n", - " function to receive any type (Mojo infers the type at runtime).\n", - "\n", - "- Return types don't need to be declared, and also default to `object`. (If a \n", - " `def` function doesn't declare a return type of `None`, it's considered to\n", - " return an `object` by default.)\n", - "\n", - "- Arguments are mutable. Arguments default to using the `borrowed` \n", - " [argument convention](/mojo/manual/values/ownership#argument-conventions)\n", - " like an `fn` function, with a special addition: if the function mutates the\n", - " argument, it makes a mutable copy. \n", - "\n", - " If an argument is an `object` type, it's received as a reference, following\n", - " [object reference\n", - " semantics](/mojo/manual/values/value-semantics#python-style-reference-semantics).\n", - " \n", - " If an argument is any other declared type, it's received as a value." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### The `object` type\n", - "\n", - "If you don't declare the type for an argument or return value in a `def`, it\n", - "becomes an [`object`](/mojo/stdlib/builtin/object/object), which is unlike\n", - "any other type in the standard library.\n", - "\n", - "The `object` type allows for dynamic typing because it can actually represent\n", - "any type in the Mojo standard library, and the actual type is inferred at\n", - "runtime. (Actually, there's still more to do before it can represent all Mojo\n", - "types.) This is great for compatibility with Python and all of the flexibility\n", - "that it provides with dynamic types. However, this lack of type enforcement can\n", - "lead to runtime errors when a function receives or returns an unexpected type.\n", - "\n", - "For compatibility with Python, `object` values are passed using [object\n", - "reference\n", - "semantics](/mojo/manual/values/value-semantics#python-style-reference-semantics).\n", - "As such, the `object` type is not compatible with the [argument\n", - "conventions](/mojo/manual/values/ownership#argument-conventions) that\n", - "enforce value semantics. So, be careful if using `object` values alongside other\n", - "strongly-typed values—their behavior might be inconsistent because `object` is \n", - "the only type in the standard library that does not conform to [full value\n", - "semantics](/mojo/manual/values/value-semantics#intro-to-value-semantics).\n", - "\n", - ":::note TODO\n", - "\n", - "The `object` type is still a work in progress. It doesn't support all of the\n", - "possible underlying types, for example.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Function arguments\n", - "\n", - "As noted in the previous sections, there are a few differences between how `def`\n", - "and `fn` functions treat arguments. But most of the time they are the same.\n", - "\n", - "As noted, there are some differences in _argument conventions_. \n", - "Argument conventions are discussed in much more detail in the page on\n", - "[Ownership](/mojo/manual/values/ownership#argument-conventions).\n", - "\n", - "The other difference is that `def` functions don't need to specify an argument's\n", - "type. If no type is specified, the argument is passed as an \n", - "[`object`](/mojo/stdlib/builtin/object/object).\n", - "\n", - "The remaining rules for arguments described in this section apply to both `def`\n", - "and `fn` functions.\n", - "\n", - "### Optional arguments\n", - "\n", - "An optional argument is one that includes a default value, such as the `exp`\n", - "argument here:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn my_pow(base: Int, exp: Int = 2) -> Int:\n", - " return base ** exp\n", - "\n", - "fn use_defaults():\n", - " # Uses the default value for `exp`\n", - " var z = my_pow(3)\n", - " print(z)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "However, you cannot define a default value for an argument that's declared as\n", - "[`inout`](/mojo/manual/values/ownership#mutable-arguments-inout).\n", - "\n", - "Any optional arguments must appear after any required arguments. [Keyword-only\n", - "arguments](#positional-only-and-keyword-only-arguments), discussed later, can\n", - "also be either required or optional." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Keyword arguments\n", - "\n", - "You can also use keyword arguments when calling a function. Keyword arguments\n", - "are specified using the format argument_name =\n", - "argument_value. You can pass keyword arguments in any order:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn my_pow(base: Int, exp: Int = 2) -> Int:\n", - " return base ** exp\n", - "\n", - "fn use_keywords():\n", - " # Uses keyword argument names (with order reversed)\n", - " var z = my_pow(exp=3, base=2)\n", - " print(z)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Variadic arguments\n", - "\n", - "Variadic arguments let a function accept a variable number of arguments. To\n", - "define a function that takes a variadic argument, use the variadic argument\n", - "syntax *argument_name:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn sum(*values: Int) -> Int:\n", - " var sum: Int = 0\n", - " for value in values:\n", - " sum = sum + value\n", - " return sum" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The variadic argument `values` here is a placeholder that accepts any number of \n", - "passed positional arguments.\n", - "\n", - "You can define zero or more arguments before the variadic argument. When calling\n", - "the function, any remaining positional arguments are assigned to the variadic\n", - "argument, so any arguments declared **after** the variadic argument can only be\n", - "specified by keyword (see \n", - "[Positional-only and keyword-only arguments](#positional-only-and-keyword-only-arguments)).\n", - "\n", - "Variadic arguments can be divided into two categories:\n", - "\n", - "- Homogeneous variadic arguments, where all of the passed arguments are the same\n", - " type—all `Int`, or all `String`, for example. \n", - "- Heterogeneous variadic arguments, which can accept a set of different argument\n", - " types.\n", - "\n", - "The following sections describe how to work with homogeneous and heterogeneous\n", - "variadic arguments.\n", - "\n", - ":::note Variadic parameters\n", - "\n", - "Mojo [parameters](/mojo/manual/parameters/) are distinct from arguments\n", - "(parameters are used for compile-time metaprogramming). Variadic parameters\n", - "are supported, but with some limitations—for details see \n", - "[variadic parameters](/mojo/manual/parameters/#variadic-parameters).\n", - "\n", - ":::\n", - "\n", - "\n", - "#### Homogeneous variadic arguments\n", - "\n", - "When defining a homogeneous variadic argument, use \n", - "*argument_name: argument_type:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def greet(*names: String):\n", - " ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Inside the function body, the variadic argument is available as an iterable list\n", - "for ease of use. Currently there are some differences in handling the list \n", - "depending on whether the arguments are register-passable types (such as `Int`)\n", - "or memory-only types (such as `String`). TODO: We hope to remove these\n", - "differences in the future.\n", - "\n", - "Register-passable types, such as `Int`, are available as a \n", - "[`VariadicList`](/mojo/stdlib/builtin/builtin_list/VariadicList) type. As\n", - "shown in the previous example, you can iterate over the values using a `for..in`\n", - "loop." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "fn sum(*values: Int) -> Int:\n", - " var sum: Int = 0\n", - " for value in values:\n", - " sum = sum+value\n", - " return sum" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "Memory-only types, such as `String`, are available as a \n", - "[`VariadicListMem`](/mojo/stdlib/builtin/builtin_list/VariadicListMem).\n", - "Iterating over this list directly with a `for..in` loop currently produces a\n", - "[`Reference`](/mojo/stdlib/memory/reference/Reference) for each value instead\n", - "of the value itself. You must add an empty subscript operator `[]` to\n", - "dereference the reference and retrieve the value:\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def make_worldly(inout *strs: String):\n", - " # Requires extra [] to dereference the reference for now.\n", - " for i in strs:\n", - " i[] += \" world\"\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "Alternately, subscripting into a `VariadicListMem` returns the argument value,\n", - "and doesn't require any dereferencing:\n", - "\n", - " ```mojo\n", - " fn make_worldly(inout *strs: String):\n", - " # This \"just works\" as you'd expect!\n", - " for i in range(len(strs)):\n", - " strs[i] += \" world\"\n", - " ```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Heterogeneous variadic arguments\n", - "\n", - "Implementing heterogeneous variadic arguments is somewhat more complicated than\n", - "homogeneous variadic arguments. Writing generic code to handle multiple argument\n", - "types requires [traits](/mojo/manual/traits) and \n", - "[parameters](/mojo/manual/parameters/). So the syntax may look a little\n", - "unfamiliar if you haven't worked with those features. The signature for a\n", - "function with a heterogeneous variadic argument looks like this:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "```mojo\n", - "def count_many_things[*ArgTypes: Intable](*args: *ArgTypes):\n", - " ...\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The parameter list, `[*ArgTypes: Intable]` specifies that the function takes an\n", - "`ArgTypes` parameter, which is a list of types, all of which conform to the \n", - "[`Intable`](/mojo/stdlib/builtin/int/Intable) trait. The argument list, \n", - "`(*args: *ArgTypes)` has the familiar `*args` for the variadic argument, but \n", - "instead of a single type, its type is defined as _list_ of types, `*ArgTypes`.\n", - "\n", - "This means that each argument in `args` has a corresponding type in `ArgTypes`, \n", - "so args[n] is of type \n", - "ArgTypes[n].\n", - "\n", - "Inside the function, `args` is available as a\n", - "[`VariadicPack`](/mojo/stdlib/builtin/builtin_list/VariadicPack). The easiest\n", - "way to work with the arguments is to use the `each()` method to iterate through\n", - "the `VariadicPack`:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "28\n" - ] - } - ], - "source": [ - "fn count_many_things[*ArgTypes: Intable](*args: *ArgTypes) -> Int:\n", - " var total = 0\n", - "\n", - " @parameter\n", - " fn add[Type: Intable](value: Type):\n", - " total += int(value)\n", - "\n", - " args.each[add]()\n", - " return total\n", - "\n", - "print(count_many_things(5, 11.7, 12))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the example above, the `add()` function is called for each argument in turn,\n", - "with the appropriate `value` and `Type` values. For instance, `add()` is first\n", - "called with `value=5` and `Type=Int`, then with `value=11.7` and `Type=Float64`.\n", - "\n", - "Also, note that when calling `count_many_things()`, you don't actually pass in\n", - "a list of argument types. You only need to pass in the arguments, and Mojo\n", - "generates the `ArgTypes` list itself.\n", - "\n", - "As a small optimization, if your function is likely to be called with a single\n", - "argument frequently, you can define your function with a single argument\n", - "followed by a variadic argument. This lets the simple case bypass populating and\n", - "iterating through the `VariadicPack`.\n", - "\n", - "For example, given a `print_string()` function that prints a single string, you\n", - "could re-implement the variadic `print()` function with code like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Bob\n" - ] - } - ], - "source": [ - "fn print_string(s: String):\n", - " print(s, end=\"\")\n", - "\n", - "fn print_many[T: Stringable, *Ts: Stringable](first: T, *rest: *Ts):\n", - " print_string(str(first))\n", - "\n", - " @parameter\n", - " fn print_elt[T: Stringable](a: T):\n", - " print_string(\" \")\n", - " print_string(str(a))\n", - " rest.each[print_elt]()\n", - "print_many(\"Bob\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you call `print_many()` with a single argument, it calls `print_string()`\n", - "directly. The `VariadicPack` is empty, so `each()` returns immediately without\n", - "calling the `print_elt()` function." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Variadic keyword arguments\n", - "\n", - "Mojo functions also support variadic keyword arguments (`**kwargs`). Variadic\n", - "keyword arguments allow the user to pass an arbitrary number of keyword\n", - "arguments. To define a function that takes a variadic keyword argument, use the\n", - "variadic keyword argument syntax **kw_argument_name:\n", - "\n", - " ```mojo\n", - " fn print_nicely(**kwargs: Int) raises:\n", - " for key in kwargs.keys():\n", - " print(key[], \"=\", kwargs[key[]])\n", - "\n", - " # prints:\n", - " # `a = 7`\n", - " # `y = 8`\n", - " print_nicely(a=7, y=8)\n", - " ```\n", - "\n", - " In this example, the argument name `kwargs` is a placeholder that accepts any\n", - " number of keyword arguments. Inside the body of the function, you can access\n", - " the arguments as a dictionary of keywords and argument values (specifically,\n", - " an instance of\n", - " [`OwnedKwargsDict`](/mojo/stdlib/collections/dict/OwnedKwargsDict)).\n", - " \n", - " \n", - " There are currently a few limitations:\n", - "\n", - " - Variadic keyword arguments are always implicitly treated as if they\n", - " were declared with the `owned` [argument \n", - " convention](/mojo/manual/values/ownership#argument-conventions), and\n", - " can't be declared otherwise:\n", - "\n", - " ```mojo\n", - " # Not supported yet.\n", - " fn borrowed_var_kwargs(borrowed **kwargs: Int): ...\n", - " ```\n", - "\n", - " - All the variadic keyword arguments must have the same type, and this\n", - " determines the type of the argument dictionary. For example, if the argument\n", - " is `**kwargs: Float64` then the argument dictionary will be a \n", - " `OwnedKwargsDict[Float64]`.\n", - "\n", - " - The argument type must conform to the \n", - " [`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait.\n", - " That is, the type must be both [`Movable`](/mojo/stdlib/builtin/value/Movable)\n", - " and [`Copyable`](/mojo/stdlib/builtin/value/Copyable).\n", - "\n", - " - Dictionary unpacking is not supported yet:\n", - "\n", - " ```mojo\n", - " fn takes_dict(d: Dict[String, Int]):\n", - " print_nicely(**d) # Not supported yet.\n", - " ```\n", - "\n", - " - Variadic keyword _parameters_ are not supported yet:\n", - "\n", - " ```mojo\n", - " # Not supported yet.\n", - " fn var_kwparams[**kwparams: Int](): ...\n", - " ```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Positional-only and keyword-only arguments\n", - "\n", - "When defining a function, you can restrict some arguments so that they can only\n", - "be passed as positional arguments, or they can only be passed as keyword \n", - "arguments.\n", - "\n", - "To define positional-only arguments, add a slash character (`/`) to the\n", - "argument list. Any arguments before the `/` are positional-only: they can't be\n", - "passed as keyword arguments. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "fn min(a: Int, b: Int, /) -> Int:\n", - " return a if a < b else b" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This `min()` function can be called with `min(1, 2)` but can't be called using\n", - "keywords, like `min(a=1, b=2)`.\n", - "\n", - "There are several reasons you might want to write a function with\n", - "positional-only arguments:\n", - "\n", - "- The argument names aren't meaningful for the the caller.\n", - "- You want the freedom to change the argument names later on without breaking\n", - " backward compatibility.\n", - "\n", - "For example, in the `min()` function, the argument names don't add any real\n", - "information, and there's no reason to specify arguments by keyword. \n", - "\n", - "For more information on positional-only arguments, see [PEP 570 – Python\n", - "Positional-Only Parameters](https://peps.python.org/pep-0570/).\n", - "\n", - "Keyword-only arguments are the inverse of positional-only arguments: they can\n", - "only be specified by keyword. If a function accepts variadic arguments, any \n", - "arguments defined _after_ the variadic arguments are treated as keyword-only.\n", - "For example:\n", - "\n", - "```mojo\n", - "fn sort(*values: Float64, ascending: Bool = True): ...\n", - "```\n", - "\n", - "In this example, the user can pass any number of `Float64` values, optionally\n", - "followed by the keyword `ascending` argument:\n", - "\n", - "```mojo\n", - "var a = sort(1.1, 6.5, 4.3, ascending=False)\n", - "```\n", - "\n", - "If the function doesn't accept variadic arguments, you can add a single star\n", - "(`*`) to the argument list to separate the keyword-only arguments:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "fn kw_only_args(a1: Int, a2: Int, *, double: Bool) -> Int:\n", - " var product = a1 * a2\n", - " if double:\n", - " return product * 2\n", - " else:\n", - " return product" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Keyword-only arguments often have default values, but this is not required. If a\n", - "keyword-only argument doesn't have a default value, it is a _required \n", - "keyword-only argument_. It must be specified, and it must be specified by \n", - "keyword. \n", - "\n", - "Any required keyword-only arguments must appear in the signature before\n", - "any optional keyword-only arguments. That is, arguments appear in the following\n", - "sequence a function signature:\n", - "\n", - "* Required positional arguments.\n", - "* Optional positional arguments.\n", - "* Variadic arguments.\n", - "* Required keyword-only arguments.\n", - "* Optional keyword-only arguments.\n", - "* Variadic keyword arguments.\n", - "\n", - "For more information on keyword-only arguments, see [PEP 3102 – Keyword-Only\n", - "Arguments](https://peps.python.org/pep-3102/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Overloaded functions\n", - "\n", - "If a `def` function does not specify argument types, then it can accept any\n", - "data type and decide how to handle each type internally. This is nice when you\n", - "want expressive APIs that just work by accepting arbitrary inputs, so there's\n", - "usually no need to write function overloads for a `def` function.\n", - "\n", - "On the other hand, all `fn` functions must specify argument types, so if you\n", - "want a function to work with different data types, you need to implement\n", - "separate versions of the function that each specify different argument types.\n", - "This is called \"overloading\" a function.\n", - "\n", - "For example, here's an overloaded `add()` function that can accept either\n", - "`Int` or `String` types:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "fn add(x: Int, y: Int) -> Int:\n", - " return x + y\n", - "\n", - "fn add(x: String, y: String) -> String:\n", - " return x + y" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you pass anything other than `Int` or `String` to the `add()` function,\n", - "you'll get a compiler error. That is, unless `Int` or `String` can implicitly\n", - "cast the type into their own type. For example, `String` includes an overloaded\n", - "version of its constructor (`__init__()`) that accepts a `StringLiteral` value.\n", - "Thus, you can also pass a `StringLiteral` to a function that expects a `String`.\n", - "\n", - "When resolving an overloaded function call, the Mojo compiler tries each\n", - "candidate function and uses the one that works (if only one version works), or\n", - "it picks the closest match (if it can determine a close match), or it reports\n", - "that the call is ambiguous (if it can’t figure out which one to pick).\n", - "\n", - "If the compiler can't figure out which function to use, you can resolve the\n", - "ambiguity by explicitly casting your value to a supported argument type. For\n", - "example, in the following code, we want to call the overloaded `foo()`\n", - "function, but both implementations accept an argument that supports [implicit\n", - "conversion](/mojo/manual/variables#implicit-type-conversion) from\n", - "`StringLiteral`. So, the call to `foo(string)` is ambiguous and creates a\n", - "compiler error. We can fix it by casting the value to the type we really want:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct MyString:\n", - " fn __init__(out self, string: StringLiteral):\n", - " pass\n", - "\n", - "fn foo(name: String):\n", - " print(\"String\")\n", - "\n", - "fn foo(name: MyString):\n", - " print(\"MyString\")\n", - "\n", - "fn call_foo():\n", - " alias string: StringLiteral = \"Hello\"\n", - " # foo(string) # This call is ambiguous because two `foo` functions match it\n", - " foo(MyString(string))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\n", - "When resolving an overloaded function, Mojo does not consider the return type\n", - "or other contextual information at the call site—only the argument types affect\n", - "which function is selected.\n", - "\n", - "Overloading also works with combinations of both `fn` and `def` functions.\n", - "For example, you could define multiple `fn` function overloads and then one\n", - "or more `def` versions that don't specify all argument types, as a fallback.\n", - "\n", - ":::note\n", - "\n", - "Although we haven't discussed\n", - "[parameters](/mojo/manual/parameters/) yet (they're\n", - "different from function arguments, and used for compile-time metaprogramming),\n", - "you can also overload functions based on parameter types.\n", - "\n", - ":::" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/functions.mdx b/docs/manual/functions.mdx new file mode 100644 index 0000000000..d35c3cad30 --- /dev/null +++ b/docs/manual/functions.mdx @@ -0,0 +1,598 @@ +--- +title: Functions +sidebar_position: 2 +description: Introduction to Mojo `fn` and `def` functions. +--- + +As mentioned in [Language basics](/mojo/manual/basics), Mojo supports two +types of functions: `def` and `fn` functions. You can use either declaration +with any function, including the `main()` function, but they have different +default behaviors, as described on this page. + +We believe both `def` and `fn` have good use cases and don't consider either to +be better than the other. Deciding which to use is a matter of personal taste as +to which style best fits a given task. + +We believe Mojo's flexibility in this regard is a superpower that allows you to +write code in the manner that's best for your project. + +:::note + +Functions declared inside a [`struct`](/mojo/manual/structs) are called +"methods," but they have all the same qualities as "functions" described here. + +::: + +## `fn` functions + +The `fn` function has somewhat stricter rules than the `def` function. + +Here's an example of an `fn` function: + +```mojo +fn greet(name: String) -> String: + var greeting = "Hello, " + name + "!" + return greeting +``` + +As far as a function caller is concerned, `def` and `fn` functions are +interchangeable. That is, there's nothing a `def` can do that an `fn` can't +(and vice versa). The difference is that, compared to a `def` function, an `fn` +function is more strict on the inside. + +Here's everything to know about `fn`: + +* Arguments must specify a type (except for the + `self` argument in [struct methods](/mojo/manual/structs#methods)). + +* Return values must specify a type, unless the function doesn't return a value. + + If you don't specify a return type, it defaults to `None` (meaning no return + value). + +* By default, arguments are received as an immutable reference (values are + read-only, using the `borrowed` [argument + convention](/mojo/manual/values/ownership#argument-conventions)). + + This prevents accidental mutations, and permits the use of non-copyable types + as arguments. + + If you want a local copy, you can simply assign the value to a local + variable. Or, you can get a mutable reference to the value by declaring the + `inout` [argument + convention](/mojo/manual/values/ownership#argument-conventions)). + +* If the function raises an exception, it must be explicitly declared with the + `raises` keyword. (A `def` function does not need to declare exceptions.) + +By enforcing these type checks, using the `fn` function helps avoid a variety +of runtime errors. + +## `def` functions + +Compared to an `fn` function, a `def` function has fewer restrictions. +The `def` function works more like a Python +`def` function. For example, this function works the same in Python and Mojo: + +```mojo +def greet(name): + greeting = "Hello, " + name + "!" + return greeting +``` + +In a Mojo `def` function, you have the option to specify the argument type and +the return type. You can also declare variables with `var`, with or without +explicit typing. So you can write a `def` function that looks almost exactly +like the `fn` function shown earlier: + +```mojo +def greet(name: String) -> String: + var greeting = "Hello, " + name + "!" + return greeting +``` + +This way, the compiler ensures that `name` is a string, and the return type is a +string. + +Here's everything to know about `def`: + +* Arguments don't require a declared type. + + Undeclared arguments are actually passed as an + [`object`](/mojo/stdlib/builtin/object/object), which allows the + function to receive any type (Mojo infers the type at runtime). + +* Return types don't need to be declared, and also default to `object`. (If a + `def` function doesn't declare a return type of `None`, it's considered to + return an `object` by default.) + +* Arguments are mutable. Arguments default to using the `borrowed` + [argument convention](/mojo/manual/values/ownership#argument-conventions) + like an `fn` function, with a special addition: if the function mutates the + argument, it makes a mutable copy. + + If an argument is an `object` type, it's received as a reference, following + [object reference + semantics](/mojo/manual/values/value-semantics#python-style-reference-semantics). + + If an argument is any other declared type, it's received as a value. + +### The `object` type + +If you don't declare the type for an argument or return value in a `def`, it +becomes an [`object`](/mojo/stdlib/builtin/object/object), which is unlike +any other type in the standard library. + +The `object` type allows for dynamic typing because it can actually represent +any type in the Mojo standard library, and the actual type is inferred at +runtime. (Actually, there's still more to do before it can represent all Mojo +types.) This is great for compatibility with Python and all of the flexibility +that it provides with dynamic types. However, this lack of type enforcement can +lead to runtime errors when a function receives or returns an unexpected type. + +For compatibility with Python, `object` values are passed using [object +reference +semantics](/mojo/manual/values/value-semantics#python-style-reference-semantics). +As such, the `object` type is not compatible with the [argument +conventions](/mojo/manual/values/ownership#argument-conventions) that +enforce value semantics. So, be careful if using `object` values alongside other +strongly-typed values—their behavior might be inconsistent because `object` is +the only type in the standard library that does not conform to [full value +semantics](/mojo/manual/values/value-semantics#intro-to-value-semantics). + +:::note TODO + +The `object` type is still a work in progress. It doesn't support all of the +possible underlying types, for example. + +::: + +## Function arguments + +As noted in the previous sections, there are a few differences between how `def` +and `fn` functions treat arguments. But most of the time they are the same. + +As noted, there are some differences in *argument conventions*. +Argument conventions are discussed in much more detail in the page on +[Ownership](/mojo/manual/values/ownership#argument-conventions). + +The other difference is that `def` functions don't need to specify an argument's +type. If no type is specified, the argument is passed as an +[`object`](/mojo/stdlib/builtin/object/object). + +The remaining rules for arguments described in this section apply to both `def` +and `fn` functions. + +### Optional arguments + +An optional argument is one that includes a default value, such as the `exp` +argument here: + +```mojo +fn my_pow(base: Int, exp: Int = 2) -> Int: + return base ** exp + +fn use_defaults(): + # Uses the default value for `exp` + var z = my_pow(3) + print(z) +``` + +However, you cannot define a default value for an argument that's declared as +[`inout`](/mojo/manual/values/ownership#mutable-arguments-inout). + +Any optional arguments must appear after any required arguments. [Keyword-only +arguments](#positional-only-and-keyword-only-arguments), discussed later, can +also be either required or optional. + +### Keyword arguments + +You can also use keyword arguments when calling a function. Keyword arguments +are specified using the format +argument_name = argument_value. +You can pass keyword arguments in any order: + +```mojo +fn my_pow(base: Int, exp: Int = 2) -> Int: + return base ** exp + +fn use_keywords(): + # Uses keyword argument names (with order reversed) + var z = my_pow(exp=3, base=2) + print(z) +``` + +### Variadic arguments + +Variadic arguments let a function accept a variable number of arguments. To +define a function that takes a variadic argument, use the variadic argument +syntax *argument_name: + +```mojo +fn sum(*values: Int) -> Int: + var sum: Int = 0 + for value in values: + sum = sum + value + return sum +``` + +The variadic argument `values` here is a placeholder that accepts any number of +passed positional arguments. + +You can define zero or more arguments before the variadic argument. When calling +the function, any remaining positional arguments are assigned to the variadic +argument, so any arguments declared **after** the variadic argument can only be +specified by keyword (see +[Positional-only and keyword-only arguments](#positional-only-and-keyword-only-arguments)). + +Variadic arguments can be divided into two categories: + +* Homogeneous variadic arguments, where all of the passed arguments are the same + type—all `Int`, or all `String`, for example. +* Heterogeneous variadic arguments, which can accept a set of different argument + types. + +The following sections describe how to work with homogeneous and heterogeneous +variadic arguments. + +:::note Variadic parameters + +Mojo [parameters](/mojo/manual/parameters/) are distinct from arguments +(parameters are used for compile-time metaprogramming). Variadic parameters +are supported, but with some limitations—for details see +[variadic parameters](/mojo/manual/parameters/#variadic-parameters). + +::: + +#### Homogeneous variadic arguments + +When defining a homogeneous variadic argument, use *argument_name: argument_type: + +```mojo +def greet(*names: String): + ... +``` + +Inside the function body, the variadic argument is available as an iterable list +for ease of use. Currently there are some differences in handling the list +depending on whether the arguments are register-passable types (such as `Int`) +or memory-only types (such as `String`). TODO: We hope to remove these +differences in the future. + +Register-passable types, such as `Int`, are available as a +[`VariadicList`](/mojo/stdlib/builtin/builtin_list/VariadicList) type. As +shown in the previous example, you can iterate over the values using a `for..in` +loop. + +```mojo +fn sum(*values: Int) -> Int: + var sum: Int = 0 + for value in values: + sum = sum+value + return sum +``` + +Memory-only types, such as `String`, are available as a +[`VariadicListMem`](/mojo/stdlib/builtin/builtin_list/VariadicListMem). +Iterating over this list directly with a `for..in` loop currently produces a +[`Reference`](/mojo/stdlib/memory/reference/Reference) for each value instead +of the value itself. You must add an empty subscript operator `[]` to +dereference the reference and retrieve the value: + +```mojo +def make_worldly(inout *strs: String): + # Requires extra [] to dereference the reference for now. + for i in strs: + i[] += " world" + +``` + +Alternately, subscripting into a `VariadicListMem` returns the argument value, +and doesn't require any dereferencing: + +```mojo +fn make_worldly(inout *strs: String): + # This "just works" as you'd expect! + for i in range(len(strs)): + strs[i] += " world" +``` + +#### Heterogeneous variadic arguments + +Implementing heterogeneous variadic arguments is somewhat more complicated than +homogeneous variadic arguments. Writing generic code to handle multiple argument +types requires [traits](/mojo/manual/traits) and +[parameters](/mojo/manual/parameters/). So the syntax may look a little +unfamiliar if you haven't worked with those features. The signature for a +function with a heterogeneous variadic argument looks like this: + +```mojo +def count_many_things[*ArgTypes: Intable](*args: *ArgTypes): + ... +``` + +The parameter list, `[*ArgTypes: Intable]` specifies that the function takes an +`ArgTypes` parameter, which is a list of types, all of which conform to the +[`Intable`](/mojo/stdlib/builtin/int/Intable) trait. The argument list, +`(*args: *ArgTypes)` has the familiar `*args` for the variadic argument, but +instead of a single type, its type is defined as *list* of types, `*ArgTypes`. + +This means that each argument in `args` has a corresponding type in `ArgTypes`, +so args[n] is of type ArgTypes[n]. + +Inside the function, `args` is available as a +[`VariadicPack`](/mojo/stdlib/builtin/builtin_list/VariadicPack). The easiest +way to work with the arguments is to use the `each()` method to iterate through +the `VariadicPack`: + +```mojo +fn count_many_things[*ArgTypes: Intable](*args: *ArgTypes) -> Int: + var total = 0 + + @parameter + fn add[Type: Intable](value: Type): + total += int(value) + + args.each[add]() + return total + +print(count_many_things(5, 11.7, 12)) +``` + +```output +28 +``` + +In the example above, the `add()` function is called for each argument in turn, +with the appropriate `value` and `Type` values. For instance, `add()` is first +called with `value=5` and `Type=Int`, then with `value=11.7` and `Type=Float64`. + +Also, note that when calling `count_many_things()`, you don't actually pass in +a list of argument types. You only need to pass in the arguments, and Mojo +generates the `ArgTypes` list itself. + +As a small optimization, if your function is likely to be called with a single +argument frequently, you can define your function with a single argument +followed by a variadic argument. This lets the simple case bypass populating and +iterating through the `VariadicPack`. + +For example, given a `print_string()` function that prints a single string, you +could re-implement the variadic `print()` function with code like this: + +```mojo +fn print_string(s: String): + print(s, end="") + +fn print_many[T: Stringable, *Ts: Stringable](first: T, *rest: *Ts): + print_string(str(first)) + + @parameter + fn print_elt[T: Stringable](a: T): + print_string(" ") + print_string(str(a)) + rest.each[print_elt]() +print_many("Bob") +``` + +```output +Bob +``` + +If you call `print_many()` with a single argument, it calls `print_string()` +directly. The `VariadicPack` is empty, so `each()` returns immediately without +calling the `print_elt()` function. + +#### Variadic keyword arguments + +Mojo functions also support variadic keyword arguments (`**kwargs`). Variadic +keyword arguments allow the user to pass an arbitrary number of keyword +arguments. To define a function that takes a variadic keyword argument, use the +variadic keyword argument syntax **kw_argument_name: + +```mojo +fn print_nicely(**kwargs: Int) raises: + for key in kwargs.keys(): + print(key[], "=", kwargs[key[]]) + + # prints: + # `a = 7` + # `y = 8` +print_nicely(a=7, y=8) +``` + +In this example, the argument name `kwargs` is a placeholder that accepts any +number of keyword arguments. Inside the body of the function, you can access +the arguments as a dictionary of keywords and argument values (specifically, +an instance of +[`OwnedKwargsDict`](/mojo/stdlib/collections/dict/OwnedKwargsDict)). + +There are currently a few limitations: + +* Variadic keyword arguments are always implicitly treated as if they + were declared with the `owned` [argument + convention](/mojo/manual/values/ownership#argument-conventions), and + can't be declared otherwise: + + ```mojo + # Not supported yet. + fn borrowed_var_kwargs(borrowed **kwargs: Int): ... + ``` + +* All the variadic keyword arguments must have the same type, and this + determines the type of the argument dictionary. For example, if the argument + is `**kwargs: Float64` then the argument dictionary will be a + `OwnedKwargsDict[Float64]`. + +* The argument type must conform to the + [`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait. + That is, the type must be both [`Movable`](/mojo/stdlib/builtin/value/Movable) + and [`Copyable`](/mojo/stdlib/builtin/value/Copyable). + +* Dictionary unpacking is not supported yet: + + ```mojo + fn takes_dict(d: Dict[String, Int]): + print_nicely(**d) # Not supported yet. + ``` + +* Variadic keyword *parameters* are not supported yet: + + ```mojo + # Not supported yet. + fn var_kwparams[**kwparams: Int](): ... + ``` + +### Positional-only and keyword-only arguments + +When defining a function, you can restrict some arguments so that they can only +be passed as positional arguments, or they can only be passed as keyword +arguments. + +To define positional-only arguments, add a slash character (`/`) to the +argument list. Any arguments before the `/` are positional-only: they can't be +passed as keyword arguments. For example: + +```mojo +fn min(a: Int, b: Int, /) -> Int: + return a if a < b else b +``` + +This `min()` function can be called with `min(1, 2)` but can't be called using +keywords, like `min(a=1, b=2)`. + +There are several reasons you might want to write a function with +positional-only arguments: + +* The argument names aren't meaningful for the the caller. +* You want the freedom to change the argument names later on without breaking + backward compatibility. + +For example, in the `min()` function, the argument names don't add any real +information, and there's no reason to specify arguments by keyword. + +For more information on positional-only arguments, see [PEP 570 – Python +Positional-Only Parameters](https://peps.python.org/pep-0570/). + +Keyword-only arguments are the inverse of positional-only arguments: they can +only be specified by keyword. If a function accepts variadic arguments, any +arguments defined *after* the variadic arguments are treated as keyword-only. +For example: + +```mojo +fn sort(*values: Float64, ascending: Bool = True): ... +``` + +In this example, the user can pass any number of `Float64` values, optionally +followed by the keyword `ascending` argument: + +```mojo +var a = sort(1.1, 6.5, 4.3, ascending=False) +``` + +If the function doesn't accept variadic arguments, you can add a single star +(`*`) to the argument list to separate the keyword-only arguments: + +```mojo +fn kw_only_args(a1: Int, a2: Int, *, double: Bool) -> Int: + var product = a1 * a2 + if double: + return product * 2 + else: + return product +``` + +Keyword-only arguments often have default values, but this is not required. If a +keyword-only argument doesn't have a default value, it is a *required +keyword-only argument*. It must be specified, and it must be specified by +keyword. + +Any required keyword-only arguments must appear in the signature before +any optional keyword-only arguments. That is, arguments appear in the following +sequence a function signature: + +* Required positional arguments. +* Optional positional arguments. +* Variadic arguments. +* Required keyword-only arguments. +* Optional keyword-only arguments. +* Variadic keyword arguments. + +For more information on keyword-only arguments, see [PEP 3102 – Keyword-Only +Arguments](https://peps.python.org/pep-3102/). + +## Overloaded functions + +If a `def` function does not specify argument types, then it can accept any +data type and decide how to handle each type internally. This is nice when you +want expressive APIs that just work by accepting arbitrary inputs, so there's +usually no need to write function overloads for a `def` function. + +On the other hand, all `fn` functions must specify argument types, so if you +want a function to work with different data types, you need to implement +separate versions of the function that each specify different argument types. +This is called "overloading" a function. + +For example, here's an overloaded `add()` function that can accept either +`Int` or `String` types: + +```mojo +fn add(x: Int, y: Int) -> Int: + return x + y + +fn add(x: String, y: String) -> String: + return x + y +``` + +If you pass anything other than `Int` or `String` to the `add()` function, +you'll get a compiler error. That is, unless `Int` or `String` can implicitly +cast the type into their own type. For example, `String` includes an overloaded +version of its constructor (`__init__()`) that accepts a `StringLiteral` value. +Thus, you can also pass a `StringLiteral` to a function that expects a `String`. + +When resolving an overloaded function call, the Mojo compiler tries each +candidate function and uses the one that works (if only one version works), or +it picks the closest match (if it can determine a close match), or it reports +that the call is ambiguous (if it can’t figure out which one to pick). + +If the compiler can't figure out which function to use, you can resolve the +ambiguity by explicitly casting your value to a supported argument type. For +example, in the following code, we want to call the overloaded `foo()` +function, but both implementations accept an argument that supports [implicit +conversion](/mojo/manual/variables#implicit-type-conversion) from +`StringLiteral`. So, the call to `foo(string)` is ambiguous and creates a +compiler error. We can fix it by casting the value to the type we really want: + +```mojo +@value +struct MyString: + fn __init__(out self, string: StringLiteral): + pass + +fn foo(name: String): + print("String") + +fn foo(name: MyString): + print("MyString") + +fn call_foo(): + alias string: StringLiteral = "Hello" + # foo(string) # This call is ambiguous because two `foo` functions match it + foo(MyString(string)) +``` + +When resolving an overloaded function, Mojo does not consider the return type +or other contextual information at the call site—only the argument types affect +which function is selected. + +Overloading also works with combinations of both `fn` and `def` functions. +For example, you could define multiple `fn` function overloads and then one +or more `def` versions that don't specify all argument types, as a fallback. + +:::note + +Although we haven't discussed +[parameters](/mojo/manual/parameters/) yet (they're +different from function arguments, and used for compile-time metaprogramming), +you can also overload functions based on parameter types. + +::: diff --git a/docs/manual/lifecycle/death.ipynb b/docs/manual/lifecycle/death.ipynb deleted file mode 100644 index 9329b7aebb..0000000000 --- a/docs/manual/lifecycle/death.ipynb +++ /dev/null @@ -1,548 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Death of a value\n", - "sidebar_position: 3\n", - "description: An explanation of when and how Mojo destroys values.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As soon as a value/object is no longer used, Mojo destroys it. Mojo does _not_\n", - "wait until the end of a code block—or even until the end of an expression—to\n", - "destroy an unused value. It destroys values using an “as soon as possible”\n", - "(ASAP) destruction policy that runs after every sub-expression. Even within an\n", - "expression like `a+b+c+d`, Mojo destroys the intermediate values as soon as\n", - "they're no longer needed.\n", - "\n", - "Mojo uses static compiler analysis to find the point where a value is last used.\n", - "Then, Mojo immediately ends the value's lifetime and calls the `__del__()`\n", - "destructor to perform any necessary cleanup for the type. \n", - "\n", - "For example, notice when the `__del__()` destructor is called for each instance\n", - "of `MyPet`:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Loki\n", - "Destruct Loki\n", - "Destruct Charlie\n", - "Sylvie\n", - "Destruct Sylvie\n" - ] - } - ], - "source": [ - "@value\n", - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __del__(owned self):\n", - " print(\"Destruct\", self.name)\n", - "\n", - "fn pets():\n", - " var a = MyPet(\"Loki\", 4)\n", - " var b = MyPet(\"Sylvie\", 2)\n", - " print(a.name)\n", - " # a.__del__() runs here for \"Loki\"\n", - "\n", - " a = MyPet(\"Charlie\", 8)\n", - " # a.__del__() runs immediately because \"Charlie\" is never used\n", - "\n", - " print(b.name)\n", - " # b.__del__() runs here\n", - "\n", - "pets()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that each initialization of a value is matched with a call to the\n", - "destructor, and `a` is actually destroyed multiple times—once for each time it receives\n", - "a new value.\n", - "\n", - "Also notice that this `__del__()` implementation doesn't actually do\n", - "anything. Most structs don't require a custom destructor, and Mojo automatically\n", - "adds a no-op destructor if you don't define one.\n", - "\n", - "### Default destruction behavior\n", - "\n", - "You may be wondering how Mojo can destroy a type without a custom destructor, or\n", - "why a no-op destructor is useful. If a type is simply a collection of fields,\n", - "like the `MyPet` example, Mojo only needs to destroy the fields: `MyPet` doesn't\n", - "dynamically allocate memory or use any long-lived resources (like file handles).\n", - "There's no special action to take when a `MyPet` value is destroyed.\n", - "\n", - "Looking at the individual fields, `MyPet` includes an `Int` and a `String`. The\n", - "`Int` is what Mojo calls a _trivial type_. It's a statically-sized bundle of \n", - "bits. Mojo knows exactly how big it is, so those bits can be reused to store\n", - "something else.\n", - "\n", - "The `String` value is a little more complicated. Mojo strings are mutable. The\n", - "`String` object has an internal buffer—a\n", - "[`List`](/mojo/stdlib/collections/list/List) field,\n", - "which holds the characters that make up the string. A `List` stores\n", - "its contents in dynamically allocated memory on the heap, so the string can\n", - "grow or shrink. The string itself doesn't have any special destructor logic,\n", - "but when Mojo destroys a string, it calls the destructor for the\n", - "`List` field, which de-allocates the memory.\n", - "\n", - "Since `String` and `Int` don't require any custom destructor logic, they both\n", - "have no-op destructors: literally, `__del__()` methods that don't do anything.\n", - "This may seem pointless, but it means that Mojo can call the destructor on any\n", - "value when its lifetime ends. This makes it easier to write generic containers\n", - "and algorithms.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Benefits of ASAP destruction\n", - "\n", - "Similar to other languages, Mojo follows the principle that objects/values\n", - "acquire resources in a constructor (`__init__()`) and release resources in a\n", - "destructor (`__del__()`). However, Mojo's ASAP destruction has some advantages\n", - "over scope-based destruction (such as the C++ [RAII\n", - "pattern](https://en.cppreference.com/w/cpp/language/raii), which waits until\n", - "the end of the code scope to destroy values):\n", - "\n", - "- Destroying values immediately at last-use composes nicely with the \"move\"\n", - " optimization, which transforms a \"copy+del\" pair into a \"move\" operation.\n", - "\n", - "- Destroying values at end-of-scope in C++ is problematic for some common\n", - " patterns like tail recursion, because the destructor call happens after the\n", - " tail call. This can be a significant performance and memory problem for\n", - " certain functional programming patterns, which is not a problem in Mojo,\n", - " because the destructor call always happens before the tail call.\n", - "\n", - "Additionally, Mojo's ASAP destruction works great within Python-style `def`\n", - "functions. That's because Python doesn’t really provide scopes beyond a\n", - "function scope, so the Python garbage collector cleans up resources more often\n", - "than a scope-based destruction policy would. However, Mojo does not use a\n", - "garbage collector, so the ASAP destruction policy provides destruction\n", - "guarantees that are even more fine-grained than in Python.\n", - "\n", - "The Mojo destruction policy is more similar to how Rust and Swift work, because\n", - "they both have strong value ownership tracking and provide memory safety. One\n", - "difference is that Rust and Swift require the use of a [dynamic \"drop\n", - "flag\"](https://doc.rust-lang.org/nomicon/drop-flags.html)—they maintain hidden\n", - "shadow variables to keep track of the state of your values to provide safety.\n", - "These are often optimized away, but the Mojo approach eliminates this overhead\n", - "entirely, making the generated code faster and avoiding ambiguity." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Destructor\n", - "\n", - "Mojo calls a value's destructor (`__del__()` method) when the value's lifetime\n", - "ends (typically the point at which the value is last used). As we mentioned\n", - "earlier, Mojo provides a default, no-op destructor for all types, so in most\n", - "cases you don't need to define the `__del__()` method.\n", - "\n", - "You should define the `__del__()` method to perform any kind of cleanup the\n", - "type requires. Usually, that includes freeing memory for any fields where you\n", - "dynamically allocated memory (for example, via `UnsafePointer`) and\n", - "closing any long-lived resources such as file handles.\n", - "\n", - "However, any struct that is just a simple collection of other types does not\n", - "need to implement the destructor.\n", - "\n", - "For example, consider this simple struct:" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, name: String, age: Int):\n", - " self.name = name\n", - " self.age = age" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There's no need to define the `__del__()` destructor for this, because it's a\n", - "simple collection of other types (`String` and `Int`), and it doesn't \n", - "dynamically allocate memory. \n", - "\n", - "Whereas, the following struct must define the `__del__()` method to free the\n", - "memory allocated by its\n", - "[`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer):" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "from memory import UnsafePointer\n", - "\n", - "struct HeapArray:\n", - " var data: UnsafePointer[Int]\n", - " var size: Int\n", - "\n", - " fn __init__(out self, size: Int, val: Int):\n", - " self.size = size\n", - " self.data = UnsafePointer[Int].alloc(self.size)\n", - " for i in range(self.size):\n", - " (self.data + i).init_pointee_copy(val)\n", - "\n", - " fn __del__(owned self):\n", - " for i in range(self.size):\n", - " (self.data + i).destroy_pointee()\n", - " self.data.free()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that a pointer doesn't _own_ any values in the memory it points to, so\n", - "when a pointer is destroyed, Mojo doesn't call the destructors on those values.\n", - "\n", - "So in the `HeapArray` example above, calling `free()` on the pointer releases\n", - "the memory, but doesn't call the destructors on the stored values. To invoke\n", - "the destructors, use the `destroy_pointee()` method provided by the \n", - "`UnsafePointer` type.\n", - "\n", - ":::note\n", - "\n", - "You can't just call the destructor explicitly. Because `__del__()`\n", - "takes `self` as an `owned` value, and owned arguments are copied by default,\n", - "`foo.__del__()` actually creates and destroys a _copy_ of `foo`. When Mojo\n", - "destroys a value, however, it passes in the original value as `self`, not a\n", - "copy.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "It's important to notice that the `__del__()` method is an \"extra\" cleanup\n", - "event, and your implementation does not override any default destruction\n", - "behaviors. For example, Mojo still destroys all the fields in `MyPet` even\n", - "if you implement `__del__()` to do nothing:" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, name: String, age: Int):\n", - " self.name = name\n", - " self.age = age\n", - "\n", - " fn __del__(owned self):\n", - " # Mojo destroys all the fields when they're last used\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "However, the `self` value inside the `__del__()` destructor is still whole (so\n", - "all fields are still usable) until the destructor returns, as we'll discuss\n", - "more in the following section." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Field lifetimes\n", - "\n", - "In addition to tracking the lifetime of all objects in a program, Mojo also\n", - "tracks each field of a structure independently. That is, Mojo keeps track of\n", - "whether a \"whole object\" is fully or partially initialized/destroyed, and it\n", - "destroys each field independently with its ASAP destruction policy.\n", - "\n", - "For example, consider this code that changes the value of a field:" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - "fn use_two_strings():\n", - " var pet = MyPet(\"Po\", 8)\n", - " print(pet.name)\n", - " # pet.name.__del__() runs here, because this instance is\n", - " # no longer used; it's replaced below\n", - "\n", - " pet.name = String(\"Lola\") # Overwrite pet.name\n", - " print(pet.name)\n", - " # pet.__del__() runs here" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `pet.name` field is destroyed after the first `print()`, because Mojo knows\n", - "that it will be overwritten below. You can also see this behavior when using the\n", - "transfer sigil:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "fn consume(owned arg: String):\n", - " pass\n", - "\n", - "fn use(arg: MyPet):\n", - " print(arg.name)\n", - "\n", - "fn consume_and_use():\n", - " var pet = MyPet(\"Selma\", 5)\n", - " consume(pet.name^)\n", - " # pet.name.__moveinit__() runs here, which destroys pet.name\n", - " # Now pet is only partially initialized\n", - "\n", - " # use(pet) # This fails because pet.name is uninitialized\n", - "\n", - " pet.name = String(\"Jasper\") # All together now\n", - " use(pet) # This is ok\n", - " # pet.__del__() runs here (and only if the object is whole)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that the code transfers ownership of the `name` field to `consume()`.\n", - "For a period of time after that, the `name` field is uninitialized.\n", - "Then `name` is reinitialized before it is passed to the `use()` function. If you\n", - "try calling `use()` before `name` is re-initialized, Mojo rejects the code\n", - "with an uninitialized field error.\n", - "\n", - "Also, if you don't re-initialize the name by the end of the `pet` lifetime, the\n", - "compiler complains because it's unable to destroy a partially initialized\n", - "object.\n", - "\n", - "Mojo's policy here is powerful and intentionally straight-forward: fields can\n", - "be temporarily transferred, but the \"whole object\" must be constructed with the\n", - "aggregate type’s initializer and destroyed with the aggregate destructor. This\n", - "means it's impossible to create an object by initializing only its fields, and\n", - "it's likewise impossible to destroy an object by destroying only its fields." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Field lifetimes during destruct and move\n", - "\n", - "The consuming-move constructor and destructor face an interesting situation\n", - "with field lifetimes, because, unlike other lifecycle methods, they both take\n", - "an instance of their own type as an `owned` argument, which is about to be\n", - "destroyed. You don't really need to worry about this detail when implementing\n", - "these methods, but it might help you better understand field lifetimes.\n", - "\n", - "Just to recap, the move constructor and destructor method signatures\n", - "look like this:\n", - "\n", - "```mojo\n", - "struct TwoStrings:\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " # Initializes a new `self` by consuming the contents of `existing`\n", - " fn __del__(owned self):\n", - " # Destroys all resources in `self`\n", - "```\n", - "\n", - ":::note\n", - "\n", - "There are two kinds of \"self\" here: capitalized `Self` is an alias\n", - "for the current type name (used as a type specifier for the `existing`\n", - "argument), whereas lowercase `self` is the argument name for the\n", - "implicitly-passed reference to the current instance (also called \"this\" in\n", - "other languages, and also implicitly a `Self` type).\n", - "\n", - ":::\n", - "\n", - "Both of these methods face an interesting but obscure problem: they both must\n", - "dismantle the `existing`/`self` value that's `owned`. That is, `__moveinit__()`\n", - "implicitly destroys sub-elements of `existing` in order to transfer ownership\n", - "to a new instance (read more about the [move\n", - "constructor](/mojo/manual/lifecycle/life#move-constructor)),\n", - "while `__del__()` implements the deletion logic for its `self`. As such, they\n", - "both need to own and transform elements of the `owned` value, and they\n", - "definitely don’t want the original `owned` value's destructor to also run—that\n", - "could result in a double-free error, and in the case of the `__del__()` method,\n", - "it would become an infinite loop.\n", - "\n", - "To solve this problem, Mojo handles these two methods specially by assuming\n", - "that their whole values are destroyed upon reaching any return from the method.\n", - "This means that the whole object may be used as usual, up until the field\n", - "values are transferred or the method returns.\n", - "\n", - "For example, the following code works as you would expect (within the\n", - "destructor, we can still pass ownership of a field value to another function,\n", - "and there's no infinite loop to destroy `self`):" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "fn consume(owned str: String):\n", - " print('Consumed', str)\n", - "\n", - "struct TwoStrings:\n", - " var str1: String\n", - " var str2: String\n", - "\n", - " fn __init__(out self, one: String):\n", - " self.str1 = one\n", - " self.str2 = String(\"bar\")\n", - "\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " self.str1 = existing.str1\n", - " self.str2 = existing.str2\n", - "\n", - " fn __del__(owned self):\n", - " self.dump() # Self is still whole here\n", - " # Mojo calls self.str2.__del__() since str2 isn't used anymore\n", - "\n", - " consume(self.str1^)\n", - " # self.str1 has been transferred so it is also destroyed now;\n", - " # `self.__del__()` is not called (avoiding an infinite loop).\n", - "\n", - " fn dump(inout self):\n", - " print('str1:', self.str1)\n", - " print('str2:', self.str2)\n", - "\n", - "fn use_two_strings():\n", - " var two_strings = TwoStrings(\"foo\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Explicit lifetimes\n", - "\n", - "So far, we've described how Mojo destroys a value at the point it's last used,\n", - "and this works great in almost all situations. However, there are very rare\n", - "situations in which Mojo simply cannot predict this correctly and will destroy\n", - "a value that is still referenced through some other means.\n", - "\n", - "For instance, perhaps you're building a type with a field that carries a pointer\n", - "to another field. The Mojo compiler won't be able to reason about the pointer,\n", - "so it might destroy a field (`obj1`) when that field is technically no longer\n", - "used, even though another field (`obj2`) still holds a pointer to part of it.\n", - "So, you might need to keep `obj1` alive until you can execute some special\n", - "logic in the destructor or move initializer.\n", - "\n", - "You can force Mojo to keep a value alive up to a certain point by assigning the\n", - "value to the `_` discard pattern at the point where it's okay to destroy it.\n", - "For example:\n", - "\n", - "```mojo\n", - "fn __del__(owned self):\n", - " self.dump() # Self is still whole here\n", - "\n", - " consume(self.obj2^)\n", - " _ = self.obj1\n", - " # Mojo keeps `obj1` alive until here, after its \"last use\"\n", - "```\n", - "\n", - "In this case, if `consume()` refers to some value in `obj1` somehow, this\n", - "ensures that Mojo does not destroy `obj1` until after the call to `consume()`,\n", - "because assignment to the discard variable `_` is actually the last use.\n", - "\n", - "For other situations, you can also scope the lifetime of a value using the\n", - "Python-style [`with`\n", - "statement](https://docs.python.org/3/reference/compound_stmts.html#the-with-statement).\n", - "That is, for any value defined at the entrance to a `with` statement, Mojo will\n", - "keep that value alive until the end of the `with` statement. For example:\n", - "\n", - "```mojo\n", - "with open(\"my_file.txt\", \"r\") as file:\n", - " print(file.read())\n", - "\n", - " # Other stuff happens here (whether using `file` or not)...\n", - " foo()\n", - " # `file` is alive up to the end of the `with` statement.\n", - "\n", - "# `file` is destroyed when the statement ends.\n", - "bar()\n", - "```" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/lifecycle/death.mdx b/docs/manual/lifecycle/death.mdx new file mode 100644 index 0000000000..4494e8b446 --- /dev/null +++ b/docs/manual/lifecycle/death.mdx @@ -0,0 +1,411 @@ +--- +title: Death of a value +sidebar_position: 3 +description: An explanation of when and how Mojo destroys values. +--- + +As soon as a value/object is no longer used, Mojo destroys it. Mojo does *not* +wait until the end of a code block—or even until the end of an expression—to +destroy an unused value. It destroys values using an “as soon as possible” +(ASAP) destruction policy that runs after every sub-expression. Even within an +expression like `a+b+c+d`, Mojo destroys the intermediate values as soon as +they're no longer needed. + +Mojo uses static compiler analysis to find the point where a value is last used. +Then, Mojo immediately ends the value's lifetime and calls the `__del__()` +destructor to perform any necessary cleanup for the type. + +For example, notice when the `__del__()` destructor is called for each instance +of `MyPet`: + +```mojo +@value +struct MyPet: + var name: String + var age: Int + + fn __del__(owned self): + print("Destruct", self.name) + +fn pets(): + var a = MyPet("Loki", 4) + var b = MyPet("Sylvie", 2) + print(a.name) + # a.__del__() runs here for "Loki" + + a = MyPet("Charlie", 8) + # a.__del__() runs immediately because "Charlie" is never used + + print(b.name) + # b.__del__() runs here + +pets() +``` + +```output +Loki +Destruct Loki +Destruct Charlie +Sylvie +Destruct Sylvie +``` + +Notice that each initialization of a value is matched with a call to the +destructor, and `a` is actually destroyed multiple times—once for each time it receives +a new value. + +Also notice that this `__del__()` implementation doesn't actually do +anything. Most structs don't require a custom destructor, and Mojo automatically +adds a no-op destructor if you don't define one. + +### Default destruction behavior + +You may be wondering how Mojo can destroy a type without a custom destructor, or +why a no-op destructor is useful. If a type is simply a collection of fields, +like the `MyPet` example, Mojo only needs to destroy the fields: `MyPet` doesn't +dynamically allocate memory or use any long-lived resources (like file handles). +There's no special action to take when a `MyPet` value is destroyed. + +Looking at the individual fields, `MyPet` includes an `Int` and a `String`. The +`Int` is what Mojo calls a *trivial type*. It's a statically-sized bundle of +bits. Mojo knows exactly how big it is, so those bits can be reused to store +something else. + +The `String` value is a little more complicated. Mojo strings are mutable. The +`String` object has an internal buffer—a +[`List`](/mojo/stdlib/collections/list/List) field, +which holds the characters that make up the string. A `List` stores +its contents in dynamically allocated memory on the heap, so the string can +grow or shrink. The string itself doesn't have any special destructor logic, +but when Mojo destroys a string, it calls the destructor for the +`List` field, which de-allocates the memory. + +Since `String` and `Int` don't require any custom destructor logic, they both +have no-op destructors: literally, `__del__()` methods that don't do anything. +This may seem pointless, but it means that Mojo can call the destructor on any +value when its lifetime ends. This makes it easier to write generic containers +and algorithms. + +### Benefits of ASAP destruction + +Similar to other languages, Mojo follows the principle that objects/values +acquire resources in a constructor (`__init__()`) and release resources in a +destructor (`__del__()`). However, Mojo's ASAP destruction has some advantages +over scope-based destruction (such as the C++ [RAII +pattern](https://en.cppreference.com/w/cpp/language/raii), which waits until +the end of the code scope to destroy values): + +* Destroying values immediately at last-use composes nicely with the "move" + optimization, which transforms a "copy+del" pair into a "move" operation. + +* Destroying values at end-of-scope in C++ is problematic for some common + patterns like tail recursion, because the destructor call happens after the + tail call. This can be a significant performance and memory problem for + certain functional programming patterns, which is not a problem in Mojo, + because the destructor call always happens before the tail call. + +Additionally, Mojo's ASAP destruction works great within Python-style `def` +functions. That's because Python doesn’t really provide scopes beyond a +function scope, so the Python garbage collector cleans up resources more often +than a scope-based destruction policy would. However, Mojo does not use a +garbage collector, so the ASAP destruction policy provides destruction +guarantees that are even more fine-grained than in Python. + +The Mojo destruction policy is more similar to how Rust and Swift work, because +they both have strong value ownership tracking and provide memory safety. One +difference is that Rust and Swift require the use of a [dynamic "drop +flag"](https://doc.rust-lang.org/nomicon/drop-flags.html)—they maintain hidden +shadow variables to keep track of the state of your values to provide safety. +These are often optimized away, but the Mojo approach eliminates this overhead +entirely, making the generated code faster and avoiding ambiguity. + +## Destructor + +Mojo calls a value's destructor (`__del__()` method) when the value's lifetime +ends (typically the point at which the value is last used). As we mentioned +earlier, Mojo provides a default, no-op destructor for all types, so in most +cases you don't need to define the `__del__()` method. + +You should define the `__del__()` method to perform any kind of cleanup the +type requires. Usually, that includes freeing memory for any fields where you +dynamically allocated memory (for example, via `UnsafePointer`) and +closing any long-lived resources such as file handles. + +However, any struct that is just a simple collection of other types does not +need to implement the destructor. + +For example, consider this simple struct: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, name: String, age: Int): + self.name = name + self.age = age +``` + +There's no need to define the `__del__()` destructor for this, because it's a +simple collection of other types (`String` and `Int`), and it doesn't +dynamically allocate memory. + +Whereas, the following struct must define the `__del__()` method to free the +memory allocated by its +[`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer): + +```mojo +from memory import UnsafePointer + +struct HeapArray: + var data: UnsafePointer[Int] + var size: Int + + fn __init__(out self, size: Int, val: Int): + self.size = size + self.data = UnsafePointer[Int].alloc(self.size) + for i in range(self.size): + (self.data + i).init_pointee_copy(val) + + fn __del__(owned self): + for i in range(self.size): + (self.data + i).destroy_pointee() + self.data.free() +``` + +Note that a pointer doesn't *own* any values in the memory it points to, so +when a pointer is destroyed, Mojo doesn't call the destructors on those values. + +So in the `HeapArray` example above, calling `free()` on the pointer releases +the memory, but doesn't call the destructors on the stored values. To invoke +the destructors, use the `destroy_pointee()` method provided by the +`UnsafePointer` type. + +:::note + +You can't just call the destructor explicitly. Because `__del__()` +takes `self` as an `owned` value, and owned arguments are copied by default, +`foo.__del__()` actually creates and destroys a *copy* of `foo`. When Mojo +destroys a value, however, it passes in the original value as `self`, not a +copy. + +::: + +It's important to notice that the `__del__()` method is an "extra" cleanup +event, and your implementation does not override any default destruction +behaviors. For example, Mojo still destroys all the fields in `MyPet` even +if you implement `__del__()` to do nothing: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, name: String, age: Int): + self.name = name + self.age = age + + fn __del__(owned self): + # Mojo destroys all the fields when they're last used + pass +``` + +However, the `self` value inside the `__del__()` destructor is still whole (so +all fields are still usable) until the destructor returns, as we'll discuss +more in the following section. + +## Field lifetimes + +In addition to tracking the lifetime of all objects in a program, Mojo also +tracks each field of a structure independently. That is, Mojo keeps track of +whether a "whole object" is fully or partially initialized/destroyed, and it +destroys each field independently with its ASAP destruction policy. + +For example, consider this code that changes the value of a field: + +```mojo +@value +struct MyPet: + var name: String + var age: Int + +fn use_two_strings(): + var pet = MyPet("Po", 8) + print(pet.name) + # pet.name.__del__() runs here, because this instance is + # no longer used; it's replaced below + + pet.name = String("Lola") # Overwrite pet.name + print(pet.name) + # pet.__del__() runs here +``` + +The `pet.name` field is destroyed after the first `print()`, because Mojo knows +that it will be overwritten below. You can also see this behavior when using the +transfer sigil: + +```mojo +fn consume(owned arg: String): + pass + +fn use(arg: MyPet): + print(arg.name) + +fn consume_and_use(): + var pet = MyPet("Selma", 5) + consume(pet.name^) + # pet.name.__moveinit__() runs here, which destroys pet.name + # Now pet is only partially initialized + + # use(pet) # This fails because pet.name is uninitialized + + pet.name = String("Jasper") # All together now + use(pet) # This is ok + # pet.__del__() runs here (and only if the object is whole) +``` + +Notice that the code transfers ownership of the `name` field to `consume()`. +For a period of time after that, the `name` field is uninitialized. +Then `name` is reinitialized before it is passed to the `use()` function. If you +try calling `use()` before `name` is re-initialized, Mojo rejects the code +with an uninitialized field error. + +Also, if you don't re-initialize the name by the end of the `pet` lifetime, the +compiler complains because it's unable to destroy a partially initialized +object. + +Mojo's policy here is powerful and intentionally straight-forward: fields can +be temporarily transferred, but the "whole object" must be constructed with the +aggregate type’s initializer and destroyed with the aggregate destructor. This +means it's impossible to create an object by initializing only its fields, and +it's likewise impossible to destroy an object by destroying only its fields. + +### Field lifetimes during destruct and move + +The consuming-move constructor and destructor face an interesting situation +with field lifetimes, because, unlike other lifecycle methods, they both take +an instance of their own type as an `owned` argument, which is about to be +destroyed. You don't really need to worry about this detail when implementing +these methods, but it might help you better understand field lifetimes. + +Just to recap, the move constructor and destructor method signatures +look like this: + +```mojo +struct TwoStrings: + fn __moveinit__(out self, owned existing: Self): + # Initializes a new `self` by consuming the contents of `existing` + fn __del__(owned self): + # Destroys all resources in `self` +``` + +:::note + +There are two kinds of "self" here: capitalized `Self` is an alias +for the current type name (used as a type specifier for the `existing` +argument), whereas lowercase `self` is the argument name for the +implicitly-passed reference to the current instance (also called "this" in +other languages, and also implicitly a `Self` type). + +::: + +Both of these methods face an interesting but obscure problem: they both must +dismantle the `existing`/`self` value that's `owned`. That is, `__moveinit__()` +implicitly destroys sub-elements of `existing` in order to transfer ownership +to a new instance (read more about the [move +constructor](/mojo/manual/lifecycle/life#move-constructor)), +while `__del__()` implements the deletion logic for its `self`. As such, they +both need to own and transform elements of the `owned` value, and they +definitely don’t want the original `owned` value's destructor to also run—that +could result in a double-free error, and in the case of the `__del__()` method, +it would become an infinite loop. + +To solve this problem, Mojo handles these two methods specially by assuming +that their whole values are destroyed upon reaching any return from the method. +This means that the whole object may be used as usual, up until the field +values are transferred or the method returns. + +For example, the following code works as you would expect (within the +destructor, we can still pass ownership of a field value to another function, +and there's no infinite loop to destroy `self`): + +```mojo +fn consume(owned str: String): + print('Consumed', str) + +struct TwoStrings: + var str1: String + var str2: String + + fn __init__(out self, one: String): + self.str1 = one + self.str2 = String("bar") + + fn __moveinit__(out self, owned existing: Self): + self.str1 = existing.str1 + self.str2 = existing.str2 + + fn __del__(owned self): + self.dump() # Self is still whole here + # Mojo calls self.str2.__del__() since str2 isn't used anymore + + consume(self.str1^) + # self.str1 has been transferred so it is also destroyed now; + # `self.__del__()` is not called (avoiding an infinite loop). + + fn dump(inout self): + print('str1:', self.str1) + print('str2:', self.str2) + +fn use_two_strings(): + var two_strings = TwoStrings("foo") +``` + +## Explicit lifetimes + +So far, we've described how Mojo destroys a value at the point it's last used, +and this works great in almost all situations. However, there are very rare +situations in which Mojo simply cannot predict this correctly and will destroy +a value that is still referenced through some other means. + +For instance, perhaps you're building a type with a field that carries a pointer +to another field. The Mojo compiler won't be able to reason about the pointer, +so it might destroy a field (`obj1`) when that field is technically no longer +used, even though another field (`obj2`) still holds a pointer to part of it. +So, you might need to keep `obj1` alive until you can execute some special +logic in the destructor or move initializer. + +You can force Mojo to keep a value alive up to a certain point by assigning the +value to the `_` discard pattern at the point where it's okay to destroy it. +For example: + +```mojo +fn __del__(owned self): + self.dump() # Self is still whole here + + consume(self.obj2^) + _ = self.obj1 + # Mojo keeps `obj1` alive until here, after its "last use" +``` + +In this case, if `consume()` refers to some value in `obj1` somehow, this +ensures that Mojo does not destroy `obj1` until after the call to `consume()`, +because assignment to the discard variable `_` is actually the last use. + +For other situations, you can also scope the lifetime of a value using the +Python-style [`with` +statement](https://docs.python.org/3/reference/compound_stmts.html#the-with-statement). +That is, for any value defined at the entrance to a `with` statement, Mojo will +keep that value alive until the end of the `with` statement. For example: + +```mojo +with open("my_file.txt", "r") as file: + print(file.read()) + + # Other stuff happens here (whether using `file` or not)... + foo() + # `file` is alive up to the end of the `with` statement. + +# `file` is destroyed when the statement ends. +bar() +``` diff --git a/docs/manual/lifecycle/index.ipynb b/docs/manual/lifecycle/index.ipynb deleted file mode 100644 index f4e3118941..0000000000 --- a/docs/manual/lifecycle/index.ipynb +++ /dev/null @@ -1,128 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Intro to value lifecycle\n", - "sidebar_position: 1\n", - "description: An introduction to the value lifecycle.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "So far, we've explained how Mojo allows you to build high-performance code that\n", - "is memory safe _without_ manually managing memory, using Mojo's [ownership\n", - "model](/mojo/manual/values/ownership). However, Mojo is designed for\n", - "[systems programming](https://en.wikipedia.org/wiki/Systems_programming), which\n", - "often requires manual memory management for custom data types. So, Mojo lets\n", - "you do that as you see fit. To be clear, Mojo has no reference counter and no\n", - "garbage collector.\n", - "\n", - "Mojo also has no built-in data types with special privileges. All data types\n", - "in the standard library (such as [`Bool`](/mojo/stdlib/builtin/bool/Bool),\n", - "[`Int`](/mojo/stdlib/builtin/int/Int), and\n", - "[`String`](/mojo/stdlib/collections/string/String)) are implemented as\n", - "[structs](/mojo/manual/structs). You can actually write your own\n", - "replacements for these types by using low-level primitives provided by\n", - "[MLIR dialects](/mojo/notebooks/BoolMLIR).\n", - "\n", - "What's great about the Mojo language is that it provides you these low-level\n", - "tools for systems programming, but within a framework that helps you build\n", - "things that are safe and easy to use from higher-level programs. That is, you\n", - "can get under the hood and write all the \"unsafe\" code you want, but as long as\n", - "you do so in accordance with Mojo's [value\n", - "semantics](/mojo/manual/values/value-semantics), the programmer instantiating\n", - "your type/object doesn't need to think about memory management at all, and the\n", - "behavior will be safe and predictable, thanks to [value\n", - "ownership](/mojo/manual/values/ownership).\n", - "\n", - "In summary, it's the responsibility of the type author to manage the memory and\n", - "resources for each value type, by implementing specific lifecycle methods, such\n", - "as the constructor, copy constructor, move constructor, and destructor, as\n", - "necessary. Mojo doesn't create any constructors by default, although it does\n", - "add a trivial, no-op destructor for types that don't define their own.\n", - "\n", - "In the following pages, we'll explain exactly how to define these lifecycle\n", - "methods in accordance with value semantics so your types play nicely with value\n", - "ownership." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Lifecycles and lifetimes\n", - "\n", - "First, let's clarify some terminology:\n", - "\n", - "- The \"lifecycle\" of a value is defined by various [dunder\n", - "methods](/mojo/manual/structs#special-methods) in a struct.\n", - "Each lifecycle event is handled by a different method,\n", - "such as the constructor (`__init__()`), the destructor (`__del__()`), the copy\n", - "constructor (`__copyinit__()`), and the move constructor (`__moveinit__()`).\n", - "All values that are declared with the same type have the same lifecycle.\n", - "\n", - "- The \"lifetime\" of a variable is defined by the span of time during \n", - "program execution in which the variable is considered valid. The life of a \n", - "variable begins when its value is initialized (via `__init__()`, \n", - "`__copyinit__()` or `__moveinit__()`) and ends when the value is destroyed \n", - "(`__del__()`), or consumed in some other way (for example, as part of a \n", - "`__moveinit__()` call). \n", - "\n", - "No two values have the exact same lifetime, because every value is created and \n", - "destroyed at a different point in time (even if the difference is imperceptible).\n", - "\n", - ":::note Origin type\n", - "\n", - "The concept of lifetimes is related to the `origin` type, a Mojo primitive\n", - "used to track ownership. For most Mojo programming, you won't need to work with\n", - "`origin` values directly. For information, see [Lifetimes, origins and\n", - "references](/mojo/manual/values/lifetimes).\n", - "\n", - ":::\n", - "\n", - "The life of a value in Mojo begins when a variable is initialized and continues\n", - "up until the value is last used, at which point Mojo destroys it. Mojo destroys\n", - "every value/object as soon as it's no longer used, using an “as soon as\n", - "possible” (ASAP) destruction policy that runs after every sub-expression. The \n", - "Mojo compiler takes care of releasing resources after last use when needed.\n", - "\n", - "As you might imagine, keeping track of a value's life can be difficult if a\n", - "value is shared across functions many times during the life of a program.\n", - "However, Mojo makes this predictable partly through its [value\n", - "semantics](/mojo/manual/values/value-semantics) and [value\n", - "ownership](/mojo/manual/values/ownership) (both prerequisite readings for\n", - "the following sections). The final piece of the puzzle for lifetime management\n", - "is the value lifecycle: every value (defined in a struct) needs to implement\n", - "key lifecycle methods that define how a value is created and destroyed." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/lifecycle/index.mdx b/docs/manual/lifecycle/index.mdx new file mode 100644 index 0000000000..466d792b18 --- /dev/null +++ b/docs/manual/lifecycle/index.mdx @@ -0,0 +1,86 @@ +--- +title: Intro to value lifecycle +sidebar_position: 1 +description: An introduction to the value lifecycle. +--- + +So far, we've explained how Mojo allows you to build high-performance code that +is memory safe *without* manually managing memory, using Mojo's [ownership +model](/mojo/manual/values/ownership). However, Mojo is designed for +[systems programming](https://en.wikipedia.org/wiki/Systems_programming), which +often requires manual memory management for custom data types. So, Mojo lets +you do that as you see fit. To be clear, Mojo has no reference counter and no +garbage collector. + +Mojo also has no built-in data types with special privileges. All data types +in the standard library (such as [`Bool`](/mojo/stdlib/builtin/bool/Bool), +[`Int`](/mojo/stdlib/builtin/int/Int), and +[`String`](/mojo/stdlib/collections/string/String)) are implemented as +[structs](/mojo/manual/structs). You can actually write your own +replacements for these types by using low-level primitives provided by +[MLIR dialects](/mojo/notebooks/BoolMLIR). + +What's great about the Mojo language is that it provides you these low-level +tools for systems programming, but within a framework that helps you build +things that are safe and easy to use from higher-level programs. That is, you +can get under the hood and write all the "unsafe" code you want, but as long as +you do so in accordance with Mojo's [value +semantics](/mojo/manual/values/value-semantics), the programmer instantiating +your type/object doesn't need to think about memory management at all, and the +behavior will be safe and predictable, thanks to [value +ownership](/mojo/manual/values/ownership). + +In summary, it's the responsibility of the type author to manage the memory and +resources for each value type, by implementing specific lifecycle methods, such +as the constructor, copy constructor, move constructor, and destructor, as +necessary. Mojo doesn't create any constructors by default, although it does +add a trivial, no-op destructor for types that don't define their own. + +In the following pages, we'll explain exactly how to define these lifecycle +methods in accordance with value semantics so your types play nicely with value +ownership. + +## Lifecycles and lifetimes + +First, let's clarify some terminology: + +* The "lifecycle" of a value is defined by various [dunder + methods](/mojo/manual/structs#special-methods) in a struct. + Each lifecycle event is handled by a different method, + such as the constructor (`__init__()`), the destructor (`__del__()`), the copy + constructor (`__copyinit__()`), and the move constructor (`__moveinit__()`). + All values that are declared with the same type have the same lifecycle. + +* The "lifetime" of a variable is defined by the span of time during + program execution in which the variable is considered valid. The life of a + variable begins when its value is initialized (via `__init__()`, + `__copyinit__()` or `__moveinit__()`) and ends when the value is destroyed + (`__del__()`), or consumed in some other way (for example, as part of a + `__moveinit__()` call). + +No two values have the exact same lifetime, because every value is created and +destroyed at a different point in time (even if the difference is imperceptible). + +:::note Origin type + +The concept of lifetimes is related to the `origin` type, a Mojo primitive +used to track ownership. For most Mojo programming, you won't need to work with +`origin` values directly. For information, see [Lifetimes, origins and +references](/mojo/manual/values/lifetimes). + +::: + +The life of a value in Mojo begins when a variable is initialized and continues +up until the value is last used, at which point Mojo destroys it. Mojo destroys +every value/object as soon as it's no longer used, using an “as soon as +possible” (ASAP) destruction policy that runs after every sub-expression. The +Mojo compiler takes care of releasing resources after last use when needed. + +As you might imagine, keeping track of a value's life can be difficult if a +value is shared across functions many times during the life of a program. +However, Mojo makes this predictable partly through its [value +semantics](/mojo/manual/values/value-semantics) and [value +ownership](/mojo/manual/values/ownership) (both prerequisite readings for +the following sections). The final piece of the puzzle for lifetime management +is the value lifecycle: every value (defined in a struct) needs to implement +key lifecycle methods that define how a value is created and destroyed. diff --git a/docs/manual/lifecycle/life.ipynb b/docs/manual/lifecycle/life.ipynb deleted file mode 100644 index 6c64745fdc..0000000000 --- a/docs/manual/lifecycle/life.ipynb +++ /dev/null @@ -1,926 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Life of a value\n", - "sidebar_position: 2\n", - "description: An explanation of when and how Mojo creates values.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The life of a value in Mojo begins when a variable is initialized and continues\n", - "up until the value is last used, at which point Mojo destroys it. This page\n", - "describes how every value in Mojo is created, copied, and moved. (The next\n", - "page describes [how values are\n", - "destroyed](/mojo/manual/lifecycle/death).)\n", - "\n", - "All data types in Mojo—including basic types in the standard library such as\n", - "[`Bool`](/mojo/stdlib/builtin/bool/Bool),\n", - "[`Int`](/mojo/stdlib/builtin/int/Int), and\n", - "[`String`](/mojo/stdlib/collections/string/String), up to complex types such\n", - "as [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) and\n", - "[`object`](/mojo/stdlib/builtin/object/object)—are defined as a\n", - "[struct](/mojo/manual/structs). This means the creation and\n", - "destruction of any piece of data follows the same lifecycle rules, and you can\n", - "define your own data types that work exactly the same way.\n", - "\n", - "Mojo structs don't get any default lifecycle methods, such as a\n", - "constructor, copy constructor, or move constructor. That means you can create\n", - "a struct without a constructor, but then you can't instantiate it, and it\n", - "would be useful only as a sort of namespace for static methods. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "struct NoInstances:\n", - " var state: Int\n", - "\n", - " @staticmethod\n", - " fn print_hello():\n", - " print(\"Hello world!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Without a constructor, this cannot be instantiated, so it has no lifecycle. The\n", - "`state` field is also useless because it cannot be initialized (Mojo structs do\n", - "not support default field values—you must initialize them in a constructor).\n", - "\n", - "So the only thing you can do is call the static method:" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello world!\n" - ] - } - ], - "source": [ - "NoInstances.print_hello()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Constructor\n", - "\n", - "To create an instance of a Mojo type, it needs the `__init__()` constructor\n", - "method. The main responsibility of the constructor is to initialize all fields.\n", - "For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, name: String, age: Int):\n", - " self.name = name\n", - " self.age = age" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we can create an instance:" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [], - "source": [ - "var mine = MyPet(\"Loki\", 4)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "An instance of `MyPet` can also be\n", - "[borrowed](/mojo/manual/values/ownership#borrowed-arguments-borrowed)\n", - "and destroyed, but it currently can't be copied or moved.\n", - "\n", - "We believe this is a good default starting point, because there are no built-in\n", - "lifecycle events and no surprise behaviors. You—the type author—must\n", - "explicitly decide whether and how the type can be copied or moved, by\n", - "implementing the copy and move constructors.\n", - "\n", - ":::note\n", - "\n", - "Mojo does not require a destructor to destroy an object. As long as\n", - "all fields in the struct are destructible (every type in the standard library\n", - "is destructible, except for\n", - "[pointers](/mojo/stdlib/memory/unsafe)), then Mojo knows how to destroy\n", - "the type when its lifetime ends. We'll discuss that more in [Death of a\n", - "value](/mojo/manual/lifecycle/death).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Overloading the constructor\n", - "\n", - "Like any other function/method, you can\n", - "[overload](/mojo/manual/functions#overloaded-functions) the\n", - "`__init__()` constructor to initialize the object with different arguments. For\n", - "example, you might want a default constructor that sets some default values and\n", - "takes no arguments, and then additional constructors that accept more arguments.\n", - "\n", - "Just be aware that, in order to modify any fields, each constructor must\n", - "declare the `self` argument with the [`inout`\n", - "convention](/mojo/manual/values/ownership#mutable-arguments-inout). If you\n", - "want to call one constructor from another, you simply call upon that\n", - "constructor as you would externally (you don't need to pass `self`).\n", - "\n", - "For example, here's how you can delegate work from an overloaded constructor:" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self):\n", - " self.name = \"\"\n", - " self.age = 0\n", - "\n", - " fn __init__(out self, name: String):\n", - " self = MyPet()\n", - " self.name = name" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Field initialization\n", - "\n", - "Notice in the previous example that, by the end of each constructor, all fields\n", - "must be initialized. That's the only requirement in the constructor.\n", - "\n", - "In fact, the `__init__()` constructor is smart enough to treat the `self`\n", - "object as fully initialized even before the constructor is finished, as long\n", - "as all fields are initialized. For example, this constructor can pass around\n", - "`self` as soon as all fields are initialized:" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [], - "source": [ - "fn use(arg: MyPet):\n", - " pass\n", - "\n", - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, name: String, age: Int, cond: Bool):\n", - " self.name = name\n", - " if cond:\n", - " self.age = age\n", - " use(self) # Safe to use immediately!\n", - "\n", - " self.age = age\n", - " use(self) # Safe to use immediately!" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Constructors and implicit conversion\n", - "\n", - "Mojo supports implicit conversion from one type to another. Implicit conversion\n", - "can happen when one of the following occurs:\n", - "\n", - "- You assign a value of one type to a variable with a different type.\n", - "- You pass a value of one type to a function that requires a different type.\n", - "\n", - "In both cases, implicit conversion is supported when the target type\n", - "defines a constructor that takes a single required, non-keyword argument of the\n", - "source type. For example:\n", - "\n", - "```mojo\n", - "var a = Source()\n", - "var b: Target = a\n", - "```\n", - "\n", - "Mojo implicitly converts the `Source` value in `a` to a `Target` value if \n", - "`Target` defines a matching constructor like this:\n", - "\n", - "```mojo\n", - "struct Target:\n", - " fn __init__(out self, s: Source): ...\n", - "```\n", - "\n", - "With implicit conversion, the assignment above is essentially identical to:\n", - "\n", - "```mojo\n", - "var b = Target(a)\n", - "```\n", - "\n", - "The constructor used for implicit conversion can take optional arguments, so\n", - "the following constructor would also support implicit conversion from `Source`\n", - "to `Target`:\n", - "\n", - "```mojo\n", - "struct Target:\n", - " fn __init__(out self, s: Source, reverse: Bool = False): ...\n", - "```\n", - "\n", - "Implicit conversion also occurs if the type doesn't declare its own constructor,\n", - "but instead uses the [`@value` decorator](#value-decorator), _and_ the type\n", - "has only one field. That's because Mojo automatically creates a member-wise\n", - "constructor for each field, and when there is only one field, that synthesized\n", - "constructor works exactly like a conversion constructor. For example, this\n", - "type also can convert a `Source` value to a `Target` value:\n", - "\n", - "```mojo\n", - "@value\n", - "struct Target:\n", - " var s: Source\n", - "```\n", - "\n", - "Implicit conversion can fail if Mojo can't unambiguously match the conversion to\n", - "a constructor. For example, if the target type has two overloaded constructors\n", - "that take different types, and each of those types supports an implicit\n", - "conversion from the source type, the compiler has two equally-valid paths to \n", - "convert the values:\n", - "\n", - "```mojo\n", - "struct A: \n", - " fn __init__(out self, s: Source): ...\n", - "\n", - "struct B: \n", - " fn __init__(out self, s: Source): ...\n", - "\n", - "struct Target:\n", - " fn __init__(out self, a: A): ...\n", - " fn __init__(out self, b: B): ...\n", - "\n", - "# Fails\n", - "var t = Target(Source())\n", - "```\n", - "\n", - "In this case, removing either one of the target type's constructors will fix the\n", - "problem.\n", - "\n", - "If you want to define a single-argument constructor, but you **don't** want\n", - "the types to implicitly convert, you can define the constructor with a \n", - "[keyword-only argument](/mojo/manual/functions#positional-only-and-keyword-only-arguments):\n", - "\n", - "```mojo\n", - "struct Target:\n", - " # does not support implicit conversion\n", - " fn __init__(out self, *, source: Source): ...\n", - "\n", - "# the constructor must be called with a keyword\n", - "var t = Target(source=a)\n", - "```\n", - "\n", - ":::note\n", - "\n", - "In the future we intend to provide a more explicit method of declaring whether\n", - "a constructor should support implicit conversion.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Copy constructor\n", - "\n", - "When Mojo encounters an assignment operator (`=`), it tries to make a copy of\n", - "the right-side value by calling upon that type's copy constructor: the\n", - "`__copyinit__()` method. Thus, it's the responsibility of the type author to\n", - "implement `__copyinit__()` so it returns a copy of the value.\n", - "\n", - "For example, the `MyPet` type above does not have a copy constructor,\n", - "so this code fails to compile:\n", - "\n", - "```mojo\n", - "var mine = MyPet(\"Loki\", 4)\n", - "var yours = mine # This requires a copy, but MyPet has no copy constructor\n", - "```\n", - "\n", - "To make it work, we need to add the copy constructor, like\n", - "this:" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, name: String, age: Int):\n", - " self.name = name\n", - " self.age = age\n", - "\n", - " fn __copyinit__(out self, existing: Self):\n", - " self.name = existing.name\n", - " self.age = existing.age" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "`Self` (capital \"S\") is an alias for the current type name\n", - "(`MyPet`, in this example). Using this alias is a best practice to avoid any\n", - "mistakes when referring to the current struct name.\n", - "\n", - "Also, notice that the `existing` argument in `__copyinit__()` is immutable\n", - "because the default [argument\n", - "convention](/mojo/manual/values/ownership#argument-conventions) in an `fn`\n", - "function is `borrowed`—this is a good thing because this function should not\n", - "modify the contents of the value being copied.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now this code works to make a copy:" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "var mine = MyPet(\"Loki\", 4)\n", - "var yours = mine" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "What makes Mojo's copy behavior different, compared to other languages, is that\n", - "`__copyinit__()` is designed to perform a deep copy of all fields in the type\n", - "(as per [value semantics](/mojo/manual/values/value-semantics)). That is,\n", - "it copies heap-allocated values, rather than just copying the pointer.\n", - "\n", - "However, the Mojo compiler doesn't enforce this, so it's the type author's\n", - "responsibility to implement `__copyinit__()` with value semantics. For example,\n", - "here's a new `HeapArray` type that performs a deep copy in the copy constructor:" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "struct HeapArray:\n", - " var data: UnsafePointer[Int]\n", - " var size: Int\n", - " var cap: Int\n", - "\n", - " fn __init__(out self, size: Int, val: Int):\n", - " self.size = size\n", - " self.cap = size * 2\n", - " self.data = UnsafePointer[Int].alloc(self.cap)\n", - " for i in range(self.size):\n", - " (self.data + i).init_pointee_copy(val)\n", - "\n", - " fn __copyinit__(out self, existing: Self):\n", - " # Deep-copy the existing value\n", - " self.size = existing.size\n", - " self.cap = existing.cap\n", - " self.data = UnsafePointer[Int].alloc(self.cap)\n", - " for i in range(self.size):\n", - " (self.data + i).init_pointee_copy(existing.data[i])\n", - " # The lifetime of `existing` continues unchanged\n", - "\n", - " fn __del__(owned self):\n", - " # We must free the heap-allocated data, but\n", - " # Mojo knows how to destroy the other fields\n", - " for i in range(self.size):\n", - " (self.data + i).destroy_pointee()\n", - " self.data.free()\n", - "\n", - " fn append(inout self, val: Int):\n", - " # Update the array for demo purposes\n", - " if self.size < self.cap:\n", - " (self.data + self.size).init_pointee_copy(val)\n", - " self.size += 1\n", - " else:\n", - " print(\"Out of bounds\")\n", - "\n", - " fn dump(self):\n", - " # Print the array contents for demo purposes\n", - " print(\"[\", end=\"\")\n", - " for i in range(self.size):\n", - " if i > 0:\n", - " print(\", \", end=\"\")\n", - " print(self.data[i], end=\"\")\n", - " print(\"]\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that `__copyinit__()` does not copy the `UnsafePointer` value (doing so would\n", - "make the copied value refer to the same `data` memory address as the original\n", - "value, which is a shallow copy). Instead, we initialize a new `UnsafePointer` to\n", - "allocate a new block of memory, and then copy over all the heap-allocated\n", - "values (this is a deep copy).\n", - "\n", - "Thus, when we copy an instance of `HeapArray`, each copy has its own value on\n", - "the heap, so changes to one value do not affect the other, as shown here:" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "fn copies():\n", - " var a = HeapArray(2, 1)\n", - " var b = a # Calls the copy constructor\n", - " a.dump() # Prints [1, 1]\n", - " b.dump() # Prints [1, 1]\n", - "\n", - " b.append(2) # Changes the copied data\n", - " b.dump() # Prints [1, 1, 2]\n", - " a.dump() # Prints [1, 1] (the original did not change)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "In `HeapArray`, we must use the `__del__()` destructor to free the\n", - "heap-allocated data when the `HeapArray` lifetime ends, but Mojo automatically\n", - "destroys all other fields when their respective lifetimes end. We'll discuss\n", - "this destructor more in [Death of a value](/mojo/manual/lifecycle/death).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If your type doesn't use any pointers for heap-allocated data, then writing the\n", - "constructor and copy constructor is all boilerplate code that you shouldn't\n", - "have to write. For most structs that don't manage memory explicitly, you can \n", - "just add the [`@value` decorator](/mojo/manual/decorators/value) to your\n", - "struct definition and Mojo will synthesize the `__init__()`, `__copyinit__()`,\n", - "and `__moveinit__()` methods.\n", - "\n", - ":::note\n", - "\n", - "Mojo also calls upon the copy constructor when a value is passed to a\n", - "function that takes the argument as\n", - "[`owned`](/mojo/manual/values/ownership#transfer-arguments-owned-and-)\n", - "_and_ when the lifetime of the given value does _not_ end at that point. If the\n", - "lifetime of the value does end there (usually indicated with the transfer\n", - "sigil `^`), then Mojo instead invokes the move constructor.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Move constructor\n", - "\n", - "Although copying values provides predictable behavior that matches Mojo's\n", - "[value semantics](/mojo/manual/values/value-semantics), copying some data\n", - "types can be a significant hit on performance. If you're familiar with\n", - "reference semantics, then the solution here might seem clear: instead of making\n", - "a copy when passing a value, share the value as a reference. And if the\n", - "original variable is no longer needed, nullify the original to avoid any\n", - "double-free or use-after-free errors. That's generally known as a move\n", - "operation: the memory block holding the data remains the same (the memory does\n", - "not actually move), but the pointer to that memory moves to a new variable.\n", - "\n", - "To support moving a value, implement the `__moveinit__()` method. The \n", - "`__moveinit__()` method performs a consuming move: it [transfers\n", - "ownership](/mojo/manual/values/ownership#transfer-arguments-owned-and-)\n", - "of a value from one variable to another when the original variable's lifetime\n", - "ends (also called a \"destructive move\").\n", - "\n", - ":::note\n", - "\n", - "A move constructor is **not required** to transfer ownership of a\n", - "value. Unlike in Rust, transferring ownership is not always a move operation;\n", - "the move constructors are only part of the implementation for how Mojo\n", - "transfers ownership of a value. You can learn more in the section about\n", - "[ownership\n", - "transfer](/mojo/manual/values/ownership#transfer-arguments-owned-and-).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When a move occurs, Mojo immediately invalidates the original\n", - "variable, preventing any access to it and disabling its destructor. Invalidating\n", - "the original variable is important to avoid memory errors on heap-allocated\n", - "data, such as use-after-free and double-free errors.\n", - "\n", - "Here's how to add the move constructor to the `HeapArray` example:" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [], - "source": [ - "struct HeapArray:\n", - " var data: UnsafePointer[Int]\n", - " var size: Int\n", - " var cap: Int\n", - "\n", - "\n", - " fn __init__(out self, size: Int, val: Int):\n", - " self.size = size\n", - " self.cap = size * 2\n", - " self.data = UnsafePointer[Int].alloc(self.size)\n", - " for i in range(self.size):\n", - " (self.data + i).init_pointee_copy(val)\n", - "\n", - " fn __copyinit__(out self, existing: Self):\n", - " # Deep-copy the existing value\n", - " self.size = existing.size\n", - " self.cap = existing.cap\n", - " self.data = UnsafePointer[Int].alloc(self.cap)\n", - " for i in range(self.size):\n", - " (self.data + i).init_pointee_copy(existing.data[i])\n", - " # The lifetime of `existing` continues unchanged\n", - "\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " print(\"move\")\n", - " # Shallow copy the existing value\n", - " self.size = existing.size\n", - " self.cap = existing.cap\n", - " self.data = existing.data\n", - " # Then the lifetime of `existing` ends here, but\n", - " # Mojo does NOT call its destructor\n", - "\n", - " fn __del__(owned self):\n", - " # We must free the heap-allocated data, but\n", - " # Mojo knows how to destroy the other fields\n", - " for i in range(self.size):\n", - " (self.data + i).destroy_pointee()\n", - " self.data.free()\n", - "\n", - " fn append(inout self, val: Int):\n", - " # Update the array for demo purposes\n", - " if self.size < self.cap:\n", - " (self.data + self.size).init_pointee_copy(val)\n", - " self.size += 1\n", - " else:\n", - " print(\"Out of bounds\")\n", - "\n", - " fn dump(self):\n", - " # Print the array contents for demo purposes\n", - " print(\"[\", end=\"\")\n", - " for i in range(self.size):\n", - " if i > 0:\n", - " print(\", \", end=\"\")\n", - " print(self.data[i], end=\"\")\n", - " print(\"]\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The critical feature of `__moveinit__()` is that it takes the incoming value as\n", - "`owned`, meaning this method gets unique ownership of the value. Moreover,\n", - "because this is a dunder method that Mojo calls only when performing a move \n", - "(during ownership transfer), the `existing` argument is guaranteed to be a \n", - "mutable reference to the original value, _not a copy_ (unlike other methods that\n", - "may declare an argument as `owned`, but might receive the value as a copy if the\n", - "method is called without the [`^` transfer\n", - "sigil](/mojo/manual/values/ownership#transfer-arguments-owned-and-)).\n", - "That is, Mojo calls this move constructor _only_ when the original variable's\n", - "lifetime actually ends at the point of transfer.\n", - "\n", - "Here's an example showing how to invoke the move constructor for `HeapArray`:" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [], - "source": [ - "fn moves():\n", - " var a = HeapArray(3, 1)\n", - "\n", - " a.dump() # Prints [1, 1, 1]\n", - "\n", - " var b = a^ # Prints \"move\"; the lifetime of `a` ends here\n", - "\n", - " b.dump() # Prints [1, 1, 1]\n", - " #a.dump() # ERROR: use of uninitialized value 'a'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that `__moveinit__()` performs a shallow copy of the\n", - "existing field values (it copies the pointer, instead of allocating new memory\n", - "on the heap), which is what makes it useful for types with heap-allocated\n", - "values that are expensive to copy.\n", - "\n", - "To go further and ensure your type can never be copied, you can make it\n", - "\"move-only\" by implementing `__moveinit__()` and _excluding_ `__copyinit__()`.\n", - "A move-only type can be passed to other variables and passed into functions\n", - "with any argument convention (`borrowed`, `inout`, and `owned`)—the only catch\n", - "is that you must use the `^` transfer sigil to end the lifetime of a\n", - "move-only type when assigning it to a new variable or when passing it as an\n", - "`owned` argument." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "For types without heap-allocated fields, you get no real benefit from\n", - "the move constructor. Making copies of simple data types on the stack, like\n", - "integers, floats, and booleans, is very cheap. Yet, if you allow your type to\n", - "be copied, then there's generally no reason to disallow moves, so you can\n", - "synthesize both constructors by adding the [`@value`\n", - "decorator](/mojo/manual/decorators/value).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Simple value types {#value-decorator}\n", - "\n", - "Because copy and move constructors are opt-in, Mojo provides great control for\n", - "exotic use cases (such as for atomic values that should never be copied or\n", - "moved), but most structs are simple aggregations of other types that should be\n", - "easily copied and moved, and we don't want to write a lot of boilerplate\n", - "constructors for those simple value types.\n", - "\n", - "To solve this, Mojo provides the [`@value`\n", - "decorator](/mojo/manual/decorators/value), which synthesizes the\n", - "boilerplate code for the `__init__()`, `__copyinit__()`, and `__moveinit__()`\n", - "methods.\n", - "\n", - "For example, consider a simple struct like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct MyPet:\n", - " var name: String\n", - " var age: Int" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo sees the `@value` decorator and notices that you don't have a member-wise\n", - "initializer (a constructor with arguments for each field), a copy constructor,\n", - "or a move constructor, so it synthesizes them for you. The result is as if you\n", - "had actually written this:" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, owned name: String, age: Int):\n", - " self.name = name^\n", - " self.age = age\n", - "\n", - " fn __copyinit__(out self, existing: Self):\n", - " self.name = existing.name\n", - " self.age = existing.age\n", - "\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " self.name = existing.name^\n", - " self.age = existing.age" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo synthesizes each lifecycle method only when it doesn't exist, so\n", - "you can use `@value` and still define your own versions to override the default\n", - "behavior. For example, it is fairly common to use the default member-wise and\n", - "move constructor, but create a custom copy constructor. Another common pattern\n", - "is to use `@value` to create a member-wise constructor, and add overloads that\n", - "take different sets of arguments. For example, if you want to create\n", - "a `MyPet` struct without specifying an age, you could add an overloaded\n", - "constructor:" - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, owned name: String):\n", - " self.name = name^\n", - " self.age = 0\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that this overloaded constructor **doesn't** prevent the `@value` decorator\n", - "from synthesizing the member-wise constructor. To override this default\n", - "constructor, you'd need to add a constructor with the same signature as the\n", - "default member-wise constructor.\n", - "\n", - "Something you can see in this code that we didn't mention yet is that the\n", - "`__init__()` method takes all arguments as `owned`, because the constructor\n", - "must take ownership to store each value. This is a useful micro-optimization\n", - "and enables the use of move-only types. Trivial types like `Int` are also\n", - "passed as `owned`, but because ownership doesn't mean anything for integers, we\n", - "can elide that declaration and the transfer sigil (`^`) for simplicity. The\n", - "transfer operator is also just a formality in this case, because, even if it's\n", - "not used with `self.name = name^`, the Mojo compiler will notice that `name` is\n", - "last used here and convert this assignment into a move, instead of a\n", - "copy+delete.\n", - "\n", - ":::note\n", - "\n", - "If your type contains any move-only fields, Mojo will not generate\n", - "the copy constructor because it cannot copy those fields. Further, the `@value`\n", - "decorator won't work at all if any of your members are neither copyable nor\n", - "movable. For example, if you have something like `Atomic` in your struct, then\n", - "it probably isn't a true value type, and you don't want the copy/move\n", - "constructors anyway.\n", - "\n", - "Also notice that the `MyPet` struct above doesn't include the `__del__()`\n", - "destructor (the `@value` decorator does not synthesize this), because Mojo\n", - "doesn't need it to destroy fields, as discussed in [Death of a\n", - "value](/mojo/manual/lifecycle/death)\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Trivial types\n", - "\n", - "So far, we've talked about values that live in memory, which means they have an\n", - "identity (an address) that can be passed around among functions (passed \"by\n", - "reference\"). This is great for most types, and it's a safe default for large\n", - "objects with expensive copy operations. However, it's inefficient for tiny\n", - "things like a single integer or floating point number. We call these types\n", - "\"trivial\" because they are just \"bags of bits\" that should be copied, moved,\n", - "and destroyed without invoking any custom lifecycle methods.\n", - "\n", - "Trivial types are the most common types that surround us, and from a language\n", - "perspective, Mojo doesn’t need special support for these written in a struct.\n", - "Usually, these values are so tiny that they should be passed around in CPU\n", - "registers, not indirectly through memory.\n", - "\n", - "As such, Mojo provides a struct decorator to declare these types of values:\n", - "`@register_passable(\"trivial\")`. This decorator tells Mojo that the type should\n", - "be copyable and movable but that it has no user-defined logic (no lifecycle\n", - "methods) for doing this. It also tells Mojo to pass the value in CPU registers\n", - "whenever possible, which has clear performance benefits.\n", - "\n", - "You'll see this decorator on types like `Int` in the standard library:\n", - "\n", - "```mojo\n", - "@register_passable(\"trivial\")\n", - "struct Int:\n", - " var value: __mlir_type.index\n", - "\n", - " fn __init__(value: __mlir_type.index) -> Int:\n", - " return Self {value: value}\n", - " ...\n", - "```\n", - "\n", - "We expect to use this decorator pervasively on Mojo standard library types, but\n", - "it is safe to ignore for general application-level code.\n", - "\n", - "For more information, see the [`@register_passable`\n", - "documentation](/mojo/manual/decorators/register-passable).\n", - "\n", - ":::note TODO\n", - "\n", - "This decorator is due for reconsideration. Lack of custom\n", - "copy/move/destroy logic and \"passability in a register\" are orthogonal concerns\n", - "and should be split. This former logic should be subsumed into a more general\n", - "`@value(\"trivial\")` decorator, which is orthogonal from `@register_passable`.\n", - "\n", - ":::" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/lifecycle/life.mdx b/docs/manual/lifecycle/life.mdx new file mode 100644 index 0000000000..95c4367593 --- /dev/null +++ b/docs/manual/lifecycle/life.mdx @@ -0,0 +1,691 @@ +--- +title: Life of a value +sidebar_position: 2 +description: An explanation of when and how Mojo creates values. +--- + +The life of a value in Mojo begins when a variable is initialized and continues +up until the value is last used, at which point Mojo destroys it. This page +describes how every value in Mojo is created, copied, and moved. (The next +page describes [how values are +destroyed](/mojo/manual/lifecycle/death).) + +All data types in Mojo—including basic types in the standard library such as +[`Bool`](/mojo/stdlib/builtin/bool/Bool), +[`Int`](/mojo/stdlib/builtin/int/Int), and +[`String`](/mojo/stdlib/collections/string/String), up to complex types such +as [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) and +[`object`](/mojo/stdlib/builtin/object/object)—are defined as a +[struct](/mojo/manual/structs). This means the creation and +destruction of any piece of data follows the same lifecycle rules, and you can +define your own data types that work exactly the same way. + +Mojo structs don't get any default lifecycle methods, such as a +constructor, copy constructor, or move constructor. That means you can create +a struct without a constructor, but then you can't instantiate it, and it +would be useful only as a sort of namespace for static methods. For example: + +```mojo +struct NoInstances: + var state: Int + + @staticmethod + fn print_hello(): + print("Hello world!") +``` + +Without a constructor, this cannot be instantiated, so it has no lifecycle. The +`state` field is also useless because it cannot be initialized (Mojo structs do +not support default field values—you must initialize them in a constructor). + +So the only thing you can do is call the static method: + +```mojo +NoInstances.print_hello() +``` + +```output +Hello world! +``` + +## Constructor + +To create an instance of a Mojo type, it needs the `__init__()` constructor +method. The main responsibility of the constructor is to initialize all fields. +For example: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, name: String, age: Int): + self.name = name + self.age = age +``` + +Now we can create an instance: + +```mojo +var mine = MyPet("Loki", 4) +``` + +An instance of `MyPet` can also be +[borrowed](/mojo/manual/values/ownership#borrowed-arguments-borrowed) +and destroyed, but it currently can't be copied or moved. + +We believe this is a good default starting point, because there are no built-in +lifecycle events and no surprise behaviors. You—the type author—must +explicitly decide whether and how the type can be copied or moved, by +implementing the copy and move constructors. + +:::note + +Mojo does not require a destructor to destroy an object. As long as +all fields in the struct are destructible (every type in the standard library +is destructible, except for +[pointers](/mojo/stdlib/memory/unsafe)), then Mojo knows how to destroy +the type when its lifetime ends. We'll discuss that more in [Death of a +value](/mojo/manual/lifecycle/death). + +::: + +### Overloading the constructor + +Like any other function/method, you can +[overload](/mojo/manual/functions#overloaded-functions) the +`__init__()` constructor to initialize the object with different arguments. For +example, you might want a default constructor that sets some default values and +takes no arguments, and then additional constructors that accept more arguments. + +Just be aware that, in order to modify any fields, each constructor must +declare the `self` argument with the [`inout` +convention](/mojo/manual/values/ownership#mutable-arguments-inout). If you +want to call one constructor from another, you simply call upon that +constructor as you would externally (you don't need to pass `self`). + +For example, here's how you can delegate work from an overloaded constructor: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self): + self.name = "" + self.age = 0 + + fn __init__(out self, name: String): + self = MyPet() + self.name = name +``` + +### Field initialization + +Notice in the previous example that, by the end of each constructor, all fields +must be initialized. That's the only requirement in the constructor. + +In fact, the `__init__()` constructor is smart enough to treat the `self` +object as fully initialized even before the constructor is finished, as long +as all fields are initialized. For example, this constructor can pass around +`self` as soon as all fields are initialized: + +```mojo +fn use(arg: MyPet): + pass + +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, name: String, age: Int, cond: Bool): + self.name = name + if cond: + self.age = age + use(self) # Safe to use immediately! + + self.age = age + use(self) # Safe to use immediately! +``` + +### Constructors and implicit conversion + +Mojo supports implicit conversion from one type to another. Implicit conversion +can happen when one of the following occurs: + +* You assign a value of one type to a variable with a different type. +* You pass a value of one type to a function that requires a different type. + +In both cases, implicit conversion is supported when the target type +defines a constructor that takes a single required, non-keyword argument of the +source type. For example: + +```mojo +var a = Source() +var b: Target = a +``` + +Mojo implicitly converts the `Source` value in `a` to a `Target` value if +`Target` defines a matching constructor like this: + +```mojo +struct Target: + fn __init__(out self, s: Source): ... +``` + +With implicit conversion, the assignment above is essentially identical to: + +```mojo +var b = Target(a) +``` + +The constructor used for implicit conversion can take optional arguments, so +the following constructor would also support implicit conversion from `Source` +to `Target`: + +```mojo +struct Target: + fn __init__(out self, s: Source, reverse: Bool = False): ... +``` + +Implicit conversion also occurs if the type doesn't declare its own constructor, +but instead uses the [`@value` decorator](#value-decorator), *and* the type +has only one field. That's because Mojo automatically creates a member-wise +constructor for each field, and when there is only one field, that synthesized +constructor works exactly like a conversion constructor. For example, this +type also can convert a `Source` value to a `Target` value: + +```mojo +@value +struct Target: + var s: Source +``` + +Implicit conversion can fail if Mojo can't unambiguously match the conversion to +a constructor. For example, if the target type has two overloaded constructors +that take different types, and each of those types supports an implicit +conversion from the source type, the compiler has two equally-valid paths to +convert the values: + +```mojo +struct A: + fn __init__(out self, s: Source): ... + +struct B: + fn __init__(out self, s: Source): ... + +struct Target: + fn __init__(out self, a: A): ... + fn __init__(out self, b: B): ... + +# Fails +var t = Target(Source()) +``` + +In this case, removing either one of the target type's constructors will fix the +problem. + +If you want to define a single-argument constructor, but you **don't** want +the types to implicitly convert, you can define the constructor with a +[keyword-only argument](/mojo/manual/functions#positional-only-and-keyword-only-arguments): + +```mojo +struct Target: + # does not support implicit conversion + fn __init__(out self, *, source: Source): ... + +# the constructor must be called with a keyword +var t = Target(source=a) +``` + +:::note + +In the future we intend to provide a more explicit method of declaring whether +a constructor should support implicit conversion. + +::: + +## Copy constructor + +When Mojo encounters an assignment operator (`=`), it tries to make a copy of +the right-side value by calling upon that type's copy constructor: the +`__copyinit__()` method. Thus, it's the responsibility of the type author to +implement `__copyinit__()` so it returns a copy of the value. + +For example, the `MyPet` type above does not have a copy constructor, +so this code fails to compile: + +```mojo +var mine = MyPet("Loki", 4) +var yours = mine # This requires a copy, but MyPet has no copy constructor +``` + +To make it work, we need to add the copy constructor, like +this: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, name: String, age: Int): + self.name = name + self.age = age + + fn __copyinit__(out self, existing: Self): + self.name = existing.name + self.age = existing.age +``` + +:::note + +`Self` (capital "S") is an alias for the current type name +(`MyPet`, in this example). Using this alias is a best practice to avoid any +mistakes when referring to the current struct name. + +Also, notice that the `existing` argument in `__copyinit__()` is immutable +because the default [argument +convention](/mojo/manual/values/ownership#argument-conventions) in an `fn` +function is `borrowed`—this is a good thing because this function should not +modify the contents of the value being copied. + +::: + +Now this code works to make a copy: + +```mojo +var mine = MyPet("Loki", 4) +var yours = mine +``` + +What makes Mojo's copy behavior different, compared to other languages, is that +`__copyinit__()` is designed to perform a deep copy of all fields in the type +(as per [value semantics](/mojo/manual/values/value-semantics)). That is, +it copies heap-allocated values, rather than just copying the pointer. + +However, the Mojo compiler doesn't enforce this, so it's the type author's +responsibility to implement `__copyinit__()` with value semantics. For example, +here's a new `HeapArray` type that performs a deep copy in the copy constructor: + +```mojo +struct HeapArray: + var data: UnsafePointer[Int] + var size: Int + var cap: Int + + fn __init__(out self, size: Int, val: Int): + self.size = size + self.cap = size * 2 + self.data = UnsafePointer[Int].alloc(self.cap) + for i in range(self.size): + (self.data + i).init_pointee_copy(val) + + fn __copyinit__(out self, existing: Self): + # Deep-copy the existing value + self.size = existing.size + self.cap = existing.cap + self.data = UnsafePointer[Int].alloc(self.cap) + for i in range(self.size): + (self.data + i).init_pointee_copy(existing.data[i]) + # The lifetime of `existing` continues unchanged + + fn __del__(owned self): + # We must free the heap-allocated data, but + # Mojo knows how to destroy the other fields + for i in range(self.size): + (self.data + i).destroy_pointee() + self.data.free() + + fn append(inout self, val: Int): + # Update the array for demo purposes + if self.size < self.cap: + (self.data + self.size).init_pointee_copy(val) + self.size += 1 + else: + print("Out of bounds") + + fn dump(self): + # Print the array contents for demo purposes + print("[", end="") + for i in range(self.size): + if i > 0: + print(", ", end="") + print(self.data[i], end="") + print("]") +``` + +Notice that `__copyinit__()` does not copy the `UnsafePointer` value (doing so would +make the copied value refer to the same `data` memory address as the original +value, which is a shallow copy). Instead, we initialize a new `UnsafePointer` to +allocate a new block of memory, and then copy over all the heap-allocated +values (this is a deep copy). + +Thus, when we copy an instance of `HeapArray`, each copy has its own value on +the heap, so changes to one value do not affect the other, as shown here: + +```mojo +fn copies(): + var a = HeapArray(2, 1) + var b = a # Calls the copy constructor + a.dump() # Prints [1, 1] + b.dump() # Prints [1, 1] + + b.append(2) # Changes the copied data + b.dump() # Prints [1, 1, 2] + a.dump() # Prints [1, 1] (the original did not change) +``` + +:::note + +In `HeapArray`, we must use the `__del__()` destructor to free the +heap-allocated data when the `HeapArray` lifetime ends, but Mojo automatically +destroys all other fields when their respective lifetimes end. We'll discuss +this destructor more in [Death of a value](/mojo/manual/lifecycle/death). + +::: + +If your type doesn't use any pointers for heap-allocated data, then writing the +constructor and copy constructor is all boilerplate code that you shouldn't +have to write. For most structs that don't manage memory explicitly, you can +just add the [`@value` decorator](/mojo/manual/decorators/value) to your +struct definition and Mojo will synthesize the `__init__()`, `__copyinit__()`, +and `__moveinit__()` methods. + +:::note + +Mojo also calls upon the copy constructor when a value is passed to a +function that takes the argument as +[`owned`](/mojo/manual/values/ownership#transfer-arguments-owned-and-) +*and* when the lifetime of the given value does *not* end at that point. If the +lifetime of the value does end there (usually indicated with the transfer +sigil `^`), then Mojo instead invokes the move constructor. + +::: + +## Move constructor + +Although copying values provides predictable behavior that matches Mojo's +[value semantics](/mojo/manual/values/value-semantics), copying some data +types can be a significant hit on performance. If you're familiar with +reference semantics, then the solution here might seem clear: instead of making +a copy when passing a value, share the value as a reference. And if the +original variable is no longer needed, nullify the original to avoid any +double-free or use-after-free errors. That's generally known as a move +operation: the memory block holding the data remains the same (the memory does +not actually move), but the pointer to that memory moves to a new variable. + +To support moving a value, implement the `__moveinit__()` method. The +`__moveinit__()` method performs a consuming move: it [transfers +ownership](/mojo/manual/values/ownership#transfer-arguments-owned-and-) +of a value from one variable to another when the original variable's lifetime +ends (also called a "destructive move"). + +:::note + +A move constructor is **not required** to transfer ownership of a +value. Unlike in Rust, transferring ownership is not always a move operation; +the move constructors are only part of the implementation for how Mojo +transfers ownership of a value. You can learn more in the section about +[ownership +transfer](/mojo/manual/values/ownership#transfer-arguments-owned-and-). + +::: + +When a move occurs, Mojo immediately invalidates the original +variable, preventing any access to it and disabling its destructor. Invalidating +the original variable is important to avoid memory errors on heap-allocated +data, such as use-after-free and double-free errors. + +Here's how to add the move constructor to the `HeapArray` example: + +```mojo +struct HeapArray: + var data: UnsafePointer[Int] + var size: Int + var cap: Int + + + fn __init__(out self, size: Int, val: Int): + self.size = size + self.cap = size * 2 + self.data = UnsafePointer[Int].alloc(self.size) + for i in range(self.size): + (self.data + i).init_pointee_copy(val) + + fn __copyinit__(out self, existing: Self): + # Deep-copy the existing value + self.size = existing.size + self.cap = existing.cap + self.data = UnsafePointer[Int].alloc(self.cap) + for i in range(self.size): + (self.data + i).init_pointee_copy(existing.data[i]) + # The lifetime of `existing` continues unchanged + + fn __moveinit__(out self, owned existing: Self): + print("move") + # Shallow copy the existing value + self.size = existing.size + self.cap = existing.cap + self.data = existing.data + # Then the lifetime of `existing` ends here, but + # Mojo does NOT call its destructor + + fn __del__(owned self): + # We must free the heap-allocated data, but + # Mojo knows how to destroy the other fields + for i in range(self.size): + (self.data + i).destroy_pointee() + self.data.free() + + fn append(inout self, val: Int): + # Update the array for demo purposes + if self.size < self.cap: + (self.data + self.size).init_pointee_copy(val) + self.size += 1 + else: + print("Out of bounds") + + fn dump(self): + # Print the array contents for demo purposes + print("[", end="") + for i in range(self.size): + if i > 0: + print(", ", end="") + print(self.data[i], end="") + print("]") +``` + +The critical feature of `__moveinit__()` is that it takes the incoming value as +`owned`, meaning this method gets unique ownership of the value. Moreover, +because this is a dunder method that Mojo calls only when performing a move +(during ownership transfer), the `existing` argument is guaranteed to be a +mutable reference to the original value, *not a copy* (unlike other methods that +may declare an argument as `owned`, but might receive the value as a copy if the +method is called without the [`^` transfer +sigil](/mojo/manual/values/ownership#transfer-arguments-owned-and-)). +That is, Mojo calls this move constructor *only* when the original variable's +lifetime actually ends at the point of transfer. + +Here's an example showing how to invoke the move constructor for `HeapArray`: + +```mojo +fn moves(): + var a = HeapArray(3, 1) + + a.dump() # Prints [1, 1, 1] + + var b = a^ # Prints "move"; the lifetime of `a` ends here + + b.dump() # Prints [1, 1, 1] + #a.dump() # ERROR: use of uninitialized value 'a' +``` + +Notice that `__moveinit__()` performs a shallow copy of the +existing field values (it copies the pointer, instead of allocating new memory +on the heap), which is what makes it useful for types with heap-allocated +values that are expensive to copy. + +To go further and ensure your type can never be copied, you can make it +"move-only" by implementing `__moveinit__()` and *excluding* `__copyinit__()`. +A move-only type can be passed to other variables and passed into functions +with any argument convention (`borrowed`, `inout`, and `owned`)—the only catch +is that you must use the `^` transfer sigil to end the lifetime of a +move-only type when assigning it to a new variable or when passing it as an +`owned` argument. + +:::note + +For types without heap-allocated fields, you get no real benefit from +the move constructor. Making copies of simple data types on the stack, like +integers, floats, and booleans, is very cheap. Yet, if you allow your type to +be copied, then there's generally no reason to disallow moves, so you can +synthesize both constructors by adding the [`@value` +decorator](/mojo/manual/decorators/value). + +::: + +## Simple value types {#value-decorator} + +Because copy and move constructors are opt-in, Mojo provides great control for +exotic use cases (such as for atomic values that should never be copied or +moved), but most structs are simple aggregations of other types that should be +easily copied and moved, and we don't want to write a lot of boilerplate +constructors for those simple value types. + +To solve this, Mojo provides the [`@value` +decorator](/mojo/manual/decorators/value), which synthesizes the +boilerplate code for the `__init__()`, `__copyinit__()`, and `__moveinit__()` +methods. + +For example, consider a simple struct like this: + +```mojo +@value +struct MyPet: + var name: String + var age: Int +``` + +Mojo sees the `@value` decorator and notices that you don't have a member-wise +initializer (a constructor with arguments for each field), a copy constructor, +or a move constructor, so it synthesizes them for you. The result is as if you +had actually written this: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, owned name: String, age: Int): + self.name = name^ + self.age = age + + fn __copyinit__(out self, existing: Self): + self.name = existing.name + self.age = existing.age + + fn __moveinit__(out self, owned existing: Self): + self.name = existing.name^ + self.age = existing.age +``` + +Mojo synthesizes each lifecycle method only when it doesn't exist, so +you can use `@value` and still define your own versions to override the default +behavior. For example, it is fairly common to use the default member-wise and +move constructor, but create a custom copy constructor. Another common pattern +is to use `@value` to create a member-wise constructor, and add overloads that +take different sets of arguments. For example, if you want to create +a `MyPet` struct without specifying an age, you could add an overloaded +constructor: + +```mojo +@value +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, owned name: String): + self.name = name^ + self.age = 0 + +``` + +Note that this overloaded constructor **doesn't** prevent the `@value` decorator +from synthesizing the member-wise constructor. To override this default +constructor, you'd need to add a constructor with the same signature as the +default member-wise constructor. + +Something you can see in this code that we didn't mention yet is that the +`__init__()` method takes all arguments as `owned`, because the constructor +must take ownership to store each value. This is a useful micro-optimization +and enables the use of move-only types. Trivial types like `Int` are also +passed as `owned`, but because ownership doesn't mean anything for integers, we +can elide that declaration and the transfer sigil (`^`) for simplicity. The +transfer operator is also just a formality in this case, because, even if it's +not used with `self.name = name^`, the Mojo compiler will notice that `name` is +last used here and convert this assignment into a move, instead of a +copy+delete. + +:::note + +If your type contains any move-only fields, Mojo will not generate +the copy constructor because it cannot copy those fields. Further, the `@value` +decorator won't work at all if any of your members are neither copyable nor +movable. For example, if you have something like `Atomic` in your struct, then +it probably isn't a true value type, and you don't want the copy/move +constructors anyway. + +Also notice that the `MyPet` struct above doesn't include the `__del__()` +destructor (the `@value` decorator does not synthesize this), because Mojo +doesn't need it to destroy fields, as discussed in [Death of a +value](/mojo/manual/lifecycle/death) + +::: + +## Trivial types + +So far, we've talked about values that live in memory, which means they have an +identity (an address) that can be passed around among functions (passed "by +reference"). This is great for most types, and it's a safe default for large +objects with expensive copy operations. However, it's inefficient for tiny +things like a single integer or floating point number. We call these types +"trivial" because they are just "bags of bits" that should be copied, moved, +and destroyed without invoking any custom lifecycle methods. + +Trivial types are the most common types that surround us, and from a language +perspective, Mojo doesn’t need special support for these written in a struct. +Usually, these values are so tiny that they should be passed around in CPU +registers, not indirectly through memory. + +As such, Mojo provides a struct decorator to declare these types of values: +`@register_passable("trivial")`. This decorator tells Mojo that the type should +be copyable and movable but that it has no user-defined logic (no lifecycle +methods) for doing this. It also tells Mojo to pass the value in CPU registers +whenever possible, which has clear performance benefits. + +You'll see this decorator on types like `Int` in the standard library: + +```mojo +@register_passable("trivial") +struct Int: + var value: __mlir_type.index + + fn __init__(value: __mlir_type.index) -> Int: + return Self {value: value} + ... +``` + +We expect to use this decorator pervasively on Mojo standard library types, but +it is safe to ignore for general application-level code. + +For more information, see the [`@register_passable` +documentation](/mojo/manual/decorators/register-passable). + +:::note TODO + +This decorator is due for reconsideration. Lack of custom +copy/move/destroy logic and "passability in a register" are orthogonal concerns +and should be split. This former logic should be subsumed into a more general +`@value("trivial")` decorator, which is orthogonal from `@register_passable`. + +::: diff --git a/docs/manual/parameters/index.ipynb b/docs/manual/parameters/index.ipynb deleted file mode 100644 index 358f846ff3..0000000000 --- a/docs/manual/parameters/index.ipynb +++ /dev/null @@ -1,1908 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: \"Parameterization: compile-time metaprogramming\"\n", - "description: An introduction to parameters and compile-time metaprogramming.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Many languages have facilities for _metaprogramming_: that is, for writing code that generates or modifies code. Python has facilities for dynamic metaprogramming: features like decorators, metaclasses, and many more. These features make Python very flexible and productive, but since they're dynamic, they come with runtime overhead. Other languages have static or compile-time metaprogramming features, like C preprocessor macros and C++ templates. These can be limiting and hard to use.\n", - "\n", - "To support Modular's work in AI, Mojo aims to provide powerful, easy-to-use metaprogramming with zero runtime cost. This compile-time metaprogramming uses the same language as runtime programs, so you don't have to learn a new language—just a few new features.\n", - "\n", - "The main new feature is _parameters_. You can think of a parameter as a compile-time variable that becomes a runtime constant. This usage of \"parameter\" is probably different from what you're used to from other languages, where \"parameter\" and \"argument\" are often used interchangeably. In Mojo, \"parameter\" and \"parameter expression\" refer to compile-time values, and \"argument\" and \"expression\" refer to runtime values. \n", - "\n", - "In Mojo, you can add parameters to a struct or function. You can also define \n", - "named parameter expressions—aliases—that you can use as runtime constants." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Parameterized functions\n", - "\n", - "To define a _parameterized function_, add parameters in square brackets ahead\n", - "of the argument list. Each parameter is formatted just like an argument: a \n", - "parameter name, followed by a colon and a type (which is required). In the\n", - "following example, the function has a single parameter, `count` of type `Int`. " - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "fn repeat[count: Int](msg: String):\n", - " @parameter\n", - " for i in range(count):\n", - " print(msg)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The [`@parameter`](/mojo/manual/decorators/parameter) directive shown here \n", - "causes the `for` loop to be evaluated at compile time. The directive only works\n", - "if the loop limits are compile-time constants. Since `count` is a parameter,\n", - "`range(count)` can be calculated at compile time.\n", - "\n", - "Calling a parameterized function, you provide values for the parameters, just \n", - "like function arguments: " - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello\n", - "Hello\n", - "Hello\n" - ] - } - ], - "source": [ - "repeat[3](\"Hello\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " \n", - " The compiler resolves the parameter values during compilation, and creates a\n", - " concrete version of the `repeat[]()` function for each unique parameter value.\n", - " After resolving the parameter values and unrolling the loop, the `repeat[3]()`\n", - " function would be roughly equivalent to this:\n", - "\n", - "```mojo\n", - "fn repeat_3(msg: String):\n", - " print(msg)\n", - " print(msg)\n", - " print(msg)\n", - "```\n", - "\n", - ":::note\n", - "\n", - "This doesn't represent actual code generated by the compiler. By the\n", - "time parameters are resolved, Mojo code has already been transformed to an\n", - "intermediate representation in [MLIR](https://mlir.llvm.org/).\n", - "\n", - ":::\n", - "\n", - "If the compiler can't resolve all parameter values to constant values, \n", - "compilation fails." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Parameters and generics\n", - "\n", - "\"Generics\" refers to functions that can act on multiple types of values, or \n", - "containers that can hold multiple types of values. For example, \n", - "[`List`](/mojo/stdlib/collections/list/List), can hold\n", - "different types of values, so you can have a list of `Int` values, or\n", - "a list of `String` values).\n", - "\n", - "In Mojo, generics use parameters to specify types. For example, `List`\n", - "takes a type parameter, so a vector of integers is written `List[Int]`.\n", - "So all generics use parameters, but **not** everything that uses parameters is a\n", - "generic. \n", - "\n", - "For example, the `repeat[]()` function in the previous section includes \n", - "parameter of type `Int`, and an argument of type `String`. It's parameterized,\n", - "but not generic. A generic function or struct is parameterized on _type_. For\n", - "example, we could rewrite `repeat[]()` to take any type of argument that\n", - "conforms to the [`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait: " - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "42\n", - "42\n" - ] - } - ], - "source": [ - "fn repeat[MsgType: Stringable, count: Int](msg: MsgType):\n", - " @parameter\n", - " for i in range(count):\n", - " print(str(msg))\n", - "\n", - "# Must use keyword parameter for `count`\n", - "repeat[count=2](42)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This updated function takes any `Stringable` type, so you can pass it an `Int`,\n", - "`String`, or `Bool` value.\n", - "\n", - "You can't pass the `count` as a positional keyword without also specifying `MsgType`.\n", - "You can put `//` after `MsgType` to specify that it's always inferred by the argument. Now\n", - "you can pass the following parameter `count` positionally:" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "42\n", - "42\n" - ] - } - ], - "source": [ - "fn repeat[MsgType: Stringable, //, count: Int](msg: MsgType):\n", - " @parameter\n", - " for i in range(count):\n", - " print(str(msg))\n", - "\n", - "# MsgType is always inferred, so first positional keyword `2` is passed to `count`\n", - "repeat[2](42)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "Mojo's support for generics is still early. You can write generic functions like\n", - "this using traits and parameters. You can also write generic collections like\n", - "`List` and `Dict`. If you're interested in learning how these types work, you\n", - "can find the source code for the standard library collection types \n", - "[on GitHub](https://github.com/modularml/mojo/blob/nightly/stdlib/src/collections/)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Parameterized structs\n", - "\n", - "You can also add parameters to structs. You can use parameterized structs to\n", - "build generic collections. For example, a generic array type might include code\n", - "like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "from memory import UnsafePointer\n", - "\n", - "struct GenericArray[ElementType: CollectionElement]:\n", - " var data: UnsafePointer[ElementType]\n", - " var size: Int\n", - "\n", - " fn __init__(out self, *elements: ElementType):\n", - " self.size = len(elements)\n", - " self.data = UnsafePointer[ElementType].alloc(self.size)\n", - " for i in range(self.size):\n", - " (self.data + i).init_pointee_move(elements[i])\n", - "\n", - " fn __del__(owned self):\n", - " for i in range(self.size):\n", - " (self.data + i).destroy_pointee()\n", - " self.data.free()\n", - "\n", - " fn __getitem__(self, i: Int) raises -> ref [self] ElementType:\n", - " if (i < self.size):\n", - " return self.data[i]\n", - " else:\n", - " raise Error(\"Out of bounds\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This struct has a single parameter, `ElementType`, which is a placeholder for\n", - "the data type you want to store in the array, sometimes called a _type\n", - "parameter_. `ElementType` is typed as\n", - "[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement), which is a\n", - "[trait](/mojo/manual/traits) representing any type that can be copied and moved.\n", - "\n", - "As with parameterized functions, you need to pass in parameter values when you\n", - "use a parameterized struct. In this case, when you create an instance of \n", - "`GenericArray`, you need to specify the type you want to store, like `Int`, or\n", - "`Float64`. (This is a little confusing, because the _parameter value_ you're\n", - "passing in this case is a _type_. That's OK: a Mojo type is a valid compile-time\n", - "value.)\n", - "\n", - "You'll see that `ElementType` is used throughout the struct where you'd usually see a \n", - "type name. For example, as the formal type for the `elements` in the \n", - "constructor, and the return type of the `__getitem__()` method.\n", - "\n", - "Here's an example of using `GenericArray`:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 2 3 4 " - ] - } - ], - "source": [ - "var array = GenericArray[Int](1, 2, 3, 4)\n", - "for i in range(array.size):\n", - " print(array[i], end=\" \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A parameterized struct can use the `Self` type to represent a concrete instance\n", - "of the struct (that is, with all its parameters specified). For example, you\n", - "could add a static factory method to `GenericArray` with the following\n", - "signature:\n", - "\n", - "```mojo\n", - "struct GenericArray[ElementType: CollectionElement]:\n", - " ...\n", - "\n", - " @staticmethod\n", - " fn splat(count: Int, value: ElementType) -> Self:\n", - " # Create a new array with count instances of the given value\n", - "```\n", - "\n", - "Here, `Self` is equivalent to writing `GenericArray[ElementType]`. That is, you\n", - "can call the `splat()` method like this:\n", - "\n", - "```mojo\n", - "GenericArray[Float64].splat(8, 0)\n", - "```\n", - "\n", - "The method returns an instance of `GenericArray[Float64]`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Conditional conformance\n", - "\n", - "When creating a generic struct, you might want to define some methods that\n", - "require extra features. For example, consider a collection like `GenericArray`\n", - "that holds instances of `CollectionElement`. The `CollectionElement` trait\n", - "only requires that the stored data type be copyable and movable. This\n", - "imposes a lot of limitations: you can't implement a `sort()` method because\n", - "you can't guarantee that the stored type supports the comparison operators; you can't\n", - "write a useful `__str__()` or `__repr__()` dunder method because you can't\n", - "guarantee that the stored type supports conversion to a string.\n", - "\n", - "The answer to these issues is _conditional conformance_, which lets you define a \n", - "method that requires additional features. You do this by defining the `self`\n", - "value that has a more specific bound on one or more of its parameters. \n", - "\n", - "For example, the following code defines a `Container` type that holds an\n", - "instance of `CollectionElement`. It also defines a `__str__()` method that can \n", - "only be called if the stored `ElementType` conforms to \n", - "`StringableCollectionElement`:" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n", - "Hello\n" - ] - } - ], - "source": [ - "@value\n", - "struct Container[ElementType: CollectionElement]:\n", - " var element: ElementType\n", - "\n", - " def __str__[StrElementType: StringableCollectionElement, //](\n", - " self: Container[StrElementType]) -> String:\n", - " return str(self.element)\n", - "\n", - "def use_container():\n", - " float_container = Container(5)\n", - " string_container = Container(\"Hello\")\n", - " print(float_container.__str__())\n", - " print(string_container.__str__())\n", - "\n", - "use_container()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note the signature of the `__str__()` method, which declares the `self` argument\n", - "with a more specific type. Specifically, it declares that it takes a `Container`\n", - "with an `ElementType` that conforms to the `StringableCollectionElement` trait.\n", - "\n", - "```mojo\n", - "def __str__[StrElementType: StringableCollectionElement, //](\n", - " self: Container[StrElementType]) -> String:\n", - "```\n", - "\n", - "This trait must be a superset of `ElementType`'s original trait: for example,\n", - "`StringableCollectionElement` inherits from `CollectionElement`, so it includes\n", - "all of requirements of the original trait.\n", - "\n", - "Note that the `use_container()` function calls the `__str__()` method directly,\n", - "rather than calling `str(float_container)`. One current limitation of\n", - "conditional conformance is that Mojo can't recognize the struct\n", - "`Container[Int]` as conforming to `Stringable`, even though the `__str__()`\n", - "method is implemented for any `ElementType` that's also `Stringable`." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Case study: the SIMD type\n", - "\n", - "For a real-world example of a parameterized type, let's look at the \n", - "[`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type from Mojo's standard library.\n", - "\n", - "[Single instruction, multiple data (SIMD)](https://en.wikipedia.org/wiki/Single_instruction,_multiple_data) is a parallel processing technology built into many modern CPUs,\n", - "GPUs, and custom accelerators. SIMD allows you to perform a single operation on\n", - "multiple pieces of data at once. For example, if you want to take the square \n", - "root of each element in an array, you can use SIMD to parallelize the work. \n", - "\n", - "Processors implement SIMD using low-level vector registers in hardware that hold\n", - "multiple instances of a scalar data type. In order to use the SIMD instructions\n", - "on these processors, the data must be shaped into the proper SIMD width\n", - "(data type) and length (vector size). Processors may support 512-bit or\n", - "longer SIMD vectors, and support many data types from 8-bit integers to 64-bit \n", - "floating point numbers, so it's not practical to define all of the possible SIMD\n", - "variations. \n", - "\n", - "Mojo's [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type (defined as a struct)\n", - "exposes the common SIMD operations through its methods, and makes the SIMD data type\n", - "and size values parametric. This allows you to directly map your data to the \n", - "SIMD vectors on any hardware.\n", - "\n", - "Here's a cut-down (non-functional) version of Mojo's `SIMD` type definition:\n", - "\n", - "```mojo\n", - "struct SIMD[type: DType, size: Int]:\n", - " var value: … # Some low-level MLIR stuff here\n", - "\n", - " # Create a new SIMD from a number of scalars\n", - " fn __init__(out self, *elems: SIMD[type, 1]): ...\n", - "\n", - " # Fill a SIMD with a duplicated scalar value.\n", - " @staticmethod\n", - " fn splat(x: SIMD[type, 1]) -> SIMD[type, size]: ...\n", - "\n", - " # Cast the elements of the SIMD to a different elt type.\n", - " fn cast[target: DType](self) -> SIMD[target, size]: ...\n", - "\n", - " # Many standard operators are supported.\n", - " fn __add__(self, rhs: Self) -> Self: ...\n", - "```\n", - "\n", - "So you can create and use a SIMD vector like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 4 9 16 " - ] - } - ], - "source": [ - "var vector = SIMD[DType.int16, 4](1, 2, 3, 4)\n", - "vector = vector * vector\n", - "for i in range(4):\n", - " print(vector[i], end=\" \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As you can see, a simple arithmetic operator like `*` applied to a pair of \n", - "`SIMD` vector operates on the corresponding elements in each vector.\n", - "\n", - "Defining each SIMD variant with parameters is great for code reuse because the\n", - "`SIMD` type can express all the different vector variants statically, instead of\n", - "requiring the language to pre-define every variant.\n", - "\n", - "Because `SIMD` is a parameterized type, the `self` argument in its functions\n", - "carries those parameters—the full type name is `SIMD[type, size]`. Although\n", - "it's valid to write this out (as shown in the return type of `splat()`), this\n", - "can be verbose, so we recommend using the `Self` type (from\n", - "[PEP673](https://peps.python.org/pep-0673/)) like the `__add__` example does." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Overloading on parameters\n", - "\n", - "Functions and methods can be overloaded on their parameter signatures. The\n", - "overload resolution logic filters for candidates according to the following\n", - "rules, in order of precedence:\n", - "\n", - "1) Candidates with the minimal number of implicit conversions (in both arguments\n", - "and parameters).\n", - "2) Candidates without variadic arguments.\n", - "3) Candidates without variadic parameters.\n", - "4) Candidates with the shortest parameter signature.\n", - "5) Non-`@staticmethod` candidates (over `@staticmethod` ones, if available). \n", - "\n", - "If there is more than one candidate after applying these rules, the overload\n", - "resolution fails. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "foo[x: MyInt, a: Int]()\n", - "bar[a: Int](b: Int)\n", - "bar[*a: Int](b: Int)\n" - ] - } - ], - "source": [ - "@register_passable(\"trivial\")\n", - "struct MyInt:\n", - " \"\"\"A type that is implicitly convertible to `Int`.\"\"\"\n", - " var value: Int\n", - "\n", - " @always_inline(\"nodebug\")\n", - " fn __init__(out self, _a: Int):\n", - " self.value = _a\n", - "\n", - "fn foo[x: MyInt, a: Int]():\n", - " print(\"foo[x: MyInt, a: Int]()\")\n", - "\n", - "fn foo[x: MyInt, y: MyInt]():\n", - " print(\"foo[x: MyInt, y: MyInt]()\")\n", - "\n", - "fn bar[a: Int](b: Int):\n", - " print(\"bar[a: Int](b: Int)\")\n", - "\n", - "fn bar[a: Int](*b: Int):\n", - " print(\"bar[a: Int](*b: Int)\")\n", - "\n", - "fn bar[*a: Int](b: Int):\n", - " print(\"bar[*a: Int](b: Int)\")\n", - "\n", - "fn parameter_overloads[a: Int, b: Int, x: MyInt]():\n", - " # `foo[x: MyInt, a: Int]()` is called because it requires no implicit\n", - " # conversions, whereas `foo[x: MyInt, y: MyInt]()` requires one.\n", - " foo[x, a]()\n", - "\n", - " # `bar[a: Int](b: Int)` is called because it does not have variadic\n", - " # arguments or parameters.\n", - " bar[a](b)\n", - "\n", - " # `bar[*a: Int](b: Int)` is called because it has variadic parameters.\n", - " bar[a, a, a](b)\n", - "\n", - "parameter_overloads[1, 2, MyInt(3)]()\n", - "\n", - "struct MyStruct:\n", - " fn __init__(out self):\n", - " pass\n", - "\n", - " fn foo(inout self):\n", - " print(\"calling instance method\")\n", - "\n", - " @staticmethod\n", - " fn foo():\n", - " print(\"calling static method\")\n", - "\n", - "fn test_static_overload():\n", - " var a = MyStruct()\n", - " # `foo(inout self)` takes precedence over a static method.\n", - " a.foo()" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Using parameterized types and functions\n", - "\n", - "You can use parametric types and functions by passing values to the\n", - "parameters in square brackets. For example, for the `SIMD` type above, `type`\n", - "specifies the data type and `size` specifies the length of the SIMD vector (it\n", - "must be a power of 2):" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "small_vec type: float32 length: 4\n", - "bigger_vec2 type: float32 length: 32\n" - ] - } - ], - "source": [ - "# Make a vector of 4 floats.\n", - "var small_vec = SIMD[DType.float32, 4](1.0, 2.0, 3.0, 4.0)\n", - "\n", - "# Make a big vector containing 1.0 in float16 format.\n", - "var big_vec = SIMD[DType.float16, 32](1.0)\n", - "\n", - "# Do some math and convert the elements to float32.\n", - "var bigger_vec = (big_vec+big_vec).cast[DType.float32]()\n", - "\n", - "# You can write types out explicitly if you want of course.\n", - "var bigger_vec2 : SIMD[DType.float32, 32] = bigger_vec\n", - "\n", - "print('small_vec type:', small_vec.element_type, 'length:', len(small_vec))\n", - "print('bigger_vec2 type:', bigger_vec2.element_type, 'length:', len(bigger_vec2))" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that the `cast()` method also needs a parameter to specify the type you\n", - "want from the cast (the method definition above expects a `target` parametric\n", - "value). Thus, just as the `SIMD` struct is a generic type definition, the\n", - "`cast()` method is a generic method definition. At compile time, the compiler\n", - "creates a concrete version of the `cast()` method with the target parameter\n", - "bound to `DType.float32`.\n", - "\n", - "The code above shows the use of concrete types (that is, the parameters are all\n", - "bound to known values). But the major power of parameters comes from the\n", - "ability to define parametric algorithms and types (code that uses the parameter\n", - "values). For example, here's how to define a parametric algorithm with `SIMD`\n", - "that is type- and width-agnostic:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0.154296875, 0.154296875, 0.154296875, 0.154296875]\n" - ] - } - ], - "source": [ - "from math import sqrt\n", - "\n", - "fn rsqrt[dt: DType, width: Int](x: SIMD[dt, width]) -> SIMD[dt, width]:\n", - " return 1 / sqrt(x)\n", - "\n", - "var v = SIMD[DType.float16, 4](42)\n", - "print(rsqrt(v))" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that the `x` argument is actually a `SIMD` type based on the function\n", - "parameters. The runtime program can use the value of the parameters, because the\n", - "parameters are resolved at compile-time before they are needed by the runtime\n", - "program (but compile-time parameter expressions cannot use runtime values).\n", - "\n", - "### Parameter inference\n", - "\n", - "The Mojo compiler can often _infer_ parameter values, so you don't always have\n", - "to specify them. For example, you can call the `rsqrt()` function defined above\n", - "without any parameters:\n" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0.174072265625, 0.174072265625, 0.174072265625, 0.174072265625]\n" - ] - } - ], - "source": [ - "var v = SIMD[DType.float16, 4](33)\n", - "print(rsqrt(v))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "The compiler infers its parameters based on the parametric `v`\n", - "value passed into it, as if you wrote `rsqrt[DType.float16, 4](v)` explicitly.\n", - "\n", - "Mojo can also infer the values of struct parameters from the arguments passed to \n", - "a constructor or static method.\n", - "\n", - "For example, consider the following struct:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct One[Type: StringableCollectionElement]:\n", - " var value: Type\n", - "\n", - " fn __init__(out self, value: Type):\n", - " self.value = value\n", - "\n", - "def use_one():\n", - " s1 = One(123)\n", - " s2 = One(\"Hello\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that you can create an instance of `One` without specifying the `Type`\n", - "parameter—Mojo can infer it from the `value` argument.\n", - "\n", - "You can also infer parameters from a parameterized type passed to a constructor\n", - "or static method:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "infer me\n", - "🔥 1 2\n" - ] - } - ], - "source": [ - "struct Two[Type: StringableCollectionElement]:\n", - " var val1: Type\n", - " var val2: Type\n", - "\n", - " fn __init__(out self, one: One[Type], another: One[Type]):\n", - " self.val1 = one.value\n", - " self.val2 = another.value\n", - " print(str(self.val1), str(self.val2))\n", - "\n", - " @staticmethod\n", - " fn fire(thing1: One[Type], thing2: One[Type]):\n", - " print(\"🔥\", str(thing1.value), str(thing2.value))\n", - "\n", - "def use_two():\n", - " s3 = Two(One(\"infer\"), One(\"me\"))\n", - " Two.fire(One(1), One(2))\n", - "\n", - "use_two()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "`Two` takes a `Type` parameter, and its constructor takes values of type\n", - "`One[Type]`. When constructing an instance of `Two`, you don't need to specify\n", - "the `Type` parameter, since it can be inferred from the arguments.\n", - "\n", - "Similarly, the static `fire()` method takes values of type `One[Type]`, so Mojo\n", - "can infer the `Type` value at compile time.\n", - "\n", - ":::note\n", - "\n", - "If you're familiar with C++, you may recognize this as similar to Class Template\n", - "Argument Deduction (CTAD).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Optional parameters and keyword parameters\n", - "\n", - "Just as you can specify [optional\n", - "arguments](/mojo/manual/functions#optional-arguments) in function signatures,\n", - "you can also define an optional _parameter_ by giving it a default value.\n", - "\n", - "You can also pass parameters by keyword, just like you can use \n", - "[keyword arguments](/mojo/manual/functions#keyword-arguments).\n", - "For a function or struct with multiple optional parameters, using keywords\n", - "allows you to pass only the parameters you want to specify, regardless of\n", - "their position in the function signature. \n", - "\n", - "For example, here's a function with two parameters, each with a default value:" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [], - "source": [ - "fn speak[a: Int = 3, msg: StringLiteral = \"woof\"]():\n", - " print(msg, a)\n", - "\n", - "fn use_defaults() raises:\n", - " speak() # prints 'woof 3'\n", - " speak[5]() # prints 'woof 5'\n", - " speak[7, \"meow\"]() # prints 'meow 7'\n", - " speak[msg=\"baaa\"]() # prints 'baaa 3'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Recall that when a parametric function is called, Mojo can infer the parameter values.\n", - "That is, it can use the parameter values attached to an argument value (see the `sqrt[]()`\n", - "example above). If the parametric function also has a default value defined,\n", - "then the inferred parameter type takes precedence.\n", - "\n", - "For example, in the following code, we update the parametric `speak[]()` function\n", - "to take an argument with a parametric type. Although the function has a default\n", - "parameter value for `a`, Mojo instead uses the inferred `a` parameter value\n", - "from the `bar` argument (as written, the default `a` value can never be used,\n", - "but this is just for demonstration purposes):" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct Bar[v: Int]:\n", - " pass\n", - "\n", - "fn speak[a: Int = 3, msg: StringLiteral = \"woof\"](bar: Bar[a]):\n", - " print(msg, a)\n", - "\n", - "fn use_inferred():\n", - " speak(Bar[9]()) # prints 'woof 9'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As mentioned above, you can also use optional parameters and keyword \n", - "parameters in a struct:" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [], - "source": [ - "struct KwParamStruct[greeting: String = \"Hello\", name: String = \"🔥mojo🔥\"]:\n", - " fn __init__(out self):\n", - " print(greeting, name)\n", - "\n", - "fn use_kw_params():\n", - " var a = KwParamStruct[]() # prints 'Hello 🔥mojo🔥'\n", - " var b = KwParamStruct[name=\"World\"]() # prints 'Hello World'\n", - " var c = KwParamStruct[greeting=\"Hola\"]() # prints 'Hola 🔥mojo🔥'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "Mojo supports positional-only and keyword-only parameters, following the same\n", - "rules as [positional-only and keyword-only\n", - "arguments](/mojo/manual/functions#positional-only-and-keyword-only-arguments).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Infer-only parameters\n", - "\n", - "Sometimes you need to declare functions where parameters depend on other\n", - "parameters. Because the signature is processed left to right, a parameter can\n", - "only _depend_ on a parameter earlier in the parameter list. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Value: 2.2000000000000002\n", - "Value is floating-point: True\n" - ] - } - ], - "source": [ - "fn dependent_type[dtype: DType, value: Scalar[dtype]]():\n", - " print(\"Value: \", value)\n", - " print(\"Value is floating-point: \", dtype.is_floating_point())\n", - "\n", - "dependent_type[DType.float64, Float64(2.2)]()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can't reverse the position of the `dtype` and `value` parameters, because\n", - "`value` depends on `dtype`. However, because `dtype` is a required parameter,\n", - "you can't leave it out of the parameter list and let Mojo infer it from `value`:\n", - "\n", - "```mojo\n", - "dependent_type[Float64(2.2)]() # Error!\n", - "```\n", - "\n", - "Infer-only parameters are a special class of parameters that are **always** \n", - "inferred from context. Infer-only parameters are placed at the **beginning** of\n", - "the parameter list, set off from other parameters by the `//` sigil:\n", - "\n", - "```mojo\n", - "fn example[type: CollectionElement, //, list: List[type]]()\n", - "```\n", - "\n", - "Transforming `dtype` into an infer-only parameter solves this problem:" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Value: 2.2000000000000002\n", - "Value is floating-point: True\n" - ] - } - ], - "source": [ - "fn dependent_type[dtype: DType, //, value: Scalar[dtype]]():\n", - " print(\"Value: \", value)\n", - " print(\"Value is floating-point: \", dtype.is_floating_point())\n", - "\n", - "dependent_type[Float64(2.2)]()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Because infer-only parameters are declared at the beginning of the parameter\n", - "list, other parameters can depend on them, and the compiler will always attempt\n", - "to infer the infer-only values from bound parameters or arguments.\n", - "\n", - "If the compiler can't infer the value of an infer-only parameter, compilation\n", - "fails." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Variadic parameters\n", - "\n", - "Mojo also supports variadic parameters, similar to \n", - "[Variadic arguments](/mojo/manual/functions#variadic-arguments):" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyTensor[*dimensions: Int]:\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Variadic parameters currently have some limitations that variadic arguments don't have:\n", - "\n", - "- Variadic parameters must be homogeneous—that is, all the values must be the\n", - " same type. \n", - " \n", - "- The parameter type must be register-passable.\n", - "\n", - "- The parameter values aren't automatically projected into a `VariadicList`, so you\n", - " need to construct the list explicitly:" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [], - "source": [ - "fn sum_params[*values: Int]() -> Int:\n", - " alias list = VariadicList(values)\n", - " var sum = 0\n", - " for v in list:\n", - " sum += v\n", - " return sum" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Variadic keyword parameters (for example, `**kwparams`) are\n", - "not supported yet." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Parameter expressions are just Mojo code\n", - "\n", - "A parameter expression is any code expression (such as `a+b`) that occurs where\n", - "a parameter is expected. Parameter expressions support operators and function\n", - "calls, just like runtime code, and all parameter types use the same type\n", - "system as the runtime program (such as `Int` and `DType`).\n", - "\n", - "Because parameter expressions use the same grammar and types as runtime\n", - "Mojo code, you can use many \n", - "[\"dependent type\"](https://en.wikipedia.org/wiki/Dependent_type) features. For\n", - "example, you might want to define a helper function to concatenate two SIMD\n", - "vectors:" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "result type: float32 length: 4\n" - ] - } - ], - "source": [ - "fn concat[ty: DType, len1: Int, len2: Int](\n", - " lhs: SIMD[ty, len1], rhs: SIMD[ty, len2]) -> SIMD[ty, len1+len2]:\n", - "\n", - " var result = SIMD[ty, len1 + len2]()\n", - " for i in range(len1):\n", - " result[i] = SIMD[ty, 1](lhs[i])\n", - " for j in range(len2):\n", - " result[len1 + j] = SIMD[ty, 1](rhs[j])\n", - " return result\n", - "\n", - "var a = SIMD[DType.float32, 2](1, 2)\n", - "var x = concat(a, a)\n", - "\n", - "print('result type:', x.element_type, 'length:', len(x))" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that the resulting length is the sum of the input vector lengths, and this is expressed with a simple `+` operation. \n", - "\n", - "### Powerful compile-time programming\n", - "\n", - "While simple expressions are useful, sometimes you want to write imperative\n", - "compile-time logic with control flow. You can even do compile-time recursion.\n", - "For instance, here is an example \"tree reduction\" algorithm that sums all\n", - "elements of a vector recursively into a scalar:" - ] - }, - { - "cell_type": "code", - "execution_count": 62, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3, 4]\n", - "Elements sum: 10\n" - ] - } - ], - "source": [ - "fn slice[ty: DType, new_size: Int, size: Int](\n", - " x: SIMD[ty, size], offset: Int) -> SIMD[ty, new_size]:\n", - " var result = SIMD[ty, new_size]()\n", - " for i in range(new_size):\n", - " result[i] = SIMD[ty, 1](x[i + offset])\n", - " return result\n", - "\n", - "fn reduce_add[ty: DType, size: Int](x: SIMD[ty, size]) -> Int:\n", - " @parameter\n", - " if size == 1:\n", - " return int(x[0])\n", - " elif size == 2:\n", - " return int(x[0]) + int(x[1])\n", - "\n", - " # Extract the top/bottom halves, add them, sum the elements.\n", - " alias half_size = size // 2\n", - " var lhs = slice[ty, half_size, size](x, 0)\n", - " var rhs = slice[ty, half_size, size](x, half_size)\n", - " return reduce_add[ty, half_size](lhs + rhs)\n", - "\n", - "var x = SIMD[DType.index, 4](1, 2, 3, 4)\n", - "print(x)\n", - "print(\"Elements sum:\", reduce_add(x))" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This makes use of the [`@parameter`](/mojo/manual/decorators/parameter) decorator to create a parametric if condition, which is an `if` statement that\n", - "runs at compile-time. It requires that its condition be a valid parameter\n", - "expression, and ensures that only the live branch of the `if` statement is\n", - "compiled into the program. (This is similar to use of the `@parameter` decorator\n", - "with a `for` loop shown earlier.)\n", - "\n", - "## Mojo types are just parameter expressions\n", - "\n", - "While we've shown how you can use parameter expressions within types, type\n", - "annotations can themselves be arbitrary expressions (just like in Python).\n", - "Types in Mojo have a special metatype type, allowing type-parametric algorithms\n", - "and functions to be defined. \n", - "\n", - "For example, we can create a simplified `Array` that supports arbitrary types of\n", - "elements (via the `AnyTrivialRegType` parameter):" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from memory import UnsafePointer\n", - "\n", - "struct Array[T: AnyTrivialRegType]:\n", - " var data: UnsafePointer[T]\n", - " var size: Int\n", - "\n", - " fn __init__(out self, size: Int, value: T):\n", - " self.size = size\n", - " self.data = UnsafePointer[T].alloc(self.size)\n", - " for i in range(self.size):\n", - " (self.data + i).init_pointee_copy(value)\n", - "\n", - " fn __getitem__(self, i: Int) -> T:\n", - " return self.data[i]\n", - "\n", - " fn __del__(owned self):\n", - " for i in range(self.size):\n", - " (self.data + i).destroy_pointee()\n", - " self.data.free()\n", - "\n", - "var v = Array[Float32](4, 3.14)\n", - "print(v[0], v[1], v[2], v[3])" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that the `T` parameter is being used as the formal type for the\n", - "`value` arguments and the return type of the `__getitem__()` function. \n", - "Parameters allow the `Array` type to provide different APIs based on the\n", - "different use-cases. \n", - "\n", - "There are many other cases that benefit from more advanced use of parameters.\n", - "For example, you can execute a closure N times in parallel, feeding in a value\n", - "from the context, like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "metadata": {}, - "outputs": [], - "source": [ - "fn parallelize[func: fn (Int) -> None](num_work_items: Int):\n", - " # Not actually parallel: see the 'algorithm' module for real implementation.\n", - " for i in range(num_work_items):\n", - " func(i)" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Another example where this is important is with variadic generics, where an\n", - "algorithm or data structure may need to be defined over a list of heterogeneous\n", - "types such as for a tuple. Right now, this is not fully supported in Mojo and \n", - "requires writing some MLIR by hand. In the future, this will be possible in pure\n", - "Mojo." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## `alias`: named parameter expressions\n", - "\n", - "It is very common to want to *name* compile-time values. Whereas `var` defines a\n", - "runtime value, we need a way to define a\n", - "compile-time temporary value. For this, Mojo uses an `alias` declaration. \n", - "\n", - "For example, the [`DType`](/mojo/stdlib/builtin/dtype/DType) struct \n", - "implements a simple enum using aliases for the enumerators like this (the actual\n", - "`DType` implementation details vary a bit):\n", - "\n", - "```mojo\n", - "struct DType:\n", - " var value : UI8\n", - " alias invalid = DType(0)\n", - " alias bool = DType(1)\n", - " alias int8 = DType(2)\n", - " alias uint8 = DType(3)\n", - " alias int16 = DType(4)\n", - " alias int16 = DType(5)\n", - " ...\n", - " alias float32 = DType(15)\n", - "```\n", - "\n", - "This allows clients to use `DType.float32` as a parameter expression (which also\n", - "works as a runtime value) naturally. Note that this is invoking the\n", - "runtime constructor for `DType` at compile-time.\n", - "\n", - "Types are another common use for aliases. Because types are compile-time\n", - "expressions, it is handy to be able to do things like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "metadata": {}, - "outputs": [], - "source": [ - "alias Float16 = SIMD[DType.float16, 1]\n", - "alias UInt8 = SIMD[DType.uint8, 1]\n", - "\n", - "var x: Float16 = 0 # Float16 works like a \"typedef\"" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Like `var` variables, aliases obey scope, and you can use local aliases within\n", - "functions as you'd expect." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Fully-bound, partially-bound, and unbound types\n", - "\n", - "A parametric type with its parameters specified is said to be _fully-bound_. \n", - "That is, all of its parameters are bound to values. As mentioned before, you can\n", - "only instantiate a fully-bound type (sometimes called a _concrete type_).\n", - "\n", - "However, parametric types can be _unbound_ or _partially bound_ in some\n", - "contexts. For example, you can alias a partially-bound type to create a new type\n", - "that requires fewer parameters:\n" - ] - }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": {}, - "outputs": [], - "source": [ - "from collections import Dict\n", - "\n", - "alias StringKeyDict = Dict[String, _]\n", - "var b = StringKeyDict[UInt8]()\n", - "b[\"answer\"] = 42" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here, `StringKeyDict` is a type alias for a `Dict` that takes `String` keys. The\n", - "underscore `_` in the parameter list indicates that the second parameter,\n", - "`V` (the value type), is unbound.\n", - "You specify the `V` parameter later, when you use `StringKeyDict`.\n", - "\n", - "For example, given the following type:" - ] - }, - { - "cell_type": "code", - "execution_count": 70, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyType[s: String, i: Int, i2: Int, b: Bool = True]:\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "It can appear in code in the following forms:\n", - "\n", - "- _Fully bound_, with all of its parameters specified:\n", - "\n", - " ```mojo\n", - " MyType[\"Hello\", 3, 4, True]\n", - " ```\n", - "\n", - "- _Partially bound_, with *some but not all* of its parameters specified:\n", - "\n", - " ```mojo\n", - " MyType[\"Hola\", _, _, True]\n", - " ```\n", - "\n", - "- _Unbound_, with no parameters specified:\n", - "\n", - " ```mojo\n", - " MyType[_, _, _, _]\n", - " ```\n", - "\n", - "You can also use the star-underscore expression `*_` to unbind an arbitrary\n", - "number of positional parameters at the end of a parameter\n", - "list.\n", - "\n", - "```mojo\n", - "# These two types are equivalent\n", - "MyType[\"Hello\", *_]\n", - "MyType[\"Hello\", _, _, _]\n", - "```\n", - "\n", - "When a parameter is explicitly unbound with the `_` or `*_` expression, you\n", - "**must** specify a value for that parameter to use the type. Any default value\n", - "from the original type declaration is ignored.\n", - "\n", - "Partially-bound and unbound parametric types can be used in some contexts where\n", - "the missing (unbound) parameters will be supplied later—such as in \n", - "[aliases](#alias-named-parameter-expressions) and\n", - "[automatically parameterized functions](#automatic-parameterization-of-functions).\n", - "\n", - "### Omitted parameters\n", - "\n", - "Mojo also supports an alternate format for unbound parameter where the parameter\n", - "is simply omitted from the expression:\n", - "\n", - "```mojo\n", - "# Partially bound\n", - "MyType[\"Hi there\"]\n", - "# Unbound\n", - "MyType\n", - "```\n", - "\n", - "This format differs from the explicit unbinding syntax described above in that\n", - "the default values for omitted parameters are bound immediately. For example, \n", - "the following expressions are equivalent: \n", - "\n", - "```mojo\n", - "MyType[\"Hi there\"]\n", - "# equivalent to\n", - "MyType[\"Hi there\", _, _, True] # Uses the default value for `b`\n", - "```\n", - "\n", - ":::note \n", - "\n", - "This format is currently supported for backwards compatibility. We intend to\n", - "deprecate this format in the future in favor of the explicit unbinding syntax.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Automatic parameterization of functions\n", - "\n", - "Mojo supports \"automatic\" parameterization of functions. If a function \n", - "argument type is a \n", - "[partially-bound or unbound type](#fully-bound-partially-bound-and-unbound-types),\n", - "the unbound parameters are automatically added as input parameters on the \n", - "function. This is easier to understand with an example:" - ] - }, - { - "cell_type": "code", - "execution_count": 71, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "float64\n", - "4\n" - ] - } - ], - "source": [ - "fn print_params(vec: SIMD[*_]):\n", - " print(vec.type)\n", - " print(vec.size)\n", - "\n", - "var v = SIMD[DType.float64, 4](1.0, 2.0, 3.0, 4.0)\n", - "print_params(v)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the above example, the `print_params` function is automatically \n", - "parameterized. The `vec` argument takes an argument of type `SIMD[*_]`. This is\n", - "an [unbound parameterized\n", - "type](#fully-bound-partially-bound-and-unbound-types)—that is, it doesn't\n", - "specify any parameter values for the type. Mojo treats the unbound parameters\n", - "on `vec` as implicit parameters on the function. This is roughly equivalent to\n", - "the following code, which includes _explicit_ input parameters:" - ] - }, - { - "cell_type": "code", - "execution_count": 72, - "metadata": {}, - "outputs": [], - "source": [ - "fn print_params[t: DType, s: Int](vec: SIMD[t, s]):\n", - " print(vec.type)\n", - " print(vec.size)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "When you call `print_params()` you must pass it a concrete instance of the \n", - "`SIMD` type—that is, one with all of its parameters specified, like \n", - "`SIMD[DType.float64, 4]`. The Mojo compiler _infers_ the parameter \n", - "values from the input argument.\n", - "\n", - "With a manually parameterized function, you can access the input parameters by\n", - "name (for example, `t` and `s` in the previous example). For an\n", - "automatically parameterized function, you can access the parameters as\n", - "attributes on the argument (for example, `vec.type`). \n", - "\n", - "This ability to access a type's input parameters is not specific to \n", - "automatically parameterized functions, you can use it anywhere. You can access \n", - "the input parameters of a parameterized type as attributes on the type itself:" - ] - }, - { - "cell_type": "code", - "execution_count": 73, - "metadata": {}, - "outputs": [], - "source": [ - "fn on_type():\n", - " print(SIMD[DType.float32, 2].size) # prints 2" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Or as attributes on an _instance_ of the type:" - ] - }, - { - "cell_type": "code", - "execution_count": 74, - "metadata": {}, - "outputs": [], - "source": [ - "fn on_instance():\n", - " var x = SIMD[DType.int32, 2](4, 8)\n", - " print(x.type) # prints int32" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can even use this syntax in the function's signature to define a \n", - "function's arguments and return type based on an argument's parameters.\n", - "For example, if you want your function to take two SIMD vectors with the same\n", - "type and size, you can write code like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 0, 2, 0, 3, 0, 4, 0]\n" - ] - } - ], - "source": [ - "fn interleave(v1: SIMD, v2: __type_of(v1)) -> SIMD[v1.type, v1.size*2]:\n", - " var result = SIMD[v1.type, v1.size*2]()\n", - " for i in range(v1.size):\n", - " result[i*2] = SIMD[v1.type, 1](v1[i])\n", - " result[i*2+1] = SIMD[v1.type, 1](v2[i])\n", - " return result\n", - "\n", - "var a = SIMD[DType.int16, 4](1, 2, 3, 4)\n", - "var b = SIMD[DType.int16, 4](0, 0, 0, 0)\n", - "var c = interleave(a, b)\n", - "print(c)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As shown in the example, you can use the magic `__type_of(x)` call if you just want to match the type of an argument. In this case, it's more convenient and compact that writing the equivalent `SIMD[v1.type, v1.size]`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Automatic parameterization with partially-bound types\n", - "\n", - "Mojo also supports automatic parameterization: with [partially-bound\n", - "parameterized types](#fully-bound-partially-bound-and-unbound-types) (that is,\n", - "types with some but not all of the parameters specified).\n", - "\n", - "For example, suppose we have a `Fudge` struct with three parameters:" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct Fudge[sugar: Int, cream: Int, chocolate: Int = 7](Stringable):\n", - " fn __str__(self) -> String:\n", - " return str(\"Fudge (\") + str(sugar) + \",\" +\n", - " str(cream) + \",\" + str(chocolate) + \")\"\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can write a function that takes a `Fudge` argument with just one bound \n", - "parameter (it's _partially bound_):" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [], - "source": [ - "fn eat(f: Fudge[5, *_]):\n", - " print(\"Ate \" + str(f))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `eat()` function takes a `Fudge` struct with the first parameter (`sugar`)\n", - "bound to the value 5. The second and third parameters, `cream` and `chocolate`\n", - "are unbound.\n", - "\n", - "The unbound `cream` and `chocolate` parameters become implicit input parameters\n", - "on the `eat` function. In practice, this is roughly equivalent to writing:" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [], - "source": [ - "fn eat[cr: Int, ch: Int](f: Fudge[5, cr, ch]):\n", - " print(\"Ate\", str(f))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In both cases, we can call the function by passing in an instance with the\n", - "`cream` and `chocolate` parameters bound:" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ate Fudge (5,5,7)\n", - "Ate Fudge (5,8,9)\n" - ] - } - ], - "source": [ - "eat(Fudge[5, 5, 7]())\n", - "eat(Fudge[5, 8, 9]())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you try to pass in an argument with a `sugar` value other than 5,\n", - "compilation fails, because it doesn't match the argument type:\n", - "\n", - "```mojo\n", - "eat(Fudge[12, 5, 7]()) \n", - "# ERROR: invalid call to 'eat': argument #0 cannot be converted from 'Fudge[12, 5, 7]' to 'Fudge[5, 5, 7]'\n", - "```\n", - "\n", - "\n", - "You can also explicitly unbind individual parameters. This gives you \n", - "more freedom in specifying unbound parameters.\n", - "\n", - "For example, you might want to let the user specify values for `sugar` and \n", - "`chocolate`, and leave `cream` constant. To do this, replace each unbound\n", - "parameter value with a single underscore (`_`):" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [], - "source": [ - "fn devour(f: Fudge[_, 6, _]):\n", - " print(\"Devoured\", str(f))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Again, the unbound parameters (`sugar` and `chocolate`) are added as implicit\n", - "input parameters on the function. This version is roughly equivalent to the\n", - "following code, where these two values are explicitly bound to the input \n", - "parameters, `su` and `ch`:" - ] - }, - { - "cell_type": "code", - "execution_count": 59, - "metadata": {}, - "outputs": [], - "source": [ - "fn devour[su: Int, ch: Int](f: Fudge[su, 6, ch]):\n", - " print(\"Devoured\", str(f))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also specify parameters by keyword, or mix positional and keyword\n", - "parameters, so the following function is roughly equivalent to the previous one:\n", - "the first parameter, `sugar` is explicitly unbound with the underscore character.\n", - "The `chocolate` parameter is unbound using the keyword syntax, `chocolate=_`. \n", - "And `cream` is explicitly bound to the value 6:\n" - ] - }, - { - "cell_type": "code", - "execution_count": 60, - "metadata": {}, - "outputs": [], - "source": [ - "fn devour(f: Fudge[_, chocolate=_, cream=6]):\n", - " print(\"Devoured\", str(f))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "All three versions of the `devour()` function work with the following calls:" - ] - }, - { - "cell_type": "code", - "execution_count": 61, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Devoured Fudge (3,6,9)\n", - "Devoured Fudge (4,6,8)\n" - ] - } - ], - "source": [ - "devour(Fudge[3, 6, 9]())\n", - "devour(Fudge[4, 6, 8]())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Legacy syntax (omitted parameters)\n", - "\n", - "You can also specify an unbound or partially-bound type by omitting parameters: \n", - "for example:" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Ate Fudge (5,4,7)\n" - ] - } - ], - "source": [ - "fn nibble(f: Fudge[5]):\n", - " print(\"Ate\", str(f))\n", - "\n", - "nibble(Fudge[5, 4, 7]())\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here, `Fudge[5]` works like `Fudge[5, *_]` **except** in the handling of\n", - "parameters with default values. Instead of discarding the default value of\n", - "`chocolate`, `Fudge[5]` binds the default value immediately, making it\n", - "equivalent to: `Fudge[5, _, 7]`.\n", - "\n", - "This means that the following code won't compile with the previous definition\n", - "for the `nibble()` function, since it doesn't use the default value for\n", - "`chocolate`:\n", - "\n", - "```mojo\n", - "nibble(Fudge[5, 5, 9]())\n", - "# ERROR: invalid call to 'nibble': argument #0 cannot be converted from 'Fudge[5, 5, 9]' to 'Fudge[5, 5, 7]'\n", - "```\n", - "\n", - ":::note TODO\n", - "\n", - "Support for omitting unbound parameters will eventually be deprecated in\n", - "favor of explicitly unbound parameters using `_` and `*_`. \n", - "\n", - ":::\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## The `rebind()` builtin\n", - "\n", - "One of the consequences of Mojo not performing function instantiation in the\n", - "parser like C++ is that Mojo cannot always figure out whether some parametric\n", - "types are equal and complain about an invalid conversion. This typically occurs\n", - "in static dispatch patterns. For example, the following code won't compile:\n", - "\n", - "```mojo\n", - "fn take_simd8(x: SIMD[DType.float32, 8]):\n", - " pass\n", - "\n", - "fn generic_simd[nelts: Int](x: SIMD[DType.float32, nelts]):\n", - " @parameter\n", - " if nelts == 8:\n", - " take_simd8(x)\n", - "```\n", - "\n", - "The parser will complain:\n", - "\n", - "```plaintext\n", - "error: invalid call to 'take_simd8': argument #0 cannot be converted from\n", - "'SIMD[f32, nelts]' to 'SIMD[f32, 8]'\n", - " take_simd8(x)\n", - " ~~~~~~~~~~^~~\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is because the parser fully type-checks the function without instantiation,\n", - "and the type of `x` is still `SIMD[f32, nelts]`, and not `SIMD[f32, 8]`, despite\n", - "the static conditional. The remedy is to manually \"rebind\" the type of `x`,\n", - "using the `rebind` builtin, which inserts a compile-time assert that the input\n", - "and result types resolve to the same type after function instantiation:" - ] - }, - { - "cell_type": "code", - "execution_count": 76, - "metadata": {}, - "outputs": [], - "source": [ - "fn take_simd8(x: SIMD[DType.float32, 8]):\n", - " pass\n", - "\n", - "fn generic_simd[nelts: Int](x: SIMD[DType.float32, nelts]):\n", - " @parameter\n", - " if nelts == 8:\n", - " take_simd8(rebind[SIMD[DType.float32, 8]](x))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/parameters/index.mdx b/docs/manual/parameters/index.mdx new file mode 100644 index 0000000000..788c87977a --- /dev/null +++ b/docs/manual/parameters/index.mdx @@ -0,0 +1,1270 @@ +--- +title: "Parameterization: compile-time metaprogramming" +description: An introduction to parameters and compile-time metaprogramming. +--- + +Many languages have facilities for *metaprogramming*: that is, for writing code that generates or modifies code. Python has facilities for dynamic metaprogramming: features like decorators, metaclasses, and many more. These features make Python very flexible and productive, but since they're dynamic, they come with runtime overhead. Other languages have static or compile-time metaprogramming features, like C preprocessor macros and C++ templates. These can be limiting and hard to use. + +To support Modular's work in AI, Mojo aims to provide powerful, easy-to-use metaprogramming with zero runtime cost. This compile-time metaprogramming uses the same language as runtime programs, so you don't have to learn a new language—just a few new features. + +The main new feature is *parameters*. You can think of a parameter as a compile-time variable that becomes a runtime constant. This usage of "parameter" is probably different from what you're used to from other languages, where "parameter" and "argument" are often used interchangeably. In Mojo, "parameter" and "parameter expression" refer to compile-time values, and "argument" and "expression" refer to runtime values. + +In Mojo, you can add parameters to a struct or function. You can also define +named parameter expressions—aliases—that you can use as runtime constants. + +## Parameterized functions + +To define a *parameterized function*, add parameters in square brackets ahead +of the argument list. Each parameter is formatted just like an argument: a +parameter name, followed by a colon and a type (which is required). In the +following example, the function has a single parameter, `count` of type `Int`. + +```mojo +fn repeat[count: Int](msg: String): + @parameter + for i in range(count): + print(msg) +``` + +The [`@parameter`](/mojo/manual/decorators/parameter) directive shown here +causes the `for` loop to be evaluated at compile time. The directive only works +if the loop limits are compile-time constants. Since `count` is a parameter, +`range(count)` can be calculated at compile time. + +Calling a parameterized function, you provide values for the parameters, just +like function arguments: + +```mojo +repeat[3]("Hello") +``` + +```output +Hello +Hello +Hello +``` + +The compiler resolves the parameter values during compilation, and creates a +concrete version of the `repeat[]()` function for each unique parameter value. +After resolving the parameter values and unrolling the loop, the `repeat[3]()` +function would be roughly equivalent to this: + +```mojo +fn repeat_3(msg: String): + print(msg) + print(msg) + print(msg) +``` + +:::note + +This doesn't represent actual code generated by the compiler. By the +time parameters are resolved, Mojo code has already been transformed to an +intermediate representation in [MLIR](https://mlir.llvm.org/). + +::: + +If the compiler can't resolve all parameter values to constant values, +compilation fails. + +## Parameters and generics + +"Generics" refers to functions that can act on multiple types of values, or +containers that can hold multiple types of values. For example, +[`List`](/mojo/stdlib/collections/list/List), can hold +different types of values, so you can have a list of `Int` values, or +a list of `String` values). + +In Mojo, generics use parameters to specify types. For example, `List` +takes a type parameter, so a vector of integers is written `List[Int]`. +So all generics use parameters, but **not** everything that uses parameters is a +generic. + +For example, the `repeat[]()` function in the previous section includes +parameter of type `Int`, and an argument of type `String`. It's parameterized, +but not generic. A generic function or struct is parameterized on *type*. For +example, we could rewrite `repeat[]()` to take any type of argument that +conforms to the [`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait: + +```mojo +fn repeat[MsgType: Stringable, count: Int](msg: MsgType): + @parameter + for i in range(count): + print(str(msg)) + +# Must use keyword parameter for `count` +repeat[count=2](42) +``` + +```output +42 +42 +``` + +This updated function takes any `Stringable` type, so you can pass it an `Int`, +`String`, or `Bool` value. + +You can't pass the `count` as a positional keyword without also specifying `MsgType`. +You can put `//` after `MsgType` to specify that it's always inferred by the argument. Now +you can pass the following parameter `count` positionally: + +```mojo +fn repeat[MsgType: Stringable, //, count: Int](msg: MsgType): + @parameter + for i in range(count): + print(str(msg)) + +# MsgType is always inferred, so first positional keyword `2` is passed to `count` +repeat[2](42) +``` + +```output +42 +42 +``` + +Mojo's support for generics is still early. You can write generic functions like +this using traits and parameters. You can also write generic collections like +`List` and `Dict`. If you're interested in learning how these types work, you +can find the source code for the standard library collection types +[on GitHub](https://github.com/modularml/mojo/blob/nightly/stdlib/src/collections/). + +## Parameterized structs + +You can also add parameters to structs. You can use parameterized structs to +build generic collections. For example, a generic array type might include code +like this: + +```mojo +from memory import UnsafePointer + +struct GenericArray[ElementType: CollectionElement]: + var data: UnsafePointer[ElementType] + var size: Int + + fn __init__(out self, *elements: ElementType): + self.size = len(elements) + self.data = UnsafePointer[ElementType].alloc(self.size) + for i in range(self.size): + (self.data + i).init_pointee_move(elements[i]) + + fn __del__(owned self): + for i in range(self.size): + (self.data + i).destroy_pointee() + self.data.free() + + fn __getitem__(self, i: Int) raises -> ref [self] ElementType: + if (i < self.size): + return self.data[i] + else: + raise Error("Out of bounds") +``` + +This struct has a single parameter, `ElementType`, which is a placeholder for +the data type you want to store in the array, sometimes called a *type +parameter*. `ElementType` is typed as +[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement), which is a +[trait](/mojo/manual/traits) representing any type that can be copied and moved. + +As with parameterized functions, you need to pass in parameter values when you +use a parameterized struct. In this case, when you create an instance of +`GenericArray`, you need to specify the type you want to store, like `Int`, or +`Float64`. (This is a little confusing, because the *parameter value* you're +passing in this case is a *type*. That's OK: a Mojo type is a valid compile-time +value.) + +You'll see that `ElementType` is used throughout the struct where you'd usually see a +type name. For example, as the formal type for the `elements` in the +constructor, and the return type of the `__getitem__()` method. + +Here's an example of using `GenericArray`: + +```mojo +var array = GenericArray[Int](1, 2, 3, 4) +for i in range(array.size): + print(array[i], end=" ") +``` + +```output +1 2 3 4 +``` + +A parameterized struct can use the `Self` type to represent a concrete instance +of the struct (that is, with all its parameters specified). For example, you +could add a static factory method to `GenericArray` with the following +signature: + +```mojo +struct GenericArray[ElementType: CollectionElement]: + ... + + @staticmethod + fn splat(count: Int, value: ElementType) -> Self: + # Create a new array with count instances of the given value +``` + +Here, `Self` is equivalent to writing `GenericArray[ElementType]`. That is, you +can call the `splat()` method like this: + +```mojo +GenericArray[Float64].splat(8, 0) +``` + +The method returns an instance of `GenericArray[Float64]`. + +### Conditional conformance + +When creating a generic struct, you might want to define some methods that +require extra features. For example, consider a collection like `GenericArray` +that holds instances of `CollectionElement`. The `CollectionElement` trait +only requires that the stored data type be copyable and movable. This +imposes a lot of limitations: you can't implement a `sort()` method because +you can't guarantee that the stored type supports the comparison operators; you can't +write a useful `__str__()` or `__repr__()` dunder method because you can't +guarantee that the stored type supports conversion to a string. + +The answer to these issues is *conditional conformance*, which lets you define a +method that requires additional features. You do this by defining the `self` +value that has a more specific bound on one or more of its parameters. + +For example, the following code defines a `Container` type that holds an +instance of `CollectionElement`. It also defines a `__str__()` method that can +only be called if the stored `ElementType` conforms to +`StringableCollectionElement`: + +```mojo +@value +struct Container[ElementType: CollectionElement]: + var element: ElementType + + def __str__[StrElementType: StringableCollectionElement, //]( + self: Container[StrElementType]) -> String: + return str(self.element) + +def use_container(): + float_container = Container(5) + string_container = Container("Hello") + print(float_container.__str__()) + print(string_container.__str__()) + +use_container() +``` + +```output +5 +Hello +``` + +Note the signature of the `__str__()` method, which declares the `self` argument +with a more specific type. Specifically, it declares that it takes a `Container` +with an `ElementType` that conforms to the `StringableCollectionElement` trait. + +```mojo +def __str__[StrElementType: StringableCollectionElement, //]( + self: Container[StrElementType]) -> String: +``` + +This trait must be a superset of `ElementType`'s original trait: for example, +`StringableCollectionElement` inherits from `CollectionElement`, so it includes +all of requirements of the original trait. + +Note that the `use_container()` function calls the `__str__()` method directly, +rather than calling `str(float_container)`. One current limitation of +conditional conformance is that Mojo can't recognize the struct +`Container[Int]` as conforming to `Stringable`, even though the `__str__()` +method is implemented for any `ElementType` that's also `Stringable`. + +### Case study: the SIMD type + +For a real-world example of a parameterized type, let's look at the +[`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type from Mojo's standard library. + +[Single instruction, multiple data (SIMD)](https://en.wikipedia.org/wiki/Single_instruction,_multiple_data) is a parallel processing technology built into many modern CPUs, +GPUs, and custom accelerators. SIMD allows you to perform a single operation on +multiple pieces of data at once. For example, if you want to take the square +root of each element in an array, you can use SIMD to parallelize the work. + +Processors implement SIMD using low-level vector registers in hardware that hold +multiple instances of a scalar data type. In order to use the SIMD instructions +on these processors, the data must be shaped into the proper SIMD width +(data type) and length (vector size). Processors may support 512-bit or +longer SIMD vectors, and support many data types from 8-bit integers to 64-bit +floating point numbers, so it's not practical to define all of the possible SIMD +variations. + +Mojo's [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type (defined as a struct) +exposes the common SIMD operations through its methods, and makes the SIMD data type +and size values parametric. This allows you to directly map your data to the +SIMD vectors on any hardware. + +Here's a cut-down (non-functional) version of Mojo's `SIMD` type definition: + +```mojo +struct SIMD[type: DType, size: Int]: + var value: … # Some low-level MLIR stuff here + + # Create a new SIMD from a number of scalars + fn __init__(out self, *elems: SIMD[type, 1]): ... + + # Fill a SIMD with a duplicated scalar value. + @staticmethod + fn splat(x: SIMD[type, 1]) -> SIMD[type, size]: ... + + # Cast the elements of the SIMD to a different elt type. + fn cast[target: DType](self) -> SIMD[target, size]: ... + + # Many standard operators are supported. + fn __add__(self, rhs: Self) -> Self: ... +``` + +So you can create and use a SIMD vector like this: + +```mojo +var vector = SIMD[DType.int16, 4](1, 2, 3, 4) +vector = vector * vector +for i in range(4): + print(vector[i], end=" ") +``` + +```output +1 4 9 16 +``` + +As you can see, a simple arithmetic operator like `*` applied to a pair of +`SIMD` vector operates on the corresponding elements in each vector. + +Defining each SIMD variant with parameters is great for code reuse because the +`SIMD` type can express all the different vector variants statically, instead of +requiring the language to pre-define every variant. + +Because `SIMD` is a parameterized type, the `self` argument in its functions +carries those parameters—the full type name is `SIMD[type, size]`. Although +it's valid to write this out (as shown in the return type of `splat()`), this +can be verbose, so we recommend using the `Self` type (from +[PEP673](https://peps.python.org/pep-0673/)) like the `__add__` example does. + +## Overloading on parameters + +Functions and methods can be overloaded on their parameter signatures. The +overload resolution logic filters for candidates according to the following +rules, in order of precedence: + +1. Candidates with the minimal number of implicit conversions (in both arguments + and parameters). +2. Candidates without variadic arguments. +3. Candidates without variadic parameters. +4. Candidates with the shortest parameter signature. +5. Non-`@staticmethod` candidates (over `@staticmethod` ones, if available). + +If there is more than one candidate after applying these rules, the overload +resolution fails. For example: + +```mojo +@register_passable("trivial") +struct MyInt: + """A type that is implicitly convertible to `Int`.""" + var value: Int + + @always_inline("nodebug") + fn __init__(out self, _a: Int): + self.value = _a + +fn foo[x: MyInt, a: Int](): + print("foo[x: MyInt, a: Int]()") + +fn foo[x: MyInt, y: MyInt](): + print("foo[x: MyInt, y: MyInt]()") + +fn bar[a: Int](b: Int): + print("bar[a: Int](b: Int)") + +fn bar[a: Int](*b: Int): + print("bar[a: Int](*b: Int)") + +fn bar[*a: Int](b: Int): + print("bar[*a: Int](b: Int)") + +fn parameter_overloads[a: Int, b: Int, x: MyInt](): + # `foo[x: MyInt, a: Int]()` is called because it requires no implicit + # conversions, whereas `foo[x: MyInt, y: MyInt]()` requires one. + foo[x, a]() + + # `bar[a: Int](b: Int)` is called because it does not have variadic + # arguments or parameters. + bar[a](b) + + # `bar[*a: Int](b: Int)` is called because it has variadic parameters. + bar[a, a, a](b) + +parameter_overloads[1, 2, MyInt(3)]() + +struct MyStruct: + fn __init__(out self): + pass + + fn foo(inout self): + print("calling instance method") + + @staticmethod + fn foo(): + print("calling static method") + +fn test_static_overload(): + var a = MyStruct() + # `foo(inout self)` takes precedence over a static method. + a.foo() +``` + +```output +foo[x: MyInt, a: Int]() +bar[a: Int](b: Int) +bar[*a: Int](b: Int) +``` + +## Using parameterized types and functions + +You can use parametric types and functions by passing values to the +parameters in square brackets. For example, for the `SIMD` type above, `type` +specifies the data type and `size` specifies the length of the SIMD vector (it +must be a power of 2): + +```mojo +# Make a vector of 4 floats. +var small_vec = SIMD[DType.float32, 4](1.0, 2.0, 3.0, 4.0) + +# Make a big vector containing 1.0 in float16 format. +var big_vec = SIMD[DType.float16, 32](1.0) + +# Do some math and convert the elements to float32. +var bigger_vec = (big_vec+big_vec).cast[DType.float32]() + +# You can write types out explicitly if you want of course. +var bigger_vec2 : SIMD[DType.float32, 32] = bigger_vec + +print('small_vec type:', small_vec.element_type, 'length:', len(small_vec)) +print('bigger_vec2 type:', bigger_vec2.element_type, 'length:', len(bigger_vec2)) +``` + +```output +small_vec type: float32 length: 4 +bigger_vec2 type: float32 length: 32 +``` + +Note that the `cast()` method also needs a parameter to specify the type you +want from the cast (the method definition above expects a `target` parametric +value). Thus, just as the `SIMD` struct is a generic type definition, the +`cast()` method is a generic method definition. At compile time, the compiler +creates a concrete version of the `cast()` method with the target parameter +bound to `DType.float32`. + +The code above shows the use of concrete types (that is, the parameters are all +bound to known values). But the major power of parameters comes from the +ability to define parametric algorithms and types (code that uses the parameter +values). For example, here's how to define a parametric algorithm with `SIMD` +that is type- and width-agnostic: + +```mojo +from math import sqrt + +fn rsqrt[dt: DType, width: Int](x: SIMD[dt, width]) -> SIMD[dt, width]: + return 1 / sqrt(x) + +var v = SIMD[DType.float16, 4](42) +print(rsqrt(v)) +``` + +```output +[0.154296875, 0.154296875, 0.154296875, 0.154296875] +``` + +Notice that the `x` argument is actually a `SIMD` type based on the function +parameters. The runtime program can use the value of the parameters, because the +parameters are resolved at compile-time before they are needed by the runtime +program (but compile-time parameter expressions cannot use runtime values). + +### Parameter inference + +The Mojo compiler can often *infer* parameter values, so you don't always have +to specify them. For example, you can call the `rsqrt()` function defined above +without any parameters: + +```mojo +var v = SIMD[DType.float16, 4](33) +print(rsqrt(v)) +``` + +```output +[0.174072265625, 0.174072265625, 0.174072265625, 0.174072265625] +``` + +The compiler infers its parameters based on the parametric `v` +value passed into it, as if you wrote `rsqrt[DType.float16, 4](v)` explicitly. + +Mojo can also infer the values of struct parameters from the arguments passed to +a constructor or static method. + +For example, consider the following struct: + +```mojo +@value +struct One[Type: StringableCollectionElement]: + var value: Type + + fn __init__(out self, value: Type): + self.value = value + +def use_one(): + s1 = One(123) + s2 = One("Hello") +``` + +Note that you can create an instance of `One` without specifying the `Type` +parameter—Mojo can infer it from the `value` argument. + +You can also infer parameters from a parameterized type passed to a constructor +or static method: + +```mojo +struct Two[Type: StringableCollectionElement]: + var val1: Type + var val2: Type + + fn __init__(out self, one: One[Type], another: One[Type]): + self.val1 = one.value + self.val2 = another.value + print(str(self.val1), str(self.val2)) + + @staticmethod + fn fire(thing1: One[Type], thing2: One[Type]): + print("🔥", str(thing1.value), str(thing2.value)) + +def use_two(): + s3 = Two(One("infer"), One("me")) + Two.fire(One(1), One(2)) + +use_two() +``` + +```output +infer me +🔥 1 2 +``` + +`Two` takes a `Type` parameter, and its constructor takes values of type +`One[Type]`. When constructing an instance of `Two`, you don't need to specify +the `Type` parameter, since it can be inferred from the arguments. + +Similarly, the static `fire()` method takes values of type `One[Type]`, so Mojo +can infer the `Type` value at compile time. + +:::note + +If you're familiar with C++, you may recognize this as similar to Class Template +Argument Deduction (CTAD). + +::: + +## Optional parameters and keyword parameters + +Just as you can specify [optional +arguments](/mojo/manual/functions#optional-arguments) in function signatures, +you can also define an optional *parameter* by giving it a default value. + +You can also pass parameters by keyword, just like you can use +[keyword arguments](/mojo/manual/functions#keyword-arguments). +For a function or struct with multiple optional parameters, using keywords +allows you to pass only the parameters you want to specify, regardless of +their position in the function signature. + +For example, here's a function with two parameters, each with a default value: + +```mojo +fn speak[a: Int = 3, msg: StringLiteral = "woof"](): + print(msg, a) + +fn use_defaults() raises: + speak() # prints 'woof 3' + speak[5]() # prints 'woof 5' + speak[7, "meow"]() # prints 'meow 7' + speak[msg="baaa"]() # prints 'baaa 3' +``` + +Recall that when a parametric function is called, Mojo can infer the parameter values. +That is, it can use the parameter values attached to an argument value (see the `sqrt[]()` +example above). If the parametric function also has a default value defined, +then the inferred parameter type takes precedence. + +For example, in the following code, we update the parametric `speak[]()` function +to take an argument with a parametric type. Although the function has a default +parameter value for `a`, Mojo instead uses the inferred `a` parameter value +from the `bar` argument (as written, the default `a` value can never be used, +but this is just for demonstration purposes): + +```mojo +@value +struct Bar[v: Int]: + pass + +fn speak[a: Int = 3, msg: StringLiteral = "woof"](bar: Bar[a]): + print(msg, a) + +fn use_inferred(): + speak(Bar[9]()) # prints 'woof 9' +``` + +As mentioned above, you can also use optional parameters and keyword +parameters in a struct: + +```mojo +struct KwParamStruct[greeting: String = "Hello", name: String = "🔥mojo🔥"]: + fn __init__(out self): + print(greeting, name) + +fn use_kw_params(): + var a = KwParamStruct[]() # prints 'Hello 🔥mojo🔥' + var b = KwParamStruct[name="World"]() # prints 'Hello World' + var c = KwParamStruct[greeting="Hola"]() # prints 'Hola 🔥mojo🔥' +``` + +:::note + +Mojo supports positional-only and keyword-only parameters, following the same +rules as [positional-only and keyword-only +arguments](/mojo/manual/functions#positional-only-and-keyword-only-arguments). + +::: + +## Infer-only parameters + +Sometimes you need to declare functions where parameters depend on other +parameters. Because the signature is processed left to right, a parameter can +only *depend* on a parameter earlier in the parameter list. For example: + +```mojo +fn dependent_type[dtype: DType, value: Scalar[dtype]](): + print("Value: ", value) + print("Value is floating-point: ", dtype.is_floating_point()) + +dependent_type[DType.float64, Float64(2.2)]() +``` + +```output +Value: 2.2000000000000002 +Value is floating-point: True +``` + +You can't reverse the position of the `dtype` and `value` parameters, because +`value` depends on `dtype`. However, because `dtype` is a required parameter, +you can't leave it out of the parameter list and let Mojo infer it from `value`: + +```mojo +dependent_type[Float64(2.2)]() # Error! +``` + +Infer-only parameters are a special class of parameters that are **always** +inferred from context. Infer-only parameters are placed at the **beginning** of +the parameter list, set off from other parameters by the `//` sigil: + +```mojo +fn example[type: CollectionElement, //, list: List[type]]() +``` + +Transforming `dtype` into an infer-only parameter solves this problem: + +```mojo +fn dependent_type[dtype: DType, //, value: Scalar[dtype]](): + print("Value: ", value) + print("Value is floating-point: ", dtype.is_floating_point()) + +dependent_type[Float64(2.2)]() +``` + +```output +Value: 2.2000000000000002 +Value is floating-point: True +``` + +Because infer-only parameters are declared at the beginning of the parameter +list, other parameters can depend on them, and the compiler will always attempt +to infer the infer-only values from bound parameters or arguments. + +If the compiler can't infer the value of an infer-only parameter, compilation +fails. + +## Variadic parameters + +Mojo also supports variadic parameters, similar to +[Variadic arguments](/mojo/manual/functions#variadic-arguments): + +```mojo +struct MyTensor[*dimensions: Int]: + pass +``` + +Variadic parameters currently have some limitations that variadic arguments don't have: + +* Variadic parameters must be homogeneous—that is, all the values must be the + same type. + +* The parameter type must be register-passable. + +* The parameter values aren't automatically projected into a `VariadicList`, so you + need to construct the list explicitly: + +```mojo +fn sum_params[*values: Int]() -> Int: + alias list = VariadicList(values) + var sum = 0 + for v in list: + sum += v + return sum +``` + +Variadic keyword parameters (for example, `**kwparams`) are +not supported yet. + +## Parameter expressions are just Mojo code + +A parameter expression is any code expression (such as `a+b`) that occurs where +a parameter is expected. Parameter expressions support operators and function +calls, just like runtime code, and all parameter types use the same type +system as the runtime program (such as `Int` and `DType`). + +Because parameter expressions use the same grammar and types as runtime +Mojo code, you can use many +["dependent type"](https://en.wikipedia.org/wiki/Dependent_type) features. For +example, you might want to define a helper function to concatenate two SIMD +vectors: + +```mojo +fn concat[ty: DType, len1: Int, len2: Int]( + lhs: SIMD[ty, len1], rhs: SIMD[ty, len2]) -> SIMD[ty, len1+len2]: + + var result = SIMD[ty, len1 + len2]() + for i in range(len1): + result[i] = SIMD[ty, 1](lhs[i]) + for j in range(len2): + result[len1 + j] = SIMD[ty, 1](rhs[j]) + return result + +var a = SIMD[DType.float32, 2](1, 2) +var x = concat(a, a) + +print('result type:', x.element_type, 'length:', len(x)) +``` + +```output +result type: float32 length: 4 +``` + +Note that the resulting length is the sum of the input vector lengths, and this is expressed with a simple `+` operation. + +### Powerful compile-time programming + +While simple expressions are useful, sometimes you want to write imperative +compile-time logic with control flow. You can even do compile-time recursion. +For instance, here is an example "tree reduction" algorithm that sums all +elements of a vector recursively into a scalar: + +```mojo +fn slice[ty: DType, new_size: Int, size: Int]( + x: SIMD[ty, size], offset: Int) -> SIMD[ty, new_size]: + var result = SIMD[ty, new_size]() + for i in range(new_size): + result[i] = SIMD[ty, 1](x[i + offset]) + return result + +fn reduce_add[ty: DType, size: Int](x: SIMD[ty, size]) -> Int: + @parameter + if size == 1: + return int(x[0]) + elif size == 2: + return int(x[0]) + int(x[1]) + + # Extract the top/bottom halves, add them, sum the elements. + alias half_size = size // 2 + var lhs = slice[ty, half_size, size](x, 0) + var rhs = slice[ty, half_size, size](x, half_size) + return reduce_add[ty, half_size](lhs + rhs) + +var x = SIMD[DType.index, 4](1, 2, 3, 4) +print(x) +print("Elements sum:", reduce_add(x)) +``` + +```output +[1, 2, 3, 4] +Elements sum: 10 +``` + +This makes use of the [`@parameter`](/mojo/manual/decorators/parameter) decorator to create a parametric if condition, which is an `if` statement that +runs at compile-time. It requires that its condition be a valid parameter +expression, and ensures that only the live branch of the `if` statement is +compiled into the program. (This is similar to use of the `@parameter` decorator +with a `for` loop shown earlier.) + +## Mojo types are just parameter expressions + +While we've shown how you can use parameter expressions within types, type +annotations can themselves be arbitrary expressions (just like in Python). +Types in Mojo have a special metatype type, allowing type-parametric algorithms +and functions to be defined. + +For example, we can create a simplified `Array` that supports arbitrary types of +elements (via the `AnyTrivialRegType` parameter): + +```mojo +from memory import UnsafePointer + +struct Array[T: AnyTrivialRegType]: + var data: UnsafePointer[T] + var size: Int + + fn __init__(out self, size: Int, value: T): + self.size = size + self.data = UnsafePointer[T].alloc(self.size) + for i in range(self.size): + (self.data + i).init_pointee_copy(value) + + fn __getitem__(self, i: Int) -> T: + return self.data[i] + + fn __del__(owned self): + for i in range(self.size): + (self.data + i).destroy_pointee() + self.data.free() + +var v = Array[Float32](4, 3.14) +print(v[0], v[1], v[2], v[3]) +``` + +Notice that the `T` parameter is being used as the formal type for the +`value` arguments and the return type of the `__getitem__()` function. +Parameters allow the `Array` type to provide different APIs based on the +different use-cases. + +There are many other cases that benefit from more advanced use of parameters. +For example, you can execute a closure N times in parallel, feeding in a value +from the context, like this: + +```mojo +fn parallelize[func: fn (Int) -> None](num_work_items: Int): + # Not actually parallel: see the 'algorithm' module for real implementation. + for i in range(num_work_items): + func(i) +``` + +Another example where this is important is with variadic generics, where an +algorithm or data structure may need to be defined over a list of heterogeneous +types such as for a tuple. Right now, this is not fully supported in Mojo and +requires writing some MLIR by hand. In the future, this will be possible in pure +Mojo. + +## `alias`: named parameter expressions + +It is very common to want to *name* compile-time values. Whereas `var` defines a +runtime value, we need a way to define a +compile-time temporary value. For this, Mojo uses an `alias` declaration. + +For example, the [`DType`](/mojo/stdlib/builtin/dtype/DType) struct +implements a simple enum using aliases for the enumerators like this (the actual +`DType` implementation details vary a bit): + +```mojo +struct DType: + var value : UI8 + alias invalid = DType(0) + alias bool = DType(1) + alias int8 = DType(2) + alias uint8 = DType(3) + alias int16 = DType(4) + alias int16 = DType(5) + ... + alias float32 = DType(15) +``` + +This allows clients to use `DType.float32` as a parameter expression (which also +works as a runtime value) naturally. Note that this is invoking the +runtime constructor for `DType` at compile-time. + +Types are another common use for aliases. Because types are compile-time +expressions, it is handy to be able to do things like this: + +```mojo +alias Float16 = SIMD[DType.float16, 1] +alias UInt8 = SIMD[DType.uint8, 1] + +var x: Float16 = 0 # Float16 works like a "typedef" +``` + +Like `var` variables, aliases obey scope, and you can use local aliases within +functions as you'd expect. + +## Fully-bound, partially-bound, and unbound types + +A parametric type with its parameters specified is said to be *fully-bound*. +That is, all of its parameters are bound to values. As mentioned before, you can +only instantiate a fully-bound type (sometimes called a *concrete type*). + +However, parametric types can be *unbound* or *partially bound* in some +contexts. For example, you can alias a partially-bound type to create a new type +that requires fewer parameters: + +```mojo +from collections import Dict + +alias StringKeyDict = Dict[String, _] +var b = StringKeyDict[UInt8]() +b["answer"] = 42 +``` + +Here, `StringKeyDict` is a type alias for a `Dict` that takes `String` keys. The +underscore `_` in the parameter list indicates that the second parameter, +`V` (the value type), is unbound. +You specify the `V` parameter later, when you use `StringKeyDict`. + +For example, given the following type: + +```mojo +struct MyType[s: String, i: Int, i2: Int, b: Bool = True]: + pass +``` + +It can appear in code in the following forms: + +* *Fully bound*, with all of its parameters specified: + + ```mojo + MyType["Hello", 3, 4, True] + ``` + +* *Partially bound*, with *some but not all* of its parameters specified: + + ```mojo + MyType["Hola", _, _, True] + ``` + +* *Unbound*, with no parameters specified: + + ```mojo + MyType[_, _, _, _] + ``` + +You can also use the star-underscore expression `*_` to unbind an arbitrary +number of positional parameters at the end of a parameter +list. + +```mojo +# These two types are equivalent +MyType["Hello", *_] +MyType["Hello", _, _, _] +``` + +When a parameter is explicitly unbound with the `_` or `*_` expression, you +**must** specify a value for that parameter to use the type. Any default value +from the original type declaration is ignored. + +Partially-bound and unbound parametric types can be used in some contexts where +the missing (unbound) parameters will be supplied later—such as in +[aliases](#alias-named-parameter-expressions) and +[automatically parameterized functions](#automatic-parameterization-of-functions). + +### Omitted parameters + +Mojo also supports an alternate format for unbound parameter where the parameter +is simply omitted from the expression: + +```mojo +# Partially bound +MyType["Hi there"] +# Unbound +MyType +``` + +This format differs from the explicit unbinding syntax described above in that +the default values for omitted parameters are bound immediately. For example, +the following expressions are equivalent: + +```mojo +MyType["Hi there"] +# equivalent to +MyType["Hi there", _, _, True] # Uses the default value for `b` +``` + +:::note + +This format is currently supported for backwards compatibility. We intend to +deprecate this format in the future in favor of the explicit unbinding syntax. + +::: + +## Automatic parameterization of functions + +Mojo supports "automatic" parameterization of functions. If a function +argument type is a +[partially-bound or unbound type](#fully-bound-partially-bound-and-unbound-types), +the unbound parameters are automatically added as input parameters on the +function. This is easier to understand with an example: + +```mojo +fn print_params(vec: SIMD[*_]): + print(vec.type) + print(vec.size) + +var v = SIMD[DType.float64, 4](1.0, 2.0, 3.0, 4.0) +print_params(v) +``` + +```output +float64 +4 +``` + +In the above example, the `print_params` function is automatically +parameterized. The `vec` argument takes an argument of type `SIMD[*_]`. This is +an [unbound parameterized +type](#fully-bound-partially-bound-and-unbound-types)—that is, it doesn't +specify any parameter values for the type. Mojo treats the unbound parameters +on `vec` as implicit parameters on the function. This is roughly equivalent to +the following code, which includes *explicit* input parameters: + +```mojo +fn print_params[t: DType, s: Int](vec: SIMD[t, s]): + print(vec.type) + print(vec.size) +``` + +When you call `print_params()` you must pass it a concrete instance of the +`SIMD` type—that is, one with all of its parameters specified, like +`SIMD[DType.float64, 4]`. The Mojo compiler *infers* the parameter +values from the input argument. + +With a manually parameterized function, you can access the input parameters by +name (for example, `t` and `s` in the previous example). For an +automatically parameterized function, you can access the parameters as +attributes on the argument (for example, `vec.type`). + +This ability to access a type's input parameters is not specific to +automatically parameterized functions, you can use it anywhere. You can access +the input parameters of a parameterized type as attributes on the type itself: + +```mojo +fn on_type(): + print(SIMD[DType.float32, 2].size) # prints 2 +``` + +Or as attributes on an *instance* of the type: + +```mojo +fn on_instance(): + var x = SIMD[DType.int32, 2](4, 8) + print(x.type) # prints int32 +``` + +You can even use this syntax in the function's signature to define a +function's arguments and return type based on an argument's parameters. +For example, if you want your function to take two SIMD vectors with the same +type and size, you can write code like this: + +```mojo +fn interleave(v1: SIMD, v2: __type_of(v1)) -> SIMD[v1.type, v1.size*2]: + var result = SIMD[v1.type, v1.size*2]() + for i in range(v1.size): + result[i*2] = SIMD[v1.type, 1](v1[i]) + result[i*2+1] = SIMD[v1.type, 1](v2[i]) + return result + +var a = SIMD[DType.int16, 4](1, 2, 3, 4) +var b = SIMD[DType.int16, 4](0, 0, 0, 0) +var c = interleave(a, b) +print(c) +``` + +```output +[1, 0, 2, 0, 3, 0, 4, 0] +``` + +As shown in the example, you can use the magic `__type_of(x)` call if you just want to match the type of an argument. In this case, it's more convenient and compact that writing the equivalent `SIMD[v1.type, v1.size]`. + +### Automatic parameterization with partially-bound types + +Mojo also supports automatic parameterization: with [partially-bound +parameterized types](#fully-bound-partially-bound-and-unbound-types) (that is, +types with some but not all of the parameters specified). + +For example, suppose we have a `Fudge` struct with three parameters: + +```mojo +@value +struct Fudge[sugar: Int, cream: Int, chocolate: Int = 7](Stringable): + fn __str__(self) -> String: + return str("Fudge (") + str(sugar) + "," + + str(cream) + "," + str(chocolate) + ")" + +``` + +We can write a function that takes a `Fudge` argument with just one bound +parameter (it's *partially bound*): + +```mojo +fn eat(f: Fudge[5, *_]): + print("Ate " + str(f)) +``` + +The `eat()` function takes a `Fudge` struct with the first parameter (`sugar`) +bound to the value 5. The second and third parameters, `cream` and `chocolate` +are unbound. + +The unbound `cream` and `chocolate` parameters become implicit input parameters +on the `eat` function. In practice, this is roughly equivalent to writing: + +```mojo +fn eat[cr: Int, ch: Int](f: Fudge[5, cr, ch]): + print("Ate", str(f)) +``` + +In both cases, we can call the function by passing in an instance with the +`cream` and `chocolate` parameters bound: + +```mojo +eat(Fudge[5, 5, 7]()) +eat(Fudge[5, 8, 9]()) +``` + +```output +Ate Fudge (5,5,7) +Ate Fudge (5,8,9) +``` + +If you try to pass in an argument with a `sugar` value other than 5, +compilation fails, because it doesn't match the argument type: + +```mojo +eat(Fudge[12, 5, 7]()) +# ERROR: invalid call to 'eat': argument #0 cannot be converted from 'Fudge[12, 5, 7]' to 'Fudge[5, 5, 7]' +``` + +You can also explicitly unbind individual parameters. This gives you +more freedom in specifying unbound parameters. + +For example, you might want to let the user specify values for `sugar` and +`chocolate`, and leave `cream` constant. To do this, replace each unbound +parameter value with a single underscore (`_`): + +```mojo +fn devour(f: Fudge[_, 6, _]): + print("Devoured", str(f)) +``` + +Again, the unbound parameters (`sugar` and `chocolate`) are added as implicit +input parameters on the function. This version is roughly equivalent to the +following code, where these two values are explicitly bound to the input +parameters, `su` and `ch`: + +```mojo +fn devour[su: Int, ch: Int](f: Fudge[su, 6, ch]): + print("Devoured", str(f)) +``` + +You can also specify parameters by keyword, or mix positional and keyword +parameters, so the following function is roughly equivalent to the previous one: +the first parameter, `sugar` is explicitly unbound with the underscore character. +The `chocolate` parameter is unbound using the keyword syntax, `chocolate=_`. +And `cream` is explicitly bound to the value 6: + +```mojo +fn devour(f: Fudge[_, chocolate=_, cream=6]): + print("Devoured", str(f)) +``` + +All three versions of the `devour()` function work with the following calls: + +```mojo +devour(Fudge[3, 6, 9]()) +devour(Fudge[4, 6, 8]()) +``` + +```output +Devoured Fudge (3,6,9) +Devoured Fudge (4,6,8) +``` + +### Legacy syntax (omitted parameters) + +You can also specify an unbound or partially-bound type by omitting parameters: +for example: + +```mojo +fn nibble(f: Fudge[5]): + print("Ate", str(f)) + +nibble(Fudge[5, 4, 7]()) + +``` + +```output +Ate Fudge (5,4,7) +``` + +Here, `Fudge[5]` works like `Fudge[5, *_]` **except** in the handling of +parameters with default values. Instead of discarding the default value of +`chocolate`, `Fudge[5]` binds the default value immediately, making it +equivalent to: `Fudge[5, _, 7]`. + +This means that the following code won't compile with the previous definition +for the `nibble()` function, since it doesn't use the default value for +`chocolate`: + +```mojo +nibble(Fudge[5, 5, 9]()) +# ERROR: invalid call to 'nibble': argument #0 cannot be converted from 'Fudge[5, 5, 9]' to 'Fudge[5, 5, 7]' +``` + +:::note TODO + +Support for omitting unbound parameters will eventually be deprecated in +favor of explicitly unbound parameters using `_` and `*_`. + +::: + +## The `rebind()` builtin + +One of the consequences of Mojo not performing function instantiation in the +parser like C++ is that Mojo cannot always figure out whether some parametric +types are equal and complain about an invalid conversion. This typically occurs +in static dispatch patterns. For example, the following code won't compile: + +```mojo +fn take_simd8(x: SIMD[DType.float32, 8]): + pass + +fn generic_simd[nelts: Int](x: SIMD[DType.float32, nelts]): + @parameter + if nelts == 8: + take_simd8(x) +``` + +The parser will complain: + +```plaintext +error: invalid call to 'take_simd8': argument #0 cannot be converted from +'SIMD[f32, nelts]' to 'SIMD[f32, 8]' + take_simd8(x) + ~~~~~~~~~~^~~ +``` + +This is because the parser fully type-checks the function without instantiation, +and the type of `x` is still `SIMD[f32, nelts]`, and not `SIMD[f32, 8]`, despite +the static conditional. The remedy is to manually "rebind" the type of `x`, +using the `rebind` builtin, which inserts a compile-time assert that the input +and result types resolve to the same type after function instantiation: + +```mojo +fn take_simd8(x: SIMD[DType.float32, 8]): + pass + +fn generic_simd[nelts: Int](x: SIMD[DType.float32, nelts]): + @parameter + if nelts == 8: + take_simd8(rebind[SIMD[DType.float32, 8]](x)) +``` diff --git a/docs/manual/pointers.ipynb b/docs/manual/pointers.ipynb deleted file mode 100644 index 7b2b495c0f..0000000000 --- a/docs/manual/pointers.ipynb +++ /dev/null @@ -1,751 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Unsafe pointers\n", - "description: Using unsafe pointers to access dynamically-allocated memory.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) type \n", - "creates an indirect reference to a location in memory.\n", - "You can use an `UnsafePointer` to dynamically allocate and free memory, or to\n", - "point to memory allocated by some other piece of code. You can use these\n", - "pointers to write code that interacts with low-level interfaces, to interface\n", - "with other programming languages, or to build certain kinds of data structures.\n", - "But as the name suggests, they're inherently _unsafe_. For example, when using\n", - "unsafe pointers, you're responsible for ensuring that memory gets allocated and\n", - "freed correctly.\n", - "\n", - ":::note \n", - "\n", - "In addition to unsafe pointers, Mojo supports a safe \n", - "[`Pointer`](/mojo/stdlib/memory/pointer/Pointer) type. See\n", - "[`UnsafePointer` and `Pointer`](#unsafepointer-and-pointer) for a brief\n", - "comparison of the types.\n", - "\n", - ":::\n", - "\n", - "## What is a pointer?\n", - "\n", - "An `UnsafePointer` is a type that holds an address to memory. You can store\n", - "and retrieve values in that memory. The `UnsafePointer` type is _generic_—it can \n", - "point to any type of value, and the value type is specified as a parameter. The\n", - "value pointed to by a pointer is sometimes called a _pointee_." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "from memory import UnsafePointer\n", - "\n", - "# Allocate memory to hold a value\n", - "var ptr = UnsafePointer[Int].alloc(1)\n", - "# Initialize the allocated memory\n", - "ptr.init_pointee_copy(100)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "
\n", - "\n", - " ![](./images/pointer-diagram.png#light)\n", - " ![](./images/pointer-diagram-dark.png#dark)\n", - "\n", - "
Figure 1. Pointer and pointee
\n", - "
\n", - "\n", - "\n", - "Accessing the memory—to retrieve or update a value—is called \n", - "_dereferencing_ the pointer. You can dereference a pointer by following the\n", - "variable name with an empty pair of square brackets:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "110\n" - ] - } - ], - "source": [ - "# Update an initialized value\n", - "ptr[] += 10\n", - "# Access an initialized value\n", - "print(ptr[])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also allocate memory to hold multiple values to build array-like\n", - "structures. For details, see \n", - "[Storing multiple values](#storing-multiple-values)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Lifecycle of a pointer\n", - "\n", - "At any given time, a pointer can be in one of several states:\n", - "\n", - "- Uninitialized. Just like any variable, a variable of type `UnsafePointer` can\n", - " be declared but uninitialized.\n", - "\n", - " \n", - " ```mojo\n", - " var ptr: UnsafePointer[Int]\n", - " ```\n", - "\n", - "- Null. A null pointer has an address of 0, indicating an invalid pointer.\n", - "\n", - " ```mojo\n", - " ptr = UnsafePointer[Int]()\n", - " ```\n", - "\n", - "- Pointing to allocated, uninitialized memory. The `alloc()` static method\n", - " returns a pointer to a newly-allocated block of memory with space for the \n", - " specified number of elements of the pointee's type.\n", - "\n", - " ```mojo\n", - " ptr = UnsafePointer[Int].alloc(1)\n", - " ```\n", - " Trying to dereference a pointer to uninitialized memory results in undefined \n", - " behavior. \n", - "\n", - "- Pointing to initialized memory. You can initialize an allocated, uninitialized\n", - " pointer by moving or copying an existing value into the memory. Or you can use\n", - " the `address_of()` static method to get a pointer to an existing value. \n", - "\n", - " ```mojo\n", - " ptr.init_pointee_copy(value)\n", - " # or\n", - " ptr.init_pointee_move(value^)\n", - " # or \n", - " ptr = UnsafePointer[Int].address_of(value)\n", - " ```\n", - " \n", - " Once the value is initialized, you can read or mutate it using the dereference\n", - " syntax: \n", - "\n", - " ```mojo\n", - " oldValue = ptr[]\n", - " ptr[] = newValue\n", - " ```\n", - "\n", - "- Dangling. When you free the pointer's allocated memory, you're left with a \n", - " _dangling pointer_. The address still points to its previous location, but the\n", - " memory is no longer allocated to this pointer. Trying to dereference the\n", - " pointer, or calling any method that would access the memory location results\n", - " in undefined behavior.\n", - "\n", - " ```mojo\n", - " ptr.free()\n", - " ```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "The following diagram shows the lifecycle of an `UnsafePointer`:\n", - "\n", - "
\n", - "\n", - " ![](./images/pointer-lifecycle.png#light)\n", - " ![](./images/pointer-lifecycle-dark.png#dark)\n", - "\n", - "
Figure 2. Lifecycle of an UnsafePointer
\n", - "
\n", - "\n", - "### Allocating memory\n", - "\n", - "Use the static `alloc()` method to allocate memory. The method returns a new\n", - "pointer pointing to the requested memory. You can allocate space for one or \n", - "more values of the pointee's type.\n", - "\n", - "```mojo\n", - "ptr = UnsafePointer[Int].alloc(10) # Allocate space for 10 Int values\n", - "```\n", - "\n", - "The allocated space is _uninitialized_—like a variable that's been declared but\n", - "not initialized.\n", - "\n", - "### Initializing the pointee\n", - "\n", - "To initialize allocated memory, `UnsafePointer` provides the\n", - "[`init_pointee_copy()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#init_pointee_copy)\n", - "and [`init_pointee_move()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#init_pointee_move)\n", - "methods. For example:\n", - "\n", - "```mojo\n", - "ptr.init_pointee_copy(my_value)\n", - "```\n", - "\n", - "To move a value into the pointer's memory location, use\n", - "`init_pointee_move()`:\n", - "\n", - "```mojo\n", - "str_ptr.init_pointee_move(my_string^)\n", - "```\n", - "\n", - "Note that to move the value, you usually need to add the transfer sigil\n", - "(`^`), unless the value is a [trivial\n", - "type](/mojo/manual/types#register-passable-memory-only-and-trivial-types) (like\n", - "`Int`) or a newly-constructed, \"owned\" value:\n", - "\n", - "```mojo\n", - "str_ptr.init_pointee_move(str(\"Owned string\"))\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Alternately, you can get a pointer to an existing value using the static \n", - "`address_of()` method. This is useful for getting a pointer to a value on the \n", - "stack, for example." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "var counter: Int = 5\n", - "ptr = UnsafePointer[Int].address_of(counter)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that when calling `address_of()`, you don't need to allocate memory ahead\n", - "of time, since you're pointing to an existing value." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "### Dereferencing pointers\n", - "\n", - "Use the `[]` dereference operator to access the value stored at a pointer (the\n", - " \"pointee\").\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "5\n" - ] - } - ], - "source": [ - "# Read from pointee\n", - "print(ptr[])\n", - "# mutate pointee\n", - "ptr[] = 0\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "If you've allocated space for multiple values, you can use subscript syntax to\n", - "access the values, as if they were an array, like `ptr[3]`. The empty subscript\n", - "`[]` has the same meaning as `[0]`.\n", - "\n", - ":::caution\n", - "\n", - "The dereference operator assumes that the memory being dereferenced is \n", - "initialized. Dereferencing uninitialized memory results in undefined behavior.\n", - "\n", - ":::\n", - "\n", - "You cannot safely use the dereference operator on uninitialized memory, even to\n", - "_initialize_ a pointee. This is because assigning to a dereferenced pointer\n", - "calls lifecycle methods on the existing pointee (such as the destructor, move\n", - "constructor or copy constructor).\n", - "\n", - "```mojo\n", - "str_ptr = UnsafePointer[String].alloc(1)\n", - "# str_ptr[] = \"Testing\" # Undefined behavior!\n", - "str_ptr.init_pointee_move(\"Testing\")\n", - "str_ptr[] += \" pointers\" # Works now\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Destroying or removing values\n", - "\n", - "The \n", - "[`take_pointee()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#take_pointee)\n", - "method moves the pointee from the memory location pointed to by `ptr`. This is\n", - "a consuming move—it invokes `__moveinit__()` on the destination value. It leaves\n", - "the memory location uninitialized.\n", - "\n", - "The [`destroy_pointee()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#destroy_pointee)\n", - "method calls the destructor on the pointee, and leaves the memory location\n", - "pointed to by `ptr` uninitialized. \n", - "\n", - "Both `take_pointee()` and `destroy_pointee()` require that the pointer is \n", - "non-null, and the memory location contains a valid, initialized value of the \n", - "pointee's type; otherwise the function results in undefined behavior.\n", - "\n", - "The [`move_pointee_into(self, dst)`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#move_pointee_into)\n", - "method moves the pointee from one pointer location to another. Both pointers\n", - "must be non-null. The source location must contain a valid, initialized value of \n", - "the pointee's type, and is left uninitialized after the call. The destination \n", - "location is assumed to be uninitialized—if it contains a valid value, that\n", - "value's destructor is not run. The value from the source location is moved to\n", - "the destination location as a consuming move. This function also has undefined\n", - "behavior if any of its prerequisites is not met." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Freeing memory\n", - "\n", - "Calling [`free()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#free) on a \n", - "pointer frees the memory allocated by the pointer. It doesn't call the \n", - "destructors on any values stored in the memory—you need to do that explicitly\n", - "(for example, using\n", - "[`destroy_pointee()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#destroy_pointee) or\n", - "one of the other functions described in \n", - "[Destroying or removing values](#destroying-or-removing-values)).\n", - "\n", - "Disposing of a pointer without freeing the associated memory can result in a\n", - "memory leak—where your program keeps taking more and more memory, because not\n", - "all allocated memory is being freed.\n", - "\n", - "On the other hand, if you have multiple copies of a pointer accessing the same\n", - "memory, you need to make sure you only call `free()` on one of them. Freeing the\n", - "same memory twice is also an error.\n", - "\n", - "After freeing a pointer's memory, you're left with a dangling pointer—its\n", - "address still points to the freed memory. Any attempt to access the memory,\n", - "like dereferencing the pointer results in undefined behavior.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Storing multiple values\n", - "\n", - "As mentioned in [Allocating memory](#allocating-memory), you can use an \n", - "`UnsafePointer` to allocate memory for multiple values. The memory is allocated\n", - "as a single, contiguous block. Pointers support arithmetic: adding an integer\n", - "to a pointer returns a new pointer offset by the specified number of values from\n", - "the original pointer:\n", - "\n", - "```mojo\n", - "third_ptr = first_ptr + 2\n", - "```\n", - "\n", - "Pointers also support subtraction, as well as in-place addition and subtraction:\n", - "\n", - "```mojo\n", - "# Advance the pointer one element:\n", - "ptr += 1\n", - "```\n", - "\n", - "
\n", - "\n", - " ![](./images/pointer-offset.png#light)\n", - " ![](./images/pointer-offset-dark.png#dark)\n", - "\n", - "
Figure 3. Pointer arithmetic
\n", - "
\n", - "\n", - "For example, the following example allocates memory to store 6 `Float64`\n", - "values, and initializes them all to zero." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "float_ptr = UnsafePointer[Float64].alloc(6)\n", - "for offset in range(6):\n", - " (float_ptr+offset).init_pointee_copy(0.0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once the values are initialized, you can access them using subscript syntax:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.0, 0.0, 3.0, 0.0, 0.0, 0.0, " - ] - } - ], - "source": [ - "float_ptr[2] = 3.0\n", - "for offset in range(6):\n", - " print(float_ptr[offset], end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Working with foreign pointers\n", - "\n", - "When exchanging data with other programming languages, you may need to construct\n", - "an `UnsafePointer` from a foreign pointer. Mojo restricts creating \n", - "`UnsafePointer` instances from arbitrary addresses, to avoid users accidentally \n", - "creating pointers that _alias_ each other (that is, two pointers that refer to\n", - "the same location). However, there are specific methods you can use to get an\n", - "`UnsafePointer` from a Python or C/C++ pointer.\n", - "\n", - "When dealing with memory allocated elsewhere, you need to be aware of who's\n", - "responsible for freeing the memory. Freeing memory allocated elsewhere \n", - "can result in undefined behavior.\n", - "\n", - "You also need to be aware of the format of the data stored in memory, including\n", - "data types and byte order. For more information, see \n", - "[Converting data: bitcasting and byte order](#converting-data-bitcasting-and-byte-order)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "### Creating a Mojo pointer from a Python pointer\n", - "\n", - "The `PythonObject` type defines\n", - "an [`unsafe_get_as_pointer()`](/mojo/stdlib/python/object/PythonObject#unsafe_get_as_pointer) \n", - "method to construct an `UnsafePointer` from a Python address.\n", - "\n", - "For example, the following code creates a NumPy array and then accesses the\n", - "data using a Mojo pointer:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1, 2, 3, 4, 5, 6, 7, 8, 9, " - ] - } - ], - "source": [ - "from python import Python\n", - "from memory import UnsafePointer\n", - "\n", - "def share_array():\n", - " np = Python.import_module(\"numpy\")\n", - " arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])\n", - " ptr = arr.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.int64]()\n", - " for i in range(9):\n", - " print(ptr[i], end=\", \")\n", - "\n", - "share_array()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "NumPy arrays implement the\n", - "[array interface protocol](https://numpy.org/doc/stable/reference/arrays.interface.html),\n", - "which defines the `__array_interface__` object used in the example, where \n", - "`__array_interface__[\"data\"][0]` is a Python integer holding the address of the\n", - "underlying data. The `unsafe_get_as_pointer()` method constructs an \n", - "`UnsafePointer` to this address." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Working with C/C++ pointers\n", - "\n", - "If you call a C/C++ function that returns a pointer using the\n", - "[`external_call`](/mojo/stdlib/sys/ffi/external_call) function, you can specify\n", - "the return type as an `UnsafePointer`, and Mojo will handle the type conversion\n", - "for you." - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "from sys.ffi import external_call\n", - "\n", - "def get_foreign_pointer() -> UnsafePointer[Int]:\n", - " ptr = external_call[\n", - " \"my_c_function\", # external function name\n", - " UnsafePointer[Int] # return type\n", - " ]()\n", - " return ptr" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Converting data: bitcasting and byte order\n", - "\n", - "Bitcasting a pointer returns a new pointer that has the same memory location,\n", - "but a new data type. This can be useful if you need to access different types of\n", - "data from a single area of memory. This can happen when you're reading binary\n", - "files, like image files, or receiving data over the network.\n", - "\n", - "The following sample processes a format that consists of chunks of data,\n", - "where each chunk contains a variable number of 32-bit integers.\n", - "Each chunk begins with an 8-bit integer that identifies the number of values\n", - "in the chunk." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "\n", - "def read_chunks(owned ptr: UnsafePointer[UInt8]) -> List[List[UInt32]]:\n", - " chunks = List[List[UInt32]]()\n", - " # A chunk size of 0 indicates the end of the data\n", - " chunk_size = int(ptr[])\n", - " while (chunk_size > 0):\n", - " # Skip the 1 byte chunk_size and get a pointer to the first\n", - " # UInt32 in the chunk\n", - " ui32_ptr = (ptr + 1).bitcast[UInt32]()\n", - " chunk = List[UInt32](capacity=chunk_size)\n", - " for i in range(chunk_size):\n", - " chunk.append(ui32_ptr[i])\n", - " chunks.append(chunk)\n", - " # Move our pointer to the next byte after the current chunk\n", - " ptr += (1 + 4 * chunk_size)\n", - " # Read the size of the next chunk\n", - " chunk_size = int(ptr[])\n", - " return chunks" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When dealing with data read in from a file or from the network, you may also\n", - "need to deal with byte order. Most systems use little-endian byte order (also\n", - "called least-signficicant byte, or LSB) where the least-significant byte in a\n", - "multibyte value comes first. For example, the number 1001 can be represented in\n", - "hexadecimal as 0x03E9, where E9 is the least-significant byte. Represented as a\n", - "16-bit little-endian integer, the two bytes are ordered E9 03. As a 32-bit \n", - "integer, it would be represented as E9 03 00 00. \n", - "\n", - "Big-endian or most-significant byte (MSB) ordering is the opposite: in the \n", - "32-bit case, 00 00 03 E9. MSB ordering is frequently used in file formats and\n", - "when transmitting data over the network. You can use the \n", - "[`byte_swap()`](/mojo/stdlib/bit/bit/byte_swap) function to swap the byte\n", - "order of a SIMD value from big-endian to little-endian or the reverse. For\n", - "example, if the method above was reading big-endian data, you'd just need to\n", - "change a single line:\n", - "\n", - "```mojo\n", - "chunk.append(byte_swap(ui32_ptr[i]))\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Working with SIMD vectors\n", - "\n", - "The `UnsafePointer` type includes\n", - "[`load()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#load) and\n", - "[`store()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#store) methods for\n", - "performing aligned loads and stores of scalar values. It also has methods\n", - "supporting strided load/store and gather/scatter.\n", - "\n", - "Strided load loads values from memory into a SIMD vector using an offset (the\n", - "\"stride\") between successive memory addresses. This can be useful for\n", - "extracting rows or columns from tabular data, or for extracting individual\n", - "values from structured data. For example, consider the data for an RGB image,\n", - "where each pixel is made up of three 8-bit values, for red, green, and blue. If\n", - "you want to access just the red values, you can use a strided load or store.\n", - "\n", - "
\n", - "\n", - " ![](./images/strided-load-storage.png#light)\n", - " ![](./images/strided-load-storage-dark.png#dark)\n", - "\n", - "
Figure 4. Strided load
\n", - "
\n", - "\n", - "The following function uses the \n", - "[`strided_load()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#strided_load)\n", - "and \n", - "[`strided_store()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#strided_store)\n", - "methods to invert the red pixel values in an image, 8 values at a time. (Note\n", - "that this function only handles images where the number of pixels is evenly\n", - "divisible by eight.)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [], - "source": [ - "def invert_red_channel(ptr: UnsafePointer[UInt8], pixel_count: Int):\n", - " # number of values loaded or stored at a time\n", - " alias simd_width = 8\n", - " # bytes per pixel, which is also the stride size\n", - " bpp = 3\n", - " for i in range(0, pixel_count * bpp, simd_width * bpp):\n", - " red_values = ptr.offset(i).strided_load[width=simd_width](bpp)\n", - " # Invert values and store them in their original locations\n", - " ptr.offset(i).strided_store[width=simd_width](~red_values, bpp)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The [`gather()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#gather) and\n", - "[`scatter()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#scatter) methods\n", - "let you load or store a set of values that are stored in arbitrary locations. \n", - "You do this by passing in a SIMD vector of _offsets_ to the current pointer. For\n", - "example, when using `gather()`, the nth value in the vector is loaded\n", - "from (pointer address) + offset[n]." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Safety\n", - "\n", - "Unsafe pointers are unsafe for several reasons:\n", - "\n", - "- Memory management is up to the user. You need to manually allocate\n", - " and free memory, and be aware of when other APIs are allocating or freeing\n", - " memory for you.\n", - "\n", - "- `UnsafePointer` values are _nullable_—that is, the pointer\n", - " is not guaranteed to point to anything. And even when a pointer points to\n", - " allocated memory, that memory may not be _initialized_.\n", - "\n", - "- Mojo doesn't track lifetimes for the data pointed to by an `UnsafePointer`.\n", - " When you use an `UnsafePointer`, managing memory and knowing when to destroy\n", - " objects is your responsibility. \n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## `UnsafePointer` and `Pointer`\n", - "\n", - "The [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) type is essentially a \n", - "safe pointer type. Like a pointer, you can derference a `Pointer` using the \n", - "dereference operator, `[]`. However, the `Pointer` type has several\n", - "differences from `UnsafePointer` which make it safer:\n", - "\n", - "- A `Pointer` is _non-nullable_: it always points to something.\n", - "- You can't allocate or free memory using a `Pointer`—only point to an\n", - " existing value.\n", - "- A `Pointer` only refers to a single value. You can't do pointer arithmetic\n", - " with a `Pointer`.\n", - "- A `Pointer` has an associated _origin_, which connects it back to an\n", - " original, owned value. The origin ensures that the value won't be destroyed\n", - " while the pointer exists.\n", - "\n", - "The `Pointer` type shouldn't be confused with the immutable and mutable\n", - "references used with the `borrowed` and `inout` argument conventions. Those\n", - "references do not require explicit dereferencing, unlike a `Pointer` or \n", - "`UnsafePointer`." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/pointers.mdx b/docs/manual/pointers.mdx new file mode 100644 index 0000000000..37f0a84977 --- /dev/null +++ b/docs/manual/pointers.mdx @@ -0,0 +1,530 @@ +--- +title: Unsafe pointers +description: Using unsafe pointers to access dynamically-allocated memory. +--- + +The [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) type +creates an indirect reference to a location in memory. +You can use an `UnsafePointer` to dynamically allocate and free memory, or to +point to memory allocated by some other piece of code. You can use these +pointers to write code that interacts with low-level interfaces, to interface +with other programming languages, or to build certain kinds of data structures. +But as the name suggests, they're inherently *unsafe*. For example, when using +unsafe pointers, you're responsible for ensuring that memory gets allocated and +freed correctly. + +:::note + +In addition to unsafe pointers, Mojo supports a safe +[`Pointer`](/mojo/stdlib/memory/pointer/Pointer) type. See +[`UnsafePointer` and `Pointer`](#unsafepointer-and-pointer) for a brief +comparison of the types. + +::: + +## What is a pointer? + +An `UnsafePointer` is a type that holds an address to memory. You can store +and retrieve values in that memory. The `UnsafePointer` type is *generic*—it can +point to any type of value, and the value type is specified as a parameter. The +value pointed to by a pointer is sometimes called a *pointee*. + +```mojo +from memory import UnsafePointer + +# Allocate memory to hold a value +var ptr = UnsafePointer[Int].alloc(1) +# Initialize the allocated memory +ptr.init_pointee_copy(100) +``` + +
+ +![](./images/pointer-diagram.png#light) +![](./images/pointer-diagram-dark.png#dark) + +
Figure 1. Pointer and pointee
+
+ +Accessing the memory—to retrieve or update a value—is called +*dereferencing* the pointer. You can dereference a pointer by following the +variable name with an empty pair of square brackets: + +```mojo +# Update an initialized value +ptr[] += 10 +# Access an initialized value +print(ptr[]) +``` + +```output +110 +``` + +You can also allocate memory to hold multiple values to build array-like +structures. For details, see +[Storing multiple values](#storing-multiple-values). + +## Lifecycle of a pointer + +At any given time, a pointer can be in one of several states: + +* Uninitialized. Just like any variable, a variable of type `UnsafePointer` can + be declared but uninitialized. + + ```mojo + var ptr: UnsafePointer[Int] + ``` + +* Null. A null pointer has an address of 0, indicating an invalid pointer. + + ```mojo + ptr = UnsafePointer[Int]() + ``` + +* Pointing to allocated, uninitialized memory. The `alloc()` static method + returns a pointer to a newly-allocated block of memory with space for the + specified number of elements of the pointee's type. + + ```mojo + ptr = UnsafePointer[Int].alloc(1) + ``` + + Trying to dereference a pointer to uninitialized memory results in undefined + behavior. + +* Pointing to initialized memory. You can initialize an allocated, uninitialized + pointer by moving or copying an existing value into the memory. Or you can use + the `address_of()` static method to get a pointer to an existing value. + + ```mojo + ptr.init_pointee_copy(value) + # or + ptr.init_pointee_move(value^) + # or + ptr = UnsafePointer[Int].address_of(value) + ``` + + Once the value is initialized, you can read or mutate it using the dereference + syntax: + + ```mojo + oldValue = ptr[] + ptr[] = newValue + ``` + +* Dangling. When you free the pointer's allocated memory, you're left with a + *dangling pointer*. The address still points to its previous location, but the + memory is no longer allocated to this pointer. Trying to dereference the + pointer, or calling any method that would access the memory location results + in undefined behavior. + + ```mojo + ptr.free() + ``` + +The following diagram shows the lifecycle of an `UnsafePointer`: + +
+ +![](./images/pointer-lifecycle.png#light) +![](./images/pointer-lifecycle-dark.png#dark) + +
Figure 2. Lifecycle of an UnsafePointer
+
+ +### Allocating memory + +Use the static `alloc()` method to allocate memory. The method returns a new +pointer pointing to the requested memory. You can allocate space for one or +more values of the pointee's type. + +```mojo +ptr = UnsafePointer[Int].alloc(10) # Allocate space for 10 Int values +``` + +The allocated space is *uninitialized*—like a variable that's been declared but +not initialized. + +### Initializing the pointee + +To initialize allocated memory, `UnsafePointer` provides the +[`init_pointee_copy()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#init_pointee_copy) +and [`init_pointee_move()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#init_pointee_move) +methods. For example: + +```mojo +ptr.init_pointee_copy(my_value) +``` + +To move a value into the pointer's memory location, use +`init_pointee_move()`: + +```mojo +str_ptr.init_pointee_move(my_string^) +``` + +Note that to move the value, you usually need to add the transfer sigil +(`^`), unless the value is a [trivial +type](/mojo/manual/types#register-passable-memory-only-and-trivial-types) (like +`Int`) or a newly-constructed, "owned" value: + +```mojo +str_ptr.init_pointee_move(str("Owned string")) +``` + +Alternately, you can get a pointer to an existing value using the static +`address_of()` method. This is useful for getting a pointer to a value on the +stack, for example. + +```mojo +var counter: Int = 5 +ptr = UnsafePointer[Int].address_of(counter) +``` + +Note that when calling `address_of()`, you don't need to allocate memory ahead +of time, since you're pointing to an existing value. + +### Dereferencing pointers + +Use the `[]` dereference operator to access the value stored at a pointer (the +"pointee"). + +```mojo +# Read from pointee +print(ptr[]) +# mutate pointee +ptr[] = 0 + +``` + +```output +5 +``` + +If you've allocated space for multiple values, you can use subscript syntax to +access the values, as if they were an array, like `ptr[3]`. The empty subscript +`[]` has the same meaning as `[0]`. + +:::caution + +The dereference operator assumes that the memory being dereferenced is +initialized. Dereferencing uninitialized memory results in undefined behavior. + +::: + +You cannot safely use the dereference operator on uninitialized memory, even to +*initialize* a pointee. This is because assigning to a dereferenced pointer +calls lifecycle methods on the existing pointee (such as the destructor, move +constructor or copy constructor). + +```mojo +str_ptr = UnsafePointer[String].alloc(1) +# str_ptr[] = "Testing" # Undefined behavior! +str_ptr.init_pointee_move("Testing") +str_ptr[] += " pointers" # Works now +``` + +### Destroying or removing values + +The +[`take_pointee()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#take_pointee) +method moves the pointee from the memory location pointed to by `ptr`. This is +a consuming move—it invokes `__moveinit__()` on the destination value. It leaves +the memory location uninitialized. + +The [`destroy_pointee()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#destroy_pointee) +method calls the destructor on the pointee, and leaves the memory location +pointed to by `ptr` uninitialized. + +Both `take_pointee()` and `destroy_pointee()` require that the pointer is +non-null, and the memory location contains a valid, initialized value of the +pointee's type; otherwise the function results in undefined behavior. + +The [`move_pointee_into(self, dst)`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#move_pointee_into) +method moves the pointee from one pointer location to another. Both pointers +must be non-null. The source location must contain a valid, initialized value of +the pointee's type, and is left uninitialized after the call. The destination +location is assumed to be uninitialized—if it contains a valid value, that +value's destructor is not run. The value from the source location is moved to +the destination location as a consuming move. This function also has undefined +behavior if any of its prerequisites is not met. + +### Freeing memory + +Calling [`free()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#free) on a +pointer frees the memory allocated by the pointer. It doesn't call the +destructors on any values stored in the memory—you need to do that explicitly +(for example, using +[`destroy_pointee()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#destroy_pointee) or +one of the other functions described in +[Destroying or removing values](#destroying-or-removing-values)). + +Disposing of a pointer without freeing the associated memory can result in a +memory leak—where your program keeps taking more and more memory, because not +all allocated memory is being freed. + +On the other hand, if you have multiple copies of a pointer accessing the same +memory, you need to make sure you only call `free()` on one of them. Freeing the +same memory twice is also an error. + +After freeing a pointer's memory, you're left with a dangling pointer—its +address still points to the freed memory. Any attempt to access the memory, +like dereferencing the pointer results in undefined behavior. + +## Storing multiple values + +As mentioned in [Allocating memory](#allocating-memory), you can use an +`UnsafePointer` to allocate memory for multiple values. The memory is allocated +as a single, contiguous block. Pointers support arithmetic: adding an integer +to a pointer returns a new pointer offset by the specified number of values from +the original pointer: + +```mojo +third_ptr = first_ptr + 2 +``` + +Pointers also support subtraction, as well as in-place addition and subtraction: + +```mojo +# Advance the pointer one element: +ptr += 1 +``` + +
+ +![](./images/pointer-offset.png#light) +![](./images/pointer-offset-dark.png#dark) + +
Figure 3. Pointer arithmetic
+
+ +For example, the following example allocates memory to store 6 `Float64` +values, and initializes them all to zero. + +```mojo +float_ptr = UnsafePointer[Float64].alloc(6) +for offset in range(6): + (float_ptr+offset).init_pointee_copy(0.0) +``` + +Once the values are initialized, you can access them using subscript syntax: + +```mojo +float_ptr[2] = 3.0 +for offset in range(6): + print(float_ptr[offset], end=", ") +``` + +```output +0.0, 0.0, 3.0, 0.0, 0.0, 0.0, +``` + +## Working with foreign pointers + +When exchanging data with other programming languages, you may need to construct +an `UnsafePointer` from a foreign pointer. Mojo restricts creating +`UnsafePointer` instances from arbitrary addresses, to avoid users accidentally +creating pointers that *alias* each other (that is, two pointers that refer to +the same location). However, there are specific methods you can use to get an +`UnsafePointer` from a Python or C/C++ pointer. + +When dealing with memory allocated elsewhere, you need to be aware of who's +responsible for freeing the memory. Freeing memory allocated elsewhere +can result in undefined behavior. + +You also need to be aware of the format of the data stored in memory, including +data types and byte order. For more information, see +[Converting data: bitcasting and byte order](#converting-data-bitcasting-and-byte-order). + +### Creating a Mojo pointer from a Python pointer + +The `PythonObject` type defines +an [`unsafe_get_as_pointer()`](/mojo/stdlib/python/object/PythonObject#unsafe_get_as_pointer) +method to construct an `UnsafePointer` from a Python address. + +For example, the following code creates a NumPy array and then accesses the +data using a Mojo pointer: + +```mojo +from python import Python +from memory import UnsafePointer + +def share_array(): + np = Python.import_module("numpy") + arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) + ptr = arr.__array_interface__["data"][0].unsafe_get_as_pointer[DType.int64]() + for i in range(9): + print(ptr[i], end=", ") + +share_array() +``` + +```output +1, 2, 3, 4, 5, 6, 7, 8, 9, +``` + +NumPy arrays implement the +[array interface protocol](https://numpy.org/doc/stable/reference/arrays.interface.html), +which defines the `__array_interface__` object used in the example, where +`__array_interface__["data"][0]` is a Python integer holding the address of the +underlying data. The `unsafe_get_as_pointer()` method constructs an +`UnsafePointer` to this address. + +### Working with C/C++ pointers + +If you call a C/C++ function that returns a pointer using the +[`external_call`](/mojo/stdlib/sys/ffi/external_call) function, you can specify +the return type as an `UnsafePointer`, and Mojo will handle the type conversion +for you. + +```mojo +from sys.ffi import external_call + +def get_foreign_pointer() -> UnsafePointer[Int]: + ptr = external_call[ + "my_c_function", # external function name + UnsafePointer[Int] # return type + ]() + return ptr +``` + +## Converting data: bitcasting and byte order + +Bitcasting a pointer returns a new pointer that has the same memory location, +but a new data type. This can be useful if you need to access different types of +data from a single area of memory. This can happen when you're reading binary +files, like image files, or receiving data over the network. + +The following sample processes a format that consists of chunks of data, +where each chunk contains a variable number of 32-bit integers. +Each chunk begins with an 8-bit integer that identifies the number of values +in the chunk. + +```mojo + +def read_chunks(owned ptr: UnsafePointer[UInt8]) -> List[List[UInt32]]: + chunks = List[List[UInt32]]() + # A chunk size of 0 indicates the end of the data + chunk_size = int(ptr[]) + while (chunk_size > 0): + # Skip the 1 byte chunk_size and get a pointer to the first + # UInt32 in the chunk + ui32_ptr = (ptr + 1).bitcast[UInt32]() + chunk = List[UInt32](capacity=chunk_size) + for i in range(chunk_size): + chunk.append(ui32_ptr[i]) + chunks.append(chunk) + # Move our pointer to the next byte after the current chunk + ptr += (1 + 4 * chunk_size) + # Read the size of the next chunk + chunk_size = int(ptr[]) + return chunks +``` + +When dealing with data read in from a file or from the network, you may also +need to deal with byte order. Most systems use little-endian byte order (also +called least-signficicant byte, or LSB) where the least-significant byte in a +multibyte value comes first. For example, the number 1001 can be represented in +hexadecimal as 0x03E9, where E9 is the least-significant byte. Represented as a +16-bit little-endian integer, the two bytes are ordered E9 03. As a 32-bit +integer, it would be represented as E9 03 00 00. + +Big-endian or most-significant byte (MSB) ordering is the opposite: in the +32-bit case, 00 00 03 E9. MSB ordering is frequently used in file formats and +when transmitting data over the network. You can use the +[`byte_swap()`](/mojo/stdlib/bit/bit/byte_swap) function to swap the byte +order of a SIMD value from big-endian to little-endian or the reverse. For +example, if the method above was reading big-endian data, you'd just need to +change a single line: + +```mojo +chunk.append(byte_swap(ui32_ptr[i])) +``` + +## Working with SIMD vectors + +The `UnsafePointer` type includes +[`load()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#load) and +[`store()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#store) methods for +performing aligned loads and stores of scalar values. It also has methods +supporting strided load/store and gather/scatter. + +Strided load loads values from memory into a SIMD vector using an offset (the +"stride") between successive memory addresses. This can be useful for +extracting rows or columns from tabular data, or for extracting individual +values from structured data. For example, consider the data for an RGB image, +where each pixel is made up of three 8-bit values, for red, green, and blue. If +you want to access just the red values, you can use a strided load or store. + +
+ +![](./images/strided-load-storage.png#light) +![](./images/strided-load-storage-dark.png#dark) + +
Figure 4. Strided load
+
+ +The following function uses the +[`strided_load()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#strided_load) +and +[`strided_store()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#strided_store) +methods to invert the red pixel values in an image, 8 values at a time. (Note +that this function only handles images where the number of pixels is evenly +divisible by eight.) + +```mojo +def invert_red_channel(ptr: UnsafePointer[UInt8], pixel_count: Int): + # number of values loaded or stored at a time + alias simd_width = 8 + # bytes per pixel, which is also the stride size + bpp = 3 + for i in range(0, pixel_count * bpp, simd_width * bpp): + red_values = ptr.offset(i).strided_load[width=simd_width](bpp) + # Invert values and store them in their original locations + ptr.offset(i).strided_store[width=simd_width](~red_values, bpp) +``` + +The [`gather()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#gather) and +[`scatter()`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer#scatter) methods +let you load or store a set of values that are stored in arbitrary locations. +You do this by passing in a SIMD vector of *offsets* to the current pointer. For +example, when using `gather()`, the nth value in the vector is loaded +from (pointer address) + offset[n]. + +## Safety + +Unsafe pointers are unsafe for several reasons: + +* Memory management is up to the user. You need to manually allocate + and free memory, and be aware of when other APIs are allocating or freeing + memory for you. + +* `UnsafePointer` values are *nullable*—that is, the pointer + is not guaranteed to point to anything. And even when a pointer points to + allocated memory, that memory may not be *initialized*. + +* Mojo doesn't track lifetimes for the data pointed to by an `UnsafePointer`. + When you use an `UnsafePointer`, managing memory and knowing when to destroy + objects is your responsibility. + +## `UnsafePointer` and `Pointer` + +The [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) type is essentially a +safe pointer type. Like a pointer, you can derference a `Pointer` using the +dereference operator, `[]`. However, the `Pointer` type has several +differences from `UnsafePointer` which make it safer: + +* A `Pointer` is *non-nullable*: it always points to something. +* You can't allocate or free memory using a `Pointer`—only point to an + existing value. +* A `Pointer` only refers to a single value. You can't do pointer arithmetic + with a `Pointer`. +* A `Pointer` has an associated *origin*, which connects it back to an + original, owned value. The origin ensures that the value won't be destroyed + while the pointer exists. + +The `Pointer` type shouldn't be confused with the immutable and mutable +references used with the `borrowed` and `inout` argument conventions. Those +references do not require explicit dereferencing, unlike a `Pointer` or +`UnsafePointer`. diff --git a/docs/manual/python/index.ipynb b/docs/manual/python/index.ipynb deleted file mode 100644 index 3058ef0d98..0000000000 --- a/docs/manual/python/index.ipynb +++ /dev/null @@ -1,297 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Python integration\n", - "sidebar_position: 1\n", - "description: Using Python and Mojo together.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo is still in early development and many Python features are not yet\n", - "implemented. You can't currently write everything in Mojo that you can write in\n", - "Python. And Mojo doesn't have its own ecosystem of packages yet.\n", - "\n", - "To help bridge this gap, Mojo lets you import Python modules, call Python \n", - "functions, and interact with Python objects from Mojo code. The Python code\n", - "runs in a standard Python interpreter (CPython), so your existing Python code\n", - "doesn't need to change.\n", - "\n", - "## Create a Python environment\n", - "\n", - "To successfully integrate Python code with your Mojo project, your environment\n", - "must have a compatible Python runtime installed along with any additional\n", - "Python packages that you want to use. Currently, you can create a compatible\n", - "environment in a couple of ways:\n", - "\n", - "- We recommend that you use [Magic](/magic), our package manager and\n", - " virtual environment manager for MAX and Mojo projects. To use Magic to create\n", - " and manage the virtual environment for your Mojo/Python project, first\n", - " follow the instructions in [Install Magic](/magic/#install-magic).\n", - " Then you can create a new Mojo project like this:\n", - "\n", - " ```sh\n", - " magic init my-mojo-project --format mojoproject\n", - " ```\n", - "\n", - " After creating the project, you can enter the project and install any\n", - " dependencies, for example [NumPy](https://numpy.org/):\n", - "\n", - " ```sh\n", - " cd my-mojo-project\n", - " ```\n", - "\n", - " ```sh\n", - " magic add \"numpy>=2.0\"\n", - " ```\n", - "\n", - "- Alternatively, you can also add MAX and Mojo to a\n", - " [conda](https://docs.conda.io/projects/conda/en/latest/index.html) project.\n", - " To do so, follow the steps in [Add MAX/Mojo to a conda project](/magic/conda).\n", - "\n", - "- It's also possible to convert an existing conda project to Magic as documented\n", - " in [Migrate a conda project to Magic](/magic/#migrate-a-conda-project-to-magic).\n", - "\n", - "## Import a Python module\n", - "\n", - "To import a Python module in Mojo, just call \n", - "[`Python.import_module()`](/mojo/stdlib/python/python/Python#import_module) \n", - "with the module name. The following shows an example of importing the standard\n", - "Python [NumPy](https://numpy.org/) package:\n", - "\n", - "```mojo\n", - "from python import Python\n", - "\n", - "def main():\n", - " # This is equivalent to Python's `import numpy as np`\n", - " np = Python.import_module(\"numpy\")\n", - "\n", - " # Now use numpy as if writing in Python\n", - " array = np.array([1, 2, 3])\n", - " print(array)\n", - "```\n", - "\n", - "Running this program produces the following output:\n", - "\n", - "```\n", - "[1 2 3]\n", - "```" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Assuming that you have the NumPy package installed in your\n", - "[environment](#create-a-python-environment), this imports NumPy and you can use any\n", - "of its features.\n", - "\n", - "A few things to note:\n", - "\n", - "- The `import_module()` method returns a reference to the module in the form of\n", - " a [`PythonObject`](/mojo/stdlib/python/python_object/PythonObject)\n", - " wrapper. You must store the reference in a variable and then use it as shown\n", - " in the example above to access functions, classes, and other objects defined\n", - " by the module. See [Mojo wrapper objects](/mojo/manual/python/types#mojo-wrapper-objects)\n", - " for more information about the `PythonObject` type.\n", - "\n", - "- Currently, you cannot import individual members (such as a single Python class\n", - " or function). You must import the whole Python module and then access members\n", - " through the module name.\n", - "\n", - "- Mojo doesn't yet support top-level code, so the `import_module()` call must\n", - " be inside another method. This means you may need to import a module multiple\n", - " times or pass around a reference to the module. This works the same way as \n", - " Python: importing the module multiple times won't run the initialization\n", - " logic more than once, so you don't pay any performance penalty.\n", - "\n", - "- `import_module()` may raise an exception (for example, if the module isn't\n", - " installed). If you're using it inside an `fn` function, you need to either\n", - " handle errors (using a `try/except` clause), or add the `raises` keyword to\n", - " the function signature. You'll also see this when calling Python functions\n", - " that may raise exceptions. (Raising exceptions is much more common in Python\n", - " code than in the Mojo standard library, which \n", - " [limits their use for performance reasons](/mojo/roadmap#the-standard-library-has-limited-exceptions-use).)\n", - "\n", - "\n", - ":::caution\n", - "\n", - "[`mojo build`](/mojo/cli/build) doesn't include the Python packages used by\n", - "your Mojo project. Instead, Mojo loads the Python interpreter and Python\n", - "packages at runtime, so they must be provided in the environment where you run\n", - "the Mojo program (such as inside the Magic environment where you built the\n", - "executable). For more information, see the section above to [create a Python\n", - "environment](#create-a-python-environment).\n", - "\n", - ":::" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Import a local Python module\n", - "\n", - "If you have some local Python code you want to use in Mojo, just add\n", - "the directory to the Python path and then import the module.\n", - "\n", - "For example, suppose you have a Python file named `mypython.py`:\n", - "\n", - "```python title=\"mypython.py\"\n", - "import numpy as np\n", - "\n", - "def gen_random_values(size, base):\n", - " # generate a size x size array of random numbers between base and base+1\n", - " random_array = np.random.rand(size, size)\n", - " return random_array + base\n", - "```\n", - "\n", - "Here's how you can import it and use it in a Mojo file:\n", - "\n", - "```mojo title=\"main.mojo\"\n", - "from python import Python\n", - "\n", - "def main():\n", - " Python.add_to_path(\"path/to/module\")\n", - " mypython = Python.import_module(\"mypython\")\n", - "\n", - " values = mypython.gen_random_values(2, 3)\n", - " print(values)\n", - "```\n", - "\n", - "Both absolute and relative paths work with \n", - "[`add_to_path()`](/mojo/stdlib/python/python/Python#add_to_path). For example,\n", - "you can import from the local directory like this:\n", - "\n", - "```mojo\n", - "Python.add_to_path(\".\")\n", - "```\n", - "\n", - "## Call Mojo from Python\n", - "\n", - "As shown above, you can call out to Python modules from Mojo. However, there's \n", - "currently no way to do the reverse—import Mojo modules from Python or call Mojo\n", - "functions from Python.\n", - "\n", - "This may present a challenge for using certain modules. For example, many UI \n", - "frameworks have a main event loop that makes callbacks to user-defined code\n", - "in response to UI events. This is sometimes called an \"inversion of control\" \n", - "pattern. Instead of your application code calling *in* to a library, the \n", - "framework code calls *out* to your application code.\n", - "\n", - "This pattern doesn't work because you can't pass Mojo callbacks to a Python \n", - "module.\n", - "\n", - "For example, consider the popular [Tkinter package](https://docs.python.org/3/library/tkinter.html). \n", - "The typical usage for Tkinter is something like this:\n", - "\n", - "- You create a main, or \"root\" window for the application.\n", - "- You add one or more UI widgets to the window. The widgets can have associated\n", - " callback functions (for example, when a button is pushed).\n", - "- You call the root window's `mainloop()` method, which listens for events, \n", - " updates the UI, and invokes callback functions. The main loop keeps running\n", - " until the application exits.\n", - "\n", - "Since Python can't call back into Mojo, one alternative is to have the Mojo\n", - "application drive the event loop and poll for updates. The following example\n", - "uses Tkinter, but the basic approach can be applied to other packages.\n", - "\n", - "First you create a Python module that defines a Tkinter interface, with a window\n", - "and single button:\n", - "\n", - "```python title=\"myapp.py\"\n", - "import tkinter as tk\n", - "\n", - "class App:\n", - " def __init__(self):\n", - " self._root = tk.Tk()\n", - " self.clicked = False\n", - "\n", - " def click(self):\n", - " self.clicked = True\n", - "\n", - " def create_button(self, button_text: str):\n", - " button = tk.Button(\n", - " master=self._root,\n", - " text=button_text,\n", - " command=self.click\n", - " )\n", - " button.place(relx=0.5, rely=0.5, anchor=tk.CENTER)\n", - "\n", - " def create(self, res: str):\n", - " self._root.geometry(res)\n", - " self.create_button(\"Hello Mojo!\")\n", - "\n", - " def update(self):\n", - " self._root.update()\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can call this module from Mojo like this:\n", - "\n", - "```mojo title=\"main.mojo\"\n", - "from python import Python\n", - "\n", - "def button_clicked():\n", - " print(\"Hi from a Mojo🔥 fn!\")\n", - "\n", - "def main():\n", - " Python.add_to_path(\".\")\n", - " app = Python.import_module(\"myapp\").App()\n", - " app.create(\"800x600\")\n", - "\n", - " while True:\n", - " app.update()\n", - " if app.clicked:\n", - " button_clicked()\n", - " app.clicked = False\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Instead of the Python module calling the Tkinter `mainloop()` method, the Mojo \n", - "code calls the `update()` method in a loop and checks the `clicked` attribute \n", - "after each update.\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/python/index.mdx b/docs/manual/python/index.mdx new file mode 100644 index 0000000000..43987ffee3 --- /dev/null +++ b/docs/manual/python/index.mdx @@ -0,0 +1,236 @@ +--- +title: Python integration +sidebar_position: 1 +description: Using Python and Mojo together. +--- + +Mojo is still in early development and many Python features are not yet +implemented. You can't currently write everything in Mojo that you can write in +Python. And Mojo doesn't have its own ecosystem of packages yet. + +To help bridge this gap, Mojo lets you import Python modules, call Python +functions, and interact with Python objects from Mojo code. The Python code +runs in a standard Python interpreter (CPython), so your existing Python code +doesn't need to change. + +## Create a Python environment + +To successfully integrate Python code with your Mojo project, your environment +must have a compatible Python runtime installed along with any additional +Python packages that you want to use. Currently, you can create a compatible +environment in a couple of ways: + +* We recommend that you use [Magic](/magic), our package manager and + virtual environment manager for MAX and Mojo projects. To use Magic to create + and manage the virtual environment for your Mojo/Python project, first + follow the instructions in [Install Magic](/magic/#install-magic). + Then you can create a new Mojo project like this: + + ```sh + magic init my-mojo-project --format mojoproject + ``` + + After creating the project, you can enter the project and install any + dependencies, for example [NumPy](https://numpy.org/): + + ```sh + cd my-mojo-project + ``` + + ```sh + magic add "numpy>=2.0" + ``` + +* Alternatively, you can also add MAX and Mojo to a + [conda](https://docs.conda.io/projects/conda/en/latest/index.html) project. + To do so, follow the steps in [Add MAX/Mojo to a conda project](/magic/conda). + +* It's also possible to convert an existing conda project to Magic as documented + in [Migrate a conda project to Magic](/magic/#migrate-a-conda-project-to-magic). + +## Import a Python module + +To import a Python module in Mojo, just call +[`Python.import_module()`](/mojo/stdlib/python/python/Python#import_module) +with the module name. The following shows an example of importing the standard +Python [NumPy](https://numpy.org/) package: + +```mojo +from python import Python + +def main(): + # This is equivalent to Python's `import numpy as np` + np = Python.import_module("numpy") + + # Now use numpy as if writing in Python + array = np.array([1, 2, 3]) + print(array) +``` + +Running this program produces the following output: + +``` +[1 2 3] +``` + +Assuming that you have the NumPy package installed in your +[environment](#create-a-python-environment), this imports NumPy and you can use any +of its features. + +A few things to note: + +* The `import_module()` method returns a reference to the module in the form of + a [`PythonObject`](/mojo/stdlib/python/python_object/PythonObject) + wrapper. You must store the reference in a variable and then use it as shown + in the example above to access functions, classes, and other objects defined + by the module. See [Mojo wrapper objects](/mojo/manual/python/types#mojo-wrapper-objects) + for more information about the `PythonObject` type. + +* Currently, you cannot import individual members (such as a single Python class + or function). You must import the whole Python module and then access members + through the module name. + +* Mojo doesn't yet support top-level code, so the `import_module()` call must + be inside another method. This means you may need to import a module multiple + times or pass around a reference to the module. This works the same way as + Python: importing the module multiple times won't run the initialization + logic more than once, so you don't pay any performance penalty. + +* `import_module()` may raise an exception (for example, if the module isn't + installed). If you're using it inside an `fn` function, you need to either + handle errors (using a `try/except` clause), or add the `raises` keyword to + the function signature. You'll also see this when calling Python functions + that may raise exceptions. (Raising exceptions is much more common in Python + code than in the Mojo standard library, which + [limits their use for performance reasons](/mojo/roadmap#the-standard-library-has-limited-exceptions-use).) + +:::caution + +[`mojo build`](/mojo/cli/build) doesn't include the Python packages used by +your Mojo project. Instead, Mojo loads the Python interpreter and Python +packages at runtime, so they must be provided in the environment where you run +the Mojo program (such as inside the Magic environment where you built the +executable). For more information, see the section above to [create a Python +environment](#create-a-python-environment). + +::: + +### Import a local Python module + +If you have some local Python code you want to use in Mojo, just add +the directory to the Python path and then import the module. + +For example, suppose you have a Python file named `mypython.py`: + +```python title="mypython.py" +import numpy as np + +def gen_random_values(size, base): + # generate a size x size array of random numbers between base and base+1 + random_array = np.random.rand(size, size) + return random_array + base +``` + +Here's how you can import it and use it in a Mojo file: + +```mojo title="main.mojo" +from python import Python + +def main(): + Python.add_to_path("path/to/module") + mypython = Python.import_module("mypython") + + values = mypython.gen_random_values(2, 3) + print(values) +``` + +Both absolute and relative paths work with +[`add_to_path()`](/mojo/stdlib/python/python/Python#add_to_path). For example, +you can import from the local directory like this: + +```mojo +Python.add_to_path(".") +``` + +## Call Mojo from Python + +As shown above, you can call out to Python modules from Mojo. However, there's +currently no way to do the reverse—import Mojo modules from Python or call Mojo +functions from Python. + +This may present a challenge for using certain modules. For example, many UI +frameworks have a main event loop that makes callbacks to user-defined code +in response to UI events. This is sometimes called an "inversion of control" +pattern. Instead of your application code calling *in* to a library, the +framework code calls *out* to your application code. + +This pattern doesn't work because you can't pass Mojo callbacks to a Python +module. + +For example, consider the popular [Tkinter package](https://docs.python.org/3/library/tkinter.html). +The typical usage for Tkinter is something like this: + +* You create a main, or "root" window for the application. +* You add one or more UI widgets to the window. The widgets can have associated + callback functions (for example, when a button is pushed). +* You call the root window's `mainloop()` method, which listens for events, + updates the UI, and invokes callback functions. The main loop keeps running + until the application exits. + +Since Python can't call back into Mojo, one alternative is to have the Mojo +application drive the event loop and poll for updates. The following example +uses Tkinter, but the basic approach can be applied to other packages. + +First you create a Python module that defines a Tkinter interface, with a window +and single button: + +```python title="myapp.py" +import tkinter as tk + +class App: + def __init__(self): + self._root = tk.Tk() + self.clicked = False + + def click(self): + self.clicked = True + + def create_button(self, button_text: str): + button = tk.Button( + master=self._root, + text=button_text, + command=self.click + ) + button.place(relx=0.5, rely=0.5, anchor=tk.CENTER) + + def create(self, res: str): + self._root.geometry(res) + self.create_button("Hello Mojo!") + + def update(self): + self._root.update() +``` + +You can call this module from Mojo like this: + +```mojo title="main.mojo" +from python import Python + +def button_clicked(): + print("Hi from a Mojo🔥 fn!") + +def main(): + Python.add_to_path(".") + app = Python.import_module("myapp").App() + app.create("800x600") + + while True: + app.update() + if app.clicked: + button_clicked() + app.clicked = False +``` + +Instead of the Python module calling the Tkinter `mainloop()` method, the Mojo +code calls the `update()` method in a loop and checks the `clicked` attribute +after each update. diff --git a/docs/manual/python/types.ipynb b/docs/manual/python/types.ipynb deleted file mode 100644 index c7c4c4e558..0000000000 --- a/docs/manual/python/types.ipynb +++ /dev/null @@ -1,292 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Python types\n", - "sidebar_position: 2\n", - "description: Using Mojo types in Python, and Python types in Mojo.\n", - "---\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When calling Python methods, Mojo needs to convert back and forth between native\n", - "Python objects and native Mojo objects. Most of these conversions happen\n", - "automatically, but there are a number of cases that Mojo doesn't handle yet.\n", - "In these cases you may need to do an explicit conversion, or call an extra\n", - "method.\n", - "\n", - "## Mojo types in Python\n", - "\n", - "Mojo primitive types implicitly convert into Python objects.\n", - "Today we support lists, tuples, integers, floats, booleans, and strings.\n", - "\n", - "For example, given this Python function that prints Python types:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "%%python\n", - "def type_printer(value):\n", - " print(type(value))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "(You can ignore the `%%python` at the start of the code sample; it's explained\n", - "in the note below.)\n", - "\n", - "You can pass this Python function Mojo types with no problem:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "\n", - "\n" - ] - } - ], - "source": [ - "type_printer(4)\n", - "type_printer(3.14)\n", - "type_printer((\"Mojo\", True))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "This is a simplified code example written as a set of Jupyter\n", - "notebook cells. The first cell includes the `%%python` directive so it's\n", - "interpreted as Python. The second cell includes top-level Mojo code. You'd need\n", - "to adjust this code to run it elsewhere.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Python types in Mojo\n", - "\n", - "You can also use Python objects from Mojo. For example, Mojo's \n", - "[`Dict`](/mojo/stdlib/collections/dict/Dict) and \n", - "[`List`](/mojo/stdlib/collections/list/List) types don't natively support\n", - "heterogeneous collections. One alternative is to use a Python dictionary or\n", - "list.\n", - "\n", - "For example, to create a Python dictionary, use the \n", - "[`dict()`](/mojo/stdlib/python/python/Python#dict) method:" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [], - "source": [ - "from python import Python\n", - "\n", - "def use_dict():\n", - " var dictionary = Python.dict()\n", - " dictionary[\"item_name\"] = \"whizbang\"\n", - " dictionary[\"price\"] = 11.75\n", - " dictionary[\"inventory\"] = 100\n", - " print(dictionary)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Mojo wrapper objects\n", - "\n", - "When you use Python objects in your Mojo code, Mojo adds the \n", - "[`PythonObject`](/mojo/stdlib/python/python_object/PythonObject) wrapper around\n", - "the Python object. This object exposes a number of common double underscore\n", - "methods (dunder methods) like `__getitem__()` and `__getattr__()`, passing them\n", - "through to the underlying Python object. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can explicitly create a wrapped Python object by initializing a \n", - "`PythonObject` with a Mojo literal:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "from python import PythonObject\n", - "\n", - "var py_list: PythonObject = [1, 2, 3, 4]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Most of the time, you can treat the wrapped object just like you'd treat it in \n", - "Python. You can use Python's `[]` operators to access an item in a list, and use\n", - "dot-notation to access attributes and call methods. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "var n = py_list[2]\n", - "py_list.append(5)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "If you want to construct a Python type that doesn't have a literal Mojo \n", - "equivalent, you can also use the \n", - "[`Python.evaluate()`](/mojo/stdlib/python/python/Python#evaluate) method. For\n", - "example, to create a Python `set`:" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [], - "source": [ - "def use_py_set():\n", - " var py_set = Python.evaluate('set([2, 3, 5, 7, 11])')\n", - " var num_items = len(py_set)\n", - " print(num_items, \" items in set.\") # prints \"5 items in set\"\n", - " print(py_set.__contains__(6)) # prints \"False\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "TODO: You should be able to use the expression `6 in py_set`. However, because\n", - "of the way `PythonObject` currently works, you need to call the \n", - "`__contains__()` method directly.\n", - "\n", - "Some Mojo APIs handle `PythonObject` just fine, but sometimes you'll need to \n", - "explicitly convert a Python value into a native Mojo value. \n", - "\n", - "Currently `PythonObject` conforms to the \n", - "[`Intable`](/mojo/stdlib/builtin/int/Intable), \n", - "[`Stringable`](/mojo/stdlib/builtin/str/Stringable), and \n", - "[`Boolable`](/mojo/stdlib/builtin/bool/Boolable) traits, which \n", - "means you can convert Python values to Mojo `Int`, `String`, and `Bool` types\n", - "using the built-in \n", - "[`int()`](/mojo/stdlib/builtin/int/int-function),\n", - "[`str()`](/mojo/stdlib/builtin/str/str),\n", - "and [`bool()`](/mojo/stdlib/builtin/bool/bool-function) functions, and print Python \n", - "values using the built-in [`print()`](/mojo/stdlib/builtin/io/print) function.\n", - " \n", - "`PythonObject` also provides the\n", - "[`to_float64()`](/mojo/stdlib/python/python_object/PythonObject#to_float64) for \n", - "converting to a Mojo floating point value.\n", - "\n", - "```mojo\n", - "var i: Int = int(py_int)\n", - "var s: String = str(py_string)\n", - "var b: Bool = bool(py_bool)\n", - "var f: Float64 = py_float.to_float64()\n", - "```\n", - "\n", - "### Comparing Python types in Mojo\n", - "\n", - "In conditionals, Python objects act like you'd expect them to: Python values \n", - "like `False` and `None` evaluate as false in Mojo, too.\n", - "\n", - "If you need to know the type of the underlying Python object, you can use the \n", - "[`Python.type()`](/mojo/stdlib/python/python/Python#type) method, which is \n", - "equivalent to the Python `type()` builtin. You can compare the identity of two\n", - "Python objects using the\n", - "[`Python.is_type()`](/mojo/stdlib/python/python/Python#is_type) method (which is\n", - "equivalent to the Python `is` operator):" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [], - "source": [ - "def python_types():\n", - " from python import Python\n", - " from python import PythonObject\n", - "\n", - " var value1: PythonObject = 3.7\n", - " var value2 = Python.evaluate(\"10/3\")\n", - " var float_type = Python.evaluate(\"float\")\n", - "\n", - " print(Python.type(value1)) # \n", - " print(Python.is_type(Python.type(value1), Python.type(value2))) # True\n", - " print(Python.is_type(Python.type(value1), float_type)) # True\n", - " print(Python.is_type(Python.type(value1), Python.none())) # False\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "One TODO item here: The `Python.is_type()` method is misleadingly named, since \n", - "it doesn't compare _types_, but object identity.\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/python/types.mdx b/docs/manual/python/types.mdx new file mode 100644 index 0000000000..a7d25d0f9a --- /dev/null +++ b/docs/manual/python/types.mdx @@ -0,0 +1,172 @@ +--- +title: Python types +sidebar_position: 2 +description: Using Mojo types in Python, and Python types in Mojo. +--- + +When calling Python methods, Mojo needs to convert back and forth between native +Python objects and native Mojo objects. Most of these conversions happen +automatically, but there are a number of cases that Mojo doesn't handle yet. +In these cases you may need to do an explicit conversion, or call an extra +method. + +## Mojo types in Python + +Mojo primitive types implicitly convert into Python objects. +Today we support lists, tuples, integers, floats, booleans, and strings. + +For example, given this Python function that prints Python types: + +```mojo +%%python +def type_printer(value): + print(type(value)) +``` + +(You can ignore the `%%python` at the start of the code sample; it's explained +in the note below.) + +You can pass this Python function Mojo types with no problem: + +```mojo +type_printer(4) +type_printer(3.14) +type_printer(("Mojo", True)) +``` + +```output + + + +``` + +:::note + +This is a simplified code example written as a set of Jupyter +notebook cells. The first cell includes the `%%python` directive so it's +interpreted as Python. The second cell includes top-level Mojo code. You'd need +to adjust this code to run it elsewhere. + +::: + +## Python types in Mojo + +You can also use Python objects from Mojo. For example, Mojo's +[`Dict`](/mojo/stdlib/collections/dict/Dict) and +[`List`](/mojo/stdlib/collections/list/List) types don't natively support +heterogeneous collections. One alternative is to use a Python dictionary or +list. + +For example, to create a Python dictionary, use the +[`dict()`](/mojo/stdlib/python/python/Python#dict) method: + +```mojo +from python import Python + +def use_dict(): + var dictionary = Python.dict() + dictionary["item_name"] = "whizbang" + dictionary["price"] = 11.75 + dictionary["inventory"] = 100 + print(dictionary) + +``` + +### Mojo wrapper objects + +When you use Python objects in your Mojo code, Mojo adds the +[`PythonObject`](/mojo/stdlib/python/python_object/PythonObject) wrapper around +the Python object. This object exposes a number of common double underscore +methods (dunder methods) like `__getitem__()` and `__getattr__()`, passing them +through to the underlying Python object. + +You can explicitly create a wrapped Python object by initializing a +`PythonObject` with a Mojo literal: + +```mojo +from python import PythonObject + +var py_list: PythonObject = [1, 2, 3, 4] +``` + +Most of the time, you can treat the wrapped object just like you'd treat it in +Python. You can use Python's `[]` operators to access an item in a list, and use +dot-notation to access attributes and call methods. For example: + +```mojo +var n = py_list[2] +py_list.append(5) +``` + +If you want to construct a Python type that doesn't have a literal Mojo +equivalent, you can also use the +[`Python.evaluate()`](/mojo/stdlib/python/python/Python#evaluate) method. For +example, to create a Python `set`: + +```mojo +def use_py_set(): + var py_set = Python.evaluate('set([2, 3, 5, 7, 11])') + var num_items = len(py_set) + print(num_items, " items in set.") # prints "5 items in set" + print(py_set.__contains__(6)) # prints "False" +``` + +TODO: You should be able to use the expression `6 in py_set`. However, because +of the way `PythonObject` currently works, you need to call the +`__contains__()` method directly. + +Some Mojo APIs handle `PythonObject` just fine, but sometimes you'll need to +explicitly convert a Python value into a native Mojo value. + +Currently `PythonObject` conforms to the +[`Intable`](/mojo/stdlib/builtin/int/Intable), +[`Stringable`](/mojo/stdlib/builtin/str/Stringable), and +[`Boolable`](/mojo/stdlib/builtin/bool/Boolable) traits, which +means you can convert Python values to Mojo `Int`, `String`, and `Bool` types +using the built-in +[`int()`](/mojo/stdlib/builtin/int/int-function), +[`str()`](/mojo/stdlib/builtin/str/str), +and [`bool()`](/mojo/stdlib/builtin/bool/bool-function) functions, and print Python +values using the built-in [`print()`](/mojo/stdlib/builtin/io/print) function. + +`PythonObject` also provides the +[`to_float64()`](/mojo/stdlib/python/python_object/PythonObject#to_float64) for +converting to a Mojo floating point value. + +```mojo +var i: Int = int(py_int) +var s: String = str(py_string) +var b: Bool = bool(py_bool) +var f: Float64 = py_float.to_float64() +``` + +### Comparing Python types in Mojo + +In conditionals, Python objects act like you'd expect them to: Python values +like `False` and `None` evaluate as false in Mojo, too. + +If you need to know the type of the underlying Python object, you can use the +[`Python.type()`](/mojo/stdlib/python/python/Python#type) method, which is +equivalent to the Python `type()` builtin. You can compare the identity of two +Python objects using the +[`Python.is_type()`](/mojo/stdlib/python/python/Python#is_type) method (which is +equivalent to the Python `is` operator): + +```mojo +def python_types(): + from python import Python + from python import PythonObject + + var value1: PythonObject = 3.7 + var value2 = Python.evaluate("10/3") + var float_type = Python.evaluate("float") + + print(Python.type(value1)) # + print(Python.is_type(Python.type(value1), Python.type(value2))) # True + print(Python.is_type(Python.type(value1), float_type)) # True + print(Python.is_type(Python.type(value1), Python.none())) # False + +``` + +One TODO item here: The `Python.is_type()` method is misleadingly named, since +it doesn't compare *types*, but object identity. diff --git a/docs/manual/structs.ipynb b/docs/manual/structs.ipynb deleted file mode 100644 index aff69827b1..0000000000 --- a/docs/manual/structs.ipynb +++ /dev/null @@ -1,485 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Structs\n", - "sidebar_position: 4\n", - "description: Introduction to Mojo structures (structs).\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A Mojo struct is a data structure that allows you to encapsulate fields and\n", - "methods that operate on an abstraction, such as a data type or an object.\n", - "**Fields** are variables that hold data relevant to the struct, and **methods**\n", - "are functions inside a struct that generally act upon the field data.\n", - "\n", - "For example, if you're building a graphics program, you can use a struct to\n", - "define an `Image` that has fields to store information about each image\n", - "(such as the pixels) and methods that perform actions on it (such as rotate\n", - "it).\n", - "\n", - "For the most part, Mojo's struct format is designed to provide a static,\n", - "memory-safe data structure for high-level data types used in programs. For\n", - "example, all the data types in Mojo's standard library (such as `Int`,\n", - "`Bool`, `String`, and `Tuple`) are defined as structs.\n", - "\n", - "If you understand how [functions](/mojo/manual/functions) and\n", - "[variables](/mojo/manual/variables) work in Mojo, you probably\n", - "noticed that Mojo is designed to provide dynamic programming features in a\n", - "`def` function while enforcing stronger code safety in `fn` functions. When it\n", - "comes to structs, Mojo leans toward the safe side: You can still choose whether\n", - "to use either `def` or `fn` declarations for methods, but all fields must be\n", - "declared with `var`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Struct definition\n", - "\n", - "You can define a simple struct called `MyPair` with two fields like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPair:\n", - " var first: Int\n", - " var second: Int" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "However, you can't instantiate this struct because it has no constructor\n", - "method. So here it is with a constructor to initialize the two fields:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPair:\n", - " var first: Int\n", - " var second: Int\n", - "\n", - " fn __init__(out self, first: Int, second: Int):\n", - " self.first = first\n", - " self.second = second" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that the first argument in the `__init__()` method is `inout self`. For\n", - "now, ignore `inout` (it's an [argument\n", - "convention](/mojo/manual/values/ownership#argument-conventions) that\n", - "declares `self` as a mutable reference); all you need to know right now is that\n", - "`self` must be the first argument. It references the current struct instance\n", - "(it allows code in the method to refer to \"itself\"). *When you call the\n", - "constructor, you never pass a value for `self`—Mojo passes it in \n", - "automatically.*\n", - "\n", - "The `__init__()` method is one of many [special methods](#special-methods)\n", - "(also known as \"dunder methods\" because they have *d*ouble *under*scores) with\n", - "pre-determined names.\n", - "\n", - ":::note\n", - "\n", - "You can't assign values when you declare fields. You must initialize\n", - "all of the struct's fields in the constructor. (If you try to leave a field\n", - "uninitialized, the code won't compile.)\n", - "\n", - ":::\n", - "\n", - "Once you have a constructor, you can create an instance of `MyPair` and set the\n", - "fields:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2\n" - ] - } - ], - "source": [ - "var mine = MyPair(2,4)\n", - "print(mine.first)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Methods\n", - "\n", - "In addition to special methods like `__init__()`, you can add any other method\n", - "you want to your struct. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPair:\n", - " var first: Int\n", - " var second: Int\n", - "\n", - " fn __init__(out self, first: Int, second: Int):\n", - " self.first = first\n", - " self.second = second\n", - "\n", - " fn get_sum(self) -> Int:\n", - " return self.first + self.second" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "14\n" - ] - } - ], - "source": [ - "var mine = MyPair(6, 8)\n", - "print(mine.get_sum())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Notice that `get_sum()` also uses the `self` argument, because this is\n", - "the only way you can access the struct's fields in a method. The name `self` is\n", - "just a convention, and you can use any name you want to refer to the struct \n", - "instance that is always passed as the first argument.\n", - "\n", - "Methods that take the implicit `self` argument are called _instance methods_ \n", - "because they act on an instance of the struct. \n", - "\n", - ":::note\n", - "\n", - "The `self` argument in a struct method is the only argument in an\n", - "`fn` function that does not require a type. You can include it if you want, but\n", - "you can elide it because Mojo already knows its type (`MyPair` in this case).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Static methods\n", - "\n", - "A struct can also have _static methods_. A static method can be called without \n", - "creating an instance of the struct. Unlike instance methods, a static method\n", - "doesn't receive the implicit `self` argument, so it can't access any fields on\n", - "the struct.\n", - "\n", - "To declare a static method, use the `@staticmethod` decorator and don't include\n", - "a `self` argument:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "struct Logger:\n", - "\n", - " fn __init__(out self):\n", - " pass\n", - "\n", - " @staticmethod\n", - " fn log_info(message: String):\n", - " print(\"Info: \", message)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can invoke a static method by calling it on the type (in this case,\n", - "`Logger`). You can also call it on an instance of the type. Both forms are\n", - "shown below:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Info: Static method called.\n", - "Info: Static method called from instance.\n" - ] - } - ], - "source": [ - "Logger.log_info(\"Static method called.\")\n", - "var l = Logger()\n", - "l.log_info(\"Static method called from instance.\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Structs compared to classes\n", - "\n", - "If you're familiar with other object-oriented languages, then structs might\n", - "sound a lot like classes, and there are some similarities, but also some\n", - "important differences. Eventually, Mojo will also support classes to match the\n", - "behavior of Python classes.\n", - "\n", - "So, let's compare Mojo structs to Python classes. They both support methods,\n", - "fields, operator overloading, decorators for metaprogramming, and more, but\n", - "their key differences are as follows:\n", - "\n", - "- Python classes are dynamic: they allow for dynamic dispatch, monkey-patching\n", - "(or “swizzling”), and dynamically binding instance fields at runtime.\n", - "\n", - "- Mojo structs are static: they are bound at compile-time (you cannot add\n", - "methods at runtime). Structs allow you to trade flexibility for performance\n", - "while being safe and easy to use.\n", - "\n", - "- Mojo structs do not support inheritance (\"sub-classing\"), but a struct can\n", - " implement [traits](/mojo/manual/traits).\n", - "\n", - "- Python classes support class attributes—values that are shared by all\n", - " instances of the class, equivalent to class variables or static data members\n", - " in other languages.\n", - " \n", - "- Mojo structs don't support static data members.\n", - "\n", - "Syntactically, the biggest difference compared to a Python class is that all\n", - "fields in a struct must be explicitly declared with `var`.\n", - "\n", - "In Mojo, the structure and contents of a struct are set at compile time and\n", - "can’t be changed while the program is running. Unlike in Python, where you can\n", - "add, remove, or change attributes of an object on the fly, Mojo doesn’t allow\n", - "that for structs.\n", - "\n", - "However, the static nature of structs helps Mojo run your code faster. The\n", - "program knows exactly where to find the struct’s information and how to use it\n", - "without any extra steps or delays at runtime.\n", - "\n", - "Mojo’s structs also work really well with features you might already know from\n", - "Python, like operator overloading (which lets you change how math symbols like\n", - "`+` and `-` work with your own data, using [special\n", - "methods](#special-methods)).\n", - "\n", - "As mentioned above, all Mojo's standard types\n", - "(`Int`, `String`, etc.) are made using structs, rather than being hardwired\n", - "into the language itself. This gives you more flexibility and control when\n", - "writing your code, and it means you can define your own types with all the same\n", - "capabilities (there's no special treatment for the standard library types)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Special methods\n", - "\n", - "Special methods (or \"dunder methods\") such as `__init__()` are pre-determined\n", - "method names that you can define in a struct to perform a special task.\n", - "\n", - "Although it's possible to call special methods with their method names, the\n", - "point is that you never should, because Mojo automatically invokes them in\n", - "circumstances where they're needed (which is why they're also called \"magic\n", - "methods\"). For example, Mojo calls the `__init__()` method when you create\n", - "an instance of the struct; and when Mojo destroys the instance, it calls the\n", - "`__del__()` method (if it exists).\n", - "\n", - "Even operator behaviors that appear built-in (`+`, `<`, `==`, `|`, and so on)\n", - "are implemented as special methods that Mojo implicitly calls upon to perform\n", - "operations or comparisons on the type that the operator is applied to.\n", - "\n", - "Mojo supports a long list of special methods; far too many to discuss here, but\n", - "they generally match all of [Python's special\n", - "methods](https://docs.python.org/3/reference/datamodel#special-method-names)\n", - "and they usually accomplish one of two types of tasks:\n", - "\n", - "- Operator overloading: A lot of special methods are designed to overload\n", - " operators such as `<` (less-than), `+` (add), and `|` (or) so they work\n", - " appropriately with each type. For example, look at the methods listed for Mojo's\n", - " [`Int` type](/mojo/stdlib/builtin/int/Int). One such method is `__lt__()`, which\n", - " Mojo calls to perform a less-than comparison between two integers (for example,\n", - " `num1 < num2`).\n", - "\n", - "- Lifecycle event handling: These special methods deal with the lifecycle and\n", - " value ownership of an instance. For example, `__init__()` and `__del__()`\n", - " demarcate the beginning and end of an instance lifetime, and other special\n", - " methods define the behavior for other lifecycle events such as how to copy or\n", - " move a value.\n", - "\n", - "You can learn all about the lifecycle special methods in the [Value\n", - "lifecycle](/mojo/manual/lifecycle/) section. However, most structs are simple\n", - "aggregations of other types, so unless your type requires custom behaviors when\n", - "an instance is created, copied, moved, or destroyed, you can synthesize the\n", - "essential lifecycle methods you need (and save yourself some time) by adding\n", - "the `@value` decorator." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### `@value` decorator\n", - "\n", - "When you add the [`@value` decorator](/mojo/manual/decorators/value) to a\n", - "struct, Mojo will synthesize the essential lifecycle methods so your object\n", - "provides full value semantics. Specifically, it generates the `__init__()`,\n", - "`__copyinit__()`, and `__moveinit__()` methods, which allow you to construct,\n", - "copy, and move your struct type in a manner that's value semantic and\n", - "compatible with Mojo's ownership model.\n", - "\n", - "For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct MyPet:\n", - " var name: String\n", - " var age: Int" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo will notice that you don't have a member-wise initializer, a move\n", - "constructor, or a copy constructor, and it will synthesize these for you as if\n", - "you had written:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "struct MyPet:\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __init__(out self, owned name: String, age: Int):\n", - " self.name = name^\n", - " self.age = age\n", - "\n", - " fn __copyinit__(out self, existing: Self):\n", - " self.name = existing.name\n", - " self.age = existing.age\n", - "\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " self.name = existing.name^\n", - " self.age = existing.age" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Without the copy and move constructors, the following code would not work\n", - "because Mojo would not know how to copy an instance of `MyPet`:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Charlie\n" - ] - } - ], - "source": [ - "var dog = MyPet(\"Charlie\", 5)\n", - "var poodle = dog\n", - "print(poodle.name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When you add the `@value` decorator, Mojo synthesizes each special method above\n", - "only if it doesn't exist already. That is, you can still implement a custom\n", - "version of each method.\n", - "\n", - "In addition to the `inout` argument convention you already saw with\n", - "`__init__()`, this code also introduces `owned`, which is another argument\n", - "convention that ensures the argument has unique ownership of the value.\n", - "For more detail, see the section about [value\n", - "ownership](/mojo/manual/values/ownership).\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/structs.mdx b/docs/manual/structs.mdx new file mode 100644 index 0000000000..59acf95f66 --- /dev/null +++ b/docs/manual/structs.mdx @@ -0,0 +1,317 @@ +--- +title: Structs +sidebar_position: 4 +description: Introduction to Mojo structures (structs). +--- + +A Mojo struct is a data structure that allows you to encapsulate fields and +methods that operate on an abstraction, such as a data type or an object. +**Fields** are variables that hold data relevant to the struct, and **methods** +are functions inside a struct that generally act upon the field data. + +For example, if you're building a graphics program, you can use a struct to +define an `Image` that has fields to store information about each image +(such as the pixels) and methods that perform actions on it (such as rotate +it). + +For the most part, Mojo's struct format is designed to provide a static, +memory-safe data structure for high-level data types used in programs. For +example, all the data types in Mojo's standard library (such as `Int`, +`Bool`, `String`, and `Tuple`) are defined as structs. + +If you understand how [functions](/mojo/manual/functions) and +[variables](/mojo/manual/variables) work in Mojo, you probably +noticed that Mojo is designed to provide dynamic programming features in a +`def` function while enforcing stronger code safety in `fn` functions. When it +comes to structs, Mojo leans toward the safe side: You can still choose whether +to use either `def` or `fn` declarations for methods, but all fields must be +declared with `var`. + +## Struct definition + +You can define a simple struct called `MyPair` with two fields like this: + +```mojo +struct MyPair: + var first: Int + var second: Int +``` + +However, you can't instantiate this struct because it has no constructor +method. So here it is with a constructor to initialize the two fields: + +```mojo +struct MyPair: + var first: Int + var second: Int + + fn __init__(out self, first: Int, second: Int): + self.first = first + self.second = second +``` + +Notice that the first argument in the `__init__()` method is `inout self`. For +now, ignore `inout` (it's an [argument +convention](/mojo/manual/values/ownership#argument-conventions) that +declares `self` as a mutable reference); all you need to know right now is that +`self` must be the first argument. It references the current struct instance +(it allows code in the method to refer to "itself"). *When you call the +constructor, you never pass a value for `self`—Mojo passes it in +automatically.* + +The `__init__()` method is one of many [special methods](#special-methods) +(also known as "dunder methods" because they have *d*ouble *under*scores) with +pre-determined names. + +:::note + +You can't assign values when you declare fields. You must initialize +all of the struct's fields in the constructor. (If you try to leave a field +uninitialized, the code won't compile.) + +::: + +Once you have a constructor, you can create an instance of `MyPair` and set the +fields: + +```mojo +var mine = MyPair(2,4) +print(mine.first) +``` + +```output +2 +``` + +## Methods + +In addition to special methods like `__init__()`, you can add any other method +you want to your struct. For example: + +```mojo +struct MyPair: + var first: Int + var second: Int + + fn __init__(out self, first: Int, second: Int): + self.first = first + self.second = second + + fn get_sum(self) -> Int: + return self.first + self.second +``` + +```mojo +var mine = MyPair(6, 8) +print(mine.get_sum()) +``` + +```output +14 +``` + +Notice that `get_sum()` also uses the `self` argument, because this is +the only way you can access the struct's fields in a method. The name `self` is +just a convention, and you can use any name you want to refer to the struct +instance that is always passed as the first argument. + +Methods that take the implicit `self` argument are called *instance methods* +because they act on an instance of the struct. + +:::note + +The `self` argument in a struct method is the only argument in an +`fn` function that does not require a type. You can include it if you want, but +you can elide it because Mojo already knows its type (`MyPair` in this case). + +::: + +### Static methods + +A struct can also have *static methods*. A static method can be called without +creating an instance of the struct. Unlike instance methods, a static method +doesn't receive the implicit `self` argument, so it can't access any fields on +the struct. + +To declare a static method, use the `@staticmethod` decorator and don't include +a `self` argument: + +```mojo +struct Logger: + + fn __init__(out self): + pass + + @staticmethod + fn log_info(message: String): + print("Info: ", message) +``` + +You can invoke a static method by calling it on the type (in this case, +`Logger`). You can also call it on an instance of the type. Both forms are +shown below: + +```mojo +Logger.log_info("Static method called.") +var l = Logger() +l.log_info("Static method called from instance.") +``` + +```output +Info: Static method called. +Info: Static method called from instance. +``` + +## Structs compared to classes + +If you're familiar with other object-oriented languages, then structs might +sound a lot like classes, and there are some similarities, but also some +important differences. Eventually, Mojo will also support classes to match the +behavior of Python classes. + +So, let's compare Mojo structs to Python classes. They both support methods, +fields, operator overloading, decorators for metaprogramming, and more, but +their key differences are as follows: + +* Python classes are dynamic: they allow for dynamic dispatch, monkey-patching + (or “swizzling”), and dynamically binding instance fields at runtime. + +* Mojo structs are static: they are bound at compile-time (you cannot add + methods at runtime). Structs allow you to trade flexibility for performance + while being safe and easy to use. + +* Mojo structs do not support inheritance ("sub-classing"), but a struct can + implement [traits](/mojo/manual/traits). + +* Python classes support class attributes—values that are shared by all + instances of the class, equivalent to class variables or static data members + in other languages. + +* Mojo structs don't support static data members. + +Syntactically, the biggest difference compared to a Python class is that all +fields in a struct must be explicitly declared with `var`. + +In Mojo, the structure and contents of a struct are set at compile time and +can’t be changed while the program is running. Unlike in Python, where you can +add, remove, or change attributes of an object on the fly, Mojo doesn’t allow +that for structs. + +However, the static nature of structs helps Mojo run your code faster. The +program knows exactly where to find the struct’s information and how to use it +without any extra steps or delays at runtime. + +Mojo’s structs also work really well with features you might already know from +Python, like operator overloading (which lets you change how math symbols like +`+` and `-` work with your own data, using [special +methods](#special-methods)). + +As mentioned above, all Mojo's standard types +(`Int`, `String`, etc.) are made using structs, rather than being hardwired +into the language itself. This gives you more flexibility and control when +writing your code, and it means you can define your own types with all the same +capabilities (there's no special treatment for the standard library types). + +## Special methods + +Special methods (or "dunder methods") such as `__init__()` are pre-determined +method names that you can define in a struct to perform a special task. + +Although it's possible to call special methods with their method names, the +point is that you never should, because Mojo automatically invokes them in +circumstances where they're needed (which is why they're also called "magic +methods"). For example, Mojo calls the `__init__()` method when you create +an instance of the struct; and when Mojo destroys the instance, it calls the +`__del__()` method (if it exists). + +Even operator behaviors that appear built-in (`+`, `<`, `==`, `|`, and so on) +are implemented as special methods that Mojo implicitly calls upon to perform +operations or comparisons on the type that the operator is applied to. + +Mojo supports a long list of special methods; far too many to discuss here, but +they generally match all of [Python's special +methods](https://docs.python.org/3/reference/datamodel#special-method-names) +and they usually accomplish one of two types of tasks: + +* Operator overloading: A lot of special methods are designed to overload + operators such as `<` (less-than), `+` (add), and `|` (or) so they work + appropriately with each type. For example, look at the methods listed for Mojo's + [`Int` type](/mojo/stdlib/builtin/int/Int). One such method is `__lt__()`, which + Mojo calls to perform a less-than comparison between two integers (for example, + `num1 < num2`). + +* Lifecycle event handling: These special methods deal with the lifecycle and + value ownership of an instance. For example, `__init__()` and `__del__()` + demarcate the beginning and end of an instance lifetime, and other special + methods define the behavior for other lifecycle events such as how to copy or + move a value. + +You can learn all about the lifecycle special methods in the [Value +lifecycle](/mojo/manual/lifecycle/) section. However, most structs are simple +aggregations of other types, so unless your type requires custom behaviors when +an instance is created, copied, moved, or destroyed, you can synthesize the +essential lifecycle methods you need (and save yourself some time) by adding +the `@value` decorator. + +### `@value` decorator + +When you add the [`@value` decorator](/mojo/manual/decorators/value) to a +struct, Mojo will synthesize the essential lifecycle methods so your object +provides full value semantics. Specifically, it generates the `__init__()`, +`__copyinit__()`, and `__moveinit__()` methods, which allow you to construct, +copy, and move your struct type in a manner that's value semantic and +compatible with Mojo's ownership model. + +For example: + +```mojo +@value +struct MyPet: + var name: String + var age: Int +``` + +Mojo will notice that you don't have a member-wise initializer, a move +constructor, or a copy constructor, and it will synthesize these for you as if +you had written: + +```mojo +struct MyPet: + var name: String + var age: Int + + fn __init__(out self, owned name: String, age: Int): + self.name = name^ + self.age = age + + fn __copyinit__(out self, existing: Self): + self.name = existing.name + self.age = existing.age + + fn __moveinit__(out self, owned existing: Self): + self.name = existing.name^ + self.age = existing.age +``` + +Without the copy and move constructors, the following code would not work +because Mojo would not know how to copy an instance of `MyPet`: + +```mojo +var dog = MyPet("Charlie", 5) +var poodle = dog +print(poodle.name) +``` + +```output +Charlie +``` + +When you add the `@value` decorator, Mojo synthesizes each special method above +only if it doesn't exist already. That is, you can still implement a custom +version of each method. + +In addition to the `inout` argument convention you already saw with +`__init__()`, this code also introduces `owned`, which is another argument +convention that ensures the argument has unique ownership of the value. +For more detail, see the section about [value +ownership](/mojo/manual/values/ownership). diff --git a/docs/manual/traits.ipynb b/docs/manual/traits.ipynb deleted file mode 100755 index ef9fbd824e..0000000000 --- a/docs/manual/traits.ipynb +++ /dev/null @@ -1,750 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Traits\n", - "description: Define shared behavior for types.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A _trait_ is a set of requirements that a type must implement. You can think of\n", - "it as a contract: a type that _conforms_ to a trait guarantees that it \n", - "implements all of the features of the trait.\n", - "\n", - "Traits are similar to Java _interfaces_, C++ _concepts_, Swift _protocols_, and\n", - "Rust _traits_. If you're familiar with any of those features, Mojo traits solve\n", - "the same basic problem.\n", - "\n", - "## Background\n", - "\n", - "In dynamically-typed languages like Python, you don't need to explicitly declare\n", - "that two classes are similar. This is easiest to show by example:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "%%python\n", - "class Duck:\n", - " def quack(self):\n", - " print(\"Quack.\")\n", - "\n", - "class StealthCow:\n", - " def quack(self):\n", - " print(\"Moo!\")\n", - "\n", - "def make_it_quack_python(maybe_a_duck):\n", - " try:\n", - " maybe_a_duck.quack()\n", - " except:\n", - " print(\"Not a duck.\")\n", - "\n", - "make_it_quack_python(Duck())\n", - "make_it_quack_python(StealthCow())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The `Duck` and `StealthCow` classes aren't related in any way, but they both \n", - "define a `quack()` method, so they work the same in the `make_it_quack()`\n", - "function. This works because Python uses dynamic dispatch—it identifies the\n", - "methods to call at runtime. So `make_it_quack_python()` doesn't care what types\n", - "you're passing it, only the fact that they implement the `quack()` method.\n", - "\n", - "In a statically-typed environment, this approach doesn't work:\n", - "[`fn` functions](/mojo/manual/functions#fn-functions) require you to\n", - "specify the type of each argument. If you wanted to write this example in Mojo \n", - "_without_ traits, you'd need to write a function overload for each input type.\n", - "All of the examples from here on are in Mojo, so we'll just call the function\n", - "`make_it_quack()` going forward." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Quack\n", - "Moo!\n" - ] - } - ], - "source": [ - "@value\n", - "struct Duck:\n", - " fn quack(self):\n", - " print(\"Quack\")\n", - "\n", - "@value\n", - "struct StealthCow:\n", - " fn quack(self):\n", - " print(\"Moo!\")\n", - "\n", - "fn make_it_quack(definitely_a_duck: Duck):\n", - " definitely_a_duck.quack()\n", - "\n", - "fn make_it_quack(not_a_duck: StealthCow):\n", - " not_a_duck.quack()\n", - "\n", - "make_it_quack(Duck())\n", - "make_it_quack(StealthCow())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This isn't too bad with only two classes. But the more classes you want to\n", - "support, the less practical this approach is.\n", - "\n", - "You might notice that the Mojo versions of `make_it_quack()` don't include the\n", - "`try/except` statement. We don't need it because Mojo's static type checking\n", - "ensures that you can only pass instances of `Duck` or `StealthCow` into the \n", - "`make_it_quack()`function.\n", - "\n", - "## Using traits\n", - "\n", - "Traits solve this problem by letting you define a shared set of _behaviors_ that\n", - "types can implement. Then you can write a function that depends on the trait,\n", - "rather than individual types. As an example, let's update the `make_it_quack()`\n", - "example using traits. The first step is defining a trait:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "trait Quackable:\n", - " fn quack(self):\n", - " ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A trait looks a lot like a struct, except it's introduced by the `trait` \n", - "keyword. Right now, a trait can only contain method signatures, and cannot\n", - "include method implementations. Each method signature must be followed by\n", - "three dots (`...`) to indicate that the method is unimplemented.\n", - "\n", - ":::note TODO\n", - "\n", - "In the future, we plan to support defining fields and default method\n", - "implementations inside a trait. Right now, though, a trait can only declare\n", - "method signatures.\n", - "\n", - ":::\n", - "\n", - "Next we create some structs that conform to the `Quackable` trait. To indicate\n", - "that a struct conforms to a trait, include the trait name in parenthesis after\n", - "the struct name. You can also include multiple traits, separated by commas. \n", - "(If you're familiar with Python, this looks just like Python's inheritance\n", - "syntax.)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "struct Duck(Quackable):\n", - " fn quack(self):\n", - " print(\"Quack\")\n", - "\n", - "@value\n", - "struct StealthCow(Quackable):\n", - " fn quack(self):\n", - " print(\"Moo!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The struct needs to implement any methods that are declared in the trait. The \n", - "compiler enforces conformance: if a struct says it conforms to a trait, it must\n", - "implement everything required by the trait or the code won't compile.\n", - "\n", - "Finally, you can define a function that takes a `Quackable` like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "fn make_it_quack[T: Quackable](maybe_a_duck: T):\n", - " maybe_a_duck.quack()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This syntax may look a little unfamiliar if you haven't dealt with Mojo\n", - "[parameters](/mojo/manual/parameters/) before. What this signature\n", - "means is that `maybe_a_duck` is an argument of type `T`, where `T` is a type\n", - "that must conform to the `Quackable` trait. TODO: This syntax is a little \n", - "verbose, and we hope to make it more ergonomic in a future release.\n", - "\n", - "Using the method is simple enough:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Quack\n", - "Moo!\n" - ] - } - ], - "source": [ - "make_it_quack(Duck())\n", - "make_it_quack(StealthCow())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that you don't need the square brackets when you call `make_it_quack()`: \n", - "the compiler infers the type of the argument, and ensures the type has the\n", - "required trait.\n", - "\n", - "One limitation of traits is that you can't add traits to existing types. For\n", - "example, if you define a new `Numeric` trait, you can't add it to the standard\n", - "library `Float64` and `Int` types. However, the standard library already\n", - "includes a few traits, and we'll be adding more over time.\n", - "\n", - "### Traits can require static methods\n", - "\n", - "In addition to regular instance methods, traits can specify required static \n", - "methods. \n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "trait HasStaticMethod:\n", - " @staticmethod\n", - " fn do_stuff(): ...\n", - "\n", - "fn fun_with_traits[T: HasStaticMethod]():\n", - " T.do_stuff()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Implicit trait conformance\n", - "\n", - "Mojo also supports _implicit_ trait conformance. That is, if a type implements\n", - "all of the methods required for a trait, it's treated as conforming to the\n", - "trait, even if it doesn't explicitly include the trait in its declaration:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "struct RubberDucky:\n", - " fn quack(self):\n", - " print(\"Squeak!\")\n", - "\n", - "make_it_quack(RubberDucky())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Implicit conformance can be handy if you're defining a trait and you want it to\n", - "work with types that you don't control—such as types from the standard library,\n", - "or a third-party library.\n", - "\n", - "However, we still strongly recommend explicit trait conformance wherever\n", - "possible. This has two advantages:\n", - "\n", - "- Documentation. It makes it clear that the type conforms to the trait, without\n", - " having to scan all of its methods.\n", - "\n", - "- Future feature support. When default method implementations are added to\n", - " traits, they'll only work for types that explicitly conform to traits." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Trait inheritance\n", - "\n", - "Traits can inherit from other traits. A trait that inherits from another trait\n", - "includes all of the requirements declared by the parent trait. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "trait Animal:\n", - " fn make_sound(self):\n", - " ...\n", - "\n", - "# Bird inherits from Animal\n", - "trait Bird(Animal):\n", - " fn fly(self):\n", - " ..." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Since `Bird` inherits from `Animal`, a struct that conforms to the `Bird` trait\n", - "needs to implement **both** `make_sound()` and `fly()`. And since every `Bird`\n", - "conforms to `Animal`, a struct that conforms to `Bird` can be passed to any\n", - "function that requires an `Animal`.\n", - "\n", - "To inherit from multiple traits, add a comma-separated list of traits inside the \n", - "parenthesis. For example, you could define a `NamedAnimal` trait that combines the\n", - "requirements of the `Animal` trait and a new `Named` trait:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "trait Named:\n", - " fn get_name(self) -> String:\n", - " ...\n", - "\n", - "trait NamedAnimal(Animal, Named):\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Traits and lifecycle methods\n", - "\n", - "Traits can specify required \n", - "[lifecycle methods](/mojo/manual/lifecycle/#lifecycles-and-lifetimes), including\n", - "constructors, copy constructors and move constructors.\n", - "\n", - "For example, the following code creates a `MassProducible` trait. A \n", - "`MassProducible` type has a default (no-argument) constructor and can be moved.\n", - "It uses the built-in [`Movable`](/mojo/stdlib/builtin/value/Movable) trait,\n", - "which requires the type to have a [move \n", - "constructor](/mojo/manual/lifecycle/life#move-constructor).\n", - "\n", - "The `factory[]()` function returns a newly-constructed instance of a \n", - "`MassProducible` type." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [], - "source": [ - "trait DefaultConstructible:\n", - " fn __init__(out self): ...\n", - "\n", - "trait MassProducible(DefaultConstructible, Movable):\n", - " pass\n", - "\n", - "fn factory[T: MassProducible]() -> T:\n", - " return T()\n", - "\n", - "struct Thing(MassProducible):\n", - " var id: Int\n", - "\n", - " fn __init__(out self):\n", - " self.id = 0\n", - "\n", - " fn __moveinit__(out self, owned existing: Self):\n", - " self.id = existing.id\n", - "\n", - "var thing = factory[Thing]()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that [`@register_passable(\"trivial\")`](/mojo/manual/decorators/register-passable#register_passabletrivial) \n", - "types have restrictions on their lifecycle methods: they can't define copy or\n", - "move constructors, because they don't require any custom logic.\n", - "\n", - "For the purpose of trait conformance, the compiler treats trivial types as\n", - "copyable and movable." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\n", - "## Built-in traits\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The Mojo standard library currently includes a few traits. They're implemented\n", - "by a number of standard library types, and you can also implement these on your\n", - "own types:\n", - "\n", - " - [`Absable`](/mojo/stdlib/builtin/math/Absable)\n", - " - [`AnyType`](/mojo/stdlib/builtin/anytype/AnyType)\n", - " - [`Boolable`](/mojo/stdlib/builtin/bool/Boolable)\n", - " - [`BoolableCollectionElement`](/mojo/stdlib/builtin/value/BoolableCollectionElement)\n", - " - [`BoolableKeyElement`](/mojo/stdlib/builtin/value/BoolableKeyElement)\n", - " - [`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement)\n", - " - [`Comparable`](/mojo/stdlib/builtin/comparable/Comparable)\n", - " - [`ComparableCollectionElement`](/mojo/stdlib/builtin/value/ComparableCollectionElement)\n", - " - [`Copyable`](/mojo/stdlib/builtin/value/Copyable)\n", - " - [`Defaultable`](/mojo/stdlib/builtin/value/Defaultable)\n", - " - [`Writable`](/mojo/stdlib/utils/write/Writable)\n", - " - [`Hashable`](/mojo/stdlib/builtin/hash/Hashable)\n", - " - [`Indexer`](/mojo/stdlib/builtin/int/Indexer)\n", - " - [`Intable`](/mojo/stdlib/builtin/int/Intable)\n", - " - [`IntableRaising`](/mojo/stdlib/builtin/int/IntableRaising)\n", - " - [`KeyElement`](/mojo/stdlib/collections/dict/KeyElement)\n", - " - [`Movable`](/mojo/stdlib/builtin/value/Movable)\n", - " - [`PathLike`](/mojo/stdlib/os/pathlike/PathLike)\n", - " - [`Powable`](/mojo/stdlib/builtin/math/Powable)\n", - " - [`Representable`](/mojo/stdlib/builtin/repr/Representable)\n", - " - [`RepresentableCollectionElement`](/mojo/stdlib/builtin/value/RepresentableCollectionElement)\n", - " - [`RepresentableKeyElement`](/mojo/stdlib/collections/dict/RepresentableKeyElement)\n", - " - [`Sized`](/mojo/stdlib/builtin/len/Sized)\n", - " - [`Stringable`](/mojo/stdlib/builtin/str/Stringable)\n", - " - [`StringableCollectionElement`](/mojo/stdlib/builtin/value/StringableCollectionElement)\n", - " - [`StringableRaising`](/mojo/stdlib/builtin/str/StringableRaising)\n", - " - [`StringRepresentable`](/mojo/stdlib/collections/string/StringRepresentable)\n", - " - [`Roundable`](/mojo/stdlib/builtin/math/Roundable)\n", - " - [`Writer`](/mojo/stdlib/utils/write/Writer)\n", - " - [`Truncable`](/mojo/stdlib/builtin/_math/Truncable)\n", - "\n", - "The API reference docs linked above include usage examples for each trait. The\n", - "following sections discuss a few of these traits.\n", - "\n", - "### The `Sized` trait\n", - "\n", - "The [`Sized`](/mojo/stdlib/builtin/len/Sized) trait identifies types that\n", - "have a measurable length, like strings and arrays. \n", - "\n", - "Specifically, `Sized` requires a type to implement the `__len__()` method. \n", - "This trait is used by the built-in [`len()`](/mojo/stdlib/builtin/len/len) \n", - "function. For example, if you're writing a custom list type, you could \n", - "implement this trait so your type works with `len()`:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0\n" - ] - } - ], - "source": [ - "struct MyList(Sized):\n", - " var size: Int\n", - " # ...\n", - "\n", - " fn __init__(out self):\n", - " self.size = 0\n", - "\n", - " fn __len__(self) -> Int:\n", - " return self.size\n", - "\n", - "print(len(MyList()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### The `Intable` and `IntableRaising` traits\n", - "\n", - "The [`Intable`](/mojo/stdlib/builtin/int/Intable) trait identifies a type that\n", - "can be implicitly converted to `Int`. The\n", - "[`IntableRaising`](/mojo/stdlib/builtin/int/IntableRaising) trait describes a\n", - "type can be converted to an `Int`, but the conversion might raise an error.\n", - "\n", - "Both of these traits require the type to implement the `__int__()` method. For\n", - "example:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "True\n" - ] - } - ], - "source": [ - "@value\n", - "struct Foo(Intable):\n", - " var i: Int\n", - "\n", - " fn __int__(self) -> Int:\n", - " return self.i\n", - "\n", - "var foo = Foo(42)\n", - "print(int(foo) == 42)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### The `Stringable`, `Representable`, and `Writable` traits\n", - "\n", - "The [`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait identifies a type\n", - "that can be implicitly converted to\n", - "[`String`](/mojo/stdlib/collections/string/String). The\n", - "[`StringableRaising`](/mojo/stdlib/builtin/str/StringableRaising) trait\n", - "describes a type that can be converted to a `String`, but the conversion might\n", - "raise an error. Any type that conforms to `Stringable` or `StringableRaising`\n", - "also works with the built-in [`str()`](/mojo/stdlib/builtin/str/str) function to\n", - "explicitly return a `String`. These traits also mean that the type can support\n", - "both the `{!s}` and `{}` format specifiers of the `String` class's\n", - "[`format()`](/mojo/stdlib/collections/string/String#format) method. These traits\n", - "require the type to define the\n", - "[`__str__()`](/mojo/stdlib/builtin/str/Stringable#__str__) method.\n", - "\n", - "In contrast, the [`Representable`](/mojo/stdlib/builtin/repr/Representable)\n", - "trait defines a type that can be used with the built-in\n", - "[`repr()`](/mojo/stdlib/builtin/repr/repr) function, as well as the `{!r}`\n", - "format specifier of the `format()` method. This trait requires the type to\n", - "define the [`__repr__()`](/mojo/stdlib/builtin/repr/Representable#__repr__)\n", - "method, which should compute the \"official\" string representation of a type. If\n", - "at all possible, this should look like a valid Mojo expression that could be\n", - "used to recreate a struct instance with the same value.\n", - "\n", - "The [`StringRepresentable`](/mojo/stdlib/collections/string/StringRepresentable)\n", - "trait denotes a trait composition of the `Stringable` and `Representable`\n", - "traits. It requires a type to implement both a `__str__()` and a `__repr__()`\n", - "method.\n", - "\n", - "The [`Writable`](/mojo/stdlib/utils/write/Writable) trait describes a\n", - "type that can be converted to a stream of UTF-8 encoded data by writing to a\n", - "`Writer` object. The [`print()`](/mojo/stdlib/builtin/io/print) function\n", - "requires that its arguments conform to the `Writable` trait. This enables\n", - "efficient stream-based writing by default, avoiding unnecessary intermediate\n", - "String heap allocations.\n", - "\n", - "The `Writable` trait requires a type to implement a\n", - "[`write_to()`](/mojo/stdlib/utils/write/Writable#write_to) method, which\n", - "is provided with an object that conforms to the\n", - "[`Writer`](/mojo/stdlib/utils/write/Writer) as an argument. You then\n", - "invoke the `Writer` instance's\n", - "[`write()`](/mojo/stdlib/utils/write/Writer#write) method to write a\n", - "sequence of `Writable` arguments constituting the `String` representation of\n", - "your type.\n", - "\n", - "While this might sound complex at first, in practice you can minimize\n", - "boilerplate and duplicated code by using the [`String.write()`](/mojo/stdlib/collections/string/String#write) static function to\n", - "implement the type's `Stringable` implementation in terms of its `Writable`\n", - "implementation. Here is a simple example of a type that implements all of the\n", - "`Stringable`, `Representable`, and `Writable` traits:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dog(name='Rex', age=5)\n", - "Dog(Rex, 5)\n", - "String: Dog(Rex, 5)\n", - "Representation: Dog(name='Rex', age=5)\n" - ] - } - ], - "source": [ - "@value\n", - "struct Dog(Stringable, Representable, Writable):\n", - " var name: String\n", - " var age: Int\n", - "\n", - " fn __repr__(self) -> String:\n", - " return \"Dog(name=\" + repr(self.name) + \", age=\" + repr(self.age) + \")\"\n", - "\n", - " fn __str__(self) -> String:\n", - " return String.write(self)\n", - "\n", - " fn write_to[W: Writer](self, inout writer: W) -> None:\n", - " writer.write(\"Dog(\", self.name, \", \", self.age, \")\")\n", - "\n", - "var dog = Dog(\"Rex\", 5)\n", - "print(repr(dog))\n", - "print(dog)\n", - "\n", - "var dog_info = String(\"String: {!s}\\nRepresentation: {!r}\").format(dog, dog)\n", - "print(dog_info)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\n", - "### The `AnyType` trait\n", - "\n", - "When building a generic container type, one challenge is knowing how to dispose\n", - "of the contained items when the container is destroyed. Any type that \n", - "dynamically allocates memory needs to supply a \n", - "[destructor](/mojo/manual/lifecycle/death#destructor) (`__del__()` method)\n", - "that must be called to free the allocated memory. But not all types have a \n", - "destructor, and your Mojo code has no way to determine which is which.\n", - "\n", - "The [`AnyType`](/mojo/stdlib/builtin/anytype/AnyType) trait solves this\n", - "issue: every trait implicitly inherits from `AnyType`, and all structs conform\n", - "to `AnyType`, which guarantees that the type has a destructor. For types that \n", - "don't have one, Mojo adds a no-op destructor. This means you can call the \n", - "destructor on any type.\n", - "\n", - "This makes it possible to build generic collections without leaking memory. When\n", - "the collection's destructor is called, it can safely call the destructors on\n", - "every item it contains." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Generic structs with traits\n", - "\n", - "You can also use traits when defining a generic container. A generic container\n", - "is a container (for example, an array or hashmap) that can hold different data\n", - "types. In a dynamic language like Python it's easy to add different types of\n", - "items to a container. But in a statically-typed environment the compiler needs\n", - "to be able to identify the types at compile time. For example, if the container\n", - "needs to copy a value, the compiler needs to verify that the type can be copied.\n", - "\n", - "The [`List`](/mojo/stdlib/collections/list) type is an example of a\n", - "generic container. A single `List` can only hold a single type of data.\n", - "For example, you can create a list of integer values like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 2 3 " - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "var list = List[Int](1, 2, 3)\n", - "for i in range(len(list)):\n", - " print(list[i], sep=\" \", end=\"\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can use traits to define requirements for elements that are stored in a\n", - "container. For example, `List` requires elements that can be moved and\n", - "copied. To store a struct in a `List`, the struct needs to conform to\n", - "the `CollectionElement` trait, which requires a \n", - "[copy constructor](/mojo/manual/lifecycle/life#copy-constructor) and a \n", - "[move constructor](/mojo/manual/lifecycle/life#move-constructor).\n", - "\n", - "Building generic containers is an advanced topic. For an introduction, see the\n", - "section on \n", - "[parameterized structs](/mojo/manual/parameters/#parameterized-structs)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/traits.mdx b/docs/manual/traits.mdx new file mode 100644 index 0000000000..4e1ae7b321 --- /dev/null +++ b/docs/manual/traits.mdx @@ -0,0 +1,515 @@ +--- +title: Traits +description: Define shared behavior for types. +--- + +A *trait* is a set of requirements that a type must implement. You can think of +it as a contract: a type that *conforms* to a trait guarantees that it +implements all of the features of the trait. + +Traits are similar to Java *interfaces*, C++ *concepts*, Swift *protocols*, and +Rust *traits*. If you're familiar with any of those features, Mojo traits solve +the same basic problem. + +## Background + +In dynamically-typed languages like Python, you don't need to explicitly declare +that two classes are similar. This is easiest to show by example: + +```mojo +%%python +class Duck: + def quack(self): + print("Quack.") + +class StealthCow: + def quack(self): + print("Moo!") + +def make_it_quack_python(maybe_a_duck): + try: + maybe_a_duck.quack() + except: + print("Not a duck.") + +make_it_quack_python(Duck()) +make_it_quack_python(StealthCow()) +``` + +The `Duck` and `StealthCow` classes aren't related in any way, but they both +define a `quack()` method, so they work the same in the `make_it_quack()` +function. This works because Python uses dynamic dispatch—it identifies the +methods to call at runtime. So `make_it_quack_python()` doesn't care what types +you're passing it, only the fact that they implement the `quack()` method. + +In a statically-typed environment, this approach doesn't work: +[`fn` functions](/mojo/manual/functions#fn-functions) require you to +specify the type of each argument. If you wanted to write this example in Mojo +*without* traits, you'd need to write a function overload for each input type. +All of the examples from here on are in Mojo, so we'll just call the function +`make_it_quack()` going forward. + +```mojo +@value +struct Duck: + fn quack(self): + print("Quack") + +@value +struct StealthCow: + fn quack(self): + print("Moo!") + +fn make_it_quack(definitely_a_duck: Duck): + definitely_a_duck.quack() + +fn make_it_quack(not_a_duck: StealthCow): + not_a_duck.quack() + +make_it_quack(Duck()) +make_it_quack(StealthCow()) +``` + +```output +Quack +Moo! +``` + +This isn't too bad with only two classes. But the more classes you want to +support, the less practical this approach is. + +You might notice that the Mojo versions of `make_it_quack()` don't include the +`try/except` statement. We don't need it because Mojo's static type checking +ensures that you can only pass instances of `Duck` or `StealthCow` into the +`make_it_quack()`function. + +## Using traits + +Traits solve this problem by letting you define a shared set of *behaviors* that +types can implement. Then you can write a function that depends on the trait, +rather than individual types. As an example, let's update the `make_it_quack()` +example using traits. The first step is defining a trait: + +```mojo +trait Quackable: + fn quack(self): + ... +``` + +A trait looks a lot like a struct, except it's introduced by the `trait` +keyword. Right now, a trait can only contain method signatures, and cannot +include method implementations. Each method signature must be followed by +three dots (`...`) to indicate that the method is unimplemented. + +:::note TODO + +In the future, we plan to support defining fields and default method +implementations inside a trait. Right now, though, a trait can only declare +method signatures. + +::: + +Next we create some structs that conform to the `Quackable` trait. To indicate +that a struct conforms to a trait, include the trait name in parenthesis after +the struct name. You can also include multiple traits, separated by commas. +(If you're familiar with Python, this looks just like Python's inheritance +syntax.) + +```mojo +@value +struct Duck(Quackable): + fn quack(self): + print("Quack") + +@value +struct StealthCow(Quackable): + fn quack(self): + print("Moo!") +``` + +The struct needs to implement any methods that are declared in the trait. The +compiler enforces conformance: if a struct says it conforms to a trait, it must +implement everything required by the trait or the code won't compile. + +Finally, you can define a function that takes a `Quackable` like this: + +```mojo +fn make_it_quack[T: Quackable](maybe_a_duck: T): + maybe_a_duck.quack() +``` + +This syntax may look a little unfamiliar if you haven't dealt with Mojo +[parameters](/mojo/manual/parameters/) before. What this signature +means is that `maybe_a_duck` is an argument of type `T`, where `T` is a type +that must conform to the `Quackable` trait. TODO: This syntax is a little +verbose, and we hope to make it more ergonomic in a future release. + +Using the method is simple enough: + +```mojo +make_it_quack(Duck()) +make_it_quack(StealthCow()) +``` + +```output +Quack +Moo! +``` + +Note that you don't need the square brackets when you call `make_it_quack()`: +the compiler infers the type of the argument, and ensures the type has the +required trait. + +One limitation of traits is that you can't add traits to existing types. For +example, if you define a new `Numeric` trait, you can't add it to the standard +library `Float64` and `Int` types. However, the standard library already +includes a few traits, and we'll be adding more over time. + +### Traits can require static methods + +In addition to regular instance methods, traits can specify required static +methods. + +```mojo +trait HasStaticMethod: + @staticmethod + fn do_stuff(): ... + +fn fun_with_traits[T: HasStaticMethod](): + T.do_stuff() +``` + +## Implicit trait conformance + +Mojo also supports *implicit* trait conformance. That is, if a type implements +all of the methods required for a trait, it's treated as conforming to the +trait, even if it doesn't explicitly include the trait in its declaration: + +```mojo +struct RubberDucky: + fn quack(self): + print("Squeak!") + +make_it_quack(RubberDucky()) +``` + +Implicit conformance can be handy if you're defining a trait and you want it to +work with types that you don't control—such as types from the standard library, +or a third-party library. + +However, we still strongly recommend explicit trait conformance wherever +possible. This has two advantages: + +* Documentation. It makes it clear that the type conforms to the trait, without + having to scan all of its methods. + +* Future feature support. When default method implementations are added to + traits, they'll only work for types that explicitly conform to traits. + +## Trait inheritance + +Traits can inherit from other traits. A trait that inherits from another trait +includes all of the requirements declared by the parent trait. For example: + +```mojo +trait Animal: + fn make_sound(self): + ... + +# Bird inherits from Animal +trait Bird(Animal): + fn fly(self): + ... +``` + +Since `Bird` inherits from `Animal`, a struct that conforms to the `Bird` trait +needs to implement **both** `make_sound()` and `fly()`. And since every `Bird` +conforms to `Animal`, a struct that conforms to `Bird` can be passed to any +function that requires an `Animal`. + +To inherit from multiple traits, add a comma-separated list of traits inside the +parenthesis. For example, you could define a `NamedAnimal` trait that combines the +requirements of the `Animal` trait and a new `Named` trait: + +```mojo +trait Named: + fn get_name(self) -> String: + ... + +trait NamedAnimal(Animal, Named): + pass +``` + +## Traits and lifecycle methods + +Traits can specify required +[lifecycle methods](/mojo/manual/lifecycle/#lifecycles-and-lifetimes), including +constructors, copy constructors and move constructors. + +For example, the following code creates a `MassProducible` trait. A +`MassProducible` type has a default (no-argument) constructor and can be moved. +It uses the built-in [`Movable`](/mojo/stdlib/builtin/value/Movable) trait, +which requires the type to have a [move +constructor](/mojo/manual/lifecycle/life#move-constructor). + +The `factory[]()` function returns a newly-constructed instance of a +`MassProducible` type. + +```mojo +trait DefaultConstructible: + fn __init__(out self): ... + +trait MassProducible(DefaultConstructible, Movable): + pass + +fn factory[T: MassProducible]() -> T: + return T() + +struct Thing(MassProducible): + var id: Int + + fn __init__(out self): + self.id = 0 + + fn __moveinit__(out self, owned existing: Self): + self.id = existing.id + +var thing = factory[Thing]() +``` + +Note that [`@register_passable("trivial")`](/mojo/manual/decorators/register-passable#register_passabletrivial) +types have restrictions on their lifecycle methods: they can't define copy or +move constructors, because they don't require any custom logic. + +For the purpose of trait conformance, the compiler treats trivial types as +copyable and movable. + +## Built-in traits + +The Mojo standard library currently includes a few traits. They're implemented +by a number of standard library types, and you can also implement these on your +own types: + +* [`Absable`](/mojo/stdlib/builtin/math/Absable) +* [`AnyType`](/mojo/stdlib/builtin/anytype/AnyType) +* [`Boolable`](/mojo/stdlib/builtin/bool/Boolable) +* [`BoolableCollectionElement`](/mojo/stdlib/builtin/value/BoolableCollectionElement) +* [`BoolableKeyElement`](/mojo/stdlib/builtin/value/BoolableKeyElement) +* [`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) +* [`Comparable`](/mojo/stdlib/builtin/comparable/Comparable) +* [`ComparableCollectionElement`](/mojo/stdlib/builtin/value/ComparableCollectionElement) +* [`Copyable`](/mojo/stdlib/builtin/value/Copyable) +* [`Defaultable`](/mojo/stdlib/builtin/value/Defaultable) +* [`Writable`](/mojo/stdlib/utils/write/Writable) +* [`Hashable`](/mojo/stdlib/builtin/hash/Hashable) +* [`Indexer`](/mojo/stdlib/builtin/int/Indexer) +* [`Intable`](/mojo/stdlib/builtin/int/Intable) +* [`IntableRaising`](/mojo/stdlib/builtin/int/IntableRaising) +* [`KeyElement`](/mojo/stdlib/collections/dict/KeyElement) +* [`Movable`](/mojo/stdlib/builtin/value/Movable) +* [`PathLike`](/mojo/stdlib/os/pathlike/PathLike) +* [`Powable`](/mojo/stdlib/builtin/math/Powable) +* [`Representable`](/mojo/stdlib/builtin/repr/Representable) +* [`RepresentableCollectionElement`](/mojo/stdlib/builtin/value/RepresentableCollectionElement) +* [`RepresentableKeyElement`](/mojo/stdlib/collections/dict/RepresentableKeyElement) +* [`Sized`](/mojo/stdlib/builtin/len/Sized) +* [`Stringable`](/mojo/stdlib/builtin/str/Stringable) +* [`StringableCollectionElement`](/mojo/stdlib/builtin/value/StringableCollectionElement) +* [`StringableRaising`](/mojo/stdlib/builtin/str/StringableRaising) +* [`StringRepresentable`](/mojo/stdlib/collections/string/StringRepresentable) +* [`Roundable`](/mojo/stdlib/builtin/math/Roundable) +* [`Writer`](/mojo/stdlib/utils/write/Writer) +* [`Truncable`](/mojo/stdlib/builtin/_math/Truncable) + +The API reference docs linked above include usage examples for each trait. The +following sections discuss a few of these traits. + +### The `Sized` trait + +The [`Sized`](/mojo/stdlib/builtin/len/Sized) trait identifies types that +have a measurable length, like strings and arrays. + +Specifically, `Sized` requires a type to implement the `__len__()` method. +This trait is used by the built-in [`len()`](/mojo/stdlib/builtin/len/len) +function. For example, if you're writing a custom list type, you could +implement this trait so your type works with `len()`: + +```mojo +struct MyList(Sized): + var size: Int + # ... + + fn __init__(out self): + self.size = 0 + + fn __len__(self) -> Int: + return self.size + +print(len(MyList())) +``` + +```output +0 +``` + +### The `Intable` and `IntableRaising` traits + +The [`Intable`](/mojo/stdlib/builtin/int/Intable) trait identifies a type that +can be implicitly converted to `Int`. The +[`IntableRaising`](/mojo/stdlib/builtin/int/IntableRaising) trait describes a +type can be converted to an `Int`, but the conversion might raise an error. + +Both of these traits require the type to implement the `__int__()` method. For +example: + +```mojo +@value +struct Foo(Intable): + var i: Int + + fn __int__(self) -> Int: + return self.i + +var foo = Foo(42) +print(int(foo) == 42) +``` + +```output +True +``` + +### The `Stringable`, `Representable`, and `Writable` traits + +The [`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait identifies a type +that can be implicitly converted to +[`String`](/mojo/stdlib/collections/string/String). The +[`StringableRaising`](/mojo/stdlib/builtin/str/StringableRaising) trait +describes a type that can be converted to a `String`, but the conversion might +raise an error. Any type that conforms to `Stringable` or `StringableRaising` +also works with the built-in [`str()`](/mojo/stdlib/builtin/str/str) function to +explicitly return a `String`. These traits also mean that the type can support +both the `{!s}` and `{}` format specifiers of the `String` class's +[`format()`](/mojo/stdlib/collections/string/String#format) method. These traits +require the type to define the +[`__str__()`](/mojo/stdlib/builtin/str/Stringable#__str__) method. + +In contrast, the [`Representable`](/mojo/stdlib/builtin/repr/Representable) +trait defines a type that can be used with the built-in +[`repr()`](/mojo/stdlib/builtin/repr/repr) function, as well as the `{!r}` +format specifier of the `format()` method. This trait requires the type to +define the [`__repr__()`](/mojo/stdlib/builtin/repr/Representable#__repr__) +method, which should compute the "official" string representation of a type. If +at all possible, this should look like a valid Mojo expression that could be +used to recreate a struct instance with the same value. + +The [`StringRepresentable`](/mojo/stdlib/collections/string/StringRepresentable) +trait denotes a trait composition of the `Stringable` and `Representable` +traits. It requires a type to implement both a `__str__()` and a `__repr__()` +method. + +The [`Writable`](/mojo/stdlib/utils/write/Writable) trait describes a +type that can be converted to a stream of UTF-8 encoded data by writing to a +`Writer` object. The [`print()`](/mojo/stdlib/builtin/io/print) function +requires that its arguments conform to the `Writable` trait. This enables +efficient stream-based writing by default, avoiding unnecessary intermediate +String heap allocations. + +The `Writable` trait requires a type to implement a +[`write_to()`](/mojo/stdlib/utils/write/Writable#write_to) method, which +is provided with an object that conforms to the +[`Writer`](/mojo/stdlib/utils/write/Writer) as an argument. You then +invoke the `Writer` instance's +[`write()`](/mojo/stdlib/utils/write/Writer#write) method to write a +sequence of `Writable` arguments constituting the `String` representation of +your type. + +While this might sound complex at first, in practice you can minimize +boilerplate and duplicated code by using the [`String.write()`](/mojo/stdlib/collections/string/String#write) static function to +implement the type's `Stringable` implementation in terms of its `Writable` +implementation. Here is a simple example of a type that implements all of the +`Stringable`, `Representable`, and `Writable` traits: + +```mojo +@value +struct Dog(Stringable, Representable, Writable): + var name: String + var age: Int + + fn __repr__(self) -> String: + return "Dog(name=" + repr(self.name) + ", age=" + repr(self.age) + ")" + + fn __str__(self) -> String: + return String.write(self) + + fn write_to[W: Writer](self, inout writer: W) -> None: + writer.write("Dog(", self.name, ", ", self.age, ")") + +var dog = Dog("Rex", 5) +print(repr(dog)) +print(dog) + +var dog_info = String("String: {!s}\nRepresentation: {!r}").format(dog, dog) +print(dog_info) +``` + +```output +Dog(name='Rex', age=5) +Dog(Rex, 5) +String: Dog(Rex, 5) +Representation: Dog(name='Rex', age=5) +``` + +### The `AnyType` trait + +When building a generic container type, one challenge is knowing how to dispose +of the contained items when the container is destroyed. Any type that +dynamically allocates memory needs to supply a +[destructor](/mojo/manual/lifecycle/death#destructor) (`__del__()` method) +that must be called to free the allocated memory. But not all types have a +destructor, and your Mojo code has no way to determine which is which. + +The [`AnyType`](/mojo/stdlib/builtin/anytype/AnyType) trait solves this +issue: every trait implicitly inherits from `AnyType`, and all structs conform +to `AnyType`, which guarantees that the type has a destructor. For types that +don't have one, Mojo adds a no-op destructor. This means you can call the +destructor on any type. + +This makes it possible to build generic collections without leaking memory. When +the collection's destructor is called, it can safely call the destructors on +every item it contains. + +## Generic structs with traits + +You can also use traits when defining a generic container. A generic container +is a container (for example, an array or hashmap) that can hold different data +types. In a dynamic language like Python it's easy to add different types of +items to a container. But in a statically-typed environment the compiler needs +to be able to identify the types at compile time. For example, if the container +needs to copy a value, the compiler needs to verify that the type can be copied. + +The [`List`](/mojo/stdlib/collections/list) type is an example of a +generic container. A single `List` can only hold a single type of data. +For example, you can create a list of integer values like this: + +```mojo +from collections import List + +var list = List[Int](1, 2, 3) +for i in range(len(list)): + print(list[i], sep=" ", end="") +``` + +```output +1 2 3 +``` + +You can use traits to define requirements for elements that are stored in a +container. For example, `List` requires elements that can be moved and +copied. To store a struct in a `List`, the struct needs to conform to +the `CollectionElement` trait, which requires a +[copy constructor](/mojo/manual/lifecycle/life#copy-constructor) and a +[move constructor](/mojo/manual/lifecycle/life#move-constructor). + +Building generic containers is an advanced topic. For an introduction, see the +section on +[parameterized structs](/mojo/manual/parameters/#parameterized-structs). diff --git a/docs/manual/types.ipynb b/docs/manual/types.ipynb deleted file mode 100644 index 1cd9762b51..0000000000 --- a/docs/manual/types.ipynb +++ /dev/null @@ -1,1124 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Types\n", - "sidebar_position: 1\n", - "description: Standard Mojo data types.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "All values in Mojo have an associated data type. Most of the types are\n", - "_nominal_ types, defined by a [`struct`](/mojo/manual/structs). These types are\n", - "nominal (or \"named\") because type equality is determined by the type's _name_,\n", - "not its _structure_.\n", - "\n", - "There are a some types that aren't defined as structs:\n", - "\n", - "* Functions are typed based on their signatures.\n", - "* `NoneType` is a type with one instance, the `None` object, which is used to\n", - " signal \"no value.\"\n", - "\n", - "Mojo comes with a standard library that provides a number of useful types and\n", - "utility functions. These standard types aren’t privileged. Each of the standard\n", - "library types is defined just like user-defined types—even basic types like\n", - "[`Int`](/mojo/stdlib/builtin/int/Int) and\n", - "[`String`](/mojo/stdlib/collections/string/String). But these standard library\n", - "types are the building blocks you'll use for most Mojo programs.\n", - "\n", - "The most common types are _built-in types_, which are always available and\n", - "don't need to be imported. These include types for numeric values, strings,\n", - "boolean values, and others.\n", - "\n", - "The standard library also includes many more types that you can import as\n", - "needed, including collection types, utilities for interacting with the\n", - "filesystem and getting system information, and so on.\n", - "\n", - "## Numeric types\n", - "\n", - "Mojo's most basic numeric type is `Int`, which represents a signed integer of\n", - "the largest size supported by the system—typically 64 bits or 32 bits.\n", - "\n", - "Mojo also has built-in types for integer, unsigned integer, and floating-point \n", - "values of various precisions:\n", - "\n", - "
\n", - "\n", - "| Type name | Description |\n", - "|---------------|--------------|\n", - "| `Int8` | 8-bit signed integer |\n", - "| `UInt8` | 8-bit unsigned integer |\n", - "| `Int16` | 16-bit signed integer |\n", - "| `UInt16` | 16-bit unsigned integer |\n", - "| `Int32` | 32-bit signed integer |\n", - "| `UInt32` | 32-bit unsigned integer |\n", - "| `Int64` | 64-bit signed integer |\n", - "| `UInt64` | 64-bit unsigned integer |\n", - "| `Float16` | 16-bit floating point number (IEEE 754-2008 binary16) |\n", - "| `Float32` | 32-bit floating point number (IEEE 754-2008 binary32) |\n", - "| `Float64` | 64-bit floating point number (IEEE 754-2008 binary64) |\n", - "
Table 1. Numeric types with specific precision
\n", - "
\n", - "\n", - "The types in Table 1 are actually all aliases to a single type, \n", - "[`SIMD`](/mojo/stdlib/builtin/simd/SIMD), which is discussed later.\n", - "\n", - "All of the numeric types support the usual numeric and bitwise operators. The \n", - "[`math`](/mojo/stdlib/math/) module provides a number of additional math\n", - "functions.\n", - "\n", - "You may wonder when to use `Int` and when to use the other integer \n", - "types. In general, `Int` is a good safe default when you need an integer type \n", - "and you don't require a specific bit width. Using `Int` as the default integer \n", - "type for APIs makes APIs more consistent and predictable.\n", - "\n", - "### Signed and unsigned integers\n", - "\n", - "Mojo supports both signed (`Int`) and unsigned (`UInt`) integers. You can use \n", - "the general `Int` or `UInt` types when you do not require a specific bit width.\n", - "Note that any alias to a fixed-precision type will be of type \n", - "[`SIMD`](/mojo/stdlib/builtin/simd/SIMD).\n", - "\n", - "You might prefer to use unsigned integers over signed integers in conditions \n", - "where you don't need negative numbers, are not writing for a public API, or need \n", - "additional range.\n", - "\n", - "Mojo's `UInt` type represents an unsigned integer of the \n", - "[word size](https://en.wikipedia.org/wiki/Word_(computer_architecture)) of the \n", - "CPU, which is 64 bits on 64-bit CPUs and 32 bits on 32-bit CPUs. If you wish to \n", - "use a fixed size unsigned integer, you can use `UInt8`, `UInt16`, `UInt32`, or \n", - "`UInt64`, which are aliases to the [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) \n", - "type. \n", - "\n", - "Signed and unsigned integers of the same bit width can represent the same number \n", - "of values, but have different ranges. For example, an `Int8` can represent 256 \n", - "values ranging from -128 to 127. A `UInt8` can also represent 256 values, but \n", - "represents a range of 0 to 255. \n", - "\n", - "Signed and unsigned integers also have different overflow behavior. When a \n", - "signed integer overflows outside the range of values that its type can \n", - "represent, the value overflows to negative numbers. For example, adding `1` to \n", - "`var si: Int8 = 127` results in `-128`. \n", - "\n", - "When an unsigned integer overflows outside the range of values that its type can \n", - "represent, the value overflows to zero. So, adding `1` to `var ui: UInt8 = 255` \n", - "is equal to `0`.\n", - "\n", - "### Floating-point numbers\n", - "\n", - "Floating-point types represent real numbers. Because not all real numbers can be\n", - "expressed in a finite number of bits, floating-point numbers can't represent\n", - "every value exactly.\n", - "\n", - "The floating-point types listed in Table 1—`Float64`, `Float32`, and \n", - "`Float16`—follow the IEEE 754-2008 standard for representing floating-point \n", - "values. Each type includes a sign bit, one set of bits representing an exponent,\n", - "and another set representing the fraction or mantissa. Table 2 shows how each of \n", - "these types are represented in memory.\n", - "\n", - "
\n", - "\n", - "| Type name | Sign | Exponent | Mantissa |\n", - "|------------|-------|-----------|----------|\n", - "| `Float64` | 1 bit | 11 bits | 52 bits |\n", - "| `Float32` | 1 bit | 8 bits | 23 bits |\n", - "| `Float16` | 1 bit | 5 bits | 10 bits |\n", - "
Table 2. Details of floating-point types
\n", - "
\n", - "\n", - "Numbers with exponent values of all ones or all zeros represent special values,\n", - "allowing floating-point numbers to represent infinity, negative infinity,\n", - "signed zeros, and not-a-number (NaN). For more details on how numbers are\n", - "represented, see [IEEE 754](https://en.wikipedia.org/wiki/IEEE_754) on\n", - "Wikipedia.\n", - "\n", - "A few things to note with floating-point values:\n", - "\n", - "- Rounding errors. Rounding may produce unexpected results. For example, 1/3\n", - " can't be represented exactly in these floating-point formats. The more\n", - " operations you perform with floating-point numbers, the more the rounding\n", - " errors accumulate. \n", - "\n", - "- Space between consecutive numbers. The space between consecutive numbers is\n", - " variable across the range of a floating-point number format. For numbers close\n", - " to zero, the distance between consecutive numbers is very small. For large\n", - " positive and negative numbers, the space between consecutive numbers is\n", - " greater than 1, so it may not be possible to represent consecutive integers.\n", - "\n", - "Because the values are approximate, it is rarely useful to compare them with\n", - "the equality operator (`==`). Consider the following example:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "True\n" - ] - } - ], - "source": [ - "var big_num = 1.0e16\n", - "var bigger_num = big_num+1.0\n", - "print(big_num == bigger_num)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Comparison operators (`<` `>=` and so on) work with floating point numbers. You\n", - "can also use the [`math.isclose()`](/mojo/stdlib/math/math/isclose) function to\n", - "compare whether two floating-point numbers are equal within a specified\n", - "tolerance." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "### Numeric literals\n", - "\n", - "In addition to these numeric types, the standard libraries provides integer and\n", - "floating-point literal types, \n", - "[`IntLiteral`](/mojo/stdlib/builtin/int_literal/IntLiteral) and \n", - "[`FloatLiteral`](/mojo/stdlib/builtin/float_literal/FloatLiteral).\n", - "\n", - "These literal types are used at compile time to represent literal numbers that\n", - "appear in the code. In general, you should never instantiate these types\n", - "yourself.\n", - "\n", - "Table 3 summarizes the literal formats you can use to represent numbers.\n", - "\n", - "
\n", - "\n", - "| Format | Examples | Notes |\n", - "|--------|---------|-------|\n", - "| Integer literal | `1760` | Integer literal, in decimal format. |\n", - "| Hexadecimal literal | `0xaa`, `0xFF` | Integer literal, in hexadecimal format.
Hex digits are case-insensitive. |\n", - "| Octal literal | `0o77` | Integer literal, in octal format. |\n", - "| Binary literal | `0b0111` | Integer literal, in binary format. |\n", - "| Floating-point literal | `3.14`, `1.2e9` | Floating-point literal.
Must include the decimal point to be interpreted as floating-point. |\n", - "
Table 3. Numeric literal formats
\n", - "
\n", - "\n", - "At compile time, the literal types are arbitrary-precision (also called \n", - "infinite-precision) values, so the compiler can perform compile-time \n", - "calculations without overflow or rounding errors.\n", - "\n", - "At runtime the values are converted to finite-precision types—`Int` for\n", - "integer values, and `Float64` for floating-point values. (This process of \n", - "converting a value that can only exist at compile time into a runtime value is\n", - "called _materialization_.) \n", - "\n", - "The following code sample shows the difference between an arbitrary-precision \n", - "calculation and the same calculation done using `Float64` values at runtime,\n", - "which suffers from rounding errors." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1.0 0.99999999999999978\n" - ] - } - ], - "source": [ - "var arbitrary_precision = 3.0 * (4.0 / 3.0 - 1.0)\n", - "# use a variable to force the following calculation to occur at runtime\n", - "var three = 3.0\n", - "var finite_precision = three * (4.0 / three - 1.0)\n", - "print(arbitrary_precision, finite_precision)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "### `SIMD` and `DType`\n", - "\n", - "To support high-performance numeric processing, Mojo uses the\n", - "[`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type as the basis for its numeric\n", - "types. SIMD (single instruction, multiple data) is a processor technology that\n", - "allows you to perform an operation on an entire set of operands at once. Mojo's\n", - "`SIMD` type abstracts SIMD operations. A `SIMD` value represents a SIMD\n", - "_vector_—that is, a fixed-size array of values that can fit into a processor's\n", - "register. SIMD vectors are defined by two\n", - "[_parameters_](/mojo/manual/parameters/):\n", - "\n", - "- A `DType` value, defining the data type in the vector (for example, \n", - " 32-bit floating-point numbers).\n", - "- The number of elements in the vector, which must be a power of two.\n", - "\n", - "For example, you can define a vector of four `Float32` values like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "var vec = SIMD[DType.float32, 4](3.0, 2.0, 2.0, 1.0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Math operations on SIMD values are \n", - "applied _elementwise_, on each individual element in the vector. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[2, 6, 15, 28]\n" - ] - } - ], - "source": [ - "var vec1 = SIMD[DType.int8, 4](2, 3, 5, 7)\n", - "var vec2 = SIMD[DType.int8, 4](1, 2, 3, 4)\n", - "var product = vec1 * vec2\n", - "print(product)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\n", - "### Scalar values\n", - "\n", - "The `SIMD` module defines several _type aliases_ that are shorthand for\n", - "different types of `SIMD` vectors. In particular, the `Scalar` type is just a\n", - "`SIMD` vector with a single element. The numeric types listed in \n", - "[Table 1](#table-1), like `Int8` and `Float32` are actually type aliases for\n", - "different types of scalar values:\n", - "\n", - "```mojo\n", - "alias Scalar = SIMD[size=1]\n", - "alias Int8 = Scalar[DType.int8]\n", - "alias Float32 = Scalar[DType.float32]\n", - "```\n", - "\n", - "This may seem a little confusing at first, but it means that whether you're \n", - "working with a single `Float32` value or a vector of float32 values,\n", - "the math operations go through exactly the same code path." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### The `DType` type\n", - "\n", - "The `DType` struct describes the different data types that a `SIMD` vector can\n", - "hold, and defines a number of utility functions for operating on those data\n", - "types. The `DType` struct defines a set of aliases that act as identifiers for\n", - "the different data types, like `DType.int8` and `DType.float32`. You use\n", - "these aliases when declaring a `SIMD` vector:\n", - "\n", - "```mojo\n", - "var v: SIMD[DType.float64, 16]\n", - "```\n", - "\n", - "Note that `DType.float64` isn't a _type_, it's a value that describes a data\n", - "type. You can't create a variable with the type `DType.float64`. You can create\n", - "a variable with the type `SIMD[DType.float64, 1]` (or `Float64`, which is the\n", - "same thing).\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "float32 is floating point: True\n", - "float32 is integral: False\n", - "Min/max finite values for float32\n", - "-3.4028234663852886e+38 3.4028234663852886e+38\n" - ] - } - ], - "source": [ - "from utils.numerics import max_finite, min_finite\n", - "\n", - "def describeDType[dtype: DType]():\n", - " print(dtype, \"is floating point:\", dtype.is_floating_point())\n", - " print(dtype, \"is integral:\", dtype.is_integral())\n", - " print(\"Min/max finite values for\", dtype)\n", - " print(min_finite[dtype](), max_finite[dtype]())\n", - "\n", - "describeDType[DType.float32]()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "There are several other data types in the standard library that also use\n", - "the `DType` abstraction. \n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Strings\n", - "\n", - "Mojo's `String` type represents a mutable string. (For Python programmers, note\n", - "that this is different from Python's standard string, which is immutable.)\n", - "Strings support a variety of operators and common methods.\n" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Testing Mojo strings\n" - ] - } - ], - "source": [ - "var s: String = \"Testing\"\n", - "s += \" Mojo strings\"\n", - "print(s)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Most standard library types conform to the \n", - "[`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait, which represents\n", - "a type that can be converted to a string. Use `str(value)` to\n", - "explicitly convert a value to a string:" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Items in list: 5\n" - ] - } - ], - "source": [ - "var s = str(\"Items in list: \") + str(5)\n", - "print(s)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "### String literals\n", - "\n", - "As with numeric types, the standard library includes a string literal type used\n", - "to represent literal strings in the program source. String literals are\n", - "enclosed in either single or double quotes.\n", - "\n", - "Adjacent literals are concatenated together, so you can define a long string\n", - "using a series of literals broken up over several lines:\n", - "\n", - "```\n", - "var s = \"A very long string which is \"\n", - " \"broken into two literals for legibility.\"\n", - "```\n", - "\n", - "To define a multi-line string, enclose the literal in three single or double\n", - "quotes:\n", - "\n", - "```\n", - "var s = \"\"\"\n", - "Multi-line string literals let you \n", - "enter long blocks of text, including \n", - "newlines.\"\"\"\n", - "```\n", - "\n", - "Note that the triple double quote form is also used for API documentation\n", - "strings.\n", - "\n", - "Unlike `IntLiteral` and `FloatLiteral`, `StringLiteral` doesn't automatically\n", - "materialize to a runtime type. In some cases, you may need to manually convert\n", - "`StringLiteral` values to `String` using the built-in \n", - "[`str()`](/mojo/stdlib/builtin/str/str) method. " - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "# Variable is type `StringLiteral`\n", - "var s1 = \"Example\"\n", - "\n", - "# Variable is type `String`\n", - "var s2: String = \"Example\"\n", - "\n", - "# Variable is type `String`\n", - "var s3 = str(\"Example\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "\n", - "\n", - "## Booleans\n", - "\n", - "Mojo's `Bool` type represents a boolean value. It can take one of two values, \n", - "`True` or `False`. You can negate a boolean value using the `not` operator." - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "False True\n" - ] - } - ], - "source": [ - "var conditionA = False\n", - "var conditionB: Bool\n", - "conditionB = not conditionA\n", - "print(conditionA, conditionB)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Many types have a boolean representation. Any type that implements the \n", - "[`Boolable`](/mojo/stdlib/builtin/bool/Boolable) trait has a boolean \n", - "representation. As a general principle, collections evaluate as True if they \n", - "contain any elements, False if they are empty; strings evaluate as True if they\n", - "have a non-zero length." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Tuples\n", - "\n", - "Mojo's `Tuple` type represents an immutable tuple consisting of zero or more \n", - "values, separated by commas. Tuples can consist of multiple types and you can \n", - "index into tuples in multiple ways. " - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 Example\n", - "Example\n" - ] - } - ], - "source": [ - "# Tuples are immutable and can hold multiple types\n", - "example_tuple = Tuple[Int, String](1, \"Example\")\n", - "\n", - "# Assign multiple variables at once\n", - "x, y = example_tuple\n", - "print(x, y)\n", - "\n", - "# Get individual values with an index\n", - "s = example_tuple.get[1, String]()\n", - "print(s)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also create a tuple without explicit typing. Note that if we declare the \n", - "same tuple from the previous example with implicit typing instead of explicit, \n", - "we must also convert `\"Example\"` from type `StringLiteral` to type `String`. " - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Example\n" - ] - } - ], - "source": [ - "example_tuple = (1, str(\"Example\"))\n", - "s = example_tuple.get[1, String]()\n", - "print(s)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "When defining a function, you can explicitly declare the type of tuple elements \n", - "in one of two ways: " - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "def return_tuple_1() -> Tuple[Int, Int]:\n", - " return Tuple[Int, Int](1, 1)\n", - "\n", - "def return_tuple_2() -> (Int, Int):\n", - " return (2, 2)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Collection types\n", - "\n", - "The Mojo standard library also includes a set of basic collection types that\n", - "can be used to build more complex data structures:\n", - "\n", - "- [`List`](/mojo/stdlib/collections/list/List), a dynamically-sized array of \n", - " items.\n", - "- [`Dict`](/mojo/stdlib/collections/dict/Dict), an associative array of \n", - " key-value pairs.\n", - "- [`Set`](/mojo/stdlib/collections/set/Set), an unordered collection of unique\n", - " items.\n", - "- [`Optional`](/mojo/stdlib/collections/optional/Optional)\n", - " represents a value that may or may not be present. \n", - "\n", - "The collection types are _generic types_: while a given collection can only\n", - "hold a specific type of value (such as `Int` or `Float64`), you specify the\n", - "type at compile time using a [parameter](/mojo/manual/parameters/). For\n", - "example, you can create a `List` of `Int` values like this:" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "var l = List[Int](1, 2, 3, 4)\n", - "# l.append(3.14) # error: FloatLiteral cannot be converted to Int" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You don't always need to specify the type explicitly. If Mojo can _infer_ the\n", - "type, you can omit it. For example, when you construct a list from a set of \n", - "integer literals, Mojo creates a `List[Int]`." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "# Inferred type == Int\n", - "var l1 = List(1, 2, 3, 4)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "Where you need a more flexible collection, the \n", - "[`Variant`](/mojo/stdlib/utils/variant/Variant) type can hold different types \n", - "of values. For example, a `Variant[Int32, Float64]` can hold either an `Int32`\n", - "_or_ a `Float64` value at any given time. (Using `Variant` is not covered in\n", - "this section, see the [API docs](/mojo/stdlib/utils/variant/Variant) for more\n", - "information.)\n", - "\n", - "The following sections give brief introduction to the main collection types. \n", - "\n", - "### List\n", - "\n", - "[`List`](/mojo/stdlib/collections/list/List) is a dynamically-sized array of \n", - "elements. List elements need to conform to the \n", - "[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait, which\n", - "just means that the items must be copyable and movable. Most of the common\n", - "standard library primitives, like `Int`, `String`, and `SIMD` conform to this\n", - "trait. You can create a `List` by passing the element type as a parameter, like\n", - "this:\n", - "\n", - "\n", - "```mojo\n", - "var l = List[String]()\n", - "```\n", - "\n", - "The `List` type supports a subset of the Python `list` API, including the\n", - "ability to append to the list, pop items out of the list, and access list items\n", - "using subscript notation." - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Popping last item from list: 11\n", - "2, 3, 5, 7, " - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "var list = List(2, 3, 5)\n", - "list.append(7)\n", - "list.append(11)\n", - "print(\"Popping last item from list: \", list.pop())\n", - "for idx in range(len(list)):\n", - " print(list[idx], end=\", \")\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that the previous code sample leaves out the type parameter when creating \n", - "the list. Because the list is being created with a set of `Int` values, Mojo can\n", - "_infer_ the type from the arguments. \n", - "\n", - "There are some notable limitations when using `List`:\n", - "\n", - "- You can't currently initialize a list from a list literal, like this:\n", - "\n", - " ```mojo\n", - " # Doesn't work!\n", - " var list: List[Int] = [2, 3, 5]\n", - " ```\n", - "\n", - " But you can use variadic arguments to achieve the same thing:\n", - "\n", - " ```mojo\n", - " var list = List(2, 3, 5)\n", - " ```\n", - "\n", - "- You can't `print()` a list, or convert it directly into a string.\n", - "\n", - " ```mojo\n", - " # Does not work\n", - " print(list)\n", - " ```\n", - "\n", - " As shown above, you can print the individual elements in a list as long as\n", - " they're a [`Stringable`](/mojo/stdlib/builtin/str/Stringable) type.\n", - "\n", - "- Iterating a `List` currently returns a \n", - " [`Reference`](/mojo/stdlib/memory/reference/Reference) to each item, not the\n", - " item itself. You can access the item using the dereference operator, `[]`:" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2, 3, 4, " - ] - } - ], - "source": [ - "#: from collections import List\n", - "var list = List(2, 3, 4)\n", - "for item in list:\n", - " print(item[], end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - " Subscripting in to a list, however, returns the item directly—no need to \n", - " dereference:" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2, 3, 4, " - ] - } - ], - "source": [ - "#: from collections import List\n", - "#: var list = List[Int](2, 3, 4)\n", - "for i in range(len(list)):\n", - " print(list[i], end=\", \")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Dict\n", - "\n", - "The [`Dict`](/mojo/stdlib/collections/dict/Dict) type is an associative array\n", - "that holds key-value pairs. You can create a `Dict` by specifying the key type\n", - "and value type as parameters, like this:\n", - "\n", - "```mojo\n", - "var values = Dict[String, Float64]()\n", - "```\n", - "\n", - "The dictionary's key type must conform to the \n", - "[`KeyElement`](/mojo/stdlib/collections/dict/KeyElement) trait, and value \n", - "elements must conform to the \n", - "[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait.\n", - "\n", - "You can insert and remove key-value pairs, update the value assigned to a key,\n", - "and iterate through keys, values, or items in the dictionary. \n", - "\n", - "The `Dict` iterators all yield references, so you need to use the dereference\n", - "operator `[]` as shown in the following example:" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "plasticity 3.1000000000000001\n", - "elasticity 1.3\n", - "electricity 9.6999999999999993\n" - ] - } - ], - "source": [ - "from collections import Dict\n", - "\n", - "var d = Dict[String, Float64]()\n", - "d[\"plasticity\"] = 3.1\n", - "d[\"elasticity\"] = 1.3\n", - "d[\"electricity\"] = 9.7\n", - "for item in d.items():\n", - " print(item[].key, item[].value)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Set\n", - "\n", - "The [`Set`](/mojo/stdlib/collections/set/Set) type represents a set of unique\n", - "values. You can add and remove elements from the set, test whether a value \n", - "exists in the set, and perform set algebra operations, like unions and \n", - "intersections between two sets. \n", - "\n", - "Sets are generic and the element type must conform to the\n", - "[`KeyElement`](/mojo/stdlib/collections/dict/KeyElement) trait." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "We both like:\n", - "- ice cream\n", - "- tacos\n" - ] - } - ], - "source": [ - "from collections import Set\n", - "\n", - "i_like = Set(\"sushi\", \"ice cream\", \"tacos\", \"pho\")\n", - "you_like = Set(\"burgers\", \"tacos\", \"salad\", \"ice cream\")\n", - "we_like = i_like.intersection(you_like)\n", - "\n", - "print(\"We both like:\")\n", - "for item in we_like:\n", - " print(\"-\", item[])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Optional\n", - "\n", - "An [`Optional`](/mojo/stdlib/collections/optional/Optional) represents a \n", - "value that may or may not be present. Like the other collection types, it is\n", - "generic, and can hold any type that conforms to the\n", - "[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [], - "source": [ - "# Two ways to initialize an Optional with a value\n", - "var opt1 = Optional(5)\n", - "var opt2: Optional[Int] = 5\n", - "# Two ways to initialize an Optional with no value\n", - "var opt3 = Optional[Int]()\n", - "var opt4: Optional[Int] = None" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "An `Optional` evaluates as `True` when it holds a value, `False` otherwise. If\n", - "the `Optional` holds a value, you can retrieve a reference to the value using \n", - "the `value()` method. But calling `value()` on an `Optional` with no value\n", - "results in undefined behavior, so you should always guard a call to `value()`\n", - "inside a conditional that checks whether a value exists." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Testing\n" - ] - } - ], - "source": [ - "var opt: Optional[String] = str(\"Testing\")\n", - "if opt:\n", - " var value_ref = opt.value()\n", - " print(value_ref)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "Alternately, you can use the `or_else()` method, which returns the stored\n", - "value if there is one, or a user-specified default value otherwise:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello\n", - "Hi\n" - ] - } - ], - "source": [ - "var custom_greeting: Optional[String] = None\n", - "print(custom_greeting.or_else(\"Hello\"))\n", - "\n", - "custom_greeting = str(\"Hi\")\n", - "print(custom_greeting.or_else(\"Hello\"))\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Register-passable, memory-only, and trivial types\n", - "\n", - "In various places in the documentation you'll see references to \n", - "register-passable, memory-only, and trivial types. Register-passable and \n", - "memory-only types are distinguished based on how they hold data:\n", - "\n", - "- Register-passable types are composed exclusively of fixed-size data types,\n", - " which can (theoretically) be stored in a machine register. A register-passable\n", - " type can include other types, as long as they are also register-passable.\n", - " `Int`, `Bool`, and `SIMD`, for example, are all register-passable types. So \n", - " a register-passable `struct` could include `Int` and `Bool` fields, but not a\n", - " `String` field. Register-passable types are declared with the \n", - " [`@register_passable`](/mojo/manual/decorators/register-passable) decorator.\n", - "\n", - " Register-passable types are always passed by value (that is, the values are\n", - " copied).\n", - "\n", - "- Memory-only types consist of any types that _don't_ fit the description of\n", - " register-passable types. In particular, these types usually have pointers or \n", - " references to dynamically-allocated memory. `String`, `List`, and `Dict` are\n", - " all examples of memory-only types.\n", - "\n", - "Our long-term goal is to make this distinction transparent to the user, and\n", - "ensure all APIs work with both register-passable and memory-only types.\n", - "But right now you will see some standard library types that only work with \n", - "register-passable types or only work with memory-only types.\n", - "\n", - "In addition to these two categories, Mojo also has \"trivial\" types. Conceptually\n", - "a trivial type is simply a type that doesn't require any custom logic in its\n", - "lifecycle methods. The bits that make up an instance of a trivial type can be\n", - "copied or moved without any knowledge of what they do. Currently, trivial types\n", - "are declared using the\n", - "[`@register_passable(trivial)`](/mojo/manual/decorators/register-passable#register_passabletrivial)\n", - "decorator. Trivial types shouldn't be limited to only register-passable types,\n", - "so in the future we intend to separate trivial types from the \n", - "`@register_passable` decorator." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## `AnyType` and `AnyTrivialRegType`\n", - "\n", - "Two other things you'll see in Mojo APIs are references to `AnyType` and\n", - "`AnyTrivialRegType`. These are effectively _metatypes_, that is, types of types.\n", - "\n", - "- `AnyType` represents any Mojo type. Mojo treats `AnyType` as a special kind of\n", - " trait, and you'll find more discussion of it on the\n", - " [Traits page](/mojo/manual/traits#the-anytype-trait).\n", - "- `AnyTrivialRegType` is a metatype representing any Mojo type that's marked \n", - " register passable.\n", - "\n", - "You'll see them in signatures like this:\n", - "\n", - "```mojo\n", - "fn any_type_function[ValueType: AnyTrivialRegType](value: ValueType):\n", - " ...\n", - "```\n", - "\n", - "You can read this as `any_type_function` has an argument, `value` of type\n", - "`ValueType`, where `ValueType` is a register-passable type, determined at\n", - "compile time. \n", - "\n", - "There is still some code like this in the standard library, but it's gradually\n", - "being migrated to more generic code that doesn't distinguish between \n", - "register-passable and memory-only types.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/types.mdx b/docs/manual/types.mdx new file mode 100644 index 0000000000..4f276c82f9 --- /dev/null +++ b/docs/manual/types.mdx @@ -0,0 +1,763 @@ +--- +title: Types +sidebar_position: 1 +description: Standard Mojo data types. +--- + +All values in Mojo have an associated data type. Most of the types are +*nominal* types, defined by a [`struct`](/mojo/manual/structs). These types are +nominal (or "named") because type equality is determined by the type's *name*, +not its *structure*. + +There are a some types that aren't defined as structs: + +* Functions are typed based on their signatures. +* `NoneType` is a type with one instance, the `None` object, which is used to + signal "no value." + +Mojo comes with a standard library that provides a number of useful types and +utility functions. These standard types aren’t privileged. Each of the standard +library types is defined just like user-defined types—even basic types like +[`Int`](/mojo/stdlib/builtin/int/Int) and +[`String`](/mojo/stdlib/collections/string/String). But these standard library +types are the building blocks you'll use for most Mojo programs. + +The most common types are *built-in types*, which are always available and +don't need to be imported. These include types for numeric values, strings, +boolean values, and others. + +The standard library also includes many more types that you can import as +needed, including collection types, utilities for interacting with the +filesystem and getting system information, and so on. + +## Numeric types + +Mojo's most basic numeric type is `Int`, which represents a signed integer of +the largest size supported by the system—typically 64 bits or 32 bits. + +Mojo also has built-in types for integer, unsigned integer, and floating-point +values of various precisions: + +
+ +| Type name | Description | +| --------- | ----------------------------------------------------- | +| `Int8` | 8-bit signed integer | +| `UInt8` | 8-bit unsigned integer | +| `Int16` | 16-bit signed integer | +| `UInt16` | 16-bit unsigned integer | +| `Int32` | 32-bit signed integer | +| `UInt32` | 32-bit unsigned integer | +| `Int64` | 64-bit signed integer | +| `UInt64` | 64-bit unsigned integer | +| `Float16` | 16-bit floating point number (IEEE 754-2008 binary16) | +| `Float32` | 32-bit floating point number (IEEE 754-2008 binary32) | +| `Float64` | 64-bit floating point number (IEEE 754-2008 binary64) | + +
Table 1. Numeric types with specific precision
+
+ +The types in Table 1 are actually all aliases to a single type, +[`SIMD`](/mojo/stdlib/builtin/simd/SIMD), which is discussed later. + +All of the numeric types support the usual numeric and bitwise operators. The +[`math`](/mojo/stdlib/math/) module provides a number of additional math +functions. + +You may wonder when to use `Int` and when to use the other integer +types. In general, `Int` is a good safe default when you need an integer type +and you don't require a specific bit width. Using `Int` as the default integer +type for APIs makes APIs more consistent and predictable. + +### Signed and unsigned integers + +Mojo supports both signed (`Int`) and unsigned (`UInt`) integers. You can use +the general `Int` or `UInt` types when you do not require a specific bit width. +Note that any alias to a fixed-precision type will be of type +[`SIMD`](/mojo/stdlib/builtin/simd/SIMD). + +You might prefer to use unsigned integers over signed integers in conditions +where you don't need negative numbers, are not writing for a public API, or need +additional range. + +Mojo's `UInt` type represents an unsigned integer of the +[word size](https://en.wikipedia.org/wiki/Word_\(computer_architecture\)) of the +CPU, which is 64 bits on 64-bit CPUs and 32 bits on 32-bit CPUs. If you wish to +use a fixed size unsigned integer, you can use `UInt8`, `UInt16`, `UInt32`, or +`UInt64`, which are aliases to the [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) +type. + +Signed and unsigned integers of the same bit width can represent the same number +of values, but have different ranges. For example, an `Int8` can represent 256 +values ranging from -128 to 127. A `UInt8` can also represent 256 values, but +represents a range of 0 to 255. + +Signed and unsigned integers also have different overflow behavior. When a +signed integer overflows outside the range of values that its type can +represent, the value overflows to negative numbers. For example, adding `1` to +`var si: Int8 = 127` results in `-128`. + +When an unsigned integer overflows outside the range of values that its type can +represent, the value overflows to zero. So, adding `1` to `var ui: UInt8 = 255` +is equal to `0`. + +### Floating-point numbers + +Floating-point types represent real numbers. Because not all real numbers can be +expressed in a finite number of bits, floating-point numbers can't represent +every value exactly. + +The floating-point types listed in Table 1—`Float64`, `Float32`, and +`Float16`—follow the IEEE 754-2008 standard for representing floating-point +values. Each type includes a sign bit, one set of bits representing an exponent, +and another set representing the fraction or mantissa. Table 2 shows how each of +these types are represented in memory. + +
+ +| Type name | Sign | Exponent | Mantissa | +| --------- | ----- | -------- | -------- | +| `Float64` | 1 bit | 11 bits | 52 bits | +| `Float32` | 1 bit | 8 bits | 23 bits | +| `Float16` | 1 bit | 5 bits | 10 bits | + +
Table 2. Details of floating-point types
+
+ +Numbers with exponent values of all ones or all zeros represent special values, +allowing floating-point numbers to represent infinity, negative infinity, +signed zeros, and not-a-number (NaN). For more details on how numbers are +represented, see [IEEE 754](https://en.wikipedia.org/wiki/IEEE_754) on +Wikipedia. + +A few things to note with floating-point values: + +* Rounding errors. Rounding may produce unexpected results. For example, 1/3 + can't be represented exactly in these floating-point formats. The more + operations you perform with floating-point numbers, the more the rounding + errors accumulate. + +* Space between consecutive numbers. The space between consecutive numbers is + variable across the range of a floating-point number format. For numbers close + to zero, the distance between consecutive numbers is very small. For large + positive and negative numbers, the space between consecutive numbers is + greater than 1, so it may not be possible to represent consecutive integers. + +Because the values are approximate, it is rarely useful to compare them with +the equality operator (`==`). Consider the following example: + +```mojo +var big_num = 1.0e16 +var bigger_num = big_num+1.0 +print(big_num == bigger_num) +``` + +```output +True +``` + +Comparison operators (`<` `>=` and so on) work with floating point numbers. You +can also use the [`math.isclose()`](/mojo/stdlib/math/math/isclose) function to +compare whether two floating-point numbers are equal within a specified +tolerance. + +### Numeric literals + +In addition to these numeric types, the standard libraries provides integer and +floating-point literal types, +[`IntLiteral`](/mojo/stdlib/builtin/int_literal/IntLiteral) and +[`FloatLiteral`](/mojo/stdlib/builtin/float_literal/FloatLiteral). + +These literal types are used at compile time to represent literal numbers that +appear in the code. In general, you should never instantiate these types +yourself. + +Table 3 summarizes the literal formats you can use to represent numbers. + +
+ +| Format | Examples | Notes | +| ---------------------- | --------------- | ------------------------------------------------------------------------------------------------ | +| Integer literal | `1760` | Integer literal, in decimal format. | +| Hexadecimal literal | `0xaa`, `0xFF` | Integer literal, in hexadecimal format.
Hex digits are case-insensitive. | +| Octal literal | `0o77` | Integer literal, in octal format. | +| Binary literal | `0b0111` | Integer literal, in binary format. | +| Floating-point literal | `3.14`, `1.2e9` | Floating-point literal.
Must include the decimal point to be interpreted as floating-point. | + +
Table 3. Numeric literal formats
+
+ +At compile time, the literal types are arbitrary-precision (also called +infinite-precision) values, so the compiler can perform compile-time +calculations without overflow or rounding errors. + +At runtime the values are converted to finite-precision types—`Int` for +integer values, and `Float64` for floating-point values. (This process of +converting a value that can only exist at compile time into a runtime value is +called *materialization*.) + +The following code sample shows the difference between an arbitrary-precision +calculation and the same calculation done using `Float64` values at runtime, +which suffers from rounding errors. + +```mojo +var arbitrary_precision = 3.0 * (4.0 / 3.0 - 1.0) +# use a variable to force the following calculation to occur at runtime +var three = 3.0 +var finite_precision = three * (4.0 / three - 1.0) +print(arbitrary_precision, finite_precision) +``` + +```output +1.0 0.99999999999999978 +``` + +### `SIMD` and `DType` + +To support high-performance numeric processing, Mojo uses the +[`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type as the basis for its numeric +types. SIMD (single instruction, multiple data) is a processor technology that +allows you to perform an operation on an entire set of operands at once. Mojo's +`SIMD` type abstracts SIMD operations. A `SIMD` value represents a SIMD +*vector*—that is, a fixed-size array of values that can fit into a processor's +register. SIMD vectors are defined by two +[*parameters*](/mojo/manual/parameters/): + +* A `DType` value, defining the data type in the vector (for example, + 32-bit floating-point numbers). +* The number of elements in the vector, which must be a power of two. + +For example, you can define a vector of four `Float32` values like this: + +```mojo +var vec = SIMD[DType.float32, 4](3.0, 2.0, 2.0, 1.0) +``` + +Math operations on SIMD values are +applied *elementwise*, on each individual element in the vector. For example: + +```mojo +var vec1 = SIMD[DType.int8, 4](2, 3, 5, 7) +var vec2 = SIMD[DType.int8, 4](1, 2, 3, 4) +var product = vec1 * vec2 +print(product) +``` + +```output +[2, 6, 15, 28] +``` + +### Scalar values + +The `SIMD` module defines several *type aliases* that are shorthand for +different types of `SIMD` vectors. In particular, the `Scalar` type is just a +`SIMD` vector with a single element. The numeric types listed in +[Table 1](#table-1), like `Int8` and `Float32` are actually type aliases for +different types of scalar values: + +```mojo +alias Scalar = SIMD[size=1] +alias Int8 = Scalar[DType.int8] +alias Float32 = Scalar[DType.float32] +``` + +This may seem a little confusing at first, but it means that whether you're +working with a single `Float32` value or a vector of float32 values, +the math operations go through exactly the same code path. + +#### The `DType` type + +The `DType` struct describes the different data types that a `SIMD` vector can +hold, and defines a number of utility functions for operating on those data +types. The `DType` struct defines a set of aliases that act as identifiers for +the different data types, like `DType.int8` and `DType.float32`. You use +these aliases when declaring a `SIMD` vector: + +```mojo +var v: SIMD[DType.float64, 16] +``` + +Note that `DType.float64` isn't a *type*, it's a value that describes a data +type. You can't create a variable with the type `DType.float64`. You can create +a variable with the type `SIMD[DType.float64, 1]` (or `Float64`, which is the +same thing). + +```mojo +from utils.numerics import max_finite, min_finite + +def describeDType[dtype: DType](): + print(dtype, "is floating point:", dtype.is_floating_point()) + print(dtype, "is integral:", dtype.is_integral()) + print("Min/max finite values for", dtype) + print(min_finite[dtype](), max_finite[dtype]()) + +describeDType[DType.float32]() +``` + +```output +float32 is floating point: True +float32 is integral: False +Min/max finite values for float32 +-3.4028234663852886e+38 3.4028234663852886e+38 +``` + +There are several other data types in the standard library that also use +the `DType` abstraction. + +## Strings + +Mojo's `String` type represents a mutable string. (For Python programmers, note +that this is different from Python's standard string, which is immutable.) +Strings support a variety of operators and common methods. + +```mojo +var s: String = "Testing" +s += " Mojo strings" +print(s) +``` + +```output +Testing Mojo strings +``` + +Most standard library types conform to the +[`Stringable`](/mojo/stdlib/builtin/str/Stringable) trait, which represents +a type that can be converted to a string. Use `str(value)` to +explicitly convert a value to a string: + +```mojo +var s = str("Items in list: ") + str(5) +print(s) +``` + +```output +Items in list: 5 +``` + +### String literals + +As with numeric types, the standard library includes a string literal type used +to represent literal strings in the program source. String literals are +enclosed in either single or double quotes. + +Adjacent literals are concatenated together, so you can define a long string +using a series of literals broken up over several lines: + +``` +var s = "A very long string which is " + "broken into two literals for legibility." +``` + +To define a multi-line string, enclose the literal in three single or double +quotes: + +``` +var s = """ +Multi-line string literals let you +enter long blocks of text, including +newlines.""" +``` + +Note that the triple double quote form is also used for API documentation +strings. + +Unlike `IntLiteral` and `FloatLiteral`, `StringLiteral` doesn't automatically +materialize to a runtime type. In some cases, you may need to manually convert +`StringLiteral` values to `String` using the built-in +[`str()`](/mojo/stdlib/builtin/str/str) method. + +```mojo +# Variable is type `StringLiteral` +var s1 = "Example" + +# Variable is type `String` +var s2: String = "Example" + +# Variable is type `String` +var s3 = str("Example") +``` + +## Booleans + +Mojo's `Bool` type represents a boolean value. It can take one of two values, +`True` or `False`. You can negate a boolean value using the `not` operator. + +```mojo +var conditionA = False +var conditionB: Bool +conditionB = not conditionA +print(conditionA, conditionB) +``` + +```output +False True +``` + +Many types have a boolean representation. Any type that implements the +[`Boolable`](/mojo/stdlib/builtin/bool/Boolable) trait has a boolean +representation. As a general principle, collections evaluate as True if they +contain any elements, False if they are empty; strings evaluate as True if they +have a non-zero length. + +## Tuples + +Mojo's `Tuple` type represents an immutable tuple consisting of zero or more +values, separated by commas. Tuples can consist of multiple types and you can +index into tuples in multiple ways. + +```mojo +# Tuples are immutable and can hold multiple types +example_tuple = Tuple[Int, String](1, "Example") + +# Assign multiple variables at once +x, y = example_tuple +print(x, y) + +# Get individual values with an index +s = example_tuple.get[1, String]() +print(s) +``` + +```output +1 Example +Example +``` + +You can also create a tuple without explicit typing. Note that if we declare the +same tuple from the previous example with implicit typing instead of explicit, +we must also convert `"Example"` from type `StringLiteral` to type `String`. + +```mojo +example_tuple = (1, str("Example")) +s = example_tuple.get[1, String]() +print(s) +``` + +```output +Example +``` + +When defining a function, you can explicitly declare the type of tuple elements +in one of two ways: + +```mojo +def return_tuple_1() -> Tuple[Int, Int]: + return Tuple[Int, Int](1, 1) + +def return_tuple_2() -> (Int, Int): + return (2, 2) +``` + +## Collection types + +The Mojo standard library also includes a set of basic collection types that +can be used to build more complex data structures: + +* [`List`](/mojo/stdlib/collections/list/List), a dynamically-sized array of + items. +* [`Dict`](/mojo/stdlib/collections/dict/Dict), an associative array of + key-value pairs. +* [`Set`](/mojo/stdlib/collections/set/Set), an unordered collection of unique + items. +* [`Optional`](/mojo/stdlib/collections/optional/Optional) + represents a value that may or may not be present. + +The collection types are *generic types*: while a given collection can only +hold a specific type of value (such as `Int` or `Float64`), you specify the +type at compile time using a [parameter](/mojo/manual/parameters/). For +example, you can create a `List` of `Int` values like this: + +```mojo +var l = List[Int](1, 2, 3, 4) +# l.append(3.14) # error: FloatLiteral cannot be converted to Int +``` + +You don't always need to specify the type explicitly. If Mojo can *infer* the +type, you can omit it. For example, when you construct a list from a set of +integer literals, Mojo creates a `List[Int]`. + +```mojo +# Inferred type == Int +var l1 = List(1, 2, 3, 4) +``` + +Where you need a more flexible collection, the +[`Variant`](/mojo/stdlib/utils/variant/Variant) type can hold different types +of values. For example, a `Variant[Int32, Float64]` can hold either an `Int32` +*or* a `Float64` value at any given time. (Using `Variant` is not covered in +this section, see the [API docs](/mojo/stdlib/utils/variant/Variant) for more +information.) + +The following sections give brief introduction to the main collection types. + +### List + +[`List`](/mojo/stdlib/collections/list/List) is a dynamically-sized array of +elements. List elements need to conform to the +[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait, which +just means that the items must be copyable and movable. Most of the common +standard library primitives, like `Int`, `String`, and `SIMD` conform to this +trait. You can create a `List` by passing the element type as a parameter, like +this: + +```mojo +var l = List[String]() +``` + +The `List` type supports a subset of the Python `list` API, including the +ability to append to the list, pop items out of the list, and access list items +using subscript notation. + +```mojo +from collections import List + +var list = List(2, 3, 5) +list.append(7) +list.append(11) +print("Popping last item from list: ", list.pop()) +for idx in range(len(list)): + print(list[idx], end=", ") + +``` + +```output +Popping last item from list: 11 +2, 3, 5, 7, +``` + +Note that the previous code sample leaves out the type parameter when creating +the list. Because the list is being created with a set of `Int` values, Mojo can +*infer* the type from the arguments. + +There are some notable limitations when using `List`: + +* You can't currently initialize a list from a list literal, like this: + + ```mojo + # Doesn't work! + var list: List[Int] = [2, 3, 5] + ``` + + But you can use variadic arguments to achieve the same thing: + + ```mojo + var list = List(2, 3, 5) + ``` + +* You can't `print()` a list, or convert it directly into a string. + + ```mojo + # Does not work + print(list) + ``` + + As shown above, you can print the individual elements in a list as long as + they're a [`Stringable`](/mojo/stdlib/builtin/str/Stringable) type. + +* Iterating a `List` currently returns a + [`Reference`](/mojo/stdlib/memory/reference/Reference) to each item, not the + item itself. You can access the item using the dereference operator, `[]`: + +```mojo +#: from collections import List +var list = List(2, 3, 4) +for item in list: + print(item[], end=", ") +``` + +```output +2, 3, 4, +``` + +Subscripting in to a list, however, returns the item directly—no need to +dereference: + +```mojo +#: from collections import List +#: var list = List[Int](2, 3, 4) +for i in range(len(list)): + print(list[i], end=", ") +``` + +```output +2, 3, 4, +``` + +### Dict + +The [`Dict`](/mojo/stdlib/collections/dict/Dict) type is an associative array +that holds key-value pairs. You can create a `Dict` by specifying the key type +and value type as parameters, like this: + +```mojo +var values = Dict[String, Float64]() +``` + +The dictionary's key type must conform to the +[`KeyElement`](/mojo/stdlib/collections/dict/KeyElement) trait, and value +elements must conform to the +[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait. + +You can insert and remove key-value pairs, update the value assigned to a key, +and iterate through keys, values, or items in the dictionary. + +The `Dict` iterators all yield references, so you need to use the dereference +operator `[]` as shown in the following example: + +```mojo +from collections import Dict + +var d = Dict[String, Float64]() +d["plasticity"] = 3.1 +d["elasticity"] = 1.3 +d["electricity"] = 9.7 +for item in d.items(): + print(item[].key, item[].value) +``` + +```output +plasticity 3.1000000000000001 +elasticity 1.3 +electricity 9.6999999999999993 +``` + +### Set + +The [`Set`](/mojo/stdlib/collections/set/Set) type represents a set of unique +values. You can add and remove elements from the set, test whether a value +exists in the set, and perform set algebra operations, like unions and +intersections between two sets. + +Sets are generic and the element type must conform to the +[`KeyElement`](/mojo/stdlib/collections/dict/KeyElement) trait. + +```mojo +from collections import Set + +i_like = Set("sushi", "ice cream", "tacos", "pho") +you_like = Set("burgers", "tacos", "salad", "ice cream") +we_like = i_like.intersection(you_like) + +print("We both like:") +for item in we_like: + print("-", item[]) +``` + +```output +We both like: +- ice cream +- tacos +``` + +### Optional + +An [`Optional`](/mojo/stdlib/collections/optional/Optional) represents a +value that may or may not be present. Like the other collection types, it is +generic, and can hold any type that conforms to the +[`CollectionElement`](/mojo/stdlib/builtin/value/CollectionElement) trait. + +```mojo +# Two ways to initialize an Optional with a value +var opt1 = Optional(5) +var opt2: Optional[Int] = 5 +# Two ways to initialize an Optional with no value +var opt3 = Optional[Int]() +var opt4: Optional[Int] = None +``` + +An `Optional` evaluates as `True` when it holds a value, `False` otherwise. If +the `Optional` holds a value, you can retrieve a reference to the value using +the `value()` method. But calling `value()` on an `Optional` with no value +results in undefined behavior, so you should always guard a call to `value()` +inside a conditional that checks whether a value exists. + +```mojo +var opt: Optional[String] = str("Testing") +if opt: + var value_ref = opt.value() + print(value_ref) +``` + +```output +Testing +``` + +Alternately, you can use the `or_else()` method, which returns the stored +value if there is one, or a user-specified default value otherwise: + +```mojo +var custom_greeting: Optional[String] = None +print(custom_greeting.or_else("Hello")) + +custom_greeting = str("Hi") +print(custom_greeting.or_else("Hello")) + +``` + +```output +Hello +Hi +``` + +## Register-passable, memory-only, and trivial types + +In various places in the documentation you'll see references to +register-passable, memory-only, and trivial types. Register-passable and +memory-only types are distinguished based on how they hold data: + +* Register-passable types are composed exclusively of fixed-size data types, + which can (theoretically) be stored in a machine register. A register-passable + type can include other types, as long as they are also register-passable. + `Int`, `Bool`, and `SIMD`, for example, are all register-passable types. So + a register-passable `struct` could include `Int` and `Bool` fields, but not a + `String` field. Register-passable types are declared with the + [`@register_passable`](/mojo/manual/decorators/register-passable) decorator. + + Register-passable types are always passed by value (that is, the values are + copied). + +* Memory-only types consist of any types that *don't* fit the description of + register-passable types. In particular, these types usually have pointers or + references to dynamically-allocated memory. `String`, `List`, and `Dict` are + all examples of memory-only types. + +Our long-term goal is to make this distinction transparent to the user, and +ensure all APIs work with both register-passable and memory-only types. +But right now you will see some standard library types that only work with +register-passable types or only work with memory-only types. + +In addition to these two categories, Mojo also has "trivial" types. Conceptually +a trivial type is simply a type that doesn't require any custom logic in its +lifecycle methods. The bits that make up an instance of a trivial type can be +copied or moved without any knowledge of what they do. Currently, trivial types +are declared using the +[`@register_passable(trivial)`](/mojo/manual/decorators/register-passable#register_passabletrivial) +decorator. Trivial types shouldn't be limited to only register-passable types, +so in the future we intend to separate trivial types from the +`@register_passable` decorator. + +## `AnyType` and `AnyTrivialRegType` + +Two other things you'll see in Mojo APIs are references to `AnyType` and +`AnyTrivialRegType`. These are effectively *metatypes*, that is, types of types. + +* `AnyType` represents any Mojo type. Mojo treats `AnyType` as a special kind of + trait, and you'll find more discussion of it on the + [Traits page](/mojo/manual/traits#the-anytype-trait). +* `AnyTrivialRegType` is a metatype representing any Mojo type that's marked + register passable. + +You'll see them in signatures like this: + +```mojo +fn any_type_function[ValueType: AnyTrivialRegType](value: ValueType): + ... +``` + +You can read this as `any_type_function` has an argument, `value` of type +`ValueType`, where `ValueType` is a register-passable type, determined at +compile time. + +There is still some code like this in the standard library, but it's gradually +being migrated to more generic code that doesn't distinguish between +register-passable and memory-only types. diff --git a/docs/manual/values/index.ipynb b/docs/manual/values/index.ipynb deleted file mode 100644 index 0c6e34c116..0000000000 --- a/docs/manual/values/index.ipynb +++ /dev/null @@ -1,158 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Intro to value ownership\n", - "sidebar_position: 1\n", - "description: Introduction to Mojo value ownership.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A program is nothing without data, and all modern programming languages store\n", - "data in one of two places: the call stack and the heap (also sometimes in CPU\n", - "registers, but we won't get into that here). However, each language reads and\n", - "writes data a bit differently—sometimes very differently. So in the following\n", - "sections, we'll explain how Mojo manages memory in your programs and how this\n", - "affects the way you write Mojo code.\n", - "\n", - ":::note\n", - "\n", - "For an alternate introduction to ownership in Mojo, check out our two-part blog\n", - "post: \n", - "[What ownership is really about: a mental model approach](https://www.modular.com/blog/what-ownership-is-really-about-a-mental-model-approach), and [Deep dive into\n", - "ownership in Mojo](https://www.modular.com/blog/deep-dive-into-ownership-in-mojo).\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Stack and heap overview\n", - "\n", - "In general, all modern programming languages divide a running program's memory\n", - "into four segments:\n", - "\n", - "- Text. The compiled program.\n", - "- Data. Global data, either initialized or uninitialized.\n", - "- Stack. Local data, automatically managed during the program's runtime.\n", - "- Heap. Dynamically-allocated data, managed by the programmer.\n", - "\n", - "The text and data segments are statically sized, but the stack and heap change\n", - "size as the program runs.\n", - "\n", - "The _stack_ stores data local to the current function. When a function is\n", - "called, the program allocates a block of memory—a _stack frame_—that is exactly\n", - "the size required to store the function's data, including any _fixed-size_\n", - "local variables. When another function is called, a new stack frame is pushed\n", - "onto the top of the stack. When a function is done, its stack frame is popped\n", - "off the stack. \n", - "\n", - "Notice that we said only \"_fixed-size_ local values\" are stored in the stack.\n", - "Dynamically-sized values that can change in size at runtime are instead\n", - "stored in the heap, which is a much larger region of memory that allows for\n", - "dynamic memory allocation. Technically, a local variable for such a value\n", - "is still stored in the call stack, but its value is a fixed-size pointer to the\n", - "real value on the heap. Consider a Mojo string: it can be any length, and \n", - "its length can change at runtime. So the Mojo `String` struct includes some statically-sized fields, plus a pointer to a dynamically-allocated buffer\n", - "holding the actual string data.\n", - "\n", - "Another important difference between the heap and the stack is that the stack is \n", - "managed automatically—the code to push and pop stack frames is added by the\n", - "compiler. Heap memory, on the other hand, is managed by the programmer\n", - "explicitly allocating and deallocating memory. You may do this indirectly—by\n", - "using standard library types like `List` and `String`—or directly, using the \n", - "[`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) API.\n", - "\n", - "Values that need to outlive the lifetime of a function (such as\n", - "an array that's passed between functions and should not be copied) are stored\n", - "in the heap, because heap memory is accessible from anywhere in the call stack,\n", - "even after the function that created it is removed from the stack. This sort of\n", - "situation—in which a heap-allocated value is used by multiple functions—is where\n", - "most memory errors occur, and it's where memory management strategies vary the\n", - "most between programming languages." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Memory management strategies\n", - "\n", - "Because memory is limited, it's important that programs remove unused data from\n", - "the heap (\"free\" the memory) as quickly as possible. Figuring out when to free\n", - "that memory is pretty complicated.\n", - "\n", - "Some programming languages try to hide the complexities of memory management\n", - "from you by utilizing a \"garbage collector\" process that tracks all memory\n", - "usage and deallocates unused heap memory periodically (also known as automatic\n", - "memory management). A significant benefit of this method is that it relieves\n", - "developers from the burden of manual memory management, generally avoiding more\n", - "errors and making developers more productive. However, it incurs a performance\n", - "cost because the garbage collector interrupts the program's execution, and it\n", - "might not reclaim memory very quickly.\n", - "\n", - "Other languages require that you manually free data that's allocated on the\n", - "heap. When done properly, this makes programs execute quickly, because there's\n", - "no processing time consumed by a garbage collector. However, the challenge with\n", - "this approach is that programmers make mistakes, especially when multiple parts\n", - "of the program need access to the same memory—it becomes difficult to know\n", - "which part of the program \"owns\" the data and must deallocate it. Programmers\n", - "might accidentally deallocate data before the program is done with it (causing\n", - "\"use-after-free\" errors), or they might deallocate it twice (\"double free\"\n", - "errors), or they might never deallocate it (\"leaked memory\" errors). Mistakes\n", - "like these and others can have catastrophic results for the program, and these\n", - "bugs are often hard to track down, making it especially important that they\n", - "don't occur in the first place.\n", - "\n", - "Mojo uses a third approach called \"ownership\" that relies on a collection of\n", - "rules that programmers must follow when passing values. The rules ensure there\n", - "is only one \"owner\" for a given value at a time. When a value's lifetime ends,\n", - "Mojo calls its destructor, which is responsible for deallocating any heap memory\n", - "that needs to be deallocated.\n", - "\n", - "In this way, Mojo helps ensure memory is freed, but it does so in a way that's\n", - "deterministic and safe from errors such as use-after-free, double-free and\n", - "memory leaks. Plus, it does so with a very low performance overhead.\n", - "\n", - "Mojo's value ownership model provides an excellent balance of programming\n", - "productivity and strong memory safety. It only requires that you learn some new\n", - "syntax and a few rules about how to share access to memory within your program.\n", - "\n", - "But before we explain the rules and syntax for Mojo's value ownership model,\n", - "you first need to understand [value\n", - "semantics](/mojo/manual/values/value-semantics)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/values/index.mdx b/docs/manual/values/index.mdx new file mode 100644 index 0000000000..21f04e22db --- /dev/null +++ b/docs/manual/values/index.mdx @@ -0,0 +1,111 @@ +--- +title: Intro to value ownership +sidebar_position: 1 +description: Introduction to Mojo value ownership. +--- + +A program is nothing without data, and all modern programming languages store +data in one of two places: the call stack and the heap (also sometimes in CPU +registers, but we won't get into that here). However, each language reads and +writes data a bit differently—sometimes very differently. So in the following +sections, we'll explain how Mojo manages memory in your programs and how this +affects the way you write Mojo code. + +:::note + +For an alternate introduction to ownership in Mojo, check out our two-part blog +post: +[What ownership is really about: a mental model approach](https://www.modular.com/blog/what-ownership-is-really-about-a-mental-model-approach), and [Deep dive into +ownership in Mojo](https://www.modular.com/blog/deep-dive-into-ownership-in-mojo). + +::: + +## Stack and heap overview + +In general, all modern programming languages divide a running program's memory +into four segments: + +* Text. The compiled program. +* Data. Global data, either initialized or uninitialized. +* Stack. Local data, automatically managed during the program's runtime. +* Heap. Dynamically-allocated data, managed by the programmer. + +The text and data segments are statically sized, but the stack and heap change +size as the program runs. + +The *stack* stores data local to the current function. When a function is +called, the program allocates a block of memory—a *stack frame*—that is exactly +the size required to store the function's data, including any *fixed-size* +local variables. When another function is called, a new stack frame is pushed +onto the top of the stack. When a function is done, its stack frame is popped +off the stack. + +Notice that we said only "*fixed-size* local values" are stored in the stack. +Dynamically-sized values that can change in size at runtime are instead +stored in the heap, which is a much larger region of memory that allows for +dynamic memory allocation. Technically, a local variable for such a value +is still stored in the call stack, but its value is a fixed-size pointer to the +real value on the heap. Consider a Mojo string: it can be any length, and +its length can change at runtime. So the Mojo `String` struct includes some statically-sized fields, plus a pointer to a dynamically-allocated buffer +holding the actual string data. + +Another important difference between the heap and the stack is that the stack is +managed automatically—the code to push and pop stack frames is added by the +compiler. Heap memory, on the other hand, is managed by the programmer +explicitly allocating and deallocating memory. You may do this indirectly—by +using standard library types like `List` and `String`—or directly, using the +[`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) API. + +Values that need to outlive the lifetime of a function (such as +an array that's passed between functions and should not be copied) are stored +in the heap, because heap memory is accessible from anywhere in the call stack, +even after the function that created it is removed from the stack. This sort of +situation—in which a heap-allocated value is used by multiple functions—is where +most memory errors occur, and it's where memory management strategies vary the +most between programming languages. + +## Memory management strategies + +Because memory is limited, it's important that programs remove unused data from +the heap ("free" the memory) as quickly as possible. Figuring out when to free +that memory is pretty complicated. + +Some programming languages try to hide the complexities of memory management +from you by utilizing a "garbage collector" process that tracks all memory +usage and deallocates unused heap memory periodically (also known as automatic +memory management). A significant benefit of this method is that it relieves +developers from the burden of manual memory management, generally avoiding more +errors and making developers more productive. However, it incurs a performance +cost because the garbage collector interrupts the program's execution, and it +might not reclaim memory very quickly. + +Other languages require that you manually free data that's allocated on the +heap. When done properly, this makes programs execute quickly, because there's +no processing time consumed by a garbage collector. However, the challenge with +this approach is that programmers make mistakes, especially when multiple parts +of the program need access to the same memory—it becomes difficult to know +which part of the program "owns" the data and must deallocate it. Programmers +might accidentally deallocate data before the program is done with it (causing +"use-after-free" errors), or they might deallocate it twice ("double free" +errors), or they might never deallocate it ("leaked memory" errors). Mistakes +like these and others can have catastrophic results for the program, and these +bugs are often hard to track down, making it especially important that they +don't occur in the first place. + +Mojo uses a third approach called "ownership" that relies on a collection of +rules that programmers must follow when passing values. The rules ensure there +is only one "owner" for a given value at a time. When a value's lifetime ends, +Mojo calls its destructor, which is responsible for deallocating any heap memory +that needs to be deallocated. + +In this way, Mojo helps ensure memory is freed, but it does so in a way that's +deterministic and safe from errors such as use-after-free, double-free and +memory leaks. Plus, it does so with a very low performance overhead. + +Mojo's value ownership model provides an excellent balance of programming +productivity and strong memory safety. It only requires that you learn some new +syntax and a few rules about how to share access to memory within your program. + +But before we explain the rules and syntax for Mojo's value ownership model, +you first need to understand [value +semantics](/mojo/manual/values/value-semantics). diff --git a/docs/manual/values/lifetimes.ipynb b/docs/manual/values/lifetimes.ipynb deleted file mode 100644 index f218538d67..0000000000 --- a/docs/manual/values/lifetimes.ipynb +++ /dev/null @@ -1,595 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Lifetimes, origins, and references\n", - "sidebar_position: 4\n", - "description: Working with origins and references.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The Mojo compiler includes a lifetime checker, a compiler pass that analyzes\n", - "dataflow through your program. It identifies when variables are valid and \n", - "inserts destructor calls when a variable's lifetime ends.\n", - "\n", - "The Mojo compiler uses a special value called an _origin_ to track the lifetime\n", - "of variables and the validity of references.\n", - "\n", - "Specifically, an origin answers two questions:\n", - "\n", - "- What variable \"owns\" this value?\n", - "- Can the value be mutated using this reference?\n", - "\n", - "For example, consider the following code:\n" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Joan\n" - ] - } - ], - "source": [ - "fn print_str(s: String):\n", - " print(s)\n", - "\n", - "name = String(\"Joan\")\n", - "print_str(name)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The line `name = String(\"Joan\")` declares a variable with an identifier (`name`)\n", - "and logical storage space for a `String` value. When you pass `name` into the\n", - "`print_str()` function, the function gets an immutable reference to the value. \n", - "So both `name` and `s` refer to the same logical storage space, and have\n", - "associated origin values that lets the Mojo compiler reason about them. \n", - "\n", - "Most of the time, origins are handled automatically by the compiler. \n", - "However, in some cases you'll need to interact with origins directly:\n", - "\n", - "- When working with references—specifically `ref` arguments and `ref` return\n", - " values. \n", - "\n", - "- When working with types like \n", - " [`Pointer`](/mojo/stdlib/memory/reference/Pointer) or \n", - " [`Span`](/mojo/stdlib/utils/span/Span) which are parameterized on the \n", - " origin of the data they refer to.\n", - "\n", - "This section also covers [`ref` arguments](#ref-arguments) and \n", - "[`ref` return values](#ref-return-values), which let functions\n", - "take arguments and provide return values as references with parametric\n", - "origins." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Working with origins\n", - "\n", - "Mojo's origin values are unlike most other values in the language, because\n", - "they're primitive values, not Mojo structs.\n", - "\n", - "Likewise, because these values are mostly created by the \n", - "compiler, you can't just create your own origin value—you usually need to \n", - "derive an origin from an existing value.\n", - "\n", - "### Origin types\n", - "\n", - "Mojo supplies a struct and a set of aliases that you can use to specify \n", - "origin types. As the names suggest, the `ImmutableOrigin` and \n", - "`MutableOrigin` aliases represent immutable and mutable origins, \n", - "respectively:\n", - "\n", - "```mojo\n", - "struct ImmutableRef[origin: ImmutableOrigin]:\n", - " pass\n", - "```\n", - "\n", - "Or you can use the [`Origin`](mojo/stdlib/builtin/type_aliases/Origin)\n", - "struct to specify an origin with parametric mutability:" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [], - "source": [ - "struct ParametricRef[\n", - " is_mutable: Bool,\n", - " //,\n", - " origin: Origin[is_mutable].type\n", - "]:\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that `Origin` _isn't an origin value_, it's a helper for specifying a \n", - "origin **type**. Origin types carry the mutability of a reference as a \n", - "boolean parameter value, indicating whether the origin is mutable, immutable,\n", - "or even with mutability depending on a parameter specified by the enclosing API.\n", - "\n", - "The `is_mutable` parameter here is an [infer-only\n", - "parameter](/mojo/manual/parameters/#infer-only-parameters). It's never\n", - "specified directly by the user, but always inferred from context. The\n", - "`origin` value is often inferred, as well. For example, the following code\n", - "creates a [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) to an existing\n", - "value, but doesn't need to specify an origin—the `origin` is inferred from\n", - "the variable passed in to the `address_of()` method." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "from memory import Pointer\n", - "\n", - "def use_pointer():\n", - " a = 10\n", - " ptr = Pointer.address_of(a)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A final type of origin value is an `OriginSet`. As the name suggests, an \n", - "`OriginSet` represents a group of origins. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "### Origin values\n", - "\n", - "Most origin values are created by the compiler. As a developer, there are a\n", - "few ways to specify origin values:\n", - "\n", - "- Static origin. The `StaticConstantOrigin`\n", - " alias is an origin value representing immutable values that that last for the\n", - " duration of the program. String literal values have a `StaticConstantOrigin`.\n", - "- The `__origin_of()` magic function, which returns the origin associated\n", - " with the value (or values) passed in.\n", - "- Inferred origin. You can use inferred parameters to capture the origin\n", - " of a value passed in to a function.\n", - "- Wildcard origins. The `ImmutableAnyOrigin` and `MutableAnyOrigin` aliases\n", - " are special cases indicating a reference that might access any live value.\n", - "\n", - "#### Static origins\n", - "\n", - "You can use the static origin `StaticConstantOrigin` when you have a \n", - "value that exists for the entire duration of the program.\n", - "\n", - "For example, the `StringLiteral` method\n", - "[`as_string_slice()`](/mojo/stdlib/builtin/string_literal/StringLiteral#as_string_slice)\n", - "returns a [`StringSlice`](/mojo/stdlib/utils/string_slice/StringSlice) pointing\n", - "to the original string literal. String literals are static—they're allocated at\n", - "compile time and never destroyed—so the slice is created with an immutable,\n", - "static origin.\n", - "\n", - "#### Derived origins\n", - "\n", - "Use the `__origin_of(value)` operator to obtain a value's origin. The\n", - "argument to `__origin_of()` can take an arbitrary expression:\n", - "\n", - "```mojo\n", - "__origin_of(self)\n", - "__origin_of(x.y)\n", - "__origin_of(foo())\n", - "```\n", - "\n", - "The `__origin_of()` operator is analyzed statically at compile time;\n", - "The expression passed to `__origin_of()` is never evaluated. (For example, \n", - "when the compiler analyzes `__origin_of(foo())`, it doesn't run the `foo()`\n", - "function.)\n", - "\n", - "The following struct stores a string value using a \n", - "[`OwnedPointer`](/mojo/stdlib/memory/owned_pointer/OwnedPointer): a smart\n", - "pointer that holds an owned value. The `as_ptr()` method returns a `Pointer` to\n", - "the stored string, using the same origin as the original `OwnedPointer`." - ] - }, - { - "cell_type": "code", - "execution_count": 41, - "metadata": {}, - "outputs": [], - "source": [ - "from memory import OwnedPointer, Pointer\n", - "\n", - "struct BoxedString:\n", - " var box: OwnedPointer[String]\n", - "\n", - " fn __init__(out self, value: String):\n", - " self.box = OwnedPointer(value)\n", - "\n", - " fn as_ptr(self) -> Pointer[String, __origin_of(self.box)]:\n", - " return Pointer.address_of(self.box[])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Inferred origins\n", - "\n", - "The other common way to access an origin value is to _infer_ it from the\n", - "the arguments passed to a function or method. For example, the `Span` type\n", - "has an associated `origin`:\n", - "\n", - "```mojo\n", - "struct Span[\n", - " is_mutable: Bool, //,\n", - " T: CollectionElement,\n", - " origin: Origin[is_mutable].type,\n", - "](CollectionElementNew):\n", - " \"\"\"A non owning view of contiguous data.\n", - "```\n", - "\n", - "One of its constructors creates a `Span` from an existing `List`, and infers\n", - "its `origin` value from the list:\n", - "\n", - "```mojo\n", - " fn __init__(out self, ref [origin]list: List[T, *_]):\n", - " \"\"\"Construct a Span from a List.\n", - "\n", - " Args:\n", - " list: The list to which the span refers.\n", - " \"\"\"\n", - " self._data = list.data\n", - " self._len = len(list)\n", - "```\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Working with references\n", - "\n", - "You can use the `ref` keyword with arguments and return values to specify a \n", - "reference with parametric mutability. That is, they can be either mutable or \n", - "immutable.\n", - "\n", - "From inside the called function, a `ref` argument looks like a `borrowed` or\n", - "`inout` argument. \n", - "\n", - "A `ref` return value looks like any other return value to the calling function,\n", - "but it is a _reference_ to an existing value, not a copy.\n", - "\n", - "### `ref` arguments\n", - "\n", - "The `ref` argument convention lets you specify an argument of parametric\n", - "mutability: that is, you don't need to know in advance whether the passed\n", - "argument will be mutable or immutable. There are several reasons you might want\n", - "to use a `ref` argument:\n", - "\n", - "- You want to accept an argument with parametric mutability.\n", - "\n", - "- You want to tie the lifetime of one argument to the lifetime of another\n", - " argument.\n", - "\n", - "- When you want an argument that is guaranteed to be passed in memory: this can\n", - " be important and useful for generic arguments that need an identity,\n", - " irrespective of whether the concrete type is register passable.\n", - "\n", - "The syntax for a `ref` argument is:\n", - "\n", - "ref [origin_specifier] arg_name: arg_type\n", - "\n", - "The origin specifier passed inside the square brackets can be either:\n", - "\n", - "- An origin value.\n", - "- An arbitrary expression, which is treated as shorthand for \n", - " `__origin_of(expression)`. In other words, the following declarations are\n", - " equivalent:\n", - "\n", - " ```mojo\n", - " ref [__origin_of(self)]\n", - " ref [self]\n", - " ```\n", - " \n", - "- An underscore character (`_`) to indicate that the origin is _unbound_. You\n", - " can think of the underscore as a wildcard that will accept any origin:\n", - "\n", - " ```mojo\n", - " def add_ref(ref a: Int, b: Int) -> Int:\n", - " return a+b\n", - " ```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also name the origin explicitly. This is useful if you want to specify\n", - "an `ImmutableOrigin` or `MutableLOrigin`, or if you want to bind to\n", - "the `is_mutable` parameter." - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Immutable: Hello\n", - "Mutable: Goodbye\n" - ] - } - ], - "source": [ - "def take_str_ref[\n", - " is_mutable: Bool, //,\n", - " origin: Origin[is_mutable].type\n", - " ](ref [origin] s: String):\n", - " @parameter\n", - " if is_mutable:\n", - " print(\"Mutable: \" + s)\n", - " else:\n", - " print(\"Immutable: \" + s)\n", - "\n", - "def pass_refs(s1: String, owned s2: String):\n", - " take_str_ref(s1)\n", - " take_str_ref(s2)\n", - "\n", - "pass_refs(\"Hello\", \"Goodbye\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### `ref` return values\n", - "\n", - "Like `ref` arguments, `ref` return values allow a function to return a mutable\n", - "or immutable reference to a value. Like a `borrowed` or `inout` argument, these\n", - "references don't need to be dereferenced.\n", - "\n", - "`ref` return values can be an efficient way to handle updating items in a \n", - "collection. The standard way to do this is by implementing the `__getitem__()`\n", - "and `__setitem__()` dunder methods. These are invoked to read from and write to \n", - "a subscripted item in a collection:\n", - "\n", - "```mojo\n", - "value = list[a]\n", - "list[b] += 10\n", - "```\n", - "\n", - "With a `ref` argument, `__getitem__()` can return a mutable reference that can\n", - "be modified directly. This has pros and cons compared to using a `__setitem__()`\n", - "method:\n", - "\n", - "- The mutable reference is more efficient—a single update isn't broken up across\n", - " two methods. However, the referenced value must be in memory.\n", - " \n", - "- A `__getitem__()`/`__setitem__()` pair allows for arbitrary code to be run \n", - " when values are retrieved and set. For example, `__setitem__()` can validate\n", - " or constrain input values.\n", - "\n", - "For example, in the following example, `NameList` has a `__getitem__()` method\n", - "that returns a reference: " - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dana\n", - "Dana?\n" - ] - } - ], - "source": [ - "struct NameList:\n", - " var names: List[String]\n", - "\n", - " def __init__(out self, *names: String):\n", - " self.names = List[String]()\n", - " for name in names:\n", - " self.names.append(name[])\n", - "\n", - " def __getitem__(ref self, index: Int) ->\n", - " ref [self.names] String:\n", - " if (index >=0 and index < len(self.names)):\n", - " return self.names[index]\n", - " else:\n", - " raise Error(\"index out of bounds\")\n", - "\n", - "def use_name_list():\n", - " list = NameList(\"Thor\", \"Athena\", \"Dana\", \"Vrinda\")\n", - " print(list[2])\n", - " list[2] += \"?\"\n", - " print(list[2])\n", - "\n", - "use_name_list()\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that this update succeeds, even though `NameList` doesn't define a\n", - "`__setitem__()` method:\n", - "\n", - "```mojo\n", - "list[2] += \"?\"\n", - "```\n", - "\n", - "Also note that the code uses the return value directly each time, rather than\n", - "assigning the return value to a variable, like this:\n", - "\n", - "```mojo\n", - "name = list[2]\n", - "name += \"?\"\n", - "```\n", - "\n", - "Since a variable needs to own its value, `name` would end up with an owned \n", - "_copy_ of the referenced value. Mojo doesn't currently have \n", - "syntax to express that you want to keep the original reference in `name`. This\n", - "will be added in a future release.\n", - "\n", - "If you're working with an API that returns a reference, and you want to avoid\n", - "copying the referenced value, you can use a\n", - "[`Pointer`](/mojo/stdlib/memory/reference/Pointer) to hold an indirect reference.\n", - "You can assign a `Pointer` to a variable, but you need to use the dereference\n", - "operator (`[]`) to access the underlying value.\n", - "\n", - "```mojo\n", - "name_ptr = Pointer.address_of(list[2])\n", - "name_ptr[] += \"?\"\n", - "```\n", - "\n", - "Similarly, when designing an API you might want to return a `Pointer` instead of\n", - "a `ref` to allow users to assign the return value to a variable. For example, \n", - "iterators for the standard library collections return pointers, so they can be\n", - "used in `for..in` loops:" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n", - "3\n", - "1\n", - "2\n", - "3\n" - ] - } - ], - "source": [ - "nums = List(1, 2, 3)\n", - "for item in nums: # List iterator returns a Pointer, which must be dereferenced\n", - " print(item[])\n", - "for i in range(len(nums)):\n", - " print(nums[i]) # List __getitem__() returns a ref" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "(You can find the code for the \n", - "`List` iterator in the [Mojo\n", - "repo](https://github.com/modularml/mojo/blob/main/stdlib/src/collections/list.mojo#L63).)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Parametric mutability of return values\n", - "\n", - "Another advantage of `ref` return arguments is the ability to support parametric\n", - "mutability. For example, recall the signature of the `__getitem__()` method\n", - "above:\n", - "\n", - "```mojo\n", - "def __getitem__(ref self, index: Int) ->\n", - " ref [self] String:\n", - "```\n", - "\n", - "Since the `origin` of the return value is tied to the origin of `self`, the\n", - "returned reference will be mutable if the method was called using a\n", - "mutable reference. The method still works if you have an immutable reference\n", - "to the `NameList`, but it returns an immutable reference:" - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Diana\n" - ] - } - ], - "source": [ - "fn pass_immutable_list(list: NameList) raises:\n", - " print(list[2])\n", - " # list[2] += \"?\" # Error, this list is immutable\n", - "\n", - "def use_name_list_again():\n", - " list = NameList(\"Sophie\", \"Jack\", \"Diana\")\n", - " pass_immutable_list(list)\n", - "\n", - "use_name_list_again()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Without parametric mutability, you'd need to write two versions of \n", - "`__getitem__()`, one that accepts an immutable `self` and another that accepts\n", - "a mutable `self`. " - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/values/lifetimes.mdx b/docs/manual/values/lifetimes.mdx new file mode 100644 index 0000000000..d191af8e2e --- /dev/null +++ b/docs/manual/values/lifetimes.mdx @@ -0,0 +1,434 @@ +--- +title: Lifetimes, origins, and references +sidebar_position: 4 +description: Working with origins and references. +--- + +The Mojo compiler includes a lifetime checker, a compiler pass that analyzes +dataflow through your program. It identifies when variables are valid and +inserts destructor calls when a variable's lifetime ends. + +The Mojo compiler uses a special value called an *origin* to track the lifetime +of variables and the validity of references. + +Specifically, an origin answers two questions: + +* What variable "owns" this value? +* Can the value be mutated using this reference? + +For example, consider the following code: + +```mojo +fn print_str(s: String): + print(s) + +name = String("Joan") +print_str(name) +``` + +```output +Joan +``` + +The line `name = String("Joan")` declares a variable with an identifier (`name`) +and logical storage space for a `String` value. When you pass `name` into the +`print_str()` function, the function gets an immutable reference to the value. +So both `name` and `s` refer to the same logical storage space, and have +associated origin values that lets the Mojo compiler reason about them. + +Most of the time, origins are handled automatically by the compiler. +However, in some cases you'll need to interact with origins directly: + +* When working with references—specifically `ref` arguments and `ref` return + values. + +* When working with types like + [`Pointer`](/mojo/stdlib/memory/reference/Pointer) or + [`Span`](/mojo/stdlib/utils/span/Span) which are parameterized on the + origin of the data they refer to. + +This section also covers [`ref` arguments](#ref-arguments) and +[`ref` return values](#ref-return-values), which let functions +take arguments and provide return values as references with parametric +origins. + +## Working with origins + +Mojo's origin values are unlike most other values in the language, because +they're primitive values, not Mojo structs. + +Likewise, because these values are mostly created by the +compiler, you can't just create your own origin value—you usually need to +derive an origin from an existing value. + +### Origin types + +Mojo supplies a struct and a set of aliases that you can use to specify +origin types. As the names suggest, the `ImmutableOrigin` and +`MutableOrigin` aliases represent immutable and mutable origins, +respectively: + +```mojo +struct ImmutableRef[origin: ImmutableOrigin]: + pass +``` + +Or you can use the [`Origin`](mojo/stdlib/builtin/type_aliases/Origin) +struct to specify an origin with parametric mutability: + +```mojo +struct ParametricRef[ + is_mutable: Bool, + //, + origin: Origin[is_mutable].type +]: + pass +``` + +Note that `Origin` *isn't an origin value*, it's a helper for specifying a +origin **type**. Origin types carry the mutability of a reference as a +boolean parameter value, indicating whether the origin is mutable, immutable, +or even with mutability depending on a parameter specified by the enclosing API. + +The `is_mutable` parameter here is an [infer-only +parameter](/mojo/manual/parameters/#infer-only-parameters). It's never +specified directly by the user, but always inferred from context. The +`origin` value is often inferred, as well. For example, the following code +creates a [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) to an existing +value, but doesn't need to specify an origin—the `origin` is inferred from +the variable passed in to the `address_of()` method. + +```mojo +from memory import Pointer + +def use_pointer(): + a = 10 + ptr = Pointer.address_of(a) +``` + +A final type of origin value is an `OriginSet`. As the name suggests, an +`OriginSet` represents a group of origins. + +### Origin values + +Most origin values are created by the compiler. As a developer, there are a +few ways to specify origin values: + +* Static origin. The `StaticConstantOrigin` + alias is an origin value representing immutable values that that last for the + duration of the program. String literal values have a `StaticConstantOrigin`. +* The `__origin_of()` magic function, which returns the origin associated + with the value (or values) passed in. +* Inferred origin. You can use inferred parameters to capture the origin + of a value passed in to a function. +* Wildcard origins. The `ImmutableAnyOrigin` and `MutableAnyOrigin` aliases + are special cases indicating a reference that might access any live value. + +#### Static origins + +You can use the static origin `StaticConstantOrigin` when you have a +value that exists for the entire duration of the program. + +For example, the `StringLiteral` method +[`as_string_slice()`](/mojo/stdlib/builtin/string_literal/StringLiteral#as_string_slice) +returns a [`StringSlice`](/mojo/stdlib/utils/string_slice/StringSlice) pointing +to the original string literal. String literals are static—they're allocated at +compile time and never destroyed—so the slice is created with an immutable, +static origin. + +#### Derived origins + +Use the `__origin_of(value)` operator to obtain a value's origin. The +argument to `__origin_of()` can take an arbitrary expression: + +```mojo +__origin_of(self) +__origin_of(x.y) +__origin_of(foo()) +``` + +The `__origin_of()` operator is analyzed statically at compile time; +The expression passed to `__origin_of()` is never evaluated. (For example, +when the compiler analyzes `__origin_of(foo())`, it doesn't run the `foo()` +function.) + +The following struct stores a string value using a +[`OwnedPointer`](/mojo/stdlib/memory/owned_pointer/OwnedPointer): a smart +pointer that holds an owned value. The `as_ptr()` method returns a `Pointer` to +the stored string, using the same origin as the original `OwnedPointer`. + +```mojo +from memory import OwnedPointer, Pointer + +struct BoxedString: + var box: OwnedPointer[String] + + fn __init__(out self, value: String): + self.box = OwnedPointer(value) + + fn as_ptr(self) -> Pointer[String, __origin_of(self.box)]: + return Pointer.address_of(self.box[]) +``` + +#### Inferred origins + +The other common way to access an origin value is to *infer* it from the +the arguments passed to a function or method. For example, the `Span` type +has an associated `origin`: + +```mojo +struct Span[ + is_mutable: Bool, //, + T: CollectionElement, + origin: Origin[is_mutable].type, +](CollectionElementNew): + """A non owning view of contiguous data. +``` + +One of its constructors creates a `Span` from an existing `List`, and infers +its `origin` value from the list: + +```mojo + fn __init__(out self, ref [origin]list: List[T, *_]): + """Construct a Span from a List. + + Args: + list: The list to which the span refers. + """ + self._data = list.data + self._len = len(list) +``` + +## Working with references + +You can use the `ref` keyword with arguments and return values to specify a +reference with parametric mutability. That is, they can be either mutable or +immutable. + +From inside the called function, a `ref` argument looks like a `borrowed` or +`inout` argument. + +A `ref` return value looks like any other return value to the calling function, +but it is a *reference* to an existing value, not a copy. + +### `ref` arguments + +The `ref` argument convention lets you specify an argument of parametric +mutability: that is, you don't need to know in advance whether the passed +argument will be mutable or immutable. There are several reasons you might want +to use a `ref` argument: + +* You want to accept an argument with parametric mutability. + +* You want to tie the lifetime of one argument to the lifetime of another + argument. + +* When you want an argument that is guaranteed to be passed in memory: this can + be important and useful for generic arguments that need an identity, + irrespective of whether the concrete type is register passable. + +The syntax for a `ref` argument is: + +ref [origin_specifier] arg_name: arg_type + +The origin specifier passed inside the square brackets can be either: + +* An origin value. + +* An arbitrary expression, which is treated as shorthand for + `__origin_of(expression)`. In other words, the following declarations are + equivalent: + + ```mojo + ref [__origin_of(self)] + ref [self] + ``` + +* An underscore character (`_`) to indicate that the origin is *unbound*. You + can think of the underscore as a wildcard that will accept any origin: + + ```mojo + def add_ref(ref a: Int, b: Int) -> Int: + return a+b + ``` + +You can also name the origin explicitly. This is useful if you want to specify +an `ImmutableOrigin` or `MutableLOrigin`, or if you want to bind to +the `is_mutable` parameter. + +```mojo +def take_str_ref[ + is_mutable: Bool, //, + origin: Origin[is_mutable].type + ](ref [origin] s: String): + @parameter + if is_mutable: + print("Mutable: " + s) + else: + print("Immutable: " + s) + +def pass_refs(s1: String, owned s2: String): + take_str_ref(s1) + take_str_ref(s2) + +pass_refs("Hello", "Goodbye") +``` + +```output +Immutable: Hello +Mutable: Goodbye +``` + +### `ref` return values + +Like `ref` arguments, `ref` return values allow a function to return a mutable +or immutable reference to a value. Like a `borrowed` or `inout` argument, these +references don't need to be dereferenced. + +`ref` return values can be an efficient way to handle updating items in a +collection. The standard way to do this is by implementing the `__getitem__()` +and `__setitem__()` dunder methods. These are invoked to read from and write to +a subscripted item in a collection: + +```mojo +value = list[a] +list[b] += 10 +``` + +With a `ref` argument, `__getitem__()` can return a mutable reference that can +be modified directly. This has pros and cons compared to using a `__setitem__()` +method: + +* The mutable reference is more efficient—a single update isn't broken up across + two methods. However, the referenced value must be in memory. + +* A `__getitem__()`/`__setitem__()` pair allows for arbitrary code to be run + when values are retrieved and set. For example, `__setitem__()` can validate + or constrain input values. + +For example, in the following example, `NameList` has a `__getitem__()` method +that returns a reference: + +```mojo +struct NameList: + var names: List[String] + + def __init__(out self, *names: String): + self.names = List[String]() + for name in names: + self.names.append(name[]) + + def __getitem__(ref self, index: Int) -> + ref [self.names] String: + if (index >=0 and index < len(self.names)): + return self.names[index] + else: + raise Error("index out of bounds") + +def use_name_list(): + list = NameList("Thor", "Athena", "Dana", "Vrinda") + print(list[2]) + list[2] += "?" + print(list[2]) + +use_name_list() + +``` + +```output +Dana +Dana? +``` + +Note that this update succeeds, even though `NameList` doesn't define a +`__setitem__()` method: + +```mojo +list[2] += "?" +``` + +Also note that the code uses the return value directly each time, rather than +assigning the return value to a variable, like this: + +```mojo +name = list[2] +name += "?" +``` + +Since a variable needs to own its value, `name` would end up with an owned +*copy* of the referenced value. Mojo doesn't currently have +syntax to express that you want to keep the original reference in `name`. This +will be added in a future release. + +If you're working with an API that returns a reference, and you want to avoid +copying the referenced value, you can use a +[`Pointer`](/mojo/stdlib/memory/reference/Pointer) to hold an indirect reference. +You can assign a `Pointer` to a variable, but you need to use the dereference +operator (`[]`) to access the underlying value. + +```mojo +name_ptr = Pointer.address_of(list[2]) +name_ptr[] += "?" +``` + +Similarly, when designing an API you might want to return a `Pointer` instead of +a `ref` to allow users to assign the return value to a variable. For example, +iterators for the standard library collections return pointers, so they can be +used in `for..in` loops: + +```mojo +nums = List(1, 2, 3) +for item in nums: # List iterator returns a Pointer, which must be dereferenced + print(item[]) +for i in range(len(nums)): + print(nums[i]) # List __getitem__() returns a ref +``` + +```output +1 +2 +3 +1 +2 +3 +``` + +(You can find the code for the +`List` iterator in the [Mojo +repo](https://github.com/modularml/mojo/blob/main/stdlib/src/collections/list.mojo#L63).) + +#### Parametric mutability of return values + +Another advantage of `ref` return arguments is the ability to support parametric +mutability. For example, recall the signature of the `__getitem__()` method +above: + +```mojo +def __getitem__(ref self, index: Int) -> + ref [self] String: +``` + +Since the `origin` of the return value is tied to the origin of `self`, the +returned reference will be mutable if the method was called using a +mutable reference. The method still works if you have an immutable reference +to the `NameList`, but it returns an immutable reference: + +```mojo +fn pass_immutable_list(list: NameList) raises: + print(list[2]) + # list[2] += "?" # Error, this list is immutable + +def use_name_list_again(): + list = NameList("Sophie", "Jack", "Diana") + pass_immutable_list(list) + +use_name_list_again() +``` + +```output +Diana +``` + +Without parametric mutability, you'd need to write two versions of +`__getitem__()`, one that accepts an immutable `self` and another that accepts +a mutable `self`. diff --git a/docs/manual/values/ownership.ipynb b/docs/manual/values/ownership.ipynb deleted file mode 100644 index 9601db72d2..0000000000 --- a/docs/manual/values/ownership.ipynb +++ /dev/null @@ -1,653 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Ownership and borrowing\n", - "sidebar_position: 3\n", - "description: How Mojo shares references through function arguments.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A challenge you might face when using some programming languages is that you\n", - "must manually allocate and deallocate memory. When multiple parts of the\n", - "program need access to the same memory, it becomes difficult to keep track of\n", - "who \"owns\" a value and determine when is the right time to deallocate it. If\n", - "you make a mistake, it can result in a \"use-after-free\" error, a \"double free\"\n", - "error, or a \"leaked memory\" error, any one of which can be catastrophic.\n", - "\n", - "Mojo helps avoid these errors by ensuring there is only one variable that owns\n", - "each value at a time, while still allowing you to share references with other\n", - "functions. When the life span of the owner ends, Mojo [destroys the\n", - "value](/mojo/manual/lifecycle/death). Programmers are still responsible for\n", - "making sure any type that allocates resources (including memory) also\n", - "deallocates those resources in its destructor. Mojo's ownership system ensures\n", - "that destructors are called promptly.\n", - "\n", - "On this page, we'll explain the rules that govern this ownership model, and how\n", - "to specify different argument conventions that define how values are passed into\n", - "functions." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Ownership summary\n", - "\n", - "The fundamental rules that make Mojo's ownership model work are the following:\n", - "\n", - "- Every value has only one owner at a time.\n", - "- When the lifetime of the owner ends, Mojo destroys the value.\n", - "- If there are outstanding references to a value, Mojo extends the lifetime of\n", - " the owner.\n", - "\n", - "### Variables and references \n", - "\n", - "A variable _owns_ its value. A struct owns its fields. \n", - "\n", - "A _reference_ allows you to access a value owned by another variable. A\n", - "reference can have either mutable access or immutable access to that value.\n", - "\n", - "Mojo references are created when you call a function: function arguments can be\n", - "passed as mutable or immutable references. A function can also return a\n", - "reference instead of returning a value." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## Argument conventions\n", - "\n", - "In all programming languages, code quality and performance is heavily dependent\n", - "upon how functions treat argument values. That is, whether a value received by\n", - "a function is a unique value or a reference, and whether it's mutable or\n", - "immutable, has a series of consequences that define the readability,\n", - "performance, and safety of the language.\n", - "\n", - "In Mojo, we want to provide full [value\n", - "semantics](/mojo/manual/values/value-semantics) by default, which provides\n", - "consistent and predictable behavior. But as a systems programming language, we\n", - "also need to offer full control over memory optimizations, which generally\n", - "requires reference semantics. The trick is to introduce reference semantics in\n", - "a way that ensures all code is memory safe by tracking the lifetime of every\n", - "value and destroying each one at the right time (and only once). All of this is\n", - "made possible in Mojo through the use of argument conventions that ensure every\n", - "value has only one owner at a time.\n", - "\n", - "An argument convention specifies whether an argument is mutable or immutable,\n", - "and whether the function owns the value. Each convention is defined by a\n", - "keyword at the beginning of an argument declaration:\n", - "\n", - "- `borrowed`: The function receives an **immutable reference**. This means the\n", - " function can read the original value (it is *not* a copy), but it cannot\n", - " mutate (modify) it. `def` functions treat this differently, as described below.\n", - " \n", - "- `inout`: The function receives a **mutable reference**. This means the\n", - " function can read and mutate the original value (it is *not* a copy).\n", - " \n", - "- `owned`: The function takes **ownership** of a value. This means the function\n", - " has exclusive ownership of the argument. The caller might choose to transfer\n", - " ownership of an existing value to this function, but that's not always what\n", - " happens. The callee might receive a newly-created value, or a copy of an\n", - " existing value. \n", - "\n", - "- `ref`: The function gets a reference with an parametric mutability: that is,\n", - " the reference can be either mutable or immutable. You can think of `ref` \n", - " arguments as a generalization of the `borrowed` and `inout` conventions. \n", - " `ref` arguments are an advanced topic, and they're described in more detail in\n", - " [Lifetimes and references](/mojo/manual/values/lifetimes).\n", - "\n", - "For example, this function has one argument that's a mutable\n", - "reference and one that's immutable:" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [], - "source": [ - "fn add(inout x: Int, borrowed y: Int):\n", - " x += y\n", - "\n", - "fn main():\n", - " var a = 1\n", - " var b = 2\n", - " add(a, b)\n", - " print(a) # Prints 3" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You've probably already seen some function arguments that don't declare a\n", - "convention. by default, all arguments are `borrowed`. \n", - "In the following sections, we'll explain each of these argument conventions in\n", - "more detail." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Borrowed arguments (`borrowed`)\n", - "\n", - "The `borrowed` convention is the default for all arguments. But `def` and `fn` \n", - "functions treat `borrowed` arguments somewhat differently:\n", - "\n", - "- In a [`def` function](/mojo/manual/functions#def-functions), if you mutate\n", - " the value in the body of the function, the function receives a mutable copy of\n", - " the argument. Otherwise, it receives an immutable reference. This allows you\n", - " to treat arguments as mutable, but avoid the overhead of making extra copies when\n", - " they're not needed.\n", - "\n", - "- In an [`fn` function](/mojo/manual/functions#fn-functions), the function\n", - " always receives an immutable reference. If you want a mutable copy, you can\n", - " assign it to a local variable:\n", - "\n", - " ```mojo\n", - " var my_copy = borrowed_arg\n", - " ```\n", - "\n", - "In both cases, the original value on the caller side can't be changed by the\n", - "callee.\n", - "\n", - "For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3, 4]\n" - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "def print_list(list: List[Int]):\n", - " print(list.__str__())\n", - "\n", - "var list = List(1, 2, 3, 4)\n", - "print_list(list)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here the `list` argument to `print_list()` is borrowed and not mutated, so the \n", - "`print_list()` function gets an immutable reference to the original `List`, and\n", - "doesn't do any copying. \n", - "\n", - "In general, passing an immutable reference is much more efficient\n", - "when handling large or expensive-to-copy values, because the copy constructor\n", - "and destructor are not invoked for a borrow.\n", - "\n", - "### Compared to C++ and Rust\n", - "\n", - "Mojo's borrowed argument convention is similar in some ways to passing an\n", - "argument by `const&` in C++, which also avoids a copy of the value and disables\n", - "mutability in the callee. However, the borrowed convention differs from\n", - "`const&` in C++ in two important ways:\n", - "\n", - "- The Mojo compiler implements a lifetime checker that ensures that values are\n", - "not destroyed when there are outstanding references to those values.\n", - "\n", - "- Small values like `Int`, `Float`, and `SIMD` are passed directly in machine\n", - "registers instead of through an extra indirection (this is because they are\n", - "declared with the `@register_passable` decorator). This is a [significant\n", - "performance\n", - "enhancement](https://www.forrestthewoods.com/blog/should-small-rust-structs-be-passed-by-copy-or-by-borrow/)\n", - "when compared to languages like C++ and Rust, and moves this optimization from\n", - "every call site to a declaration on the type definition.\n", - "\n", - "The major difference between Rust and Mojo is that Mojo does not require a\n", - "sigil on the caller side to pass by borrow. Also, Mojo is more efficient when\n", - "passing small values, and Rust defaults to moving values instead of passing\n", - "them around by borrow. These policy and syntax decisions allow Mojo to provide\n", - "an easier-to-use programming model." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Mutable arguments (`inout`)\n", - "\n", - "If you'd like your function to receive a **mutable reference**, add the `inout`\n", - "keyword in front of the argument name. You can think of `inout` like this: it\n", - "means any changes to the value *in*side the function are visible *out*side the\n", - "function.\n", - "\n", - "For example, this `mutate()` function updates the original `list` value:" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3, 4, 5]\n" - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "def mutate(inout l: List[Int]):\n", - " l.append(5)\n", - "\n", - "var list = List(1, 2, 3, 4)\n", - "\n", - "mutate(list)\n", - "print_list(list)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "That behaves like an optimized replacement for this:" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[1, 2, 3, 4, 5]\n" - ] - } - ], - "source": [ - "from collections import List\n", - "\n", - "def mutate_copy(l: List[Int]) -> List[Int]:\n", - " l.append(5)\n", - " return l\n", - "\n", - "var list = List(1, 2, 3, 4)\n", - "list = mutate_copy(list)\n", - "print_list(list)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Although the code using `inout` isn't that much shorter, it's more memory\n", - "efficient because it does not make a copy of the value.\n", - "\n", - "However, remember that the values passed as `inout` must already be mutable.\n", - "For example, if you try to take a `borrowed` value and pass it to another\n", - "function as `inout`, you'll get a compiler error because Mojo can't form a\n", - "mutable reference from an immutable reference.\n", - "\n", - ":::note\n", - "\n", - "You cannot define [default\n", - "values](/mojo/manual/functions#optional-arguments) for `inout`\n", - "arguments.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Argument exclusivity\n", - "\n", - "Mojo enforces _argument exclusivity_ for mutable references. This means that if\n", - "a function receives a mutable reference to a value (such as an `inout` argument),\n", - "it can't receive any other references to the same value—mutable or immutable.\n", - "That is, a mutable reference can't have any other references that _alias_ it.\n", - "\n", - "For example, consider the following code example:\n", - "\n", - "```mojo\n", - "fn append_twice(inout s: String, other: String):\n", - " # Mojo knows 's' and 'other' cannot be the same string.\n", - " s += other\n", - " s += other\n", - "\n", - "fn invalid_access():\n", - " var my_string = str(\"o\")\n", - "\n", - " # error: passing `my_string` inout is invalid since it is also passed\n", - " # borrowed.\n", - " append_twice(my_string, my_string)\n", - " print(my_string)\n", - "```\n", - "\n", - "This code is confusing because the user might expect the output to be `ooo`, \n", - "but since the first addition mutates both `s` and `other`, the actual output\n", - "would be `oooo`. Enforcing exclusivity of mutable references not only prevents\n", - "coding errors, it also allows the Mojo compiler to optimize code in some cases.\n", - "\n", - "One way to avoid this issue when you do need both a mutable and an immutable \n", - "reference (or need to pass the same value to two arguments) is to make a copy:\n", - "\n", - "```mojo\n", - "fn valid_access():\n", - " var my_string = str(\"o\")\n", - " var other_string = str(my_string)\n", - " append_twice(my_string, other_string)\n", - " print(my_string)\n", - "```\n", - "\n", - "Note that argument exclusivity isn't enforced for register-passable trivial\n", - "types (like `Int` and `Bool`), because they are always passed by copy. When\n", - "passing the same value into two `Int` arguments, the callee will receive two\n", - "copies of the value." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Transfer arguments (`owned` and `^`)\n", - "\n", - "And finally, if you'd like your function to receive value **ownership**, add the\n", - "`owned` keyword in front of the argument name.\n", - "\n", - "This convention is often combined with use of the postfixed `^` \"transfer\"\n", - "sigil on the variable that is passed into the function, which ends the\n", - "lifetime of that variable.\n", - "\n", - "Technically, the `owned` keyword does not guarantee that the received value is\n", - "_the original value_—it guarantees only that the function\n", - "gets unique ownership of a value. This happens in one of\n", - "three ways:\n", - "\n", - "- The caller passes the argument with the `^` transfer sigil, which ends the\n", - "lifetime of that variable (the variable becomes uninitialized) and ownership is\n", - "transferred into the function without making a copy of any heap-allocated data.\n", - "\n", - "- The caller **does not** use the `^` transfer sigil, in which case, the\n", - "value is copied into the function argument and the original variable remains\n", - "valid. (If the original value is not used again, the compiler may optimize away\n", - "the copy and transfer the value).\n", - "\n", - "- The caller passes in a newly-created \"owned\" value, such as a value returned\n", - "from a function. In this case, no variable owns the value and it can be\n", - "transferred directly to the callee. For example:\n", - "\n", - " ```mojo\n", - " def take(owned s: String):\n", - " pass\n", - "\n", - " take(String(\"A brand-new String!\"))\n", - " ```\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For example, the following code works by making a copy of the string,\n", - "because—although `take_text()` uses the `owned` convention—the caller does not\n", - "include the transfer sigil:" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello!\n", - "Hello\n" - ] - } - ], - "source": [ - "fn take_text(owned text: String):\n", - " text += \"!\"\n", - " print(text)\n", - "\n", - "fn my_function():\n", - " var message: String = \"Hello\"\n", - " take_text(message)\n", - " print(message)\n", - "\n", - "my_function()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "However, if you add the `^` transfer sigil when calling `take_text()`, the\n", - "compiler complains about `print(message)`, because at that point, the `message`\n", - "variable is no longer initialized. That is, this version does not compile:\n", - "\n", - "```mojo\n", - "fn my_function():\n", - " var message: String = \"Hello\"\n", - " take_text(message^) \n", - " print(message) # ERROR: The `message` variable is uninitialized\n", - "```\n", - "\n", - "This is a critical feature of Mojo's lifetime checker, because it ensures that no\n", - "two variables can have ownership of the same value. To fix the error, you must\n", - "not use the `message` variable after you end its lifetime with the `^` transfer\n", - "operator. So here is the corrected code:" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello!\n" - ] - } - ], - "source": [ - "\n", - "fn my_function():\n", - " var message: String = \"Hello\"\n", - " take_text(message^)\n", - "\n", - "my_function()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Regardless of how it receives the value, when the function declares an argument\n", - "as `owned`, it can be certain that it has unique mutable access to that value. \n", - "Because the value is owned, the value is destroyed when the function \n", - "exits—unless the function transfers the value elsewhere.\n", - "\n", - "For example, in the following example, `add_to_list()` takes a string and\n", - "appends it to the list. Ownership of the string is transferred to the list, so\n", - "it's not destroyed when the function exits. On the other hand, \n", - "`consume_string()` doesn't transfer its `owned` value out, so the value is \n", - "destroyed at the end of the function." - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "from collections import List\n", - "\n", - "def add_to_list(owned name: String, inout list: List[String]):\n", - " list.append(name^)\n", - " # name is uninitialized, nothing to destroy\n", - "\n", - "def consume_string(owned s: String):\n", - " print(s)\n", - " # s is destroyed here" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "Value lifetimes are not fully implemented for top-level code in\n", - "Mojo's REPL, so the transfer sigil currently works as intended only when\n", - "used inside a function.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Borrowed versus owned in `def` functions\n", - "\n", - "The difference between `borrowed` and `owned` in a `def` function may be a\n", - "little subtle. In both cases, you can end up with a uniquely-owned value that's\n", - "a copy of the original value.\n", - "\n", - "- The `borrowed` argument always gets an immutable reference or a local copy.\n", - " You can't transfer a value into a `borrowed` argument.\n", - "\n", - "- The `owned` argument always gets a uniquely owned value, which may have been\n", - " copied or transferred from the callee. Using `owned` arguments without the \n", - " transfer sigil (`^`) usually results in values being copied." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Transfer implementation details\n", - "\n", - "In Mojo, you shouldn't conflate \"ownership transfer\" with a \"move\n", - "operation\"—these are not strictly the same thing. \n", - "\n", - "There are multiple ways that Mojo can transfer ownership of a value:\n", - "\n", - "- If a type implements the [move\n", - " constructor](/mojo/manual/lifecycle/life#move-constructor),\n", - " `__moveinit__()`, Mojo may invoke this method _if_ a value of that type is\n", - " transferred into a function as an `owned` argument, _and_ the original\n", - " variable's lifetime ends at the same point (with or without use of the `^`\n", - " transfer sigil).\n", - "\n", - "- If a type implements the [copy \n", - " constructor](/mojo/manual/lifecycle/life#move-constructor), `__copyinit__()`\n", - " and not `__moveinit__()`, Mojo may copy the value and destroy the old value.\n", - "\n", - "- In some cases, Mojo can optimize away the move operation entirely, leaving the \n", - " value in the same memory location but updating its ownership. In these cases,\n", - " a value can be transferred without invoking either the `__copyinit__()` or \n", - " `__moveinit__()` constructors.\n", - "\n", - "In order for the `owned` convention to work _without_ the transfer\n", - "sigil, the value type must be copyable (via `__copyinit__()`)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Comparing `def` and `fn` argument conventions\n", - "\n", - "As mentioned in the section about\n", - "[functions](/mojo/manual/functions), `def` and `fn` functions\n", - "are interchangeable, as far as a caller is concerned, and they can both\n", - "accomplish the same things. It's only the inside that differs, and Mojo's `def`\n", - "function is essentially just sugaring for the `fn` function:\n", - "\n", - "- A `def` argument without a type annotation defaults to\n", - " [`object`](/mojo/stdlib/builtin/object/object) type (whereas as `fn`\n", - " requires all types be explicitly declared).\n", - "\n", - "- A `def` function can treat a `borrowed` argument as mutable (in which case it\n", - " receives a mutable copy). An `fn` function must make this copy explicitly.\n", - "\n", - "For example, these two functions have the exact same behavior." - ] - }, - { - "cell_type": "code", - "execution_count": 34, - "metadata": {}, - "outputs": [], - "source": [ - "def def_example(a: Int, inout b: Int, owned c):\n", - " pass\n", - "\n", - "fn fn_example(a_in: Int, inout b: Int, owned c: object):\n", - " var a = a_in\n", - " pass" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This shadow copy typically adds no overhead, because small types\n", - "like `object` are cheap to copy. However, copying large types that allocate heap\n", - "storage can be expensive. (For example, copying `List` or `Dict` types, or\n", - "copying large numbers of strings.)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/values/ownership.mdx b/docs/manual/values/ownership.mdx new file mode 100644 index 0000000000..95817dd2b1 --- /dev/null +++ b/docs/manual/values/ownership.mdx @@ -0,0 +1,465 @@ +--- +title: Ownership and borrowing +sidebar_position: 3 +description: How Mojo shares references through function arguments. +--- + +A challenge you might face when using some programming languages is that you +must manually allocate and deallocate memory. When multiple parts of the +program need access to the same memory, it becomes difficult to keep track of +who "owns" a value and determine when is the right time to deallocate it. If +you make a mistake, it can result in a "use-after-free" error, a "double free" +error, or a "leaked memory" error, any one of which can be catastrophic. + +Mojo helps avoid these errors by ensuring there is only one variable that owns +each value at a time, while still allowing you to share references with other +functions. When the life span of the owner ends, Mojo [destroys the +value](/mojo/manual/lifecycle/death). Programmers are still responsible for +making sure any type that allocates resources (including memory) also +deallocates those resources in its destructor. Mojo's ownership system ensures +that destructors are called promptly. + +On this page, we'll explain the rules that govern this ownership model, and how +to specify different argument conventions that define how values are passed into +functions. + +## Ownership summary + +The fundamental rules that make Mojo's ownership model work are the following: + +* Every value has only one owner at a time. +* When the lifetime of the owner ends, Mojo destroys the value. +* If there are outstanding references to a value, Mojo extends the lifetime of + the owner. + +### Variables and references + +A variable *owns* its value. A struct owns its fields. + +A *reference* allows you to access a value owned by another variable. A +reference can have either mutable access or immutable access to that value. + +Mojo references are created when you call a function: function arguments can be +passed as mutable or immutable references. A function can also return a +reference instead of returning a value. + +## Argument conventions + +In all programming languages, code quality and performance is heavily dependent +upon how functions treat argument values. That is, whether a value received by +a function is a unique value or a reference, and whether it's mutable or +immutable, has a series of consequences that define the readability, +performance, and safety of the language. + +In Mojo, we want to provide full [value +semantics](/mojo/manual/values/value-semantics) by default, which provides +consistent and predictable behavior. But as a systems programming language, we +also need to offer full control over memory optimizations, which generally +requires reference semantics. The trick is to introduce reference semantics in +a way that ensures all code is memory safe by tracking the lifetime of every +value and destroying each one at the right time (and only once). All of this is +made possible in Mojo through the use of argument conventions that ensure every +value has only one owner at a time. + +An argument convention specifies whether an argument is mutable or immutable, +and whether the function owns the value. Each convention is defined by a +keyword at the beginning of an argument declaration: + +* `borrowed`: The function receives an **immutable reference**. This means the + function can read the original value (it is *not* a copy), but it cannot + mutate (modify) it. `def` functions treat this differently, as described below. + +* `inout`: The function receives a **mutable reference**. This means the + function can read and mutate the original value (it is *not* a copy). + +* `owned`: The function takes **ownership** of a value. This means the function + has exclusive ownership of the argument. The caller might choose to transfer + ownership of an existing value to this function, but that's not always what + happens. The callee might receive a newly-created value, or a copy of an + existing value. + +* `ref`: The function gets a reference with an parametric mutability: that is, + the reference can be either mutable or immutable. You can think of `ref` + arguments as a generalization of the `borrowed` and `inout` conventions. + `ref` arguments are an advanced topic, and they're described in more detail in + [Lifetimes and references](/mojo/manual/values/lifetimes). + +For example, this function has one argument that's a mutable +reference and one that's immutable: + +```mojo +fn add(inout x: Int, borrowed y: Int): + x += y + +fn main(): + var a = 1 + var b = 2 + add(a, b) + print(a) # Prints 3 +``` + +You've probably already seen some function arguments that don't declare a +convention. by default, all arguments are `borrowed`. +In the following sections, we'll explain each of these argument conventions in +more detail. + +## Borrowed arguments (`borrowed`) + +The `borrowed` convention is the default for all arguments. But `def` and `fn` +functions treat `borrowed` arguments somewhat differently: + +* In a [`def` function](/mojo/manual/functions#def-functions), if you mutate + the value in the body of the function, the function receives a mutable copy of + the argument. Otherwise, it receives an immutable reference. This allows you + to treat arguments as mutable, but avoid the overhead of making extra copies when + they're not needed. + +* In an [`fn` function](/mojo/manual/functions#fn-functions), the function + always receives an immutable reference. If you want a mutable copy, you can + assign it to a local variable: + + ```mojo + var my_copy = borrowed_arg + ``` + +In both cases, the original value on the caller side can't be changed by the +callee. + +For example: + +```mojo +from collections import List + +def print_list(list: List[Int]): + print(list.__str__()) + +var list = List(1, 2, 3, 4) +print_list(list) + +``` + +```output +[1, 2, 3, 4] +``` + +Here the `list` argument to `print_list()` is borrowed and not mutated, so the +`print_list()` function gets an immutable reference to the original `List`, and +doesn't do any copying. + +In general, passing an immutable reference is much more efficient +when handling large or expensive-to-copy values, because the copy constructor +and destructor are not invoked for a borrow. + +### Compared to C++ and Rust + +Mojo's borrowed argument convention is similar in some ways to passing an +argument by `const&` in C++, which also avoids a copy of the value and disables +mutability in the callee. However, the borrowed convention differs from +`const&` in C++ in two important ways: + +* The Mojo compiler implements a lifetime checker that ensures that values are + not destroyed when there are outstanding references to those values. + +* Small values like `Int`, `Float`, and `SIMD` are passed directly in machine + registers instead of through an extra indirection (this is because they are + declared with the `@register_passable` decorator). This is a [significant + performance + enhancement](https://www.forrestthewoods.com/blog/should-small-rust-structs-be-passed-by-copy-or-by-borrow/) + when compared to languages like C++ and Rust, and moves this optimization from + every call site to a declaration on the type definition. + +The major difference between Rust and Mojo is that Mojo does not require a +sigil on the caller side to pass by borrow. Also, Mojo is more efficient when +passing small values, and Rust defaults to moving values instead of passing +them around by borrow. These policy and syntax decisions allow Mojo to provide +an easier-to-use programming model. + +## Mutable arguments (`inout`) + +If you'd like your function to receive a **mutable reference**, add the `inout` +keyword in front of the argument name. You can think of `inout` like this: it +means any changes to the value *in*side the function are visible *out*side the +function. + +For example, this `mutate()` function updates the original `list` value: + +```mojo +from collections import List + +def mutate(inout l: List[Int]): + l.append(5) + +var list = List(1, 2, 3, 4) + +mutate(list) +print_list(list) +``` + +```output +[1, 2, 3, 4, 5] +``` + +That behaves like an optimized replacement for this: + +```mojo +from collections import List + +def mutate_copy(l: List[Int]) -> List[Int]: + l.append(5) + return l + +var list = List(1, 2, 3, 4) +list = mutate_copy(list) +print_list(list) +``` + +```output +[1, 2, 3, 4, 5] +``` + +Although the code using `inout` isn't that much shorter, it's more memory +efficient because it does not make a copy of the value. + +However, remember that the values passed as `inout` must already be mutable. +For example, if you try to take a `borrowed` value and pass it to another +function as `inout`, you'll get a compiler error because Mojo can't form a +mutable reference from an immutable reference. + +:::note + +You cannot define [default +values](/mojo/manual/functions#optional-arguments) for `inout` +arguments. + +::: + +### Argument exclusivity + +Mojo enforces *argument exclusivity* for mutable references. This means that if +a function receives a mutable reference to a value (such as an `inout` argument), +it can't receive any other references to the same value—mutable or immutable. +That is, a mutable reference can't have any other references that *alias* it. + +For example, consider the following code example: + +```mojo +fn append_twice(inout s: String, other: String): + # Mojo knows 's' and 'other' cannot be the same string. + s += other + s += other + +fn invalid_access(): + var my_string = str("o") + + # error: passing `my_string` inout is invalid since it is also passed + # borrowed. + append_twice(my_string, my_string) + print(my_string) +``` + +This code is confusing because the user might expect the output to be `ooo`, +but since the first addition mutates both `s` and `other`, the actual output +would be `oooo`. Enforcing exclusivity of mutable references not only prevents +coding errors, it also allows the Mojo compiler to optimize code in some cases. + +One way to avoid this issue when you do need both a mutable and an immutable +reference (or need to pass the same value to two arguments) is to make a copy: + +```mojo +fn valid_access(): + var my_string = str("o") + var other_string = str(my_string) + append_twice(my_string, other_string) + print(my_string) +``` + +Note that argument exclusivity isn't enforced for register-passable trivial +types (like `Int` and `Bool`), because they are always passed by copy. When +passing the same value into two `Int` arguments, the callee will receive two +copies of the value. + +## Transfer arguments (`owned` and `^`) + +And finally, if you'd like your function to receive value **ownership**, add the +`owned` keyword in front of the argument name. + +This convention is often combined with use of the postfixed `^` "transfer" +sigil on the variable that is passed into the function, which ends the +lifetime of that variable. + +Technically, the `owned` keyword does not guarantee that the received value is +*the original value*—it guarantees only that the function +gets unique ownership of a value. This happens in one of +three ways: + +* The caller passes the argument with the `^` transfer sigil, which ends the + lifetime of that variable (the variable becomes uninitialized) and ownership is + transferred into the function without making a copy of any heap-allocated data. + +* The caller **does not** use the `^` transfer sigil, in which case, the + value is copied into the function argument and the original variable remains + valid. (If the original value is not used again, the compiler may optimize away + the copy and transfer the value). + +* The caller passes in a newly-created "owned" value, such as a value returned + from a function. In this case, no variable owns the value and it can be + transferred directly to the callee. For example: + + ```mojo + def take(owned s: String): + pass + + take(String("A brand-new String!")) + ``` + +For example, the following code works by making a copy of the string, +because—although `take_text()` uses the `owned` convention—the caller does not +include the transfer sigil: + +```mojo +fn take_text(owned text: String): + text += "!" + print(text) + +fn my_function(): + var message: String = "Hello" + take_text(message) + print(message) + +my_function() +``` + +```output +Hello! +Hello +``` + +However, if you add the `^` transfer sigil when calling `take_text()`, the +compiler complains about `print(message)`, because at that point, the `message` +variable is no longer initialized. That is, this version does not compile: + +```mojo +fn my_function(): + var message: String = "Hello" + take_text(message^) + print(message) # ERROR: The `message` variable is uninitialized +``` + +This is a critical feature of Mojo's lifetime checker, because it ensures that no +two variables can have ownership of the same value. To fix the error, you must +not use the `message` variable after you end its lifetime with the `^` transfer +operator. So here is the corrected code: + +```mojo + +fn my_function(): + var message: String = "Hello" + take_text(message^) + +my_function() +``` + +```output +Hello! +``` + +Regardless of how it receives the value, when the function declares an argument +as `owned`, it can be certain that it has unique mutable access to that value. +Because the value is owned, the value is destroyed when the function +exits—unless the function transfers the value elsewhere. + +For example, in the following example, `add_to_list()` takes a string and +appends it to the list. Ownership of the string is transferred to the list, so +it's not destroyed when the function exits. On the other hand, +`consume_string()` doesn't transfer its `owned` value out, so the value is +destroyed at the end of the function. + +```mojo +from collections import List + +def add_to_list(owned name: String, inout list: List[String]): + list.append(name^) + # name is uninitialized, nothing to destroy + +def consume_string(owned s: String): + print(s) + # s is destroyed here +``` + +:::note + +Value lifetimes are not fully implemented for top-level code in +Mojo's REPL, so the transfer sigil currently works as intended only when +used inside a function. + +::: + +### Borrowed versus owned in `def` functions + +The difference between `borrowed` and `owned` in a `def` function may be a +little subtle. In both cases, you can end up with a uniquely-owned value that's +a copy of the original value. + +* The `borrowed` argument always gets an immutable reference or a local copy. + You can't transfer a value into a `borrowed` argument. + +* The `owned` argument always gets a uniquely owned value, which may have been + copied or transferred from the callee. Using `owned` arguments without the + transfer sigil (`^`) usually results in values being copied. + +### Transfer implementation details + +In Mojo, you shouldn't conflate "ownership transfer" with a "move +operation"—these are not strictly the same thing. + +There are multiple ways that Mojo can transfer ownership of a value: + +* If a type implements the [move + constructor](/mojo/manual/lifecycle/life#move-constructor), + `__moveinit__()`, Mojo may invoke this method *if* a value of that type is + transferred into a function as an `owned` argument, *and* the original + variable's lifetime ends at the same point (with or without use of the `^` + transfer sigil). + +* If a type implements the [copy + constructor](/mojo/manual/lifecycle/life#move-constructor), `__copyinit__()` + and not `__moveinit__()`, Mojo may copy the value and destroy the old value. + +* In some cases, Mojo can optimize away the move operation entirely, leaving the + value in the same memory location but updating its ownership. In these cases, + a value can be transferred without invoking either the `__copyinit__()` or + `__moveinit__()` constructors. + +In order for the `owned` convention to work *without* the transfer +sigil, the value type must be copyable (via `__copyinit__()`). + +## Comparing `def` and `fn` argument conventions + +As mentioned in the section about +[functions](/mojo/manual/functions), `def` and `fn` functions +are interchangeable, as far as a caller is concerned, and they can both +accomplish the same things. It's only the inside that differs, and Mojo's `def` +function is essentially just sugaring for the `fn` function: + +* A `def` argument without a type annotation defaults to + [`object`](/mojo/stdlib/builtin/object/object) type (whereas as `fn` + requires all types be explicitly declared). + +* A `def` function can treat a `borrowed` argument as mutable (in which case it + receives a mutable copy). An `fn` function must make this copy explicitly. + +For example, these two functions have the exact same behavior. + +```mojo +def def_example(a: Int, inout b: Int, owned c): + pass + +fn fn_example(a_in: Int, inout b: Int, owned c: object): + var a = a_in + pass +``` + +This shadow copy typically adds no overhead, because small types +like `object` are cheap to copy. However, copying large types that allocate heap +storage can be expensive. (For example, copying `List` or `Dict` types, or +copying large numbers of strings.) diff --git a/docs/manual/values/value-semantics.ipynb b/docs/manual/values/value-semantics.ipynb deleted file mode 100644 index de3c812464..0000000000 --- a/docs/manual/values/value-semantics.ipynb +++ /dev/null @@ -1,431 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Value semantics\n", - "sidebar_position: 2\n", - "description: An explanation of Mojo's value-semantic defaults.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo doesn't enforce value semantics or reference semantics. It supports them\n", - "both and allows each type to define how it is created, copied, and moved (if at\n", - "all). So, if you're building your own type, you can implement it to support\n", - "value semantics, reference semantics, or a bit of both. That said, Mojo is\n", - "designed with argument behaviors that default to value semantics, and it\n", - "provides tight controls for reference semantics that avoid memory errors.\n", - "\n", - "The controls over reference semantics are provided by the [value ownership\n", - "model](/mojo/manual/values/ownership), but before we get into the syntax\n", - "and rules for that, it's important that you understand the principles of value\n", - "semantics. Generally, it means that each variable has unique access to a value,\n", - "and any code outside the scope of that variable cannot modify its value." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Intro to value semantics" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the most basic situation, sharing a value-semantic type means that you create\n", - "a copy of the value. This is also known as \"pass by value.\" For example,\n", - "consider this code:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n" - ] - } - ], - "source": [ - "x = 1\n", - "y = x\n", - "y += 1\n", - "\n", - "print(x)\n", - "print(y)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We assigned the value of `x` to `y`, which creates the value for `y` by making a\n", - "copy of `x`. When we increment `y`, the value of `x` doesn't change. Each\n", - "variable has exclusive ownership of a value.\n", - "\n", - "Whereas, if a type instead uses reference semantics, then `y` would point to\n", - "the same value as `x`, and incrementing either one would affect the value for\n", - "both. Neither `x` nor `y` would \"own\" the value, and any variable would be\n", - "allowed to reference it and mutate it.\n", - "\n", - "Numeric values in Mojo are value semantic because they're trivial types, which\n", - "are cheap to copy. \n", - "\n", - "Here's another example with a function:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2\n", - "1\n" - ] - } - ], - "source": [ - "def add_one(y: Int):\n", - " y += 1\n", - " print(y)\n", - "\n", - "x = 1\n", - "add_one(x)\n", - "print(x)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Again, the `y` value is a copy and the function cannot modify the original `x`\n", - "value.\n", - "\n", - "If you're familiar with Python, this is probably familiar so far, because the\n", - "code above behaves the same in Python. However, Python is not value semantic.\n", - "\n", - "It gets complicated, but let's consider a situation in which you call a Python\n", - "function and pass an object with a pointer to a heap-allocated value. Python\n", - "actually gives that function a reference to your object, which allows the\n", - "function to mutate the heap-allocated value. This can cause nasty bugs if\n", - "you're not careful, because the function might incorrectly assume it has unique\n", - "ownership of that object.\n", - "\n", - "In Mojo, the default behavior for all function arguments is to use value\n", - "semantics. If the function wants to modify the value of an incoming argument,\n", - "then it must explicitly declare so, which avoids accidental mutations of the\n", - "original value.\n", - "\n", - "All Mojo types passed to a `def` function can be treated as mutable,\n", - "which maintains the expected mutability behavior from Python. But by default, it\n", - "is mutating a uniquely-owned value, not the original value.\n", - "\n", - "For example, when you pass an instance of a `SIMD` vector to a `def`\n", - "function it creates a unique copy of all values. Thus, if we modify the\n", - "argument in the function, the original value is unchanged:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[9, 2, 3, 4]\n", - "[1, 2, 3, 4]\n" - ] - } - ], - "source": [ - "def update_simd(t: SIMD[DType.int32, 4]):\n", - " t[0] = 9\n", - " print(t)\n", - "\n", - "v = SIMD[DType.int32, 4](1, 2, 3, 4)\n", - "update_simd(v)\n", - "print(v)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If this were Python code, the function would modify the original object, because\n", - "Python shares a reference to the original object.\n", - "\n", - "However, not all types are inexpensive to copy. Copying a `String` or `List`\n", - "requires allocating heap memory, so we want to avoid copying one by accident.\n", - "When designing a type like this, ideally you want to prevent _implicit_ copies,\n", - "and only make a copy when it's explicitly requested. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Value semantics in `def` vs `fn`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The arguments above are mutable because a [`def`\n", - "function](/mojo/manual/functions#def-functions) has special treatment for\n", - "the default\n", - "[`borrowed` argument convention](/mojo/manual/values/ownership#argument-conventions).\n", - "\n", - "Whereas, `fn` functions always receive `borrowed` arguments as immutable\n", - "references. This is a memory optimization to avoid making\n", - "unnecessary copies.\n", - "\n", - "For example, let's create another function with the `fn` declaration. In this\n", - "case, the `y` argument is immutable by default, so if the function wants to\n", - "modify the value in the local scope, it needs to make a local copy:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3\n", - "1\n" - ] - } - ], - "source": [ - "fn add_two(y: Int):\n", - " # y += 2 # This will cause a compiler error because `y` is immutable\n", - " # We can instead make an explicit copy:\n", - " var z = y\n", - " z += 2\n", - " print(z)\n", - "\n", - "x = 1\n", - "add_two(x)\n", - "print(x)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This is all consistent with value semantics because each variable maintains\n", - "unique ownership of its value.\n", - "\n", - "The way the `fn` function receives the `y` value is a \"look but don't touch\"\n", - "approach to value semantics. This is also a more memory-efficient approach when\n", - "dealing with memory-intensive arguments, because Mojo doesn't make any copies\n", - "unless we explicitly make the copies ourselves.\n", - "\n", - "Thus, the default behavior for `def` and `fn` arguments is fully value\n", - "semantic: arguments are either copies or immutable references, and any living\n", - "variable from the callee is not affected by the function.\n", - "\n", - "But we must also allow reference semantics (mutable references) because it's\n", - "how we build performant and memory-efficient programs (making copies of\n", - "everything gets really expensive). The challenge is to introduce reference\n", - "semantics in a way that does not disturb the predictability and safety of value\n", - "semantics.\n", - "\n", - "The way we do that in Mojo is, instead of enforcing that every variable have\n", - "\"exclusive access\" to a value, we ensure that every value has an \"exclusive\n", - "owner,\" and destroy each value when the lifetime of its owner ends. \n", - "\n", - "On the next page about [value\n", - "ownership](/mojo/manual/values/ownership), you'll learn how to modify\n", - "the default argument conventions, and safely use reference semantics so every\n", - "value has only one owner at a time." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Python-style reference semantics" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "If you will always use strict type declarations, you\n", - "can skip this section because it only applies to Mojo code using `def`\n", - "functions without type declarations (or values declared as\n", - "[`object`](/mojo/stdlib/builtin/object/object)).\n", - "\n", - ":::\n", - "\n", - "As we said at the top of this page, Mojo doesn't enforce value semantics or\n", - "reference semantics. It's up to each type author to decide how an instance of\n", - "their type should be created, copied, and moved (see [Value\n", - "lifecycle](/mojo/manual/lifecycle/)). Thus, in order to provide compatibility\n", - "with Python, Mojo's `object` type is designed to support Python's style of\n", - "argument passing for functions, which is different from the other types in\n", - "Mojo.\n", - "\n", - "Python's argument-passing convention is called \"pass by object reference.\" This\n", - "means when you pass a variable to a Python function, you actually pass a\n", - "reference to the object, as a value (so it's not strictly reference semantics).\n", - "\n", - "Passing the object reference \"as a value\" means that the argument name is just\n", - "a container that acts like an alias to the original object. If you reassign the\n", - "argument inside the function, it does not affect the caller's original value.\n", - "However, if you modify the object itself (such as call `append()` on a list),\n", - "the change is visible to the original object outside the function.\n", - "\n", - "For example, here's a Python function that receives a list and modifies it:" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "func: [1, 2, 3]\n", - "orig: [1, 2, 3]\n" - ] - } - ], - "source": [ - "%%python\n", - "def modify_list(l):\n", - " l.append(3)\n", - " print(\"func:\", l)\n", - "\n", - "ar = [1, 2]\n", - "modify_list(ar)\n", - "print(\"orig:\", ar)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this example, it looks like the list is \"passed by reference\" because `l`\n", - "modifies the original value.\n", - "\n", - "However, if the Python function instead _assigns_ a value to `l`, it does not\n", - "affect the original value:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "func: [3, 4]\n", - "orig: [1, 2]\n" - ] - } - ], - "source": [ - "%%python\n", - "def change_list(l):\n", - " l = [3, 4]\n", - " print(\"func:\", l)\n", - "\n", - "ar = [1, 2]\n", - "change_list(ar)\n", - "print(\"orig:\", ar)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This demonstrates how a Python argument holds the object reference _as a\n", - "value_: the function can mutate the original value, but it can also assign a\n", - "new object to the argument name." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Pass by object reference in Mojo" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Although we haven't finished implementing the\n", - "[`object`](/mojo/stdlib/builtin/object/object) type to represent any Mojo\n", - "type, our intention is to do so, and enable \"pass by object reference\" as\n", - "described above for all dynamic types in a `def` function.\n", - "\n", - "That means you can have dynamic typing and \"pass by object reference\" behavior\n", - "by simply writing your Mojo code like Python:\n", - "\n", - "1. Use `def` function declarations.\n", - "2. Don't declare argument types.\n", - "\n", - ":::note TODO\n", - "\n", - "Mojo does not adopt the full syntax of Python yet, and there is a lot to\n", - "do in this department before Mojo supports all of Python's types and behaviors.\n", - "As such, this is a topic that also still needs a lot of documentation.\n", - "\n", - ":::" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/values/value-semantics.mdx b/docs/manual/values/value-semantics.mdx new file mode 100644 index 0000000000..403db993b6 --- /dev/null +++ b/docs/manual/values/value-semantics.mdx @@ -0,0 +1,270 @@ +--- +title: Value semantics +sidebar_position: 2 +description: An explanation of Mojo's value-semantic defaults. +--- + +Mojo doesn't enforce value semantics or reference semantics. It supports them +both and allows each type to define how it is created, copied, and moved (if at +all). So, if you're building your own type, you can implement it to support +value semantics, reference semantics, or a bit of both. That said, Mojo is +designed with argument behaviors that default to value semantics, and it +provides tight controls for reference semantics that avoid memory errors. + +The controls over reference semantics are provided by the [value ownership +model](/mojo/manual/values/ownership), but before we get into the syntax +and rules for that, it's important that you understand the principles of value +semantics. Generally, it means that each variable has unique access to a value, +and any code outside the scope of that variable cannot modify its value. + +## Intro to value semantics + +In the most basic situation, sharing a value-semantic type means that you create +a copy of the value. This is also known as "pass by value." For example, +consider this code: + +```mojo +x = 1 +y = x +y += 1 + +print(x) +print(y) +``` + +```output +1 +2 +``` + +We assigned the value of `x` to `y`, which creates the value for `y` by making a +copy of `x`. When we increment `y`, the value of `x` doesn't change. Each +variable has exclusive ownership of a value. + +Whereas, if a type instead uses reference semantics, then `y` would point to +the same value as `x`, and incrementing either one would affect the value for +both. Neither `x` nor `y` would "own" the value, and any variable would be +allowed to reference it and mutate it. + +Numeric values in Mojo are value semantic because they're trivial types, which +are cheap to copy. + +Here's another example with a function: + +```mojo +def add_one(y: Int): + y += 1 + print(y) + +x = 1 +add_one(x) +print(x) +``` + +```output +2 +1 +``` + +Again, the `y` value is a copy and the function cannot modify the original `x` +value. + +If you're familiar with Python, this is probably familiar so far, because the +code above behaves the same in Python. However, Python is not value semantic. + +It gets complicated, but let's consider a situation in which you call a Python +function and pass an object with a pointer to a heap-allocated value. Python +actually gives that function a reference to your object, which allows the +function to mutate the heap-allocated value. This can cause nasty bugs if +you're not careful, because the function might incorrectly assume it has unique +ownership of that object. + +In Mojo, the default behavior for all function arguments is to use value +semantics. If the function wants to modify the value of an incoming argument, +then it must explicitly declare so, which avoids accidental mutations of the +original value. + +All Mojo types passed to a `def` function can be treated as mutable, +which maintains the expected mutability behavior from Python. But by default, it +is mutating a uniquely-owned value, not the original value. + +For example, when you pass an instance of a `SIMD` vector to a `def` +function it creates a unique copy of all values. Thus, if we modify the +argument in the function, the original value is unchanged: + +```mojo +def update_simd(t: SIMD[DType.int32, 4]): + t[0] = 9 + print(t) + +v = SIMD[DType.int32, 4](1, 2, 3, 4) +update_simd(v) +print(v) +``` + +```output +[9, 2, 3, 4] +[1, 2, 3, 4] +``` + +If this were Python code, the function would modify the original object, because +Python shares a reference to the original object. + +However, not all types are inexpensive to copy. Copying a `String` or `List` +requires allocating heap memory, so we want to avoid copying one by accident. +When designing a type like this, ideally you want to prevent *implicit* copies, +and only make a copy when it's explicitly requested. + +### Value semantics in `def` vs `fn` + +The arguments above are mutable because a [`def` +function](/mojo/manual/functions#def-functions) has special treatment for +the default +[`borrowed` argument convention](/mojo/manual/values/ownership#argument-conventions). + +Whereas, `fn` functions always receive `borrowed` arguments as immutable +references. This is a memory optimization to avoid making +unnecessary copies. + +For example, let's create another function with the `fn` declaration. In this +case, the `y` argument is immutable by default, so if the function wants to +modify the value in the local scope, it needs to make a local copy: + +```mojo +fn add_two(y: Int): + # y += 2 # This will cause a compiler error because `y` is immutable + # We can instead make an explicit copy: + var z = y + z += 2 + print(z) + +x = 1 +add_two(x) +print(x) +``` + +```output +3 +1 +``` + +This is all consistent with value semantics because each variable maintains +unique ownership of its value. + +The way the `fn` function receives the `y` value is a "look but don't touch" +approach to value semantics. This is also a more memory-efficient approach when +dealing with memory-intensive arguments, because Mojo doesn't make any copies +unless we explicitly make the copies ourselves. + +Thus, the default behavior for `def` and `fn` arguments is fully value +semantic: arguments are either copies or immutable references, and any living +variable from the callee is not affected by the function. + +But we must also allow reference semantics (mutable references) because it's +how we build performant and memory-efficient programs (making copies of +everything gets really expensive). The challenge is to introduce reference +semantics in a way that does not disturb the predictability and safety of value +semantics. + +The way we do that in Mojo is, instead of enforcing that every variable have +"exclusive access" to a value, we ensure that every value has an "exclusive +owner," and destroy each value when the lifetime of its owner ends. + +On the next page about [value +ownership](/mojo/manual/values/ownership), you'll learn how to modify +the default argument conventions, and safely use reference semantics so every +value has only one owner at a time. + +## Python-style reference semantics + +:::note + +If you will always use strict type declarations, you +can skip this section because it only applies to Mojo code using `def` +functions without type declarations (or values declared as +[`object`](/mojo/stdlib/builtin/object/object)). + +::: + +As we said at the top of this page, Mojo doesn't enforce value semantics or +reference semantics. It's up to each type author to decide how an instance of +their type should be created, copied, and moved (see [Value +lifecycle](/mojo/manual/lifecycle/)). Thus, in order to provide compatibility +with Python, Mojo's `object` type is designed to support Python's style of +argument passing for functions, which is different from the other types in +Mojo. + +Python's argument-passing convention is called "pass by object reference." This +means when you pass a variable to a Python function, you actually pass a +reference to the object, as a value (so it's not strictly reference semantics). + +Passing the object reference "as a value" means that the argument name is just +a container that acts like an alias to the original object. If you reassign the +argument inside the function, it does not affect the caller's original value. +However, if you modify the object itself (such as call `append()` on a list), +the change is visible to the original object outside the function. + +For example, here's a Python function that receives a list and modifies it: + +```mojo +%%python +def modify_list(l): + l.append(3) + print("func:", l) + +ar = [1, 2] +modify_list(ar) +print("orig:", ar) +``` + +```output +func: [1, 2, 3] +orig: [1, 2, 3] +``` + +In this example, it looks like the list is "passed by reference" because `l` +modifies the original value. + +However, if the Python function instead *assigns* a value to `l`, it does not +affect the original value: + +```mojo +%%python +def change_list(l): + l = [3, 4] + print("func:", l) + +ar = [1, 2] +change_list(ar) +print("orig:", ar) +``` + +```output +func: [3, 4] +orig: [1, 2] +``` + +This demonstrates how a Python argument holds the object reference *as a +value*: the function can mutate the original value, but it can also assign a +new object to the argument name. + +### Pass by object reference in Mojo + +Although we haven't finished implementing the +[`object`](/mojo/stdlib/builtin/object/object) type to represent any Mojo +type, our intention is to do so, and enable "pass by object reference" as +described above for all dynamic types in a `def` function. + +That means you can have dynamic typing and "pass by object reference" behavior +by simply writing your Mojo code like Python: + +1. Use `def` function declarations. +2. Don't declare argument types. + +:::note TODO + +Mojo does not adopt the full syntax of Python yet, and there is a lot to +do in this department before Mojo supports all of Python's types and behaviors. +As such, this is a topic that also still needs a lot of documentation. + +::: diff --git a/docs/manual/variables.ipynb b/docs/manual/variables.ipynb deleted file mode 100644 index 68b87ce68e..0000000000 --- a/docs/manual/variables.ipynb +++ /dev/null @@ -1,493 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Variables\n", - "sidebar_position: 3\n", - "description: Introduction to Mojo variables.\n", - "---" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "A variable is a name that holds a value or object. All variables in Mojo are \n", - "mutable—their value can be changed. (If you want to define a constant value that\n", - "can't change at runtime, see the \n", - "[`alias` keyword](/mojo/manual/parameters/#alias-named-parameter-expressions).)\n", - "\n", - "Mojo has two kinds of variables:\n", - "\n", - "- Explicitly-declared variables are created with the `var` keyword, and may include\n", - " [type annotations](#type-annotations).\n", - "\n", - " ```mojo\n", - " var a = 5\n", - " var b: Float64 = 3.14\n", - " ```\n", - " \n", - "- Implicitly-declared variables are created with an assignment statement:\n", - "\n", - " ```mojo\n", - " a = 5\n", - " b = 3.14\n", - " ```\n", - "\n", - "Both types of variables are strongly-typed: the variable receives a type when\n", - "it's created, and the type never changes. You can't assign a variable a value of\n", - "a different type:\n", - "\n", - "```mojo\n", - "count = 8 # count is type Int\n", - "count = \"Nine?\" # Error: can't implicitly convert 'StringLiteral' to 'Int'\n", - "```\n", - "\n", - "Some types support [_implicit conversions_](#implicit-type-conversion) from\n", - "other types. For example, an integer value can implicitly convert to a\n", - "floating-point value:" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "99.0\n" - ] - } - ], - "source": [ - "var temperature: Float64 = 99\n", - "print(temperature)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In this example, the `temperature` variable is explicitly typed as `Float64`,\n", - "but assigned an integer value, so the value is implicitly converted to a \n", - "`Float64`. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Implicitly-declared variables\n", - "\n", - "You can create a variable with just a name and a value. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "name = String(\"Sam\")\n", - "user_id = 0" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Implicitly-declared variables are strongly typed: they take the type from the\n", - "first value assigned to them. For example, the `user_id` variable above is type\n", - "`Int`, while the `name` variable is type `String`. You can't assign a string to\n", - "`user_id` or an integer to `name`.\n", - "\n", - "Implicitly-declared variables are scoped at the function level. You create an\n", - "implicitly-declared variable the first time you assign a value to a given name\n", - "inside a function. Any subsequent references to that name inside the function\n", - "refer to the same variable. For more information, see [Variable\n", - "scopes](#variable-scopes), which describes how variable scoping differs between\n", - "explicitly- and implicitly-declared variables." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Explicitly-declared variables\n", - "\n", - "You can declare a variable with the `var` keyword. For example:\n", - "\n", - "```mojo\n", - "var name = String(\"Sam\")\n", - "var user_id: Int\n", - "```\n", - "The `name` variable is initialized to the string \"Sam\". The `user_id` variable \n", - "is uninitialized, but it has a declared type, `Int` for an integer value. All\n", - "explicitly-declared variables are typed—either explicitly with a \n", - "[type annotation](#type-annotations) or implicitly when they're initialized with\n", - "a value.\n", - "\n", - "Since variables are strongly typed, you can't assign a variable a\n", - "value of a different type, unless those types can be \n", - "[implicitly converted](#implicit-type-conversion). For example, this code will\n", - "not compile:\n", - "\n", - "```mojo\n", - "var user_id: Int = \"Sam\"\n", - "```\n", - "\n", - "There are several main differences between explicitly-declared variables and\n", - "implicitly-declared variables:\n", - "\n", - "- An explicitly-declared variable can be declared without initializing it:\n", - "\n", - " ```mojo\n", - " var value: Float64\n", - " ```\n", - "\n", - "- Explicitly-declared variables follow [lexical scoping](#variable-scopes),\n", - " unlike implicitly-declared variables." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Type annotations" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Although Mojo can infer a variable type from the first value assigned to a \n", - "variable, it also supports static type annotations on variables. Type \n", - "annotations provide a more explicit way of specifying the variable's type.\n", - "\n", - "To specify the type for a variable, add a colon followed by the type name:\n", - "\n", - "```mojo\n", - "var name: String = get_name()\n", - "```\n", - "\n", - "This makes it clear that `name` is type `String`, without knowing what the \n", - "`get_name()` function returns. The `get_name()` function may return a `String`,\n", - "or a value that's implicitly convertible to a `String`.\n", - "\n", - ":::note\n", - "\n", - "You must declare a variable with `var` to use type annotations.\n", - "\n", - ":::\n", - "\n", - "If a type has a constructor with just one argument, you can initialize it in\n", - "two ways:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "var name1: String = \"Sam\"\n", - "var name2 = String(\"Sam\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Both of these lines invoke the same constructor to create a `String` from a\n", - "`StringLiteral`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Late initialization" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Using type annotations allows for late initialization. For example, notice here\n", - "that the `z` variable is first declared with just a type, and the value is\n", - "assigned later:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "fn my_function(x: Int):\n", - " var z: Float32\n", - " if x != 0:\n", - " z = 1.0\n", - " else:\n", - " z = foo()\n", - " print(z)\n", - "\n", - "fn foo() -> Float32:\n", - " return 3.14" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "If you try to pass an uninitialized variable to a function or use\n", - "it on the right-hand side of an assignment statement, compilation fails.\n", - "\n", - "```mojo\n", - "var z: Float32\n", - "var y = z # Error: use of uninitialized value 'z'\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "Late initialization works only if the variable is declared with a\n", - "type.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Implicit type conversion" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Some types include built-in type conversion (type casting) from one type into\n", - "its own type. For example, if you assign an integer to a variable that has a \n", - "floating-point type, it converts the value instead of giving a compiler error:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n" - ] - } - ], - "source": [ - "var number: Float64 = 1" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As shown above, value assignment can be converted into a constructor call if the \n", - "target type has a constructor that takes a single argument that matches the\n", - "value being assigned. So, this code uses the `Float64` constructor that takes an\n", - "integer: `__init__(out self, value: Int)`.\n", - "\n", - "In general, implicit conversions should only be supported where the conversion\n", - "is lossless.\n", - "\n", - "Implicit conversion follows the logic of [overloaded\n", - "functions](/mojo/manual/functions#overloaded-functions). If the destination\n", - "type has a single-argument constructor that takes an argument of the source\n", - "type, it can be invoked for implicit conversion. \n", - "\n", - "So assigning an integer to a `Float64` variable is exactly the same as this:" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "var number = Float64(1)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Similarly, if you call a function that requires an argument of a certain type \n", - "(such as `Float64`), you can pass in any value as long as that value type can\n", - "implicitly convert to the required type (using one of the type's overloaded\n", - "constructors).\n", - "\n", - "For example, you can pass an `Int` to a function that expects a `Float64`,\n", - "because `Float64` includes a constructor that takes an `Int`:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "fn take_float(value: Float64):\n", - " print(value)\n", - "\n", - "fn pass_integer():\n", - " var value: Int = 1\n", - " take_float(value)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For more details on implicit conversion, see \n", - "[Constructors and implicit \n", - "conversion](/mojo/manual/lifecycle/life/#constructors-and-implicit-conversion)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Variable scopes\n", - "\n", - "Variables declared with `var` are bound by *lexical scoping*. This\n", - "means that nested code blocks can read and modify variables defined in an\n", - "outer scope. But an outer scope **cannot** read variables defined in an\n", - "inner scope at all.\n", - "\n", - "For example, the `if` code block shown here creates an inner scope where outer\n", - "variables are accessible to read/write, but any new variables do not live\n", - "beyond the scope of the `if` block:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "num: 1\n", - "num: 2\n", - "num: 1\n", - "dig: 2\n" - ] - } - ], - "source": [ - "def lexical_scopes():\n", - " var num = 1\n", - " var dig = 1\n", - " if num == 1:\n", - " print(\"num:\", num) # Reads the outer-scope \"num\"\n", - " var num = 2 # Creates new inner-scope \"num\"\n", - " print(\"num:\", num) # Reads the inner-scope \"num\"\n", - " dig = 2 # Updates the outer-scope \"dig\"\n", - " print(\"num:\", num) # Reads the outer-scope \"num\"\n", - " print(\"dig:\", dig) # Reads the outer-scope \"dig\"\n", - "\n", - "lexical_scopes()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that the `var` statement inside the `if` creates a **new** variable with the same name as the outer variable. This prevents the inner loop from accessing the outer `num` variable. (This is called \"variable shadowing,\" where the inner scope variable hides or \"shadows\" a variable from an outer scope.)\n", - "\n", - "The lifetime of the inner `num` ends exactly where the `if` code block ends,\n", - "because that's the scope in which the variable was defined.\n", - "\n", - "This is in contrast to implicitly-declared variables (those without the `var`\n", - "keyword), which use **function-level scoping** (consistent with Python variable\n", - "behavior). That means, when you change the value of an implicitly-declared\n", - "variable inside the `if` block, it actually changes the value for the entire\n", - "function.\n", - "\n", - "For example, here's the same code but *without* the `var` declarations:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1\n", - "2\n", - "2\n" - ] - } - ], - "source": [ - "def function_scopes():\n", - " num = 1\n", - " if num == 1:\n", - " print(num) # Reads the function-scope \"num\"\n", - " num = 2 # Updates the function-scope variable\n", - " print(num) # Reads the function-scope \"num\"\n", - " print(num) # Reads the function-scope \"num\"\n", - "\n", - "function_scopes()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, the last `print()` function sees the updated `num` value from the inner\n", - "scope, because implicitly-declared variables (Python-style variables) use function-level\n", - "scope (instead of lexical scope)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/manual/variables.mdx b/docs/manual/variables.mdx new file mode 100644 index 0000000000..6b77b88f0f --- /dev/null +++ b/docs/manual/variables.mdx @@ -0,0 +1,299 @@ +--- +title: Variables +sidebar_position: 3 +description: Introduction to Mojo variables. +--- + +A variable is a name that holds a value or object. All variables in Mojo are +mutable—their value can be changed. (If you want to define a constant value that +can't change at runtime, see the +[`alias` keyword](/mojo/manual/parameters/#alias-named-parameter-expressions).) + +Mojo has two kinds of variables: + +* Explicitly-declared variables are created with the `var` keyword, and may include + [type annotations](#type-annotations). + + ```mojo + var a = 5 + var b: Float64 = 3.14 + ``` + +* Implicitly-declared variables are created with an assignment statement: + + ```mojo + a = 5 + b = 3.14 + ``` + +Both types of variables are strongly-typed: the variable receives a type when +it's created, and the type never changes. You can't assign a variable a value of +a different type: + +```mojo +count = 8 # count is type Int +count = "Nine?" # Error: can't implicitly convert 'StringLiteral' to 'Int' +``` + +Some types support [*implicit conversions*](#implicit-type-conversion) from +other types. For example, an integer value can implicitly convert to a +floating-point value: + +```mojo +var temperature: Float64 = 99 +print(temperature) +``` + +```output +99.0 +``` + +In this example, the `temperature` variable is explicitly typed as `Float64`, +but assigned an integer value, so the value is implicitly converted to a +`Float64`. + +## Implicitly-declared variables + +You can create a variable with just a name and a value. For example: + +```mojo +name = String("Sam") +user_id = 0 +``` + +Implicitly-declared variables are strongly typed: they take the type from the +first value assigned to them. For example, the `user_id` variable above is type +`Int`, while the `name` variable is type `String`. You can't assign a string to +`user_id` or an integer to `name`. + +Implicitly-declared variables are scoped at the function level. You create an +implicitly-declared variable the first time you assign a value to a given name +inside a function. Any subsequent references to that name inside the function +refer to the same variable. For more information, see [Variable +scopes](#variable-scopes), which describes how variable scoping differs between +explicitly- and implicitly-declared variables. + +## Explicitly-declared variables + +You can declare a variable with the `var` keyword. For example: + +```mojo +var name = String("Sam") +var user_id: Int +``` + +The `name` variable is initialized to the string "Sam". The `user_id` variable +is uninitialized, but it has a declared type, `Int` for an integer value. All +explicitly-declared variables are typed—either explicitly with a +[type annotation](#type-annotations) or implicitly when they're initialized with +a value. + +Since variables are strongly typed, you can't assign a variable a +value of a different type, unless those types can be +[implicitly converted](#implicit-type-conversion). For example, this code will +not compile: + +```mojo +var user_id: Int = "Sam" +``` + +There are several main differences between explicitly-declared variables and +implicitly-declared variables: + +* An explicitly-declared variable can be declared without initializing it: + + ```mojo + var value: Float64 + ``` + +* Explicitly-declared variables follow [lexical scoping](#variable-scopes), + unlike implicitly-declared variables. + +## Type annotations + +Although Mojo can infer a variable type from the first value assigned to a +variable, it also supports static type annotations on variables. Type +annotations provide a more explicit way of specifying the variable's type. + +To specify the type for a variable, add a colon followed by the type name: + +```mojo +var name: String = get_name() +``` + +This makes it clear that `name` is type `String`, without knowing what the +`get_name()` function returns. The `get_name()` function may return a `String`, +or a value that's implicitly convertible to a `String`. + +:::note + +You must declare a variable with `var` to use type annotations. + +::: + +If a type has a constructor with just one argument, you can initialize it in +two ways: + +```mojo +var name1: String = "Sam" +var name2 = String("Sam") +``` + +Both of these lines invoke the same constructor to create a `String` from a +`StringLiteral`. + +### Late initialization + +Using type annotations allows for late initialization. For example, notice here +that the `z` variable is first declared with just a type, and the value is +assigned later: + +```mojo +fn my_function(x: Int): + var z: Float32 + if x != 0: + z = 1.0 + else: + z = foo() + print(z) + +fn foo() -> Float32: + return 3.14 +``` + +If you try to pass an uninitialized variable to a function or use +it on the right-hand side of an assignment statement, compilation fails. + +```mojo +var z: Float32 +var y = z # Error: use of uninitialized value 'z' +``` + +:::note + +Late initialization works only if the variable is declared with a +type. + +::: + +### Implicit type conversion + +Some types include built-in type conversion (type casting) from one type into +its own type. For example, if you assign an integer to a variable that has a +floating-point type, it converts the value instead of giving a compiler error: + +```mojo +var number: Float64 = 1 +``` + +```output +1 +``` + +As shown above, value assignment can be converted into a constructor call if the +target type has a constructor that takes a single argument that matches the +value being assigned. So, this code uses the `Float64` constructor that takes an +integer: `__init__(out self, value: Int)`. + +In general, implicit conversions should only be supported where the conversion +is lossless. + +Implicit conversion follows the logic of [overloaded +functions](/mojo/manual/functions#overloaded-functions). If the destination +type has a single-argument constructor that takes an argument of the source +type, it can be invoked for implicit conversion. + +So assigning an integer to a `Float64` variable is exactly the same as this: + +```mojo +var number = Float64(1) +``` + +Similarly, if you call a function that requires an argument of a certain type +(such as `Float64`), you can pass in any value as long as that value type can +implicitly convert to the required type (using one of the type's overloaded +constructors). + +For example, you can pass an `Int` to a function that expects a `Float64`, +because `Float64` includes a constructor that takes an `Int`: + +```mojo +fn take_float(value: Float64): + print(value) + +fn pass_integer(): + var value: Int = 1 + take_float(value) +``` + +For more details on implicit conversion, see +[Constructors and implicit +conversion](/mojo/manual/lifecycle/life/#constructors-and-implicit-conversion). + +## Variable scopes + +Variables declared with `var` are bound by *lexical scoping*. This +means that nested code blocks can read and modify variables defined in an +outer scope. But an outer scope **cannot** read variables defined in an +inner scope at all. + +For example, the `if` code block shown here creates an inner scope where outer +variables are accessible to read/write, but any new variables do not live +beyond the scope of the `if` block: + +```mojo +def lexical_scopes(): + var num = 1 + var dig = 1 + if num == 1: + print("num:", num) # Reads the outer-scope "num" + var num = 2 # Creates new inner-scope "num" + print("num:", num) # Reads the inner-scope "num" + dig = 2 # Updates the outer-scope "dig" + print("num:", num) # Reads the outer-scope "num" + print("dig:", dig) # Reads the outer-scope "dig" + +lexical_scopes() +``` + +```output +num: 1 +num: 2 +num: 1 +dig: 2 +``` + +Note that the `var` statement inside the `if` creates a **new** variable with the same name as the outer variable. This prevents the inner loop from accessing the outer `num` variable. (This is called "variable shadowing," where the inner scope variable hides or "shadows" a variable from an outer scope.) + +The lifetime of the inner `num` ends exactly where the `if` code block ends, +because that's the scope in which the variable was defined. + +This is in contrast to implicitly-declared variables (those without the `var` +keyword), which use **function-level scoping** (consistent with Python variable +behavior). That means, when you change the value of an implicitly-declared +variable inside the `if` block, it actually changes the value for the entire +function. + +For example, here's the same code but *without* the `var` declarations: + +```mojo +def function_scopes(): + num = 1 + if num == 1: + print(num) # Reads the function-scope "num" + num = 2 # Updates the function-scope variable + print(num) # Reads the function-scope "num" + print(num) # Reads the function-scope "num" + +function_scopes() +``` + +```output +1 +2 +2 +``` + +Now, the last `print()` function sees the updated `num` value from the inner +scope, because implicitly-declared variables (Python-style variables) use function-level +scope (instead of lexical scope). diff --git a/docs/tools/debugging.ipynb b/docs/tools/debugging.ipynb deleted file mode 100644 index c84408c1dd..0000000000 --- a/docs/tools/debugging.ipynb +++ /dev/null @@ -1,637 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": { - "vscode": { - "languageId": "raw" - } - }, - "source": [ - "---\n", - "title: Debugging\n", - "sidebar_position: 1\n", - "description: Debugging Mojo programs.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The Mojo extension for Visual Studio Code enables you to use VS Code's built-in\n", - "debugger with Mojo programs. (The Mojo extension also supports debugging C, C++,\n", - "and Objective-C.)\n", - "\n", - "For complete coverage of VS Code's debugging features, see\n", - "[Debugging in Visual Studio Code](https://code.visualstudio.com/docs/editor/debugging).\n", - "\n", - "This page describes the features available through the Mojo extension, as well\n", - "as current limitations of the Mojo debugger.\n", - "\n", - "The Mojo SDK includes the [LLDB debugger](https://lldb.llvm.org/) and a Mojo\n", - "LLDB plugin. Together these provide the low-level debugging interface for the\n", - "Mojo extension. You can also use the `mojo debug` command to start a \n", - "command-line debugging session using LLDB or to launch a Mojo debugging session\n", - "in VS Code.\n", - "\n", - "## Start debugging\n", - "\n", - "There are several ways to start a debug session in VS Code.\n", - "\n", - "To start debugging, you'll need to have a Mojo project to debug. There are\n", - "a number of examples ranging from simple to complex in the [Mojo repo on\n", - "GitHub](https://github.com/modularml/mojo).\n", - "\n", - ":::note **VS Code veteran?**\n", - "\n", - "If you're already familiar with debugging in VS Code, the\n", - "material in this section will mostly be review. You might want to skip ahead to\n", - "[Launch configurations](#launch-configurations)\n", - "or see [Using the debugger](#using-the-debugger) for notes on the features\n", - "supported in the Mojo debugger. \n", - "\n", - ":::\n", - "\n", - "### Quick run or debug\n", - "\n", - "If your active editor tab contains a Mojo file with an `fn main()` entry point,\n", - "one of the quickest ways to run or debug it is using the **Run or Debug** button\n", - "in the Editor toolbar.\n", - "\n", - "![](images/quick-run-or-debug-button.png)\n", - "\n", - "To start debugging the current file:\n", - "\n", - "- Open the **Run or Debug** dropdown menu and choose **Debug Mojo File** or\n", - "**Debug Mojo File in Dedicated Terminal**.\n", - "\n", - " ![](images/quick-run-or-debug-menu.png)\n", - "\n", - "The two debug configurations differ in how they handle input and output:\n", - "\n", - "* **Debug Mojo File** launches the Mojo program detached from any terminal.\n", - "Standard output and standard error output for the program are displayed in the\n", - "**Debug Console**. You can't write to the program's standard input, but you can\n", - "see the program's output and interact with the debugger in a single location.\n", - "\n", - "* **Debug Mojo File in Dedicated Terminal** creates a new instance of VS Code's\n", - "integrated terminal and attaches the program's input and output to the terminal.\n", - "This lets you interact with the program's standard input, standard output and\n", - "standard error output in the terminal, while the **Debug Console** is used only\n", - "for interactions with the debugger.\n", - "\n", - "The **Run or Debug** button uses predefined launch configurations. There's\n", - "currently no way to modify the `args`, `env`, `cwd` or other settings for\n", - "programs launched with the **Run or Debug** configurations. If you need to\n", - "customize any of these things, see [Edit launch\n", - "configurations](#edit-launch-configurations).\n", - "\n", - "After you choose one of the debug configurations, the button updates to show\n", - "the debug symbol. Click the button to re-run the previous configuration.\n", - "\n", - "![](images/quick-run-or-debug-button-debug.png)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "### Run and Debug view\n", - "\n", - "The **Run and Debug** view includes a button to launch debug sessions and a\n", - "menu to select debug configurations. It also has areas to display current\n", - "variables, watch expressions, the current call stack, and breakpoints.\n", - "\n", - "
\n", - "\n", - "![](images/run-and-debug-view.png)\n", - "\n", - "
Figure 1. Run and Debug view
\n", - "
\n", - "\n", - "To open **Run and Debug** view, click the **Run and Debug** icon in the\n", - "**Activity Bar** (on the left side of the VS Code window) or press\n", - "Control+Shift+D \n", - "(Command+Shift+D on macOS).\n", - "\n", - "![](images/run-and-debug-icon.png)\n", - "\n", - "If you haven't created any launch configurations in the current project,\n", - "VS Code shows the **Run start view**.\n", - "\n", - "
\n", - "\n", - "![](images/run-start-view.png)\n", - "\n", - "
Figure 2. Run start view
\n", - "
\n", - "\n", - "If you've already launched a debug session or created a `launch.json` file to\n", - "define launch configurations, you'll see the **Launch configurations** menu,\n", - "which lets you choose configurations and start debug sessions:\n", - "\n", - "
\n", - "\n", - "![](images/launch-configuration-menu.png)\n", - "\n", - "
Figure 3. Launch configurations menu
\n", - "
\n", - "\n", - "### Other ways to start a debug session\n", - "\n", - "There are a number of other ways to start a debug session.\n", - "\n", - "#### Launching from the Command Palette\n", - "\n", - "If you have a Mojo file open in your active editor, you can also start a debug\n", - "session from the **Command Palette**.\n", - "\n", - "1. Click **View** > **Command Palette** or press Control+Shift+P\n", - "(Command+Shift+P on macOS). \n", - "\n", - "2. Enter \"Mojo\" at the prompt to bring up the Mojo commands. You should see the\n", - "same debug configurations described in [Quick run or\n", - "debug](#quick-run-or-debug).\n", - "\n", - "#### Launch from the File Explorer\n", - "\n", - "To launch a debug session from the the **File Explorer** view:\n", - "\n", - "1. Right-click on a Mojo file.\n", - "2. Select a Mojo debug configuration.\n", - "\n", - "You should see the same debug configurations described in [Quick run or\n", - "debug](#quick-run-or-debug). \n", - "\n", - "#### Debug with F5\n", - "\n", - "Press F5 to start a debug session using the current debug configuration.\n", - "\n", - "If you don't have any existing debug configurations available to select, and\n", - "your active editor contains a Mojo file with an `fn main()` entry point,\n", - "pressing F5 will launch and debug the current file using the **Debug Mojo\n", - "File** action described in [Quick run or debug](#quick-run-or-debug)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Starting the debugger from the command line\n", - "\n", - "Use the `mojo debug` command to start a debug session from the command line. You\n", - "can choose from two debugging interfaces:\n", - "\n", - "- With the `--vscode` flag, `mojo debug` starts a debug session on VS Code if\n", - " it's running and the Mojo extension is enabled.\n", - "\n", - "- Without the `--vscode` flag, `mojo debug` starts a command-line [LLDB \n", - " debugger](https://lldb.llvm.org/) session.\n", - "\n", - "You can choose to build and debug a Mojo file, run and debug a compiled binary,\n", - "or to attach the debugger to a running process.\n", - "\n", - ":::note Environment variables\n", - "\n", - "When you debug a program from the command line using `--vscode`, the program runs\n", - "with the environment variables set in the terminal. When launching from inside\n", - "VS Code via the GUI, the environment is defined by the VS Code [launch \n", - "configuration](#launch-configurations).\n", - "\n", - ":::\n", - "\n", - "For a full list of command-line options, see the [`mojo debug` reference\n", - "page](/mojo/cli/debug).\n", - "\n", - "### Start a debug session from the command line\n", - "\n", - "With VS Code open, run the following command (either from VS Code's integrated\n", - "terminal or an external shell):\n", - "\n", - "```bash\n", - "mojo debug --vscode myproject.mojo\n", - "```\n", - "\n", - "Or to debug a compiled binary:\n", - "\n", - "```bash\n", - "mojo debug --vscode myproject\n", - "```\n", - "\n", - "\n", - "For best results, build with the `-O0 -g` command-line options when you build a\n", - "binary that you intend to debug—this produces a binary with full debug info.\n", - "(When you call `mojo debug` on a Mojo source file, it includes debug\n", - "information by default.) See the [`mojo build` reference page](/mojo/cli/build)\n", - "for details on compilation options.\n", - "\n", - "### Attach the debugger to a running process from the command line\n", - "\n", - "You can also attach the debugger to a running process by specifying either the\n", - "process ID or process name on the command line:\n", - "\n", - "```bash\n", - "mojo debug --vscode --pid \n", - "```\n", - "\n", - "Or:\n", - "\n", - "```bash\n", - "mojo debug --vscode --process-name \n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Launch configurations\n", - "\n", - "VS Code _launch configurations_ let you define setup information for debugging\n", - "your applications.\n", - "\n", - "The Mojo debugger provides the following launch configuration templates:\n", - "\n", - "* Debug current Mojo file. Launches and debugs the Mojo file in the active\n", - "editor tab. Effectively the same as the **Debug Mojo File** action described in\n", - "[Quick run or debug](#quick-run-or-debug), but with more configuration options.\n", - "\n", - "* Debug Mojo file. Like the previous entry, except that it identifies a\n", - "specific file to launch and debug, no matter what file is displayed in the\n", - "active editor.\n", - "\n", - "* Debug binary. This configuration operates on a prebuilt binary, which could\n", - "be written in any mixture of languages supported by LLDB (Mojo, C, C++, etc.).\n", - "You need to set the `program` field to the path of your binary. \n", - "\n", - "* Attach to process. Launches a debug session attached to a running process. On\n", - "launch, you choose the process you want to debug from a list of running\n", - "processes.\n", - "\n", - "You can edit any of these templates to customize them. All VS Code launch\n", - "configurations must contain the following attributes:\n", - "\n", - "- `name`. The name of the launch configuration, which shows up in the UI (for\n", - " example, \"Run current Mojo file\").\n", - "- `request`. Can be either `launch` (to run a program from VS Code) or `attach` \n", - " (to attach to and debug a running file). \n", - "- `type`. Use `mojo-lldb` for the Mojo debugger.\n", - "\n", - "In addition, Mojo launch configurations can contain the following attributes:\n", - "\n", - "- `args`. Any command-line arguments to be passed to the program.\n", - "- `cwd`. The current working directory to run the program in.\n", - "- `description`. A longer description of the configuration, not shown in the UI.\n", - "- `env`. Environment variables to be set before running the program.\n", - "- `mojoFile`. Path to a Mojo file to launch and debug.\n", - "- `pid`. Process ID of the running process to attach to.\n", - "- `program`. Path to a compiled binary to launch and debug, or the \n", - " program to attach to.\n", - "- `runInTerminal`. True to run the program with a dedicated terminal, which\n", - " allows the program to receive standard input from the terminal. False to run\n", - " the program with its output directed to the **Debug Console**.\n", - "\n", - "If configuration is a `launch` request, the configuration must include either\n", - "the `mojoFile` or `program` attribute.\n", - "\n", - "For `attach` requests, the configuration must include either the `pid` or \n", - "`program` attribute.\n", - "\n", - "VS Code performs variable substitution on the launch configurations. You can\n", - "use `${workspaceFolder}` to substitute the path to the current workspace, and\n", - "`${file}` to represent the file in the active editor tab. For a complete list\n", - "of variables, see the VS Code [Variables\n", - "reference](https://code.visualstudio.com/docs/editor/variables-reference).\n", - "\n", - "For more information, see the VS Code documentation for [Launch \n", - "configurations](https://code.visualstudio.com/docs/editor/debugging#_launch-configurations).\n", - "\n", - ":::note Compilation options\n", - "\n", - "Mojo launch configurations don't allow you to specify compilation options. If\n", - "you need to specify compilation options, you can build the binary using [`mojo\n", - "build`](/mojo/cli/build), then use a launch configuration with the `program`\n", - "option to launch the compiled binary. Or if you [start the debugger from the\n", - "command line](#starting-the-debugger-from-the-command-line), you can pass\n", - "compilation options to the `mojo debug` command.\n", - "\n", - ":::\n", - "\n", - "### Edit launch configurations\n", - "\n", - "To edit launch configurations:\n", - "\n", - "1. If the **Run and Debug** view isn't already open, click the **Run and\n", - "Debug** icon in the **Activity Bar** (on the left side of the VS Code window)\n", - "or press Control+Shift+D (Command+Shift+D on macOS).\n", - "\n", - " ![](images/run-and-debug-icon.png)\n", - " \n", - "1. Create or open the `launch.json` file:\n", - " 1. If you see the **Run start view**, click **create a launch.json file**.\n", - " 1. If you already have launch configurations set up, click the gear icon\n", - " next to the **Launch configurations** menu.\n", - " ![](images/launch-configuration-menu.png)\n", - "1. Select **Mojo** from the list of debuggers.\n", - "\n", - "VS Code opens the new `launch.json` file in an editor tab, with templates for\n", - "some common debug actions. Click **Add configuration** to add a new\n", - "configuration template. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Using the debugger\n", - "\n", - "When a debug session is running, use the debug toolbar to pause, continue, and\n", - "step through the program.\n", - "\n", - "![](images/debug-toolbar.png)\n", - "\n", - "The buttons on the toolbar are:\n", - "\n", - "- **Continue/Pause**: If the program is stopped, resume the normal execution of the\n", - "program up to the next breakpoint, signal or crash. Otherwise, pause all the\n", - "threads of the program at once.\n", - "\n", - "- **Step Over**: Execute the next line of code without stopping at function calls.\n", - "\n", - "- **Step Into**: Execute the next line of code and stop at the first function call. If the program is stopped just before a function call, steps into the function so you can step through it line-by-line.\n", - "\n", - "- **Step Out**: Finish the execution of the current function and stop right after\n", - "returning to the parent function. \n", - "\n", - "- **Restart**: If this is a `launch` session, terminate the current program and\n", - "restart the debug session. Otherwise, detach from the target process and\n", - "reattach to it. \n", - "\n", - "- **Stop**: If this is a `launch` session, terminate the current program. Otherwise,\n", - "detach from the target process without killing it.\n", - "\n", - "The debugger currently has the following limitations:\n", - "\n", - "- No support for breaking automatically on Mojo errors.\n", - "\n", - "- When stepping out of a function, the returned value is not displayed.\n", - "\n", - "- LLDB doesn’t support stopping or resuming individual threads." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Breakpoints\n", - "\n", - "The Mojo debugger supports setting [standard \n", - "breakpoints](https://code.visualstudio.com/docs/editor/debugging#_breakpoints),\n", - "[logpoints](https://code.visualstudio.com/docs/editor/debugging#_logpoints),\n", - "[function breakpoints](https://code.visualstudio.com/docs/editor/debugging#_function-breakpoints),\n", - "[data breakpoints](https://code.visualstudio.com/docs/editor/debugging#_data-breakpoints),\n", - "and [triggered breakpoints](https://code.visualstudio.com/docs/editor/debugging#_triggered-breakpoints), \n", - "as described in the VS Code documentation.\n", - "The Mojo debugger also supports _error breakpoints_ (also known as \"break on\n", - "raise\"), which break whenever a `raise` statement is executed.\n", - "\n", - "When debugging Mojo code, the debugger doesn't support conditional breakpoints\n", - " based on an expression (it does \n", - "support hit counts, which VS Code classifies as a kind of conditional \n", - "breakpoint).\n", - "\n", - "When editing a breakpoint, you're offered four options:\n", - "\n", - "- **Expression**. Set a conditional breakpoint (not currently supported).\n", - "- **Hit Count**. Add a hit count to a breakpoint (supported).\n", - "- **Log Message**. Add a logpoint (supported)\n", - "- **Wait for Breakpoint**. Add a triggered breakpoint (supported).\n", - "\n", - "#### Set a hit count breakpoint\n", - "\n", - "A hit count breakpoint is a breakpoint that only breaks execution after the\n", - "debugger hits it a specified number of times.\n", - "\n", - "To add a hit count breakpoint:\n", - "\n", - "1. Right click in the left gutter of the editor where you want to place the \n", - " breakpoint, and select **Add Conditional Breakpoint.**\n", - "2. Select **Hit Count** from the menu and enter the desired hit count.\n", - "\n", - "To change an existing breakpoint to a hit count breakpoint:\n", - "\n", - "1. Right click on the breakpoint in the left gutter of the editor and select\n", - " **Edit breakpoint**.\n", - "2. Select **Hit Count** from the menu and enter the desired hit count.\n", - "\n", - "You can also edit a breakpoint from the **Breakpoints** section of the **Run and\n", - "Debug** view:\n", - "\n", - "- Right-click on the breakpoint and select **Edit Condition**, or,\n", - "- Click the **Edit Condition** icon next to the breakpoint.\n", - "\n", - "This brings up the same menu, **next to the breakpoint in the editor tab**.\n", - "\n", - "#### Enable error breakpoints\n", - "\n", - "You can enable and disable error breakpoints in VS Code by selecting \"Mojo\n", - "Raise\" in the **Breakpoints** section of the **Run and Debug** view. If enabled\n", - "during debugging, executing a `raise` statement causes the debugger to stop\n", - "execution and highlight the line of code where the error was raised.\n", - "\n", - "![VS Code window showing a program paused in the debugger with the Run and Debug view visible. The program is paused at a raise statement.](images/break-on-raise.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### View local variables\n", - "\n", - "When a program is paused in the debugger, the editor shows local variable values\n", - "inline. You can also find them in the **Variables** section of the **Run and\n", - "Debug** view.\n", - "\n", - "
\n", - "\n", - "![VS Code window showing a program paused in the debugger, with the variables sections of the Run and Debug view visible. The edit shows three functions (nested2, nested1, and main). The program is paused at a breakpoint in nested2.](images/debugger-variables.png)\n", - "\n", - "
Figure 4. Local variable values displayed in the debugger
\n", - "
\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### View the call stack\n", - "\n", - "When a program is paused in the debugger, the **Run and Debug** view shows the\n", - "current call stack. (You may see multiple call stacks, one for each active\n", - "thread in the program.)\n", - "\n", - "
\n", - "\n", - "![VS Code window showing a program paused in the debugger, with the call stack and variables sections of the Run and Debug view visible. The call stack shows three functions (nested2, nested1, and main). The program is paused at a breakpoint in nested2; the parent function nested1 is selected in the call stack, and editor highlights the current line in nested1 (the call to nested2()).](images/debugger-call-stack-nested1.png)\n", - "\n", - "
Figure 5. Call stack in Run and Debug view
\n", - "
\n", - "\n", - "The **Call Stack** section of the Run and Debug view shows a stack frame for\n", - "each function call in the current call stack. Clicking on the name of the\n", - "function highlights the current line in that function. For example, in Figure\n", - "5, the program is paused at a breakpoint in `nested2()`, but the parent\n", - "function, `nested1()` is selected in the call stack. The editor highlights the\n", - "current line in `nested1()` (that is, the call to `nested2()`) and shows the\n", - "current local variable values for `nested1()`." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Use the Debug Console\n", - "\n", - "The **Debug Console** gives you a command-line interface to the debugger. The \n", - "**Debug Console** processes LLDB commands and Mojo expressions.\n", - "\n", - "Anything prefixed with a colon (`:`) is treated as an LLDB command. Any other\n", - "input is treated as an expression.\n", - "\n", - "Currently Mojo expressions are limited to inspecting variables and their fields.\n", - "The console also supports subscript notation (`vector[index]`) for certain data\n", - "structures in the standard library, including `List`, `SIMD`,\n", - "and `ListLiteral`. \n", - "\n", - "In the future, we intend to provide a way for arbitrary data structures to\n", - "support subscript notation in the **Debug Console**.\n", - "\n", - ":::note \n", - "\n", - "The **Debug Console** only accepts input when the program is paused.\n", - "\n", - ":::" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Tips and tricks\n", - "\n", - " There are several features in the standard library that aren't directly related\n", - " to the debugger, but which can help you debug your programs. These include:\n", - "\n", - " * Programmatic breakpoints.\n", - " * Setting parameters from the Mojo command line.\n", - "\n", - " ### Set a programmatic breakpoint\n", - "\n", - " To break at a specific point in your code, you can use the built-in\n", - " [`breakpoint()`](/mojo/stdlib/builtin/breakpoint/breakpoint) function:\n", - "\n", - " ```mojo\n", - "if some_value.is_valid():\n", - " do_the_right_thing()\n", - "else:\n", - " # We should never get here!\n", - " breakpoint()\n", - "```\n", - "\n", - "If you have VS Code open and run this code in debug mode (either using VS Code\n", - "or `mojo debug`), hitting the `breakpoint()` call causes an error, which\n", - "triggers the debugger.\n", - "\n", - ":::note Assertions\n", - "\n", - "The [`testing`](/mojo/stdlib/testing/testing/) module includes a number of \n", - "ways to specify assertions. Assertions also trigger an error, so can open the \n", - "debugger in the same way that a `breakpoint()` call will.\n", - "\n", - ":::\n", - "\n", - "### Set parameters from the Mojo command line\n", - "\n", - "You can use the [`param_env`](/mojo/stdlib/sys/param_env/) module to retrieve\n", - "parameter values specified on the Mojo command line. Among other things, this\n", - "is an easy way to switch debugging logic on and off. For example:\n", - "\n", - "```mojo\n", - "from param_env import is_defined\n", - "\n", - "def some_function_with_issues():\n", - " # ...\n", - " @parameter\n", - " if is_defined[\"DEBUG_ME\"]():\n", - " breakpoint()\n", - "```\n", - "\n", - "To activate this code, use the [`-D` command-line\n", - "option](/mojo/cli/debug#compilation-options) to define `DEBUG_ME`:\n", - "\n", - "```bash\n", - "mojo debug -D DEBUG_ME main.mojo\n", - "```\n", - "\n", - "The `is_defined()` function returns a compile-time true or false value based on\n", - "whether the specified name is defined. Since the `breakpoint()` call is inside a\n", - "[parametric `if` statement](/mojo/manual/decorators/parameter#parametric-if-statement),\n", - "it is only included in the compiled code when the `DEBUG_ME` name is defined on\n", - "the command line." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Troubleshooting\n", - "\n", - "### `error: can't connect to the RPC debug server socket`\n", - "\n", - "If using `mojo debug --rpc` gives you the message `error: can't connect to the RPC debug server socket: Connection refused`, try the following possible fixes:\n", - "\n", - " * Make sure VS Code is open.\n", - " * If VS Code is already open, try restarting VS Code.\n", - " * If there are other VS Code windows open, try closing them and then restarting. This error can sometimes occur when multiple windows have opened and closed in certain orders.\n", - "\n", - "### `error: couldn't get a valid response from the RPC server`\n", - "\n", - "If using `mojo debug --rpc` gives you the message `error: couldn't get a valid response from the RPC server`, try the following possible fixes:\n", - "\n", - " * Make sure VS Code is open to a valid Mojo codebase. This error can sometimes happen if the VS Code window is open to some other codebase.\n", - " * If there are multiple VS Code windows open, try closing all but the one you wish to debug in.\n", - " * Restart VS Code.\n", - " * Reinstall the SDK and restart VSCode.\n", - " * If you are working on a development version of the SDK, make sure that all SDK tools are properly built with your build system, and then reload VSCode.\n", - " * As a last resort, restarting your entire computer can fix this problem.\n", - "\n", - "If these steps don't help, please file an issue. We'd love your help identifying possible causes and fixes!" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/tools/debugging.mdx b/docs/tools/debugging.mdx new file mode 100644 index 0000000000..8631b5cc71 --- /dev/null +++ b/docs/tools/debugging.mdx @@ -0,0 +1,543 @@ +--- +title: Debugging +sidebar_position: 1 +description: Debugging Mojo programs. +--- + +The Mojo extension for Visual Studio Code enables you to use VS Code's built-in +debugger with Mojo programs. (The Mojo extension also supports debugging C, C++, +and Objective-C.) + +For complete coverage of VS Code's debugging features, see +[Debugging in Visual Studio Code](https://code.visualstudio.com/docs/editor/debugging). + +This page describes the features available through the Mojo extension, as well +as current limitations of the Mojo debugger. + +The Mojo SDK includes the [LLDB debugger](https://lldb.llvm.org/) and a Mojo +LLDB plugin. Together these provide the low-level debugging interface for the +Mojo extension. You can also use the `mojo debug` command to start a +command-line debugging session using LLDB or to launch a Mojo debugging session +in VS Code. + +## Start debugging + +There are several ways to start a debug session in VS Code. + +To start debugging, you'll need to have a Mojo project to debug. There are +a number of examples ranging from simple to complex in the [Mojo repo on +GitHub](https://github.com/modularml/mojo). + +:::note **VS Code veteran?** + +If you're already familiar with debugging in VS Code, the +material in this section will mostly be review. You might want to skip ahead to +[Launch configurations](#launch-configurations) +or see [Using the debugger](#using-the-debugger) for notes on the features +supported in the Mojo debugger. + +::: + +### Quick run or debug + +If your active editor tab contains a Mojo file with an `fn main()` entry point, +one of the quickest ways to run or debug it is using the **Run or Debug** button +in the Editor toolbar. + +![](images/quick-run-or-debug-button.png) + +To start debugging the current file: + +* Open the **Run or Debug** dropdown menu and choose **Debug Mojo File** or + **Debug Mojo File in Dedicated Terminal**. + + ![](images/quick-run-or-debug-menu.png) + +The two debug configurations differ in how they handle input and output: + +* **Debug Mojo File** launches the Mojo program detached from any terminal. + Standard output and standard error output for the program are displayed in the + **Debug Console**. You can't write to the program's standard input, but you can + see the program's output and interact with the debugger in a single location. + +* **Debug Mojo File in Dedicated Terminal** creates a new instance of VS Code's + integrated terminal and attaches the program's input and output to the terminal. + This lets you interact with the program's standard input, standard output and + standard error output in the terminal, while the **Debug Console** is used only + for interactions with the debugger. + +The **Run or Debug** button uses predefined launch configurations. There's +currently no way to modify the `args`, `env`, `cwd` or other settings for +programs launched with the **Run or Debug** configurations. If you need to +customize any of these things, see [Edit launch +configurations](#edit-launch-configurations). + +After you choose one of the debug configurations, the button updates to show +the debug symbol. Click the button to re-run the previous configuration. + +![](images/quick-run-or-debug-button-debug.png). + +### Run and Debug view + +The **Run and Debug** view includes a button to launch debug sessions and a +menu to select debug configurations. It also has areas to display current +variables, watch expressions, the current call stack, and breakpoints. + +
+ +![](images/run-and-debug-view.png) + +
Figure 1. Run and Debug view
+
+ +To open **Run and Debug** view, click the **Run and Debug** icon in the +**Activity Bar** (on the left side of the VS Code window) or press Control+Shift+D +(Command+Shift+D on macOS). + +![](images/run-and-debug-icon.png) + +If you haven't created any launch configurations in the current project, +VS Code shows the **Run start view**. + +
+ +![](images/run-start-view.png) + +
Figure 2. Run start view
+
+ +If you've already launched a debug session or created a `launch.json` file to +define launch configurations, you'll see the **Launch configurations** menu, +which lets you choose configurations and start debug sessions: + +
+ +![](images/launch-configuration-menu.png) + +
Figure 3. Launch configurations menu
+
+ +### Other ways to start a debug session + +There are a number of other ways to start a debug session. + +#### Launching from the Command Palette + +If you have a Mojo file open in your active editor, you can also start a debug +session from the **Command Palette**. + +1. Click **View** > **Command Palette** or press Control+Shift+P + (Command+Shift+P on macOS). + +2. Enter "Mojo" at the prompt to bring up the Mojo commands. You should see the + same debug configurations described in [Quick run or + debug](#quick-run-or-debug). + +#### Launch from the File Explorer + +To launch a debug session from the the **File Explorer** view: + +1. Right-click on a Mojo file. +2. Select a Mojo debug configuration. + +You should see the same debug configurations described in [Quick run or +debug](#quick-run-or-debug). + +#### Debug with F5 + +Press F5 to start a debug session using the current debug configuration. + +If you don't have any existing debug configurations available to select, and +your active editor contains a Mojo file with an `fn main()` entry point, +pressing F5 will launch and debug the current file using the **Debug Mojo +File** action described in [Quick run or debug](#quick-run-or-debug). + +## Starting the debugger from the command line + +Use the `mojo debug` command to start a debug session from the command line. You +can choose from two debugging interfaces: + +* With the `--vscode` flag, `mojo debug` starts a debug session on VS Code if + it's running and the Mojo extension is enabled. + +* Without the `--vscode` flag, `mojo debug` starts a command-line [LLDB + debugger](https://lldb.llvm.org/) session. + +You can choose to build and debug a Mojo file, run and debug a compiled binary, +or to attach the debugger to a running process. + +:::note Environment variables + +When you debug a program from the command line using `--vscode`, the program runs +with the environment variables set in the terminal. When launching from inside +VS Code via the GUI, the environment is defined by the VS Code [launch +configuration](#launch-configurations). + +::: + +For a full list of command-line options, see the [`mojo debug` reference +page](/mojo/cli/debug). + +### Start a debug session from the command line + +With VS Code open, run the following command (either from VS Code's integrated +terminal or an external shell): + +```bash +mojo debug --vscode myproject.mojo +``` + +Or to debug a compiled binary: + +```bash +mojo debug --vscode myproject +``` + +For best results, build with the `-O0 -g` command-line options when you build a +binary that you intend to debug—this produces a binary with full debug info. +(When you call `mojo debug` on a Mojo source file, it includes debug +information by default.) See the [`mojo build` reference page](/mojo/cli/build) +for details on compilation options. + +### Attach the debugger to a running process from the command line + +You can also attach the debugger to a running process by specifying either the +process ID or process name on the command line: + +```bash +mojo debug --vscode --pid +``` + +Or: + +```bash +mojo debug --vscode --process-name +``` + +## Launch configurations + +VS Code *launch configurations* let you define setup information for debugging +your applications. + +The Mojo debugger provides the following launch configuration templates: + +* Debug current Mojo file. Launches and debugs the Mojo file in the active + editor tab. Effectively the same as the **Debug Mojo File** action described in + [Quick run or debug](#quick-run-or-debug), but with more configuration options. + +* Debug Mojo file. Like the previous entry, except that it identifies a + specific file to launch and debug, no matter what file is displayed in the + active editor. + +* Debug binary. This configuration operates on a prebuilt binary, which could + be written in any mixture of languages supported by LLDB (Mojo, C, C++, etc.). + You need to set the `program` field to the path of your binary. + +* Attach to process. Launches a debug session attached to a running process. On + launch, you choose the process you want to debug from a list of running + processes. + +You can edit any of these templates to customize them. All VS Code launch +configurations must contain the following attributes: + +* `name`. The name of the launch configuration, which shows up in the UI (for + example, "Run current Mojo file"). +* `request`. Can be either `launch` (to run a program from VS Code) or `attach` + (to attach to and debug a running file). +* `type`. Use `mojo-lldb` for the Mojo debugger. + +In addition, Mojo launch configurations can contain the following attributes: + +* `args`. Any command-line arguments to be passed to the program. +* `cwd`. The current working directory to run the program in. +* `description`. A longer description of the configuration, not shown in the UI. +* `env`. Environment variables to be set before running the program. +* `mojoFile`. Path to a Mojo file to launch and debug. +* `pid`. Process ID of the running process to attach to. +* `program`. Path to a compiled binary to launch and debug, or the + program to attach to. +* `runInTerminal`. True to run the program with a dedicated terminal, which + allows the program to receive standard input from the terminal. False to run + the program with its output directed to the **Debug Console**. + +If configuration is a `launch` request, the configuration must include either +the `mojoFile` or `program` attribute. + +For `attach` requests, the configuration must include either the `pid` or +`program` attribute. + +VS Code performs variable substitution on the launch configurations. You can +use `${workspaceFolder}` to substitute the path to the current workspace, and +`${file}` to represent the file in the active editor tab. For a complete list +of variables, see the VS Code [Variables +reference](https://code.visualstudio.com/docs/editor/variables-reference). + +For more information, see the VS Code documentation for [Launch +configurations](https://code.visualstudio.com/docs/editor/debugging#_launch-configurations). + +:::note Compilation options + +Mojo launch configurations don't allow you to specify compilation options. If +you need to specify compilation options, you can build the binary using [`mojo +build`](/mojo/cli/build), then use a launch configuration with the `program` +option to launch the compiled binary. Or if you [start the debugger from the +command line](#starting-the-debugger-from-the-command-line), you can pass +compilation options to the `mojo debug` command. + +::: + +### Edit launch configurations + +To edit launch configurations: + +1. If the **Run and Debug** view isn't already open, click the **Run and + Debug** icon in the **Activity Bar** (on the left side of the VS Code window) + or press Control+Shift+D (Command+Shift+D on macOS). + + ![](images/run-and-debug-icon.png) + +2. Create or open the `launch.json` file: + 1. If you see the **Run start view**, click **create a launch.json file**. + 2. If you already have launch configurations set up, click the gear icon + next to the **Launch configurations** menu. + ![](images/launch-configuration-menu.png) + +3. Select **Mojo** from the list of debuggers. + +VS Code opens the new `launch.json` file in an editor tab, with templates for +some common debug actions. Click **Add configuration** to add a new +configuration template. + +## Using the debugger + +When a debug session is running, use the debug toolbar to pause, continue, and +step through the program. + +![](images/debug-toolbar.png) + +The buttons on the toolbar are: + +* **Continue/Pause**: If the program is stopped, resume the normal execution of the + program up to the next breakpoint, signal or crash. Otherwise, pause all the + threads of the program at once. + +* **Step Over**: Execute the next line of code without stopping at function calls. + +* **Step Into**: Execute the next line of code and stop at the first function call. If the program is stopped just before a function call, steps into the function so you can step through it line-by-line. + +* **Step Out**: Finish the execution of the current function and stop right after + returning to the parent function. + +* **Restart**: If this is a `launch` session, terminate the current program and + restart the debug session. Otherwise, detach from the target process and + reattach to it. + +* **Stop**: If this is a `launch` session, terminate the current program. Otherwise, + detach from the target process without killing it. + +The debugger currently has the following limitations: + +* No support for breaking automatically on Mojo errors. + +* When stepping out of a function, the returned value is not displayed. + +* LLDB doesn’t support stopping or resuming individual threads. + +### Breakpoints + +The Mojo debugger supports setting [standard +breakpoints](https://code.visualstudio.com/docs/editor/debugging#_breakpoints), +[logpoints](https://code.visualstudio.com/docs/editor/debugging#_logpoints), +[function breakpoints](https://code.visualstudio.com/docs/editor/debugging#_function-breakpoints), +[data breakpoints](https://code.visualstudio.com/docs/editor/debugging#_data-breakpoints), +and [triggered breakpoints](https://code.visualstudio.com/docs/editor/debugging#_triggered-breakpoints), +as described in the VS Code documentation. +The Mojo debugger also supports *error breakpoints* (also known as "break on +raise"), which break whenever a `raise` statement is executed. + +When debugging Mojo code, the debugger doesn't support conditional breakpoints +based on an expression (it does +support hit counts, which VS Code classifies as a kind of conditional +breakpoint). + +When editing a breakpoint, you're offered four options: + +* **Expression**. Set a conditional breakpoint (not currently supported). +* **Hit Count**. Add a hit count to a breakpoint (supported). +* **Log Message**. Add a logpoint (supported) +* **Wait for Breakpoint**. Add a triggered breakpoint (supported). + +#### Set a hit count breakpoint + +A hit count breakpoint is a breakpoint that only breaks execution after the +debugger hits it a specified number of times. + +To add a hit count breakpoint: + +1. Right click in the left gutter of the editor where you want to place the + breakpoint, and select **Add Conditional Breakpoint.** +2. Select **Hit Count** from the menu and enter the desired hit count. + +To change an existing breakpoint to a hit count breakpoint: + +1. Right click on the breakpoint in the left gutter of the editor and select + **Edit breakpoint**. +2. Select **Hit Count** from the menu and enter the desired hit count. + +You can also edit a breakpoint from the **Breakpoints** section of the **Run and +Debug** view: + +* Right-click on the breakpoint and select **Edit Condition**, or, +* Click the **Edit Condition** icon next to the breakpoint. + +This brings up the same menu, **next to the breakpoint in the editor tab**. + +#### Enable error breakpoints + +You can enable and disable error breakpoints in VS Code by selecting "Mojo +Raise" in the **Breakpoints** section of the **Run and Debug** view. If enabled +during debugging, executing a `raise` statement causes the debugger to stop +execution and highlight the line of code where the error was raised. + +![VS Code window showing a program paused in the debugger with the Run and Debug view visible. The program is paused at a raise statement.](images/break-on-raise.png) + +### View local variables + +When a program is paused in the debugger, the editor shows local variable values +inline. You can also find them in the **Variables** section of the **Run and +Debug** view. + +
+ +![VS Code window showing a program paused in the debugger, with the variables sections of the Run and Debug view visible. The edit shows three functions (nested2, nested1, and main). The program is paused at a breakpoint in nested2.](images/debugger-variables.png) + +
Figure 4. Local variable values displayed in the debugger
+
+ +### View the call stack + +When a program is paused in the debugger, the **Run and Debug** view shows the +current call stack. (You may see multiple call stacks, one for each active +thread in the program.) + +
+ +![VS Code window showing a program paused in the debugger, with the call stack and variables sections of the Run and Debug view visible. The call stack shows three functions (nested2, nested1, and main). The program is paused at a breakpoint in nested2; the parent function nested1 is selected in the call stack, and editor highlights the current line in nested1 (the call to nested2()).](images/debugger-call-stack-nested1.png) + +
Figure 5. Call stack in Run and Debug view
+
+ +The **Call Stack** section of the Run and Debug view shows a stack frame for +each function call in the current call stack. Clicking on the name of the +function highlights the current line in that function. For example, in Figure +5, the program is paused at a breakpoint in `nested2()`, but the parent +function, `nested1()` is selected in the call stack. The editor highlights the +current line in `nested1()` (that is, the call to `nested2()`) and shows the +current local variable values for `nested1()`. + +### Use the Debug Console + +The **Debug Console** gives you a command-line interface to the debugger. The +**Debug Console** processes LLDB commands and Mojo expressions. + +Anything prefixed with a colon (`:`) is treated as an LLDB command. Any other +input is treated as an expression. + +Currently Mojo expressions are limited to inspecting variables and their fields. +The console also supports subscript notation (`vector[index]`) for certain data +structures in the standard library, including `List`, `SIMD`, +and `ListLiteral`. + +In the future, we intend to provide a way for arbitrary data structures to +support subscript notation in the **Debug Console**. + +:::note + +The **Debug Console** only accepts input when the program is paused. + +::: + +## Tips and tricks + +There are several features in the standard library that aren't directly related +to the debugger, but which can help you debug your programs. These include: + +* Programmatic breakpoints. +* Setting parameters from the Mojo command line. + +### Set a programmatic breakpoint + +To break at a specific point in your code, you can use the built-in +[`breakpoint()`](/mojo/stdlib/builtin/breakpoint/breakpoint) function: + +```mojo +if some_value.is_valid(): + do_the_right_thing() +else: + # We should never get here! + breakpoint() +``` + +If you have VS Code open and run this code in debug mode (either using VS Code +or `mojo debug`), hitting the `breakpoint()` call causes an error, which +triggers the debugger. + +:::note Assertions + +The [`testing`](/mojo/stdlib/testing/testing/) module includes a number of +ways to specify assertions. Assertions also trigger an error, so can open the +debugger in the same way that a `breakpoint()` call will. + +::: + +### Set parameters from the Mojo command line + +You can use the [`param_env`](/mojo/stdlib/sys/param_env/) module to retrieve +parameter values specified on the Mojo command line. Among other things, this +is an easy way to switch debugging logic on and off. For example: + +```mojo +from param_env import is_defined + +def some_function_with_issues(): + # ... + @parameter + if is_defined["DEBUG_ME"](): + breakpoint() +``` + +To activate this code, use the [`-D` command-line +option](/mojo/cli/debug#compilation-options) to define `DEBUG_ME`: + +```bash +mojo debug -D DEBUG_ME main.mojo +``` + +The `is_defined()` function returns a compile-time true or false value based on +whether the specified name is defined. Since the `breakpoint()` call is inside a +[parametric `if` statement](/mojo/manual/decorators/parameter#parametric-if-statement), +it is only included in the compiled code when the `DEBUG_ME` name is defined on +the command line. + +## Troubleshooting + +### `error: can't connect to the RPC debug server socket` + +If using `mojo debug --rpc` gives you the message `error: can't connect to the RPC debug server socket: Connection refused`, try the following possible fixes: + +* Make sure VS Code is open. +* If VS Code is already open, try restarting VS Code. +* If there are other VS Code windows open, try closing them and then restarting. This error can sometimes occur when multiple windows have opened and closed in certain orders. + +### `error: couldn't get a valid response from the RPC server` + +If using `mojo debug --rpc` gives you the message `error: couldn't get a valid response from the RPC server`, try the following possible fixes: + +* Make sure VS Code is open to a valid Mojo codebase. This error can sometimes happen if the VS Code window is open to some other codebase. +* If there are multiple VS Code windows open, try closing all but the one you wish to debug in. +* Restart VS Code. +* Reinstall the SDK and restart VSCode. +* If you are working on a development version of the SDK, make sure that all SDK tools are properly built with your build system, and then reload VSCode. +* As a last resort, restarting your entire computer can fix this problem. + +If these steps don't help, please file an issue. We'd love your help identifying possible causes and fixes! diff --git a/docs/tools/testing.ipynb b/docs/tools/testing.ipynb deleted file mode 100644 index be8e4a6c16..0000000000 --- a/docs/tools/testing.ipynb +++ /dev/null @@ -1,792 +0,0 @@ -{ - "cells": [ - { - "cell_type": "raw", - "metadata": {}, - "source": [ - "---\n", - "title: Testing\n", - "sidebar_position: 2\n", - "description: Testing Mojo programs.\n", - "---" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Mojo includes a framework for developing and executing unit tests. The framework\n", - "also supports testing code examples in the\n", - "[documentation strings](/mojo/manual/basics#code-comments)\n", - "(also known as *docstrings*) of your API references. The Mojo testing framework\n", - "consists of a set of assertions defined as part of the\n", - "[Mojo standard library](/mojo/lib) and the\n", - "[`mojo test`](/mojo/cli/test) command line tool.\n", - "\n", - "## Get started\n", - "\n", - "Let’s start with a simple example of writing and running Mojo tests.\n", - "\n", - "### 1. Write tests\n", - "\n", - "For your first example of using the Mojo testing framework, create a file named\n", - "`test_quickstart.mojo` containing the following code:\n", - "\n", - "```mojo\n", - "# Content of test_quickstart.mojo\n", - "from testing import assert_equal\n", - "\n", - "def inc(n: Int) -> Int:\n", - " return n + 1\n", - "\n", - "def test_inc_zero():\n", - " # This test contains an intentional logical error to show an example of\n", - " # what a test failure looks like at runtime.\n", - " assert_equal(inc(0), 0)\n", - "\n", - "def test_inc_one():\n", - " assert_equal(inc(1), 2)\n", - "```\n", - "\n", - "In this file, the `inc()` function is the test *target*. The functions whose\n", - "names begin with `test_` are the tests. Usually the target should be in a\n", - "separate source file from its tests, but you can define them in the same file\n", - "for this simple example.\n", - "\n", - "A test function *fails* if it raises an error when executed, otherwise it\n", - "*passes*. The two tests in this example use the `assert_equal()` function,\n", - "which raises an error if the two values provided are not equal.\n", - "\n", - ":::note\n", - "\n", - "The implementation of `test_inc_zero()` contains an intentional logical error\n", - "so that you can see an example of a failed test when you execute it in the\n", - "next step of this tutorial. \n", - "\n", - ":::\n", - "\n", - "### 2. Execute tests\n", - "\n", - "Then in the directory containing the file, execute the following command in your\n", - "shell:\n", - "\n", - "```bash\n", - "mojo test test_quickstart.mojo\n", - "```\n", - "\n", - "You should see output similar to this (note that this example elides the full\n", - "filesystem paths from the output shown):\n", - "\n", - "```\n", - "Testing Time: 1.193s\n", - "\n", - "Total Discovered Tests: 2\n", - "\n", - "Passed : 1 (50.00%)\n", - "Failed : 1 (50.00%)\n", - "Skipped: 0 (0.00%)\n", - "\n", - "******************** Failure: 'ROOT_DIR/test_quickstart.mojo::test_inc_zero()' ********************\n", - "\n", - "Unhandled exception caught during execution\n", - "\n", - "Error: At ROOT_DIR/test_quickstart.mojo:8:17: AssertionError: `left == right` comparison failed:\n", - " left: 1\n", - " right: 0\n", - "\n", - "********************\n", - "```\n", - "\n", - "The output starts with a summary of the number of tests discovered, passed,\n", - "failed, and skipped. Following that, each failed test is reported along with\n", - "its error message.\n", - "\n", - "### Next steps\n", - "\n", - "- [The `testing` module](#the-testing-module) describes the assertion\n", - "functions available to help implement tests.\n", - "- [Writing unit tests](#writing-unit-tests) shows how to write unit tests and\n", - "organize them into test files.\n", - "- [The `mojo test` command](#the-mojo-test-command) describes how to execute\n", - "and collect lists of tests.\n", - "- [Writing API documentation tests](#writing-api-documentation-tests)\n", - "discusses how to use the Mojo testing framework to test code examples in your\n", - "API documentation." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "\n", - "## The `testing` module\n", - "\n", - "The Mojo standard library includes a [`testing`](/mojo/stdlib/testing/testing/)\n", - "module that defines several assertion functions for implementing tests. Each\n", - "assertion returns `None` if its condition is met or raises an error if it isn’t.\n", - "\n", - "- [`assert_true()`](/mojo/stdlib/testing/testing/assert_true):\n", - "Asserts that the input value is `True`.\n", - "- [`assert_false()`](/mojo/stdlib/testing/testing/assert_false):\n", - "Asserts that the input value is `False`.\n", - "- [`assert_equal()`](/mojo/stdlib/testing/testing/assert_equal):\n", - "Asserts that the input values are equal.\n", - "- [`assert_not_equal()`](/mojo/stdlib/testing/testing/assert_not_equal):\n", - "Asserts that the input values are not equal.\n", - "- [`assert_almost_equal()`](/mojo/stdlib/testing/testing/assert_almost_equal):\n", - "Asserts that the input values are equal up to a tolerance.\n", - "\n", - "The boolean assertions report a basic error message when they fail." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unhandled exception caught during execution" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Error: At Expression [1] wrapper:14:16: AssertionError: condition was unexpectedly False\n" - ] - } - ], - "source": [ - "from testing import *\n", - "assert_true(False)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Each function also accepts an optional `msg` keyword argument for providing a\n", - "custom message to include if the assertion fails." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unhandled exception caught during execution" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Error: At Expression [2] wrapper:14:16: AssertionError: paradoxes are not allowed\n" - ] - } - ], - "source": [ - "assert_true(False, msg=\"paradoxes are not allowed\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For comparing floating point values you should use `assert_almost_equal()`,\n", - "which allows you to specify either an absolute or relative tolerance." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unhandled exception caught during execution" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Error: At Expression [3] wrapper:15:24: AssertionError: 3.3333333333333335 is not close to 3.3300000000000001 with a diff of 0.0033333333333334103 (close but no cigar)\n" - ] - } - ], - "source": [ - "result = 10 / 3\n", - "assert_almost_equal(result, 3.33, atol=0.001, msg=\"close but no cigar\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The testing module also defines a [context\n", - "manager](/mojo/manual/errors#use-a-context-manager),\n", - "[`assert_raises()`](/mojo/stdlib/testing/testing/assert_raises), to assert that\n", - "a given code block correctly raises an expected error." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unhandled exception caught during execution" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test passes because the error is raised\n", - "Test fails because the error isn't raised\n", - "Error: AssertionError: Didn't raise at Expression [4] wrapper:18:23\n" - ] - } - ], - "source": [ - "def inc(n: Int) -> Int:\n", - " if n == Int.MAX:\n", - " raise Error(\"inc overflow\")\n", - " return n + 1\n", - "\n", - "print(\"Test passes because the error is raised\")\n", - "with assert_raises():\n", - " _ = inc(Int.MAX)\n", - "\n", - "print(\"Test fails because the error isn't raised\")\n", - "with assert_raises():\n", - " _ = inc(Int.MIN)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - ":::note\n", - "\n", - "The example above assigns the return value from `inc()` to a\n", - "[*discard pattern*](/mojo/manual/lifecycle/death#explicit-lifetimes).\n", - "Without it, the Mojo compiler detects that the return value is unused and\n", - "optimizes the code to eliminate the function call.\n", - "\n", - ":::\n", - "\n", - "You can also provide an optional `contains` argument to `assert_raises()` to\n", - "indicate that the test passes only if the error message contains the substring\n", - "specified. Other errors are propagated, failing the test." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unhandled exception caught during execution" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test passes because the error contains the substring\n", - "Test fails because the error doesn't contain the substring\n", - "Error: invalid value\n" - ] - } - ], - "source": [ - "print(\"Test passes because the error contains the substring\")\n", - "with assert_raises(contains=\"required\"):\n", - " raise Error(\"missing required argument\")\n", - "\n", - "print(\"Test fails because the error doesn't contain the substring\")\n", - "with assert_raises(contains=\"required\"):\n", - " raise Error(\"invalid value\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Writing unit tests\n", - "\n", - "A Mojo unit test is simply a function that fulfills all of these requirements:\n", - "\n", - "- Has a name that starts with `test_`.\n", - "- Accepts no arguments.\n", - "- Returns either `None` or a value of type `object`.\n", - "- Raises an error to indicate test failure.\n", - "- Is defined at the module scope, not as a Mojo struct method.\n", - "\n", - "You can use either `def` or `fn` to define a test function. Because a test\n", - "function always raises an error to indicate failure, any test function defined\n", - "using `fn` must include the `raises` declaration.\n", - "\n", - "Generally, you should use the assertion utilities from the Mojo standard library\n", - "[`testing`](/mojo/stdlib/testing/testing/) module to implement your tests.\n", - "You can include multiple related assertions in the same test function. However,\n", - "if an assertion raises an error during execution then the test function returns\n", - "immediately, skipping any subsequent assertions.\n", - "\n", - "You must define your Mojo unit tests in Mojo source files named with a `test`\n", - "prefix or suffix. You can organize your test files within a directory hierarchy,\n", - "but the test files must not be part of a Mojo package (that is, the test\n", - "directories should not contain `__init__.mojo` files).\n", - "\n", - "Here is an example of a test file containing three tests for functions defined\n", - "in a source module named `my_target_module` (which is not shown here).\n", - "\n", - "```mojo\n", - "# File: test_my_target_module.mojo\n", - "\n", - "from my_target_module import convert_input, validate_input\n", - "from testing import assert_equal, assert_false, assert_raises, assert_true\n", - "\n", - "def test_validate_input():\n", - "\tassert_true(validate_input(\"good\"), msg=\"'good' should be valid input\")\n", - "\tassert_false(validate_input(\"bad\"), msg=\"'bad' should be invalid input\")\n", - "\n", - "def test_convert_input():\n", - "\tassert_equal(convert_input(\"input1\"), \"output1\")\n", - "\tassert_equal(convert_input(\"input2\"), \"output2\")\n", - "\n", - "def test_convert_input_error():\n", - "\twith assert_raises():\n", - "\t\t_ = convert_input(\"garbage\")\n", - "```\n", - "\n", - "The unique identity of a unit test consists of the path of the test file and the\n", - "name of the test function, separated by `::`. So the test IDs from the example\n", - "above are:\n", - "\n", - "- `test_my_target_module.mojo::test_validate_input()`\n", - "- `test_my_target_module.mojo::test_convert_input()`\n", - "- `test_my_target_module.mojo::test_convert_error()`" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## The `mojo test` command\n", - "\n", - "The `mojo` command line interface includes the [`mojo test`](/mojo/cli/test)\n", - "command for running tests or collecting a list of tests.\n", - "\n", - "### Running tests\n", - "\n", - "By default, the `mojo test` command runs the tests that you specify using one of\n", - "the following:\n", - "\n", - "- A single test ID with either an absolute or relative file path, to run only\n", - "that test.\n", - "- A single absolute or relative file path, to run all tests in that file.\n", - "- A single absolute or relative directory path, to recurse through that\n", - "directory hierarchy and run all tests found.\n", - "\n", - "If needed, you can optionally use the `-I` option one or more times to append\n", - "additional paths to the list of directories searched to import Mojo modules and\n", - "packages. For example, consider a project with the following directory\n", - "structure:\n", - "\n", - "```\n", - ".\n", - "├── src\n", - "│   ├── example.mojo\n", - "│   └── my_math\n", - "│   ├── __init__.mojo\n", - "│   └── utils.mojo\n", - "└── test\n", - " └── my_math\n", - " ├── test_dec.mojo\n", - " └── test_inc.mojo\n", - "```\n", - "\n", - "From the project root directory, you could execute all of the tests in the\n", - "`test` directory like this:\n", - "\n", - "```\n", - "$ mojo test -I src test\n", - "Testing Time: 3.433s\n", - "\n", - "Total Discovered Tests: 4\n", - "\n", - "Passed : 4 (100.00%)\n", - "Failed : 0 (0.00%)\n", - "Skipped: 0 (0.00%)\n", - "```\n", - "\n", - "You could run the tests contained in only the `test_dec.mojo` file like this:\n", - "\n", - "```\n", - "$ mojo test -I src test/my_math/test_dec.mojo\n", - "Testing Time: 1.175s\n", - "\n", - "Total Discovered Tests: 2\n", - "\n", - "Passed : 2 (100.00%)\n", - "Failed : 0 (0.00%)\n", - "Skipped: 0 (0.00%)\n", - "```\n", - "\n", - "And you could run a single test from a file by providing its fully qualified\n", - "ID like this:\n", - "\n", - "```\n", - "$ mojo test -I src 'test/my_math/test_dec.mojo::test_dec_valid()'\n", - "Testing Time: 0.66s\n", - "\n", - "Total Discovered Tests: 1\n", - "\n", - "Passed : 1 (100.00%)\n", - "Failed : 0 (0.00%)\n", - "Skipped: 0 (0.00%)\n", - "```\n", - "\n", - "### Collecting a list of tests\n", - "\n", - "By including the `--collect-only` or `--co` option, you can use `mojo test` to\n", - "discover and print a list of tests. \n", - "\n", - "As an example, consider the project structure shown in the\n", - "[Running tests](#running-tests) section. The following command produces a list\n", - "of all of the tests defined in the `test` directory hierarchy.\n", - "\n", - "```bash\n", - "mojo test --co test\n", - "```\n", - "\n", - "The output shows the hierarchy of directories, test files, and individual tests\n", - "(note that this example elides the full filesystem paths from the output shown):\n", - "\n", - "```\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "```\n", - "\n", - "### Producing JSON formatted output\n", - "\n", - "By default `mojo test` produces concise, human-readable output. Alternatively\n", - "you can produce JSON formatted output more suitable for input to other tools by\n", - "including the `--diagnostic-format json` option.\n", - "\n", - "For example, you could run the tests in the `test_quickstart.mojo` file shown\n", - "in the [Get started](#get-started) section with JSON formatted output using this\n", - "command:\n", - "\n", - "```bash\n", - "mojo test --diagnostic-format json test_quickstart.mojo\n", - "```\n", - "\n", - "The output shows the detailed results for each individual test and summary\n", - "results (note that this example elides the full filesystem paths from the\n", - "output shown):\n", - "\n", - "```\n", - "{\n", - " \"children\": [\n", - " {\n", - " \"duration_ms\": 60,\n", - " \"error\": \"Unhandled exception caught during execution\",\n", - " \"kind\": \"executionError\",\n", - " \"stdErr\": \"\",\n", - " \"stdOut\": \"Error: At ROOT_DIR/test_quickstart.mojo:8:17: AssertionError: `left == right` comparison failed:\\r\\n left: 1\\r\\n right: 0\\r\\n\",\n", - " \"testID\": \"ROOT_DIR/test_quickstart.mojo::test_inc_zero()\"\n", - " },\n", - " {\n", - " \"duration_ms\": 51,\n", - " \"error\": \"\",\n", - " \"kind\": \"success\",\n", - " \"stdErr\": \"\",\n", - " \"stdOut\": \"\",\n", - " \"testID\": \"ROOT_DIR/test_quickstart.mojo::test_inc_one()\"\n", - " }\n", - " ],\n", - " \"duration_ms\": 1171,\n", - " \"error\": \"\",\n", - " \"kind\": \"executionError\",\n", - " \"stdErr\": \"\",\n", - " \"stdOut\": \"\",\n", - " \"testID\": \"ROOT_DIR/test_quickstart.mojo\"\n", - "}\n", - "```\n", - "\n", - "You can also produce JSON output for test collection as well. As an example,\n", - "consider the project structure shown in the [Running tests](#running-tests)\n", - "section. The following command collects a list in JSON format of all of the\n", - "tests defined in the `test` directory hierarchy:\n", - "\n", - "```bash\n", - "mojo test --diagnostic-format json --co test\n", - "```\n", - "\n", - "The output would appear as follows (note that this example elides the full\n", - "filesystem paths from the output shown):\n", - "\n", - "```\n", - "{\n", - " \"children\": [\n", - " {\n", - " \"children\": [\n", - " {\n", - " \"id\": \"ROOT_DIR/test/my_math/test_dec.mojo::test_dec_valid()\",\n", - " \"location\": {\n", - " \"endColumn\": 5,\n", - " \"endLine\": 5,\n", - " \"startColumn\": 5,\n", - " \"startLine\": 5\n", - " }\n", - " },\n", - " {\n", - " \"id\": \"ROOT_DIR/test/my_math/test_dec.mojo::test_dec_min()\",\n", - " \"location\": {\n", - " \"endColumn\": 5,\n", - " \"endLine\": 9,\n", - " \"startColumn\": 5,\n", - " \"startLine\": 9\n", - " }\n", - " }\n", - " ],\n", - " \"id\": \"ROOT_DIR/test/my_math/test_dec.mojo\"\n", - " },\n", - " {\n", - " \"children\": [\n", - " {\n", - " \"id\": \"ROOT_DIR/test/my_math/test_inc.mojo::test_inc_valid()\",\n", - " \"location\": {\n", - " \"endColumn\": 5,\n", - " \"endLine\": 5,\n", - " \"startColumn\": 5,\n", - " \"startLine\": 5\n", - " }\n", - " },\n", - " {\n", - " \"id\": \"ROOT_DIR/test/my_math/test_inc.mojo::test_inc_max()\",\n", - " \"location\": {\n", - " \"endColumn\": 5,\n", - " \"endLine\": 9,\n", - " \"startColumn\": 5,\n", - " \"startLine\": 9\n", - " }\n", - " }\n", - " ],\n", - " \"id\": \"ROOT_DIR/test/my_math/test_inc.mojo\"\n", - " }\n", - " ],\n", - " \"id\": \"ROOT_DIR/test/my_math\"\n", - "}\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Writing API documentation tests\n", - "\n", - "The Mojo testing framework also supports testing code examples that you include\n", - "in [docstrings](/mojo/manual/basics#code-comments). This helps to ensure that\n", - "the code examples in your API documentation are correct and up to date.\n", - "\n", - "### Identifying executable code\n", - "\n", - "The Mojo testing framework requires you to explicitly identify the code blocks\n", - "that you want it to execute.\n", - "\n", - "In a Mojo docstring, a fenced code block delimited by standard triple-backquotes\n", - "is a *display-only* code block. It appears in the API documentation, but\n", - "`mojo test` does not identify it as a test or attempt to execute any of the code\n", - "in the block.\n", - "\n", - "~~~\n", - "\"\"\" Non-executable code block example.\n", - "\n", - "The generated API documentation includes all lines of the following code block,\n", - "but `mojo test` does not execute any of the code in it.\n", - "\n", - "```\n", - "# mojo test does NOT execute any of this code block\n", - "a = 1\n", - "print(a)\n", - "```\n", - "\"\"\"\n", - "~~~\n", - "\n", - "In contrast, a fenced code block that starts with the line ```mojo\n", - "not only appears in the API documentation, but `mojo test` treats it as an\n", - "executable test. The test fails if the code raises any error, otherwise it\n", - "passes.\n", - "\n", - "~~~\n", - "\"\"\" Executable code block example.\n", - "\n", - "The generated API documentation includes all lines of the following code block\n", - "*and* `mojo test` executes it as a test.\n", - "\n", - "```mojo\n", - "from testing import assert_equals\n", - "\n", - "b = 2\n", - "assert_equals(b, 2)\n", - "```\n", - "\"\"\"\n", - "~~~\n", - "\n", - "Sometimes you might want to execute a line of code as part of the test but *not*\n", - "display that line in the API documentation. To achieve this, prefix the line of\n", - "code with `%#`. For example, you could use this technique to omit `import`\n", - "statements and assertion functions from the documentation.\n", - "\n", - "~~~\n", - "\"\"\" Executable code block example with some code lines omitted from output.\n", - "\n", - "The generated API documentation includes only the lines of code that do *not*\n", - "start with `%#`. However, `mojo test` executes *all* lines of code.\n", - "\n", - "```mojo\n", - "%# from testing import assert_equal\n", - "c = 3\n", - "print(c)\n", - "%# assert_equal(c, 3)\n", - "```\n", - "\"\"\"\n", - "~~~\n", - "\n", - "### Documentation test suites and scoping\n", - "\n", - "The Mojo testing framework treats each docstring as a separate *test suite*.\n", - "In other words, a single test suite could correspond to the docstring for an\n", - "individual package, module, function, struct, struct method, etc.\n", - "\n", - "Each executable code block within a given docstring is a single test of the same\n", - "test suite. The `mojo test` command executes the tests of a test suite\n", - "sequentially in the order that they appear within the docstring. If a test\n", - "within a particular test suite fails, then all subsequent tests within the same\n", - "test suite are skipped.\n", - "\n", - "All tests within the test suite execute in the same scope, and test execution\n", - "within that scope is stateful. This means, for example, that a variable created\n", - "within one test is then accessible to subsequent tests in the same test suite.\n", - "\n", - "~~~\n", - "\"\"\" Stateful example.\n", - "\n", - "Assign 1 to the variable `a`:\n", - "\n", - "```mojo\n", - "%# from testing import assert_equal\n", - "a = 1\n", - "%# assert_equal(a, 1)\n", - "```\n", - "\n", - "Then increment the value of `a` by 1:\n", - "\n", - "```mojo\n", - "a += 1\n", - "%# assert_equal(a, 2)\n", - "```\n", - "\"\"\"\n", - "~~~\n", - "\n", - ":::note\n", - "\n", - "Test suite scopes do *not* nest. In other words, the test suite scope of a\n", - "module is completely independent of the test suite scope of a function or struct\n", - "defined within that module. For example, this means that if a module’s test\n", - "suite creates a variable, that variable is *not* accessible to a function’s test\n", - "suite within the same module.\n", - "\n", - ":::\n", - "\n", - "### Documentation test identifiers\n", - "\n", - "The format of a documentation test identifier is `@::`.\n", - "This is best explained by an example. Consider the project structure shown in\n", - "the [Running tests](#running-tests) section. The source files in the `src`\n", - "directory might contain docstrings for the `my_math` package, the `utils.mojo`\n", - "module, and the individual functions within that module. You could collect the\n", - "full list of tests by executing:\n", - "\n", - "```\n", - "mojo test --co src\n", - "```\n", - "\n", - "The output shows the hierarchy of directories, test files, and individual tests\n", - "(note that this example elides the full filesystem paths from the output shown):\n", - "\n", - "```\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "```\n", - "\n", - "Several different test suites appear in this result:\n", - "\n", - "| Test suite scope | File | Test suite name |\n", - "|------------------|------|-----------------|\n", - "| Package | `src/my_math/__init__.mojo` | `__doc__` |\n", - "| Module | `src/my_math/utils.mojo` | `__doc__` |\n", - "| Function | `src/my_math/utils.mojo` | `inc(stdlib\\3A\\3Abuiltin\\3A\\3Aint\\3A\\3AInt).__doc__` |\n", - "\n", - "Then within a specific test suite, tests are numbered sequentially in the order\n", - "they appear in the docstring, starting with 0." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" - }, - "orig_nbformat": 4 - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/tools/testing.mdx b/docs/tools/testing.mdx new file mode 100644 index 0000000000..ef10b459cf --- /dev/null +++ b/docs/tools/testing.mdx @@ -0,0 +1,648 @@ +--- +title: Testing +sidebar_position: 2 +description: Testing Mojo programs. +--- + +Mojo includes a framework for developing and executing unit tests. The framework +also supports testing code examples in the +[documentation strings](/mojo/manual/basics#code-comments) +(also known as *docstrings*) of your API references. The Mojo testing framework +consists of a set of assertions defined as part of the +[Mojo standard library](/mojo/lib) and the +[`mojo test`](/mojo/cli/test) command line tool. + +## Get started + +Let’s start with a simple example of writing and running Mojo tests. + +### 1. Write tests + +For your first example of using the Mojo testing framework, create a file named +`test_quickstart.mojo` containing the following code: + +```mojo +# Content of test_quickstart.mojo +from testing import assert_equal + +def inc(n: Int) -> Int: + return n + 1 + +def test_inc_zero(): + # This test contains an intentional logical error to show an example of + # what a test failure looks like at runtime. + assert_equal(inc(0), 0) + +def test_inc_one(): + assert_equal(inc(1), 2) +``` + +In this file, the `inc()` function is the test *target*. The functions whose +names begin with `test_` are the tests. Usually the target should be in a +separate source file from its tests, but you can define them in the same file +for this simple example. + +A test function *fails* if it raises an error when executed, otherwise it +*passes*. The two tests in this example use the `assert_equal()` function, +which raises an error if the two values provided are not equal. + +:::note + +The implementation of `test_inc_zero()` contains an intentional logical error +so that you can see an example of a failed test when you execute it in the +next step of this tutorial. + +::: + +### 2. Execute tests + +Then in the directory containing the file, execute the following command in your +shell: + +```bash +mojo test test_quickstart.mojo +``` + +You should see output similar to this (note that this example elides the full +filesystem paths from the output shown): + +``` +Testing Time: 1.193s + +Total Discovered Tests: 2 + +Passed : 1 (50.00%) +Failed : 1 (50.00%) +Skipped: 0 (0.00%) + +******************** Failure: 'ROOT_DIR/test_quickstart.mojo::test_inc_zero()' ******************** + +Unhandled exception caught during execution + +Error: At ROOT_DIR/test_quickstart.mojo:8:17: AssertionError: `left == right` comparison failed: + left: 1 + right: 0 + +******************** +``` + +The output starts with a summary of the number of tests discovered, passed, +failed, and skipped. Following that, each failed test is reported along with +its error message. + +### Next steps + +* [The `testing` module](#the-testing-module) describes the assertion + functions available to help implement tests. +* [Writing unit tests](#writing-unit-tests) shows how to write unit tests and + organize them into test files. +* [The `mojo test` command](#the-mojo-test-command) describes how to execute + and collect lists of tests. +* [Writing API documentation tests](#writing-api-documentation-tests) + discusses how to use the Mojo testing framework to test code examples in your + API documentation. + +## The `testing` module + +The Mojo standard library includes a [`testing`](/mojo/stdlib/testing/testing/) +module that defines several assertion functions for implementing tests. Each +assertion returns `None` if its condition is met or raises an error if it isn’t. + +* [`assert_true()`](/mojo/stdlib/testing/testing/assert_true): + Asserts that the input value is `True`. +* [`assert_false()`](/mojo/stdlib/testing/testing/assert_false): + Asserts that the input value is `False`. +* [`assert_equal()`](/mojo/stdlib/testing/testing/assert_equal): + Asserts that the input values are equal. +* [`assert_not_equal()`](/mojo/stdlib/testing/testing/assert_not_equal): + Asserts that the input values are not equal. +* [`assert_almost_equal()`](/mojo/stdlib/testing/testing/assert_almost_equal): + Asserts that the input values are equal up to a tolerance. + +The boolean assertions report a basic error message when they fail. + +```mojo +from testing import * +assert_true(False) +``` + +```output +Unhandled exception caught during execution + +Error: At Expression [1] wrapper:14:16: AssertionError: condition was unexpectedly False +``` + +Each function also accepts an optional `msg` keyword argument for providing a +custom message to include if the assertion fails. + +```mojo +assert_true(False, msg="paradoxes are not allowed") +``` + +```output +Unhandled exception caught during execution + +Error: At Expression [2] wrapper:14:16: AssertionError: paradoxes are not allowed +``` + +For comparing floating point values you should use `assert_almost_equal()`, +which allows you to specify either an absolute or relative tolerance. + +```mojo +result = 10 / 3 +assert_almost_equal(result, 3.33, atol=0.001, msg="close but no cigar") +``` + +```output +Unhandled exception caught during execution + +Error: At Expression [3] wrapper:15:24: AssertionError: 3.3333333333333335 is not close to 3.3300000000000001 with a diff of 0.0033333333333334103 (close but no cigar) +``` + +The testing module also defines a [context +manager](/mojo/manual/errors#use-a-context-manager), +[`assert_raises()`](/mojo/stdlib/testing/testing/assert_raises), to assert that +a given code block correctly raises an expected error. + +```mojo +def inc(n: Int) -> Int: + if n == Int.MAX: + raise Error("inc overflow") + return n + 1 + +print("Test passes because the error is raised") +with assert_raises(): + _ = inc(Int.MAX) + +print("Test fails because the error isn't raised") +with assert_raises(): + _ = inc(Int.MIN) +``` + +```output +Unhandled exception caught during execution + +Test passes because the error is raised +Test fails because the error isn't raised +Error: AssertionError: Didn't raise at Expression [4] wrapper:18:23 +``` + +:::note + +The example above assigns the return value from `inc()` to a +[*discard pattern*](/mojo/manual/lifecycle/death#explicit-lifetimes). +Without it, the Mojo compiler detects that the return value is unused and +optimizes the code to eliminate the function call. + +::: + +You can also provide an optional `contains` argument to `assert_raises()` to +indicate that the test passes only if the error message contains the substring +specified. Other errors are propagated, failing the test. + +```mojo +print("Test passes because the error contains the substring") +with assert_raises(contains="required"): + raise Error("missing required argument") + +print("Test fails because the error doesn't contain the substring") +with assert_raises(contains="required"): + raise Error("invalid value") +``` + +```output +Unhandled exception caught during execution + +Test passes because the error contains the substring +Test fails because the error doesn't contain the substring +Error: invalid value +``` + +## Writing unit tests + +A Mojo unit test is simply a function that fulfills all of these requirements: + +* Has a name that starts with `test_`. +* Accepts no arguments. +* Returns either `None` or a value of type `object`. +* Raises an error to indicate test failure. +* Is defined at the module scope, not as a Mojo struct method. + +You can use either `def` or `fn` to define a test function. Because a test +function always raises an error to indicate failure, any test function defined +using `fn` must include the `raises` declaration. + +Generally, you should use the assertion utilities from the Mojo standard library +[`testing`](/mojo/stdlib/testing/testing/) module to implement your tests. +You can include multiple related assertions in the same test function. However, +if an assertion raises an error during execution then the test function returns +immediately, skipping any subsequent assertions. + +You must define your Mojo unit tests in Mojo source files named with a `test` +prefix or suffix. You can organize your test files within a directory hierarchy, +but the test files must not be part of a Mojo package (that is, the test +directories should not contain `__init__.mojo` files). + +Here is an example of a test file containing three tests for functions defined +in a source module named `my_target_module` (which is not shown here). + +```mojo +# File: test_my_target_module.mojo + +from my_target_module import convert_input, validate_input +from testing import assert_equal, assert_false, assert_raises, assert_true + +def test_validate_input(): + assert_true(validate_input("good"), msg="'good' should be valid input") + assert_false(validate_input("bad"), msg="'bad' should be invalid input") + +def test_convert_input(): + assert_equal(convert_input("input1"), "output1") + assert_equal(convert_input("input2"), "output2") + +def test_convert_input_error(): + with assert_raises(): + _ = convert_input("garbage") +``` + +The unique identity of a unit test consists of the path of the test file and the +name of the test function, separated by `::`. So the test IDs from the example +above are: + +* `test_my_target_module.mojo::test_validate_input()` +* `test_my_target_module.mojo::test_convert_input()` +* `test_my_target_module.mojo::test_convert_error()` + +## The `mojo test` command + +The `mojo` command line interface includes the [`mojo test`](/mojo/cli/test) +command for running tests or collecting a list of tests. + +### Running tests + +By default, the `mojo test` command runs the tests that you specify using one of +the following: + +* A single test ID with either an absolute or relative file path, to run only + that test. +* A single absolute or relative file path, to run all tests in that file. +* A single absolute or relative directory path, to recurse through that + directory hierarchy and run all tests found. + +If needed, you can optionally use the `-I` option one or more times to append +additional paths to the list of directories searched to import Mojo modules and +packages. For example, consider a project with the following directory +structure: + +``` +. +├── src +│   ├── example.mojo +│   └── my_math +│   ├── __init__.mojo +│   └── utils.mojo +└── test + └── my_math + ├── test_dec.mojo + └── test_inc.mojo +``` + +From the project root directory, you could execute all of the tests in the +`test` directory like this: + +``` +$ mojo test -I src test +Testing Time: 3.433s + +Total Discovered Tests: 4 + +Passed : 4 (100.00%) +Failed : 0 (0.00%) +Skipped: 0 (0.00%) +``` + +You could run the tests contained in only the `test_dec.mojo` file like this: + +``` +$ mojo test -I src test/my_math/test_dec.mojo +Testing Time: 1.175s + +Total Discovered Tests: 2 + +Passed : 2 (100.00%) +Failed : 0 (0.00%) +Skipped: 0 (0.00%) +``` + +And you could run a single test from a file by providing its fully qualified +ID like this: + +``` +$ mojo test -I src 'test/my_math/test_dec.mojo::test_dec_valid()' +Testing Time: 0.66s + +Total Discovered Tests: 1 + +Passed : 1 (100.00%) +Failed : 0 (0.00%) +Skipped: 0 (0.00%) +``` + +### Collecting a list of tests + +By including the `--collect-only` or `--co` option, you can use `mojo test` to +discover and print a list of tests. + +As an example, consider the project structure shown in the +[Running tests](#running-tests) section. The following command produces a list +of all of the tests defined in the `test` directory hierarchy. + +```bash +mojo test --co test +``` + +The output shows the hierarchy of directories, test files, and individual tests +(note that this example elides the full filesystem paths from the output shown): + +``` + + + + + + + +``` + +### Producing JSON formatted output + +By default `mojo test` produces concise, human-readable output. Alternatively +you can produce JSON formatted output more suitable for input to other tools by +including the `--diagnostic-format json` option. + +For example, you could run the tests in the `test_quickstart.mojo` file shown +in the [Get started](#get-started) section with JSON formatted output using this +command: + +```bash +mojo test --diagnostic-format json test_quickstart.mojo +``` + +The output shows the detailed results for each individual test and summary +results (note that this example elides the full filesystem paths from the +output shown): + +``` +{ + "children": [ + { + "duration_ms": 60, + "error": "Unhandled exception caught during execution", + "kind": "executionError", + "stdErr": "", + "stdOut": "Error: At ROOT_DIR/test_quickstart.mojo:8:17: AssertionError: `left == right` comparison failed:\r\n left: 1\r\n right: 0\r\n", + "testID": "ROOT_DIR/test_quickstart.mojo::test_inc_zero()" + }, + { + "duration_ms": 51, + "error": "", + "kind": "success", + "stdErr": "", + "stdOut": "", + "testID": "ROOT_DIR/test_quickstart.mojo::test_inc_one()" + } + ], + "duration_ms": 1171, + "error": "", + "kind": "executionError", + "stdErr": "", + "stdOut": "", + "testID": "ROOT_DIR/test_quickstart.mojo" +} +``` + +You can also produce JSON output for test collection as well. As an example, +consider the project structure shown in the [Running tests](#running-tests) +section. The following command collects a list in JSON format of all of the +tests defined in the `test` directory hierarchy: + +```bash +mojo test --diagnostic-format json --co test +``` + +The output would appear as follows (note that this example elides the full +filesystem paths from the output shown): + +``` +{ + "children": [ + { + "children": [ + { + "id": "ROOT_DIR/test/my_math/test_dec.mojo::test_dec_valid()", + "location": { + "endColumn": 5, + "endLine": 5, + "startColumn": 5, + "startLine": 5 + } + }, + { + "id": "ROOT_DIR/test/my_math/test_dec.mojo::test_dec_min()", + "location": { + "endColumn": 5, + "endLine": 9, + "startColumn": 5, + "startLine": 9 + } + } + ], + "id": "ROOT_DIR/test/my_math/test_dec.mojo" + }, + { + "children": [ + { + "id": "ROOT_DIR/test/my_math/test_inc.mojo::test_inc_valid()", + "location": { + "endColumn": 5, + "endLine": 5, + "startColumn": 5, + "startLine": 5 + } + }, + { + "id": "ROOT_DIR/test/my_math/test_inc.mojo::test_inc_max()", + "location": { + "endColumn": 5, + "endLine": 9, + "startColumn": 5, + "startLine": 9 + } + } + ], + "id": "ROOT_DIR/test/my_math/test_inc.mojo" + } + ], + "id": "ROOT_DIR/test/my_math" +} +``` + +## Writing API documentation tests + +The Mojo testing framework also supports testing code examples that you include +in [docstrings](/mojo/manual/basics#code-comments). This helps to ensure that +the code examples in your API documentation are correct and up to date. + +### Identifying executable code + +The Mojo testing framework requires you to explicitly identify the code blocks +that you want it to execute. + +In a Mojo docstring, a fenced code block delimited by standard triple-backquotes +is a *display-only* code block. It appears in the API documentation, but +`mojo test` does not identify it as a test or attempt to execute any of the code +in the block. + +```` +""" Non-executable code block example. + +The generated API documentation includes all lines of the following code block, +but `mojo test` does not execute any of the code in it. + +``` +# mojo test does NOT execute any of this code block +a = 1 +print(a) +``` +""" +```` + +In contrast, a fenced code block that starts with the line \`\`\`mojo +not only appears in the API documentation, but `mojo test` treats it as an +executable test. The test fails if the code raises any error, otherwise it +passes. + +```` +""" Executable code block example. + +The generated API documentation includes all lines of the following code block +*and* `mojo test` executes it as a test. + +```mojo +from testing import assert_equals + +b = 2 +assert_equals(b, 2) +``` +""" +```` + +Sometimes you might want to execute a line of code as part of the test but *not* +display that line in the API documentation. To achieve this, prefix the line of +code with `%#`. For example, you could use this technique to omit `import` +statements and assertion functions from the documentation. + +```` +""" Executable code block example with some code lines omitted from output. + +The generated API documentation includes only the lines of code that do *not* +start with `%#`. However, `mojo test` executes *all* lines of code. + +```mojo +%# from testing import assert_equal +c = 3 +print(c) +%# assert_equal(c, 3) +``` +""" +```` + +### Documentation test suites and scoping + +The Mojo testing framework treats each docstring as a separate *test suite*. +In other words, a single test suite could correspond to the docstring for an +individual package, module, function, struct, struct method, etc. + +Each executable code block within a given docstring is a single test of the same +test suite. The `mojo test` command executes the tests of a test suite +sequentially in the order that they appear within the docstring. If a test +within a particular test suite fails, then all subsequent tests within the same +test suite are skipped. + +All tests within the test suite execute in the same scope, and test execution +within that scope is stateful. This means, for example, that a variable created +within one test is then accessible to subsequent tests in the same test suite. + +```` +""" Stateful example. + +Assign 1 to the variable `a`: + +```mojo +%# from testing import assert_equal +a = 1 +%# assert_equal(a, 1) +``` + +Then increment the value of `a` by 1: + +```mojo +a += 1 +%# assert_equal(a, 2) +``` +""" +```` + +:::note + +Test suite scopes do *not* nest. In other words, the test suite scope of a +module is completely independent of the test suite scope of a function or struct +defined within that module. For example, this means that if a module’s test +suite creates a variable, that variable is *not* accessible to a function’s test +suite within the same module. + +::: + +### Documentation test identifiers + +The format of a documentation test identifier is `@::`. +This is best explained by an example. Consider the project structure shown in +the [Running tests](#running-tests) section. The source files in the `src` +directory might contain docstrings for the `my_math` package, the `utils.mojo` +module, and the individual functions within that module. You could collect the +full list of tests by executing: + +``` +mojo test --co src +``` + +The output shows the hierarchy of directories, test files, and individual tests +(note that this example elides the full filesystem paths from the output shown): + +``` + + + + + + + + + + + + + + +``` + +Several different test suites appear in this result: + +| Test suite scope | File | Test suite name | +| ---------------- | --------------------------- | ---------------------------------------------------- | +| Package | `src/my_math/__init__.mojo` | `__doc__` | +| Module | `src/my_math/utils.mojo` | `__doc__` | +| Function | `src/my_math/utils.mojo` | `inc(stdlib\3A\3Abuiltin\3A\3Aint\3A\3AInt).__doc__` | + +Then within a specific test suite, tests are numbered sequentially in the order +they appear in the docstring, starting with 0. From 5e1e25845bde288164ff33d6a0aeeb5f5718e876 Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Mon, 25 Nov 2024 18:13:30 -0700 Subject: [PATCH 028/119] [stdlib] Make non-type params for `UnsafePointer` kw only Make the non-type parameters for `UnsafePointer` keyword-only. This is desirable as there are a large number of parameters, and having those be positional only can be confusing and cause unintended conversions for some parameters. Many APIs that previously were expecting `*_` as the default positional parameters get updated to use `**_` as the keyword-only equivalent. The only positional parameter for `UnsafePointer` now is the type parameter. MODULAR_ORIG_COMMIT_REV_ID: d8f65de7f545939089dc90daad875f49c183348b --- docs/changelog.md | 4 +- stdlib/src/builtin/file.mojo | 4 +- stdlib/src/memory/memory.mojo | 63 ++++++++++----- stdlib/src/memory/owned_pointer.mojo | 2 +- stdlib/src/memory/unsafe_pointer.mojo | 94 +++++++++++++--------- stdlib/src/os/atomic.mojo | 16 ++-- stdlib/src/random/random.mojo | 2 +- stdlib/src/sys/intrinsics.mojo | 12 +-- stdlib/src/utils/_serialize.mojo | 8 +- stdlib/test/memory/test_unsafepointer.mojo | 4 +- 10 files changed, 125 insertions(+), 84 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index c8ec0e274b..858790cd11 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -121,7 +121,7 @@ what we publish. var l = List[Int](1, 2, 3, 4, 5) shuffle(l) ``` - + - The `Dict.__getitem__` method now returns a reference instead of a copy of the value (or raises). This improves the performance of common code that uses `Dict` by allowing borrows from the `Dict` elements. @@ -533,6 +533,8 @@ what we publish. - `Arc` has been renamed to `ArcPointer`, for consistency with `OwnedPointer`. +- `UnsafePointer` parameters (other than the type) are now keyword-only. + ### ❌ Removed - The `UnsafePointer.bitcast` overload for `DType` has been removed. Wrap your diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index 0803d4f3e0..99e4d6a917 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -436,7 +436,9 @@ struct FileHandle: fn _write[ address_space: AddressSpace - ](self, ptr: UnsafePointer[UInt8, address_space], len: Int) raises: + ]( + self, ptr: UnsafePointer[UInt8, address_space=address_space], len: Int + ) raises: """Write the data to the file. Params: diff --git a/stdlib/src/memory/memory.mojo b/stdlib/src/memory/memory.mojo index ab215ab5b0..8f03fd2fb9 100644 --- a/stdlib/src/memory/memory.mojo +++ b/stdlib/src/memory/memory.mojo @@ -51,7 +51,11 @@ fn _align_down(value: Int, alignment: Int) -> Int: @always_inline fn _memcmp_impl_unconstrained[ type: DType -](s1: UnsafePointer[Scalar[type], _], s2: __type_of(s1), count: Int) -> Int: +]( + s1: UnsafePointer[Scalar[type], **_], + s2: UnsafePointer[Scalar[type], **_], + count: Int, +) -> Int: alias simd_width = simdwidthof[type]() if count < simd_width: for i in range(count): @@ -95,7 +99,11 @@ fn _memcmp_impl_unconstrained[ @always_inline fn _memcmp_impl[ type: DType -](s1: UnsafePointer[Scalar[type], _], s2: __type_of(s1), count: Int) -> Int: +]( + s1: UnsafePointer[Scalar[type], **_], + s2: UnsafePointer[Scalar[type], **_], + count: Int, +) -> Int: constrained[type.is_integral(), "the input dtype must be integral"]() return _memcmp_impl_unconstrained(s1, s2, count) @@ -104,8 +112,8 @@ fn _memcmp_impl[ fn memcmp[ type: AnyType, address_space: AddressSpace ]( - s1: UnsafePointer[type, address_space], - s2: UnsafePointer[type, address_space], + s1: UnsafePointer[type, address_space=address_space], + s2: UnsafePointer[type, address_space=address_space], count: Int, ) -> Int: """Compares two buffers. Both strings are assumed to be of the same length. @@ -144,7 +152,7 @@ fn memcmp[ @always_inline fn _memcpy_impl( - dest_data: UnsafePointer[Byte, *_], src_data: __type_of(dest_data), n: Int + dest_data: UnsafePointer[Byte, **_], src_data: __type_of(dest_data), n: Int ): """Copies a memory area. @@ -228,8 +236,8 @@ fn _memcpy_impl( fn memcpy[ T: AnyType ]( - dest: UnsafePointer[T, AddressSpace.GENERIC, *_], - src: UnsafePointer[T, AddressSpace.GENERIC, *_], + dest: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_], + src: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_], count: Int, ): """Copies a memory area. @@ -258,7 +266,11 @@ fn memcpy[ @always_inline("nodebug") fn _memset_impl[ address_space: AddressSpace -](ptr: UnsafePointer[Byte, address_space], value: Byte, count: Int): +]( + ptr: UnsafePointer[Byte, address_space=address_space], + value: Byte, + count: Int, +): alias simd_width = simdwidthof[Byte]() var vector_end = _align_down(count, simd_width) @@ -272,7 +284,11 @@ fn _memset_impl[ @always_inline fn memset[ type: AnyType, address_space: AddressSpace -](ptr: UnsafePointer[type, address_space], value: Byte, count: Int): +]( + ptr: UnsafePointer[type, address_space=address_space], + value: Byte, + count: Int, +): """Fills memory with the given value. Parameters: @@ -295,7 +311,7 @@ fn memset[ @always_inline fn memset_zero[ type: AnyType, address_space: AddressSpace, // -](ptr: UnsafePointer[type, address_space], count: Int): +](ptr: UnsafePointer[type, address_space=address_space], count: Int): """Fills memory with zeros. Parameters: @@ -312,7 +328,7 @@ fn memset_zero[ @always_inline fn memset_zero[ type: DType, address_space: AddressSpace, //, *, count: Int -](ptr: UnsafePointer[Scalar[type], address_space]): +](ptr: UnsafePointer[Scalar[type], address_space=address_space]): """Fills memory with zeros. Parameters: @@ -351,7 +367,7 @@ fn stack_allocation[ /, alignment: Int = alignof[type]() if is_gpu() else 1, address_space: AddressSpace = AddressSpace.GENERIC, -]() -> UnsafePointer[Scalar[type], address_space]: +]() -> UnsafePointer[Scalar[type], address_space=address_space]: """Allocates data buffer space on the stack given a data type and number of elements. @@ -378,7 +394,7 @@ fn stack_allocation[ name: Optional[StringLiteral] = None, alignment: Int = alignof[type]() if is_gpu() else 1, address_space: AddressSpace = AddressSpace.GENERIC, -]() -> UnsafePointer[type, address_space]: +]() -> UnsafePointer[type, address_space=address_space]: """Allocates data buffer space on the stack given a data type and number of elements. @@ -402,7 +418,9 @@ fn stack_allocation[ return __mlir_op.`pop.global_alloc`[ name = global_name.value, count = count.value, - _type = UnsafePointer[type, address_space]._mlir_type, + _type = UnsafePointer[ + type, address_space=address_space + ]._mlir_type, alignment = alignment.value, ]() # MSTDL-797: The NVPTX backend requires that `alloca` instructions may @@ -415,13 +433,15 @@ fn stack_allocation[ alignment = alignment.value, ]() return __mlir_op.`pop.pointer.bitcast`[ - _type = UnsafePointer[type, address_space]._mlir_type + _type = UnsafePointer[ + type, address_space=address_space + ]._mlir_type ](generic_ptr) # Perofrm a stack allocation of the requested size, alignment, and type. return __mlir_op.`pop.stack_allocation`[ count = count.value, - _type = UnsafePointer[type, address_space]._mlir_type, + _type = UnsafePointer[type, address_space=address_space]._mlir_type, alignment = alignment.value, ]() @@ -438,16 +458,19 @@ fn _malloc[ *, alignment: Int = alignof[type]() if is_gpu() else 1, ](size: Int, /) -> UnsafePointer[ - type, AddressSpace.GENERIC, alignment=alignment + type, address_space = AddressSpace.GENERIC, alignment=alignment ]: @parameter if is_gpu(): return external_call[ - "malloc", UnsafePointer[NoneType, AddressSpace.GENERIC] + "malloc", + UnsafePointer[NoneType, address_space = AddressSpace.GENERIC], ](size).bitcast[type]() else: return __mlir_op.`pop.aligned_alloc`[ - _type = UnsafePointer[type, AddressSpace.GENERIC]._mlir_type + _type = UnsafePointer[ + type, address_space = AddressSpace.GENERIC + ]._mlir_type ](alignment.value, size.value) @@ -457,7 +480,7 @@ fn _malloc[ @always_inline -fn _free(ptr: UnsafePointer[_, AddressSpace.GENERIC, *_]): +fn _free(ptr: UnsafePointer[_, address_space = AddressSpace.GENERIC, *_, **_]): @parameter if is_gpu(): libc.free(ptr.bitcast[NoneType]()) diff --git a/stdlib/src/memory/owned_pointer.mojo b/stdlib/src/memory/owned_pointer.mojo index 4f00050e89..597375cbf4 100644 --- a/stdlib/src/memory/owned_pointer.mojo +++ b/stdlib/src/memory/owned_pointer.mojo @@ -25,7 +25,7 @@ struct OwnedPointer[T: AnyType]: T: The type to be stored in the OwnedPointer[]. """ - var _inner: UnsafePointer[T, AddressSpace.GENERIC] + var _inner: UnsafePointer[T, address_space = AddressSpace.GENERIC] # ===-------------------------------------------------------------------===# # Life cycle methods diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index 9c75cc59a6..5f37054609 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -51,6 +51,7 @@ fn _default_alignment[type: DType, width: Int = 1]() -> Int: @register_passable("trivial") struct UnsafePointer[ type: AnyType, + *, address_space: AddressSpace = AddressSpace.GENERIC, alignment: Int = _default_alignment[type](), origin: Origin[True].type = MutableAnyOrigin, @@ -115,7 +116,9 @@ struct UnsafePointer[ @always_inline @implicit - fn __init__(out self, other: UnsafePointer[type, address_space, *_, **_]): + fn __init__( + out self, other: UnsafePointer[type, address_space=address_space, **_] + ): """Exclusivity parameter cast a pointer. Args: @@ -144,8 +147,9 @@ struct UnsafePointer[ ref [_, address_space._value.value]arg: type ) -> UnsafePointer[ type, - address_space, - 1, + address_space=address_space, + alignment=1, + origin=MutableAnyOrigin # TODO: Propagate origin of the argument. ] as result: """Gets the address of the argument. @@ -164,7 +168,9 @@ struct UnsafePointer[ @always_inline fn alloc( count: Int, - ) -> UnsafePointer[type, AddressSpace.GENERIC, alignment]: + ) -> UnsafePointer[ + type, address_space = AddressSpace.GENERIC, alignment=alignment + ]: """Allocate an array with specified or default alignment. Args: @@ -195,9 +201,12 @@ struct UnsafePointer[ alias _ref_type = Pointer[type, origin, address_space] return __get_litref_as_mvalue( __mlir_op.`lit.ref.from_pointer`[_type = _ref_type._mlir_type]( - UnsafePointer[type, address_space, alignment, origin]( - self - ).address + UnsafePointer[ + type, + address_space=address_space, + alignment=alignment, + origin=origin, + ](self).address ) ) @@ -433,7 +442,9 @@ struct UnsafePointer[ @always_inline("nodebug") fn as_noalias_ptr( self, - ) -> UnsafePointer[type, address_space, alignment, origin]: + ) -> UnsafePointer[ + type, address_space=address_space, alignment=alignment, origin=origin + ]: """Cast the pointer to a new pointer that is known not to locally alias any other pointer. In other words, the pointer transitively does not alias any other memory value declared in the local function context. @@ -454,7 +465,7 @@ struct UnsafePointer[ alignment: Int = _default_alignment[type, width](), volatile: Bool = False, invariant: Bool = False, - ](self: UnsafePointer[Scalar[type], *_, **_]) -> SIMD[type, width]: + ](self: UnsafePointer[Scalar[type], **_]) -> SIMD[type, width]: """Loads the value the pointer points to. Constraints: @@ -530,7 +541,7 @@ struct UnsafePointer[ alignment: Int = _default_alignment[type, width](), volatile: Bool = False, invariant: Bool = False, - ](self: UnsafePointer[Scalar[type], *_, **_], offset: Scalar) -> SIMD[ + ](self: UnsafePointer[Scalar[type], **_], offset: Scalar) -> SIMD[ type, width ]: """Loads the value the pointer points to with the given offset. @@ -569,9 +580,7 @@ struct UnsafePointer[ alignment: Int = _default_alignment[type, width](), volatile: Bool = False, invariant: Bool = False, - ](self: UnsafePointer[Scalar[type], *_, **_], offset: T) -> SIMD[ - type, width - ]: + ](self: UnsafePointer[Scalar[type], **_], offset: T) -> SIMD[type, width]: """Loads the value the pointer points to with the given offset. Constraints: @@ -605,11 +614,7 @@ struct UnsafePointer[ *, alignment: Int = _default_alignment[type](), volatile: Bool = False, - ]( - self: UnsafePointer[Scalar[type], *_, **_], - offset: T, - val: Scalar[type], - ): + ](self: UnsafePointer[Scalar[type], **_], offset: T, val: Scalar[type],): """Stores a single element value at the given offset. Constraints: @@ -637,7 +642,7 @@ struct UnsafePointer[ alignment: Int = _default_alignment[type, width](), volatile: Bool = False, ]( - self: UnsafePointer[Scalar[type], *_, **_], + self: UnsafePointer[Scalar[type], **_], offset: T, val: SIMD[type, width], ): @@ -668,7 +673,7 @@ struct UnsafePointer[ alignment: Int = _default_alignment[type](), volatile: Bool = False, ]( - self: UnsafePointer[Scalar[type], *_, **_], + self: UnsafePointer[Scalar[type], **_], offset: Scalar[offset_type], val: Scalar[type], ): @@ -701,7 +706,7 @@ struct UnsafePointer[ alignment: Int = _default_alignment[type, width](), volatile: Bool = False, ]( - self: UnsafePointer[Scalar[type], *_, **_], + self: UnsafePointer[Scalar[type], **_], offset: Scalar[offset_type], val: SIMD[type, width], ): @@ -732,7 +737,7 @@ struct UnsafePointer[ *, alignment: Int = _default_alignment[type](), volatile: Bool = False, - ](self: UnsafePointer[Scalar[type], *_, **_], val: Scalar[type]): + ](self: UnsafePointer[Scalar[type], **_], val: Scalar[type]): """Stores a single element value. Constraints: @@ -755,7 +760,7 @@ struct UnsafePointer[ *, alignment: Int = _default_alignment[type, width](), volatile: Bool = False, - ](self: UnsafePointer[Scalar[type], *_, **_], val: SIMD[type, width]): + ](self: UnsafePointer[Scalar[type], **_], val: SIMD[type, width]): """Stores a single element value. Constraints: @@ -779,7 +784,7 @@ struct UnsafePointer[ *, alignment: Int = _default_alignment[type, width](), volatile: Bool = False, - ](self: UnsafePointer[Scalar[type], *_, **_], val: SIMD[type, width]): + ](self: UnsafePointer[Scalar[type], **_], val: SIMD[type, width]): constrained[width > 0, "width must be a positive integer value"]() constrained[ alignment > 0, "alignment must be a positive integer value" @@ -798,9 +803,7 @@ struct UnsafePointer[ @always_inline("nodebug") fn strided_load[ type: DType, T: Intable, //, width: Int - ](self: UnsafePointer[Scalar[type], *_, **_], stride: T) -> SIMD[ - type, width - ]: + ](self: UnsafePointer[Scalar[type], **_], stride: T) -> SIMD[type, width]: """Performs a strided load of the SIMD vector. Parameters: @@ -822,7 +825,7 @@ struct UnsafePointer[ T: Intable, //, width: Int, ]( - self: UnsafePointer[Scalar[type], *_, **_], + self: UnsafePointer[Scalar[type], **_], val: SIMD[type, width], stride: T, ): @@ -846,7 +849,7 @@ struct UnsafePointer[ width: Int = 1, alignment: Int = _default_alignment[type, width](), ]( - self: UnsafePointer[Scalar[type], *_, **_], + self: UnsafePointer[Scalar[type], **_], offset: SIMD[_, width], mask: SIMD[DType.bool, width] = True, default: SIMD[type, width] = 0, @@ -901,7 +904,7 @@ struct UnsafePointer[ width: Int = 1, alignment: Int = _default_alignment[type, width](), ]( - self: UnsafePointer[Scalar[type], *_, **_], + self: UnsafePointer[Scalar[type], **_], offset: SIMD[_, width], val: SIMD[type, width], mask: SIMD[DType.bool, width] = True, @@ -949,7 +952,7 @@ struct UnsafePointer[ scatter(val, base, mask, alignment) @always_inline - fn free(self: UnsafePointer[_, AddressSpace.GENERIC, *_, **_]): + fn free(self: UnsafePointer[_, address_space = AddressSpace.GENERIC, **_]): """Free the memory referenced by the pointer.""" _free(self) @@ -960,7 +963,9 @@ struct UnsafePointer[ address_space: AddressSpace = Self.address_space, alignment: Int = Self.alignment, origin: Origin[True].type = Self.origin, - ](self) -> UnsafePointer[T, address_space, alignment, origin]: + ](self) -> UnsafePointer[ + T, address_space=address_space, alignment=alignment, origin=origin + ]: """Bitcasts a UnsafePointer to a different type. Parameters: @@ -975,13 +980,13 @@ struct UnsafePointer[ """ return __mlir_op.`pop.pointer.bitcast`[ _type = UnsafePointer[ - T, address_space, alignment=alignment + T, address_space=address_space, alignment=alignment ]._mlir_type, ](self.address) @always_inline fn destroy_pointee( - self: UnsafePointer[type, AddressSpace.GENERIC, *_, **_] + self: UnsafePointer[type, address_space = AddressSpace.GENERIC, **_] ): """Destroy the pointed-to value. @@ -996,7 +1001,7 @@ struct UnsafePointer[ @always_inline fn take_pointee[ T: Movable, //, - ](self: UnsafePointer[T, AddressSpace.GENERIC, *_, **_]) -> T: + ](self: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_]) -> T: """Move the value at the pointer out, leaving it uninitialized. The pointer must not be null, and the pointer memory location is assumed @@ -1019,7 +1024,10 @@ struct UnsafePointer[ @always_inline fn init_pointee_move[ T: Movable, //, - ](self: UnsafePointer[T, AddressSpace.GENERIC, *_, **_], owned value: T): + ]( + self: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_], + owned value: T, + ): """Emplace a new value into the pointer location, moving from `value`. The pointer memory location is assumed to contain uninitialized data, @@ -1041,7 +1049,10 @@ struct UnsafePointer[ @always_inline fn init_pointee_copy[ T: Copyable, //, - ](self: UnsafePointer[T, AddressSpace.GENERIC, *_, **_], value: T): + ]( + self: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_], + value: T, + ): """Emplace a copy of `value` into the pointer location. The pointer memory location is assumed to contain uninitialized data, @@ -1063,7 +1074,10 @@ struct UnsafePointer[ @always_inline fn init_pointee_explicit_copy[ T: ExplicitlyCopyable, // - ](self: UnsafePointer[T, AddressSpace.GENERIC, *_, **_], value: T): + ]( + self: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_], + value: T, + ): """Emplace a copy of `value` into this pointer location. The pointer memory location is assumed to contain uninitialized data, @@ -1087,8 +1101,8 @@ struct UnsafePointer[ fn move_pointee_into[ T: Movable, //, ]( - self: UnsafePointer[T, AddressSpace.GENERIC, *_, **_], - dst: UnsafePointer[T, AddressSpace.GENERIC, *_, **_], + self: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_], + dst: UnsafePointer[T, address_space = AddressSpace.GENERIC, **_], ): """Moves the value `self` points to into the memory location pointed to by `dst`. diff --git a/stdlib/src/os/atomic.mojo b/stdlib/src/os/atomic.mojo index 73a97c09ea..90a1952246 100644 --- a/stdlib/src/os/atomic.mojo +++ b/stdlib/src/os/atomic.mojo @@ -62,7 +62,7 @@ struct Atomic[type: DType]: @staticmethod @always_inline fn _fetch_add( - ptr: UnsafePointer[Scalar[type], *_], rhs: Scalar[type] + ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type] ) -> Scalar[type]: """Performs atomic in-place add. @@ -200,7 +200,7 @@ struct Atomic[type: DType]: @staticmethod @always_inline - fn max(ptr: UnsafePointer[Scalar[type], *_], rhs: Scalar[type]): + fn max(ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): """Performs atomic in-place max on the pointer. Atomically replaces the current value pointer to by `ptr` by the result @@ -240,7 +240,7 @@ struct Atomic[type: DType]: @staticmethod @always_inline - fn min(ptr: UnsafePointer[Scalar[type], *_], rhs: Scalar[type]): + fn min(ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): """Performs atomic in-place min on the pointer. Atomically replaces the current value pointer to by `ptr` by the result @@ -289,7 +289,7 @@ struct Atomic[type: DType]: fn _compare_exchange_weak_integral_impl[ type: DType, // ]( - value_addr: UnsafePointer[Scalar[type], *_], + value_addr: UnsafePointer[Scalar[type], **_], inout expected: Scalar[type], desired: Scalar[type], ) -> Bool: @@ -318,7 +318,7 @@ fn _compare_exchange_weak_integral_impl[ @always_inline fn _max_impl_base[ type: DType, // -](ptr: UnsafePointer[Scalar[type], *_], rhs: Scalar[type]): +](ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): var value_addr = ptr.bitcast[__mlir_type[`!pop.scalar<`, type.value, `>`]]() _ = __mlir_op.`pop.atomic.rmw`[ bin_op = __mlir_attr.`#pop`, @@ -330,7 +330,7 @@ fn _max_impl_base[ @always_inline fn _min_impl_base[ type: DType, // -](ptr: UnsafePointer[Scalar[type], *_], rhs: Scalar[type]): +](ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): var value_addr = ptr.bitcast[__mlir_type[`!pop.scalar<`, type.value, `>`]]() _ = __mlir_op.`pop.atomic.rmw`[ bin_op = __mlir_attr.`#pop`, @@ -342,7 +342,7 @@ fn _min_impl_base[ @always_inline fn _max_impl[ type: DType, // -](ptr: UnsafePointer[Scalar[type], *_], rhs: Scalar[type]): +](ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): @parameter if is_nvidia_gpu() and type.is_floating_point(): alias integral_type = _integral_type_of[type]() @@ -365,7 +365,7 @@ fn _max_impl[ @always_inline fn _min_impl[ type: DType, // -](ptr: UnsafePointer[Scalar[type], *_], rhs: Scalar[type]): +](ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): @parameter if is_nvidia_gpu() and type.is_floating_point(): alias integral_type = _integral_type_of[type]() diff --git a/stdlib/src/random/random.mojo b/stdlib/src/random/random.mojo index f0b8dee2ee..37461dd625 100644 --- a/stdlib/src/random/random.mojo +++ b/stdlib/src/random/random.mojo @@ -121,7 +121,7 @@ fn randint[ fn rand[ type: DType ]( - ptr: UnsafePointer[Scalar[type], *_], + ptr: UnsafePointer[Scalar[type], **_], size: Int, /, *, diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index 38f6ae8e5b..054c66c497 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -468,7 +468,7 @@ struct PrefetchOptions: @always_inline("nodebug") fn prefetch[ type: DType, //, params: PrefetchOptions = PrefetchOptions() -](addr: UnsafePointer[Scalar[type], *_]): +](addr: UnsafePointer[Scalar[type], **_]): """Prefetches an instruction or data into cache before it is used. The prefetch function provides prefetching hints for the target @@ -508,7 +508,7 @@ fn prefetch[ fn masked_load[ type: DType, //, size: Int ]( - addr: UnsafePointer[Scalar[type], *_], + addr: UnsafePointer[Scalar[type], **_], mask: SIMD[DType.bool, size], passthrough: SIMD[type, size], alignment: Int = 1, @@ -555,7 +555,7 @@ fn masked_store[ size: Int ]( value: SIMD, - addr: UnsafePointer[Scalar[value.type], *_], + addr: UnsafePointer[Scalar[value.type], **_], mask: SIMD[DType.bool, size], alignment: Int = 1, ): @@ -597,7 +597,7 @@ fn compressed_store[ type: DType, size: Int ]( value: SIMD[type, size], - addr: UnsafePointer[Scalar[type], *_], + addr: UnsafePointer[Scalar[type], **_], mask: SIMD[DType.bool, size], ): """Compresses the lanes of `value`, skipping `mask` lanes, and stores @@ -636,7 +636,7 @@ fn compressed_store[ fn strided_load[ type: DType, //, simd_width: Int ]( - addr: UnsafePointer[Scalar[type], *_], + addr: UnsafePointer[Scalar[type], **_], stride: Int, mask: SIMD[DType.bool, simd_width] = True, ) -> SIMD[type, simd_width]: @@ -677,7 +677,7 @@ fn strided_store[ type: DType, //, simd_width: Int ]( value: SIMD[type, simd_width], - addr: UnsafePointer[Scalar[type], *_], + addr: UnsafePointer[Scalar[type], **_], stride: Int, mask: SIMD[DType.bool, simd_width] = True, ): diff --git a/stdlib/src/utils/_serialize.mojo b/stdlib/src/utils/_serialize.mojo index 5eadeb4788..ddf05a31ac 100644 --- a/stdlib/src/utils/_serialize.mojo +++ b/stdlib/src/utils/_serialize.mojo @@ -25,7 +25,7 @@ alias _kCompactElemPerSide = _kCompactMaxElemsToPrint // 2 fn _serialize_elements_compact[ type: DType, //, serialize_fn: fn[T: Writable] (elem: T) capturing [_] -> None, -](ptr: UnsafePointer[Scalar[type], _], len: Int): +](ptr: UnsafePointer[Scalar[type], **_], len: Int): serialize_fn(_kStartTensorMarker) if len < _kCompactMaxElemsToPrint: _serialize_elements_complete[serialize_fn=serialize_fn](ptr, len) @@ -46,7 +46,7 @@ fn _serialize_elements_compact[ fn _serialize_elements_complete[ type: DType, //, serialize_fn: fn[T: Writable] (elem: T) capturing [_] -> None, -](ptr: UnsafePointer[Scalar[type], _], len: Int): +](ptr: UnsafePointer[Scalar[type], **_], len: Int): if len == 0: return serialize_fn(ptr.load()) @@ -59,7 +59,7 @@ fn _serialize_elements[ type: DType, //, serialize_fn: fn[T: Writable] (elem: T) capturing [_] -> None, compact: Bool = False, -](ptr: UnsafePointer[Scalar[type], _], len: Int): +](ptr: UnsafePointer[Scalar[type], **_], len: Int): @parameter if compact: _serialize_elements_compact[serialize_fn=serialize_fn](ptr, len) @@ -73,7 +73,7 @@ fn _serialize[ serialize_dtype: Bool = True, serialize_shape: Bool = True, serialize_end_line: Bool = True, -](ptr: UnsafePointer[Scalar[type], _], shape: List[Int, *_]): +](ptr: UnsafePointer[Scalar[type], **_], shape: List[Int, *_]): var rank = len(shape) if rank == 0: if serialize_end_line: diff --git a/stdlib/test/memory/test_unsafepointer.mojo b/stdlib/test/memory/test_unsafepointer.mojo index 657fc02b81..a44fb58cf6 100644 --- a/stdlib/test/memory/test_unsafepointer.mojo +++ b/stdlib/test/memory/test_unsafepointer.mojo @@ -178,10 +178,10 @@ def test_comparisons(): def test_unsafepointer_address_space(): - var p1 = UnsafePointer[Int, AddressSpace(0)].alloc(1) + var p1 = UnsafePointer[Int, address_space = AddressSpace(0)].alloc(1) p1.free() - var p2 = UnsafePointer[Int, AddressSpace.GENERIC].alloc(1) + var p2 = UnsafePointer[Int, address_space = AddressSpace.GENERIC].alloc(1) p2.free() From 3c4f57c9225d8f7634fb4df7e0bde7004f7c189b Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 25 Nov 2024 23:08:35 -0800 Subject: [PATCH 029/119] [mojo-lang] Enable binding to inferred-only params with keywords. This enables inferred only params to be bound with keywords, enabling some important standard library idioms to be ergonomic, e.g.: ``` # In the standard library already: struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]: ... # Example alias alias ImmStringSlice = StringSlice[is_mutable=False] # This auto-parameterizes on the origin, but constrains it to being an # immutable slice instead of a potentially mutable one. fn take_imm_slice(a: ImmStringSlice): ... ``` We need to decide on the exact naming convention, this is just an example. MODULAR_ORIG_COMMIT_REV_ID: 0376f5ed8d24212afe004a8f96169665b694c715 --- docs/changelog.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 858790cd11..bef76b5e3d 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -535,6 +535,17 @@ what we publish. - `UnsafePointer` parameters (other than the type) are now keyword-only. +- Inferred-only parameters may now be explicitly bound with keywords, enabling + some important patterns in the standard library: + + ```mojo + struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]: ... + alias ImmStringSlice = StringSlice[is_mutable=False] + # This auto-parameterizes on the origin, but constrains it to being an + # immutable slice instead of a potentially mutable one. + fn take_imm_slice(a: ImmStringSlice): ... + ``` + ### ❌ Removed - The `UnsafePointer.bitcast` overload for `DType` has been removed. Wrap your From 21378ae4d95a9d7a67a3d212c02adf24a9ddb71a Mon Sep 17 00:00:00 2001 From: Billy Zhu Date: Tue, 26 Nov 2024 10:00:28 -0800 Subject: [PATCH 030/119] [stdlib] Adopt parametric inline_count for source_loc The `inlineCount` field of source_loc now allows non-immediate index-typed parameters. This PR updates its usage, and exposes the parameter to users of `__call_location`. MODULAR_ORIG_COMMIT_REV_ID: 2c213a20a9e4447c8a8f092215cf4e60cc8d64b1 --- stdlib/src/builtin/_location.mojo | 33 +++++++++++++++--------- stdlib/test/builtin/test_location.mojo | 35 ++++++++++++++++++-------- 2 files changed, 46 insertions(+), 22 deletions(-) diff --git a/stdlib/src/builtin/_location.mojo b/stdlib/src/builtin/_location.mojo index 0940e49f8e..2816204b62 100644 --- a/stdlib/src/builtin/_location.mojo +++ b/stdlib/src/builtin/_location.mojo @@ -57,7 +57,7 @@ struct _SourceLocation(Writable, Stringable): @always_inline("nodebug") fn __source_location() -> _SourceLocation: - """Returns the location where it's called. + """Returns the location for where this function is called. This currently doesn't work when called in a parameter expression. @@ -68,7 +68,7 @@ fn __source_location() -> _SourceLocation: var col: __mlir_type.index var file_name: __mlir_type.`!kgen.string` line, col, file_name = __mlir_op.`kgen.source_loc`[ - _properties = __mlir_attr.`{inlineCount = 0 : i64}`, + inlineCount = Int(0).value, _type = ( __mlir_type.index, __mlir_type.index, @@ -80,26 +80,35 @@ fn __source_location() -> _SourceLocation: @always_inline("nodebug") -fn __call_location() -> _SourceLocation: - """Returns the location where the enclosing function is called. +fn __call_location[inline_count: Int = 1]() -> _SourceLocation: + """Returns the location for where the caller of this function is called. An + optional `inline_count` parameter can be specified to skip over that many + levels of calling functions. - This should only be used in `@always_inline` or `@always_inline("nodebug")` - functions so that it returns the source location of where the enclosing - function is called at (even if inside another `@always_inline("nodebug")` - function). + This should only be used when enclosed in a series of `@always_inline` or + `@always_inline("nodebug")` function calls, where the layers of calling + functions is no fewer than `inline_count`. - This currently doesn't work when this or the enclosing function is called in - a parameter expression. + For example, when `inline_count = 1`, only the caller of this function needs + to be `@always_inline` or `@always_inline("nodebug")`. This function will + return the source location of the caller's invocation. + + When `inline_count = 2`, the caller of the caller of this function also + needs to be inlined. This function will return the source location of the + caller's caller's invocation. + + This currently doesn't work when the `inline_count`-th wrapping caller is + called in a parameter expression. Returns: - The location information of where the enclosing function (i.e. the + The location information of where the caller of this function (i.e. the function whose body __call_location() is used in) is called. """ var line: __mlir_type.index var col: __mlir_type.index var file_name: __mlir_type.`!kgen.string` line, col, file_name = __mlir_op.`kgen.source_loc`[ - _properties = __mlir_attr.`{inlineCount = 1 : i64}`, + inlineCount = inline_count.value, _type = ( __mlir_type.index, __mlir_type.index, diff --git a/stdlib/test/builtin/test_location.mojo b/stdlib/test/builtin/test_location.mojo index c70610663d..cc9a706249 100644 --- a/stdlib/test/builtin/test_location.mojo +++ b/stdlib/test/builtin/test_location.mojo @@ -126,20 +126,22 @@ fn test_parameter_context() raises: @always_inline -fn capture_call_loc(cond: Bool = False) -> _SourceLocation: +fn capture_call_loc[depth: Int = 1](cond: Bool = False) -> _SourceLocation: if ( not cond ): # NOTE: we test that __call_location works even in a nested scope. - return __call_location() + return __call_location[depth]() return _SourceLocation(-1, -1, "") @always_inline("nodebug") -fn capture_call_loc_nodebug(cond: Bool = False) -> _SourceLocation: +fn capture_call_loc_nodebug[ + depth: Int = 1 +](cond: Bool = False) -> _SourceLocation: if ( not cond ): # NOTE: we test that __call_location works even in a nested scope. - return __call_location() + return __call_location[depth]() return _SourceLocation(-1, -1, "") @@ -151,13 +153,22 @@ fn get_call_locs() -> (_SourceLocation, _SourceLocation): @always_inline("nodebug") -fn get_call_locs_inlined() -> (_SourceLocation, _SourceLocation): +fn get_call_locs_inlined[ + depth: Int = 1 +]() -> (_SourceLocation, _SourceLocation): return ( - capture_call_loc(), - capture_call_loc_nodebug(), + capture_call_loc[depth](), + capture_call_loc_nodebug[depth](), ) +@always_inline +fn get_call_locs_inlined_twice[ + depth: Int = 1 +]() -> (_SourceLocation, _SourceLocation): + return get_call_locs_inlined[depth]() + + fn get_four_call_locs() -> ( _SourceLocation, _SourceLocation, @@ -182,8 +193,8 @@ fn get_four_call_locs_inlined() -> ( fn test_builtin_call_loc() raises: - var l = (148, 149, 156, 157) - var c = (25, 33, 25, 33) + var l = (150, 151, 160, 161) + var c = (25, 33, 32, 40) var loc_pair = get_call_locs() check_source_loc(l[0], c[0], loc_pair[0]) check_source_loc(l[1], c[1], loc_pair[1]) @@ -192,6 +203,10 @@ fn test_builtin_call_loc() raises: check_source_loc(l[2], c[2], loc_pair[0]) check_source_loc(l[3], c[3], loc_pair[1]) + loc_pair = get_call_locs_inlined_twice[2]() + check_source_loc(169, 40, loc_pair[0]) + check_source_loc(169, 40, loc_pair[1]) + var loc_quad = get_four_call_locs() check_source_loc(l[0], c[0], loc_quad[0]) check_source_loc(l[1], c[1], loc_quad[1]) @@ -211,7 +226,7 @@ fn source_loc_with_debug() -> _SourceLocation: var col: __mlir_type.index var file_name: __mlir_type.`!kgen.string` line, col, file_name = __mlir_op.`kgen.source_loc`[ - _properties = __mlir_attr.`{inlineCount = 0 : i64}`, + inlineCount = Int(0).value, _type = ( __mlir_type.index, __mlir_type.index, From 6f5123cdf56b78789ba91428697d3ebca8833733 Mon Sep 17 00:00:00 2001 From: Evan Ovadia Date: Tue, 26 Nov 2024 11:47:18 -0800 Subject: [PATCH 031/119] Adds basic support for linear types, via the @explicit_destroy keyword and the temporary UnknownDestructibility trait. MODULAR_ORIG_COMMIT_REV_ID: 34f0f717b658780cecba602647f139aa581ff752 --- stdlib/src/builtin/anytype.mojo | 26 ++++++++++++++++++++++---- stdlib/src/prelude/__init__.mojo | 2 +- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/stdlib/src/builtin/anytype.mojo b/stdlib/src/builtin/anytype.mojo index 8c7a061ba5..c76235fc9c 100644 --- a/stdlib/src/builtin/anytype.mojo +++ b/stdlib/src/builtin/anytype.mojo @@ -20,6 +20,20 @@ These are Mojo built-ins, so you don't need to import them. # ===----------------------------------------------------------------------=== # +# TODO(MOCO-1468): Add @explicit_destroy here so we get an error message, +# preferably one that mentions a link the user can go to to learn about +# linear types. +trait UnknownDestructibility: + """The UnknownDestructibility trait is the most basic trait, that all other + types extend. + + This has no __del__ method. For types that should have the __del__ method, + use ImplicitlyDestructible instead. + """ + + pass + + trait AnyType: """The AnyType trait describes a type that has a destructor. @@ -32,10 +46,9 @@ trait AnyType: lifetime, and the resultant type receives a destructor regardless of whether the user explicitly defines one. - All types pessimistically require a destructor when used in generic - functions. Hence, all Mojo traits are considered to inherit from - AnyType, providing a default no-op destructor implementation for types - that may need them. + Unless they specify @explicit_destroy, all Mojo structs and traits are + considered to inherit from AnyType, providing a default no-op destructor + implementation for types that may need them. Example implementing the `AnyType` trait on `Foo` that frees the allocated memory: @@ -66,3 +79,8 @@ trait AnyType: end of this function. """ ... + + +# A temporary alias to help with the linear types transition, see +# https://www.notion.so/modularai/Linear-Types-14a1044d37bb809ab074c990fe1a84e3. +alias ImplicitlyDestructible = AnyType diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index 874d79cbab..5592ec2663 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -14,7 +14,7 @@ that are automatically imported into every Mojo program. """ -from builtin.anytype import AnyType +from builtin.anytype import UnknownDestructibility, AnyType from builtin.bool import Boolable, ImplicitlyBoolable, Bool, bool, any, all from builtin.breakpoint import breakpoint from builtin.builtin_list import ( From 6cc041086cbafbe9be6e28e721b1ee55b9179916 Mon Sep 17 00:00:00 2001 From: Jiexiang Liu <80805665+jiex-liu@users.noreply.github.com> Date: Tue, 26 Nov 2024 14:08:23 -0800 Subject: [PATCH 032/119] [******][gpu] add fp8 fnuz variant to dtype This PR adds fp8 fnuz dtype to mojo for AMD GPU. MODULAR_ORIG_COMMIT_REV_ID: f9b0efcf079e85fd1907888617c51bcb68ca5b46 --- stdlib/src/builtin/dtype.mojo | 33 +++++++++++++++++++++++++++++++-- stdlib/src/builtin/simd.mojo | 15 +++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index fa7a222492..09afc140d9 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -67,10 +67,22 @@ struct DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) """Represents a FP8E5M2 floating point format whose bitwidth is 8.""" + alias float8e5m2fnuz = DType( + __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` + ) + """Represents a FP8E5M2FNUZ floating point format for AMD GPU whose bitwdith is 8. + This dtype only supports finite and NaN values. NaN is when sign bit is + set and all other exponent and mantissa bits are 0.""" alias float8e4m3 = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) """Represents a FP8E4M3 floating point format whose bitwidth is 8.""" + alias float8e4m3fnuz = DType( + __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` + ) + """Represents a FP8E4M3FNUZ floating point format for AMD GPU whose bitwdith is 8. + This dtype only supports finite and NaN values. NaN is when sign bit is + set and all other exponent and mantissa bits are 0.""" alias bfloat16 = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) @@ -132,8 +144,12 @@ struct DType( return DType.index elif str == String("float8e5m2"): return DType.float8e5m2 + elif str == String("float8e5m2fnuz"): + return DType.float8e5m2fnuz elif str == String("float8e4m3"): return DType.float8e4m3 + elif str == String("float8e4m3fnuz"): + return DType.float8e4m3fnuz elif str == String("bfloat16"): return DType.bfloat16 elif str == String("float16"): @@ -193,8 +209,12 @@ struct DType( return writer.write("index") if self == DType.float8e5m2: return writer.write("float8e5m2") + if self == DType.float8e5m2fnuz: + return writer.write("float8e5m2fnuz") if self == DType.float8e4m3: return writer.write("float8e4m3") + if self == DType.float8e4m3fnuz: + return writer.write("float8e4m3fnuz") if self == DType.bfloat16: return writer.write("bfloat16") if self == DType.float16: @@ -397,13 +417,18 @@ struct DType( @always_inline("nodebug") fn is_float8(self) -> Bool: """Returns True if the type is a 8bit-precision floating point type, - e.g. either float8e5m2 or float8e4m3. + e.g. float8e5m2, float8e5m2fnuz, float8e4m3 and float8e4m3fnuz. Returns: True if the type is a 8bit-precision float, false otherwise. """ - return self in (DType.float8e5m2, DType.float8e4m3) + return self in ( + DType.float8e5m2, + DType.float8e4m3, + DType.float8e5m2fnuz, + DType.float8e4m3fnuz, + ) @always_inline("nodebug") fn is_half_float(self) -> Bool: @@ -459,8 +484,12 @@ struct DType( return sizeof[DType.index]() if self == DType.float8e5m2: return sizeof[DType.float8e5m2]() + if self == DType.float8e5m2fnuz: + return sizeof[DType.float8e5m2fnuz]() if self == DType.float8e4m3: return sizeof[DType.float8e4m3]() + if self == DType.float8e4m3fnuz: + return sizeof[DType.float8e4m3fnuz]() if self == DType.bfloat16: return sizeof[DType.bfloat16]() if self == DType.float16: diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 8146759a4b..60ed1aaebf 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -95,8 +95,16 @@ alias UInt64 = Scalar[DType.uint64] alias Float8e5m2 = Scalar[DType.float8e5m2] """Represents a FP8E5M2 floating point format whose bitwidth is 8.""" +alias Float8e5m2fnuz = Scalar[DType.float8e5m2fnuz] +"""Represents a FP8E5M2FNUZ floating point format for AMD GPU whose bitwdith is 8. + This dtype only supports finite and NaN values. NaN is when sign bit is set and + all other exponent and mantissa bits are 0.""" alias Float8e4m3 = Scalar[DType.float8e4m3] """Represents a FP8E4M3 floating point format whose bitwidth is 8.""" +alias Float8e4m3fnuz = Scalar[DType.float8e4m3fnuz] +"""Represents a FP8E4M3FNUZ floating point format for AMD GPU whose bitwdith is 8. + This dtype only supports finite and NaN values. NaN is when sign bit is set and + all other exponent and mantissa bits are 0.""" alias BFloat16 = Scalar[DType.bfloat16] """Represents a 16-bit brain floating point value.""" alias Float16 = Scalar[DType.float16] @@ -137,6 +145,13 @@ fn _simd_construction_checks[type: DType, size: Int](): not (type.is_float8() and not _has_native_f8_support()), "f8 is not supported on non sm_89 and sm_90 architectures", ]() + constrained[ + not ( + type in (DType.float8e4m3fnuz, DType.float8e5m2fnuz) + and not is_amd_gpu() + ), + "f8 fnuz variants is only supported for AMD GPU.", + ]() @always_inline("nodebug") From b9fdbc40c651d3307f8761c4f152d975cf5fd039 Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Tue, 26 Nov 2024 14:14:25 -0800 Subject: [PATCH 033/119] Remove unnecessary fstrings MODULAR_ORIG_COMMIT_REV_ID: 0c1c7f388099adaf2c8a02c6f822732fff35e2b6 --- stdlib/scripts/check-docstrings.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/scripts/check-docstrings.py b/stdlib/scripts/check-docstrings.py index eb4b180125..cdd5b02f98 100644 --- a/stdlib/scripts/check-docstrings.py +++ b/stdlib/scripts/check-docstrings.py @@ -31,7 +31,7 @@ def main(): ] result = subprocess.run(command, capture_output=True) if result.stderr or result.returncode != 0: - print(f"Docstring issue found in the stdlib: ") + print("Docstring issue found in the stdlib: ") print(result.stderr.decode()) sys.exit(1) From f104bdb7738b7eb1537b63552d1f39c9bc26cc61 Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Tue, 26 Nov 2024 16:27:43 -0800 Subject: [PATCH 034/119] Remove unused python imports MODULAR_ORIG_COMMIT_REV_ID: 7cd9e7bb0e008361728cbf78ba4c66722e32339d --- stdlib/test/lit.cfg.py | 1 - 1 file changed, 1 deletion(-) diff --git a/stdlib/test/lit.cfg.py b/stdlib/test/lit.cfg.py index ad8ab36e9a..33e85712be 100644 --- a/stdlib/test/lit.cfg.py +++ b/stdlib/test/lit.cfg.py @@ -12,7 +12,6 @@ # ===----------------------------------------------------------------------=== # import os -import platform import shutil from pathlib import Path From 1052ff7b455137a862f425b57b27869158dfa31d Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Wed, 27 Nov 2024 00:40:45 -0800 Subject: [PATCH 035/119] [******][GPU] Move the default target compile options to the info struct MODULAR_ORIG_COMMIT_REV_ID: c3668f8bfebbe9ae0232a28a2b102373be9e2c61 --- stdlib/src/sys/info.mojo | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/stdlib/src/sys/info.mojo b/stdlib/src/sys/info.mojo index 840e5de7f6..a2f1891fc9 100644 --- a/stdlib/src/sys/info.mojo +++ b/stdlib/src/sys/info.mojo @@ -33,15 +33,13 @@ fn _accelerator_arch() -> StringLiteral: return __mlir_attr.`#kgen.param.expr : !kgen.string` -fn _get_arch[target: __mlir_type.`!kgen.target`]() -> String: - return String( - __mlir_attr[ - `#kgen.param.expr : !kgen.string`, - ] - ) +fn _get_arch[target: __mlir_type.`!kgen.target`]() -> StringLiteral: + return __mlir_attr[ + `#kgen.param.expr : !kgen.string`, + ] @always_inline("nodebug") From c7f4d6ed8365b8fc98bd74b52ff74b6cad5d6d81 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Wed, 27 Nov 2024 08:58:23 -0800 Subject: [PATCH 036/119] [stdlib] Format float8 types using lookup table This is faster and more accurate then upcasting to float32, as the trailing bits will always be 0, and can change the rounding for the last digits. This matches nvcc outputs for these types, but aligns with pytorch shortest representation. MODULAR_ORIG_COMMIT_REV_ID: dfeb2fa529bc4aeb149fa5e73b4bacfcaa6c48ce --- stdlib/src/builtin/_format_float.mojo | 727 ++++++++++++++++++++++---- 1 file changed, 626 insertions(+), 101 deletions(-) diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index 2686917119..b7e27ebc76 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -105,112 +105,119 @@ fn _write_float[ """ constrained[type.is_floating_point()]() - # Currently only specialized for float32 and float64, upcast anything else - # to float32 - casted = value.cast[ - DType.float64 if type == DType.float64 else DType.float32 - ]() + @parameter + if type is DType.float8e5m2: + return writer.write(float8e5m2_to_str[int(bitcast[DType.uint8](value))]) + elif type is DType.float8e4m3: + return writer.write(float8e4m3_to_str[int(bitcast[DType.uint8](value))]) + else: + # Currently only specialized for float32 and float64, upcast anything + # else to float32 + casted = value.cast[ + DType.float64 if type == DType.float64 else DType.float32 + ]() + + # Bitcast the float and separate the sig and exp, to enable manipulating + # bits as a UInt64 and Int: + # - The significand (sig) is the raw binary fraction + # - The exponent (exp) is still in biased form + var sig = FPUtils.get_mantissa_uint(casted) + var exp = FPUtils.get_exponent_without_bias(casted) + var sign = FPUtils.get_sign(casted) + + if isinf(value): + if sign: + writer.write("-") + writer.write("inf") + return - # Bitcast the float and separate the sig and exp, to enable manipulating - # bits as a UInt64 and Int: - # - The significand (sig) is the raw binary fraction - # - The exponent (exp) is still in biased form - var sig = FPUtils.get_mantissa_uint(casted) - var exp = FPUtils.get_exponent_without_bias(casted) - var sign = FPUtils.get_sign(casted) + if isnan(value): + writer.write("nan") + return - if isinf(value): if sign: writer.write("-") - writer.write("inf") - return - - if isnan(value): - writer.write("nan") - return - - if sign: - writer.write("-") - - if not sig and not exp: - writer.write("0.0") - return - - # Convert the binary components to a decimal representation: - # - The raw binary sig into a decimal sig - # - The biased binary exp into a decimal power of 10 exp - # This does all the heavy lifting for perfect roundtrip, shortest - # representable format, bankers rounding etc. - _to_decimal[casted.type](sig, exp) - - # This is a custom routine for writing the decimal following python behavior. - # it can be further optimized with a lookup table, there is overhead here - # compared to snprintf. - var orig_sig = sig - var abs_exp = abs(exp) - var digits = StaticTuple[Byte, 21]() - var idx = 0 - while sig > 0: - digits[idx] = (sig % 10).cast[DType.uint8]() - sig //= 10 - idx += 1 - if sig > 0: - exp += 1 - var leading_zeroes = abs_exp - idx - - # Write in scientific notation if < 0.0001 or exp > 15 - if (exp < 0 and leading_zeroes > 3) or exp > 15: - # Handle single digit case - if orig_sig < 10: - writer.write(orig_sig) - else: - # Write digit before decimal point - writer.write(digits[idx - 1]) - writer.write(".") - # Write digits after decimal point - for i in reversed(range(idx - 1)): - writer.write(digits[i]) - # Write exponent - if exp < 0: - writer.write("e-") - exp = -exp - else: - writer.write("e+") - # Pad exponent with a 0 if less than two digits - if exp < 10: - writer.write("0") - var exp_digits = StaticTuple[Byte, 10]() - var exp_idx = 0 - while exp > 0: - exp_digits[exp_idx] = exp % 10 - exp //= 10 - exp_idx += 1 - for i in reversed(range(exp_idx)): - writer.write(exp_digits[i]) - # If between 0 and 0.0001 - elif exp < 0 and leading_zeroes > 0: - writer.write("0.") - for _ in range(leading_zeroes): - writer.write("0") - for i in reversed(range(idx)): - writer.write(digits[i]) - # All other floats > 0.0001 with an exponent <= 15 - else: - var point_written = False - for i in reversed(range(idx)): - if leading_zeroes < 1 and exp == idx - i - 2: - # No integer part so write leading 0 - if i == idx - 1: - writer.write("0") - writer.write(".") - point_written = True - writer.write(digits[i]) - # If exp - idx + 1 > 0 it's a positive number with more 0's than the sig - for _ in range(exp - idx + 1): - writer.write("0") - if not point_written: - writer.write(".0") + if not sig and not exp: + writer.write("0.0") + return + + # Convert the binary components to a decimal representation: + # - The raw binary sig into a decimal sig + # - The biased binary exp into a decimal power of 10 exp + # This does all the heavy lifting for perfect roundtrip, shortest + # representable format, bankers rounding etc. + _to_decimal[casted.type](sig, exp) + + # This is a custom routine for writing the decimal following python + # behavior. it can be further optimized with a lookup table, there is + # overhead here compared to snprintf. + var orig_sig = sig + var abs_exp = abs(exp) + var digits = StaticTuple[Byte, 21]() + var idx = 0 + while sig > 0: + digits[idx] = (sig % 10).cast[DType.uint8]() + sig //= 10 + idx += 1 + if sig > 0: + exp += 1 + var leading_zeroes = abs_exp - idx + + # Write in scientific notation if < 0.0001 or exp > 15 + if (exp < 0 and leading_zeroes > 3) or exp > 15: + # Handle single digit case + if orig_sig < 10: + writer.write(orig_sig) + else: + # Write digit before decimal point + writer.write(digits[idx - 1]) + writer.write(".") + # Write digits after decimal point + for i in reversed(range(idx - 1)): + writer.write(digits[i]) + # Write exponent + if exp < 0: + writer.write("e-") + exp = -exp + else: + writer.write("e+") + # Pad exponent with a 0 if less than two digits + if exp < 10: + writer.write("0") + var exp_digits = StaticTuple[Byte, 10]() + var exp_idx = 0 + while exp > 0: + exp_digits[exp_idx] = exp % 10 + exp //= 10 + exp_idx += 1 + for i in reversed(range(exp_idx)): + writer.write(exp_digits[i]) + # If between 0 and 0.0001 + elif exp < 0 and leading_zeroes > 0: + writer.write("0.") + for _ in range(leading_zeroes): + writer.write("0") + for i in reversed(range(idx)): + writer.write(digits[i]) + # All other floats > 0.0001 with an exponent <= 15 + else: + var point_written = False + for i in reversed(range(idx)): + if leading_zeroes < 1 and exp == idx - i - 2: + # No integer part so write leading 0 + if i == idx - 1: + writer.write("0") + writer.write(".") + point_written = True + writer.write(digits[i]) + + # If exp - idx + 1 > 0 it's a positive number with more 0's than the + # sig + for _ in range(exp - idx + 1): + writer.write("0") + if not point_written: + writer.write(".0") fn _to_decimal[ @@ -1426,3 +1433,521 @@ alias cache_f64 = StaticTuple[_UInt128, 619]( _UInt128(0xC5A05277621BE293, 0xC7098B7305241886), _UInt128(0xF70867153AA2DB38, 0xB8CBEE4FC66D1EA8), ) + +alias float8e5m2_to_str = StaticTuple[StringLiteral, 256]( + "0.0", + "1.52587890625e-05", + "3.0517578125e-05", + "4.57763671875e-05", + "6.103515625e-05", + "7.62939453125e-05", + "9.1552734375e-05", + "0.0001068115234375", + "0.0001220703125", + "0.000152587890625", + "0.00018310546875", + "0.000213623046875", + "0.000244140625", + "0.00030517578125", + "0.0003662109375", + "0.00042724609375", + "0.00048828125", + "0.0006103515625", + "0.000732421875", + "0.0008544921875", + "0.0009765625", + "0.001220703125", + "0.00146484375", + "0.001708984375", + "0.001953125", + "0.00244140625", + "0.0029296875", + "0.00341796875", + "0.00390625", + "0.0048828125", + "0.005859375", + "0.0068359375", + "0.0078125", + "0.009765625", + "0.01171875", + "0.013671875", + "0.015625", + "0.01953125", + "0.0234375", + "0.02734375", + "0.03125", + "0.0390625", + "0.046875", + "0.0546875", + "0.0625", + "0.078125", + "0.09375", + "0.109375", + "0.125", + "0.15625", + "0.1875", + "0.21875", + "0.25", + "0.3125", + "0.375", + "0.4375", + "0.5", + "0.625", + "0.75", + "0.875", + "1.0", + "1.25", + "1.5", + "1.75", + "2.0", + "2.5", + "3.0", + "3.5", + "4.0", + "5.0", + "6.0", + "7.0", + "8.0", + "10.0", + "12.0", + "14.0", + "16.0", + "20.0", + "24.0", + "28.0", + "32.0", + "40.0", + "48.0", + "56.0", + "64.0", + "80.0", + "96.0", + "112.0", + "128.0", + "160.0", + "192.0", + "224.0", + "256.0", + "320.0", + "384.0", + "448.0", + "512.0", + "640.0", + "768.0", + "896.0", + "1024.0", + "1280.0", + "1536.0", + "1792.0", + "2048.0", + "2560.0", + "3072.0", + "3584.0", + "4096.0", + "5120.0", + "6144.0", + "7168.0", + "8192.0", + "10240.0", + "12288.0", + "14336.0", + "16384.0", + "20480.0", + "24576.0", + "28672.0", + "32768.0", + "40960.0", + "49152.0", + "57344.0", + "inf", + "nan", + "nan", + "nan", + "-0.0", + "-1.52587890625e-05", + "-3.0517578125e-05", + "-4.57763671875e-05", + "-6.103515625e-05", + "-7.62939453125e-05", + "-9.1552734375e-05", + "-0.0001068115234375", + "-0.0001220703125", + "-0.000152587890625", + "-0.00018310546875", + "-0.000213623046875", + "-0.000244140625", + "-0.00030517578125", + "-0.0003662109375", + "-0.00042724609375", + "-0.00048828125", + "-0.0006103515625", + "-0.000732421875", + "-0.0008544921875", + "-0.0009765625", + "-0.001220703125", + "-0.00146484375", + "-0.001708984375", + "-0.001953125", + "-0.00244140625", + "-0.0029296875", + "-0.00341796875", + "-0.00390625", + "-0.0048828125", + "-0.005859375", + "-0.0068359375", + "-0.0078125", + "-0.009765625", + "-0.01171875", + "-0.013671875", + "-0.015625", + "-0.01953125", + "-0.0234375", + "-0.02734375", + "-0.03125", + "-0.0390625", + "-0.046875", + "-0.0546875", + "-0.0625", + "-0.078125", + "-0.09375", + "-0.109375", + "-0.125", + "-0.15625", + "-0.1875", + "-0.21875", + "-0.25", + "-0.3125", + "-0.375", + "-0.4375", + "-0.5", + "-0.625", + "-0.75", + "-0.875", + "-1.0", + "-1.25", + "-1.5", + "-1.75", + "-2.0", + "-2.5", + "-3.0", + "-3.5", + "-4.0", + "-5.0", + "-6.0", + "-7.0", + "-8.0", + "-10.0", + "-12.0", + "-14.0", + "-16.0", + "-20.0", + "-24.0", + "-28.0", + "-32.0", + "-40.0", + "-48.0", + "-56.0", + "-64.0", + "-80.0", + "-96.0", + "-112.0", + "-128.0", + "-160.0", + "-192.0", + "-224.0", + "-256.0", + "-320.0", + "-384.0", + "-448.0", + "-512.0", + "-640.0", + "-768.0", + "-896.0", + "-1024.0", + "-1280.0", + "-1536.0", + "-1792.0", + "-2048.0", + "-2560.0", + "-3072.0", + "-3584.0", + "-4096.0", + "-5120.0", + "-6144.0", + "-7168.0", + "-8192.0", + "-10240.0", + "-12288.0", + "-14336.0", + "-16384.0", + "-20480.0", + "-24576.0", + "-28672.0", + "-32768.0", + "-40960.0", + "-49152.0", + "-57344.0", + "-inf", + "nan", + "nan", + "nan", +) + +alias float8e4m3_to_str = StaticTuple[StringLiteral, 256]( + "0.0", + "0.001953125", + "0.00390625", + "0.005859375", + "0.0078125", + "0.009765625", + "0.01171875", + "0.013671875", + "0.015625", + "0.017578125", + "0.01953125", + "0.021484375", + "0.0234375", + "0.025390625", + "0.02734375", + "0.029296875", + "0.03125", + "0.03515625", + "0.0390625", + "0.04296875", + "0.046875", + "0.05078125", + "0.0546875", + "0.05859375", + "0.0625", + "0.0703125", + "0.078125", + "0.0859375", + "0.09375", + "0.1015625", + "0.109375", + "0.1171875", + "0.125", + "0.140625", + "0.15625", + "0.171875", + "0.1875", + "0.203125", + "0.21875", + "0.234375", + "0.25", + "0.28125", + "0.3125", + "0.34375", + "0.375", + "0.40625", + "0.4375", + "0.46875", + "0.5", + "0.5625", + "0.625", + "0.6875", + "0.75", + "0.8125", + "0.875", + "0.9375", + "1.0", + "1.125", + "1.25", + "1.375", + "1.5", + "1.625", + "1.75", + "1.875", + "2.0", + "2.25", + "2.5", + "2.75", + "3.0", + "3.25", + "3.5", + "3.75", + "4.0", + "4.5", + "5.0", + "5.5", + "6.0", + "6.5", + "7.0", + "7.5", + "8.0", + "9.0", + "10.0", + "11.0", + "12.0", + "13.0", + "14.0", + "15.0", + "16.0", + "18.0", + "20.0", + "22.0", + "24.0", + "26.0", + "28.0", + "30.0", + "32.0", + "36.0", + "40.0", + "44.0", + "48.0", + "52.0", + "56.0", + "60.0", + "64.0", + "72.0", + "80.0", + "88.0", + "96.0", + "104.0", + "112.0", + "120.0", + "128.0", + "144.0", + "160.0", + "176.0", + "192.0", + "208.0", + "224.0", + "240.0", + "256.0", + "288.0", + "320.0", + "352.0", + "384.0", + "416.0", + "448.0", + "nan", + "-0.0", + "-0.001953125", + "-0.00390625", + "-0.005859375", + "-0.0078125", + "-0.009765625", + "-0.01171875", + "-0.013671875", + "-0.015625", + "-0.017578125", + "-0.01953125", + "-0.021484375", + "-0.0234375", + "-0.025390625", + "-0.02734375", + "-0.029296875", + "-0.03125", + "-0.03515625", + "-0.0390625", + "-0.04296875", + "-0.046875", + "-0.05078125", + "-0.0546875", + "-0.05859375", + "-0.0625", + "-0.0703125", + "-0.078125", + "-0.0859375", + "-0.09375", + "-0.1015625", + "-0.109375", + "-0.1171875", + "-0.125", + "-0.140625", + "-0.15625", + "-0.171875", + "-0.1875", + "-0.203125", + "-0.21875", + "-0.234375", + "-0.25", + "-0.28125", + "-0.3125", + "-0.34375", + "-0.375", + "-0.40625", + "-0.4375", + "-0.46875", + "-0.5", + "-0.5625", + "-0.625", + "-0.6875", + "-0.75", + "-0.8125", + "-0.875", + "-0.9375", + "-1.0", + "-1.125", + "-1.25", + "-1.375", + "-1.5", + "-1.625", + "-1.75", + "-1.875", + "-2.0", + "-2.25", + "-2.5", + "-2.75", + "-3.0", + "-3.25", + "-3.5", + "-3.75", + "-4.0", + "-4.5", + "-5.0", + "-5.5", + "-6.0", + "-6.5", + "-7.0", + "-7.5", + "-8.0", + "-9.0", + "-10.0", + "-11.0", + "-12.0", + "-13.0", + "-14.0", + "-15.0", + "-16.0", + "-18.0", + "-20.0", + "-22.0", + "-24.0", + "-26.0", + "-28.0", + "-30.0", + "-32.0", + "-36.0", + "-40.0", + "-44.0", + "-48.0", + "-52.0", + "-56.0", + "-60.0", + "-64.0", + "-72.0", + "-80.0", + "-88.0", + "-96.0", + "-104.0", + "-112.0", + "-120.0", + "-128.0", + "-144.0", + "-160.0", + "-176.0", + "-192.0", + "-208.0", + "-224.0", + "-240.0", + "-256.0", + "-288.0", + "-320.0", + "-352.0", + "-384.0", + "-416.0", + "-448.0", + "nan", +) From c04e8776029791819a297612e02367211eb1fd61 Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Wed, 27 Nov 2024 13:12:38 -0800 Subject: [PATCH 037/119] [Docs] Several small corrections & bug fixes to ownership and lifecycle docs. MODULAR_ORIG_COMMIT_REV_ID: 78075bc3ba6d211b7e4eef28000fc272cc75dfdb --- docs/manual/lifecycle/life.mdx | 15 +++++------ docs/manual/values/lifetimes.mdx | 16 ++++++------ docs/manual/values/ownership.mdx | 43 +++++++++++++++----------------- 3 files changed, 36 insertions(+), 38 deletions(-) diff --git a/docs/manual/lifecycle/life.mdx b/docs/manual/lifecycle/life.mdx index 95c4367593..800a81163d 100644 --- a/docs/manual/lifecycle/life.mdx +++ b/docs/manual/lifecycle/life.mdx @@ -247,10 +247,11 @@ a constructor should support implicit conversion. ## Copy constructor -When Mojo encounters an assignment operator (`=`), it tries to make a copy of -the right-side value by calling upon that type's copy constructor: the -`__copyinit__()` method. Thus, it's the responsibility of the type author to -implement `__copyinit__()` so it returns a copy of the value. +When Mojo encounters an assignment statement that doesn't use the [transfer +sigil (`^`)](/mojo/manual/values/ownership#transfer-arguments-owned-and-), it +tries to make a copy of the right-side value by calling upon that type's copy +constructor: the `__copyinit__()` method. Thus, it's the responsibility of the +type author to implement `__copyinit__()` so it returns a copy of the value. For example, the `MyPet` type above does not have a copy constructor, so this code fails to compile: @@ -285,9 +286,9 @@ mistakes when referring to the current struct name. Also, notice that the `existing` argument in `__copyinit__()` is immutable because the default [argument -convention](/mojo/manual/values/ownership#argument-conventions) in an `fn` -function is `borrowed`—this is a good thing because this function should not -modify the contents of the value being copied. +convention](/mojo/manual/values/ownership#argument-conventions) is +`borrowed`—this is a good thing because this function should not modify the +contents of the value being copied. ::: diff --git a/docs/manual/values/lifetimes.mdx b/docs/manual/values/lifetimes.mdx index d191af8e2e..24ff2b7982 100644 --- a/docs/manual/values/lifetimes.mdx +++ b/docs/manual/values/lifetimes.mdx @@ -43,7 +43,7 @@ However, in some cases you'll need to interact with origins directly: values. * When working with types like - [`Pointer`](/mojo/stdlib/memory/reference/Pointer) or + [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) or [`Span`](/mojo/stdlib/utils/span/Span) which are parameterized on the origin of the data they refer to. @@ -73,7 +73,7 @@ struct ImmutableRef[origin: ImmutableOrigin]: pass ``` -Or you can use the [`Origin`](mojo/stdlib/builtin/type_aliases/Origin) +Or you can use the [`Origin`](/mojo/stdlib/builtin/type_aliases/Origin) struct to specify an origin with parametric mutability: ```mojo @@ -117,7 +117,7 @@ few ways to specify origin values: * Static origin. The `StaticConstantOrigin` alias is an origin value representing immutable values that that last for the duration of the program. String literal values have a `StaticConstantOrigin`. -* The `__origin_of()` magic function, which returns the origin associated +* Derived origin. The `__origin_of()` magic function returns the origin associated with the value (or values) passed in. * Inferred origin. You can use inferred parameters to capture the origin of a value passed in to a function. @@ -161,13 +161,13 @@ the stored string, using the same origin as the original `OwnedPointer`. from memory import OwnedPointer, Pointer struct BoxedString: - var box: OwnedPointer[String] + var o_ptr: OwnedPointer[String] fn __init__(out self, value: String): - self.box = OwnedPointer(value) + self.o_ptr = OwnedPointer(value) - fn as_ptr(self) -> Pointer[String, __origin_of(self.box)]: - return Pointer.address_of(self.box[]) + fn as_ptr(self) -> Pointer[String, __origin_of(self.o_ptr)]: + return Pointer.address_of(self.o_ptr[]) ``` #### Inferred origins @@ -362,7 +362,7 @@ will be added in a future release. If you're working with an API that returns a reference, and you want to avoid copying the referenced value, you can use a -[`Pointer`](/mojo/stdlib/memory/reference/Pointer) to hold an indirect reference. +[`Pointer`](/mojo/stdlib/memory/pointer/Pointer) to hold an indirect reference. You can assign a `Pointer` to a variable, but you need to use the dereference operator (`[]`) to access the underlying value. diff --git a/docs/manual/values/ownership.mdx b/docs/manual/values/ownership.mdx index 95817dd2b1..5748afe073 100644 --- a/docs/manual/values/ownership.mdx +++ b/docs/manual/values/ownership.mdx @@ -29,7 +29,7 @@ The fundamental rules that make Mojo's ownership model work are the following: * Every value has only one owner at a time. * When the lifetime of the owner ends, Mojo destroys the value. -* If there are outstanding references to a value, Mojo extends the lifetime of +* If there are existing references to a value, Mojo extends the lifetime of the owner. ### Variables and references @@ -293,13 +293,11 @@ gets unique ownership of a value. This happens in one of three ways: * The caller passes the argument with the `^` transfer sigil, which ends the - lifetime of that variable (the variable becomes uninitialized) and ownership is - transferred into the function without making a copy of any heap-allocated data. + lifetime of that variable (the variable becomes uninitialized) and ownership + is transferred into the function. -* The caller **does not** use the `^` transfer sigil, in which case, the - value is copied into the function argument and the original variable remains - valid. (If the original value is not used again, the compiler may optimize away - the copy and transfer the value). +* The caller **does not** use the `^` transfer sigil, in which case, Mojo copies + the value. If the type isn't copyable, this is a compile-time error. * The caller passes in a newly-created "owned" value, such as a value returned from a function. In this case, no variable owns the value and it can be @@ -312,9 +310,8 @@ three ways: take(String("A brand-new String!")) ``` -For example, the following code works by making a copy of the string, -because—although `take_text()` uses the `owned` convention—the caller does not -include the transfer sigil: +The following code works by making a copy of the string, because `take_text()` +uses the `owned` convention, and the caller does not include the transfer sigil: ```mojo fn take_text(owned text: String): @@ -394,19 +391,6 @@ used inside a function. ::: -### Borrowed versus owned in `def` functions - -The difference between `borrowed` and `owned` in a `def` function may be a -little subtle. In both cases, you can end up with a uniquely-owned value that's -a copy of the original value. - -* The `borrowed` argument always gets an immutable reference or a local copy. - You can't transfer a value into a `borrowed` argument. - -* The `owned` argument always gets a uniquely owned value, which may have been - copied or transferred from the callee. Using `owned` arguments without the - transfer sigil (`^`) usually results in values being copied. - ### Transfer implementation details In Mojo, you shouldn't conflate "ownership transfer" with a "move @@ -463,3 +447,16 @@ This shadow copy typically adds no overhead, because small types like `object` are cheap to copy. However, copying large types that allocate heap storage can be expensive. (For example, copying `List` or `Dict` types, or copying large numbers of strings.) + +### Borrowed versus owned in `def` functions + +The difference between `borrowed` and `owned` in a `def` function may be a +little subtle. In both cases, you can end up with a uniquely-owned value that's +a copy of the original value. + +* The `borrowed` argument always gets an immutable reference or a local copy. + You can't transfer a value into a `borrowed` argument. + +* The `owned` argument always gets a uniquely owned value, which may have been + copied or transferred from the callee. Using `owned` arguments without the + transfer sigil (`^`) usually results in values being copied. From d6fdf0cac5a987c030f5bc4da0f0bd9ba0ff112e Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Wed, 27 Nov 2024 14:59:51 -0800 Subject: [PATCH 038/119] Format python with ruff MODULAR_ORIG_COMMIT_REV_ID: 868691303b9bc9874a7b80352a2acabf40aeb7ae --- stdlib/test/python/my_module.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/stdlib/test/python/my_module.py b/stdlib/test/python/my_module.py index c78c39556e..8147b0a382 100644 --- a/stdlib/test/python/my_module.py +++ b/stdlib/test/python/my_module.py @@ -25,8 +25,7 @@ def __init__(self, bar): class AbstractPerson(ABC): @abstractmethod - def method(self): - ... + def method(self): ... def my_function(name): From 2a01d0863d50effc29028ed36b5e12bb26380802 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Wed, 27 Nov 2024 15:48:14 -0800 Subject: [PATCH 039/119] [stdlib] Remove unused branch from `SIMD.write_to` Due to various changes this ended up with an unused branch, snprintf is no longer used for any dtypes. MODULAR_ORIG_COMMIT_REV_ID: e375d7f0f5c248cc1b164fafdd9a1092066bef0a --- stdlib/src/builtin/simd.mojo | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 60ed1aaebf..14e7075d53 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -3369,24 +3369,10 @@ fn _write_scalar[ elif dtype.is_floating_point(): _write_float(writer, value) - # TODO: bring in modern int formatter and remove GPU specific code + # TODO(MSTDL-1039): bring in performant integer to string formatter elif dtype.is_integral(): - - @parameter - if is_gpu() or dtype.is_integral(): - var err = _try_write_int(writer, value) - if err: - abort( - "unreachable: unexpected write int failure condition: " - + str(err.value()) - ) - else: - # Stack allocate enough bytes to store any formatted Scalar value. - alias size: Int = _calc_format_buffer_size[dtype]() - var buf = InlineArray[UInt8, size](fill=0) - var wrote = _snprintf[_get_dtype_printf_format[dtype]()]( - buf.unsafe_ptr(), size, value - ) - # SAFETY: - # Create a slice to only those bytes in `buf` that have been initialized. - writer.write_bytes(Span[Byte](buf)[:wrote]) + _ = _try_write_int(writer, value) + else: + constrained[ + False, "unable to write dtype, only integral/float/bool supported" + ]() From eadf7d65630ca2f88a930473cafba10ac369cec3 Mon Sep 17 00:00:00 2001 From: modularbot Date: Thu, 28 Nov 2024 03:32:12 +0000 Subject: [PATCH 040/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024112802 --- examples/life/magic.lock | 12027 ++++++++++++++++++++++++++++++++ examples/magic.lock | 1051 ++- examples/notebooks/magic.lock | 1106 ++- examples/operators/magic.lock | 1085 ++- magic.lock | 1104 ++- 5 files changed, 14118 insertions(+), 2255 deletions(-) create mode 100644 examples/life/magic.lock diff --git a/examples/life/magic.lock b/examples/life/magic.lock new file mode 100644 index 0000000000..199886c1ec --- /dev/null +++ b/examples/life/magic.lock @@ -0,0 +1,12027 @@ +version: 5 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-ha770c72_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-devel-1.11.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-tools-1.11.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-he02047a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-he02047a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.31.0-h804f50b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.7-h2774228_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.7-h3ed165c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h08b1b5d_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.0-hdb1a16f_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fluidsynth-2.3.7-h4f58cef_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.15.0-h8dda3cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.22.5-h0a1ffab_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-9.0.0-hbf49d6b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.69-h883460d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-1.11.0-h8af1aa0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-devel-1.11.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-lib-1.11.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-tools-1.11.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.22.5-h0a1ffab_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.22.5-h0a1ffab_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.31.0-h3888205_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.7-hd54d049_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.43.4-h2f0025b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.7-h2a74887_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-h680d130_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.1-h57736b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.4-hbac51e1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.9-he755bbd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h57736b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2024.1-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fluidsynth-2.3.7-h80fea77_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libflac-1.4.3-hb765f3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.31.0-h8d8be31_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.7-hf9b8971_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-hda0f12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- kind: conda + name: _libgcc_mutex + version: '0.1' + build: conda_forge + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + license: None + size: 2562 + timestamp: 1578324546067 +- kind: conda + name: _openmp_mutex + version: '4.5' + build: 2_gnu + build_number: 16 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- kind: conda + name: _openmp_mutex + version: '4.5' + build: 2_gnu + build_number: 16 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- kind: conda + name: aiohappyeyeballs + version: 2.4.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda + sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac + md5: ec763b0a58960558ca0ad7255a51a237 + depends: + - python >=3.8.0 + license: PSF-2.0 + license_family: PSF + size: 19271 + timestamp: 1727779893392 +- kind: conda + name: aiohttp + version: 3.11.7 + build: py312h178313f_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda + sha256: e95adfd637644c9a0641bc5fbec04d53b19330568971a24021253e5054f7750e + md5: a1dc198dad91736555c27caa420029b1 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + license: MIT AND Apache-2.0 + license_family: Apache + size: 909778 + timestamp: 1732220397535 +- kind: conda + name: aiohttp + version: 3.11.7 + build: py312h998013c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda + sha256: 6f5fc3177188871418f4112e87b708499f6c9c484e175ad8c3a2e08554143e85 + md5: 6d8e94bda91469c00eb617a9cdb7f622 + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + license: MIT AND Apache-2.0 + license_family: Apache + size: 870661 + timestamp: 1732220535266 +- kind: conda + name: aiohttp + version: 3.11.7 + build: py312hcc812fe_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda + sha256: 932bdef3892216f6219bb604319a63fe99a0780acf780d4265bcf10f906ade6b + md5: a5210c6947a961dec22d272c4bed586a + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + license: MIT AND Apache-2.0 + license_family: Apache + size: 900629 + timestamp: 1732220481990 +- kind: conda + name: aiosignal + version: 1.3.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 + sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 + md5: d1e1eb7e21a9e2c74279d87dafb68156 + depends: + - frozenlist >=1.1.0 + - python >=3.7 + license: Apache-2.0 + license_family: APACHE + size: 12730 + timestamp: 1667935912504 +- kind: conda + name: alsa-lib + version: 1.2.13 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda + sha256: 4141180b0304559fefa8ca66f1cc217a1d957b03aa959f955daf33718162042f + md5: f643bb02c4bbcfe7de161a8ca5df530b + depends: + - libgcc >=13 + license: LGPL-2.1-or-later + license_family: GPL + size: 591318 + timestamp: 1731489774660 +- kind: conda + name: alsa-lib + version: 1.2.13 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda + sha256: f507b58f77eabc0cc133723cb7fc45c053d551f234df85e70fb3ede082b0cd53 + md5: ae1370588aa6a5157c34c73e9bbb36a0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: LGPL-2.1-or-later + license_family: GPL + size: 560238 + timestamp: 1731489643707 +- kind: conda + name: annotated-types + version: 0.7.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f + md5: 7e9f4612544c8edbfd6afad17f1bd045 + depends: + - python >=3.7 + - typing-extensions >=4.0.0 + license: MIT + license_family: MIT + size: 18235 + timestamp: 1716290348421 +- kind: conda + name: anyio + version: 4.6.2.post1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 + md5: 688697ec5e9588bdded167d19577625b + depends: + - exceptiongroup >=1.0.2 + - idna >=2.8 + - python >=3.9 + - sniffio >=1.1 + - typing_extensions >=4.1 + constrains: + - uvloop >=0.21.0b1 + - trio >=0.26.1 + license: MIT + license_family: MIT + size: 109864 + timestamp: 1728935803440 +- kind: conda + name: aom + version: 3.9.1 + build: h7bae524_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda + sha256: ec238f18ce8140485645252351a0eca9ef4f7a1c568a420f240a585229bc12ef + md5: 7adba36492a1bb22d98ffffe4f6fc6de + depends: + - __osx >=11.0 + - libcxx >=16 + license: BSD-2-Clause + license_family: BSD + size: 2235747 + timestamp: 1718551382432 +- kind: conda + name: aom + version: 3.9.1 + build: hac33072_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda + sha256: b08ef033817b5f9f76ce62dfcac7694e7b6b4006420372de22494503decac855 + md5: 346722a0be40f6edc53f12640d301338 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 2706396 + timestamp: 1718551242397 +- kind: conda + name: aom + version: 3.9.1 + build: hcccb83c_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda + sha256: ac438ce5d3d3673a9188b535fc7cda413b479f0d52536aeeac1bd82faa656ea0 + md5: cc744ac4efe5bcaa8cca51ff5b850df0 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 3250813 + timestamp: 1718551360260 +- kind: conda + name: asgiref + version: 3.8.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + sha256: 85fc8f54361b922d744c8728a7a711cab390b78941e18a3570dabfac8169e5f9 + md5: b5c2e1034ccc76fb14031637924880eb + depends: + - python >=3.8 + - typing_extensions >=4 + license: BSD-3-Clause + license_family: BSD + size: 26347 + timestamp: 1711269034814 +- kind: conda + name: attr + version: 2.5.1 + build: h166bdaf_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 + sha256: 82c13b1772c21fc4a17441734de471d3aabf82b61db9b11f4a1bd04a9c4ac324 + md5: d9c69a24ad678ffce24c6543a0176b00 + depends: + - libgcc-ng >=12 + license: GPL-2.0-or-later + license_family: GPL + size: 71042 + timestamp: 1660065501192 +- kind: conda + name: attr + version: 2.5.1 + build: h4e544f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 + sha256: 2c793b48e835a8fac93f1664c706442972a0206963bf8ca202e83f7f4d29a7d7 + md5: 1ef6c06fec1b6f5ee99ffe2152e53568 + depends: + - libgcc-ng >=12 + license: GPL-2.0-or-later + license_family: GPL + size: 74992 + timestamp: 1660065534958 +- kind: conda + name: attrs + version: 24.2.0 + build: pyh71513ae_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 + md5: 6732fa52eb8e66e5afeb32db8701a791 + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 56048 + timestamp: 1722977241383 +- kind: conda + name: aws-c-auth + version: 0.8.0 + build: h9b725a8_10 + build_number: 10 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda + sha256: 63cb8c25e0a26be4261d4271de525e7e33aefe9d9b001b8abfa5c9ac69c3dab3 + md5: 17c90d9eb8c6842fd739dc5445ce9962 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.1,<0.9.2.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + license: Apache-2.0 + license_family: Apache + size: 92355 + timestamp: 1731733738919 +- kind: conda + name: aws-c-auth + version: 0.8.0 + build: hac900a4_10 + build_number: 10 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda + sha256: 85c8500ae0570f0d39e6661a120c653e43f0f5f984e2954c44fd358a87776892 + md5: 9ecaef75ebd666dda7caa79154183b02 + depends: + - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.1,<0.9.2.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 111853 + timestamp: 1731733547677 +- kind: conda + name: aws-c-auth + version: 0.8.0 + build: hb88c0a9_10 + build_number: 10 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda + sha256: d2837a84e6bd7d993a83e79f9e240e1465e375f3d57149ea5b1927c6a4133bcc + md5: 409b7ee6d3473cc62bda7280f6ac20d0 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.1,<0.9.2.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 107163 + timestamp: 1731733534767 +- kind: conda + name: aws-c-cal + version: 0.8.0 + build: h35473ba_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + sha256: 3327a9e65ec531b0c55d17bbcdc436b4e641af1f293d1c2f50e0f16aa79fde60 + md5: 48dc0b3576513622673d3f5f3d163b62 + depends: + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 49714 + timestamp: 1731678553709 +- kind: conda + name: aws-c-cal + version: 0.8.0 + build: h5d7ee29_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + sha256: 2a8c09b33400cf2b7d658e63fd5a6f9b6e9626458f6213b904592fc15220bc92 + md5: 92734dad83d22314205ba73b679710d2 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 39966 + timestamp: 1731678721786 +- kind: conda + name: aws-c-cal + version: 0.8.0 + build: hecf86a2_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + sha256: 220a37955c120bf2f565fbd5320a82fc4c8b550b2449294bc0509c296cfcb9fa + md5: c54459d686ad9d0502823cacff7e8423 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 47477 + timestamp: 1731678510949 +- kind: conda + name: aws-c-common + version: 0.10.3 + build: h5505292_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda + sha256: bb2c1038726d31ffd2d35a5764f80bcd670b6a1c753aadfd261aecb9f88db6d8 + md5: 4150339e3b08db33fe4c436340b1d7f6 + depends: + - __osx >=11.0 + license: Apache-2.0 + license_family: Apache + size: 221524 + timestamp: 1731567512057 +- kind: conda + name: aws-c-common + version: 0.10.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda + sha256: 95ca372a0e1bb8dad421751de6aa44d37d87dd69c33a48faca1ae6efa30f2af0 + md5: 64f523ba00b75fdcb33a4eea827d3d19 + depends: + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 257859 + timestamp: 1731567310573 +- kind: conda + name: aws-c-common + version: 0.10.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda + sha256: 90bd2ff40b65acb62f11e2500ee7b7e85ac77d2e332429002f4c1da949bec27f + md5: ff3653946d34a6a6ba10babb139d96ef + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 237137 + timestamp: 1731567278052 +- kind: conda + name: aws-c-compression + version: 0.3.0 + build: h4c7db1d_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda + sha256: 8dba3d48a7230ccd2a6ea8d88c0e1b6caf0a39b14a2b2f0255a413fcfce8ad0a + md5: ee074857cec335bb83692771b06160a4 + depends: + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 19696 + timestamp: 1731678729046 +- kind: conda + name: aws-c-compression + version: 0.3.0 + build: h5d7ee29_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda + sha256: a52ea62bf08aed3af079e16d1738f3d2a7fcdd1d260289ae27ae96298e15d12a + md5: 15566c36b0cf5f314e3bee7f7cc796b5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + license: Apache-2.0 + license_family: Apache + size: 18204 + timestamp: 1731678916439 +- kind: conda + name: aws-c-compression + version: 0.3.0 + build: hf42f96a_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda + sha256: 210ba4fff1c9500fe02de1dae311ce723bfa313a2d21b72accd745f736f56fce + md5: 257f4ae92fe11bd8436315c86468c39b + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 19034 + timestamp: 1731678703956 +- kind: conda + name: aws-c-event-stream + version: 0.5.0 + build: h13ead76_7 + build_number: 7 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda + sha256: 386965fab5f0bed4a6109cdba32579f16bee1b0f76ce1db840ce6f7070188f9f + md5: 55a901b6d4fb9ce1bc8328925b229f0b + depends: + - __osx >=11.0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + license: Apache-2.0 + license_family: Apache + size: 47528 + timestamp: 1731714690911 +- kind: conda + name: aws-c-event-stream + version: 0.5.0 + build: h1ffe551_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda + sha256: 3b780d6483baa889e8df5aa66ab3c439a9c81331cf2a4799e373f4174768ddd9 + md5: 7cce4dfab184f4bbdfc160789251b3c5 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: Apache + size: 53500 + timestamp: 1731714597524 +- kind: conda + name: aws-c-event-stream + version: 0.5.0 + build: h9bacb8c_7 + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda + sha256: 2b7bb475330942d94bc359171df19d0cf8b326f15c0c7903a59da54a8add621e + md5: 694020125b66632d6577456d2d9d3c74 + depends: + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: Apache + size: 55054 + timestamp: 1731714599360 +- kind: conda + name: aws-c-http + version: 0.9.1 + build: hab05fe4_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda + sha256: 90a325b6f5371dd2203b643de646967fe57a4bcbbee8c91086abbf9dd733d59a + md5: fb409f7053fa3dbbdf6eb41045a87795 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 196945 + timestamp: 1731714483279 +- kind: conda + name: aws-c-http + version: 0.9.1 + build: hf483d09_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda + sha256: fca9ed0f0895bab9bf737c8d8a3314556cb893d45c40f0656f21a93502db3089 + md5: d880c40b8fc7d07374c036f93f1359d2 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + license: Apache-2.0 + license_family: Apache + size: 153315 + timestamp: 1731714621306 +- kind: conda + name: aws-c-http + version: 0.9.1 + build: hf4e072c_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda + sha256: b9a262451fc91d2fd4ccfcb6dc11ac61d0152c0db765bfe8d089e3e1b70c2150 + md5: fddc197912c16cb95276077f6c7917c5 + depends: + - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 190363 + timestamp: 1731714613945 +- kind: conda + name: aws-c-io + version: 0.15.2 + build: h10eb1bc_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda + sha256: b8e4206ee1fa58453535c1c08c6aca5bdc92cde026bf7ec20d038786f813239b + md5: 7cdf478bb4feae1a93319f6e3381b8a9 + depends: + - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + - s2n >=1.5.9,<1.5.10.0a0 + license: Apache-2.0 + license_family: Apache + size: 162624 + timestamp: 1731702570075 +- kind: conda + name: aws-c-io + version: 0.15.2 + build: h39f8ad8_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda + sha256: b14e32f024f6be1610dccfdb6371e101cba204d24f37c2a63d9b6380ac74ac17 + md5: 3b49f1dd8f20bead8b222828cfdad585 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + license: Apache-2.0 + license_family: Apache + size: 137610 + timestamp: 1731702839896 +- kind: conda + name: aws-c-io + version: 0.15.2 + build: hdeadb07_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda + sha256: 1636136a5d882b4aaa13ea8b7de8cf07038a6878872e3c434df9daf478cee594 + md5: 461a1eaa075fd391add91bcffc9de0c1 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + - s2n >=1.5.9,<1.5.10.0a0 + license: Apache-2.0 + license_family: Apache + size: 159368 + timestamp: 1731702542973 +- kind: conda + name: aws-c-mqtt + version: 0.11.0 + build: h28a5e6a_8 + build_number: 8 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda + sha256: aad8c9a5c24953cdebf17efa7ec06b5639e14072d4fa70c5c0607d7ad913ba88 + md5: 5250ce3b5154c0347b7576015a7c6cef + depends: + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.1,<0.9.2.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 169040 + timestamp: 1731734203264 +- kind: conda + name: aws-c-mqtt + version: 0.11.0 + build: h68a0d7e_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda + sha256: 837c24c105624e16ace94b4b566ffe45231ff275339c523571ebd45946926156 + md5: 9e3ac70d27e7591b1310a690768cfe27 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.1,<0.9.2.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + license: Apache-2.0 + license_family: Apache + size: 134573 + timestamp: 1731734281038 +- kind: conda + name: aws-c-mqtt + version: 0.11.0 + build: h7bd072d_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda + sha256: 51d3d87a47c642096e2ce389a169aec2e26958042e9130857552a12d65a19045 + md5: 0e9d67838114c0dbd267a9311268b331 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.1,<0.9.2.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 194447 + timestamp: 1731734668760 +- kind: conda + name: aws-c-s3 + version: 0.7.2 + build: h29aef15_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + sha256: 387e4df97529d1849a774082b1fed78c7870effc02ed4c2b45961615a0516b64 + md5: fbf4af2c93ae67f175583c9185be4133 + depends: + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.1,<0.9.2.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 117212 + timestamp: 1732679211893 +- kind: conda + name: aws-c-s3 + version: 0.7.2 + build: h3a84f74_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + sha256: c0ae38eb1f878157323afdd002229e9eeb739f622e028447330805c030c50a9f + md5: a5f883ce16928e898856b5bd8d1bee57 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.1,<0.9.2.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 113549 + timestamp: 1732679091663 +- kind: conda + name: aws-c-s3 + version: 0.7.2 + build: h840aca7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + sha256: 30e4bed9d008fb79f5e84ecbea0f21030ad5d60cb5c55a962df90721aa98fc42 + md5: 63100ff62fdff4a6afcea38841036027 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-http >=0.9.1,<0.9.2.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + license: Apache-2.0 + license_family: Apache + size: 97042 + timestamp: 1732679268030 +- kind: conda + name: aws-c-sdkutils + version: 0.2.1 + build: h4c7db1d_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda + sha256: 3d2b079a361888197894308a93fec95666c6abfcc86c979ae36f1f9cb223dfb3 + md5: 45437a9bad358b25f795e77218063baf + depends: + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 58256 + timestamp: 1731687032896 +- kind: conda + name: aws-c-sdkutils + version: 0.2.1 + build: h5d7ee29_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda + sha256: ed3b272b9a345142e62f0cf9ab2a9fa909c92e09691f6a06e98ff500a1f8a303 + md5: 0f1e5bc57d4567c9d9bec8d8982828ed + depends: + - __osx >=11.0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + license: Apache-2.0 + license_family: Apache + size: 50276 + timestamp: 1731687215375 +- kind: conda + name: aws-c-sdkutils + version: 0.2.1 + build: hf42f96a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda + sha256: f6e38c79b124c34edb048c28ec58fdfc4ea8f7a218dc493195afbada48ba063b + md5: bbdd20fb1994a9f0ba98078fcb6c12ab + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 55738 + timestamp: 1731687063424 +- kind: conda + name: aws-checksums + version: 0.2.2 + build: h4c7db1d_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda + sha256: b3fa060d4fe9e8fdb7b21b8b3c5fdb61df6f02973f74245a65869100f72a3931 + md5: af22e7e1c1af348a66f938aa66192f2c + depends: + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 72081 + timestamp: 1731687244426 +- kind: conda + name: aws-checksums + version: 0.2.2 + build: h5d7ee29_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda + sha256: eb7ebe309b33a04329b3e51a7f10bb407815389dc37cc047f7d41f9c91f0d1b0 + md5: db1ed95988a8fe6c1ce0d94abdfc8e72 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + license: Apache-2.0 + license_family: Apache + size: 70184 + timestamp: 1731687342560 +- kind: conda + name: aws-checksums + version: 0.2.2 + build: hf42f96a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda + sha256: da802ace5448481c968cfec7e7a4f79f686f42df9de8e3f78c09a925c2882a79 + md5: d908d43d87429be24edfb20e96543c20 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 72744 + timestamp: 1731687193373 +- kind: conda + name: aws-crt-cpp + version: 0.29.5 + build: h0e61686_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda + sha256: 1d7bc75a81cdcd992ebee9b06be6a63963203d7fc2537099bf91fda0573c3be6 + md5: 7143a281febcabfc242a458b7bc12048 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.1,<0.9.2.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: Apache + size: 353633 + timestamp: 1732704043097 +- kind: conda + name: aws-crt-cpp + version: 0.29.5 + build: h6068a22_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda + sha256: 15eba2ca46b10a17d60b26d7a6db222f08e1d63c55eb76a19f16c30e06679fe4 + md5: 6c0a760285cb79c46a99b15449ecb9ac + depends: + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.1,<0.9.2.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: Apache + size: 283812 + timestamp: 1732704031684 +- kind: conda + name: aws-crt-cpp + version: 0.29.5 + build: h8bcca62_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda + sha256: 371c509c0cd22360cd39963189ba7aa290b08b7384dd4414895f6186e2aecf7e + md5: ef024742bb2501bd3d7f10b0f9ce5a4d + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.1,<0.9.2.0a0 + - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libcxx >=18 + license: Apache-2.0 + license_family: Apache + size: 236161 + timestamp: 1732704224415 +- kind: conda + name: aws-sdk-cpp + version: 1.11.449 + build: h775d804_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda + sha256: dae09cbccc5af7282a9b74b424a4d451362fe3b31eb2ccbf571db321f9619c52 + md5: 6e691206e10feb236ca7c0cf985797a8 + depends: + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 2794659 + timestamp: 1732184111138 +- kind: conda + name: aws-sdk-cpp + version: 1.11.449 + build: h8577fd2_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda + sha256: ddd7aaa925ac3d569aa3dc1fe0239fa5c57034a1360683c41d310d6805f0d5bd + md5: 3c789cd7093639a2662b14b87f11b04c + depends: + - __osx >=11.0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 2737395 + timestamp: 1732184718613 +- kind: conda + name: aws-sdk-cpp + version: 1.11.449 + build: hdaa582e_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda + sha256: a6fdba49b87ad3b92c219f60ac31e0d0b4fea7e651efe6d668288e5a0f7a1755 + md5: 0dca4b37cf80312f8ef84b649e6ad3a3 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.3,<0.10.4.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 2951998 + timestamp: 1732184141 +- kind: conda + name: azure-core-cpp + version: 1.14.0 + build: h1887c18_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 338650 + timestamp: 1728055589907 +- kind: conda + name: azure-core-cpp + version: 1.14.0 + build: h5cfcd09_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 345117 + timestamp: 1728053909574 +- kind: conda + name: azure-core-cpp + version: 1.14.0 + build: hd50102c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 294299 + timestamp: 1728054014060 +- kind: conda + name: azure-identity-cpp + version: 1.10.0 + build: h113e628_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 232351 + timestamp: 1728486729511 +- kind: conda + name: azure-identity-cpp + version: 1.10.0 + build: h47b0b28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 217132 + timestamp: 1728488096615 +- kind: conda + name: azure-identity-cpp + version: 1.10.0 + build: hc602bab_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 166907 + timestamp: 1728486882502 +- kind: conda + name: azure-storage-blobs-cpp + version: 12.13.0 + build: h185ecfd_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + license_family: MIT + size: 502934 + timestamp: 1728580241002 +- kind: conda + name: azure-storage-blobs-cpp + version: 12.13.0 + build: h3cf044e_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + license_family: MIT + size: 549342 + timestamp: 1728578123088 +- kind: conda + name: azure-storage-blobs-cpp + version: 12.13.0 + build: h7585a09_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + license: MIT + license_family: MIT + size: 438636 + timestamp: 1728578216193 +- kind: conda + name: azure-storage-common-cpp + version: 12.8.0 + build: h1b94036_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 140832 + timestamp: 1728565334900 +- kind: conda + name: azure-storage-common-cpp + version: 12.8.0 + build: h736e048_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 149312 + timestamp: 1728563338704 +- kind: conda + name: azure-storage-common-cpp + version: 12.8.0 + build: h9ca1f76_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 121278 + timestamp: 1728563418777 +- kind: conda + name: azure-storage-files-datalake-cpp + version: 12.12.0 + build: h37d6d07_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + license_family: MIT + size: 260547 + timestamp: 1728730924071 +- kind: conda + name: azure-storage-files-datalake-cpp + version: 12.12.0 + build: ha633028_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + license_family: MIT + size: 287366 + timestamp: 1728729530295 +- kind: conda + name: azure-storage-files-datalake-cpp + version: 12.12.0 + build: hcdd55da_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + license: MIT + license_family: MIT + size: 196032 + timestamp: 1728729672889 +- kind: conda + name: backoff + version: 2.2.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 + sha256: b1cf7df15741e5fbc57e22a3a89db427383335aaab22ddc1b30710deeb0130de + md5: 4600709bd85664d8606ae0c76642f8db + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 17501 + timestamp: 1665004860081 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312h2ec8cdc_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + license: MIT + license_family: MIT + size: 349867 + timestamp: 1725267732089 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312h6f74592_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + license: MIT + license_family: MIT + size: 356878 + timestamp: 1725267878508 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312hde4cb15_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + license: MIT + license_family: MIT + size: 339360 + timestamp: 1725268143995 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h4bc722e_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h68df207_7 + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h99b78c6_7 + build_number: 7 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- kind: conda + name: c-ares + version: 1.34.3 + build: h5505292_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda + sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 + md5: fb72102e8a8f9bcd38e40af09ff41c42 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 179318 + timestamp: 1732447193278 +- kind: conda + name: c-ares + version: 1.34.3 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda + sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 + md5: 0cd9ebf65479cdceb6a4888b764dafcd + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 214791 + timestamp: 1732447020593 +- kind: conda + name: c-ares + version: 1.34.3 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda + sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 + md5: ee228789a85f961d14567252a03e725f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 204857 + timestamp: 1732447031823 +- kind: conda + name: ca-certificates + version: 2024.8.30 + build: hbcca054_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda + sha256: afee721baa6d988e27fef1832f68d6f32ac8cc99cdf6015732224c2841a09cea + md5: c27d1c142233b5bc9ca570c6e2e0c244 + license: ISC + size: 159003 + timestamp: 1725018903918 +- kind: conda + name: ca-certificates + version: 2024.8.30 + build: hcefe29a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda + sha256: 2a2d827bee3775a85f0f1b2f2089291475c4416336d1b3a8cbce2964db547af8 + md5: 70e57e8f59d2c98f86b49c69e5074be5 + license: ISC + size: 159106 + timestamp: 1725020043153 +- kind: conda + name: ca-certificates + version: 2024.8.30 + build: hf0a4a13_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda + sha256: 2db1733f4b644575dbbdd7994a8f338e6ef937f5ebdb74acd557e9dda0211709 + md5: 40dec13fd8348dbe303e57be74bd3d35 + license: ISC + size: 158482 + timestamp: 1725019034582 +- kind: conda + name: cairo + version: 1.18.0 + build: hb4a6bf7_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda + sha256: f7603b7f6ee7c6e07c23d77302420194f4ec1b8e8facfff2b6aab17c7988a102 + md5: 08bd0752f3de8a2d8a35fd012f09531f + depends: + - __osx >=11.0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libcxx >=16 + - libglib >=2.80.3,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.43.4,<1.0a0 + - zlib + license: LGPL-2.1-only or MPL-1.1 + size: 899126 + timestamp: 1721139203735 +- kind: conda + name: cairo + version: 1.18.0 + build: hdb1a16f_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.0-hdb1a16f_3.conda + sha256: 8a747ad6ce32228a85c80bef8ec7387d71f8d2b0bf637edb56ff33e09794c616 + md5: 080659f02bf2202c57f1cda4f9e51f21 + depends: + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libgcc-ng >=12 + - libglib >=2.80.3,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.43.4,<1.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + - zlib + license: LGPL-2.1-only or MPL-1.1 + size: 966709 + timestamp: 1721138947987 +- kind: conda + name: cairo + version: 1.18.0 + build: hebfffa5_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda + sha256: aee5b9e6ef71cdfb2aee9beae3ea91910ca761c01c0ef32052e3f94a252fa173 + md5: fceaedf1cdbcb02df9699a0d9b005292 + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libgcc-ng >=12 + - libglib >=2.80.3,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.43.2,<1.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + - zlib + license: LGPL-2.1-only or MPL-1.1 + size: 983604 + timestamp: 1721138900054 +- kind: conda + name: certifi + version: 2024.8.30 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda + sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f + md5: 12f7d00853807b0531775e9be891cb11 + depends: + - python >=3.7 + license: ISC + size: 163752 + timestamp: 1725278204397 +- kind: conda + name: cffi + version: 1.17.1 + build: py312h06ac9bb_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 294403 + timestamp: 1725560714366 +- kind: conda + name: cffi + version: 1.17.1 + build: py312h0fad829_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 281206 + timestamp: 1725560813378 +- kind: conda + name: cffi + version: 1.17.1 + build: py312hac81daf_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 312892 + timestamp: 1725561779888 +- kind: conda + name: charset-normalizer + version: 3.4.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda + sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 + md5: a374efa97290b8799046df7c5ca17164 + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 47314 + timestamp: 1728479405343 +- kind: conda + name: click + version: 8.1.7 + build: unix_pyh707e725_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec + md5: f3ad426304898027fc619827ff428eca + depends: + - __unix + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 84437 + timestamp: 1692311973840 +- kind: conda + name: colorama + version: 0.4.6 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 + md5: 3faab06a954c2a04039983f2c4a50d99 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + size: 25170 + timestamp: 1666700778190 +- kind: conda + name: datasets + version: 3.1.0 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + sha256: c3329f96a797fcec28a0bc42372bb253ce6434cbd6d9b5dc8e8417a247c43027 + md5: cd6278d231cd340f2f0c600037df5a98 + depends: + - aiohttp + - dill >=0.3.0,<0.3.9 + - filelock + - fsspec >=2023.1.0,<=2024.9.0 + - huggingface_hub >=0.23.0 + - multiprocess <0.70.17 + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=15.0.0 + - python >=3.9 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.32.2 + - tqdm >=4.66.3 + license: Apache-2.0 + license_family: Apache + size: 332680 + timestamp: 1731706749584 +- kind: conda + name: dav1d + version: 1.2.1 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda + sha256: 33fe66d025cf5bac7745196d1a3dd7a437abcf2dbce66043e9745218169f7e17 + md5: 6e5a87182d66b2d1328a96b61ca43a62 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 347363 + timestamp: 1685696690003 +- kind: conda + name: dav1d + version: 1.2.1 + build: hb547adb_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda + sha256: 93e077b880a85baec8227e8c72199220c7f87849ad32d02c14fb3807368260b8 + md5: 5a74cdee497e6b65173e10d94582fae6 + license: BSD-2-Clause + license_family: BSD + size: 316394 + timestamp: 1685695959391 +- kind: conda + name: dav1d + version: 1.2.1 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + sha256: 22053a5842ca8ee1cf8e1a817138cdb5e647eb2c46979f84153f6ad7bde73020 + md5: 418c6ca5929a611cbd69204907a83995 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 760229 + timestamp: 1685695754230 +- kind: conda + name: dbus + version: 1.13.6 + build: h12b9eeb_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 + sha256: 5fe76bdf27a142cfb9da0fb3197c562e528d2622b573765bee5c9904cf5e6b6b + md5: f3d63805602166bac09386741e00935e + depends: + - expat >=2.4.2,<3.0a0 + - libgcc-ng >=9.4.0 + - libglib >=2.70.2,<3.0a0 + license: GPL-2.0-or-later + license_family: GPL + size: 672759 + timestamp: 1640113663539 +- kind: conda + name: dbus + version: 1.13.6 + build: h5008d03_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 + md5: ecfff944ba3960ecb334b9a2663d708d + depends: + - expat >=2.4.2,<3.0a0 + - libgcc-ng >=9.4.0 + - libglib >=2.70.2,<3.0a0 + license: GPL-2.0-or-later + license_family: GPL + size: 618596 + timestamp: 1640112124844 +- kind: conda + name: deprecated + version: 1.2.15 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee + md5: ca75e235b44ab995655fae392f99595e + depends: + - python >=2.7 + - wrapt <2,>=1.10 + license: MIT + license_family: MIT + size: 14182 + timestamp: 1731836933516 +- kind: conda + name: dill + version: 0.3.8 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 + md5: 78745f157d56877a2c6e7b386f66f3e2 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + size: 88169 + timestamp: 1706434833883 +- kind: conda + name: dnspython + version: 2.7.0 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda + sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 + md5: 0adf8f63d500d20418656289249533f9 + depends: + - python >=3.9.0,<4.0.0 + - sniffio + constrains: + - cryptography >=43 + - wmi >=1.5.1 + - h2 >=4.1.0 + - trio >=0.23 + - httpcore >=1.0.0 + - aioquic >=1.0.0 + - httpx >=0.26.0 + - idna >=3.7 + license: ISC + license_family: OTHER + size: 172740 + timestamp: 1728178868478 +- kind: conda + name: email-validator + version: 2.2.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda + sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 + md5: 3067adf57ee658ddf5bfad47b0041ce4 + depends: + - dnspython >=2.0.0 + - idna >=2.0.0 + - python >=3.7 + license: Unlicense + size: 44157 + timestamp: 1718984716782 +- kind: conda + name: email_validator + version: 2.2.0 + build: hd8ed1ab_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 + md5: 0214a004f7cf5ac28fc10a390dfc47ee + depends: + - email-validator >=2.2.0,<2.2.1.0a0 + license: Unlicense + size: 6690 + timestamp: 1718984720419 +- kind: conda + name: exceptiongroup + version: 1.2.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 + md5: d02ae936e42063ca46af6cdad2dbd1e0 + depends: + - python >=3.7 + license: MIT and PSF-2.0 + size: 20418 + timestamp: 1720869435725 +- kind: conda + name: expat + version: 2.6.4 + build: h5888daf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + sha256: 1848c7db9e264e3b8036ee133d570dd880422983cd20dd9585a505289606d276 + md5: 1d6afef758879ef5ee78127eb4cd2c4a + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat 2.6.4 h5888daf_0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 138145 + timestamp: 1730967050578 +- kind: conda + name: expat + version: 2.6.4 + build: h5ad3122_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda + sha256: 13905ad49c2f43776bac0e464ffd3c9ec10ef35cc7dd7e187af6f66f843fa29a + md5: e8f1d587055376ea2419cc78696abd0b + depends: + - libexpat 2.6.4 h5ad3122_0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 130354 + timestamp: 1730967212801 +- kind: conda + name: fastapi + version: 0.115.5 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + sha256: da2833cc2ea5789abc2a6899be02ba0a769386d4913ff182bd1a9458bea40c34 + md5: cfe0f8cd904ab19c36ba50eb5179ebe0 + depends: + - email_validator >=2.0.0 + - fastapi-cli >=0.0.5 + - httpx >=0.23.0 + - jinja2 >=2.11.2 + - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 + - python >=3.9 + - python-multipart >=0.0.7 + - starlette >=0.40.0,<0.42.0 + - typing_extensions >=4.8.0 + - uvicorn-standard >=0.12.0 + license: MIT + license_family: MIT + size: 73541 + timestamp: 1731452895466 +- kind: conda + name: fastapi-cli + version: 0.0.5 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda + sha256: 2294f02beff318614a737454f1a432a6f4ae22216a85b296b7041fedab293516 + md5: d141225aba450ec07c771c73ac57bb43 + depends: + - python >=3.8 + - typer >=0.12.3 + - uvicorn-standard >=0.15.0 + license: MIT + license_family: MIT + size: 14441 + timestamp: 1728947860847 +- kind: conda + name: filelock + version: 3.16.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 + md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + depends: + - python >=3.7 + license: Unlicense + size: 17357 + timestamp: 1726613593584 +- kind: conda + name: fluidsynth + version: 2.3.7 + build: h4f58cef_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/fluidsynth-2.3.7-h4f58cef_0.conda + sha256: e557d4fcb40f224180d61cc5e57fe3d5d5793a255c7d5a29546e524ef2ffa298 + md5: 0207cc67431f4d12605cae60d8d323d7 + depends: + - alsa-lib >=1.2.12,<1.3.0a0 + - jack >=1.9.22,<1.10.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libstdcxx >=13 + - portaudio >=19.6.0,<19.7.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - readline >=8.2,<9.0a0 + - sdl2 >=2.30.7,<3.0a0 + license: GPL-2.0-or-later + license_family: LGPL + size: 292770 + timestamp: 1729590405853 +- kind: conda + name: fluidsynth + version: 2.3.7 + build: h80fea77_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/fluidsynth-2.3.7-h80fea77_0.conda + sha256: e4c39119797493d4f085cd6274e123372bec77e05ef93203ccf5dee714bfd9c3 + md5: dc2fc082a05af6a790d3e8e3e6489e6c + depends: + - __osx >=11.0 + - libcxx >=17 + - libglib >=2.82.2,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - portaudio >=19.6.0,<19.7.0a0 + - readline >=8.2,<9.0a0 + - sdl2 >=2.30.7,<3.0a0 + license: GPL-2.0-or-later + license_family: LGPL + size: 234967 + timestamp: 1729590579216 +- kind: conda + name: fluidsynth + version: 2.3.7 + build: hd992666_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda + sha256: 0bf26d25ae79e6f5f01a49a00e9ba3b60b10dd4c12ec43bdba51055c26bc9dd6 + md5: dd6c7b8a1b217ef7522ca987c465651d + depends: + - __glibc >=2.17,<3.0.a0 + - alsa-lib >=1.2.12,<1.3.0a0 + - jack >=1.9.22,<1.10.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libstdcxx >=13 + - portaudio >=19.6.0,<19.7.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - readline >=8.2,<9.0a0 + - sdl2 >=2.30.7,<3.0a0 + license: GPL-2.0-or-later + license_family: LGPL + size: 279996 + timestamp: 1729590344462 +- kind: conda + name: font-ttf-dejavu-sans-mono + version: '2.37' + build: hab24e00_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b + md5: 0c96522c6bdaed4b1566d11387caaf45 + license: BSD-3-Clause + license_family: BSD + size: 397370 + timestamp: 1566932522327 +- kind: conda + name: font-ttf-inconsolata + version: '3.000' + build: h77eed37_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c + md5: 34893075a5c9e55cdafac56607368fc6 + license: OFL-1.1 + license_family: Other + size: 96530 + timestamp: 1620479909603 +- kind: conda + name: font-ttf-source-code-pro + version: '2.038' + build: h77eed37_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 + md5: 4d59c254e01d9cde7957100457e2d5fb + license: OFL-1.1 + license_family: Other + size: 700814 + timestamp: 1620479612257 +- kind: conda + name: font-ttf-ubuntu + version: '0.83' + build: h77eed37_3 + build_number: 3 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 + md5: 49023d73832ef61042f6a237cb2687e7 + license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 + license_family: Other + size: 1620504 + timestamp: 1727511233259 +- kind: conda + name: fontconfig + version: 2.15.0 + build: h1383a14_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + sha256: f79d3d816fafbd6a2b0f75ebc3251a30d3294b08af9bb747194121f5efa364bc + md5: 7b29f48742cea5d1ccb5edd839cb5621 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 234227 + timestamp: 1730284037572 +- kind: conda + name: fontconfig + version: 2.15.0 + build: h7e30c49_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + sha256: 7093aa19d6df5ccb6ca50329ef8510c6acb6b0d8001191909397368b65b02113 + md5: 8f5b0b297b59e1ac160ad4beec99dbee + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 265599 + timestamp: 1730283881107 +- kind: conda + name: fontconfig + version: 2.15.0 + build: h8dda3cd_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.15.0-h8dda3cd_1.conda + sha256: fe023bb8917c8a3138af86ef537b70c8c5d60c44f93946a87d1e8bb1a6634b55 + md5: 112b71b6af28b47c624bcbeefeea685b + depends: + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + size: 277832 + timestamp: 1730284967179 +- kind: conda + name: fonts-conda-ecosystem + version: '1' + build: '0' + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 + md5: fee5683a3f04bd15cbd8318b096a27ab + depends: + - fonts-conda-forge + license: BSD-3-Clause + license_family: BSD + size: 3667 + timestamp: 1566974674465 +- kind: conda + name: fonts-conda-forge + version: '1' + build: '0' + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38 + md5: f766549260d6815b0c52253f1fb1bb29 + depends: + - font-ttf-dejavu-sans-mono + - font-ttf-inconsolata + - font-ttf-source-code-pro + - font-ttf-ubuntu + license: BSD-3-Clause + license_family: BSD + size: 4102 + timestamp: 1566932280397 +- kind: conda + name: freetype + version: 2.12.1 + build: h267a509_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- kind: conda + name: freetype + version: 2.12.1 + build: hadb7bae_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- kind: conda + name: freetype + version: 2.12.1 + build: hf0a5ef3_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 +- kind: conda + name: frozenlist + version: 1.5.0 + build: py312h0bf5046_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda + sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 + md5: 7960352935cc95ac23883c9b8c97f2ff + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 53366 + timestamp: 1729699762631 +- kind: conda + name: frozenlist + version: 1.5.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda + sha256: 7e0c12983b20f2816b3712729b5a35ecb7ee152132ca7cf805427c62395ea823 + md5: f98e36c96b2c66d9043187179ddb04f4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 60968 + timestamp: 1729699568442 +- kind: conda + name: frozenlist + version: 1.5.0 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda + sha256: b0a9ff3e71452eed70877b2f3175d41cd85070da6deac381c5f3f61e1f19bccb + md5: 62fc11b0738ca15e0dd19b60cf280d12 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 59967 + timestamp: 1729699642726 +- kind: conda + name: fsspec + version: 2024.9.0 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc + md5: ace4329fbff4c69ab0309db6da182987 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 134378 + timestamp: 1725543368393 +- kind: conda + name: gettext + version: 0.22.5 + build: h0a1ffab_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.22.5-h0a1ffab_3.conda + sha256: 25b0b40329537f374a7394474376b01fd226e31f3ff3aa9254e8d328b23c2145 + md5: be78ccdd273e43e27e66fc1629df6576 + depends: + - gettext-tools 0.22.5 h0a1ffab_3 + - libasprintf 0.22.5 h87f4aca_3 + - libasprintf-devel 0.22.5 h87f4aca_3 + - libgcc-ng >=12 + - libgettextpo 0.22.5 h0a1ffab_3 + - libgettextpo-devel 0.22.5 h0a1ffab_3 + - libstdcxx-ng >=12 + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 481962 + timestamp: 1723626297896 +- kind: conda + name: gettext + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda + sha256: 634e11f6e6560568ede805f823a2be8634c6a0a2fa6743880ec403d925923138 + md5: 89b31a91b3ac2b7b3b0e5bc4eb99c39d + depends: + - __osx >=11.0 + - gettext-tools 0.22.5 h8414b35_3 + - libasprintf 0.22.5 h8414b35_3 + - libasprintf-devel 0.22.5 h8414b35_3 + - libcxx >=16 + - libgettextpo 0.22.5 h8414b35_3 + - libgettextpo-devel 0.22.5 h8414b35_3 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8414b35_3 + - libintl-devel 0.22.5 h8414b35_3 + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 483255 + timestamp: 1723627203687 +- kind: conda + name: gettext + version: 0.22.5 + build: he02047a_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda + sha256: c3d9a453f523acbf2b3e1c82a42edfc7c7111b4686a2180ab48cb9b51a274218 + md5: c7f243bbaea97cd6ea1edd693270100e + depends: + - __glibc >=2.17,<3.0.a0 + - gettext-tools 0.22.5 he02047a_3 + - libasprintf 0.22.5 he8f35ee_3 + - libasprintf-devel 0.22.5 he8f35ee_3 + - libgcc-ng >=12 + - libgettextpo 0.22.5 he02047a_3 + - libgettextpo-devel 0.22.5 he02047a_3 + - libstdcxx-ng >=12 + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 479452 + timestamp: 1723626088190 +- kind: conda + name: gettext-tools + version: 0.22.5 + build: h0a1ffab_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda + sha256: 9846b9d2e3d081cc8cb9ac7800c7e02a7b63bceea8619e0c51cfa271f89afdb2 + md5: 5fc8dfe3163ead62e0af82d97ce6b486 + depends: + - libgcc-ng >=12 + license: GPL-3.0-or-later + license_family: GPL + size: 2954814 + timestamp: 1723626262722 +- kind: conda + name: gettext-tools + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda + sha256: 50b530cf2326938b80330f78cf4056492fa8c6a5c7e313d92069ebbbb2f4d264 + md5: 47071f4b2915032e1d47119f779f9d9c + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8414b35_3 + license: GPL-3.0-or-later + license_family: GPL + size: 2467439 + timestamp: 1723627140130 +- kind: conda + name: gettext-tools + version: 0.22.5 + build: he02047a_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda + sha256: 0fd003953ce1ce9f4569458aab9ffaa397e3be2bc069250e2f05fd93b0ad2976 + md5: fcd2016d1d299f654f81021e27496818 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: GPL-3.0-or-later + license_family: GPL + size: 2750908 + timestamp: 1723626056740 +- kind: conda + name: gflags + version: 2.2.2 + build: h5888daf_1005 + build_number: 1005 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + size: 119654 + timestamp: 1726600001928 +- kind: conda + name: gflags + version: 2.2.2 + build: h5ad3122_1005 + build_number: 1005 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + size: 106638 + timestamp: 1726599967617 +- kind: conda + name: gflags + version: 2.2.2 + build: hf9b8971_1005 + build_number: 1005 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + license: BSD-3-Clause + license_family: BSD + size: 82090 + timestamp: 1726600145480 +- kind: conda + name: glog + version: 0.7.1 + build: h468a4a4_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 145811 + timestamp: 1718284208668 +- kind: conda + name: glog + version: 0.7.1 + build: hbabe93e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 143452 + timestamp: 1718284177264 +- kind: conda + name: glog + version: 0.7.1 + build: heb240a5_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + license: BSD-3-Clause + license_family: BSD + size: 112215 + timestamp: 1718284365403 +- kind: conda + name: googleapis-common-protos + version: 1.66.0 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda + sha256: d8d19575a827f2c62500949b9536efdd6b5406c9f546a73b6a87ac90b03a5875 + md5: 4861e30ff0cd566ea6fb4593e3b7c22a + depends: + - protobuf >=3.20.2,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 116522 + timestamp: 1731459019854 +- kind: conda + name: graphite2 + version: 1.3.13 + build: h2f0025b_1003 + build_number: 1003 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda + sha256: c7585e1fb536120583790080f3b3875c04d5f2d64eafbc87e9aa39895e4118c0 + md5: f33009add6a08358bc12d114ceec1304 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: LGPL-2.0-or-later + license_family: LGPL + size: 99453 + timestamp: 1711634223220 +- kind: conda + name: graphite2 + version: 1.3.13 + build: h59595ed_1003 + build_number: 1003 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add + md5: f87c7b7c2cb45f323ffbce941c78ab7c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: LGPL-2.0-or-later + license_family: LGPL + size: 96855 + timestamp: 1711634169756 +- kind: conda + name: graphite2 + version: 1.3.13 + build: hebf3989_1003 + build_number: 1003 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + sha256: 2eadafbfc52f5e7df3da3c3b7e5bbe34d970bea1d645ffe60b0b1c3a216657f5 + md5: 339991336eeddb70076d8ca826dac625 + depends: + - libcxx >=16 + license: LGPL-2.0-or-later + license_family: LGPL + size: 79774 + timestamp: 1711634444608 +- kind: conda + name: h11 + version: 0.14.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 + sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 + md5: b21ed0883505ba1910994f1df031a428 + depends: + - python >=3 + - typing_extensions + license: MIT + license_family: MIT + size: 48251 + timestamp: 1664132995560 +- kind: conda + name: h2 + version: 4.1.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a + md5: b748fbf7060927a6e82df7cb5ee8f097 + depends: + - hpack >=4.0,<5 + - hyperframe >=6.0,<7 + - python >=3.6.1 + license: MIT + license_family: MIT + size: 46754 + timestamp: 1634280590080 +- kind: conda + name: harfbuzz + version: 9.0.0 + build: h997cde5_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda + sha256: 5f78f5dcbbfef59b3549ecb6cc2fa9de7b22abda7c8afaf0fa787ceea37a914f + md5: 50f6825d3c4a6fca6fefdefa98081554 + depends: + - __osx >=11.0 + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libcxx >=16 + - libglib >=2.80.3,<3.0a0 + license: MIT + license_family: MIT + size: 1317509 + timestamp: 1721186764931 +- kind: conda + name: harfbuzz + version: 9.0.0 + build: hbf49d6b_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-9.0.0-hbf49d6b_1.conda + sha256: 7496782c3bc0ebbb4de9bc92a3111f42b8a57417fa31ecb87058f250215fabc9 + md5: ceb458f664cab8550fcd74fff26451db + depends: + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libgcc-ng >=12 + - libglib >=2.80.3,<3.0a0 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 1614644 + timestamp: 1721188789883 +- kind: conda + name: harfbuzz + version: 9.0.0 + build: hda332d3_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda + sha256: 973afa37840b4e55e2540018902255cfb0d953aaed6353bb83a4d120f5256767 + md5: 76b32dcf243444aea9c6b804bcfa40b8 + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libgcc-ng >=12 + - libglib >=2.80.3,<3.0a0 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 1603653 + timestamp: 1721186240105 +- kind: conda + name: hpack + version: 4.0.0 + build: pyh9f0ad1d_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 + md5: 914d6646c4dbb1fd3ff539830a12fd71 + depends: + - python + license: MIT + license_family: MIT + size: 25341 + timestamp: 1598856368685 +- kind: conda + name: httpcore + version: 1.0.7 + build: pyh29332c3_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df + md5: 2ca8e6dbc86525c8b95e3c0ffa26442e + depends: + - python >=3.8 + - h11 >=0.13,<0.15 + - h2 >=3,<5 + - sniffio 1.* + - anyio >=3.0,<5.0 + - certifi + license: BSD-3-Clause + license_family: BSD + size: 48959 + timestamp: 1731707562362 +- kind: conda + name: httptools + version: 0.6.4 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 + md5: 8b1160b32557290b64d5be68db3d996d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + size: 101872 + timestamp: 1732707756745 +- kind: conda + name: httptools + version: 0.6.4 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 + md5: 5e70a6de59352f9a52e9caa7f3447390 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + size: 101255 + timestamp: 1732707891645 +- kind: conda + name: httptools + version: 0.6.4 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be + md5: e1747a8e8d2aca5499aaea9993bf31ff + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT + size: 85623 + timestamp: 1732707871414 +- kind: conda + name: httpx + version: 0.27.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + sha256: 1a33f160548bf447e15c0273899d27e4473f1d5b7ca1441232ec2d9d07c56d03 + md5: 7e9ac3faeebdbd7b53b462c41891e7f7 + depends: + - anyio + - certifi + - httpcore 1.* + - idna + - python >=3.8 + - sniffio + license: BSD-3-Clause + license_family: BSD + size: 65085 + timestamp: 1724778453275 +- kind: conda + name: huggingface_hub + version: 0.26.2 + build: pyh0610db2_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + sha256: fad5da1b0a0899dfb4d59bb4a4e4b58bade677ad44332beb608020e55f1bea53 + md5: a7344f1612e61d1e1dcc90c758f71f8f + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.8 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + - typing_extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + size: 274216 + timestamp: 1730211995421 +- kind: conda + name: hyperframe + version: 6.0.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 + md5: 9f765cbfab6870c8435b9eefecd7a1f4 + depends: + - python >=3.6 + license: MIT + license_family: MIT + size: 14646 + timestamp: 1619110249723 +- kind: conda + name: icu + version: '75.1' + build: he02047a_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 12129203 + timestamp: 1720853576813 +- kind: conda + name: icu + version: '75.1' + build: hf9b3779_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 12282786 + timestamp: 1720853454991 +- kind: conda + name: icu + version: '75.1' + build: hfee45f7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 +- kind: conda + name: idna + version: '3.10' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 + md5: 7ba2ede0e7c795ff95088daf0dc59753 + depends: + - python >=3.6 + license: BSD-3-Clause + license_family: BSD + size: 49837 + timestamp: 1726459583613 +- kind: conda + name: importlib-metadata + version: 7.0.2 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda + sha256: 9a26136d2cc81ccac209d6ae24281ceba3365fe34e34b2c45570f2a96e9d9c1b + md5: b050a4bb0e90ebd6e7fa4093d6346867 + depends: + - python >=3.8 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 26900 + timestamp: 1709821273570 +- kind: conda + name: jack + version: 1.9.22 + build: h5c6c0ed_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda + sha256: 4b5714f0798fb38e19d0aced7e5a9069eebf3c8ee9f541d643d4e6d0edcf388f + md5: e6abd2a51bd727a1b62a54524f760864 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libdb >=6.2.32,<6.3.0a0 + - libgcc-ng >=12 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + license: LGPL-2.0-only + license_family: LGPL + size: 489040 + timestamp: 1693881455137 +- kind: conda + name: jack + version: 1.9.22 + build: h7c63dc7_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda + sha256: 5e44a3a4b9791d1268636811628555ad40d4a8dd5c3be3334062df75580ae25b + md5: f56277b7f079f1b13cbf7fb9b4f194c4 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libdb >=6.2.32,<6.3.0a0 + - libgcc-ng >=12 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + license: LGPL-2.0-only + license_family: LGPL + size: 464144 + timestamp: 1693879949990 +- kind: conda + name: jinja2 + version: 3.1.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d + md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + depends: + - markupsafe >=2.0 + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + size: 111565 + timestamp: 1715127275924 +- kind: conda + name: jupyter_client + version: 8.6.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 + md5: a14218cfb29662b4a19ceb04e93e298e + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.8 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106055 + timestamp: 1726610805505 +- kind: conda + name: jupyter_core + version: 5.7.2 + build: pyh31011fe_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- kind: conda + name: keyutils + version: 1.6.1 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- kind: conda + name: keyutils + version: 1.6.1 + build: h4e544f5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- kind: conda + name: krb5 + version: 1.21.3 + build: h237132a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- kind: conda + name: krb5 + version: 1.21.3 + build: h50a48e9_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- kind: conda + name: krb5 + version: 1.21.3 + build: h659f571_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- kind: conda + name: lame + version: '3.100' + build: h166bdaf_1003 + build_number: 1003 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + sha256: aad2a703b9d7b038c0f745b853c6bb5f122988fe1a7a096e0e606d9cbec4eaab + md5: a8832b479f93521a9e7b5b743803be51 + depends: + - libgcc-ng >=12 + license: LGPL-2.0-only + license_family: LGPL + size: 508258 + timestamp: 1664996250081 +- kind: conda + name: lame + version: '3.100' + build: h1a8c8d9_1003 + build_number: 1003 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 + sha256: f40ce7324b2cf5338b766d4cdb8e0453e4156a4f83c2f31bbfff750785de304c + md5: bff0e851d66725f78dc2fd8b032ddb7e + license: LGPL-2.0-only + license_family: LGPL + size: 528805 + timestamp: 1664996399305 +- kind: conda + name: lame + version: '3.100' + build: h4e544f5_1003 + build_number: 1003 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 + sha256: 2502904a42df6d94bd743f7b73915415391dd6d31d5f50cb57c0a54a108e7b0a + md5: ab05bcf82d8509b4243f07e93bada144 + depends: + - libgcc-ng >=12 + license: LGPL-2.0-only + license_family: LGPL + size: 604863 + timestamp: 1664997611416 +- kind: conda + name: lcms2 + version: '2.16' + build: h922389a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d + md5: ffdd8267a04c515e7ce69c727b051414 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 296219 + timestamp: 1701647961116 +- kind: conda + name: lcms2 + version: '2.16' + build: ha0e7c42_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 + md5: 66f6c134e76fe13cce8a9ea5814b5dd5 + depends: + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 211959 + timestamp: 1701647962657 +- kind: conda + name: lcms2 + version: '2.16' + build: hb7c19ff_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 + depends: + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + license: MIT + license_family: MIT + size: 245247 + timestamp: 1701647787198 +- kind: conda + name: ld_impl_linux-64 + version: '2.43' + build: h712a8e2_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe + md5: 048b02e3962f066da18efe3a21b77672 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + license: GPL-3.0-only + license_family: GPL + size: 669211 + timestamp: 1729655358674 +- kind: conda + name: ld_impl_linux-aarch64 + version: '2.43' + build: h80caac9_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda + sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b + md5: fcbde5ea19d55468953bf588770c0501 + constrains: + - binutils_impl_linux-aarch64 2.43 + license: GPL-3.0-only + license_family: GPL + size: 698245 + timestamp: 1729655345825 +- kind: conda + name: lerc + version: 4.0.0 + build: h27087fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- kind: conda + name: lerc + version: 4.0.0 + build: h4de3ea5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- kind: conda + name: lerc + version: 4.0.0 + build: h9a09cb3_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 +- kind: conda + name: libabseil + version: '20240722.0' + build: cxx17_h5888daf_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda + sha256: 8f91429091183c26950f1e7ffa730e8632f0627ba35d2fccd71df31628c9b4e5 + md5: e1f604644fe8d78e22660e2fec6756bc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + license: Apache-2.0 + license_family: Apache + size: 1310521 + timestamp: 1727295454064 +- kind: conda + name: libabseil + version: '20240722.0' + build: cxx17_h5ad3122_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda + sha256: 590e47dce38031a8893e70491f3b71e214de7781cab53b6f017aa6f6841cb076 + md5: 6fe6b3694c4792a8e26755d3b06f0b80 + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + license: Apache-2.0 + license_family: Apache + size: 1328502 + timestamp: 1727295490806 +- kind: conda + name: libabseil + version: '20240722.0' + build: cxx17_hf9b8971_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda + sha256: 90bf08a75506dfcf28a70977da8ab050bcf594cd02abd3a9d84a22c9e8161724 + md5: 706da5e791c569a7b9814877098a6a0a + depends: + - __osx >=11.0 + - libcxx >=17 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + license: Apache-2.0 + license_family: Apache + size: 1179072 + timestamp: 1727295571173 +- kind: conda + name: libarrow + version: 18.1.0 + build: h3d75c4c_0_cpu + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda + sha256: 46d841b3f316d52d0fa085d5c583a4370de8223afc4f1bbf57eaebdf3aede7f1 + md5: cfee3c6a6ddeb26bba5d96ce7924a817 + depends: + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.31.0,<2.32.0a0 + - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.8.0,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + license: Apache-2.0 + size: 8024186 + timestamp: 1732536195865 +- kind: conda + name: libarrow + version: 18.1.0 + build: h94eee4b_0_cpu + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda + sha256: 4f8ad6d3ac85f17b7ce319c1f8d0ffacee16403341315677977d3c7b9788166e + md5: 1718fa336f42a0b24b822457df7ce43d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.31.0,<2.32.0a0 + - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.8.0,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + size: 8783805 + timestamp: 1732536115314 +- kind: conda + name: libarrow + version: 18.1.0 + build: hb943b0e_0_cpu + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda + sha256: acc1b6ec23a964ec87722fc90b55d47f8cb03e211e86b9ff312bed588cfc400a + md5: f2dac358d4bd6b57d9b47f11cca0ea8c + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.31.0,<2.32.0a0 + - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.8.0,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + license: Apache-2.0 + size: 5497775 + timestamp: 1732535993576 +- kind: conda + name: libarrow-acero + version: 18.1.0 + build: h286801f_0_cpu + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda + sha256: 1b4ae51de889becdd7aca2053e5115d65e2ea94b91d07d2e297d8d3c4666cec5 + md5: fd53fc3858c13425e3334b0af9b6637f + depends: + - __osx >=11.0 + - libarrow 18.1.0 hb943b0e_0_cpu + - libcxx >=18 + license: Apache-2.0 + size: 484735 + timestamp: 1732536132543 +- kind: conda + name: libarrow-acero + version: 18.1.0 + build: h5888daf_0_cpu + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda + sha256: ad2cab7ca7320642a655ac1214248a64d60a0ce771fa8e7b5378746c16be1c64 + md5: d2f94a6f24f028544c7a4cb1b50c5eca + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h94eee4b_0_cpu + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + size: 610906 + timestamp: 1732536155092 +- kind: conda + name: libarrow-acero + version: 18.1.0 + build: h5ad3122_0_cpu + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda + sha256: 216f791e47c774b1d44c89fe7839e03646285cf3220961306b90eec7bf4a6d71 + md5: 7b55a3bc6a3c9a75e509e68d89afd77a + depends: + - libarrow 18.1.0 h3d75c4c_0_cpu + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + size: 577886 + timestamp: 1732536278269 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h286801f_0_cpu + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda + sha256: a52ba6632837f2e5ec1c91ea4271ae7bd84fe9af348467e234a338b2fc78f41c + md5: 4020134362b81be7b91c7c6ae086eecc + depends: + - __osx >=11.0 + - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow-acero 18.1.0 h286801f_0_cpu + - libcxx >=18 + - libparquet 18.1.0 hda0ea68_0_cpu + license: Apache-2.0 + size: 489616 + timestamp: 1732537344927 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h5888daf_0_cpu + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda + sha256: da77235b3874b50facb632cc409bee0df81e9dd7c25543a5e8b92873bd2d2a20 + md5: 7834b3a11d0f1ee7e13b4533e361586f + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow-acero 18.1.0 h5888daf_0_cpu + - libgcc >=13 + - libparquet 18.1.0 h6bd9018_0_cpu + - libstdcxx >=13 + license: Apache-2.0 + size: 588196 + timestamp: 1732536246424 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h5ad3122_0_cpu + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda + sha256: 17cd3bc19ae04d1a5b3795fac0fb796cc90eabeb3359a39eaf5dfed84385b4de + md5: 98d2712cebf91fc823e6231f7e55eda3 + depends: + - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow-acero 18.1.0 h5ad3122_0_cpu + - libgcc >=13 + - libparquet 18.1.0 h23a96eb_0_cpu + - libstdcxx >=13 + license: Apache-2.0 + size: 561486 + timestamp: 1732536339536 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: h14ec2bd_0_cpu + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda + sha256: 30723e91df659aa971d9964e25730276295cf3a45be557ec1df9d413c31c44a9 + md5: f93217605309abc1c0314102036da21c + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow-acero 18.1.0 h5ad3122_0_cpu + - libarrow-dataset 18.1.0 h5ad3122_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 + license: Apache-2.0 + size: 515320 + timestamp: 1732536368053 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: h5c8f2c3_0_cpu + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda + sha256: d40e4a3061d58d07d017a6e439883ce1b9860f3a960a5aead8da189f8795a92c + md5: 51dc5a7117ec264e0a5cc1a5d82437dd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow-acero 18.1.0 h5888daf_0_cpu + - libarrow-dataset 18.1.0 h5888daf_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 + license: Apache-2.0 + size: 520871 + timestamp: 1732536289093 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: h6a6e5c5_0_cpu + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda + sha256: aa673d86e56c3b17b66f5ffcd8ce98b93754c9c07e2e6aff96d0dd02135c0969 + md5: 9b2fd35f01e23972abb91543bbd6d84c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow-acero 18.1.0 h286801f_0_cpu + - libarrow-dataset 18.1.0 h286801f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.2,<5.28.3.0a0 + license: Apache-2.0 + size: 452400 + timestamp: 1732537518703 +- kind: conda + name: libasprintf + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda + sha256: 819bf95543470658f48db53a267a3fabe1616797c4031cf88e63f451c5029e6f + md5: 472b673c083175195965a48f2f4808f8 + depends: + - __osx >=11.0 + - libcxx >=16 + license: LGPL-2.1-or-later + size: 40657 + timestamp: 1723626937704 +- kind: conda + name: libasprintf + version: 0.22.5 + build: h87f4aca_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda + sha256: b438814a7190a541950da68d3cde8ecbcc55629ce677eb65afbb01cfa1e4e651 + md5: 332ce64c2dec75dc0849e7ffcdf7a3a4 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: LGPL-2.1-or-later + size: 42627 + timestamp: 1723626204541 +- kind: conda + name: libasprintf + version: 0.22.5 + build: he8f35ee_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda + sha256: 2da5c735811cbf38c7f7844ab457ff8b25046bbf5fe5ebd5dc1c2fafdf4fbe1c + md5: 4fab9799da9571266d05ca5503330655 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: LGPL-2.1-or-later + size: 42817 + timestamp: 1723626012203 +- kind: conda + name: libasprintf-devel + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda + sha256: ca7322f7c3f1a68cb36630eaa88a44c774261150d42d70a4be3d77bc9ed28d5d + md5: a03ca97f9fabf5626660697c2e0b8850 + depends: + - __osx >=11.0 + - libasprintf 0.22.5 h8414b35_3 + license: LGPL-2.1-or-later + size: 34648 + timestamp: 1723626983419 +- kind: conda + name: libasprintf-devel + version: 0.22.5 + build: h87f4aca_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda + sha256: c9eda86140a5a023b72a8997f82629f4b071df17d57d00ba75a66b65a0525a5e + md5: dbaa9d8c0030bda3e3d22d325ea48191 + depends: + - libasprintf 0.22.5 h87f4aca_3 + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 34359 + timestamp: 1723626223953 +- kind: conda + name: libasprintf-devel + version: 0.22.5 + build: he8f35ee_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda + sha256: ccc7967e298ddf3124c8ad9741c7180dc6f778ae4135ec87978214f7b3c64dc2 + md5: 1091193789bb830127ed067a9e01ac57 + depends: + - __glibc >=2.17,<3.0.a0 + - libasprintf 0.22.5 he8f35ee_3 + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 34172 + timestamp: 1723626026096 +- kind: conda + name: libavif16 + version: 1.1.1 + build: h1909e37_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda + sha256: e06da844b007a64a9ac35d4e3dc4dbc66583f79b57d08166cf58f2f08723a6e8 + md5: 21e468ed3786ebcb2124b123aa2484b7 + depends: + - __glibc >=2.17,<3.0.a0 + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - libgcc >=13 + - rav1e >=0.6.6,<1.0a0 + - svt-av1 >=2.3.0,<2.3.1.0a0 + license: BSD-2-Clause + license_family: BSD + size: 116202 + timestamp: 1730268687453 +- kind: conda + name: libavif16 + version: 1.1.1 + build: h3b0c220_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda + sha256: 8284693096532fb5d1af7fd5c170a4d4f0a54593ba29c881667327b61a7cd7bb + md5: 58ec6027e7b6ea460a4a7ed7112842d8 + depends: + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - libgcc >=13 + - rav1e >=0.6.6,<1.0a0 + - svt-av1 >=2.3.0,<2.3.1.0a0 + license: BSD-2-Clause + license_family: BSD + size: 116097 + timestamp: 1730268695528 +- kind: conda + name: libavif16 + version: 1.1.1 + build: h45b7238_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda + sha256: c671365e8c822d29b53f20c4573fdbc70f18b50ff9a4b5b2b6b3c8f7ad2ac2a9 + md5: 7571064a60bc193ff5c25f36ed23394a + depends: + - __osx >=11.0 + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - rav1e >=0.6.6,<1.0a0 + - svt-av1 >=2.3.0,<2.3.1.0a0 + license: BSD-2-Clause + license_family: BSD + size: 96781 + timestamp: 1730268761553 +- kind: conda + name: libblas + version: 3.9.0 + build: 25_linux64_openblas + build_number: 25 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda + sha256: d6d12dc437d060f838820e9e61bf73baab651f91935ac594cf10beb9ef1b4450 + md5: 8ea26d42ca88ec5258802715fe1ee10b + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - liblapack 3.9.0 25_linux64_openblas + - libcblas 3.9.0 25_linux64_openblas + - blas * openblas + - liblapacke 3.9.0 25_linux64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15677 + timestamp: 1729642900350 +- kind: conda + name: libblas + version: 3.9.0 + build: 25_linuxaarch64_openblas + build_number: 25 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda + sha256: 5c08f78312874bb61307f5ea737377df2d0f6e7f7833ded21ca58d8820c794ca + md5: f9b8a4a955ed2d0b68b1f453abcc1c9e + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - blas * openblas + - liblapacke 3.9.0 25_linuxaarch64_openblas + - liblapack 3.9.0 25_linuxaarch64_openblas + - libcblas 3.9.0 25_linuxaarch64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15808 + timestamp: 1729643002627 +- kind: conda + name: libblas + version: 3.9.0 + build: 25_osxarm64_openblas + build_number: 25 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda + sha256: f1fb9a11af0b2878bd8804b4c77d3733c40076218bcbdb35f575b1c0c9fddf11 + md5: f8cf4d920ff36ce471619010eff59cac + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - blas * openblas + - liblapack 3.9.0 25_osxarm64_openblas + - liblapacke 3.9.0 25_osxarm64_openblas + - libcblas 3.9.0 25_osxarm64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15913 + timestamp: 1729643265495 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: h86ecc28_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 68982 + timestamp: 1725267774142 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 68851 + timestamp: 1725267660471 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: hd74edd7_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 68426 + timestamp: 1725267943211 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: h86ecc28_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + license: MIT + license_family: MIT + size: 31708 + timestamp: 1725267783442 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + license: MIT + license_family: MIT + size: 32696 + timestamp: 1725267669305 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: hd74edd7_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + license: MIT + license_family: MIT + size: 28378 + timestamp: 1725267980316 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: h86ecc28_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + license: MIT + license_family: MIT + size: 290230 + timestamp: 1725267792697 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + license: MIT + license_family: MIT + size: 281750 + timestamp: 1725267679782 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: hd74edd7_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + license: MIT + license_family: MIT + size: 279644 + timestamp: 1725268003553 +- kind: conda + name: libcap + version: '2.69' + build: h0f662aa_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda + sha256: 942f9564b4228609f017b6617425d29a74c43b8a030e12239fa4458e5cb6323c + md5: 25cb5999faa414e5ccb2c1388f62d3d5 + depends: + - attr >=2.5.1,<2.6.0a0 + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 100582 + timestamp: 1684162447012 +- kind: conda + name: libcap + version: '2.69' + build: h883460d_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.69-h883460d_0.conda + sha256: c0944a372d2d2d961cb86726fad17950219f10837bed281ac22127cb3889b06d + md5: fd395b538afc08d28c0db275a42c8078 + depends: + - attr >=2.5.1,<2.6.0a0 + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 103105 + timestamp: 1684162437148 +- kind: conda + name: libcblas + version: 3.9.0 + build: 25_linux64_openblas + build_number: 25 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda + sha256: ab87b0477078837c91d9cda62a9faca18fba7c57cc77aa779ae24b3ac783b5dd + md5: 5dbd1b0fc0d01ec5e0e1fbe667281a11 + depends: + - libblas 3.9.0 25_linux64_openblas + constrains: + - liblapack 3.9.0 25_linux64_openblas + - blas * openblas + - liblapacke 3.9.0 25_linux64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15613 + timestamp: 1729642905619 +- kind: conda + name: libcblas + version: 3.9.0 + build: 25_linuxaarch64_openblas + build_number: 25 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda + sha256: fde797e5528040fed0e9228dd75331be0cf5cbb0bc63641f53c3cca9eb86ec16 + md5: db6af51123c67814572a8c25542cb368 + depends: + - libblas 3.9.0 25_linuxaarch64_openblas + constrains: + - blas * openblas + - liblapacke 3.9.0 25_linuxaarch64_openblas + - liblapack 3.9.0 25_linuxaarch64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15700 + timestamp: 1729643006729 +- kind: conda + name: libcblas + version: 3.9.0 + build: 25_osxarm64_openblas + build_number: 25 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda + sha256: d9fa5b6b11252132a3383bbf87bd2f1b9d6248bef1b7e113c2a8ae41b0376218 + md5: 4df0fae81f0b5bf47d48c882b086da11 + depends: + - libblas 3.9.0 25_osxarm64_openblas + constrains: + - blas * openblas + - liblapack 3.9.0 25_osxarm64_openblas + - liblapacke 3.9.0 25_osxarm64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15837 + timestamp: 1729643270793 +- kind: conda + name: libcrc32c + version: 1.1.2 + build: h01db608_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + license: BSD-3-Clause + license_family: BSD + size: 18669 + timestamp: 1633683724891 +- kind: conda + name: libcrc32c + version: 1.1.2 + build: h9c3ff4c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + license: BSD-3-Clause + license_family: BSD + size: 20440 + timestamp: 1633683576494 +- kind: conda + name: libcrc32c + version: 1.1.2 + build: hbdafb3b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + license: BSD-3-Clause + license_family: BSD + size: 18765 + timestamp: 1633683992603 +- kind: conda + name: libcurl + version: 8.10.1 + build: h13a7ad3_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda + sha256: 983a977c5627f975a930542c8aabb46089ec6ea72f28d9c4d3ee8eafaf2fc25a + md5: d84030d0863ffe7dea00b9a807fee961 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.58.0,<2.0a0 + - libssh2 >=1.11.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: curl + license_family: MIT + size: 379948 + timestamp: 1726660033582 +- kind: conda + name: libcurl + version: 8.10.1 + build: h3ec0cbf_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda + sha256: 7c4983001c727f713b4448280ed4803d301087c184cd2819ba0b788ca62b73d1 + md5: f43539295c4e0cd15202d41bc72b8a26 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.58.0,<2.0a0 + - libssh2 >=1.11.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: curl + license_family: MIT + size: 439171 + timestamp: 1726659843118 +- kind: conda + name: libcurl + version: 8.10.1 + build: hbbe4b11_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda + sha256: 54e6114dfce566c3a22ad3b7b309657e3600cdb668398e95f1301360d5d52c99 + md5: 6e801c50a40301f6978c53976917b277 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.58.0,<2.0a0 + - libssh2 >=1.11.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: curl + license_family: MIT + size: 424900 + timestamp: 1726659794676 +- kind: conda + name: libcxx + version: 19.1.4 + build: ha82da77_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 + md5: a2d3d484d95889fccdd09498d8f6bf9a + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 520678 + timestamp: 1732060258949 +- kind: conda + name: libdb + version: 6.2.32 + build: h01db608_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 + sha256: 1f74d30c72d95c39315c6b5c3f1b328d00c4d5a2feff1e871fe5b71b4cb26811 + md5: 7cbfba14d5adfa65db945d5112909394 + depends: + - libgcc-ng >=9.3.0 + - libstdcxx-ng >=9.3.0 + license: AGPL-3.0-only + license_family: AGPL + size: 24449415 + timestamp: 1609538998176 +- kind: conda + name: libdb + version: 6.2.32 + build: h9c3ff4c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 + sha256: 21fac1012ff05b131d4b5d284003dbbe7b5c4c652aa9e401b46279ed5a784372 + md5: 3f3258d8f841fbac63b36b75bdac1afd + depends: + - libgcc-ng >=9.3.0 + - libstdcxx-ng >=9.3.0 + license: AGPL-3.0-only + license_family: AGPL + size: 24409456 + timestamp: 1609539093147 +- kind: conda + name: libdeflate + version: '1.22' + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda + sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d + md5: ff6a44e8b1707d02be2fe9a36ea88d4a + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 69601 + timestamp: 1728177137503 +- kind: conda + name: libdeflate + version: '1.22' + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda + sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 + md5: b422943d5d772b7cc858b36ad2a92db5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 72242 + timestamp: 1728177071251 +- kind: conda + name: libdeflate + version: '1.22' + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda + md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 54089 + timestamp: 1728177149927 +- kind: conda + name: libedit + version: 3.1.20191231 + build: hc8eb9b7_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca + md5: 30e4362988a2623e9eb34337b83e01f9 + depends: + - ncurses >=6.2,<7.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 96607 + timestamp: 1597616630749 +- kind: conda + name: libedit + version: 3.1.20191231 + build: he28a2e2_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf + md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 + depends: + - libgcc-ng >=7.5.0 + - ncurses >=6.2,<7.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 123878 + timestamp: 1597616541093 +- kind: conda + name: libedit + version: 3.1.20191231 + build: he28a2e2_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + sha256: debc31fb2f07ba2b0363f90e455873670734082822926ba4a9556431ec0bf36d + md5: 29371161d77933a54fccf1bb66b96529 + depends: + - libgcc-ng >=7.5.0 + - ncurses >=6.2,<7.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 134104 + timestamp: 1597617110769 +- kind: conda + name: libev + version: '4.33' + build: h31becfc_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 115123 + timestamp: 1702146237623 +- kind: conda + name: libev + version: '4.33' + build: h93a5062_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + license: BSD-2-Clause + license_family: BSD + size: 107458 + timestamp: 1702146414478 +- kind: conda + name: libev + version: '4.33' + build: hd590300_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- kind: conda + name: libevent + version: 2.1.12 + build: h2757513_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 368167 + timestamp: 1685726248899 +- kind: conda + name: libevent + version: 2.1.12 + build: h4ba1bb4_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 438992 + timestamp: 1685726046519 +- kind: conda + name: libevent + version: 2.1.12 + build: hf998b51_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 427426 + timestamp: 1685725977222 +- kind: conda + name: libexpat + version: 2.6.4 + build: h286801f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- kind: conda + name: libexpat + version: 2.6.4 + build: h5888daf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- kind: conda + name: libexpat + version: 2.6.4 + build: h5ad3122_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- kind: conda + name: libffi + version: 3.4.2 + build: h3422bc3_5 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- kind: conda + name: libffi + version: 3.4.2 + build: h3557bc0_5 + build_number: 5 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c + md5: dddd85f4d52121fab0a8b099c5e06501 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + size: 59450 + timestamp: 1636488255090 +- kind: conda + name: libffi + version: 3.4.2 + build: h7f98852_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- kind: conda + name: libflac + version: 1.4.3 + build: h2f0025b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda + sha256: b54935360349d3418b0663d787f20b3cba0b7ce3fcdf3ba5e7ef02b884759049 + md5: 520b12eab32a92e19b1f239ac545ec03 + depends: + - gettext >=0.21.1,<1.0a0 + - libgcc-ng >=12 + - libogg 1.3.* + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 371550 + timestamp: 1687765491794 +- kind: conda + name: libflac + version: 1.4.3 + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda + sha256: 65908b75fa7003167b8a8f0001e11e58ed5b1ef5e98b96ab2ba66d7c1b822c7d + md5: ee48bf17cc83a00f59ca1494d5646869 + depends: + - gettext >=0.21.1,<1.0a0 + - libgcc-ng >=12 + - libogg 1.3.* + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 394383 + timestamp: 1687765514062 +- kind: conda + name: libflac + version: 1.4.3 + build: hb765f3a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libflac-1.4.3-hb765f3a_0.conda + sha256: 3990b52782fe7207ab642df25368ed443094f6d1a7ea61854935c24192b388aa + md5: 356faba64411660f6c4d24ea31640733 + depends: + - gettext >=0.21.1,<1.0a0 + - libcxx >=15.0.7 + - libogg 1.3.* + - libogg >=1.3.4,<1.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 314408 + timestamp: 1687766236790 +- kind: conda + name: libgcc + version: 14.2.0 + build: h77fa898_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 + md5: 3cb76c3f10d3bc7f1105b2fc9db984df + depends: + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h77fa898_1 + - libgcc-ng ==14.2.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 848745 + timestamp: 1729027721139 +- kind: conda + name: libgcc + version: 14.2.0 + build: he277a41_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda + sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 + md5: 511b511c5445e324066c3377481bcab8 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 he277a41_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535243 + timestamp: 1729089435134 +- kind: conda + name: libgcc-ng + version: 14.2.0 + build: h69a702a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 + md5: e39480b9ca41323497b05492a63bc35b + depends: + - libgcc 14.2.0 h77fa898_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54142 + timestamp: 1729027726517 +- kind: conda + name: libgcc-ng + version: 14.2.0 + build: he9431aa_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda + sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 + md5: 0694c249c61469f2c0f7e2990782af21 + depends: + - libgcc 14.2.0 he277a41_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54104 + timestamp: 1729089444587 +- kind: conda + name: libgcrypt + version: 1.11.0 + build: h8af1aa0_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-1.11.0-h8af1aa0_2.conda + sha256: 21bfc7b12d374f613929f639c481bb7320470bc32210aaff0d7608c251777e90 + md5: 024bf127a7fd791500446d7a70296d00 + depends: + - libgcrypt-devel 1.11.0 h86ecc28_2 + - libgcrypt-lib 1.11.0 h86ecc28_2 + - libgcrypt-tools 1.11.0 h86ecc28_2 + license: LGPL-2.1-or-later AND GPL-2.0-or-later + size: 6233 + timestamp: 1732523338946 +- kind: conda + name: libgcrypt + version: 1.11.0 + build: ha770c72_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-ha770c72_2.conda + sha256: 2a6e2416db13816609541fd3fa680f1ff41dccb968ef22de2b0168e32e5902f2 + md5: 92aaf7c067a5e63ac7f035bbd8864415 + depends: + - libgcrypt-devel 1.11.0 hb9d3cd8_2 + - libgcrypt-lib 1.11.0 hb9d3cd8_2 + - libgcrypt-tools 1.11.0 hb9d3cd8_2 + license: LGPL-2.1-or-later AND GPL-2.0-or-later + size: 6177 + timestamp: 1732523212730 +- kind: conda + name: libgcrypt-devel + version: 1.11.0 + build: h86ecc28_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-devel-1.11.0-h86ecc28_2.conda + sha256: cee9c75b3b25b4fddc8fc62089285109d90a8ecc7198f1fce437051a224c0642 + md5: 2b22f46eedf64d42060359f4c9c635bf + depends: + - libgcc >=13 + - libgcrypt-lib 1.11.0 h86ecc28_2 + license: LGPL-2.1-or-later + size: 106573 + timestamp: 1732523326670 +- kind: conda + name: libgcrypt-devel + version: 1.11.0 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-devel-1.11.0-hb9d3cd8_2.conda + sha256: 5e066ca7a3dc6b44ecfee25b92a6941e38393f5ee82528b76ff299963f16c66a + md5: bf888b6a37286e9ae3749a114f878a6e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libgcrypt-lib 1.11.0 hb9d3cd8_2 + license: LGPL-2.1-or-later + size: 106099 + timestamp: 1732523199857 +- kind: conda + name: libgcrypt-lib + version: 1.11.0 + build: h86ecc28_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-lib-1.11.0-h86ecc28_2.conda + sha256: 7b0b59e11511e1c20e4d1b89ac458b4a0799da2ef10980302a5f033ecc434dee + md5: 07c1e27a75b217e5502bff34cd23c353 + depends: + - libgcc >=13 + - libgpg-error >=1.51,<2.0a0 + license: LGPL-2.1-or-later + size: 635094 + timestamp: 1732523317415 +- kind: conda + name: libgcrypt-lib + version: 1.11.0 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + sha256: ffc3602f9298da248786f46b00d0594d26a18feeb1b07ce88f3d7d61075e39e6 + md5: e55712ff40a054134d51b89afca57dbc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libgpg-error >=1.51,<2.0a0 + license: LGPL-2.1-or-later + size: 586185 + timestamp: 1732523190369 +- kind: conda + name: libgcrypt-tools + version: 1.11.0 + build: h86ecc28_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-tools-1.11.0-h86ecc28_2.conda + sha256: 4c9af6dade7b1216d5765fbe368b67963e88c60e05a56a43e3ebcae69cbc47f5 + md5: 9db2cfeedb9eff8f1ff1bae1cd014ba2 + depends: + - libgcc >=13 + - libgcrypt-lib 1.11.0 h86ecc28_2 + - libgpg-error >=1.51,<2.0a0 + license: GPL-2.0-or-later + size: 35981 + timestamp: 1732523336202 +- kind: conda + name: libgcrypt-tools + version: 1.11.0 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-tools-1.11.0-hb9d3cd8_2.conda + sha256: 6adba58f3f4eb3f2ba07d5f309748499989f71f55ba46acdf7f643f8da18ed9d + md5: 342389a8c9eef45fd8bb144b7522e28d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libgcrypt-lib 1.11.0 hb9d3cd8_2 + - libgpg-error >=1.51,<2.0a0 + license: GPL-2.0-or-later + size: 33257 + timestamp: 1732523208992 +- kind: conda + name: libgettextpo + version: 0.22.5 + build: h0a1ffab_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.22.5-h0a1ffab_3.conda + sha256: f816747b63432def4bfe2bfa517057149b2b94a48101fe13e7fcc2c223ec2042 + md5: 263a0b8af4b3fcdb35acc4038bb5bff5 + depends: + - libgcc-ng >=12 + license: GPL-3.0-or-later + license_family: GPL + size: 199824 + timestamp: 1723626215655 +- kind: conda + name: libgettextpo + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.22.5-h8414b35_3.conda + sha256: bc446fad58155e96a01b28e99254415c2151bdddf57f9a2c00c44e6f0298bb62 + md5: c8cd7295cfb7bda5cbabea4fef904349 + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8414b35_3 + license: GPL-3.0-or-later + license_family: GPL + size: 159800 + timestamp: 1723627007035 +- kind: conda + name: libgettextpo + version: 0.22.5 + build: he02047a_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-he02047a_3.conda + sha256: 7f2d1f4d69973e2c3c3d2b6420d5eb989982baba97d63ab2d7a2b25a92d886b4 + md5: efab66b82ec976930b96d62a976de8e7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: GPL-3.0-or-later + license_family: GPL + size: 170646 + timestamp: 1723626019265 +- kind: conda + name: libgettextpo-devel + version: 0.22.5 + build: h0a1ffab_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.22.5-h0a1ffab_3.conda + sha256: 677df7af241b36c6b06dff52528c2a8e4f42f8cf40d962e693caa707b563c86c + md5: 5c1498c4da030824d57072f05220aad8 + depends: + - libgcc-ng >=12 + - libgettextpo 0.22.5 h0a1ffab_3 + license: GPL-3.0-or-later + license_family: GPL + size: 36989 + timestamp: 1723626232155 +- kind: conda + name: libgettextpo-devel + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.22.5-h8414b35_3.conda + sha256: ea3ca757bf11ed25965b39466b50411c7c2a43f3b90ab4a36fc0ef43f7ab98ac + md5: 7074dc1c9aae1bb5d7bccb4ff03746ca + depends: + - __osx >=11.0 + - libgettextpo 0.22.5 h8414b35_3 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8414b35_3 + license: GPL-3.0-or-later + license_family: GPL + size: 37153 + timestamp: 1723627048279 +- kind: conda + name: libgettextpo-devel + version: 0.22.5 + build: he02047a_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-he02047a_3.conda + sha256: 0a66cdd46d1cd5201061252535cd91905b3222328a9294c1a5bcd32e85531545 + md5: 9aba7960731e6b4547b3a52f812ed801 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libgettextpo 0.22.5 he02047a_3 + license: GPL-3.0-or-later + license_family: GPL + size: 36790 + timestamp: 1723626032786 +- kind: conda + name: libgfortran + version: 5.0.0 + build: 13_2_0_hd922786_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- kind: conda + name: libgfortran + version: 14.2.0 + build: h69a702a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 + md5: f1fd30127802683586f768875127a987 + depends: + - libgfortran5 14.2.0 hd5240d6_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53997 + timestamp: 1729027752995 +- kind: conda + name: libgfortran + version: 14.2.0 + build: he9431aa_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda + sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b + md5: 0294b92d2f47a240bebb1e3336b495f1 + depends: + - libgfortran5 14.2.0 hb6113d0_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729089471124 +- kind: conda + name: libgfortran5 + version: 13.2.0 + build: hf226fd6_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- kind: conda + name: libgfortran5 + version: 14.2.0 + build: hb6113d0_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f + md5: fc068e11b10e18f184e027782baa12b6 + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1102158 + timestamp: 1729089452640 +- kind: conda + name: libgfortran5 + version: 14.2.0 + build: hd5240d6_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1462645 + timestamp: 1729027735353 +- kind: conda + name: libglib + version: 2.82.2 + build: h07bd6cf_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda + sha256: 101fb31c509d6a69ac5d612b51d4088ddbc675fca18cf0c3589cfee26cd01ca0 + md5: 890783f64502fa6bfcdc723cfbf581b4 + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_0 + license: LGPL-2.1-or-later + size: 3635416 + timestamp: 1729191799117 +- kind: conda + name: libglib + version: 2.82.2 + build: h2ff4ddf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda + sha256: 49ee9401d483a76423461c50dcd37f91d070efaec7e4dc2828d8cdd2ce694231 + md5: 13e8e54035ddd2b91875ba399f0f7c04 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_0 + license: LGPL-2.1-or-later + size: 3931898 + timestamp: 1729191404130 +- kind: conda + name: libglib + version: 2.82.2 + build: hc486b8e_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_0.conda + sha256: 6797d24de7acd298f81a86078c64e4f3fea6d551a3e8892205c9e72a37a7cc3c + md5: 47f6d85fe47b865e56c539f2ba5f4dad + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_0 + license: LGPL-2.1-or-later + size: 4020802 + timestamp: 1729191545578 +- kind: conda + name: libgomp + version: 14.2.0 + build: h77fa898_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + md5: cc3573974587f12dda90d96e3e55a702 + depends: + - _libgcc_mutex 0.1 conda_forge + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 460992 + timestamp: 1729027639220 +- kind: conda + name: libgomp + version: 14.2.0 + build: he277a41_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf + md5: 376f0e73abbda6d23c0cb749adc195ef + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 463521 + timestamp: 1729089357313 +- kind: conda + name: libgoogle-cloud + version: 2.31.0 + build: h3888205_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.31.0-h3888205_0.conda + sha256: 603b0bd55980f5bf97911b327c9e469cf953c482f112b561dc9c1c7608bbdc29 + md5: 5b3d9a0327c4f7c569162f10acaf6bb4 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + constrains: + - libgoogle-cloud 2.31.0 *_0 + license: Apache-2.0 + license_family: Apache + size: 1246720 + timestamp: 1731122940037 +- kind: conda + name: libgoogle-cloud + version: 2.31.0 + build: h804f50b_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.31.0-h804f50b_0.conda + sha256: b2de99c83516236ff591d30436779f8345bcc11bb0ec76a7ca3a38a3b23b6423 + md5: 35ab838423b60f233391eb86d324a830 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + constrains: + - libgoogle-cloud 2.31.0 *_0 + license: Apache-2.0 + license_family: Apache + size: 1248705 + timestamp: 1731122589027 +- kind: conda + name: libgoogle-cloud + version: 2.31.0 + build: h8d8be31_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.31.0-h8d8be31_0.conda + sha256: 184d650d55453a40935c128ea309088ae52e15a68cd87ab17ae7c77704251168 + md5: a338736f1514e6f999db8726fe0965b1 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - openssl >=3.3.2,<4.0a0 + constrains: + - libgoogle-cloud 2.31.0 *_0 + license: Apache-2.0 + license_family: Apache + size: 873497 + timestamp: 1731121684939 +- kind: conda + name: libgoogle-cloud-storage + version: 2.31.0 + build: h0121fbd_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.31.0-h0121fbd_0.conda + sha256: 3c38b0a80441f82323dc5a72b96c0dd7476bd5184fbfcdf825a8e15249c849af + md5: 568d6a09a6ed76337a7b97c84ae7c0f8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.31.0 h804f50b_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + size: 782150 + timestamp: 1731122728715 +- kind: conda + name: libgoogle-cloud-storage + version: 2.31.0 + build: h7081f7f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.31.0-h7081f7f_0.conda + sha256: 01f5156584b816d34270a60a61f6b6561f2a01cb3b4eeb455a4e1808d763d486 + md5: 548fd1d31741ee6b13df4124db4a9f5f + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.31.0 h8d8be31_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + size: 526858 + timestamp: 1731122580689 +- kind: conda + name: libgoogle-cloud-storage + version: 2.31.0 + build: hb9b2b65_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.31.0-hb9b2b65_0.conda + sha256: 1df4b7b59224d865a574003df12ee36d4a9939e8e7911b4472348730b9c2a0e8 + md5: 53897114489b4df10e1680bf189aa306 + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.31.0 h3888205_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + size: 737686 + timestamp: 1731123086764 +- kind: conda + name: libgpg-error + version: '1.51' + build: h05609ea_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda + sha256: e819b3ba47dc7e195e8e8a9c874d0b45690cccb2fa741f1abd55b28323f9fc43 + md5: 9cabbbc1c3c8e9fa30e90748f14534dd + depends: + - libgcc >=13 + - libstdcxx >=13 + license: LGPL-2.1-only + license_family: GPL + size: 277785 + timestamp: 1731920977846 +- kind: conda + name: libgpg-error + version: '1.51' + build: hbd13f7d_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda + sha256: 9e0c09c1faf2151ade3ccb64e52d3c1f2dde85c00e37c6a3e6a8bced2aba68be + md5: 168cc19c031482f83b23c4eebbb94e26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: LGPL-2.1-only + license_family: GPL + size: 268740 + timestamp: 1731920927644 +- kind: conda + name: libgrpc + version: 1.67.1 + build: h36c5df4_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-h36c5df4_0.conda + sha256: 1f6673d9d866048c9cf28fd56e6874ffc7e2c53c47d7071cb367d5fc2dde16a7 + md5: b946137e362e98a55a77fdf0b20a7739 + depends: + - c-ares >=1.32.3,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + license: Apache-2.0 + license_family: APACHE + size: 7131846 + timestamp: 1730236305327 +- kind: conda + name: libgrpc + version: 1.67.1 + build: hc2c308b_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-hc2c308b_0.conda + sha256: 870550c1faf524e9a695262cd4c31441b18ad542f16893bd3c5dbc93106705f7 + md5: 4606a4647bfe857e3cfe21ca12ac3afb + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + license: Apache-2.0 + license_family: APACHE + size: 7362336 + timestamp: 1730236333879 +- kind: conda + name: libgrpc + version: 1.67.1 + build: hc70892a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-hc70892a_0.conda + sha256: d2393fcd3c3584e5d58da4122f48bcf297567d2f6f14b3d1fcbd34fdd5040694 + md5: 624e27571fde34f8acc2afec840ac435 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=17 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + license: Apache-2.0 + license_family: APACHE + size: 4882208 + timestamp: 1730236299095 +- kind: conda + name: libiconv + version: '1.17' + build: h0d3ecfb_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 + md5: 69bda57310071cf6d2b86caf11573d2d + license: LGPL-2.1-only + size: 676469 + timestamp: 1702682458114 +- kind: conda + name: libiconv + version: '1.17' + build: h31becfc_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 + md5: 9a8eb13f14de7d761555a98712e6df65 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + size: 705787 + timestamp: 1702684557134 +- kind: conda + name: libiconv + version: '1.17' + build: hd590300_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 + md5: d66573916ffcf376178462f1b61c941e + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + size: 705775 + timestamp: 1702682170569 +- kind: conda + name: libintl + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda + sha256: 7c1d238d4333af385e594c89ebcb520caad7ed83a735c901099ec0970a87a891 + md5: 3b98ec32e91b3b59ad53dbb9c96dd334 + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + license: LGPL-2.1-or-later + size: 81171 + timestamp: 1723626968270 +- kind: conda + name: libintl-devel + version: 0.22.5 + build: h8414b35_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda + sha256: c9d1d4fdfb5775828e54bc9fb443b1a6de9319a04b81d1bac52c26114a763154 + md5: 271646de11b018c66e81eb4c4717b291 + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8414b35_3 + license: LGPL-2.1-or-later + size: 38584 + timestamp: 1723627022409 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hb547adb_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- kind: conda + name: libjpeg-turbo + version: 3.0.0 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- kind: conda + name: liblapack + version: 3.9.0 + build: 25_linux64_openblas + build_number: 25 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + sha256: 9d1ff017714edb2d84868f0f931a4a0e7c289a971062b2ac66cfc8145df7e20e + md5: 4dc03a53fc69371a6158d0ed37214cd3 + depends: + - libblas 3.9.0 25_linux64_openblas + constrains: + - liblapacke 3.9.0 25_linux64_openblas + - libcblas 3.9.0 25_linux64_openblas + - blas * openblas + license: BSD-3-Clause + license_family: BSD + size: 15608 + timestamp: 1729642910812 +- kind: conda + name: liblapack + version: 3.9.0 + build: 25_linuxaarch64_openblas + build_number: 25 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + sha256: 2b399e65e0338bf249657b98333e910cd7086ea1332d4d6f303735883ca49318 + md5: 0eb74e81de46454960bde9e44e7ee378 + depends: + - libblas 3.9.0 25_linuxaarch64_openblas + constrains: + - blas * openblas + - liblapacke 3.9.0 25_linuxaarch64_openblas + - libcblas 3.9.0 25_linuxaarch64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15711 + timestamp: 1729643010817 +- kind: conda + name: liblapack + version: 3.9.0 + build: 25_osxarm64_openblas + build_number: 25 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + sha256: fdd742407672a9af20e70764550cf18b3ab67f12e48bf04163b90492fbc401e7 + md5: 19bbddfec972d401838330453186108d + depends: + - libblas 3.9.0 25_osxarm64_openblas + constrains: + - blas * openblas + - liblapacke 3.9.0 25_osxarm64_openblas + - libcblas 3.9.0 25_osxarm64_openblas + license: BSD-3-Clause + license_family: BSD + size: 15823 + timestamp: 1729643275943 +- kind: conda + name: libmad + version: 0.15.1b + build: h0b41bf4_1001 + build_number: 1001 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda + sha256: 9e94cec54c4baadaa652c761179b8d32771fe7fa55faf6c78c2e35f942367f74 + md5: dc5cc4700f02ffeecc48253c9f29025b + depends: + - libgcc-ng >=12 + license: GPL-2.0-only + license_family: GPL + size: 78561 + timestamp: 1670815547616 +- kind: conda + name: libmad + version: 0.15.1b + build: h1a8c8d9_1001 + build_number: 1001 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda + sha256: 8e9209acf4bf6865760e61dc0d86116ffc9efc3e13c7f559eb1ea78532a3a625 + md5: 1eb30852ed396fbe6e301fe6d715aef9 + license: GPL-2.0-only + license_family: GPL + size: 77255 + timestamp: 1670815732700 +- kind: conda + name: libmad + version: 0.15.1b + build: hb4cce97_1001 + build_number: 1001 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda + sha256: f39c36ce40bc75bc2eb101e8569caf166d6a02e0b1ef95403146b4f9310df0e3 + md5: 10814f7a570b160cea0c885bc1c5e8d5 + depends: + - libgcc-ng >=12 + license: GPL-2.0-only + license_family: GPL + size: 79598 + timestamp: 1673354561940 +- kind: conda + name: libnghttp2 + version: 1.64.0 + build: h161d5f1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 647599 + timestamp: 1729571887612 +- kind: conda + name: libnghttp2 + version: 1.64.0 + build: h6d7220d_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 566719 + timestamp: 1729572385640 +- kind: conda + name: libnghttp2 + version: 1.64.0 + build: hc8609a4_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 714610 + timestamp: 1729571912479 +- kind: conda + name: libnsl + version: 2.0.1 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- kind: conda + name: libnsl + version: 2.0.1 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- kind: conda + name: libogg + version: 1.3.5 + build: h0b9eccb_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda + sha256: e65acc318b7535fb8f2b5e994fe6eac3ae0be3bdb2acbe6037841d033c51f290 + md5: 15cb67b1b9dd0d4b37c81daba785e6ad + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 208233 + timestamp: 1719301637185 +- kind: conda + name: libogg + version: 1.3.5 + build: h4ab18f5_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda + sha256: 5eda3fe92b99b25dd4737226a9485078ab405672d9f621be75edcb68f1e9026d + md5: 601bfb4b3c6f0b844443bb81a56651e0 + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 205914 + timestamp: 1719301575771 +- kind: conda + name: libogg + version: 1.3.5 + build: h99b78c6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda + sha256: 685f73b7241978007dfe0cecb9cae46c6a26d87d192b6f85a09eb65023c0b99e + md5: 57b668b9b78dea2c08e44bb2385d57c0 + depends: + - __osx >=11.0 + license: BSD-3-Clause + license_family: BSD + size: 205451 + timestamp: 1719301708541 +- kind: conda + name: libopenblas + version: 0.3.28 + build: openmp_hf332438_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 + md5: 40803a48d947c8639da6704e9a44d3ce + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4165774 + timestamp: 1730772154295 +- kind: conda + name: libopenblas + version: 0.3.28 + build: pthreads_h94d23a6_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe + md5: 62857b389e42b36b686331bec0922050 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + license: BSD-3-Clause + license_family: BSD + size: 5578513 + timestamp: 1730772671118 +- kind: conda + name: libopenblas + version: 0.3.28 + build: pthreads_h9d3fd7e_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda + sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 + md5: e8dde93dd199da3c1f2c1fcfd0042cd4 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4793435 + timestamp: 1730773029647 +- kind: conda + name: libopus + version: 1.3.1 + build: h27ca646_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 + sha256: e9912101a58cbc609a1917c5289f3bd1f600c82ed3a1c90a6dd4ca02df77958a + md5: 3d0dbee0ccd2f6d6781d270313627b62 + license: BSD-3-Clause + license_family: BSD + size: 252854 + timestamp: 1606823635137 +- kind: conda + name: libopus + version: 1.3.1 + build: h7f98852_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + sha256: 0e1c2740ebd1c93226dc5387461bbcf8142c518f2092f3ea7551f77755decc8f + md5: 15345e56d527b330e1cacbdf58676e8f + depends: + - libgcc-ng >=9.3.0 + license: BSD-3-Clause + license_family: BSD + size: 260658 + timestamp: 1606823578035 +- kind: conda + name: libopus + version: 1.3.1 + build: hf897c2e_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 + sha256: 92a87ade11af2cff41c35cf941f1a79390fde1f113f8e51e1cce30d31b7c8305 + md5: ac7534c50934ed25e4749d74b04c667a + depends: + - libgcc-ng >=9.3.0 + license: BSD-3-Clause + license_family: BSD + size: 328825 + timestamp: 1606823775764 +- kind: conda + name: libparquet + version: 18.1.0 + build: h23a96eb_0_cpu + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda + sha256: be9d2527e709007aef42c39d9ab49163e587c25dc23cc1baba8af91edce16437 + md5: 99592ed1d2877136ebd192789164891a + depends: + - libarrow 18.1.0 h3d75c4c_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + size: 1117420 + timestamp: 1732536323359 +- kind: conda + name: libparquet + version: 18.1.0 + build: h6bd9018_0_cpu + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda + sha256: d5f73b48e754af5874f48ef22dda1339b74597b66ff5ffeff8a2290f97a9611b + md5: 580349cffeac814a32ff661dcbe72821 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h94eee4b_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + size: 1204506 + timestamp: 1732536224976 +- kind: conda + name: libparquet + version: 18.1.0 + build: hda0ea68_0_cpu + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda + sha256: a6a22f0692d99a3cb6306ebd4d2e840c980d08797386f300c47604ee8865af4d + md5: 22f05c8b1c1b82eb5efc2a89c08ee047 + depends: + - __osx >=11.0 + - libarrow 18.1.0 hb943b0e_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + size: 874829 + timestamp: 1732537283879 +- kind: conda + name: libpng + version: 1.6.44 + build: hadc24fc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 + md5: f4cc49d7aa68316213e4b12be35308d1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 290661 + timestamp: 1726234747153 +- kind: conda + name: libpng + version: 1.6.44 + build: hc14010f_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda + sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 + md5: fb36e93f0ea6a6f5d2b99984f34b049e + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 263385 + timestamp: 1726234714421 +- kind: conda + name: libpng + version: 1.6.44 + build: hc4a20ef_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 + md5: 5d25802b25fcc7419fa13e21affaeb3a + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: zlib-acknowledgement + size: 294907 + timestamp: 1726236639270 +- kind: conda + name: libprotobuf + version: 5.28.2 + build: h029595c_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda + sha256: d8c7b6f851bfc53494d9b8e54d473c4f11ab26483a6e64df6f7967563df166b1 + md5: 538dbe0ad9f248e2e109abb9b6809ea5 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 2802876 + timestamp: 1728564881988 +- kind: conda + name: libprotobuf + version: 5.28.2 + build: h5b01275_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda + sha256: 5e8fd4aa00193c85602ce6101dd28fe31306dff85c9725048f6dc828dfa7c421 + md5: ab0bff36363bec94720275a681af8b83 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 2945348 + timestamp: 1728565355702 +- kind: conda + name: libprotobuf + version: 5.28.2 + build: h8f0b736_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda + sha256: f732a6fa918428e2d5ba61e78fe11bb44a002cc8f6bb74c94ee5b1297fefcfd8 + md5: d2cb5991f2fb8eb079c80084435e9ce6 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=17 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 2374965 + timestamp: 1728565334796 +- kind: conda + name: libre2-11 + version: 2024.07.02 + build: h18dbdb1_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda + sha256: 96d4fdac28d5af38c38f90c22cb0aa9a90affae13ca8ba24bd1eb60b789df8ff + md5: f1800796b0efc4bbc5b001d845545111 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + license: BSD-3-Clause + license_family: BSD + size: 203516 + timestamp: 1728778974654 +- kind: conda + name: libre2-11 + version: 2024.07.02 + build: h2348fd5_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda + sha256: 6facca42cfc85a05b33e484a8b0df7857cc092db34806946d022270098d8d20f + md5: 5a7065309a66097738be6a06fd04b7ef + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=17 + constrains: + - re2 2024.07.02.* + license: BSD-3-Clause + license_family: BSD + size: 165956 + timestamp: 1728779107218 +- kind: conda + name: libre2-11 + version: 2024.07.02 + build: hbbce691_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda + sha256: f8ad6a4f6d4fd54ebe3e5e712a01e663222fc57f49d16b6b8b10c30990dafb8f + md5: 2124de47357b7a516c0a3efd8f88c143 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + license: BSD-3-Clause + license_family: BSD + size: 211096 + timestamp: 1728778964655 +- kind: conda + name: libsndfile + version: 1.2.2 + build: h79657aa_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda + sha256: 8fcd5e45d6fb071e8baf492ebb8710203fd5eedf0cb791e007265db373c89942 + md5: ad8e62c0faec46b1442f960489c80b49 + depends: + - lame >=3.100,<3.101.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 396501 + timestamp: 1695747749825 +- kind: conda + name: libsndfile + version: 1.2.2 + build: h9739721_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda + sha256: e559f2f72bb03a554aa5b74230fa19160d33c7981ed385294f1eea9a5871cc03 + md5: 77d552455cbc52e089cdb9df5b283199 + depends: + - lame >=3.100,<3.101.0a0 + - libcxx >=15.0.7 + - libflac >=1.4.3,<1.5.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 317185 + timestamp: 1695747981394 +- kind: conda + name: libsndfile + version: 1.2.2 + build: hc60ed4a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda + sha256: f709cbede3d4f3aee4e2f8d60bd9e256057f410bd60b8964cb8cf82ec1457573 + md5: ef1910918dd895516a769ed36b5b3a4e + depends: + - lame >=3.100,<3.101.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 354372 + timestamp: 1695747735668 +- kind: conda + name: libsodium + version: 1.0.20 + build: h4ab18f5_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + license: ISC + size: 205978 + timestamp: 1716828628198 +- kind: conda + name: libsodium + version: 1.0.20 + build: h68df207_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + license: ISC + size: 177394 + timestamp: 1716828514515 +- kind: conda + name: libsodium + version: 1.0.20 + build: h99b78c6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + license: ISC + size: 164972 + timestamp: 1716828607917 +- kind: conda + name: libsqlite + version: 3.47.0 + build: hadc24fc_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 + md5: b6f02b52a174e612e89548f4663ce56a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 875349 + timestamp: 1730208050020 +- kind: conda + name: libsqlite + version: 3.47.0 + build: hbaaea75_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda + sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e + md5: 07a14fbe439eef078cc479deca321161 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 837683 + timestamp: 1730208293578 +- kind: conda + name: libsqlite + version: 3.47.0 + build: hc4a20ef_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda + sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab + md5: a6b185aac10d08028340858f77231b23 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 1041855 + timestamp: 1730208187962 +- kind: conda + name: libssh2 + version: 1.11.1 + build: h9cc3647_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 279028 + timestamp: 1732349599461 +- kind: conda + name: libssh2 + version: 1.11.1 + build: ha41c0db_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 311577 + timestamp: 1732349396421 +- kind: conda + name: libssh2 + version: 1.11.1 + build: hf672d98_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 304278 + timestamp: 1732349402869 +- kind: conda + name: libstdcxx + version: 14.2.0 + build: h3f4de04_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 + md5: 37f489acd39e22b623d2d1e5ac6d195c + depends: + - libgcc 14.2.0 he277a41_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3816794 + timestamp: 1729089463404 +- kind: conda + name: libstdcxx + version: 14.2.0 + build: hc0a3c3a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 + md5: 234a5554c53625688d51062645337328 + depends: + - libgcc 14.2.0 h77fa898_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3893695 + timestamp: 1729027746910 +- kind: conda + name: libstdcxx-ng + version: 14.2.0 + build: h4852527_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 + md5: 8371ac6457591af2cf6159439c1fd051 + depends: + - libstdcxx 14.2.0 hc0a3c3a_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729027780628 +- kind: conda + name: libstdcxx-ng + version: 14.2.0 + build: hf1166c9_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd + md5: 0e75771b8a03afae5a2c6ce71bc733f5 + depends: + - libstdcxx 14.2.0 h3f4de04_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54133 + timestamp: 1729089498541 +- kind: conda + name: libsystemd0 + version: '256.7' + build: h2774228_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.7-h2774228_1.conda + sha256: fa9cfbacaa2f14072b07ff9c832a8750627755346a1472f116a94aecea28f08e + md5: ad328c530a12a8798776e5f03942090f + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.69,<2.70.0a0 + - libgcc >=13 + - libgcrypt >=1.11.0,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: LGPL-2.1-or-later + size: 411535 + timestamp: 1729786797378 +- kind: conda + name: libsystemd0 + version: '256.7' + build: hd54d049_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.7-hd54d049_1.conda + sha256: 6deceabf4a4109293aacba77a61a83d5bdef028b879b29d3b819937c80de8909 + md5: c44e82f6be3d65cf0589f1182e162ce8 + depends: + - libcap >=2.69,<2.70.0a0 + - libgcc >=13 + - libgcrypt >=1.11.0,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: LGPL-2.1-or-later + size: 430774 + timestamp: 1729786916983 +- kind: conda + name: libthrift + version: 0.21.0 + build: h0e7cc3e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 425773 + timestamp: 1727205853307 +- kind: conda + name: libthrift + version: 0.21.0 + build: h154c74f_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 417329 + timestamp: 1727205944238 +- kind: conda + name: libthrift + version: 0.21.0 + build: h64651cc_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 324342 + timestamp: 1727206096912 +- kind: conda + name: libtiff + version: 4.7.0 + build: he137b08_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda + sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 + md5: 63872517c98aa305da58a757c443698e + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 428156 + timestamp: 1728232228989 +- kind: conda + name: libtiff + version: 4.7.0 + build: hec21d91_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d + md5: 1f80061f5ba6956fcdc381f34618cd8d + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 464938 + timestamp: 1728232266969 +- kind: conda + name: libtiff + version: 4.7.0 + build: hfce79cd_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d + md5: b9abf45f7c64caf3303725f1aa0e9a4d + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=17 + - libdeflate >=1.22,<1.23.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: HPND + size: 366323 + timestamp: 1728232400072 +- kind: conda + name: libutf8proc + version: 2.8.0 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + sha256: 49082ee8d01339b225f7f8c60f32a2a2c05fe3b16f31b554b4fb2c1dea237d1c + md5: ede4266dc02e875fe1ea77b25dd43747 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 101070 + timestamp: 1667316029302 +- kind: conda + name: libutf8proc + version: 2.8.0 + build: h1a8c8d9_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + sha256: a3faddac08efd930fa3a1cc254b5053b4ed9428c49a888d437bf084d403c931a + md5: f8c9c41a122ab3abdf8943b13f4957ee + license: MIT + license_family: MIT + size: 103492 + timestamp: 1667316405233 +- kind: conda + name: libutf8proc + version: 2.8.0 + build: h4e544f5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 + sha256: c1956b64ad9613c66cf87398f5e2c36d071034a93892da7e8cc22e75cface878 + md5: bf0defbd8ac06270fb5ec05c85fb3c96 + depends: + - libgcc-ng >=12 + license: MIT + license_family: MIT + size: 101529 + timestamp: 1667315331359 +- kind: conda + name: libuuid + version: 2.38.1 + build: h0b41bf4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- kind: conda + name: libuuid + version: 2.38.1 + build: hb4cce97_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- kind: conda + name: libuv + version: 1.49.2 + build: h7ab814d_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 + md5: 4bc348e3a1a74d20a3f9beb866d75e0a + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 410500 + timestamp: 1729322654121 +- kind: conda + name: libuv + version: 1.49.2 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + sha256: adf4eca89339ac7780f2394e7e6699be81259eb91f79f9d9fdf2c1bc6b26f210 + md5: 1899e1ec2be63386c41c4db31d3056af + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 627484 + timestamp: 1729322575379 +- kind: conda + name: libuv + version: 1.49.2 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 + md5: 070e3c9ddab77e38799d5c30b109c633 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 884647 + timestamp: 1729322566955 +- kind: conda + name: libvorbis + version: 1.3.7 + build: h01db608_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 + sha256: 1ade4727be5c52b287001b8094d02af66342dfe0ba13ef69222aaaf2e9be4342 + md5: c2863ff72c6d8a59054f8b9102c206e9 + depends: + - libgcc-ng >=9.3.0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=9.3.0 + license: BSD-3-Clause + license_family: BSD + size: 292082 + timestamp: 1610616294416 +- kind: conda + name: libvorbis + version: 1.3.7 + build: h9c3ff4c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + sha256: 53080d72388a57b3c31ad5805c93a7328e46ff22fab7c44ad2a86d712740af33 + md5: 309dec04b70a3cc0f1e84a4013683bc0 + depends: + - libgcc-ng >=9.3.0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=9.3.0 + license: BSD-3-Clause + license_family: BSD + size: 286280 + timestamp: 1610609811627 +- kind: conda + name: libvorbis + version: 1.3.7 + build: h9f76cd9_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 + sha256: 60457217e20d8b24a8390c81338a8fa69c8656b440c067cd82f802a09da93cb9 + md5: 92a1a88d1a1d468c19d9e1659ac8d3df + depends: + - libcxx >=11.0.0 + - libogg >=1.3.4,<1.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 254839 + timestamp: 1610609991029 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d + md5: 5fd7ab3e5f382c70607fbac6335e6e19 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 363577 + timestamp: 1713201785160 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: h93a5062_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 + md5: c0af0edfebe780b19940e94871f1a765 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 287750 + timestamp: 1713200194013 +- kind: conda + name: libwebp-base + version: 1.4.0 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f + md5: b26e8aa824079e1be0294e7152ca4559 + depends: + - libgcc-ng >=12 + constrains: + - libwebp 1.4.0 + license: BSD-3-Clause + license_family: BSD + size: 438953 + timestamp: 1713199854503 +- kind: conda + name: libxcb + version: 1.17.0 + build: h262b8f6_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- kind: conda + name: libxcb + version: 1.17.0 + build: h8a09558_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- kind: conda + name: libxcb + version: 1.17.0 + build: hdb1d25a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 +- kind: conda + name: libxcrypt + version: 4.4.36 + build: h31becfc_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- kind: conda + name: libxcrypt + version: 4.4.36 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- kind: conda + name: libxml2 + version: 2.13.5 + build: hb346dea_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda + sha256: 8c9d6a3a421ac5bf965af495d1b0a08c6fb2245ba156550bc064a7b4f8fc7bd8 + md5: c81a9f1118541aaa418ccb22190c817e + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + license: MIT + license_family: MIT + size: 689626 + timestamp: 1731489608971 +- kind: conda + name: libxml2 + version: 2.13.5 + build: hbbdcc80_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda + sha256: 936de9c0e91cb6f178c48ea14313cf6c79bdb1f474c785c117c41492b0407a98 + md5: 967d4a9dadd710415ee008d862a07c99 + depends: + - __osx >=11.0 + - icu >=75.1,<76.0a0 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + license: MIT + license_family: MIT + size: 583082 + timestamp: 1731489765442 +- kind: conda + name: libxml2 + version: 2.13.5 + build: hf4efe5d_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 + md5: 5650ac8a6ed680c032bdabe40ad19ee0 + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - xz >=5.2.6,<6.0a0 + license: MIT + license_family: MIT + size: 734453 + timestamp: 1731489860751 +- kind: conda + name: libzlib + version: 1.3.1 + build: h8359307_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- kind: conda + name: libzlib + version: 1.3.1 + build: h86ecc28_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- kind: conda + name: libzlib + version: 1.3.1 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- kind: conda + name: llvm-openmp + version: 19.1.4 + build: hdb05f8b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a + md5: 76ca179ec970bea6e275e2fa477c2d3c + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.4|19.1.4.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 281554 + timestamp: 1732102484807 +- kind: conda + name: lz4-c + version: 1.9.4 + build: hb7217d7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + sha256: fc343b8c82efe40819b986e29ba748366514e5ab94a1e1138df195af5f45fa24 + md5: 45505bec548634f7d05e02fb25262cb9 + depends: + - libcxx >=14.0.6 + license: BSD-2-Clause + license_family: BSD + size: 141188 + timestamp: 1674727268278 +- kind: conda + name: lz4-c + version: 1.9.4 + build: hcb278e6_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + sha256: 1b4c105a887f9b2041219d57036f72c4739ab9e9fe5a1486f094e58c76b31f5f + md5: 318b08df404f9c9be5712aaa5a6f0bb0 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 143402 + timestamp: 1674727076728 +- kind: conda + name: lz4-c + version: 1.9.4 + build: hd600fc2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda + sha256: 076870eb72411f41c46598c7582a2f3f42ba94c526a2d60a0c8f70a0a7a64429 + md5: 500145a83ed07ce79c8cef24252f366b + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 163770 + timestamp: 1674727020254 +- kind: conda + name: markdown-it-py + version: 3.0.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda + sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 + md5: 93a8e71256479c62074356ef6ebf501b + depends: + - mdurl >=0.1,<1 + - python >=3.8 + license: MIT + license_family: MIT + size: 64356 + timestamp: 1686175179621 +- kind: conda + name: markupsafe + version: 3.0.2 + build: py312h178313f_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda + sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 + md5: a755704ea0e2503f8c227d84829a8e81 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 24878 + timestamp: 1729351558563 +- kind: conda + name: markupsafe + version: 3.0.2 + build: py312h74ce7d3_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda + sha256: 997baf7f46bce112f6e0390efaa7fbb892b8f31567d3c554f08ac636774d74f7 + md5: 8992b90e8374193d53118f7651db0b73 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 25013 + timestamp: 1729352489213 +- kind: conda + name: markupsafe + version: 3.0.2 + build: py312ha0ccf2a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda + sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d + md5: c6ff9f291d011c9d4f0b840f49435c64 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 24495 + timestamp: 1729351534830 +- kind: conda + name: max + version: 24.6.0.dev2024112802 + build: release + subdir: noarch + noarch: python + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + sha256: 8f6bc9f7bedbd4f1418d2b53e5958c043b189a01bbf4cb8d6064a41a8e655443 + md5: ed46a257f8120a349093635a248fae10 + depends: + - max-core ==24.6.0.dev2024112802 release + - max-python >=24.6.0.dev2024112802,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112802 release + license: LicenseRef-Modular-Proprietary + size: 9925 + timestamp: 1732761611545 +- kind: conda + name: max-core + version: 24.6.0.dev2024112802 + build: release + subdir: linux-64 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda + sha256: 42041d5c8c91e2dad56bc2c3aca70eb196d0668d654436945bbb889403507360 + md5: f080fca8828a3f8547980498289f0c94 + depends: + - mblack ==24.6.0.dev2024112802 release + arch: x86_64 + platform: linux + license: LicenseRef-Modular-Proprietary + size: 254574652 + timestamp: 1732761611543 +- kind: conda + name: max-core + version: 24.6.0.dev2024112802 + build: release + subdir: linux-aarch64 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda + sha256: 274e6939e5271c33f893ac8cfa8e9c84ffe2e9a1df71aa983934e01316fbe23b + md5: ad1f154593009241c7573207168d3d4e + depends: + - mblack ==24.6.0.dev2024112802 release + arch: aarch64 + platform: linux + license: LicenseRef-Modular-Proprietary + size: 258185912 + timestamp: 1732761679629 +- kind: conda + name: max-core + version: 24.6.0.dev2024112802 + build: release + subdir: osx-arm64 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda + sha256: 6f7a7565eb4352df793a85ea0a2c9f4044a38500e25fb0d9011b0eca5184b233 + md5: 675998dc57d891d543f0501503478548 + depends: + - mblack ==24.6.0.dev2024112802 release + arch: arm64 + platform: osx + license: LicenseRef-Modular-Proprietary + size: 220126850 + timestamp: 1732761683706 +- kind: conda + name: max-python + version: 24.6.0.dev2024112802 + build: 3.12release + subdir: linux-64 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda + sha256: 448b475b496eb65f8f1bb8febeb074b07c26c104901f31d8b5414e435844585b + md5: 5149d46120efd08067a9040f9f4705f5 + depends: + - max-core ==24.6.0.dev2024112802 release + - python 3.12.* + - pillow + - fastapi + - httpx + - numpy >=1.18,<2.0 + - opentelemetry-api + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-instrumentation-fastapi + - opentelemetry-sdk >=1.27.0 + - pydantic-settings >=2.4.0,<3 + - pydantic >=2.4.0,<3 + - pyinstrument + - python-json-logger + - sse-starlette >=2.1.3,<3 + - transformers + - uvicorn + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LicenseRef-Modular-Proprietary + size: 128356299 + timestamp: 1732761611551 +- kind: conda + name: max-python + version: 24.6.0.dev2024112802 + build: 3.12release + subdir: linux-aarch64 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda + sha256: f0a7710cb0f22917e39c5763d1d075448b68c70c1a4c97a3d0181b56cbbd8dfb + md5: 0bfedc3bd154710db42d79c2918d9c5d + depends: + - max-core ==24.6.0.dev2024112802 release + - python 3.12.* + - pillow + - fastapi + - httpx + - numpy >=1.18,<2.0 + - opentelemetry-api + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-instrumentation-fastapi + - opentelemetry-sdk >=1.27.0 + - pydantic-settings >=2.4.0,<3 + - pydantic >=2.4.0,<3 + - pyinstrument + - python-json-logger + - sse-starlette >=2.1.3,<3 + - transformers + - uvicorn + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: LicenseRef-Modular-Proprietary + size: 132082582 + timestamp: 1732761679637 +- kind: conda + name: max-python + version: 24.6.0.dev2024112802 + build: 3.12release + subdir: osx-arm64 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda + sha256: 0cc06798769540557575638a2a62ac0d5be1d7498588fd3ec9e650e10897e525 + md5: 9c32cacfe9b36e784fd94ab131f3c78b + depends: + - max-core ==24.6.0.dev2024112802 release + - python 3.12.* + - pillow + - fastapi + - httpx + - numpy >=1.18,<2.0 + - opentelemetry-api + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-instrumentation-fastapi + - opentelemetry-sdk >=1.27.0 + - pydantic-settings >=2.4.0,<3 + - pydantic >=2.4.0,<3 + - pyinstrument + - python-json-logger + - sse-starlette >=2.1.3,<3 + - transformers + - uvicorn + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LicenseRef-Modular-Proprietary + size: 118974942 + timestamp: 1732761683709 +- kind: conda + name: mblack + version: 24.6.0.dev2024112802 + build: release + subdir: noarch + noarch: python + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + sha256: f86d1bcf2415aa312f771c520abbdfbfe8c4d98dbecda41e5eb1a521dbd28b93 + md5: 21cf6986dff640f2b7d9d3df43c3af92 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - python + license: MIT + size: 130609 + timestamp: 1732761611548 +- kind: conda + name: mdurl + version: 0.1.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda + sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 + md5: 776a8dd9e824f77abac30e6ef43a8f7a + depends: + - python >=3.6 + license: MIT + license_family: MIT + size: 14680 + timestamp: 1704317789138 +- kind: conda + name: mojo-jupyter + version: 24.6.0.dev2024112802 + build: release + subdir: noarch + noarch: python + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + sha256: 3f56280f801cf79a4cd32e6fd94b0edcf957bf580fc29de6761d535658bc6e56 + md5: cfb9c8e8a2b5c8bde51bfba633da3534 + depends: + - max-core ==24.6.0.dev2024112802 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22936 + timestamp: 1732761611549 +- kind: conda + name: mpg123 + version: 1.32.9 + build: h65af167_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda + sha256: d65d5a00278544639ba4f99887154be00a1f57afb0b34d80b08e5cba40a17072 + md5: cdf140c7690ab0132106d3bc48bce47d + depends: + - libgcc >=13 + - libstdcxx >=13 + license: LGPL-2.1-only + license_family: LGPL + size: 558708 + timestamp: 1730581372400 +- kind: conda + name: mpg123 + version: 1.32.9 + build: hc50e24c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda + sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 + md5: c7f302fd11eeb0987a6a5e1f3aed6a21 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: LGPL-2.1-only + license_family: LGPL + size: 491140 + timestamp: 1730581373280 +- kind: conda + name: mpg123 + version: 1.32.9 + build: hf642e45_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda + sha256: 070bbbbb96856c325c0b6637638ce535afdc49adbaff306e2238c6032d28dddf + md5: d2b4857bdc3b76c36e23236172d09840 + depends: + - __osx >=11.0 + - libcxx >=18 + license: LGPL-2.1-only + license_family: LGPL + size: 360712 + timestamp: 1730581491116 +- kind: conda + name: multidict + version: 6.1.0 + build: py312h178313f_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda + sha256: bf9cb8487f447098bd4a8248b4f176f34dd55be729a67b8ac2fdb984b80c5d46 + md5: e397d9b841c37fc3180b73275ce7e990 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 61519 + timestamp: 1729065799315 +- kind: conda + name: multidict + version: 6.1.0 + build: py312hcc812fe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda + sha256: 39264fd518c5dcda3affed162b874a58c775a5f5eb81e0aaf2387e92408a3490 + md5: 7629c9ce86495fa01cdfc3ea5418d03f + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 62830 + timestamp: 1729065694252 +- kind: conda + name: multidict + version: 6.1.0 + build: py312hdb8e49c_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 55968 + timestamp: 1729065664275 +- kind: conda + name: multiprocess + version: 0.70.16 + build: py312h024a12e_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 + md5: fd83a478d686df79aa394b9db1ad20b5 + depends: + - __osx >=11.0 + - dill >=0.3.8 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 342831 + timestamp: 1724954807776 +- kind: conda + name: multiprocess + version: 0.70.16 + build: py312h66e93f0_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 + md5: efe4a3f62320156f68579362314009f3 + depends: + - __glibc >=2.17,<3.0.a0 + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 340540 + timestamp: 1724954755987 +- kind: conda + name: multiprocess + version: 0.70.16 + build: py312hb2c0f52_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 + md5: 642c63b684ce5614f157572b04816983 + depends: + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 341428 + timestamp: 1724954862644 +- kind: conda + name: mypy_extensions + version: 1.0.0 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 + md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + depends: + - python >=3.5 + license: MIT + license_family: MIT + size: 10492 + timestamp: 1675543414256 +- kind: conda + name: ncurses + version: '6.5' + build: h7bae524_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc + md5: cb2b0ea909b97b3d70cd3921d1445e1a + depends: + - __osx >=11.0 + license: X11 AND BSD-3-Clause + size: 802321 + timestamp: 1724658775723 +- kind: conda + name: ncurses + version: '6.5' + build: hcccb83c_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda + sha256: acad4cf1f57b12ee1e42995e6fac646fa06aa026529f05eb8c07eb0a84a47a84 + md5: 91d49c85cacd92caa40cf375ef72a25d + depends: + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + size: 924472 + timestamp: 1724658573518 +- kind: conda + name: ncurses + version: '6.5' + build: he02047a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a + md5: 70caf8bb6cf39a0b6b7efc885f51c0fe + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + size: 889086 + timestamp: 1724658547447 +- kind: conda + name: numpy + version: 1.26.4 + build: py312h470d778_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- kind: conda + name: numpy + version: 1.26.4 + build: py312h8442bc7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- kind: conda + name: numpy + version: 1.26.4 + build: py312heda63a1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h0d9d63b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f + md5: fd2898519e839d5ceb778343f39a3176 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 374964 + timestamp: 1709159226478 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h488ebb8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 + md5: 7f2e286780f072ed750df46dc2631138 + depends: + - libgcc-ng >=12 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 341592 + timestamp: 1709159244431 +- kind: conda + name: openjpeg + version: 2.5.2 + build: h9f1df11_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 + md5: 5029846003f0bc14414b9128a1f7c84b + depends: + - libcxx >=16 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-2-Clause + license_family: BSD + size: 316603 + timestamp: 1709159627299 +- kind: conda + name: openssl + version: 3.4.0 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + sha256: bd1d58ced46e75efa3b842c61642fd12272c69e9fe4d7261078bc082153a1d53 + md5: df307bbc703324722df0293c9ca2e418 + depends: + - __osx >=11.0 + - ca-certificates + license: Apache-2.0 + license_family: Apache + size: 2935176 + timestamp: 1731377561525 +- kind: conda + name: openssl + version: 3.4.0 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda + sha256: 64dbbdd6384fa56338124783197f7ad9048c989a02264bcd2e07355e3570f113 + md5: b2f202b5bddafac824eb610b65dde98f + depends: + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 3474825 + timestamp: 1731379200886 +- kind: conda + name: openssl + version: 3.4.0 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + sha256: 814b9dff1847b132c676ee6cc1a8cb2d427320779b93e1b6d76552275c128705 + md5: 23cc74f77eb99315c0360ec3533147a9 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 2947466 + timestamp: 1731377666602 +- kind: conda + name: opentelemetry-api + version: 1.28.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + sha256: e267ed59ea8f357c3471defef796ce4f4555eacd9ee0ed2d47d3dd539ee7ee2f + md5: f1307fb38a8fd2220def45ec1691a21c + depends: + - deprecated >=1.2.6 + - importlib-metadata >=6.0.0,<7.1.0 + - python >=3.8 + - setuptools >=16.0 + license: Apache-2.0 + license_family: APACHE + size: 44014 + timestamp: 1731985724169 +- kind: conda + name: opentelemetry-exporter-otlp-proto-common + version: 1.28.2 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda + sha256: 838525f5a35f130eb3e6ccf06700ab7574467e8abe19da91e6f0de3b399e77c2 + md5: b00b3a8f0d25d5b18979c73ec051c313 + depends: + - backoff >=1.10.0,<3.0.0 + - opentelemetry-proto 1.28.2 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 18838 + timestamp: 1731991715474 +- kind: conda + name: opentelemetry-exporter-otlp-proto-http + version: 1.28.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda + sha256: d89b7b0f28dca5ed84d8c3421e3b16683f764c9eebde66cc8858fc183751af69 + md5: 73810c011d2d60914ce8f92fe99564a0 + depends: + - deprecated >=1.2.6 + - googleapis-common-protos ~=1.52 + - opentelemetry-api ~=1.15 + - opentelemetry-exporter-otlp-proto-common 1.28.2 + - opentelemetry-proto 1.28.2 + - opentelemetry-sdk ~=1.28.2 + - python >=3.8 + - requests ~=2.7 + license: Apache-2.0 + license_family: APACHE + size: 17007 + timestamp: 1732094238214 +- kind: conda + name: opentelemetry-exporter-prometheus + version: 1.12.0rc1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda + sha256: b8239230dbbdb491401e41b53bd9f21d60551cedef1a8d5807fca1bf9bdd331c + md5: 1ddc95052b31147d1e10d818cf519cf5 + depends: + - opentelemetry-api >=1.10.0 + - opentelemetry-sdk >=1.10.0 + - prometheus_client >=0.5.0,<1.0.0 + - python >=3.6 + license: Apache-2.0 + license_family: APACHE + size: 14721 + timestamp: 1695214221489 +- kind: conda + name: opentelemetry-instrumentation + version: 0.49b2 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda + sha256: ee20ad159bc040642fcbce1b25f8a9fc1d788b53c6bf593a0891bf7887ec7c5f + md5: 13d714acd504cd0141688c908521c0b9 + depends: + - opentelemetry-api ~=1.4 + - opentelemetry-semantic-conventions 0.49b2 + - packaging >=18.0 + - python >=3.9 + - setuptools >=16.0 + - wrapt <2.0.0,>=1.0.0 + license: Apache-2.0 + license_family: APACHE + size: 31616 + timestamp: 1732070359772 +- kind: conda + name: opentelemetry-instrumentation-asgi + version: 0.49b2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda + sha256: 7b2b4da037baa506a82c5e3e711905f34448441e069a6e3affb0e4917b3ee5e0 + md5: 482ad6cdc507689d5c33eb22aa16d83e + depends: + - asgiref ~=3.0 + - opentelemetry-api ~=1.12 + - opentelemetry-instrumentation 0.49b2 + - opentelemetry-semantic-conventions 0.49b2 + - opentelemetry-util-http 0.49b2 + - python >=3.7 + license: Apache-2.0 + license_family: APACHE + size: 23749 + timestamp: 1732086813641 +- kind: conda + name: opentelemetry-instrumentation-fastapi + version: 0.49b2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda + sha256: e853f62b4c56e308f349a3f360cf4d6aa814a9dc926e727c25effcf4121af68c + md5: 59c01fcead989ba58c5dc79e3ac3aab3 + depends: + - opentelemetry-api ~=1.12 + - opentelemetry-instrumentation 0.49b2 + - opentelemetry-instrumentation-asgi 0.49b2 + - opentelemetry-semantic-conventions 0.49b2 + - opentelemetry-util-http 0.49b2 + - python >=3.7 + license: Apache-2.0 + license_family: APACHE + size: 20288 + timestamp: 1732093785486 +- kind: conda + name: opentelemetry-proto + version: 1.28.2 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda + sha256: e68320a465b45e05f569c440a20735db9a0fd7cdb9e52300506660a924d17caf + md5: 54ac33b32171ce2205b6639da1a1ac54 + depends: + - protobuf <6.0,>=5.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 37108 + timestamp: 1731988686996 +- kind: conda + name: opentelemetry-sdk + version: 1.28.2 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda + sha256: 67c5be0f2b81b329d273f1f24f985a53e000b4b42b8338b56375d75aa8da5bb1 + md5: 742115714b2cbfa599e9f78495233d1a + depends: + - opentelemetry-api 1.28.2 + - opentelemetry-semantic-conventions 0.49b2 + - python >=3.9 + - typing-extensions >=3.7.4 + - typing_extensions >=3.7.4 + license: Apache-2.0 + license_family: APACHE + size: 78017 + timestamp: 1732070451972 +- kind: conda + name: opentelemetry-semantic-conventions + version: 0.49b2 + build: pyh10f6f8f_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + sha256: 5e3869ad66082b16d56bab8219fad0c8c09090ec93eb866327eed788fe5c9340 + md5: d95dd6e8a70417e394bb16dad5cff408 + depends: + - deprecated >=1.2.6 + - opentelemetry-api 1.28.2 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 81534 + timestamp: 1732067304518 +- kind: conda + name: opentelemetry-util-http + version: 0.49b2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda + sha256: 73bb1cbb640b0732c1a04764a9704bb048ab77d6cb9c6439eb50ec0ecf926ede + md5: f267c60fc629a9bd1aa388f6ed8ea0ab + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 19241 + timestamp: 1732081026829 +- kind: conda + name: opusfile + version: '0.12' + build: h3358134_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda + sha256: f4df9df880e405e5c856383f869d5b9d434f78fb7c234c9e7b099ab604fb7fc3 + md5: 5931bcae00b98f952696b6bcdd0be34b + depends: + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - openssl >=3.0.7,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 65901 + timestamp: 1670387479735 +- kind: conda + name: opusfile + version: '0.12' + build: h5643135_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda + sha256: 108dbee936a8e3c21d2aa5618326343844df8f1fe14067c4dc5a731d7945ecc0 + md5: e34e472ae04beeb642c5e937a2aeeebf + depends: + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - openssl >=3.0.7,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 80128 + timestamp: 1670387790769 +- kind: conda + name: opusfile + version: '0.12' + build: hf55b2d5_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda + sha256: a0ffa8054df68fad5f3533338557c7b985480ee3cf39f0e251ee6b03ff6896cf + md5: a9a71d77aec174e4532f91f560bc413b + depends: + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - openssl >=3.0.7,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 91662 + timestamp: 1673436651852 +- kind: conda + name: orc + version: 2.0.3 + build: h121fd32_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda + sha256: 4759fd0c3f06c035146100e22ee36a312c9a8226654bd2973e9ca9ac5de5cf1f + md5: 39995f7406b949c1bef74f0c7277afb3 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + size: 438254 + timestamp: 1731665228473 +- kind: conda + name: orc + version: 2.0.3 + build: h90de224_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda + sha256: 7969db50268b65c2edb14be2e22bfff5656f36336eb5421d53030d29c037fec1 + md5: c07ba3025fe20ccbab9cd7c615953d6f + depends: + - libgcc >=13 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + size: 1170439 + timestamp: 1731665024334 +- kind: conda + name: orc + version: 2.0.3 + build: he039a57_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda + sha256: 9657ae19d6541fe67a61ef0c26ba1012ec508920b49afa897962c7d4b263ba35 + md5: 052499acd6d6b79952197a13b23e2600 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + size: 1187593 + timestamp: 1731664886527 +- kind: conda + name: packaging + version: '24.2' + build: pyhff2d567_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 + md5: 8508b703977f4c4ada34d657d051972c + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60380 + timestamp: 1731802602808 +- kind: conda + name: pandas + version: 2.2.3 + build: py312ha2895bd_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda + sha256: 585e05f95d14afe3df43ded14f86800c70da26b27e27b59de95932f8888af5d3 + md5: 80b873ac4fdf36641afa0eaafff3a664 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + license: BSD-3-Clause + license_family: BSD + size: 15159625 + timestamp: 1726879151211 +- kind: conda + name: pandas + version: 2.2.3 + build: py312hcd31e36_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + license: BSD-3-Clause + license_family: BSD + size: 14470437 + timestamp: 1726878887799 +- kind: conda + name: pandas + version: 2.2.3 + build: py312hf9745cd_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + license: BSD-3-Clause + license_family: BSD + size: 15436913 + timestamp: 1726879054912 +- kind: conda + name: pathspec + version: 0.12.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d + md5: 17064acba08d3686f1135b5ec1b32b12 + depends: + - python >=3.7 + license: MPL-2.0 + license_family: MOZILLA + size: 41173 + timestamp: 1702250135032 +- kind: conda + name: pcre2 + version: '10.44' + build: h070dd5b_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda + sha256: e9f4b912e48514771d477f2ee955f59d4ff4ef799c3d4d16e4d0f335ce91df67 + md5: 94022de9682cb1a0bb18a99cbc3541b3 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 884590 + timestamp: 1723488793100 +- kind: conda + name: pcre2 + version: '10.44' + build: h297a79d_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + sha256: 83153c7d8fd99cab33c92ce820aa7bfed0f1c94fc57010cf227b6e3c50cb7796 + md5: 147c83e5e44780c7492998acbacddf52 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 618973 + timestamp: 1723488853807 +- kind: conda + name: pcre2 + version: '10.44' + build: hba22ea6_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d + md5: df359c09c41cd186fffb93a2d87aa6f5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 952308 + timestamp: 1723488734144 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h5ab5af3_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda + sha256: 3cf43a5eb1f67f3a5f3ef1ec3a685f8767019cce24dbe46c4b76fee8a54fbacf + md5: 1c4bdfe659cfdedd372685ce2494e97b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41756471 + timestamp: 1729068045876 +- kind: conda + name: pillow + version: 11.0.0 + build: py312h7b63e92_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda + sha256: 13a464bea02c0df0199c20ef6bad24a6bc336aaf55bf8d6a133d0fe664463224 + md5: 385f46a4df6f97892503a841121a9acf + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41948418 + timestamp: 1729065846594 +- kind: conda + name: pillow + version: 11.0.0 + build: py312haf37ca6_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda + sha256: 727b4c3faecdb6f6809cf20c5f32d2df4af34e0d5b9146b7588383bcba7990e8 + md5: dc9b51fbd2b6f7fea9b5123458864dbb + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + license: HPND + size: 41737424 + timestamp: 1729065920347 +- kind: conda + name: pixman + version: 0.43.2 + build: h59595ed_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + sha256: 366d28e2a0a191d6c535e234741e0cd1d94d713f76073d8af4a5ccb2a266121e + md5: 71004cbf7924e19c02746ccde9fd7123 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 386826 + timestamp: 1706549500138 +- kind: conda + name: pixman + version: 0.43.4 + build: h2f0025b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.43.4-h2f0025b_0.conda + sha256: e145b0d89c800326a20d1afd86c74f9422b81549b17fe53add46c2fa43a4c93e + md5: 81b2ddea4b0eca188da9c5a7aa4b0cff + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 295064 + timestamp: 1709240909660 +- kind: conda + name: pixman + version: 0.43.4 + build: hebf3989_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda + sha256: df0ba2710ccdea5c909b63635529797f6eb3635b6fb77ae9cb2f183d08818409 + md5: 0308c68e711cd295aaa026a4f8c4b1e5 + depends: + - libcxx >=16 + license: MIT + license_family: MIT + size: 198755 + timestamp: 1709239846651 +- kind: conda + name: platformdirs + version: 4.3.6 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f + md5: fd8f2b18b65bbf62e8f653100690c8d2 + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 20625 + timestamp: 1726613611845 +- kind: conda + name: portaudio + version: 19.6.0 + build: h13dd4ca_9 + build_number: 9 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda + sha256: 5ff2b55d685c29dfe632ef856796a4b862305088543d4982f0b807e8d9bb756e + md5: d325d46394b6c46d15718c855fb20b4a + depends: + - libcxx >=15.0.7 + license: MIT + license_family: MIT + size: 78863 + timestamp: 1693868663440 +- kind: conda + name: portaudio + version: 19.6.0 + build: h5c6c0ed_9 + build_number: 9 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda + sha256: a73e31c5fe9d717cd42470b394018f4e48eed4a439b9371d2c6d380c86aed591 + md5: ab049f8223bccc6f621975beaa75c624 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 118203 + timestamp: 1693868376750 +- kind: conda + name: portaudio + version: 19.6.0 + build: h7c63dc7_9 + build_number: 9 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda + sha256: c09ae032d0303abfea34c0957834538b48133b0431283852741ed3e0f66fdb36 + md5: 893f2c33af6b03cfd04820a8c31f5798 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 115512 + timestamp: 1693868383 +- kind: conda + name: portmidi + version: 2.0.4 + build: h13dd4ca_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda + sha256: b948bea6ef3203d049997ca348ba0d751a3d891579388e53d323693b20896af6 + md5: fe77195a950275fe63e560b1b855e818 + depends: + - libcxx >=15.0.7 + license: MIT + license_family: MIT + size: 47319 + timestamp: 1693882007724 +- kind: conda + name: portmidi + version: 2.0.4 + build: h5c6c0ed_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda + sha256: 64ed7bdebe45af7987f65402506fa5ad6f9fd339a93f8fe7a57c6bcce497022f + md5: 8ee28835da08f915cba9317fccb6396d + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 45266 + timestamp: 1693882668197 +- kind: conda + name: portmidi + version: 2.0.4 + build: h7c63dc7_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda + sha256: f4e1245409e97b5b46e655ba301da5e9bc1d6ae64f5ae46004583dae31214868 + md5: 5b2518aa80f149ee6881f5ad959f5d59 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + size: 43765 + timestamp: 1693881734349 +- kind: conda + name: prometheus_client + version: 0.21.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 + md5: 07e9550ddff45150bfc7da146268e165 + depends: + - python >=3.8 + license: Apache-2.0 + license_family: Apache + size: 49024 + timestamp: 1726902073034 +- kind: conda + name: propcache + version: 0.2.0 + build: py312h024a12e_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda + sha256: 0f3a04675c6c473398f0aaa95c259e0a085d5ec106b4fa89a7efeb7cc73d5dd2 + md5: 6693e523bc43c38508efe14ab3374f0c + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 47796 + timestamp: 1728545963127 +- kind: conda + name: propcache + version: 0.2.0 + build: py312h66e93f0_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda + sha256: be7aa0056680dd6e528b7992169a20dd525b94f62d37c8ba0fbf69bd4e8df57d + md5: 2c6c0c68f310bc33972e7c83264d7786 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 53498 + timestamp: 1728545927816 +- kind: conda + name: propcache + version: 0.2.0 + build: py312hb2c0f52_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda + sha256: 50dad7604b6c20440baf081700b5d6829097121e65f34fd1a15508b20fbecc07 + md5: 8a258196d6f79ad32d3ea4dd4572f721 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 53507 + timestamp: 1728546155066 +- kind: conda + name: protobuf + version: 5.28.2 + build: py312h2ec8cdc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda + sha256: 4884f8161602f0148ebbc1af8d3176cec80b96c83243f68aafd651986b573817 + md5: 586bead4a9dfa46faf88deb7d3a742bb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.2 + license: BSD-3-Clause + license_family: BSD + size: 464548 + timestamp: 1728669645013 +- kind: conda + name: protobuf + version: 5.28.2 + build: py312h6f74592_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda + sha256: f874ffd38b9ae2b810e9d2e43fd8d3b778cdeaf7dea4a3e6ee4adeafe2d936cf + md5: 4b9b22bd7c53d938b207f9d0f79db183 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.2 + license: BSD-3-Clause + license_family: BSD + size: 472764 + timestamp: 1728669483611 +- kind: conda + name: protobuf + version: 5.28.2 + build: py312hf02c72a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda + sha256: dbcec117510ced5c12097e3eb06ebbf4512dc255733a9ace33c4249fb7e6a364 + md5: 6fda46c82abd0a080ca33de7d16ca877 + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.2 + license: BSD-3-Clause + license_family: BSD + size: 447369 + timestamp: 1728669902591 +- kind: conda + name: pthread-stubs + version: '0.4' + build: h86ecc28_1002 + build_number: 1002 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hb9d3cd8_1002 + build_number: 1002 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- kind: conda + name: pthread-stubs + version: '0.4' + build: hd74edd7_1002 + build_number: 1002 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 +- kind: conda + name: pulseaudio-client + version: '17.0' + build: h729494f_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda + sha256: 209eac3123ee2c84a35401626941c4aa64e04e2c9854084ddeba6432c6078a41 + md5: f35f57712d5c2abca98c85a51a408bc1 + depends: + - dbus >=1.13.6,<2.0a0 + - libgcc-ng >=12 + - libglib >=2.78.3,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libsystemd0 >=255 + constrains: + - pulseaudio 17.0 *_0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 766184 + timestamp: 1705690164726 +- kind: conda + name: pulseaudio-client + version: '17.0' + build: hb77b528_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + sha256: b27c0c8671bd95c205a61aeeac807c095b60bc76eb5021863f919036d7a964fc + md5: 07f45f1be1c25345faddb8db0de8039b + depends: + - dbus >=1.13.6,<2.0a0 + - libgcc-ng >=12 + - libglib >=2.78.3,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libsystemd0 >=255 + constrains: + - pulseaudio 17.0 *_0 + license: LGPL-2.1-or-later + license_family: LGPL + size: 757633 + timestamp: 1705690081905 +- kind: conda + name: pyarrow + version: 18.1.0 + build: py312h1f38498_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc + md5: 3710616b880b31d0c8afd8ae7e12392a + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + size: 25375 + timestamp: 1732610892198 +- kind: conda + name: pyarrow + version: 18.1.0 + build: py312h7900ff3_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad + md5: ac65b70df28687c6af4270923c020bdd + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + size: 25213 + timestamp: 1732610785600 +- kind: conda + name: pyarrow + version: 18.1.0 + build: py312h8025657_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a + md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + size: 25374 + timestamp: 1732611006864 +- kind: conda + name: pyarrow-core + version: 18.1.0 + build: py312h01725c0_0_cpu + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 + md5: ee80934a6c280ff8635f8db5dec11e04 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + size: 4612916 + timestamp: 1732610377259 +- kind: conda + name: pyarrow-core + version: 18.1.0 + build: py312h66f7834_0_cpu + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 + md5: 3390c8b8f57e85506c92a37cf750bdd7 + depends: + - libarrow 18.1.0.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + size: 4406662 + timestamp: 1732610939832 +- kind: conda + name: pyarrow-core + version: 18.1.0 + build: py312hc40f475_0_cpu + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c + md5: 9859e7c4b94bbf69772dbf0511101cec + depends: + - __osx >=11.0 + - libarrow 18.1.0.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + size: 3909116 + timestamp: 1732610863261 +- kind: conda + name: pycparser + version: '2.22' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 + md5: 844d9eb3b43095b031874477f7d70088 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 105098 + timestamp: 1711811634025 +- kind: conda + name: pydantic + version: 2.10.2 + build: pyh3cfb1c2_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 + md5: e661b732b4d7514ace55a01873f03201 + depends: + - annotated-types >=0.6.0 + - pydantic-core 2.27.1 + - python >=3.9 + - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 + license: MIT + license_family: MIT + size: 316818 + timestamp: 1732689481710 +- kind: conda + name: pydantic-core + version: 2.27.1 + build: py312h12e396e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda + sha256: c89741f4eff395f8de70975f42e1f20591f0e0870929d440af35b13399976b09 + md5: 114030cb28527db2c385f07038e914c8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 1635156 + timestamp: 1732254225040 +- kind: conda + name: pydantic-core + version: 2.27.1 + build: py312h8cbf658_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda + sha256: 1f59bc1914f77faed3c95217e4d093310771baee4e93a15c0479359559e3fa19 + md5: d980860b8bf193f53d30a19c5d2bf070 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 1503747 + timestamp: 1732254331303 +- kind: conda + name: pydantic-core + version: 2.27.1 + build: py312hcd83bfe_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda + sha256: 5bba8de2bbbbdb39390abb1e2aff310e8cfd49646ae5a0e0ea4d6582bd1d52ba + md5: 3847a96eaf24a877b6091150ff9c4955 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 1449057 + timestamp: 1732254359451 +- kind: conda + name: pydantic-settings + version: 2.6.1 + build: pyh3cfb1c2_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda + sha256: b3f331d69f7f3b3272e8e203211bfe39ba728a61fadc9b5c2f091b50084f0187 + md5: 412f950a65ceea20b06263f65d689f6b + depends: + - pydantic >=2.7.0 + - python >=3.8 + - python-dotenv >=0.21.0 + license: MIT + license_family: MIT + size: 30618 + timestamp: 1730473755879 +- kind: conda + name: pygame + version: 2.6.1 + build: py312h4fcb14b_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda + sha256: 7a5582c3eed17d0223cbd79dfb25ebae1ec7f8b06eb550fb65e163adb5f1c75b + md5: 80c4be6aac23ad6dfc2aeca1b1ab7d1f + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - portmidi >=2.0.4,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - sdl2 >=2.30.7,<3.0a0 + - sdl2_image >=2.8.2,<3.0a0 + - sdl2_mixer >=2.6.3,<3.0a0 + - sdl2_ttf >=2.22.0,<3.0a0 + license: LGPL-2.1-only + size: 2984508 + timestamp: 1727636750824 +- kind: conda + name: pygame + version: 2.6.1 + build: py312hb14fe3b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda + sha256: 78b91e7b4cee736829f96ec8445674d03b60c03cc51da6f74cac1a14286fe686 + md5: 3a2a4db46a57a51f36f4d79f9f9b6c97 + depends: + - __osx >=11.0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - libcxx >=17 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - portmidi >=2.0.4,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - sdl2 >=2.30.7,<3.0a0 + - sdl2_image >=2.8.2,<3.0a0 + - sdl2_mixer >=2.6.3,<3.0a0 + - sdl2_ttf >=2.22.0,<3.0a0 + license: LGPL-2.1-only + size: 2932509 + timestamp: 1727636775263 +- kind: conda + name: pygame + version: 2.6.1 + build: py312hb2c8110_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda + sha256: 347dc650cbcb5b25f632ae62c87357c15db79849ff582887f6910ae245dc7d4f + md5: f4a1a0e1e2a435699366317ffeabd1bc + depends: + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - portmidi >=2.0.4,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - sdl2 >=2.30.7,<3.0a0 + - sdl2_image >=2.8.2,<3.0a0 + - sdl2_mixer >=2.6.3,<3.0a0 + - sdl2_ttf >=2.22.0,<3.0a0 + license: LGPL-2.1-only + size: 2979554 + timestamp: 1727636776938 +- kind: conda + name: pygments + version: 2.18.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b + md5: b7f5c092b8f9800150d998a71b76d5a1 + depends: + - python >=3.8 + license: BSD-2-Clause + license_family: BSD + size: 879295 + timestamp: 1714846885370 +- kind: conda + name: pyinstrument + version: 5.0.0 + build: py312h0bf5046_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda + sha256: 6879d52fb0ec2258e2850476786a652c394220d53883c53691ed5390183ae925 + md5: f0e4a98d54477083ddc9d2f33507f848 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 181512 + timestamp: 1728714205508 +- kind: conda + name: pyinstrument + version: 5.0.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda + sha256: 8a006507a4003fb01eeee2f9ba79f994478694766ea3b445273da5c11cf8e763 + md5: 798f42d9bfdf125dc80ffbec0e96e0b6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 182021 + timestamp: 1728714164706 +- kind: conda + name: pyinstrument + version: 5.0.0 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda + sha256: 7967b94b8f0ff75847302444e9c43ac11a391d74da24cb14fba1049fac9e5ba9 + md5: 5274663cb05dfbe316db50af6da4389f + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 183141 + timestamp: 1728714267954 +- kind: conda + name: pysocks + version: 1.7.1 + build: pyha2e5f31_6 + build_number: 6 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b + md5: 2a7de29fb590ca14b5243c4c812c8025 + depends: + - __unix + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 18981 + timestamp: 1661604969727 +- kind: conda + name: python + version: 3.12.7 + build: h5d932e8_0_cpython + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda + sha256: 25570873d92d4d9490c6db780cc85e6c28bd3ff61dc1ece79f602cf82bc73bc1 + md5: e6cab21bb5787270388939cf41cc5f43 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.3,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.46.1,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.3.2,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 13762126 + timestamp: 1728057461028 +- kind: conda + name: python + version: 3.12.7 + build: h739c21a_0_cpython + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda + sha256: 45d7ca2074aa92594bd2f91a9003b338cc1df8a46b9492b7fc8167110783c3ef + md5: e0d82e57ebb456077565e6d82cd4a323 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.3,<3.0a0 + - libffi >=3.4,<4.0a0 + - libsqlite >=3.46.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.3.2,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 12975439 + timestamp: 1728057819519 +- kind: conda + name: python + version: 3.12.7 + build: hc5c86c4_0_cpython + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda + sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d + md5: 0515111a9cdf69f83278f7c197db9807 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.3,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.46.1,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.3.2,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 31574780 + timestamp: 1728059777603 +- kind: conda + name: python-dateutil + version: 2.9.0.post0 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 + md5: b6dfd90a2141e573e4b6a81630b56df5 + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 221925 + timestamp: 1731919374686 +- kind: conda + name: python-dotenv + version: 1.0.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c + md5: c2997ea9360ac4e015658804a7a84f94 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 24278 + timestamp: 1706018281544 +- kind: conda + name: python-json-logger + version: 2.0.7 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca + md5: a61bf9ec79426938ff785eb69dbb1960 + depends: + - python >=3.6 + license: BSD-2-Clause + license_family: BSD + size: 13383 + timestamp: 1677079727691 +- kind: conda + name: python-multipart + version: 0.0.17 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + sha256: f351636a91163de28cf602c755abd1b5ad858e4a790c3a30d5a5aa1066c0550c + md5: a08ea55eb3ad403b12639cd3a4a8d28f + depends: + - python >=3.8 + license: Apache-2.0 + license_family: Apache + size: 27810 + timestamp: 1730382122271 +- kind: conda + name: python-tzdata + version: '2024.2' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 + md5: 986287f89929b2d629bd6ef6497dc307 + depends: + - python >=3.6 + license: Apache-2.0 + license_family: APACHE + size: 142527 + timestamp: 1727140688093 +- kind: conda + name: python-xxhash + version: 3.5.0 + build: py312h024a12e_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda + sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d + md5: 266fe1ae54a7bb17990206664d0f0ae4 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.2,<0.8.3.0a0 + license: BSD-2-Clause + license_family: BSD + size: 21765 + timestamp: 1725272382968 +- kind: conda + name: python-xxhash + version: 3.5.0 + build: py312h52516f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda + sha256: 0fa5ba80073a43391ee90303814adbc9fd826175de1fdac273ba0e5b711aa255 + md5: 591c4ae6d8338dfd07b951e00433a405 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.2,<0.8.3.0a0 + license: BSD-2-Clause + license_family: BSD + size: 23589 + timestamp: 1725273317965 +- kind: conda + name: python-xxhash + version: 3.5.0 + build: py312h66e93f0_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda + sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f + md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.2,<0.8.3.0a0 + license: BSD-2-Clause + license_family: BSD + size: 23162 + timestamp: 1725272139519 +- kind: conda + name: python_abi + version: '3.12' + build: 5_cp312 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- kind: conda + name: python_abi + version: '3.12' + build: 5_cp312 + build_number: 5 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- kind: conda + name: python_abi + version: '3.12' + build: 5_cp312 + build_number: 5 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- kind: conda + name: pytz + version: '2024.1' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 188538 + timestamp: 1706886944988 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py312h024a12e_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 + md5: 1ee23620cf46cb15900f70a1300bae55 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + size: 187143 + timestamp: 1725456547263 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py312h66e93f0_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa + md5: 549e5930e768548a89c23f595dac5a95 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + size: 206553 + timestamp: 1725456256213 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py312hb2c0f52_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda + sha256: 8c515ebe1e7e85d972d72b75760af9dfac06fd11a9dba7e05c42d69aedbb303c + md5: dc5de424f7dbb9772da720dbb81317b2 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + size: 199141 + timestamp: 1725456356043 +- kind: conda + name: pyzmq + version: 26.2.0 + build: py312h2427ae1_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda + sha256: cfc4ea87d68b5f0ed64a61f500d5ea0a2310d1f281a4f95afa06c703ea1bdf7d + md5: 1f0779280c3dc1e72cfd86bd1e59791d + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 371730 + timestamp: 1728644030875 +- kind: conda + name: pyzmq + version: 26.2.0 + build: py312hbf22597_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 + md5: 746ce19f0829ec3e19c93007b1a224d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 378126 + timestamp: 1728642454632 +- kind: conda + name: pyzmq + version: 26.2.0 + build: py312hf8a1cbd_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda + sha256: 2e0ca1bb9ab3af5d1f9b38548d65be7097ba0246e7e63c908c9b1323df3f45b5 + md5: 7bdaa4c2a84b744ef26c8b2ba65c3d0e + depends: + - __osx >=11.0 + - libcxx >=17 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 361674 + timestamp: 1728642457661 +- kind: conda + name: rav1e + version: 0.6.6 + build: h1d8f897_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda + sha256: 093f21277dc5763cf0397e016e8291c2b796926ebbb173428dc9cdf5d012f328 + md5: 12c850a42b1ad1ed46a284a93959ee6a + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 14347236 + timestamp: 1694329141875 +- kind: conda + name: rav1e + version: 0.6.6 + build: h69fbcac_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda + sha256: be6174970193cb4d0ffa7d731a93a4c9542881dbc7ab24e74b460ef312161169 + md5: e309ae86569b1cd55a0285fa4e939844 + license: BSD-2-Clause + license_family: BSD + size: 1526706 + timestamp: 1694329743011 +- kind: conda + name: rav1e + version: 0.6.6 + build: he8a937b_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda + sha256: 91b3c1ced90d04ee2eded1f72cf3cbc19ff05a25e41876ef0758266a5bab009f + md5: 77d9955b4abddb811cb8ab1aa7d743e4 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 15423721 + timestamp: 1694329261357 +- kind: conda + name: re2 + version: 2024.07.02 + build: h2d3a13d_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda + sha256: 55e7be480bfb979fa8595a16d7f2adea3a5ac9a77b2e97cd0f7ac40e989edb6c + md5: 83f4e47229834c895a92c18383e1cd9d + depends: + - libre2-11 2024.07.02 h18dbdb1_1 + license: BSD-3-Clause + license_family: BSD + size: 26747 + timestamp: 1728778986331 +- kind: conda + name: re2 + version: 2024.07.02 + build: h77b4e00_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda + sha256: c1721cb80f7201652fc9801f49c214c88aee835d957f2376e301bd40a8415742 + md5: 01093ff37c1b5e6bf9f17c0116747d11 + depends: + - libre2-11 2024.07.02 hbbce691_1 + license: BSD-3-Clause + license_family: BSD + size: 26665 + timestamp: 1728778975855 +- kind: conda + name: re2 + version: 2024.07.02 + build: hcd0e937_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda + sha256: eebddde6cb10b146507810b701ef6df122d5309cd5151a39d0828aa44dc53725 + md5: 19e29f2ccc9168eb0a39dc40c04c0e21 + depends: + - libre2-11 2024.07.02 h2348fd5_1 + license: BSD-3-Clause + license_family: BSD + size: 26860 + timestamp: 1728779123653 +- kind: conda + name: readline + version: '8.2' + build: h8228510_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 281456 + timestamp: 1679532220005 +- kind: conda + name: readline + version: '8.2' + build: h8fc344f_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd + md5: 105eb1e16bf83bfb2eb380a48032b655 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 294092 + timestamp: 1679532238805 +- kind: conda + name: readline + version: '8.2' + build: h92ec313_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 + md5: 8cbb776a2f641b943d413b3e19df71f4 + depends: + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 250351 + timestamp: 1679532511311 +- kind: conda + name: regex + version: 2024.11.6 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Python-2.0 + license_family: PSF + size: 402821 + timestamp: 1730952378415 +- kind: conda + name: regex + version: 2024.11.6 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Python-2.0 + license_family: PSF + size: 398947 + timestamp: 1730952477463 +- kind: conda + name: regex + version: 2024.11.6 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Python-2.0 + license_family: PSF + size: 366374 + timestamp: 1730952427552 +- kind: conda + name: requests + version: 2.32.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc + md5: 5ede4753180c7a550a443c430dc8ab52 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.8 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + size: 58810 + timestamp: 1717057174842 +- kind: conda + name: rich + version: 13.9.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 + md5: bcf8cc8924b5d20ead3d122130b8320b + depends: + - markdown-it-py >=2.2.0 + - pygments >=2.13.0,<3.0.0 + - python >=3.8 + - typing_extensions >=4.0.0,<5.0.0 + license: MIT + license_family: MIT + size: 185481 + timestamp: 1730592349978 +- kind: conda + name: s2n + version: 1.5.9 + build: h0fd0ee4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda + sha256: f2c8e55d6caa8d87a482b1f133963c184de1ccb2303b77cc8ca86c794253f151 + md5: f472432f3753c5ca763d2497e2ea30bf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 355568 + timestamp: 1731541963573 +- kind: conda + name: s2n + version: 1.5.9 + build: h636ded1_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda + sha256: 51572714743f836266af564c5b26b37599478131c4379a0d11778f04e647d070 + md5: bf4f84136d9ddb7be1855754a9ac4bb9 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 352546 + timestamp: 1731542018427 +- kind: conda + name: safetensors + version: 0.4.5 + build: py312h12e396e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda + sha256: e44515f875c10efb5e041efcb250dfd18f2cb66ec3f268237549ead6284c6922 + md5: 3b87a00bcaab069172d6cef8124b7142 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: Apache-2.0 + license_family: APACHE + size: 402547 + timestamp: 1725632183154 +- kind: conda + name: safetensors + version: 0.4.5 + build: py312h8cbf658_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda + sha256: e83ebeaba4a07bbe4a1d6c7eef0b4f7ae19901ef365bca043808d16e4c8faad8 + md5: 82ef253c37308b082a478fb92924cad6 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: Apache-2.0 + license_family: APACHE + size: 400284 + timestamp: 1725632278147 +- kind: conda + name: safetensors + version: 0.4.5 + build: py312he431725_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda + sha256: 93a085d0d64237db7f4ff395c446f268c575dc2c324d8e3e5c5d7d836896295e + md5: ccb978cf1e3151c25a44c4ae65c1f20e + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + license: Apache-2.0 + license_family: APACHE + size: 353606 + timestamp: 1725632294079 +- kind: conda + name: sdl2 + version: 2.30.7 + build: h2a74887_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.7-h2a74887_0.conda + sha256: 6c21954d98a915d7617c0944440167e5ac695117ca7410f37eea4af0a9f0821c + md5: 719245709dd47dbc3f93ce85fa544f43 + depends: + - libgcc >=13 + - libstdcxx >=13 + - pulseaudio-client >=17.0,<17.1.0a0 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + license: Zlib + size: 1317383 + timestamp: 1725255076176 +- kind: conda + name: sdl2 + version: 2.30.7 + build: h3ed165c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.7-h3ed165c_0.conda + sha256: 80691a3ce313f0f7908480c0af216520d655e9480e036feb489c2095ad37950a + md5: be75875082c99c7a9f9fe930a1bd2bb1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - pulseaudio-client >=17.0,<17.1.0a0 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + license: Zlib + size: 1391142 + timestamp: 1725255009793 +- kind: conda + name: sdl2 + version: 2.30.7 + build: hf9b8971_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.7-hf9b8971_0.conda + sha256: d86b4f39c09efb6febd5e2e5a2c0894c82f7ac4b8b4aebb24e4fbd9acf797d60 + md5: 33f5451441cbc0ce083b3d37c181519e + depends: + - __osx >=11.0 + - libcxx >=17 + license: Zlib + size: 1256184 + timestamp: 1725254933792 +- kind: conda + name: sdl2_image + version: 2.8.2 + build: h06ee604_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda + sha256: f18184e016e2e57306d1540dea584d38f4617d7ddb6aad4af6b5f21c52fa39ea + md5: 65e113270b460dcdfc4dc0a80bb3d11c + depends: + - libavif16 >=1.0.4,<2.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - sdl2 >=2.30.2,<3.0a0 + license: Zlib + size: 152110 + timestamp: 1716857107234 +- kind: conda + name: sdl2_image + version: 2.8.2 + build: h376e2e1_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda + sha256: 8c385478a7b6a6e34b3b3f3d48ed48f504698544987ad331f03a7b43b11d689a + md5: 247d2c5a873901ef51f378c69a2c708e + depends: + - __osx >=11.0 + - libavif16 >=1.0.4,<2.0a0 + - libcxx >=16 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - sdl2 >=2.30.2,<3.0a0 + license: Zlib + size: 118041 + timestamp: 1716857215118 +- kind: conda + name: sdl2_image + version: 2.8.2 + build: hd95cb85_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda + sha256: 8bdd72e4789616b0db5fc8e756a4156d3bd7fd35cf96c1cb892d9f6bff3f6508 + md5: 45fbcda052d64b07fa601d965a41cb69 + depends: + - libavif16 >=1.0.4,<2.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - sdl2 >=2.30.2,<3.0a0 + license: Zlib + size: 151138 + timestamp: 1716858240454 +- kind: conda + name: sdl2_mixer + version: 2.6.3 + build: h422cae6_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda + sha256: 8fa4580bddd4d33f5fbddf5c54873613a7f8fcd9f781656fbf9fd1b27975b196 + md5: 75e56f84030bd1244d8bff3c55e8418e + depends: + - fluidsynth >=2.3.4,<2.4.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libmad >=0.15.1b,<0.16.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + - opusfile >=0.12,<0.13.0a0 + - sdl2 >=2.28.3,<3.0a0 + license: Zlib + size: 238285 + timestamp: 1695761803447 +- kind: conda + name: sdl2_mixer + version: 2.6.3 + build: h4fe3bdc_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda + sha256: fcaaf1b589aed11498f5b9735b996fb92ff18e4673a4c804bbfa28eb00264e06 + md5: b92222911d46f08faa583df51191bd7f + depends: + - fluidsynth >=2.3.4,<2.4.0a0 + - libcxx >=15.0.7 + - libflac >=1.4.3,<1.5.0a0 + - libmad >=0.15.1b,<0.16.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + - opusfile >=0.12,<0.13.0a0 + - sdl2 >=2.28.3,<3.0a0 + license: Zlib + size: 188504 + timestamp: 1695762176058 +- kind: conda + name: sdl2_mixer + version: 2.6.3 + build: h8830914_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda + sha256: c3e99e222b091f26cfd1d6be22c5a2973df9e7caa020262f9d9523f340344a95 + md5: 1a2b60be4d860a0c419a87176c85c3ad + depends: + - fluidsynth >=2.3.4,<2.4.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libmad >=0.15.1b,<0.16.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + - opusfile >=0.12,<0.13.0a0 + - sdl2 >=2.28.3,<3.0a0 + license: Zlib + size: 202966 + timestamp: 1695761744535 +- kind: conda + name: sdl2_ttf + version: 2.22.0 + build: h08b1b5d_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h08b1b5d_2.conda + sha256: 7b44fd7f931c8b2fc24bf79fbad29fd308af56a5ee1b50aab41324654b89bd91 + md5: 71f8250e3692862116dd14104579c85c + depends: + - freetype >=2.12.1,<3.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + - sdl2 >=2.30.2,<3.0a0 + license: Zlib + size: 61752 + timestamp: 1719636090403 +- kind: conda + name: sdl2_ttf + version: 2.22.0 + build: h680d130_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-h680d130_2.conda + sha256: b36431de3132ea01d61d604d03e38190ccc797053c1c566f74a8cd56f291bee8 + md5: 142c77bdcae19d1c2387ff44a1f3ded0 + depends: + - freetype >=2.12.1,<3.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + - sdl2 >=2.30.2,<3.0a0 + license: Zlib + size: 54202 + timestamp: 1719637807412 +- kind: conda + name: sdl2_ttf + version: 2.22.0 + build: hda0f12e_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-hda0f12e_2.conda + sha256: 5b331bcf57ae337b9f62ec59c72f5a98d659f8ef9b8346896c2475a6b9ce6ee3 + md5: 1d6211311356539d7dd9c75c40400650 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - sdl2 >=2.30.2,<3.0a0 + license: Zlib + size: 44468 + timestamp: 1719636195399 +- kind: conda + name: setuptools + version: 75.6.0 + build: pyhff2d567_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 + md5: fc80f7995e396cbaeabd23cf46c413dc + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 774252 + timestamp: 1732632769210 +- kind: conda + name: shellingham + version: 1.5.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb + md5: d08db09a552699ee9e7eec56b4eb3899 + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 14568 + timestamp: 1698144516278 +- kind: conda + name: six + version: 1.16.0 + build: pyh6c4a22f_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 + md5: e5f25f8dbc060e9a8d912e432202afc2 + depends: + - python + license: MIT + license_family: MIT + size: 14259 + timestamp: 1620240338595 +- kind: conda + name: snappy + version: 1.2.1 + build: h1088aeb_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda + sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f + md5: e4ed5b015f525b56f95c26d85a4ea208 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 42888 + timestamp: 1720003817527 +- kind: conda + name: snappy + version: 1.2.1 + build: ha2e4443_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f + md5: 6b7dcc7349efd123d493d2dbe85a045f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 42465 + timestamp: 1720003704360 +- kind: conda + name: snappy + version: 1.2.1 + build: hd02b534_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 + md5: 69d0f9694f3294418ee935da3d5f7272 + depends: + - __osx >=11.0 + - libcxx >=16 + license: BSD-3-Clause + license_family: BSD + size: 35708 + timestamp: 1720003794374 +- kind: conda + name: sniffio + version: 1.3.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b + md5: 490730480d76cf9c8f8f2849719c6e2b + depends: + - python >=3.7 + license: Apache-2.0 + license_family: Apache + size: 15064 + timestamp: 1708953086199 +- kind: conda + name: sse-starlette + version: 2.1.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda + sha256: 6d671a66333410ec7e5e7858a252565a9001366726d1fe3c3a506d7156169085 + md5: 3918255c942c242ed5599e10329e8d0e + depends: + - anyio + - python >=3.8 + - starlette + - uvicorn + license: BSD-3-Clause + license_family: BSD + size: 14712 + timestamp: 1722520112550 +- kind: conda + name: starlette + version: 0.41.3 + build: pyh7900ff3_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + sha256: 33986032cb0515f7e9f6647d07006b7dc49b3f373b73d5a1826e6979c661b27a + md5: 0889c5a3e95d8c382cff7556757aedb0 + depends: + - anyio >=3.4.0,<5 + - python >=3.9 + - typing_extensions >=3.10.0 + license: BSD-3-Clause + license_family: BSD + size: 59069 + timestamp: 1732037161800 +- kind: conda + name: svt-av1 + version: 2.3.0 + build: h5888daf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda + sha256: df30a9be29f1a8b5a2e314dd5b16ccfbcbd1cc6a4f659340e8bc2bd4de37bc6f + md5: 355898d24394b2af353eb96358db9fdd + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-2-Clause + license_family: BSD + size: 2746291 + timestamp: 1730246036363 +- kind: conda + name: svt-av1 + version: 2.3.0 + build: h5ad3122_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda + sha256: 2fad2496a21d198ea72f5dabfdace2fae0ced5cc3ea243922cb372fcf4c18222 + md5: efb60b536bbf64772929b57f6b30298b + depends: + - libgcc >=13 + - libstdcxx >=13 + license: BSD-2-Clause + license_family: BSD + size: 1796731 + timestamp: 1730246027014 +- kind: conda + name: svt-av1 + version: 2.3.0 + build: hf24288c_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda + sha256: ab876ed8bdd20e22a868dcb8d03e9ce9bbba7762d7e652d49bfff6af768a5b8f + md5: 114c33e9eec335a379c9ee6c498bb807 + depends: + - __osx >=11.0 + - libcxx >=17 + license: BSD-2-Clause + license_family: BSD + size: 1387330 + timestamp: 1730246134730 +- kind: conda + name: tk + version: 8.6.13 + build: h194ca79_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- kind: conda + name: tk + version: 8.6.13 + build: h5083fa2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- kind: conda + name: tk + version: 8.6.13 + build: noxft_h4845f30_101 + build_number: 101 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- kind: conda + name: tokenizers + version: 0.20.4 + build: py312h8360d73_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda + sha256: 7b59759739b5426e17825b26d6ce9df487d1dc254d4e6a92b14a97107eb6daca + md5: 035c6de3c821559bf1af5ec072593bfd + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: Apache-2.0 + license_family: APACHE + size: 2259332 + timestamp: 1732657962717 +- kind: conda + name: tokenizers + version: 0.20.4 + build: py312ha0d6ea1_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda + sha256: 6dbb7e5f3f152210817e8658bc454056e464dee16fd9757508f2417edd44d8b8 + md5: b135e3d9178b255993ea4d72741192f8 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: Apache-2.0 + license_family: APACHE + size: 2330899 + timestamp: 1732658129796 +- kind: conda + name: tokenizers + version: 0.20.4 + build: py312hf3e4074_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda + sha256: fd86f8a5d41622e8f5092913dea48f41de86258583ee449045905a725672fdc2 + md5: 40e8bc575721b4da76712e90e4a9b7fa + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + license: Apache-2.0 + license_family: APACHE + size: 1933005 + timestamp: 1732658406859 +- kind: conda + name: tornado + version: 6.4.2 + build: py312h52516f5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- kind: conda + name: tornado + version: 6.4.2 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- kind: conda + name: tornado + version: 6.4.2 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- kind: conda + name: tqdm + version: 4.67.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda + sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d + md5: 4085c9db273a148e149c03627350e22c + depends: + - colorama + - python >=3.7 + license: MPL-2.0 or MIT + size: 89484 + timestamp: 1732497312317 +- kind: conda + name: traitlets + version: 5.14.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 + md5: 3df84416a021220d8b5700c613af2dc5 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + size: 110187 + timestamp: 1713535244513 +- kind: conda + name: transformers + version: 4.46.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + sha256: 6ae73c0d1197812d8fd6a2c64309fe9abe822feb66b2d330cc61ce9fa60dee0c + md5: 457af723774f077a128515a6fdd536a2 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.8 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.20,<0.21 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + size: 3622494 + timestamp: 1731981383171 +- kind: conda + name: typer + version: 0.13.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda + sha256: 2f12a5af13d440aa75970e3d0d1ea3192916848473967b4ecb483627c01333cb + md5: 82a4704166144f27e9c83803bff5bf53 + depends: + - python >=3.9 + - typer-slim-standard 0.13.1 hd8ed1ab_0 + license: MIT + license_family: MIT + size: 55352 + timestamp: 1732084066966 +- kind: conda + name: typer-slim + version: 0.13.1 + build: pyhff2d567_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda + sha256: b190bcd5f341ba8843f2f1ce43b5e8dae770bb84d49e2ce5b346e4d8098367a1 + md5: 85283fb942fa2604c3db03483027ced2 + depends: + - click >=8.0.0 + - python >=3.9 + - typing_extensions >=3.7.4.3 + constrains: + - shellingham >=1.3.0 + - typer >=0.13.1,<0.13.2.0a0 + - rich >=10.11.0 + license: MIT + license_family: MIT + size: 43463 + timestamp: 1732084053693 +- kind: conda + name: typer-slim-standard + version: 0.13.1 + build: hd8ed1ab_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + sha256: 14ac72d0533bc2f37f8dc85b90b45a91ca28ee0995c520b16a40f34629749c7a + md5: a9bf95ed3c65bf936292d944bf3df36d + depends: + - rich + - shellingham + - typer-slim 0.13.1 pyhff2d567_0 + license: MIT + license_family: MIT + size: 48744 + timestamp: 1732084054211 +- kind: conda + name: typing-extensions + version: 4.12.2 + build: hd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda + sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 + md5: 52d648bd608f5737b123f510bb5514b5 + depends: + - typing_extensions 4.12.2 pyha770c72_0 + license: PSF-2.0 + license_family: PSF + size: 10097 + timestamp: 1717802659025 +- kind: conda + name: typing_extensions + version: 4.12.2 + build: pyha770c72_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb + md5: ebe6952715e1d5eb567eeebf25250fa7 + depends: + - python >=3.8 + license: PSF-2.0 + license_family: PSF + size: 39888 + timestamp: 1717802653893 +- kind: conda + name: tzdata + version: 2024b + build: hc8b5060_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf + md5: 8ac3367aafb1cc0a068483c580af8015 + license: LicenseRef-Public-Domain + size: 122354 + timestamp: 1728047496079 +- kind: conda + name: urllib3 + version: 2.2.3 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 + md5: 6b55867f385dd762ed99ea687af32a69 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.8 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + size: 98076 + timestamp: 1726496531769 +- kind: conda + name: uvicorn + version: 0.32.1 + build: pyh31011fe_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda + sha256: a310c494c817a9f6c985fc6d2772acb953a20170d03b0eabfae0e9d8c76c97ee + md5: fa77fc8110207b3bfc5ccc9d316744f4 + depends: + - __unix + - click >=7.0 + - h11 >=0.8 + - python >=3.8 + - typing_extensions >=4.0 + license: BSD-3-Clause + license_family: BSD + size: 49393 + timestamp: 1732185242260 +- kind: conda + name: uvicorn-standard + version: 0.32.1 + build: h31011fe_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + sha256: 52545f7c88a7c779376900de5f9d81ce36738cd8770b543e89592ad7d1003c40 + md5: 49c2820e0f39cb710becd856ff14d683 + depends: + - __unix + - httptools >=0.5.0 + - python-dotenv >=0.13 + - pyyaml >=5.1 + - uvicorn 0.32.1 pyh31011fe_0 + - uvloop >=0.14.0,!=0.15.0,!=0.15.1 + - watchfiles >=0.13 + - websockets >=10.4 + license: BSD-3-Clause + license_family: BSD + size: 7136 + timestamp: 1732185243035 +- kind: conda + name: uvloop + version: 0.21.0 + build: py312h0bf5046_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 + md5: 4f5110253ba80ebf27e55c4ab333880a + depends: + - __osx >=11.0 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT OR Apache-2.0 + size: 544097 + timestamp: 1730214653726 +- kind: conda + name: uvloop + version: 0.21.0 + build: py312h66e93f0_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda + sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 + md5: 998e481e17c1b6a74572e73b06f2df08 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT OR Apache-2.0 + size: 701355 + timestamp: 1730214506716 +- kind: conda + name: uvloop + version: 0.21.0 + build: py312hb2c0f52_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda + sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 + md5: d83e107ba16c77aba2feec47b7b666a4 + depends: + - libgcc >=13 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: MIT OR Apache-2.0 + size: 655266 + timestamp: 1730214606664 +- kind: conda + name: watchfiles + version: 1.0.0 + build: py312h12e396e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda + sha256: a2a11a751d3fdd2bec79d876687136cee81d0125be40cebd3518042e1e15c349 + md5: b53a91a5cc50cf07f690a5d3b9f91db5 + depends: + - __glibc >=2.17,<3.0.a0 + - anyio >=3.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: MIT + size: 409700 + timestamp: 1732689603044 +- kind: conda + name: watchfiles + version: 1.0.0 + build: py312h8cbf658_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda + sha256: 1d7fde47edacf01a81c0d9ac3f284d4d30982d33686c505374bfa2c7b02bbf8d + md5: 9ecaaf340ad422209a04fcf854fb4a3f + depends: + - anyio >=3.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: MIT + size: 404235 + timestamp: 1732689685476 +- kind: conda + name: watchfiles + version: 1.0.0 + build: py312hcd83bfe_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda + sha256: 554c4550813b744794fc70451c87d540d38138e6dc901993e85515ffa91087d2 + md5: 0eb2c3f65788f61f905d31ac062fe4b6 + depends: + - __osx >=11.0 + - anyio >=3.0.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + license: MIT + size: 356744 + timestamp: 1732689860624 +- kind: conda + name: websockets + version: '14.1' + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda + sha256: 5998940f91765ba991cf286c863c20bcb53db92bb976a2b5a714566b86b0e763 + md5: a79f7ce618bd0a9f4c00c59a03570fcd + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 242145 + timestamp: 1731498716195 +- kind: conda + name: websockets + version: '14.1' + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda + sha256: c292a8badcbe4040537e225fbeb237bfaf272808eab060067d965d3da98ccd5c + md5: 7e2a0ef2a1a87f88f9745f9c7059186e + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 242912 + timestamp: 1731498811466 +- kind: conda + name: websockets + version: '14.1' + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda + sha256: 98fb04a1a0f53dc604378f94b5795d0b8e462fee01bf0a887cb34d0efdf5d21f + md5: 89b79a9baa7db46ce21f5738a5a3dfda + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 243131 + timestamp: 1731498944076 +- kind: conda + name: wrapt + version: 1.17.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 + md5: ddbe3bb0e1356cb9074dd848570694f9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-2-Clause + size: 63807 + timestamp: 1732523690292 +- kind: conda + name: wrapt + version: 1.17.0 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 + md5: 120d5d1c05386d8ce3efd65a4c86431f + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-2-Clause + size: 64783 + timestamp: 1732523806 +- kind: conda + name: wrapt + version: 1.17.0 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 + md5: 73414acdb779a8694a14527865b4357a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: BSD-2-Clause + size: 61043 + timestamp: 1732523852129 +- kind: conda + name: xorg-libice + version: 1.1.1 + build: h57736b2_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.1-h57736b2_1.conda + sha256: 525f197136d0c136dcba68b16d8f3636f27be111d677b2a06d8b99cf3f45ba4a + md5: 99a9c8245a1cc6dacd292ffeca39425f + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 60151 + timestamp: 1727533134400 +- kind: conda + name: xorg-libice + version: 1.1.1 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda + sha256: ec276da68d1c4a3d34a63195b35ca5b248d4aff0812464dcd843d74649b5cec4 + md5: 19608a9656912805b2b9a2f6bd257b04 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 58159 + timestamp: 1727531850109 +- kind: conda + name: xorg-libsm + version: 1.2.4 + build: hbac51e1_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.4-hbac51e1_1.conda + sha256: 3d3c78a2e2a915d96b8bf8a670ba91e5abba50f55dc3ff699d345c958118e94c + md5: 18655ac9fc6624db89b33a89fed51c5f + depends: + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.1,<2.0a0 + license: MIT + license_family: MIT + size: 28357 + timestamp: 1727635998392 +- kind: conda + name: xorg-libsm + version: 1.2.4 + build: he73a12e_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda + sha256: 70e903370977d44c9120a5641ab563887bd48446e9ef6fc2a3f5f60531c2cd6c + md5: 05a8ea5f446de33006171a7afe6ae857 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.1,<2.0a0 + license: MIT + license_family: MIT + size: 27516 + timestamp: 1727634669421 +- kind: conda + name: xorg-libx11 + version: 1.8.9 + build: he755bbd_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.9-he755bbd_2.conda + sha256: bcd9ebdd7ca25d8ab1eb4f3f919113e264a8ad84fa713c48e737e9167a82fb4b + md5: 7acc45f80415e6ec352b729105dc0375 + depends: + - libgcc >=13 + - libxcb >=1.17.0,<2.0a0 + - xorg-xorgproto + license: MIT + license_family: MIT + size: 863528 + timestamp: 1727352755656 +- kind: conda + name: xorg-libx11 + version: 1.8.10 + build: h4f16b4b_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda + sha256: c4650634607864630fb03696474a0535f6fce5fda7d81a6462346e071b53dfa7 + md5: 0b666058a179b744a622d0a4a0c56353 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libxcb >=1.17.0,<2.0a0 + - xorg-xorgproto + license: MIT + license_family: MIT + size: 838308 + timestamp: 1727356837875 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 + md5: c5f72a733c461aa7785518d29b997cc8 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 15690 + timestamp: 1727036097294 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 + md5: 77cbc488235ebbaab2b6e912d3934bae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 14679 + timestamp: 1727034741045 +- kind: conda + name: xorg-libxau + version: 1.0.11 + build: hd74edd7_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 + md5: 7e0125f8fb619620a0011dc9297e2493 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 13515 + timestamp: 1727034783560 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: h57736b2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- kind: conda + name: xorg-libxdmcp + version: 1.1.5 + build: hd74edd7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 +- kind: conda + name: xorg-libxext + version: 1.3.6 + build: h57736b2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda + sha256: 8e216b024f52e367463b4173f237af97cf7053c77d9ce3e958bc62473a053f71 + md5: bd1e86dd8aa3afd78a4bfdb4ef918165 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + license: MIT + license_family: MIT + size: 50746 + timestamp: 1727754268156 +- kind: conda + name: xorg-libxext + version: 1.3.6 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + sha256: da5dc921c017c05f38a38bd75245017463104457b63a1ce633ed41f214159c14 + md5: febbab7d15033c913d53c7a2c102309d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + license: MIT + license_family: MIT + size: 50060 + timestamp: 1727752228921 +- kind: conda + name: xorg-libxrender + version: 0.9.11 + build: h57736b2_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h57736b2_1.conda + sha256: 50c000a26e828313b668902c2ae5ff7956d9d34418b4fc6fc15f73cba31b45e0 + md5: 19fb476dc5cdd51b67719a6342fab237 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-xorgproto + license: MIT + license_family: MIT + size: 38052 + timestamp: 1727530023529 +- kind: conda + name: xorg-libxrender + version: 0.9.11 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda + sha256: f1217e902c0b1d8bc5d3ce65e483ebf38b049c823c9117b7198cfb16bd2b9143 + md5: a7a49a8b85122b49214798321e2e96b4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-xorgproto + license: MIT + license_family: MIT + size: 37780 + timestamp: 1727529943015 +- kind: conda + name: xorg-xorgproto + version: '2024.1' + build: h86ecc28_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2024.1-h86ecc28_1.conda + sha256: 3dbbf4cdb5ad82d3479ab2aa68ae67de486a6d57d67f0402d8e55869f6f13aec + md5: 91cef7867bf2b47f614597b59705ff56 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 566948 + timestamp: 1726847598167 +- kind: conda + name: xorg-xorgproto + version: '2024.1' + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda + sha256: 1316680be6edddee0156b86ec1102fc8286f51c1a5440366ed1db596a2dc3731 + md5: 7c21106b851ec72c037b162c216d8f05 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 565425 + timestamp: 1726846388217 +- kind: conda + name: xxhash + version: 0.8.2 + build: h31becfc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda + sha256: 4c526aed70b579d80e5c20d32130b6bc8bde59b3250d43c2b5269755f4da8a9b + md5: bb9faf6857108a9f62ebb4dab6ef05da + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 102442 + timestamp: 1689951682147 +- kind: conda + name: xxhash + version: 0.8.2 + build: hb547adb_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda + sha256: a70f59f7221ee72c45b39a6b36a33eb9c717ba01921cce1a3c361a4676979a2e + md5: 144cd3b88706507f332f5eb5fb83a33b + license: BSD-2-Clause + license_family: BSD + size: 97593 + timestamp: 1689951969732 +- kind: conda + name: xxhash + version: 0.8.2 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda + sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f + md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 97691 + timestamp: 1689951608120 +- kind: conda + name: xz + version: 5.2.6 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 + md5: 2161070d867d1b1204ea749c8eec4ef0 + depends: + - libgcc-ng >=12 + license: LGPL-2.1 and GPL-2.0 + size: 418368 + timestamp: 1660346797927 +- kind: conda + name: xz + version: 5.2.6 + build: h57fd34a_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec + md5: 39c6b54e94014701dd157f4f576ed211 + license: LGPL-2.1 and GPL-2.0 + size: 235693 + timestamp: 1660346961024 +- kind: conda + name: xz + version: 5.2.6 + build: h9cdd2b7_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 + md5: 83baad393a31d59c20b63ba4da6592df + depends: + - libgcc-ng >=12 + license: LGPL-2.1 and GPL-2.0 + size: 440555 + timestamp: 1660348056328 +- kind: conda + name: yaml + version: 0.2.5 + build: h3422bc3_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- kind: conda + name: yaml + version: 0.2.5 + build: h7f98852_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + size: 89141 + timestamp: 1641346969816 +- kind: conda + name: yaml + version: 0.2.5 + build: hf897c2e_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + size: 92927 + timestamp: 1641347626613 +- kind: conda + name: yarl + version: 1.18.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda + sha256: 8a1e51303ecac64f10dd0ec548d472c49954c3e2f38023ef28899191580795e1 + md5: 601d2b19a54fd9346ba18c07c2516339 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + size: 151247 + timestamp: 1732220988648 +- kind: conda + name: yarl + version: 1.18.0 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda + sha256: 2ead24d5c50a2edd6348be5888677100b12b98921d1b6fe2f4cd980b0b85ffb2 + md5: 7dbbd950a7f762c2c8ab835932b12001 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + size: 149149 + timestamp: 1732221057827 +- kind: conda + name: yarl + version: 1.18.0 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda + sha256: 4c90de12b1569f85126a12dbbb89f3dc10cee5838335b9c9993ead8bf1594cd3 + md5: f538709098e1642d50f4a01707e7dfdb + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + size: 141452 + timestamp: 1732221306526 +- kind: conda + name: zeromq + version: 4.3.5 + build: h3b0a872_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- kind: conda + name: zeromq + version: 4.3.5 + build: h5efb499_7 + build_number: 7 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- kind: conda + name: zeromq + version: 4.3.5 + build: hc1bb282_7 + build_number: 7 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- kind: conda + name: zipp + version: 3.21.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + sha256: 232a30e4b0045c9de5e168dda0328dc0e28df9439cdecdfb97dd79c1c82c4cec + md5: fee389bf8a4843bd7a2248ce11b7f188 + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 21702 + timestamp: 1731262194278 +- kind: conda + name: zlib + version: 1.3.1 + build: h8359307_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + license: Zlib + license_family: Other + size: 77606 + timestamp: 1727963209370 +- kind: conda + name: zlib + version: 1.3.1 + build: h86ecc28_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + license: Zlib + license_family: Other + size: 95582 + timestamp: 1727963203597 +- kind: conda + name: zlib + version: 1.3.1 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + license: Zlib + license_family: Other + size: 92286 + timestamp: 1727963153079 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312h15fbf35_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 330788 + timestamp: 1725305806565 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312hb698573_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 392496 + timestamp: 1725305808244 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312hef9b889_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 419552 + timestamp: 1725305670210 +- kind: conda + name: zstd + version: 1.5.6 + build: h02f22dd_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 539937 + timestamp: 1714723130243 +- kind: conda + name: zstd + version: 1.5.6 + build: ha6fb4c9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 554846 + timestamp: 1714722996770 +- kind: conda + name: zstd + version: 1.5.6 + build: hb46c0d2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 405089 + timestamp: 1714723101397 diff --git a/examples/magic.lock b/examples/magic.lock index cedba1c059..80aa73de1f 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -23,10 +23,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -63,7 +63,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py311h9ecbd09_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -78,10 +78,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -165,10 +165,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py311hfdbb021_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py311h38be061_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py311h4854187_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py311h4854187_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda @@ -192,7 +192,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py311h9e33e62_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda @@ -200,8 +200,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py311h182c674_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py311h9ecbd09_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py311h182c674_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda @@ -215,9 +215,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py311h9e33e62_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py311h9ecbd09_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda @@ -245,10 +245,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -285,7 +285,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py311ha879c10_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -301,10 +301,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -332,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -388,10 +388,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py311ha879c10_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py311h89d996e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py311hfecb2dc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py311ha6d2531_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py311ha6d2531_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda @@ -415,7 +415,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py311h0ca61a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda @@ -423,8 +423,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py311h5e37e04_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py311h5487e9b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py311h5e37e04_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda @@ -438,9 +438,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py311h0ca61a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py311ha879c10_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda @@ -467,10 +467,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -507,7 +507,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py311h460d6c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -520,10 +520,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -548,7 +548,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -601,10 +601,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py311h460d6c5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py311h6885ffc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py311ha1ab1f8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py311he04fa90_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py311he04fa90_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda @@ -627,7 +627,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py311h481aa64_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda @@ -635,8 +635,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py311h82b0fb8_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py311h460d6c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py311h82b0fb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda @@ -650,9 +650,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py311h481aa64_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py311h460d6c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda @@ -1314,13 +1314,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h29aef15_3 - build_number: 3 + version: 0.7.2 + build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda - sha256: b8c67e279f8efa833fc92b066dc6d0cef3aff7f06144f738adfbd95cdab52865 - md5: bd7d7b664176b5d164d369f12615b75a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + sha256: 387e4df97529d1849a774082b1fed78c7870effc02ed4c2b45961615a0516b64 + md5: fbf4af2c93ae67f175583c9185be4133 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1332,17 +1331,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117581 - timestamp: 1731745139268 + size: 117212 + timestamp: 1732679211893 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h3a84f74_3 - build_number: 3 + version: 0.7.2 + build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda - sha256: 274c9ec3c173a2979b949ccc10a6013673c4391502a4a71e07070d6c50eabc60 - md5: e7a54821aaa774cfd64efcd45114a4d7 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + sha256: c0ae38eb1f878157323afdd002229e9eeb739f622e028447330805c030c50a9f + md5: a5f883ce16928e898856b5bd8d1bee57 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1355,17 +1353,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113837 - timestamp: 1731745115080 + size: 113549 + timestamp: 1732679091663 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h840aca7_3 - build_number: 3 + version: 0.7.2 + build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda - sha256: a75dce44667327d365abdcd68c525913c7dd948ea26d4709386acd58717307fc - md5: 540af65a722c5e490012153673793df5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + sha256: 30e4bed9d008fb79f5e84ecbea0f21030ad5d60cb5c55a962df90721aa98fc42 + md5: 63100ff62fdff4a6afcea38841036027 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1376,8 +1373,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 96830 - timestamp: 1731745236535 + size: 97042 + timestamp: 1732679268030 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1479,11 +1476,12 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.5 - build: h21d7256_0 + build: h0e61686_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda - sha256: 54a9f37ba03e20b29215a9e301846ee22368bd6efb9e9afce7c6ad3e64426219 - md5: b2468de19999ee8452757f12f15a9b34 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda + sha256: 1d7bc75a81cdcd992ebee9b06be6a63963203d7fc2537099bf91fda0573c3be6 + md5: 7143a281febcabfc242a458b7bc12048 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1493,24 +1491,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.2,<0.7.3.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354933 - timestamp: 1732136158458 + size: 353633 + timestamp: 1732704043097 - kind: conda name: aws-crt-cpp version: 0.29.5 - build: h6832833_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda - sha256: e42172ffef36e2e5793532ab5b8d8c499fe8c4eaf154404501bd3f97a424e701 - md5: 546159ec6849eaf2b632eb79e3ab16f7 + build: h6068a22_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda + sha256: 15eba2ca46b10a17d60b26d7a6db222f08e1d63c55eb76a19f16c30e06679fe4 + md5: 6c0a760285cb79c46a99b15449ecb9ac depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1518,22 +1516,25 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.2,<0.7.3.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236424 - timestamp: 1732136497320 + size: 283812 + timestamp: 1732704031684 - kind: conda name: aws-crt-cpp version: 0.29.5 - build: h8cc6612_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda - sha256: aac21029314f015d558fc1cb0238b32e3aa1b0473f5ca4f3ef469d0f8c59e026 - md5: e80ca2db9b263c16a44bab78a76165ec + build: h8bcca62_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda + sha256: 371c509c0cd22360cd39963189ba7aa290b08b7384dd4414895f6186e2aecf7e + md5: ef024742bb2501bd3d7f10b0f9ce5a4d depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1541,14 +1542,13 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.2,<0.7.3.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 284386 - timestamp: 1732136167312 + size: 236161 + timestamp: 1732704224415 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2695,58 +2695,52 @@ packages: timestamp: 1731707562362 - kind: conda name: httptools - version: 0.6.1 - build: py311h460d6c5_1 - build_number: 1 + version: 0.6.4 + build: py311h917b07b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py311h460d6c5_1.conda - sha256: 00c5c6cdc39ab88bcdf5484e7080e899bb8630e6fc62f76b954acb34dccc8d15 - md5: 1bb0af015844a74ded9a9fdc8ffcd87e + url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda + sha256: 47af7c9e41ea0327f12757527cea28c430ef84aade923d81cc397ebb2bf9eb28 + md5: 4aca39fe9eb4224026c907e1aa8156fb depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: MIT - license_family: MIT - size: 76226 - timestamp: 1726688457939 + size: 84562 + timestamp: 1732707884099 - kind: conda name: httptools - version: 0.6.1 - build: py311h9ecbd09_1 - build_number: 1 + version: 0.6.4 + build: py311h9ecbd09_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py311h9ecbd09_1.conda - sha256: fe5d1d18c0013a7825820fadcb282d1005fd5eef4883d64d9a7962dcf3cbf020 - md5: edb0d1cdec377d192bb242115c52e029 + url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda + sha256: 1775083ed07111778559e9a0b47033c13cbe6f1c489eaceff204f6cf7a9e02da + md5: c16a94f3d0c6a2a495b3071cff3f598d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: MIT - license_family: MIT - size: 90869 - timestamp: 1726688211390 + size: 99955 + timestamp: 1732707791797 - kind: conda name: httptools - version: 0.6.1 - build: py311ha879c10_1 - build_number: 1 + version: 0.6.4 + build: py311ha879c10_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py311ha879c10_1.conda - sha256: 8cb9fcc101f56093e0c46a0a05dca72e4a5775d83abe847c23549f38f488e166 - md5: 1ad0580eb05e91a0f84a2cdf03846acf + url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda + sha256: f33cd0bb6db6bf8ad44bb908a0befe5564921a570c4c39784c518be81ddd6ab0 + md5: fd2dfd6afe96a5843af75eb4f085ed56 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: MIT - license_family: MIT - size: 90898 - timestamp: 1726688305259 + size: 98813 + timestamp: 1732707937311 - kind: conda name: httpx version: 0.27.2 @@ -3172,13 +3166,12 @@ packages: timestamp: 1727295571173 - kind: conda name: libarrow - version: 18.0.0 - build: h3d75c4c_9_cpu - build_number: 9 + version: 18.1.0 + build: h3d75c4c_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda - sha256: 8552a3b30a89350fa46dbee1ba06d039605e6c5f200904f2b6c57fb32b7bbbc0 - md5: ff87e5f8ad826fc724763128f1d151a1 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda + sha256: 46d841b3f316d52d0fa085d5c583a4370de8223afc4f1bbf57eaebdf3aede7f1 + md5: cfee3c6a6ddeb26bba5d96ce7924a817 depends: - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 @@ -3206,21 +3199,20 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8073099 - timestamp: 1732499447839 + size: 8024186 + timestamp: 1732536195865 - kind: conda name: libarrow - version: 18.0.0 - build: h94eee4b_9_cpu - build_number: 9 + version: 18.1.0 + build: h94eee4b_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda - sha256: 4d59165cbb67020d5ecd819e944874ab6ff2085e496ceb47e9f23526d7d860c9 - md5: fe2841c29f3753146d4e89217d22d043 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda + sha256: 4f8ad6d3ac85f17b7ce319c1f8d0ffacee16403341315677977d3c7b9788166e + md5: 1718fa336f42a0b24b822457df7ce43d depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -3249,21 +3241,20 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 license: Apache-2.0 - size: 8775158 - timestamp: 1732498040333 + size: 8783805 + timestamp: 1732536115314 - kind: conda name: libarrow - version: 18.0.0 - build: hb943b0e_9_cpu - build_number: 9 + version: 18.1.0 + build: hb943b0e_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda - sha256: c4c7518b2e2bd8dd4573720a500ba68665041ec486e0cf9a034bb6bc1cf94ff8 - md5: dc4cb1c42c1b348f6f272b925fab201a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda + sha256: acc1b6ec23a964ec87722fc90b55d47f8cb03e211e86b9ff312bed588cfc400a + md5: f2dac358d4bd6b57d9b47f11cca0ea8c depends: - __osx >=11.0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -3290,180 +3281,171 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 license: Apache-2.0 - size: 5516035 - timestamp: 1732496751328 + size: 5497775 + timestamp: 1732535993576 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h286801f_9_cpu - build_number: 9 + version: 18.1.0 + build: h286801f_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda - sha256: 2740f7cbeb633a3f6ac777b91fe726ca87d7361ac90b66a8417a9b9099189a47 - md5: 8b516d4e381d099f6bef4145ed7f1491 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda + sha256: 1b4ae51de889becdd7aca2053e5115d65e2ea94b91d07d2e297d8d3c4666cec5 + md5: fd53fc3858c13425e3334b0af9b6637f depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu - libcxx >=18 license: Apache-2.0 - size: 493686 - timestamp: 1732496844787 + size: 484735 + timestamp: 1732536132543 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5888daf_9_cpu - build_number: 9 + version: 18.1.0 + build: h5888daf_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda - sha256: d714e7dfed613d1f093d60b6691c90cf2740b025860249a167ff08e6fa9c602c - md5: b36def03eb1624ad1ca6cd5866104096 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda + sha256: ad2cab7ca7320642a655ac1214248a64d60a0ce771fa8e7b5378746c16be1c64 + md5: d2f94a6f24f028544c7a4cb1b50c5eca depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 622189 - timestamp: 1732498078370 + size: 610906 + timestamp: 1732536155092 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5ad3122_9_cpu - build_number: 9 + version: 18.1.0 + build: h5ad3122_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda - sha256: 7e32e17d9de8856e6133180c5e10011867762057715efb943a86e46b61139825 - md5: 826de4db28e16eeac2a8c677d7702e30 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda + sha256: 216f791e47c774b1d44c89fe7839e03646285cf3220961306b90eec7bf4a6d71 + md5: 7b55a3bc6a3c9a75e509e68d89afd77a depends: - - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 588517 - timestamp: 1732499522102 + size: 577886 + timestamp: 1732536278269 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h286801f_9_cpu - build_number: 9 + version: 18.1.0 + build: h286801f_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda - sha256: 3a962b0591720234e724f887ec1975792daa987f34fc161b864183f61dd01bbb - md5: fb7cd00c96acf4ae83475fba8bd9d1ca + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda + sha256: a52ba6632837f2e5ec1c91ea4271ae7bd84fe9af348467e234a338b2fc78f41c + md5: 4020134362b81be7b91c7c6ae086eecc depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_9_cpu - - libarrow-acero 18.0.0 h286801f_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow-acero 18.1.0 h286801f_0_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_9_cpu + - libparquet 18.1.0 hda0ea68_0_cpu license: Apache-2.0 - size: 499874 - timestamp: 1732497930387 + size: 489616 + timestamp: 1732537344927 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5888daf_9_cpu - build_number: 9 + version: 18.1.0 + build: h5888daf_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda - sha256: d4e375d2d92c8845b4f634e7c4cc5d5643294ab74c64cfe0d4ef473816e1028a - md5: 07a60ef65486d08c96f324594dc2b5a1 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda + sha256: da77235b3874b50facb632cc409bee0df81e9dd7c25543a5e8b92873bd2d2a20 + md5: 7834b3a11d0f1ee7e13b4533e361586f depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_9_cpu - - libarrow-acero 18.0.0 h5888daf_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow-acero 18.1.0 h5888daf_0_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_9_cpu + - libparquet 18.1.0 h6bd9018_0_cpu - libstdcxx >=13 license: Apache-2.0 - size: 596492 - timestamp: 1732498166295 + size: 588196 + timestamp: 1732536246424 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5ad3122_9_cpu - build_number: 9 + version: 18.1.0 + build: h5ad3122_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda - sha256: ec5655b25deb8d4868ed1fa1cd47e64e34581550ee7b024c65861aff91ef105c - md5: 763a682b8976e760576f62422ed69728 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda + sha256: 17cd3bc19ae04d1a5b3795fac0fb796cc90eabeb3359a39eaf5dfed84385b4de + md5: 98d2712cebf91fc823e6231f7e55eda3 depends: - - libarrow 18.0.0 h3d75c4c_9_cpu - - libarrow-acero 18.0.0 h5ad3122_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow-acero 18.1.0 h5ad3122_0_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_9_cpu + - libparquet 18.1.0 h23a96eb_0_cpu - libstdcxx >=13 license: Apache-2.0 - size: 571675 - timestamp: 1732499604040 + size: 561486 + timestamp: 1732536339536 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h14ec2bd_9_cpu - build_number: 9 + version: 18.1.0 + build: h14ec2bd_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda - sha256: b1def0e7420f2cecfc8eccd0c8ae24c51e58623c3924e11208d69fefc3d07525 - md5: c472236ec8407f4591d5fe682d3c7ad7 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda + sha256: 30723e91df659aa971d9964e25730276295cf3a45be557ec1df9d413c31c44a9 + md5: f93217605309abc1c0314102036da21c depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3d75c4c_9_cpu - - libarrow-acero 18.0.0 h5ad3122_9_cpu - - libarrow-dataset 18.0.0 h5ad3122_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow-acero 18.1.0 h5ad3122_0_cpu + - libarrow-dataset 18.1.0 h5ad3122_0_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 528225 - timestamp: 1732499642412 + size: 515320 + timestamp: 1732536368053 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h5c8f2c3_9_cpu - build_number: 9 + version: 18.1.0 + build: h5c8f2c3_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda - sha256: 48b9bbcb4529cf41add523aef49acee69e0634f0e3d6f3d1101b16cb8d13cb2e - md5: a8fcd78ee422057362d928e2dd63ed8e + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda + sha256: d40e4a3061d58d07d017a6e439883ce1b9860f3a960a5aead8da189f8795a92c + md5: 51dc5a7117ec264e0a5cc1a5d82437dd depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h94eee4b_9_cpu - - libarrow-acero 18.0.0 h5888daf_9_cpu - - libarrow-dataset 18.0.0 h5888daf_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow-acero 18.1.0 h5888daf_0_cpu + - libarrow-dataset 18.1.0 h5888daf_0_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 530637 - timestamp: 1732498203493 + size: 520871 + timestamp: 1732536289093 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h6a6e5c5_9_cpu - build_number: 9 + version: 18.1.0 + build: h6a6e5c5_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda - sha256: 0623669f06c3ebd51421391a44f430986e627de1b215202aa80777a17a353b52 - md5: c0b80e0e4abd9c06a57b58c46224f8b2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda + sha256: aa673d86e56c3b17b66f5ffcd8ce98b93754c9c07e2e6aff96d0dd02135c0969 + md5: 9b2fd35f01e23972abb91543bbd6d84c depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hb943b0e_9_cpu - - libarrow-acero 18.0.0 h286801f_9_cpu - - libarrow-dataset 18.0.0 h286801f_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow-acero 18.1.0 h286801f_0_cpu + - libarrow-dataset 18.1.0 h286801f_0_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - size: 461278 - timestamp: 1732498084570 + size: 452400 + timestamp: 1732537518703 - kind: conda name: libblas version: 3.9.0 @@ -4817,59 +4799,56 @@ packages: timestamp: 1730773029647 - kind: conda name: libparquet - version: 18.0.0 - build: h23a96eb_9_cpu - build_number: 9 + version: 18.1.0 + build: h23a96eb_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda - sha256: 16a5200afeb34827cdbc80f8fbc73a6a61e8af138ba57b72ffb41fdd82455e7d - md5: b6e1289678df3e7abf18619af5e378c2 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda + sha256: be9d2527e709007aef42c39d9ab49163e587c25dc23cc1baba8af91edce16437 + md5: 99592ed1d2877136ebd192789164891a depends: - - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1123929 - timestamp: 1732499582562 + size: 1117420 + timestamp: 1732536323359 - kind: conda name: libparquet - version: 18.0.0 - build: h6bd9018_9_cpu - build_number: 9 + version: 18.1.0 + build: h6bd9018_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda - sha256: 22dd2354ee45e797dd52fbb8325aea3795440821480d4572fc30e4f268239a54 - md5: 79817c62827b836349adf32b218edd95 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda + sha256: d5f73b48e754af5874f48ef22dda1339b74597b66ff5ffeff8a2290f97a9611b + md5: 580349cffeac814a32ff661dcbe72821 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1213917 - timestamp: 1732498145973 + size: 1204506 + timestamp: 1732536224976 - kind: conda name: libparquet - version: 18.0.0 - build: hda0ea68_9_cpu - build_number: 9 + version: 18.1.0 + build: hda0ea68_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda - sha256: 6e93414ddda2853bc113bb5895eefa3f65de675ee94eb86e48109196f809425c - md5: 48c0673e0a561279ac8ed3b3cba1c448 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda + sha256: a6a22f0692d99a3cb6306ebd4d2e840c980d08797386f300c47604ee8865af4d + md5: 22f05c8b1c1b82eb5efc2a89c08ee047 depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 883867 - timestamp: 1732497873361 + size: 874829 + timestamp: 1732537283879 - kind: conda name: libpng version: 1.6.44 @@ -5824,79 +5803,80 @@ packages: timestamp: 1729352296161 - kind: conda name: max - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - sha256: e8544da30dc3cde2d5201181a0fb554c2fdb1a279343dc6fdc3b3699e480da65 - md5: 18ada131191a1b297d0be0d940b029f4 - depends: - - max-core ==24.6.0.dev2024112505 release - - max-python >=24.6.0.dev2024112505,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112505 release - - mblack ==24.6.0.dev2024112505 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + sha256: 8f6bc9f7bedbd4f1418d2b53e5958c043b189a01bbf4cb8d6064a41a8e655443 + md5: ed46a257f8120a349093635a248fae10 + depends: + - max-core ==24.6.0.dev2024112802 release + - max-python >=24.6.0.dev2024112802,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112802 release license: LicenseRef-Modular-Proprietary - size: 9930 - timestamp: 1732512294393 + size: 9925 + timestamp: 1732761611545 - kind: conda name: max-core - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda - sha256: 12ba51fe5626bd74c1efd8fdf5717feac6eefbf22efc05ce722babb0c9c123ed - md5: efc447f7345cbcf1fadb3c485c5d1a83 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda + sha256: 42041d5c8c91e2dad56bc2c3aca70eb196d0668d654436945bbb889403507360 + md5: f080fca8828a3f8547980498289f0c94 depends: - - mblack ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112802 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253852848 - timestamp: 1732512311477 + size: 254574652 + timestamp: 1732761611543 - kind: conda name: max-core - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda - sha256: b9045359f837e8baa054ebe53025af5756ff6ecf06803a401e2e4ccad36d7297 - md5: 8fcd55d2b633c9f27cc956ea7c0fa9d8 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda + sha256: 274e6939e5271c33f893ac8cfa8e9c84ffe2e9a1df71aa983934e01316fbe23b + md5: ad1f154593009241c7573207168d3d4e depends: - - mblack ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112802 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257504019 - timestamp: 1732512294391 + size: 258185912 + timestamp: 1732761679629 - kind: conda name: max-core - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda - sha256: 8ebbb263653bcc4b962205134f45d87f343f03513208f9ac7144f6ada5ca65ed - md5: 3d74098f452358f071362533e5518745 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda + sha256: 6f7a7565eb4352df793a85ea0a2c9f4044a38500e25fb0d9011b0eca5184b233 + md5: 675998dc57d891d543f0501503478548 depends: - - mblack ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112802 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219479698 - timestamp: 1732512237302 + size: 220126850 + timestamp: 1732761683706 - kind: conda name: max-python - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.11release.conda - sha256: 33493ea4cb1487ef8d6757a8aa212d6381420f153565fab23b7b4eb428b76a70 - md5: a629a63aea4af73b4adef7015d2a7a7f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.11release.conda + sha256: d3069fa0efc03a99f0a668e430717a69bda40a13417687cbfc9523d16436865e + md5: 1ae96b1160d1f9728250ea5ccfdf24fe depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python 3.11.* - pillow - fastapi + - httpx - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 @@ -5914,21 +5894,22 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128152518 - timestamp: 1732512311488 + size: 128397191 + timestamp: 1732761611549 - kind: conda name: max-python - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.11release.conda - sha256: 4f151d10b610afc3aae4416c81fc31dfe77b340cad8d211480d6a39cb628038a - md5: edb4087231b757f949d02dc4a765670e + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.11release.conda + sha256: 2646fe0cf6afb1baf11b58410f81ade59ccd02a48b45079f241247c2c53ecdf3 + md5: fc513c5360958ebab914aab3251be267 depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python 3.11.* - pillow - fastapi + - httpx - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 @@ -5946,21 +5927,22 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131912451 - timestamp: 1732512294402 + size: 132090316 + timestamp: 1732761679634 - kind: conda name: max-python - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.11release.conda - sha256: 7854f87aea717b77a235a70b7b6f60fc88385b9aa595ce7eb1fe81d7dd5259be - md5: 3bd720edff1ec36145e87d81dcf8b960 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.11release.conda + sha256: bb921dcc9b95d7124095760781f072ef119b579b7a3b222393fbdc3d97491a39 + md5: 28407fbb354de947c2d55c8f5d5b7a66 depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python 3.11.* - pillow - fastapi + - httpx - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 @@ -5978,17 +5960,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118818435 - timestamp: 1732512237305 + size: 118981646 + timestamp: 1732761683708 - kind: conda name: mblack - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - sha256: f72d60f0534d53ce247c450b04bfb6bc67a59f408ee3534392a7d812dc5fa03c - md5: 91a2bae1d55ec1c3bdf9db8d046acd12 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + sha256: f86d1bcf2415aa312f771c520abbdfbfe8c4d98dbecda41e5eb1a521dbd28b93 + md5: 21cf6986dff640f2b7d9d3df43c3af92 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5998,8 +5980,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130604 - timestamp: 1732512294400 + size: 130609 + timestamp: 1732761611548 - kind: conda name: mdurl version: 0.1.2 @@ -6017,21 +5999,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - sha256: 0b1430e59f40378948363378136c258aa1dbc9d9169f2bcd6468cec240fe8233 - md5: 94f0c957f1f19fec3edd8d58e6b6a7db + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + sha256: 3f56280f801cf79a4cd32e6fd94b0edcf957bf580fc29de6761d535658bc6e56 + md5: cfb9c8e8a2b5c8bde51bfba633da3534 depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22945 - timestamp: 1732512294400 + size: 22936 + timestamp: 1732761611549 - kind: conda name: multidict version: 6.1.0 @@ -7002,76 +6984,72 @@ packages: timestamp: 1726802424786 - kind: conda name: pyarrow - version: 18.0.0 - build: py311h38be061_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py311h38be061_2.conda - sha256: 8daf047b57781ceeb8ac24140af6e36006b93d33ecf41de2a9c45c0ecf9e3a48 - md5: baa4ebebfe347c50ee7ecdcd8a93a82a - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_2_* + version: 18.1.0 + build: py311h38be061_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda + sha256: 9cfd158a1bb76c4af1a51237a5c5db4a36b2e83bad625ddf6c2b65ee232c16ba + md5: 47b8624012486e05e66f6acf7267aa22 + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: Apache-2.0 - size: 25181 - timestamp: 1732456924036 + size: 25199 + timestamp: 1732610760700 - kind: conda name: pyarrow - version: 18.0.0 - build: py311ha1ab1f8_2 - build_number: 2 + version: 18.1.0 + build: py311ha1ab1f8_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py311ha1ab1f8_2.conda - sha256: c90c884100ca29437f5ea85b1bb402e3029a22bc4cc8937fa6aac7debd78707b - md5: d42fff081da969a020ddf7a53a327c68 - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_2_* + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda + sha256: c93f3ede66be0502b5b9afc5bc3fde50d6f8c3863d29b138ff5f536a116457f3 + md5: 7a3b822fa6abb937651bee20878f087a + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: Apache-2.0 - size: 25307 - timestamp: 1732456774372 + size: 25322 + timestamp: 1732611121491 - kind: conda name: pyarrow - version: 18.0.0 - build: py311hfecb2dc_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py311hfecb2dc_2.conda - sha256: 2169b66a318f5d3271c8ef3e969d770fe3c94129260cbcaaeeb69e34ca6666a8 - md5: ec731f5c5f73c994ff50cdb3cf5c7096 - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_2_* + version: 18.1.0 + build: py311hfecb2dc_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda + sha256: 2af68c0d11cf480a043b213eb4d1e0908f3edff25dc418b9c55f1002f46dc45b + md5: b66ff73d40f84cca2d7a4f755b21d956 + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: Apache-2.0 - size: 25384 - timestamp: 1732457267195 + size: 25373 + timestamp: 1732611450659 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py311h4854187_2_cpu - build_number: 2 + version: 18.1.0 + build: py311h4854187_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py311h4854187_2_cpu.conda - sha256: 9e04c53771353fa687cbfb1b96dda2754825e603da3631c420287deabc303c42 - md5: c6542a932c045f492cfe296d396db10a + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py311h4854187_0_cpu.conda + sha256: db147a0cc22b55ea3c35553b39336eb0392c33371f6efd7f9fb4efed2b728e34 + md5: 830a64ee7a65e588c7ea615be84db2e3 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -7081,19 +7059,18 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 4577580 - timestamp: 1732456556333 + size: 4562010 + timestamp: 1732610600424 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py311ha6d2531_2_cpu - build_number: 2 + version: 18.1.0 + build: py311ha6d2531_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py311ha6d2531_2_cpu.conda - sha256: b294c120476fbc6113fb8697c52937741477f64ba6a73bafd378421adbabb1dc - md5: b69ba2d10dcb1725d1b6ab453d4a2002 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py311ha6d2531_0_cpu.conda + sha256: 3187321dc45106c2c87e5a70ab94ecbc0633f5b43caabcf173f4d372e5f6d8d8 + md5: 8cddcf0bb4b3e674ae6bbdda5266693f depends: - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -7104,31 +7081,30 @@ packages: - apache-arrow-proc =*=cpu - numpy >=1.21,<3 license: Apache-2.0 - size: 4439708 - timestamp: 1732456621 + size: 4484447 + timestamp: 1732610567027 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py311he04fa90_2_cpu - build_number: 2 + version: 18.1.0 + build: py311he04fa90_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py311he04fa90_2_cpu.conda - sha256: e54338d770730313c1396b7f2a20010c1382f5c8d1769c0507b4618b38b6212a - md5: de0248473b5bdab3e92ba8099fb6f6fe + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py311he04fa90_0_cpu.conda + sha256: 4563e2d4f41b3874b89e8e2bdebf42588c1c819bd050ae858200f60e30bae860 + md5: 09b4a27f615d22f194466d8c274ef13e depends: - __osx >=11.0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 3955951 - timestamp: 1732456749904 + size: 3974075 + timestamp: 1732611073316 - kind: conda name: pycparser version: '2.22' @@ -7146,13 +7122,13 @@ packages: timestamp: 1711811634025 - kind: conda name: pydantic - version: 2.10.1 - build: pyh10f6f8f_0 + version: 2.10.2 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - sha256: b1872231d26ee3ded32bd1fe3ee1b3c7d9834ad72bf28aed70e5cd1235341584 - md5: c15343c9dbdb30766a07e5b70e46c7d3 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 + md5: e661b732b4d7514ace55a01873f03201 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.1 @@ -7161,8 +7137,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 315991 - timestamp: 1732286519715 + size: 316818 + timestamp: 1732689481710 - kind: conda name: pydantic-core version: 2.27.1 @@ -7997,18 +7973,19 @@ packages: - kind: conda name: setuptools version: 75.6.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - sha256: eeec4645f70ce0ed03348397dced9d218a650a42df98592419af61d2689163ed - md5: 68d7d406366926b09a6a023e3d0f71d7 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 + md5: fc80f7995e396cbaeabd23cf46c413dc depends: - python >=3.9 license: MIT license_family: MIT - size: 774304 - timestamp: 1732216189406 + size: 774252 + timestamp: 1732632769210 - kind: conda name: shellingham version: 1.5.4 @@ -8182,13 +8159,12 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.3 - build: py311h182c674_1 - build_number: 1 + version: 0.20.4 + build: py311h182c674_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py311h182c674_1.conda - sha256: e33349805a0b60a30d634dba94cb368066faf330a70dfe078ca38346904f31d0 - md5: 59f247e6b7d2fb63391c58be3e2aad56 + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py311h182c674_0.conda + sha256: 27006989d4aa4f7d3058ae9d089e0d8c6974ae55bc83d502c00ddee1332fa5ad + md5: c24051d78f982233e6f9fcc313e40a1c depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 @@ -8201,17 +8177,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2253964 - timestamp: 1732467653745 + size: 2260744 + timestamp: 1732658087592 - kind: conda name: tokenizers - version: 0.20.3 - build: py311h5e37e04_1 - build_number: 1 + version: 0.20.4 + build: py311h5e37e04_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py311h5e37e04_1.conda - sha256: 86625016fe6051d275a3e1938ba2a88a065a9ba90e961c0ca20660f6d35d7340 - md5: 4c274736765f1b78546ee040f51a1250 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py311h5e37e04_0.conda + sha256: 0c40f1b8ff2c5592ab5919ec1f0bb6f7bef8297d8da8b97a777310db7c7e0611 + md5: cb0eccdce4d155ef9050548c319a35c5 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 @@ -8224,17 +8199,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2327871 - timestamp: 1732467841931 + size: 2330115 + timestamp: 1732658113825 - kind: conda name: tokenizers - version: 0.20.3 - build: py311h82b0fb8_1 - build_number: 1 + version: 0.20.4 + build: py311h82b0fb8_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py311h82b0fb8_1.conda - sha256: 91af8884a03f473f4283d4d88a169b4eada51fb974cc8351bc620fbf86212a05 - md5: 4bf21a29e0d8e5183531104c5b6445fd + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py311h82b0fb8_0.conda + sha256: 8edbc016a3d33a254b5a6ba67822491a529cfe1206ee304f32bae987b795a8e6 + md5: 70ca9ca07b29c8faac8c1ea0576d0a0c depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -8246,52 +8220,49 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1929990 - timestamp: 1732468079805 + size: 1935376 + timestamp: 1732658323422 - kind: conda name: tornado - version: 6.4.1 - build: py311h460d6c5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py311h460d6c5_1.conda - sha256: bba4940ef7522c3b4ae6eacd296e5e110de3659f7e4c3654d4fc2bb213c2091c - md5: 8ba6d177509dc4fac7af09749556eed0 + version: 6.4.2 + build: py311h5487e9b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda + sha256: 0619169eb95f8d7285dd267be3559d3f71af071954792cdd9591a90602992cee + md5: fe331d12b7fccca2348a114c4742a0e0 depends: - - __osx >=11.0 + - libgcc >=13 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 859139 - timestamp: 1724956356600 + size: 859892 + timestamp: 1732616872562 - kind: conda name: tornado - version: 6.4.1 - build: py311h5487e9b_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py311h5487e9b_1.conda - sha256: 94c073f2c235a2a9fab3da325f5377637628fea82ec4f6c5df560a3f342bfa74 - md5: b21cdf6b47af11c86efb5870ee48c277 + version: 6.4.2 + build: py311h917b07b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + sha256: 80b79a7d4ed8e16019b8c634cca66935d18fc98be358c76a6ead8c611306ee14 + md5: 183b74c576dc7f920dae168997dbd1dd depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 860132 - timestamp: 1724957323906 + size: 858954 + timestamp: 1732616142626 - kind: conda name: tornado - version: 6.4.1 - build: py311h9ecbd09_1 - build_number: 1 + version: 6.4.2 + build: py311h9ecbd09_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py311h9ecbd09_1.conda - sha256: 21390d0c5708581959ebd89702433c1d06a56ddd834797a194b217f98e38df53 - md5: 616fed0b6f5c925250be779b05d1d7f7 + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + sha256: afa3489113154b5cb0724b0bf120b62df91f426dabfe5d02f2ba09e90d346b28 + md5: df3aee9c3e44489257a840b8354e77b9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8299,8 +8270,8 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 856725 - timestamp: 1724956239832 + size: 855653 + timestamp: 1732616048886 - kind: conda name: tqdm version: 4.67.1 @@ -8569,13 +8540,12 @@ packages: timestamp: 1730214665776 - kind: conda name: watchfiles - version: 0.24.0 - build: py311h0ca61a2_1 - build_number: 1 + version: 1.0.0 + build: py311h0ca61a2_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py311h0ca61a2_1.conda - sha256: 2745a126ec7b90ea0ef79c7d6a5ea09d314bcbd14538195618caa1a55f2b4e4f - md5: ce9538fa1fb86bfdf458aaf513fdf3bb + url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py311h0ca61a2_0.conda + sha256: f47575a2e455d12bd0471a2447cb2a514d183ed84bbc12a2250a9ad87484b682 + md5: a1f03b837b9b1be1cff6765e3002e983 depends: - anyio >=3.0.0 - libgcc >=13 @@ -8585,18 +8555,16 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 400240 - timestamp: 1725347290339 + size: 405692 + timestamp: 1732689662727 - kind: conda name: watchfiles - version: 0.24.0 - build: py311h481aa64_1 - build_number: 1 + version: 1.0.0 + build: py311h3ff9189_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py311h481aa64_1.conda - sha256: 30e96f05cd579b3a4f86378e2eddfc0caf62edd9b4938765d5dbfbbc262bf65f - md5: b3c447b6418c567f3726ade082f54f42 + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py311h3ff9189_0.conda + sha256: cf1514bb697ac6db69a1b9a3e43a8789054cf02df3baefa1a5ea946296552ca5 + md5: 2a2e657bc8ef45ccd757e432d81e209d depends: - __osx >=11.0 - anyio >=3.0.0 @@ -8606,18 +8574,16 @@ packages: constrains: - __osx >=11.0 license: MIT - license_family: MIT - size: 345348 - timestamp: 1725347436809 + size: 357633 + timestamp: 1732689799347 - kind: conda name: watchfiles - version: 0.24.0 - build: py311h9e33e62_1 - build_number: 1 + version: 1.0.0 + build: py311h9e33e62_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py311h9e33e62_1.conda - sha256: ad31508aba4c726e95949a66a65605146dbc8aaccce3091617162da87f857cdb - md5: 31c07a7fc0a2bf4a34808a686bf3de19 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py311h9e33e62_0.conda + sha256: a34479c60b23b7b9465aa547891d9e18bffec5b6e56e9f24634491bc71d3c5a5 + md5: 02aaa195aada560b5402a45e5bbece96 depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -8627,9 +8593,8 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 395778 - timestamp: 1725347224229 + size: 409759 + timestamp: 1732689546491 - kind: conda name: websockets version: '14.1' @@ -8683,58 +8648,52 @@ packages: timestamp: 1731498790453 - kind: conda name: wrapt - version: 1.16.0 - build: py311h460d6c5_1 - build_number: 1 + version: 1.17.0 + build: py311h917b07b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py311h460d6c5_1.conda - sha256: 5667c48efd5e19e2754660293f00899dfd92b9228e19e7140cc46efcd0af8784 - md5: ff3535f6abd3ec8e0589ead32a8c86fc + url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py311h917b07b_0.conda + sha256: fff7f86570f0a3fd90878b75b552bafddb854e8f4d68a171cd427a13e9eb160c + md5: a56950191b7efa9406bbaff925173d20 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-2-Clause - license_family: BSD - size: 60435 - timestamp: 1724958101626 + size: 62309 + timestamp: 1732524074190 - kind: conda name: wrapt - version: 1.16.0 - build: py311h9ecbd09_1 - build_number: 1 + version: 1.17.0 + build: py311h9ecbd09_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py311h9ecbd09_1.conda - sha256: 426ee582e676e15a85846743060710fc4dbe4dd562b21d80d751694ffa263e41 - md5: 810ae646bcc50a017380336d874e4014 + url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py311h9ecbd09_0.conda + sha256: 8e9a7a1a69d0d59b3cb0066fbdbf16dc7a0d9554ffc2a365e67eca72230ca3e8 + md5: 452e39fb544b1ec9cc6c5b2ac9c47efa depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: BSD-2-Clause - license_family: BSD - size: 63403 - timestamp: 1724958070675 + size: 65396 + timestamp: 1732523677157 - kind: conda name: wrapt - version: 1.16.0 - build: py311ha879c10_1 - build_number: 1 + version: 1.17.0 + build: py311ha879c10_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py311ha879c10_1.conda - sha256: ab47023042314222cbbff26093795476769b68a24f8cb117021d9c39233a7168 - md5: b6853a9d288024ce2c8c8de30376f5af + url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py311ha879c10_0.conda + sha256: 33e12fc8188dc0f649ff9fbc3770bff61912722e88ebae806accff72d01ca34f + md5: e2d4e19306f4df6953c7f23d15ab3805 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-2-Clause - license_family: BSD - size: 64144 - timestamp: 1724958112306 + size: 65780 + timestamp: 1732523794589 - kind: conda name: xorg-libxau version: 1.0.11 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 6e5fb699b9..b8fb00d453 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -28,10 +28,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -80,7 +80,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -92,7 +92,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -112,10 +112,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -143,7 +143,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -166,13 +166,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -217,10 +217,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda @@ -250,7 +250,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda @@ -262,9 +262,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda @@ -281,14 +281,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda @@ -321,10 +321,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -373,7 +373,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -386,7 +386,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -406,10 +406,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -437,7 +437,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -460,13 +460,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -511,10 +511,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda @@ -544,7 +544,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda @@ -556,9 +556,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda @@ -575,14 +575,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py312h8cbf658_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda @@ -615,10 +615,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -667,7 +667,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -679,7 +679,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -697,10 +697,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -725,7 +725,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -745,13 +745,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -796,10 +796,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda @@ -830,7 +830,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda @@ -842,9 +842,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda @@ -861,14 +861,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda @@ -1670,13 +1670,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h29aef15_3 - build_number: 3 + version: 0.7.2 + build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda - sha256: b8c67e279f8efa833fc92b066dc6d0cef3aff7f06144f738adfbd95cdab52865 - md5: bd7d7b664176b5d164d369f12615b75a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + sha256: 387e4df97529d1849a774082b1fed78c7870effc02ed4c2b45961615a0516b64 + md5: fbf4af2c93ae67f175583c9185be4133 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1688,17 +1687,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117581 - timestamp: 1731745139268 + size: 117212 + timestamp: 1732679211893 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h3a84f74_3 - build_number: 3 + version: 0.7.2 + build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda - sha256: 274c9ec3c173a2979b949ccc10a6013673c4391502a4a71e07070d6c50eabc60 - md5: e7a54821aaa774cfd64efcd45114a4d7 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + sha256: c0ae38eb1f878157323afdd002229e9eeb739f622e028447330805c030c50a9f + md5: a5f883ce16928e898856b5bd8d1bee57 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1711,17 +1709,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113837 - timestamp: 1731745115080 + size: 113549 + timestamp: 1732679091663 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h840aca7_3 - build_number: 3 + version: 0.7.2 + build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda - sha256: a75dce44667327d365abdcd68c525913c7dd948ea26d4709386acd58717307fc - md5: 540af65a722c5e490012153673793df5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + sha256: 30e4bed9d008fb79f5e84ecbea0f21030ad5d60cb5c55a962df90721aa98fc42 + md5: 63100ff62fdff4a6afcea38841036027 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1732,8 +1729,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 96830 - timestamp: 1731745236535 + size: 97042 + timestamp: 1732679268030 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1835,11 +1832,12 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.5 - build: h21d7256_0 + build: h0e61686_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda - sha256: 54a9f37ba03e20b29215a9e301846ee22368bd6efb9e9afce7c6ad3e64426219 - md5: b2468de19999ee8452757f12f15a9b34 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda + sha256: 1d7bc75a81cdcd992ebee9b06be6a63963203d7fc2537099bf91fda0573c3be6 + md5: 7143a281febcabfc242a458b7bc12048 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1849,24 +1847,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.2,<0.7.3.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354933 - timestamp: 1732136158458 + size: 353633 + timestamp: 1732704043097 - kind: conda name: aws-crt-cpp version: 0.29.5 - build: h6832833_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda - sha256: e42172ffef36e2e5793532ab5b8d8c499fe8c4eaf154404501bd3f97a424e701 - md5: 546159ec6849eaf2b632eb79e3ab16f7 + build: h6068a22_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda + sha256: 15eba2ca46b10a17d60b26d7a6db222f08e1d63c55eb76a19f16c30e06679fe4 + md5: 6c0a760285cb79c46a99b15449ecb9ac depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1874,22 +1872,25 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.2,<0.7.3.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236424 - timestamp: 1732136497320 + size: 283812 + timestamp: 1732704031684 - kind: conda name: aws-crt-cpp version: 0.29.5 - build: h8cc6612_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda - sha256: aac21029314f015d558fc1cb0238b32e3aa1b0473f5ca4f3ef469d0f8c59e026 - md5: e80ca2db9b263c16a44bab78a76165ec + build: h8bcca62_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda + sha256: 371c509c0cd22360cd39963189ba7aa290b08b7384dd4414895f6186e2aecf7e + md5: ef024742bb2501bd3d7f10b0f9ce5a4d depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1897,14 +1898,13 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.2,<0.7.3.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 284386 - timestamp: 1732136167312 + size: 236161 + timestamp: 1732704224415 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -3277,58 +3277,52 @@ packages: timestamp: 1731707562362 - kind: conda name: httptools - version: 0.6.1 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py312h024a12e_1.conda - sha256: a17d6d925de085b967ee1e44572ccfbb2c109aec1ccc4e6723acd7474c57eeeb - md5: c5c8dfe36db20180a8c7e49049377857 + version: 0.6.4 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 + md5: 8b1160b32557290b64d5be68db3d996d depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT - license_family: MIT - size: 77287 - timestamp: 1726688371563 + size: 101872 + timestamp: 1732707756745 - kind: conda name: httptools - version: 0.6.1 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py312h66e93f0_1.conda - sha256: 07d129a180564051547be7b17140c5a7d4789ba8b0404842328cc638615bbe81 - md5: e9060bac59733da8b5d8c6156b51fbcf + version: 0.6.4 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 + md5: 5e70a6de59352f9a52e9caa7f3447390 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT - license_family: MIT - size: 93588 - timestamp: 1726688214856 + size: 101255 + timestamp: 1732707891645 - kind: conda name: httptools - version: 0.6.1 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py312hb2c0f52_1.conda - sha256: bcd6227032316b69494f15ebc5c81f8670efcb2aa1cadf7c754e38a1a80811c5 - md5: 91dc2737602f681a4679b8b4022b122e + version: 0.6.4 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be + md5: e1747a8e8d2aca5499aaea9993bf31ff depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT - license_family: MIT - size: 92683 - timestamp: 1726688399611 + size: 85623 + timestamp: 1732707871414 - kind: conda name: httpx version: 0.27.2 @@ -3584,19 +3578,18 @@ packages: timestamp: 1715127275924 - kind: conda name: json5 - version: 0.9.28 - build: pyhff2d567_0 + version: 0.10.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/json5-0.9.28-pyhff2d567_0.conda - sha256: 402586e586761e0d51dd590fb71786f7f4e21c16353ca7d1c559358a1f849b26 - md5: b5fd1ac9269dd22e003eaac27e249d97 + url: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_0.conda + sha256: df01c5253bb5f8c68526c8bad92b8e832ed58a0d4c40d08a65c81c51821bc23d + md5: 165cbd1d80be88dafadeabfaae6fa588 depends: - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 28525 - timestamp: 1731366079831 + size: 32030 + timestamp: 1732666224221 - kind: conda name: jsonpointer version: 3.0.0 @@ -4174,13 +4167,12 @@ packages: timestamp: 1727295571173 - kind: conda name: libarrow - version: 18.0.0 - build: h3d75c4c_9_cpu - build_number: 9 + version: 18.1.0 + build: h3d75c4c_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda - sha256: 8552a3b30a89350fa46dbee1ba06d039605e6c5f200904f2b6c57fb32b7bbbc0 - md5: ff87e5f8ad826fc724763128f1d151a1 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda + sha256: 46d841b3f316d52d0fa085d5c583a4370de8223afc4f1bbf57eaebdf3aede7f1 + md5: cfee3c6a6ddeb26bba5d96ce7924a817 depends: - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 @@ -4208,21 +4200,20 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8073099 - timestamp: 1732499447839 + size: 8024186 + timestamp: 1732536195865 - kind: conda name: libarrow - version: 18.0.0 - build: h94eee4b_9_cpu - build_number: 9 + version: 18.1.0 + build: h94eee4b_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda - sha256: 4d59165cbb67020d5ecd819e944874ab6ff2085e496ceb47e9f23526d7d860c9 - md5: fe2841c29f3753146d4e89217d22d043 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda + sha256: 4f8ad6d3ac85f17b7ce319c1f8d0ffacee16403341315677977d3c7b9788166e + md5: 1718fa336f42a0b24b822457df7ce43d depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -4251,21 +4242,20 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 license: Apache-2.0 - size: 8775158 - timestamp: 1732498040333 + size: 8783805 + timestamp: 1732536115314 - kind: conda name: libarrow - version: 18.0.0 - build: hb943b0e_9_cpu - build_number: 9 + version: 18.1.0 + build: hb943b0e_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda - sha256: c4c7518b2e2bd8dd4573720a500ba68665041ec486e0cf9a034bb6bc1cf94ff8 - md5: dc4cb1c42c1b348f6f272b925fab201a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda + sha256: acc1b6ec23a964ec87722fc90b55d47f8cb03e211e86b9ff312bed588cfc400a + md5: f2dac358d4bd6b57d9b47f11cca0ea8c depends: - __osx >=11.0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -4292,180 +4282,171 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 license: Apache-2.0 - size: 5516035 - timestamp: 1732496751328 + size: 5497775 + timestamp: 1732535993576 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h286801f_9_cpu - build_number: 9 + version: 18.1.0 + build: h286801f_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda - sha256: 2740f7cbeb633a3f6ac777b91fe726ca87d7361ac90b66a8417a9b9099189a47 - md5: 8b516d4e381d099f6bef4145ed7f1491 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda + sha256: 1b4ae51de889becdd7aca2053e5115d65e2ea94b91d07d2e297d8d3c4666cec5 + md5: fd53fc3858c13425e3334b0af9b6637f depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu - libcxx >=18 license: Apache-2.0 - size: 493686 - timestamp: 1732496844787 + size: 484735 + timestamp: 1732536132543 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5888daf_9_cpu - build_number: 9 + version: 18.1.0 + build: h5888daf_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda - sha256: d714e7dfed613d1f093d60b6691c90cf2740b025860249a167ff08e6fa9c602c - md5: b36def03eb1624ad1ca6cd5866104096 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda + sha256: ad2cab7ca7320642a655ac1214248a64d60a0ce771fa8e7b5378746c16be1c64 + md5: d2f94a6f24f028544c7a4cb1b50c5eca depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 622189 - timestamp: 1732498078370 + size: 610906 + timestamp: 1732536155092 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5ad3122_9_cpu - build_number: 9 + version: 18.1.0 + build: h5ad3122_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda - sha256: 7e32e17d9de8856e6133180c5e10011867762057715efb943a86e46b61139825 - md5: 826de4db28e16eeac2a8c677d7702e30 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda + sha256: 216f791e47c774b1d44c89fe7839e03646285cf3220961306b90eec7bf4a6d71 + md5: 7b55a3bc6a3c9a75e509e68d89afd77a depends: - - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 588517 - timestamp: 1732499522102 + size: 577886 + timestamp: 1732536278269 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h286801f_9_cpu - build_number: 9 + version: 18.1.0 + build: h286801f_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda - sha256: 3a962b0591720234e724f887ec1975792daa987f34fc161b864183f61dd01bbb - md5: fb7cd00c96acf4ae83475fba8bd9d1ca + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda + sha256: a52ba6632837f2e5ec1c91ea4271ae7bd84fe9af348467e234a338b2fc78f41c + md5: 4020134362b81be7b91c7c6ae086eecc depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_9_cpu - - libarrow-acero 18.0.0 h286801f_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow-acero 18.1.0 h286801f_0_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_9_cpu + - libparquet 18.1.0 hda0ea68_0_cpu license: Apache-2.0 - size: 499874 - timestamp: 1732497930387 + size: 489616 + timestamp: 1732537344927 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5888daf_9_cpu - build_number: 9 + version: 18.1.0 + build: h5888daf_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda - sha256: d4e375d2d92c8845b4f634e7c4cc5d5643294ab74c64cfe0d4ef473816e1028a - md5: 07a60ef65486d08c96f324594dc2b5a1 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda + sha256: da77235b3874b50facb632cc409bee0df81e9dd7c25543a5e8b92873bd2d2a20 + md5: 7834b3a11d0f1ee7e13b4533e361586f depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_9_cpu - - libarrow-acero 18.0.0 h5888daf_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow-acero 18.1.0 h5888daf_0_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_9_cpu + - libparquet 18.1.0 h6bd9018_0_cpu - libstdcxx >=13 license: Apache-2.0 - size: 596492 - timestamp: 1732498166295 + size: 588196 + timestamp: 1732536246424 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5ad3122_9_cpu - build_number: 9 + version: 18.1.0 + build: h5ad3122_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda - sha256: ec5655b25deb8d4868ed1fa1cd47e64e34581550ee7b024c65861aff91ef105c - md5: 763a682b8976e760576f62422ed69728 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda + sha256: 17cd3bc19ae04d1a5b3795fac0fb796cc90eabeb3359a39eaf5dfed84385b4de + md5: 98d2712cebf91fc823e6231f7e55eda3 depends: - - libarrow 18.0.0 h3d75c4c_9_cpu - - libarrow-acero 18.0.0 h5ad3122_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow-acero 18.1.0 h5ad3122_0_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_9_cpu + - libparquet 18.1.0 h23a96eb_0_cpu - libstdcxx >=13 license: Apache-2.0 - size: 571675 - timestamp: 1732499604040 + size: 561486 + timestamp: 1732536339536 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h14ec2bd_9_cpu - build_number: 9 + version: 18.1.0 + build: h14ec2bd_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda - sha256: b1def0e7420f2cecfc8eccd0c8ae24c51e58623c3924e11208d69fefc3d07525 - md5: c472236ec8407f4591d5fe682d3c7ad7 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda + sha256: 30723e91df659aa971d9964e25730276295cf3a45be557ec1df9d413c31c44a9 + md5: f93217605309abc1c0314102036da21c depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3d75c4c_9_cpu - - libarrow-acero 18.0.0 h5ad3122_9_cpu - - libarrow-dataset 18.0.0 h5ad3122_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow-acero 18.1.0 h5ad3122_0_cpu + - libarrow-dataset 18.1.0 h5ad3122_0_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 528225 - timestamp: 1732499642412 + size: 515320 + timestamp: 1732536368053 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h5c8f2c3_9_cpu - build_number: 9 + version: 18.1.0 + build: h5c8f2c3_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda - sha256: 48b9bbcb4529cf41add523aef49acee69e0634f0e3d6f3d1101b16cb8d13cb2e - md5: a8fcd78ee422057362d928e2dd63ed8e + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda + sha256: d40e4a3061d58d07d017a6e439883ce1b9860f3a960a5aead8da189f8795a92c + md5: 51dc5a7117ec264e0a5cc1a5d82437dd depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h94eee4b_9_cpu - - libarrow-acero 18.0.0 h5888daf_9_cpu - - libarrow-dataset 18.0.0 h5888daf_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow-acero 18.1.0 h5888daf_0_cpu + - libarrow-dataset 18.1.0 h5888daf_0_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 530637 - timestamp: 1732498203493 + size: 520871 + timestamp: 1732536289093 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h6a6e5c5_9_cpu - build_number: 9 + version: 18.1.0 + build: h6a6e5c5_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda - sha256: 0623669f06c3ebd51421391a44f430986e627de1b215202aa80777a17a353b52 - md5: c0b80e0e4abd9c06a57b58c46224f8b2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda + sha256: aa673d86e56c3b17b66f5ffcd8ce98b93754c9c07e2e6aff96d0dd02135c0969 + md5: 9b2fd35f01e23972abb91543bbd6d84c depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hb943b0e_9_cpu - - libarrow-acero 18.0.0 h286801f_9_cpu - - libarrow-dataset 18.0.0 h286801f_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow-acero 18.1.0 h286801f_0_cpu + - libarrow-dataset 18.1.0 h286801f_0_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - size: 461278 - timestamp: 1732498084570 + size: 452400 + timestamp: 1732537518703 - kind: conda name: libblas version: 3.9.0 @@ -5819,59 +5800,56 @@ packages: timestamp: 1730773029647 - kind: conda name: libparquet - version: 18.0.0 - build: h23a96eb_9_cpu - build_number: 9 + version: 18.1.0 + build: h23a96eb_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda - sha256: 16a5200afeb34827cdbc80f8fbc73a6a61e8af138ba57b72ffb41fdd82455e7d - md5: b6e1289678df3e7abf18619af5e378c2 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda + sha256: be9d2527e709007aef42c39d9ab49163e587c25dc23cc1baba8af91edce16437 + md5: 99592ed1d2877136ebd192789164891a depends: - - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1123929 - timestamp: 1732499582562 + size: 1117420 + timestamp: 1732536323359 - kind: conda name: libparquet - version: 18.0.0 - build: h6bd9018_9_cpu - build_number: 9 + version: 18.1.0 + build: h6bd9018_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda - sha256: 22dd2354ee45e797dd52fbb8325aea3795440821480d4572fc30e4f268239a54 - md5: 79817c62827b836349adf32b218edd95 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda + sha256: d5f73b48e754af5874f48ef22dda1339b74597b66ff5ffeff8a2290f97a9611b + md5: 580349cffeac814a32ff661dcbe72821 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1213917 - timestamp: 1732498145973 + size: 1204506 + timestamp: 1732536224976 - kind: conda name: libparquet - version: 18.0.0 - build: hda0ea68_9_cpu - build_number: 9 + version: 18.1.0 + build: hda0ea68_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda - sha256: 6e93414ddda2853bc113bb5895eefa3f65de675ee94eb86e48109196f809425c - md5: 48c0673e0a561279ac8ed3b3cba1c448 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda + sha256: a6a22f0692d99a3cb6306ebd4d2e840c980d08797386f300c47604ee8865af4d + md5: 22f05c8b1c1b82eb5efc2a89c08ee047 depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 883867 - timestamp: 1732497873361 + size: 874829 + timestamp: 1732537283879 - kind: conda name: libpng version: 1.6.44 @@ -6842,79 +6820,80 @@ packages: timestamp: 1713250613726 - kind: conda name: max - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - sha256: e8544da30dc3cde2d5201181a0fb554c2fdb1a279343dc6fdc3b3699e480da65 - md5: 18ada131191a1b297d0be0d940b029f4 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + sha256: 8f6bc9f7bedbd4f1418d2b53e5958c043b189a01bbf4cb8d6064a41a8e655443 + md5: ed46a257f8120a349093635a248fae10 depends: - - max-core ==24.6.0.dev2024112505 release - - max-python >=24.6.0.dev2024112505,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112505 release - - mblack ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release + - max-python >=24.6.0.dev2024112802,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112802 release license: LicenseRef-Modular-Proprietary - size: 9930 - timestamp: 1732512294393 + size: 9925 + timestamp: 1732761611545 - kind: conda name: max-core - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda - sha256: 12ba51fe5626bd74c1efd8fdf5717feac6eefbf22efc05ce722babb0c9c123ed - md5: efc447f7345cbcf1fadb3c485c5d1a83 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda + sha256: 42041d5c8c91e2dad56bc2c3aca70eb196d0668d654436945bbb889403507360 + md5: f080fca8828a3f8547980498289f0c94 depends: - - mblack ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112802 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253852848 - timestamp: 1732512311477 + size: 254574652 + timestamp: 1732761611543 - kind: conda name: max-core - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda - sha256: b9045359f837e8baa054ebe53025af5756ff6ecf06803a401e2e4ccad36d7297 - md5: 8fcd55d2b633c9f27cc956ea7c0fa9d8 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda + sha256: 274e6939e5271c33f893ac8cfa8e9c84ffe2e9a1df71aa983934e01316fbe23b + md5: ad1f154593009241c7573207168d3d4e depends: - - mblack ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112802 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257504019 - timestamp: 1732512294391 + size: 258185912 + timestamp: 1732761679629 - kind: conda name: max-core - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda - sha256: 8ebbb263653bcc4b962205134f45d87f343f03513208f9ac7144f6ada5ca65ed - md5: 3d74098f452358f071362533e5518745 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda + sha256: 6f7a7565eb4352df793a85ea0a2c9f4044a38500e25fb0d9011b0eca5184b233 + md5: 675998dc57d891d543f0501503478548 depends: - - mblack ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112802 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219479698 - timestamp: 1732512237302 + size: 220126850 + timestamp: 1732761683706 - kind: conda name: max-python - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.12release.conda - sha256: 553628bfa9b9759ddccec73380d63055dcfe82bd6df75f1cb03b12365a811bd7 - md5: ff7c6ff7bb937590832e17bdd742d3ea + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda + sha256: 448b475b496eb65f8f1bb8febeb074b07c26c104901f31d8b5414e435844585b + md5: 5149d46120efd08067a9040f9f4705f5 depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python 3.12.* - pillow - fastapi + - httpx - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 @@ -6932,21 +6911,22 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128104249 - timestamp: 1732512311491 + size: 128356299 + timestamp: 1732761611551 - kind: conda name: max-python - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.12release.conda - sha256: 1ccf3bfaeef2d63ab0c8d0438ae2c8c6e959790bfcff7334cbce9897dc28c24f - md5: da598be4350ad1ed46b21e07885b13cc + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda + sha256: f0a7710cb0f22917e39c5763d1d075448b68c70c1a4c97a3d0181b56cbbd8dfb + md5: 0bfedc3bd154710db42d79c2918d9c5d depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python 3.12.* - pillow - fastapi + - httpx - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 @@ -6964,21 +6944,22 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131886497 - timestamp: 1732512294405 + size: 132082582 + timestamp: 1732761679637 - kind: conda name: max-python - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.12release.conda - sha256: 22c4adb8497b98823bdb7b10117fbd3cff1198ead9f688f533913dedeaf3584b - md5: 8870a7f3214bc3117548074e5fe79d3c + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda + sha256: 0cc06798769540557575638a2a62ac0d5be1d7498588fd3ec9e650e10897e525 + md5: 9c32cacfe9b36e784fd94ab131f3c78b depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python 3.12.* - pillow - fastapi + - httpx - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 @@ -6996,17 +6977,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118834124 - timestamp: 1732512237306 + size: 118974942 + timestamp: 1732761683709 - kind: conda name: mblack - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - sha256: f72d60f0534d53ce247c450b04bfb6bc67a59f408ee3534392a7d812dc5fa03c - md5: 91a2bae1d55ec1c3bdf9db8d046acd12 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + sha256: f86d1bcf2415aa312f771c520abbdfbfe8c4d98dbecda41e5eb1a521dbd28b93 + md5: 21cf6986dff640f2b7d9d3df43c3af92 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7016,8 +6997,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130604 - timestamp: 1732512294400 + size: 130609 + timestamp: 1732761611548 - kind: conda name: mdurl version: 0.1.2 @@ -7050,21 +7031,21 @@ packages: timestamp: 1698947249750 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - sha256: 0b1430e59f40378948363378136c258aa1dbc9d9169f2bcd6468cec240fe8233 - md5: 94f0c957f1f19fec3edd8d58e6b6a7db + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + sha256: 3f56280f801cf79a4cd32e6fd94b0edcf957bf580fc29de6761d535658bc6e56 + md5: cfb9c8e8a2b5c8bde51bfba633da3534 depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22945 - timestamp: 1732512294400 + size: 22936 + timestamp: 1732761611549 - kind: conda name: multidict version: 6.1.0 @@ -8342,98 +8323,93 @@ packages: timestamp: 1721585805256 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h1f38498_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_2.conda - sha256: 11c045b44019dbe908315aabb47491519c0a4b5ef07e97a056a9d57d07823de3 - md5: 71ea0ef18b1127e26efaedc875e1853a - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_2_* + version: 18.1.0 + build: py312h1f38498_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc + md5: 3710616b880b31d0c8afd8ae7e12392a + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - size: 25410 - timestamp: 1732456749184 + size: 25375 + timestamp: 1732610892198 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h7900ff3_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_2.conda - sha256: 6c41b69f6cde950f9cb10b80cef1808d0081730038ef7a2675d612b2b126e9cf - md5: 3d91e33cf1a2274d52b9a1ca95bd34a0 - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_2_* + version: 18.1.0 + build: py312h7900ff3_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad + md5: ac65b70df28687c6af4270923c020bdd + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - size: 25195 - timestamp: 1732457103551 + size: 25213 + timestamp: 1732610785600 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h8025657_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_2.conda - sha256: 6e892f137ec19d1159b0acc2596846674d36d450bf1469e9d19a913e995bdc3b - md5: 2b2ab50988395f978e700638f754db0a - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_2_* + version: 18.1.0 + build: py312h8025657_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a + md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - size: 25371 - timestamp: 1732457047763 + size: 25374 + timestamp: 1732611006864 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312h01725c0_2_cpu - build_number: 2 + version: 18.1.0 + build: py312h01725c0_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_2_cpu.conda - sha256: b4457d8e702f7d2eeac03917a2375ebe39cd1f0cb1aa7e4d2864865c29c0bd00 - md5: 190d4fccaa0d28d9f3a7489add69294e + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 + md5: ee80934a6c280ff8635f8db5dec11e04 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 4572029 - timestamp: 1732456649794 + size: 4612916 + timestamp: 1732610377259 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312h66f7834_2_cpu - build_number: 2 + version: 18.1.0 + build: py312h66f7834_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_2_cpu.conda - sha256: 61bdcd4b7900348af7990042f4d7e326f9aa1c75720e47e4d278f902d8efcda8 - md5: 273c8148c2203863fd566d5396d2cc6b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 + md5: 3390c8b8f57e85506c92a37cf750bdd7 depends: - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -8441,23 +8417,22 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 4397059 - timestamp: 1732456712314 + size: 4406662 + timestamp: 1732610939832 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312hc40f475_2_cpu - build_number: 2 + version: 18.1.0 + build: py312hc40f475_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_2_cpu.conda - sha256: 83633ec13d303fee24c6f45a8fca0fedad4a80e7ea552a4f06b5643a26ba99f1 - md5: 35308386ec8499ac7114af0edd8de3a2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c + md5: 9859e7c4b94bbf69772dbf0511101cec depends: - __osx >=11.0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 @@ -8467,8 +8442,8 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 3918835 - timestamp: 1732456722657 + size: 3909116 + timestamp: 1732610863261 - kind: conda name: pycparser version: '2.22' @@ -8486,13 +8461,13 @@ packages: timestamp: 1711811634025 - kind: conda name: pydantic - version: 2.10.1 - build: pyh10f6f8f_0 + version: 2.10.2 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - sha256: b1872231d26ee3ded32bd1fe3ee1b3c7d9834ad72bf28aed70e5cd1235341584 - md5: c15343c9dbdb30766a07e5b70e46c7d3 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 + md5: e661b732b4d7514ace55a01873f03201 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.1 @@ -8501,8 +8476,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 315991 - timestamp: 1732286519715 + size: 316818 + timestamp: 1732689481710 - kind: conda name: pydantic-core version: 2.27.1 @@ -9526,18 +9501,19 @@ packages: - kind: conda name: setuptools version: 75.6.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - sha256: eeec4645f70ce0ed03348397dced9d218a650a42df98592419af61d2689163ed - md5: 68d7d406366926b09a6a023e3d0f71d7 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 + md5: fc80f7995e396cbaeabd23cf46c413dc depends: - python >=3.9 license: MIT license_family: MIT - size: 774304 - timestamp: 1732216189406 + size: 774252 + timestamp: 1732632769210 - kind: conda name: shellingham version: 1.5.4 @@ -9797,13 +9773,12 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.3 - build: py312h8360d73_1 - build_number: 1 + version: 0.20.4 + build: py312h8360d73_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_1.conda - sha256: 852868de63102c2f16640e688fd500ca10801b667b5fd350144ebde391576d5a - md5: 228c10e93df46415c452f78e8ae57df9 + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda + sha256: 7b59759739b5426e17825b26d6ce9df487d1dc254d4e6a92b14a97107eb6daca + md5: 035c6de3c821559bf1af5ec072593bfd depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 @@ -9816,17 +9791,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2250848 - timestamp: 1732467704757 + size: 2259332 + timestamp: 1732657962717 - kind: conda name: tokenizers - version: 0.20.3 - build: py312ha0d6ea1_1 - build_number: 1 + version: 0.20.4 + build: py312ha0d6ea1_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_1.conda - sha256: 67c7b487e2b33164d1c1f5af7b9b0d09f5dd88b44fb365d4614e35dc620bc6db - md5: f06befe91e2cbd9a60d200f515d85941 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda + sha256: 6dbb7e5f3f152210817e8658bc454056e464dee16fd9757508f2417edd44d8b8 + md5: b135e3d9178b255993ea4d72741192f8 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 @@ -9839,17 +9813,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2327232 - timestamp: 1732467837340 + size: 2330899 + timestamp: 1732658129796 - kind: conda name: tokenizers - version: 0.20.3 - build: py312hf3e4074_1 - build_number: 1 + version: 0.20.4 + build: py312hf3e4074_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_1.conda - sha256: 7423f3b3c961262c6170fa20d4bfdf61a1ba5b4ad472572fc8d0d11a36971ab6 - md5: 365a21a164c0a86a6726f3adcb4207f4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda + sha256: fd86f8a5d41622e8f5092913dea48f41de86258583ee449045905a725672fdc2 + md5: 40e8bc575721b4da76712e90e4a9b7fa depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -9861,8 +9834,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1925335 - timestamp: 1732467947397 + size: 1933005 + timestamp: 1732658406859 - kind: conda name: tomli version: 2.1.0 @@ -9880,57 +9853,54 @@ packages: timestamp: 1731426862834 - kind: conda name: tornado - version: 6.4.1 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - sha256: 5eefede1d8a2f55892bc582dbcb574b1806f19bc1e3939ce56b79721b9406db7 - md5: 967bc97bb9e258993289546479af971f + version: 6.4.2 + build: py312h52516f5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b depends: - - __osx >=11.0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 841722 - timestamp: 1724956439106 + size: 841662 + timestamp: 1732616934923 - kind: conda name: tornado - version: 6.4.1 - build: py312h52516f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda - sha256: 714e83cc01dd223ab6e3907843a7523fe745ed0841ee8ef2eae2ced0c485d0d8 - md5: 950b20707177dea3cb74f5ae9aac704d + version: 6.4.2 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 841453 - timestamp: 1724957557137 + size: 840414 + timestamp: 1732616043734 - kind: conda name: tornado - version: 6.4.1 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - sha256: c0c9cc7834e8f43702956afaa5af7b0639c4835c285108a43e6b91687ce53ab8 - md5: af648b62462794649066366af4ecd5b0 + version: 6.4.2 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 837665 - timestamp: 1724956252424 + size: 842549 + timestamp: 1732616081362 - kind: conda name: tqdm version: 4.67.1 @@ -10243,13 +10213,12 @@ packages: timestamp: 1730214606664 - kind: conda name: watchfiles - version: 0.24.0 - build: py312h12e396e_1 - build_number: 1 + version: 1.0.0 + build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda - sha256: 04227e72c1e8c30afca18860491462461d35ffa1dba552770adce61794aa7114 - md5: fa5bb5b364b0f8162d67c31009c985c9 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda + sha256: a2a11a751d3fdd2bec79d876687136cee81d0125be40cebd3518042e1e15c349 + md5: b53a91a5cc50cf07f690a5d3b9f91db5 depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -10259,18 +10228,16 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 397205 - timestamp: 1725347165866 + size: 409700 + timestamp: 1732689603044 - kind: conda name: watchfiles - version: 0.24.0 - build: py312h8cbf658_1 - build_number: 1 + version: 1.0.0 + build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py312h8cbf658_1.conda - sha256: 0c6ce9bc28da2a1e9d04737fc1240f5aadf76df5482ee4c761422169a3bde8bb - md5: a698c65a64db774228eb585ff5dcfc8f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda + sha256: 1d7fde47edacf01a81c0d9ac3f284d4d30982d33686c505374bfa2c7b02bbf8d + md5: 9ecaaf340ad422209a04fcf854fb4a3f depends: - anyio >=3.0.0 - libgcc >=13 @@ -10280,18 +10247,16 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 400026 - timestamp: 1725347309835 + size: 404235 + timestamp: 1732689685476 - kind: conda name: watchfiles - version: 0.24.0 - build: py312he431725_1 - build_number: 1 + version: 1.0.0 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda - sha256: e92ec8593fee0ce6cb2b565900eb9792c73efacc129d2bf92dba074bca505598 - md5: 7fd741404e6fcab22a988ee6742dc778 + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda + sha256: 554c4550813b744794fc70451c87d540d38138e6dc901993e85515ffa91087d2 + md5: 0eb2c3f65788f61f905d31ac062fe4b6 depends: - __osx >=11.0 - anyio >=3.0.0 @@ -10301,9 +10266,8 @@ packages: constrains: - __osx >=11.0 license: MIT - license_family: MIT - size: 342896 - timestamp: 1725347401713 + size: 356744 + timestamp: 1732689860624 - kind: conda name: wcwidth version: 0.2.13 @@ -10433,58 +10397,52 @@ packages: timestamp: 1732339880578 - kind: conda name: wrapt - version: 1.16.0 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda - sha256: 54a5d3d9e1b45022b28c5ca3ceaa7ec2db4a40968b2b556804becfdff98f4efe - md5: f97c9abfeb8292f5f8353607ca8a1127 + version: 1.17.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 + md5: ddbe3bb0e1356cb9074dd848570694f9 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause - license_family: BSD - size: 59642 - timestamp: 1724958200454 + size: 63807 + timestamp: 1732523690292 - kind: conda name: wrapt - version: 1.16.0 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda - sha256: 3a15a399eb61a999f0f14b4d243acc14e2dff1ead92ef52fcff30c84be89b21c - md5: 2eebcffe80e2a7bb2f0a77e621a7f124 + version: 1.17.0 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 + md5: 120d5d1c05386d8ce3efd65a4c86431f depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause - license_family: BSD - size: 62624 - timestamp: 1724958046744 + size: 64783 + timestamp: 1732523806 - kind: conda name: wrapt - version: 1.16.0 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda - sha256: b6e1da6b700d489aa89599d46298dc6c16b34617ae1821a01c68015ebcdaa24d - md5: e30d2b17b3d1bf756ddc0e6d3a4dc79f + version: 1.17.0 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 + md5: 73414acdb779a8694a14527865b4357a depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause - license_family: BSD - size: 62782 - timestamp: 1724958067507 + size: 61043 + timestamp: 1732523852129 - kind: conda name: xorg-libxau version: 1.0.11 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 6d8712e6ed..831b1c5d5f 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -23,10 +23,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -63,7 +63,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -78,10 +78,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -165,10 +165,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda @@ -192,7 +192,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda @@ -200,8 +200,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda @@ -215,9 +215,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda @@ -245,10 +245,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -285,7 +285,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -301,10 +301,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -332,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -388,10 +388,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda @@ -415,7 +415,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda @@ -423,8 +423,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda @@ -438,9 +438,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py312h8cbf658_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda @@ -467,10 +467,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -507,7 +507,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -520,10 +520,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -548,7 +548,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -601,10 +601,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda @@ -627,7 +627,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda @@ -635,8 +635,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda @@ -650,9 +650,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda @@ -1314,13 +1314,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h29aef15_3 - build_number: 3 + version: 0.7.2 + build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda - sha256: b8c67e279f8efa833fc92b066dc6d0cef3aff7f06144f738adfbd95cdab52865 - md5: bd7d7b664176b5d164d369f12615b75a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + sha256: 387e4df97529d1849a774082b1fed78c7870effc02ed4c2b45961615a0516b64 + md5: fbf4af2c93ae67f175583c9185be4133 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1332,17 +1331,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117581 - timestamp: 1731745139268 + size: 117212 + timestamp: 1732679211893 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h3a84f74_3 - build_number: 3 + version: 0.7.2 + build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda - sha256: 274c9ec3c173a2979b949ccc10a6013673c4391502a4a71e07070d6c50eabc60 - md5: e7a54821aaa774cfd64efcd45114a4d7 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + sha256: c0ae38eb1f878157323afdd002229e9eeb739f622e028447330805c030c50a9f + md5: a5f883ce16928e898856b5bd8d1bee57 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1355,17 +1353,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113837 - timestamp: 1731745115080 + size: 113549 + timestamp: 1732679091663 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h840aca7_3 - build_number: 3 + version: 0.7.2 + build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda - sha256: a75dce44667327d365abdcd68c525913c7dd948ea26d4709386acd58717307fc - md5: 540af65a722c5e490012153673793df5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + sha256: 30e4bed9d008fb79f5e84ecbea0f21030ad5d60cb5c55a962df90721aa98fc42 + md5: 63100ff62fdff4a6afcea38841036027 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1376,8 +1373,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 96830 - timestamp: 1731745236535 + size: 97042 + timestamp: 1732679268030 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1479,11 +1476,12 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.5 - build: h21d7256_0 + build: h0e61686_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda - sha256: 54a9f37ba03e20b29215a9e301846ee22368bd6efb9e9afce7c6ad3e64426219 - md5: b2468de19999ee8452757f12f15a9b34 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda + sha256: 1d7bc75a81cdcd992ebee9b06be6a63963203d7fc2537099bf91fda0573c3be6 + md5: 7143a281febcabfc242a458b7bc12048 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1493,24 +1491,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.2,<0.7.3.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354933 - timestamp: 1732136158458 + size: 353633 + timestamp: 1732704043097 - kind: conda name: aws-crt-cpp version: 0.29.5 - build: h6832833_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda - sha256: e42172ffef36e2e5793532ab5b8d8c499fe8c4eaf154404501bd3f97a424e701 - md5: 546159ec6849eaf2b632eb79e3ab16f7 + build: h6068a22_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda + sha256: 15eba2ca46b10a17d60b26d7a6db222f08e1d63c55eb76a19f16c30e06679fe4 + md5: 6c0a760285cb79c46a99b15449ecb9ac depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1518,22 +1516,25 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.2,<0.7.3.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236424 - timestamp: 1732136497320 + size: 283812 + timestamp: 1732704031684 - kind: conda name: aws-crt-cpp version: 0.29.5 - build: h8cc6612_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda - sha256: aac21029314f015d558fc1cb0238b32e3aa1b0473f5ca4f3ef469d0f8c59e026 - md5: e80ca2db9b263c16a44bab78a76165ec + build: h8bcca62_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda + sha256: 371c509c0cd22360cd39963189ba7aa290b08b7384dd4414895f6186e2aecf7e + md5: ef024742bb2501bd3d7f10b0f9ce5a4d depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1541,14 +1542,13 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.2,<0.7.3.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 284386 - timestamp: 1732136167312 + size: 236161 + timestamp: 1732704224415 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2695,58 +2695,52 @@ packages: timestamp: 1731707562362 - kind: conda name: httptools - version: 0.6.1 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py312h024a12e_1.conda - sha256: a17d6d925de085b967ee1e44572ccfbb2c109aec1ccc4e6723acd7474c57eeeb - md5: c5c8dfe36db20180a8c7e49049377857 + version: 0.6.4 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 + md5: 8b1160b32557290b64d5be68db3d996d depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT - license_family: MIT - size: 77287 - timestamp: 1726688371563 + size: 101872 + timestamp: 1732707756745 - kind: conda name: httptools - version: 0.6.1 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py312h66e93f0_1.conda - sha256: 07d129a180564051547be7b17140c5a7d4789ba8b0404842328cc638615bbe81 - md5: e9060bac59733da8b5d8c6156b51fbcf + version: 0.6.4 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 + md5: 5e70a6de59352f9a52e9caa7f3447390 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT - license_family: MIT - size: 93588 - timestamp: 1726688214856 + size: 101255 + timestamp: 1732707891645 - kind: conda name: httptools - version: 0.6.1 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py312hb2c0f52_1.conda - sha256: bcd6227032316b69494f15ebc5c81f8670efcb2aa1cadf7c754e38a1a80811c5 - md5: 91dc2737602f681a4679b8b4022b122e + version: 0.6.4 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be + md5: e1747a8e8d2aca5499aaea9993bf31ff depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT - license_family: MIT - size: 92683 - timestamp: 1726688399611 + size: 85623 + timestamp: 1732707871414 - kind: conda name: httpx version: 0.27.2 @@ -3172,13 +3166,12 @@ packages: timestamp: 1727295571173 - kind: conda name: libarrow - version: 18.0.0 - build: h3d75c4c_9_cpu - build_number: 9 + version: 18.1.0 + build: h3d75c4c_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda - sha256: 8552a3b30a89350fa46dbee1ba06d039605e6c5f200904f2b6c57fb32b7bbbc0 - md5: ff87e5f8ad826fc724763128f1d151a1 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda + sha256: 46d841b3f316d52d0fa085d5c583a4370de8223afc4f1bbf57eaebdf3aede7f1 + md5: cfee3c6a6ddeb26bba5d96ce7924a817 depends: - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 @@ -3206,21 +3199,20 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8073099 - timestamp: 1732499447839 + size: 8024186 + timestamp: 1732536195865 - kind: conda name: libarrow - version: 18.0.0 - build: h94eee4b_9_cpu - build_number: 9 + version: 18.1.0 + build: h94eee4b_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda - sha256: 4d59165cbb67020d5ecd819e944874ab6ff2085e496ceb47e9f23526d7d860c9 - md5: fe2841c29f3753146d4e89217d22d043 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda + sha256: 4f8ad6d3ac85f17b7ce319c1f8d0ffacee16403341315677977d3c7b9788166e + md5: 1718fa336f42a0b24b822457df7ce43d depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -3249,21 +3241,20 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 license: Apache-2.0 - size: 8775158 - timestamp: 1732498040333 + size: 8783805 + timestamp: 1732536115314 - kind: conda name: libarrow - version: 18.0.0 - build: hb943b0e_9_cpu - build_number: 9 + version: 18.1.0 + build: hb943b0e_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda - sha256: c4c7518b2e2bd8dd4573720a500ba68665041ec486e0cf9a034bb6bc1cf94ff8 - md5: dc4cb1c42c1b348f6f272b925fab201a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda + sha256: acc1b6ec23a964ec87722fc90b55d47f8cb03e211e86b9ff312bed588cfc400a + md5: f2dac358d4bd6b57d9b47f11cca0ea8c depends: - __osx >=11.0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -3290,180 +3281,171 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 license: Apache-2.0 - size: 5516035 - timestamp: 1732496751328 + size: 5497775 + timestamp: 1732535993576 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h286801f_9_cpu - build_number: 9 + version: 18.1.0 + build: h286801f_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda - sha256: 2740f7cbeb633a3f6ac777b91fe726ca87d7361ac90b66a8417a9b9099189a47 - md5: 8b516d4e381d099f6bef4145ed7f1491 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda + sha256: 1b4ae51de889becdd7aca2053e5115d65e2ea94b91d07d2e297d8d3c4666cec5 + md5: fd53fc3858c13425e3334b0af9b6637f depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu - libcxx >=18 license: Apache-2.0 - size: 493686 - timestamp: 1732496844787 + size: 484735 + timestamp: 1732536132543 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5888daf_9_cpu - build_number: 9 + version: 18.1.0 + build: h5888daf_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda - sha256: d714e7dfed613d1f093d60b6691c90cf2740b025860249a167ff08e6fa9c602c - md5: b36def03eb1624ad1ca6cd5866104096 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda + sha256: ad2cab7ca7320642a655ac1214248a64d60a0ce771fa8e7b5378746c16be1c64 + md5: d2f94a6f24f028544c7a4cb1b50c5eca depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 622189 - timestamp: 1732498078370 + size: 610906 + timestamp: 1732536155092 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5ad3122_9_cpu - build_number: 9 + version: 18.1.0 + build: h5ad3122_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda - sha256: 7e32e17d9de8856e6133180c5e10011867762057715efb943a86e46b61139825 - md5: 826de4db28e16eeac2a8c677d7702e30 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda + sha256: 216f791e47c774b1d44c89fe7839e03646285cf3220961306b90eec7bf4a6d71 + md5: 7b55a3bc6a3c9a75e509e68d89afd77a depends: - - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 588517 - timestamp: 1732499522102 + size: 577886 + timestamp: 1732536278269 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h286801f_9_cpu - build_number: 9 + version: 18.1.0 + build: h286801f_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda - sha256: 3a962b0591720234e724f887ec1975792daa987f34fc161b864183f61dd01bbb - md5: fb7cd00c96acf4ae83475fba8bd9d1ca + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda + sha256: a52ba6632837f2e5ec1c91ea4271ae7bd84fe9af348467e234a338b2fc78f41c + md5: 4020134362b81be7b91c7c6ae086eecc depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_9_cpu - - libarrow-acero 18.0.0 h286801f_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow-acero 18.1.0 h286801f_0_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_9_cpu + - libparquet 18.1.0 hda0ea68_0_cpu license: Apache-2.0 - size: 499874 - timestamp: 1732497930387 + size: 489616 + timestamp: 1732537344927 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5888daf_9_cpu - build_number: 9 + version: 18.1.0 + build: h5888daf_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda - sha256: d4e375d2d92c8845b4f634e7c4cc5d5643294ab74c64cfe0d4ef473816e1028a - md5: 07a60ef65486d08c96f324594dc2b5a1 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda + sha256: da77235b3874b50facb632cc409bee0df81e9dd7c25543a5e8b92873bd2d2a20 + md5: 7834b3a11d0f1ee7e13b4533e361586f depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_9_cpu - - libarrow-acero 18.0.0 h5888daf_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow-acero 18.1.0 h5888daf_0_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_9_cpu + - libparquet 18.1.0 h6bd9018_0_cpu - libstdcxx >=13 license: Apache-2.0 - size: 596492 - timestamp: 1732498166295 + size: 588196 + timestamp: 1732536246424 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5ad3122_9_cpu - build_number: 9 + version: 18.1.0 + build: h5ad3122_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda - sha256: ec5655b25deb8d4868ed1fa1cd47e64e34581550ee7b024c65861aff91ef105c - md5: 763a682b8976e760576f62422ed69728 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda + sha256: 17cd3bc19ae04d1a5b3795fac0fb796cc90eabeb3359a39eaf5dfed84385b4de + md5: 98d2712cebf91fc823e6231f7e55eda3 depends: - - libarrow 18.0.0 h3d75c4c_9_cpu - - libarrow-acero 18.0.0 h5ad3122_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow-acero 18.1.0 h5ad3122_0_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_9_cpu + - libparquet 18.1.0 h23a96eb_0_cpu - libstdcxx >=13 license: Apache-2.0 - size: 571675 - timestamp: 1732499604040 + size: 561486 + timestamp: 1732536339536 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h14ec2bd_9_cpu - build_number: 9 + version: 18.1.0 + build: h14ec2bd_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda - sha256: b1def0e7420f2cecfc8eccd0c8ae24c51e58623c3924e11208d69fefc3d07525 - md5: c472236ec8407f4591d5fe682d3c7ad7 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda + sha256: 30723e91df659aa971d9964e25730276295cf3a45be557ec1df9d413c31c44a9 + md5: f93217605309abc1c0314102036da21c depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3d75c4c_9_cpu - - libarrow-acero 18.0.0 h5ad3122_9_cpu - - libarrow-dataset 18.0.0 h5ad3122_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow-acero 18.1.0 h5ad3122_0_cpu + - libarrow-dataset 18.1.0 h5ad3122_0_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 528225 - timestamp: 1732499642412 + size: 515320 + timestamp: 1732536368053 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h5c8f2c3_9_cpu - build_number: 9 + version: 18.1.0 + build: h5c8f2c3_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda - sha256: 48b9bbcb4529cf41add523aef49acee69e0634f0e3d6f3d1101b16cb8d13cb2e - md5: a8fcd78ee422057362d928e2dd63ed8e + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda + sha256: d40e4a3061d58d07d017a6e439883ce1b9860f3a960a5aead8da189f8795a92c + md5: 51dc5a7117ec264e0a5cc1a5d82437dd depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h94eee4b_9_cpu - - libarrow-acero 18.0.0 h5888daf_9_cpu - - libarrow-dataset 18.0.0 h5888daf_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow-acero 18.1.0 h5888daf_0_cpu + - libarrow-dataset 18.1.0 h5888daf_0_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 530637 - timestamp: 1732498203493 + size: 520871 + timestamp: 1732536289093 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h6a6e5c5_9_cpu - build_number: 9 + version: 18.1.0 + build: h6a6e5c5_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda - sha256: 0623669f06c3ebd51421391a44f430986e627de1b215202aa80777a17a353b52 - md5: c0b80e0e4abd9c06a57b58c46224f8b2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda + sha256: aa673d86e56c3b17b66f5ffcd8ce98b93754c9c07e2e6aff96d0dd02135c0969 + md5: 9b2fd35f01e23972abb91543bbd6d84c depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hb943b0e_9_cpu - - libarrow-acero 18.0.0 h286801f_9_cpu - - libarrow-dataset 18.0.0 h286801f_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow-acero 18.1.0 h286801f_0_cpu + - libarrow-dataset 18.1.0 h286801f_0_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - size: 461278 - timestamp: 1732498084570 + size: 452400 + timestamp: 1732537518703 - kind: conda name: libblas version: 3.9.0 @@ -4817,59 +4799,56 @@ packages: timestamp: 1730773029647 - kind: conda name: libparquet - version: 18.0.0 - build: h23a96eb_9_cpu - build_number: 9 + version: 18.1.0 + build: h23a96eb_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda - sha256: 16a5200afeb34827cdbc80f8fbc73a6a61e8af138ba57b72ffb41fdd82455e7d - md5: b6e1289678df3e7abf18619af5e378c2 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda + sha256: be9d2527e709007aef42c39d9ab49163e587c25dc23cc1baba8af91edce16437 + md5: 99592ed1d2877136ebd192789164891a depends: - - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1123929 - timestamp: 1732499582562 + size: 1117420 + timestamp: 1732536323359 - kind: conda name: libparquet - version: 18.0.0 - build: h6bd9018_9_cpu - build_number: 9 + version: 18.1.0 + build: h6bd9018_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda - sha256: 22dd2354ee45e797dd52fbb8325aea3795440821480d4572fc30e4f268239a54 - md5: 79817c62827b836349adf32b218edd95 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda + sha256: d5f73b48e754af5874f48ef22dda1339b74597b66ff5ffeff8a2290f97a9611b + md5: 580349cffeac814a32ff661dcbe72821 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1213917 - timestamp: 1732498145973 + size: 1204506 + timestamp: 1732536224976 - kind: conda name: libparquet - version: 18.0.0 - build: hda0ea68_9_cpu - build_number: 9 + version: 18.1.0 + build: hda0ea68_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda - sha256: 6e93414ddda2853bc113bb5895eefa3f65de675ee94eb86e48109196f809425c - md5: 48c0673e0a561279ac8ed3b3cba1c448 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda + sha256: a6a22f0692d99a3cb6306ebd4d2e840c980d08797386f300c47604ee8865af4d + md5: 22f05c8b1c1b82eb5efc2a89c08ee047 depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 883867 - timestamp: 1732497873361 + size: 874829 + timestamp: 1732537283879 - kind: conda name: libpng version: 1.6.44 @@ -5824,79 +5803,80 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - sha256: e8544da30dc3cde2d5201181a0fb554c2fdb1a279343dc6fdc3b3699e480da65 - md5: 18ada131191a1b297d0be0d940b029f4 - depends: - - max-core ==24.6.0.dev2024112505 release - - max-python >=24.6.0.dev2024112505,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112505 release - - mblack ==24.6.0.dev2024112505 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + sha256: 8f6bc9f7bedbd4f1418d2b53e5958c043b189a01bbf4cb8d6064a41a8e655443 + md5: ed46a257f8120a349093635a248fae10 + depends: + - max-core ==24.6.0.dev2024112802 release + - max-python >=24.6.0.dev2024112802,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112802 release license: LicenseRef-Modular-Proprietary - size: 9930 - timestamp: 1732512294393 + size: 9925 + timestamp: 1732761611545 - kind: conda name: max-core - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda - sha256: 12ba51fe5626bd74c1efd8fdf5717feac6eefbf22efc05ce722babb0c9c123ed - md5: efc447f7345cbcf1fadb3c485c5d1a83 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda + sha256: 42041d5c8c91e2dad56bc2c3aca70eb196d0668d654436945bbb889403507360 + md5: f080fca8828a3f8547980498289f0c94 depends: - - mblack ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112802 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253852848 - timestamp: 1732512311477 + size: 254574652 + timestamp: 1732761611543 - kind: conda name: max-core - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda - sha256: b9045359f837e8baa054ebe53025af5756ff6ecf06803a401e2e4ccad36d7297 - md5: 8fcd55d2b633c9f27cc956ea7c0fa9d8 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda + sha256: 274e6939e5271c33f893ac8cfa8e9c84ffe2e9a1df71aa983934e01316fbe23b + md5: ad1f154593009241c7573207168d3d4e depends: - - mblack ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112802 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257504019 - timestamp: 1732512294391 + size: 258185912 + timestamp: 1732761679629 - kind: conda name: max-core - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda - sha256: 8ebbb263653bcc4b962205134f45d87f343f03513208f9ac7144f6ada5ca65ed - md5: 3d74098f452358f071362533e5518745 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda + sha256: 6f7a7565eb4352df793a85ea0a2c9f4044a38500e25fb0d9011b0eca5184b233 + md5: 675998dc57d891d543f0501503478548 depends: - - mblack ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112802 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219479698 - timestamp: 1732512237302 + size: 220126850 + timestamp: 1732761683706 - kind: conda name: max-python - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.12release.conda - sha256: 553628bfa9b9759ddccec73380d63055dcfe82bd6df75f1cb03b12365a811bd7 - md5: ff7c6ff7bb937590832e17bdd742d3ea + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda + sha256: 448b475b496eb65f8f1bb8febeb074b07c26c104901f31d8b5414e435844585b + md5: 5149d46120efd08067a9040f9f4705f5 depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python 3.12.* - pillow - fastapi + - httpx - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 @@ -5914,21 +5894,22 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128104249 - timestamp: 1732512311491 + size: 128356299 + timestamp: 1732761611551 - kind: conda name: max-python - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.12release.conda - sha256: 1ccf3bfaeef2d63ab0c8d0438ae2c8c6e959790bfcff7334cbce9897dc28c24f - md5: da598be4350ad1ed46b21e07885b13cc + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda + sha256: f0a7710cb0f22917e39c5763d1d075448b68c70c1a4c97a3d0181b56cbbd8dfb + md5: 0bfedc3bd154710db42d79c2918d9c5d depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python 3.12.* - pillow - fastapi + - httpx - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 @@ -5946,21 +5927,22 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131886497 - timestamp: 1732512294405 + size: 132082582 + timestamp: 1732761679637 - kind: conda name: max-python - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.12release.conda - sha256: 22c4adb8497b98823bdb7b10117fbd3cff1198ead9f688f533913dedeaf3584b - md5: 8870a7f3214bc3117548074e5fe79d3c + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda + sha256: 0cc06798769540557575638a2a62ac0d5be1d7498588fd3ec9e650e10897e525 + md5: 9c32cacfe9b36e784fd94ab131f3c78b depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python 3.12.* - pillow - fastapi + - httpx - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 @@ -5978,17 +5960,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118834124 - timestamp: 1732512237306 + size: 118974942 + timestamp: 1732761683709 - kind: conda name: mblack - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - sha256: f72d60f0534d53ce247c450b04bfb6bc67a59f408ee3534392a7d812dc5fa03c - md5: 91a2bae1d55ec1c3bdf9db8d046acd12 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + sha256: f86d1bcf2415aa312f771c520abbdfbfe8c4d98dbecda41e5eb1a521dbd28b93 + md5: 21cf6986dff640f2b7d9d3df43c3af92 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5998,8 +5980,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130604 - timestamp: 1732512294400 + size: 130609 + timestamp: 1732761611548 - kind: conda name: mdurl version: 0.1.2 @@ -6017,21 +5999,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - sha256: 0b1430e59f40378948363378136c258aa1dbc9d9169f2bcd6468cec240fe8233 - md5: 94f0c957f1f19fec3edd8d58e6b6a7db + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + sha256: 3f56280f801cf79a4cd32e6fd94b0edcf957bf580fc29de6761d535658bc6e56 + md5: cfb9c8e8a2b5c8bde51bfba633da3534 depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22945 - timestamp: 1732512294400 + size: 22936 + timestamp: 1732761611549 - kind: conda name: multidict version: 6.1.0 @@ -7002,98 +6984,93 @@ packages: timestamp: 1726802424786 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h1f38498_2 - build_number: 2 + version: 18.1.0 + build: py312h1f38498_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_2.conda - sha256: 11c045b44019dbe908315aabb47491519c0a4b5ef07e97a056a9d57d07823de3 - md5: 71ea0ef18b1127e26efaedc875e1853a - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_2_* + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc + md5: 3710616b880b31d0c8afd8ae7e12392a + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - size: 25410 - timestamp: 1732456749184 + size: 25375 + timestamp: 1732610892198 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h7900ff3_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_2.conda - sha256: 6c41b69f6cde950f9cb10b80cef1808d0081730038ef7a2675d612b2b126e9cf - md5: 3d91e33cf1a2274d52b9a1ca95bd34a0 - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_2_* + version: 18.1.0 + build: py312h7900ff3_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad + md5: ac65b70df28687c6af4270923c020bdd + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - size: 25195 - timestamp: 1732457103551 + size: 25213 + timestamp: 1732610785600 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h8025657_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_2.conda - sha256: 6e892f137ec19d1159b0acc2596846674d36d450bf1469e9d19a913e995bdc3b - md5: 2b2ab50988395f978e700638f754db0a - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_2_* + version: 18.1.0 + build: py312h8025657_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a + md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - size: 25371 - timestamp: 1732457047763 + size: 25374 + timestamp: 1732611006864 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312h01725c0_2_cpu - build_number: 2 + version: 18.1.0 + build: py312h01725c0_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_2_cpu.conda - sha256: b4457d8e702f7d2eeac03917a2375ebe39cd1f0cb1aa7e4d2864865c29c0bd00 - md5: 190d4fccaa0d28d9f3a7489add69294e + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 + md5: ee80934a6c280ff8635f8db5dec11e04 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 4572029 - timestamp: 1732456649794 + size: 4612916 + timestamp: 1732610377259 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312h66f7834_2_cpu - build_number: 2 + version: 18.1.0 + build: py312h66f7834_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_2_cpu.conda - sha256: 61bdcd4b7900348af7990042f4d7e326f9aa1c75720e47e4d278f902d8efcda8 - md5: 273c8148c2203863fd566d5396d2cc6b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 + md5: 3390c8b8f57e85506c92a37cf750bdd7 depends: - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -7101,23 +7078,22 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 4397059 - timestamp: 1732456712314 + size: 4406662 + timestamp: 1732610939832 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312hc40f475_2_cpu - build_number: 2 + version: 18.1.0 + build: py312hc40f475_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_2_cpu.conda - sha256: 83633ec13d303fee24c6f45a8fca0fedad4a80e7ea552a4f06b5643a26ba99f1 - md5: 35308386ec8499ac7114af0edd8de3a2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c + md5: 9859e7c4b94bbf69772dbf0511101cec depends: - __osx >=11.0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 @@ -7127,8 +7103,8 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 3918835 - timestamp: 1732456722657 + size: 3909116 + timestamp: 1732610863261 - kind: conda name: pycparser version: '2.22' @@ -7146,13 +7122,13 @@ packages: timestamp: 1711811634025 - kind: conda name: pydantic - version: 2.10.1 - build: pyh10f6f8f_0 + version: 2.10.2 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - sha256: b1872231d26ee3ded32bd1fe3ee1b3c7d9834ad72bf28aed70e5cd1235341584 - md5: c15343c9dbdb30766a07e5b70e46c7d3 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 + md5: e661b732b4d7514ace55a01873f03201 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.1 @@ -7161,8 +7137,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 315991 - timestamp: 1732286519715 + size: 316818 + timestamp: 1732689481710 - kind: conda name: pydantic-core version: 2.27.1 @@ -7994,18 +7970,19 @@ packages: - kind: conda name: setuptools version: 75.6.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - sha256: eeec4645f70ce0ed03348397dced9d218a650a42df98592419af61d2689163ed - md5: 68d7d406366926b09a6a023e3d0f71d7 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 + md5: fc80f7995e396cbaeabd23cf46c413dc depends: - python >=3.9 license: MIT license_family: MIT - size: 774304 - timestamp: 1732216189406 + size: 774252 + timestamp: 1732632769210 - kind: conda name: shellingham version: 1.5.4 @@ -8179,13 +8156,12 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.3 - build: py312h8360d73_1 - build_number: 1 + version: 0.20.4 + build: py312h8360d73_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_1.conda - sha256: 852868de63102c2f16640e688fd500ca10801b667b5fd350144ebde391576d5a - md5: 228c10e93df46415c452f78e8ae57df9 + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda + sha256: 7b59759739b5426e17825b26d6ce9df487d1dc254d4e6a92b14a97107eb6daca + md5: 035c6de3c821559bf1af5ec072593bfd depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 @@ -8198,17 +8174,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2250848 - timestamp: 1732467704757 + size: 2259332 + timestamp: 1732657962717 - kind: conda name: tokenizers - version: 0.20.3 - build: py312ha0d6ea1_1 - build_number: 1 + version: 0.20.4 + build: py312ha0d6ea1_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_1.conda - sha256: 67c7b487e2b33164d1c1f5af7b9b0d09f5dd88b44fb365d4614e35dc620bc6db - md5: f06befe91e2cbd9a60d200f515d85941 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda + sha256: 6dbb7e5f3f152210817e8658bc454056e464dee16fd9757508f2417edd44d8b8 + md5: b135e3d9178b255993ea4d72741192f8 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 @@ -8221,17 +8196,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2327232 - timestamp: 1732467837340 + size: 2330899 + timestamp: 1732658129796 - kind: conda name: tokenizers - version: 0.20.3 - build: py312hf3e4074_1 - build_number: 1 + version: 0.20.4 + build: py312hf3e4074_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_1.conda - sha256: 7423f3b3c961262c6170fa20d4bfdf61a1ba5b4ad472572fc8d0d11a36971ab6 - md5: 365a21a164c0a86a6726f3adcb4207f4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda + sha256: fd86f8a5d41622e8f5092913dea48f41de86258583ee449045905a725672fdc2 + md5: 40e8bc575721b4da76712e90e4a9b7fa depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -8243,61 +8217,58 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1925335 - timestamp: 1732467947397 + size: 1933005 + timestamp: 1732658406859 - kind: conda name: tornado - version: 6.4.1 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - sha256: 5eefede1d8a2f55892bc582dbcb574b1806f19bc1e3939ce56b79721b9406db7 - md5: 967bc97bb9e258993289546479af971f + version: 6.4.2 + build: py312h52516f5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b depends: - - __osx >=11.0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 841722 - timestamp: 1724956439106 + size: 841662 + timestamp: 1732616934923 - kind: conda name: tornado - version: 6.4.1 - build: py312h52516f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda - sha256: 714e83cc01dd223ab6e3907843a7523fe745ed0841ee8ef2eae2ced0c485d0d8 - md5: 950b20707177dea3cb74f5ae9aac704d + version: 6.4.2 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 841453 - timestamp: 1724957557137 + size: 840414 + timestamp: 1732616043734 - kind: conda name: tornado - version: 6.4.1 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - sha256: c0c9cc7834e8f43702956afaa5af7b0639c4835c285108a43e6b91687ce53ab8 - md5: af648b62462794649066366af4ecd5b0 + version: 6.4.2 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 837665 - timestamp: 1724956252424 + size: 842549 + timestamp: 1732616081362 - kind: conda name: tqdm version: 4.67.1 @@ -8566,13 +8537,12 @@ packages: timestamp: 1730214606664 - kind: conda name: watchfiles - version: 0.24.0 - build: py312h12e396e_1 - build_number: 1 + version: 1.0.0 + build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda - sha256: 04227e72c1e8c30afca18860491462461d35ffa1dba552770adce61794aa7114 - md5: fa5bb5b364b0f8162d67c31009c985c9 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda + sha256: a2a11a751d3fdd2bec79d876687136cee81d0125be40cebd3518042e1e15c349 + md5: b53a91a5cc50cf07f690a5d3b9f91db5 depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -8582,18 +8552,16 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 397205 - timestamp: 1725347165866 + size: 409700 + timestamp: 1732689603044 - kind: conda name: watchfiles - version: 0.24.0 - build: py312h8cbf658_1 - build_number: 1 + version: 1.0.0 + build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py312h8cbf658_1.conda - sha256: 0c6ce9bc28da2a1e9d04737fc1240f5aadf76df5482ee4c761422169a3bde8bb - md5: a698c65a64db774228eb585ff5dcfc8f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda + sha256: 1d7fde47edacf01a81c0d9ac3f284d4d30982d33686c505374bfa2c7b02bbf8d + md5: 9ecaaf340ad422209a04fcf854fb4a3f depends: - anyio >=3.0.0 - libgcc >=13 @@ -8603,18 +8571,16 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 400026 - timestamp: 1725347309835 + size: 404235 + timestamp: 1732689685476 - kind: conda name: watchfiles - version: 0.24.0 - build: py312he431725_1 - build_number: 1 + version: 1.0.0 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda - sha256: e92ec8593fee0ce6cb2b565900eb9792c73efacc129d2bf92dba074bca505598 - md5: 7fd741404e6fcab22a988ee6742dc778 + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda + sha256: 554c4550813b744794fc70451c87d540d38138e6dc901993e85515ffa91087d2 + md5: 0eb2c3f65788f61f905d31ac062fe4b6 depends: - __osx >=11.0 - anyio >=3.0.0 @@ -8624,9 +8590,8 @@ packages: constrains: - __osx >=11.0 license: MIT - license_family: MIT - size: 342896 - timestamp: 1725347401713 + size: 356744 + timestamp: 1732689860624 - kind: conda name: websockets version: '14.1' @@ -8680,58 +8645,52 @@ packages: timestamp: 1731498944076 - kind: conda name: wrapt - version: 1.16.0 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda - sha256: 54a5d3d9e1b45022b28c5ca3ceaa7ec2db4a40968b2b556804becfdff98f4efe - md5: f97c9abfeb8292f5f8353607ca8a1127 + version: 1.17.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 + md5: ddbe3bb0e1356cb9074dd848570694f9 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause - license_family: BSD - size: 59642 - timestamp: 1724958200454 + size: 63807 + timestamp: 1732523690292 - kind: conda name: wrapt - version: 1.16.0 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda - sha256: 3a15a399eb61a999f0f14b4d243acc14e2dff1ead92ef52fcff30c84be89b21c - md5: 2eebcffe80e2a7bb2f0a77e621a7f124 + version: 1.17.0 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 + md5: 120d5d1c05386d8ce3efd65a4c86431f depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause - license_family: BSD - size: 62624 - timestamp: 1724958046744 + size: 64783 + timestamp: 1732523806 - kind: conda name: wrapt - version: 1.16.0 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda - sha256: b6e1da6b700d489aa89599d46298dc6c16b34617ae1821a01c68015ebcdaa24d - md5: e30d2b17b3d1bf756ddc0e6d3a4dc79f + version: 1.17.0 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 + md5: 73414acdb779a8694a14527865b4357a depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause - license_family: BSD - size: 62782 - timestamp: 1724958067507 + size: 61043 + timestamp: 1732523852129 - kind: conda name: xorg-libxau version: 1.0.11 diff --git a/magic.lock b/magic.lock index 19a7d3d373..f45182bd9f 100644 --- a/magic.lock +++ b/magic.lock @@ -23,10 +23,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -63,7 +63,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -78,10 +78,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -128,16 +128,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -166,10 +166,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda @@ -193,7 +193,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda @@ -201,8 +201,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda @@ -216,9 +216,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda @@ -246,10 +246,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -286,7 +286,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -302,10 +302,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -333,7 +333,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -352,16 +352,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -390,10 +390,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda @@ -417,7 +417,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda @@ -425,8 +425,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda @@ -440,9 +440,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py312h8cbf658_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda @@ -469,10 +469,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -509,7 +509,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 @@ -522,10 +522,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -550,7 +550,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -565,17 +565,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -604,10 +604,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda @@ -630,7 +630,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda @@ -638,8 +638,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda @@ -653,9 +653,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda @@ -1317,13 +1317,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h29aef15_3 - build_number: 3 + version: 0.7.2 + build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.1-h29aef15_3.conda - sha256: b8c67e279f8efa833fc92b066dc6d0cef3aff7f06144f738adfbd95cdab52865 - md5: bd7d7b664176b5d164d369f12615b75a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + sha256: 387e4df97529d1849a774082b1fed78c7870effc02ed4c2b45961615a0516b64 + md5: fbf4af2c93ae67f175583c9185be4133 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1335,17 +1334,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117581 - timestamp: 1731745139268 + size: 117212 + timestamp: 1732679211893 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h3a84f74_3 - build_number: 3 + version: 0.7.2 + build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.1-h3a84f74_3.conda - sha256: 274c9ec3c173a2979b949ccc10a6013673c4391502a4a71e07070d6c50eabc60 - md5: e7a54821aaa774cfd64efcd45114a4d7 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + sha256: c0ae38eb1f878157323afdd002229e9eeb739f622e028447330805c030c50a9f + md5: a5f883ce16928e898856b5bd8d1bee57 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1358,17 +1356,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113837 - timestamp: 1731745115080 + size: 113549 + timestamp: 1732679091663 - kind: conda name: aws-c-s3 - version: 0.7.1 - build: h840aca7_3 - build_number: 3 + version: 0.7.2 + build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.1-h840aca7_3.conda - sha256: a75dce44667327d365abdcd68c525913c7dd948ea26d4709386acd58717307fc - md5: 540af65a722c5e490012153673793df5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + sha256: 30e4bed9d008fb79f5e84ecbea0f21030ad5d60cb5c55a962df90721aa98fc42 + md5: 63100ff62fdff4a6afcea38841036027 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1379,8 +1376,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 96830 - timestamp: 1731745236535 + size: 97042 + timestamp: 1732679268030 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1482,11 +1479,12 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.5 - build: h21d7256_0 + build: h0e61686_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h21d7256_0.conda - sha256: 54a9f37ba03e20b29215a9e301846ee22368bd6efb9e9afce7c6ad3e64426219 - md5: b2468de19999ee8452757f12f15a9b34 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda + sha256: 1d7bc75a81cdcd992ebee9b06be6a63963203d7fc2537099bf91fda0573c3be6 + md5: 7143a281febcabfc242a458b7bc12048 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1496,24 +1494,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.2,<0.7.3.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354933 - timestamp: 1732136158458 + size: 353633 + timestamp: 1732704043097 - kind: conda name: aws-crt-cpp version: 0.29.5 - build: h6832833_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h6832833_0.conda - sha256: e42172ffef36e2e5793532ab5b8d8c499fe8c4eaf154404501bd3f97a424e701 - md5: 546159ec6849eaf2b632eb79e3ab16f7 + build: h6068a22_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda + sha256: 15eba2ca46b10a17d60b26d7a6db222f08e1d63c55eb76a19f16c30e06679fe4 + md5: 6c0a760285cb79c46a99b15449ecb9ac depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1521,22 +1519,25 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.2,<0.7.3.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236424 - timestamp: 1732136497320 + size: 283812 + timestamp: 1732704031684 - kind: conda name: aws-crt-cpp version: 0.29.5 - build: h8cc6612_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h8cc6612_0.conda - sha256: aac21029314f015d558fc1cb0238b32e3aa1b0473f5ca4f3ef469d0f8c59e026 - md5: e80ca2db9b263c16a44bab78a76165ec + build: h8bcca62_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda + sha256: 371c509c0cd22360cd39963189ba7aa290b08b7384dd4414895f6186e2aecf7e + md5: ef024742bb2501bd3d7f10b0f9ce5a4d depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1544,14 +1545,13 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.1,<0.7.2.0a0 + - aws-c-s3 >=0.7.2,<0.7.3.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 284386 - timestamp: 1732136167312 + size: 236161 + timestamp: 1732704224415 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2698,58 +2698,52 @@ packages: timestamp: 1731707562362 - kind: conda name: httptools - version: 0.6.1 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.1-py312h024a12e_1.conda - sha256: a17d6d925de085b967ee1e44572ccfbb2c109aec1ccc4e6723acd7474c57eeeb - md5: c5c8dfe36db20180a8c7e49049377857 + version: 0.6.4 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 + md5: 8b1160b32557290b64d5be68db3d996d depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT - license_family: MIT - size: 77287 - timestamp: 1726688371563 + size: 101872 + timestamp: 1732707756745 - kind: conda name: httptools - version: 0.6.1 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.1-py312h66e93f0_1.conda - sha256: 07d129a180564051547be7b17140c5a7d4789ba8b0404842328cc638615bbe81 - md5: e9060bac59733da8b5d8c6156b51fbcf + version: 0.6.4 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 + md5: 5e70a6de59352f9a52e9caa7f3447390 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT - license_family: MIT - size: 93588 - timestamp: 1726688214856 + size: 101255 + timestamp: 1732707891645 - kind: conda name: httptools - version: 0.6.1 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.1-py312hb2c0f52_1.conda - sha256: bcd6227032316b69494f15ebc5c81f8670efcb2aa1cadf7c754e38a1a80811c5 - md5: 91dc2737602f681a4679b8b4022b122e + version: 0.6.4 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be + md5: e1747a8e8d2aca5499aaea9993bf31ff depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT - license_family: MIT - size: 92683 - timestamp: 1726688399611 + size: 85623 + timestamp: 1732707871414 - kind: conda name: httpx version: 0.27.2 @@ -3175,13 +3169,12 @@ packages: timestamp: 1727295571173 - kind: conda name: libarrow - version: 18.0.0 - build: h3d75c4c_9_cpu - build_number: 9 + version: 18.1.0 + build: h3d75c4c_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.0.0-h3d75c4c_9_cpu.conda - sha256: 8552a3b30a89350fa46dbee1ba06d039605e6c5f200904f2b6c57fb32b7bbbc0 - md5: ff87e5f8ad826fc724763128f1d151a1 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda + sha256: 46d841b3f316d52d0fa085d5c583a4370de8223afc4f1bbf57eaebdf3aede7f1 + md5: cfee3c6a6ddeb26bba5d96ce7924a817 depends: - aws-crt-cpp >=0.29.5,<0.29.6.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 @@ -3209,21 +3202,20 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8073099 - timestamp: 1732499447839 + size: 8024186 + timestamp: 1732536195865 - kind: conda name: libarrow - version: 18.0.0 - build: h94eee4b_9_cpu - build_number: 9 + version: 18.1.0 + build: h94eee4b_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.0.0-h94eee4b_9_cpu.conda - sha256: 4d59165cbb67020d5ecd819e944874ab6ff2085e496ceb47e9f23526d7d860c9 - md5: fe2841c29f3753146d4e89217d22d043 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda + sha256: 4f8ad6d3ac85f17b7ce319c1f8d0ffacee16403341315677977d3c7b9788166e + md5: 1718fa336f42a0b24b822457df7ce43d depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -3252,21 +3244,20 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 license: Apache-2.0 - size: 8775158 - timestamp: 1732498040333 + size: 8783805 + timestamp: 1732536115314 - kind: conda name: libarrow - version: 18.0.0 - build: hb943b0e_9_cpu - build_number: 9 + version: 18.1.0 + build: hb943b0e_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.0.0-hb943b0e_9_cpu.conda - sha256: c4c7518b2e2bd8dd4573720a500ba68665041ec486e0cf9a034bb6bc1cf94ff8 - md5: dc4cb1c42c1b348f6f272b925fab201a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda + sha256: acc1b6ec23a964ec87722fc90b55d47f8cb03e211e86b9ff312bed588cfc400a + md5: f2dac358d4bd6b57d9b47f11cca0ea8c depends: - __osx >=11.0 - aws-crt-cpp >=0.29.5,<0.29.6.0a0 @@ -3293,180 +3284,171 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 license: Apache-2.0 - size: 5516035 - timestamp: 1732496751328 + size: 5497775 + timestamp: 1732535993576 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h286801f_9_cpu - build_number: 9 + version: 18.1.0 + build: h286801f_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.0.0-h286801f_9_cpu.conda - sha256: 2740f7cbeb633a3f6ac777b91fe726ca87d7361ac90b66a8417a9b9099189a47 - md5: 8b516d4e381d099f6bef4145ed7f1491 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda + sha256: 1b4ae51de889becdd7aca2053e5115d65e2ea94b91d07d2e297d8d3c4666cec5 + md5: fd53fc3858c13425e3334b0af9b6637f depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu - libcxx >=18 license: Apache-2.0 - size: 493686 - timestamp: 1732496844787 + size: 484735 + timestamp: 1732536132543 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5888daf_9_cpu - build_number: 9 + version: 18.1.0 + build: h5888daf_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.0.0-h5888daf_9_cpu.conda - sha256: d714e7dfed613d1f093d60b6691c90cf2740b025860249a167ff08e6fa9c602c - md5: b36def03eb1624ad1ca6cd5866104096 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda + sha256: ad2cab7ca7320642a655ac1214248a64d60a0ce771fa8e7b5378746c16be1c64 + md5: d2f94a6f24f028544c7a4cb1b50c5eca depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 622189 - timestamp: 1732498078370 + size: 610906 + timestamp: 1732536155092 - kind: conda name: libarrow-acero - version: 18.0.0 - build: h5ad3122_9_cpu - build_number: 9 + version: 18.1.0 + build: h5ad3122_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.0.0-h5ad3122_9_cpu.conda - sha256: 7e32e17d9de8856e6133180c5e10011867762057715efb943a86e46b61139825 - md5: 826de4db28e16eeac2a8c677d7702e30 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda + sha256: 216f791e47c774b1d44c89fe7839e03646285cf3220961306b90eec7bf4a6d71 + md5: 7b55a3bc6a3c9a75e509e68d89afd77a depends: - - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 588517 - timestamp: 1732499522102 + size: 577886 + timestamp: 1732536278269 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h286801f_9_cpu - build_number: 9 + version: 18.1.0 + build: h286801f_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.0.0-h286801f_9_cpu.conda - sha256: 3a962b0591720234e724f887ec1975792daa987f34fc161b864183f61dd01bbb - md5: fb7cd00c96acf4ae83475fba8bd9d1ca + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda + sha256: a52ba6632837f2e5ec1c91ea4271ae7bd84fe9af348467e234a338b2fc78f41c + md5: 4020134362b81be7b91c7c6ae086eecc depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_9_cpu - - libarrow-acero 18.0.0 h286801f_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow-acero 18.1.0 h286801f_0_cpu - libcxx >=18 - - libparquet 18.0.0 hda0ea68_9_cpu + - libparquet 18.1.0 hda0ea68_0_cpu license: Apache-2.0 - size: 499874 - timestamp: 1732497930387 + size: 489616 + timestamp: 1732537344927 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5888daf_9_cpu - build_number: 9 + version: 18.1.0 + build: h5888daf_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.0.0-h5888daf_9_cpu.conda - sha256: d4e375d2d92c8845b4f634e7c4cc5d5643294ab74c64cfe0d4ef473816e1028a - md5: 07a60ef65486d08c96f324594dc2b5a1 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda + sha256: da77235b3874b50facb632cc409bee0df81e9dd7c25543a5e8b92873bd2d2a20 + md5: 7834b3a11d0f1ee7e13b4533e361586f depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_9_cpu - - libarrow-acero 18.0.0 h5888daf_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow-acero 18.1.0 h5888daf_0_cpu - libgcc >=13 - - libparquet 18.0.0 h6bd9018_9_cpu + - libparquet 18.1.0 h6bd9018_0_cpu - libstdcxx >=13 license: Apache-2.0 - size: 596492 - timestamp: 1732498166295 + size: 588196 + timestamp: 1732536246424 - kind: conda name: libarrow-dataset - version: 18.0.0 - build: h5ad3122_9_cpu - build_number: 9 + version: 18.1.0 + build: h5ad3122_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.0.0-h5ad3122_9_cpu.conda - sha256: ec5655b25deb8d4868ed1fa1cd47e64e34581550ee7b024c65861aff91ef105c - md5: 763a682b8976e760576f62422ed69728 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda + sha256: 17cd3bc19ae04d1a5b3795fac0fb796cc90eabeb3359a39eaf5dfed84385b4de + md5: 98d2712cebf91fc823e6231f7e55eda3 depends: - - libarrow 18.0.0 h3d75c4c_9_cpu - - libarrow-acero 18.0.0 h5ad3122_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow-acero 18.1.0 h5ad3122_0_cpu - libgcc >=13 - - libparquet 18.0.0 h23a96eb_9_cpu + - libparquet 18.1.0 h23a96eb_0_cpu - libstdcxx >=13 license: Apache-2.0 - size: 571675 - timestamp: 1732499604040 + size: 561486 + timestamp: 1732536339536 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h14ec2bd_9_cpu - build_number: 9 + version: 18.1.0 + build: h14ec2bd_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.0.0-h14ec2bd_9_cpu.conda - sha256: b1def0e7420f2cecfc8eccd0c8ae24c51e58623c3924e11208d69fefc3d07525 - md5: c472236ec8407f4591d5fe682d3c7ad7 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda + sha256: 30723e91df659aa971d9964e25730276295cf3a45be557ec1df9d413c31c44a9 + md5: f93217605309abc1c0314102036da21c depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h3d75c4c_9_cpu - - libarrow-acero 18.0.0 h5ad3122_9_cpu - - libarrow-dataset 18.0.0 h5ad3122_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow-acero 18.1.0 h5ad3122_0_cpu + - libarrow-dataset 18.1.0 h5ad3122_0_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 528225 - timestamp: 1732499642412 + size: 515320 + timestamp: 1732536368053 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h5c8f2c3_9_cpu - build_number: 9 + version: 18.1.0 + build: h5c8f2c3_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.0.0-h5c8f2c3_9_cpu.conda - sha256: 48b9bbcb4529cf41add523aef49acee69e0634f0e3d6f3d1101b16cb8d13cb2e - md5: a8fcd78ee422057362d928e2dd63ed8e + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda + sha256: d40e4a3061d58d07d017a6e439883ce1b9860f3a960a5aead8da189f8795a92c + md5: 51dc5a7117ec264e0a5cc1a5d82437dd depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 h94eee4b_9_cpu - - libarrow-acero 18.0.0 h5888daf_9_cpu - - libarrow-dataset 18.0.0 h5888daf_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow-acero 18.1.0 h5888daf_0_cpu + - libarrow-dataset 18.1.0 h5888daf_0_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 530637 - timestamp: 1732498203493 + size: 520871 + timestamp: 1732536289093 - kind: conda name: libarrow-substrait - version: 18.0.0 - build: h6a6e5c5_9_cpu - build_number: 9 + version: 18.1.0 + build: h6a6e5c5_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.0.0-h6a6e5c5_9_cpu.conda - sha256: 0623669f06c3ebd51421391a44f430986e627de1b215202aa80777a17a353b52 - md5: c0b80e0e4abd9c06a57b58c46224f8b2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda + sha256: aa673d86e56c3b17b66f5ffcd8ce98b93754c9c07e2e6aff96d0dd02135c0969 + md5: 9b2fd35f01e23972abb91543bbd6d84c depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.0.0 hb943b0e_9_cpu - - libarrow-acero 18.0.0 h286801f_9_cpu - - libarrow-dataset 18.0.0 h286801f_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow-acero 18.1.0 h286801f_0_cpu + - libarrow-dataset 18.1.0 h286801f_0_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - size: 461278 - timestamp: 1732498084570 + size: 452400 + timestamp: 1732537518703 - kind: conda name: libblas version: 3.9.0 @@ -4820,59 +4802,56 @@ packages: timestamp: 1730773029647 - kind: conda name: libparquet - version: 18.0.0 - build: h23a96eb_9_cpu - build_number: 9 + version: 18.1.0 + build: h23a96eb_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.0.0-h23a96eb_9_cpu.conda - sha256: 16a5200afeb34827cdbc80f8fbc73a6a61e8af138ba57b72ffb41fdd82455e7d - md5: b6e1289678df3e7abf18619af5e378c2 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda + sha256: be9d2527e709007aef42c39d9ab49163e587c25dc23cc1baba8af91edce16437 + md5: 99592ed1d2877136ebd192789164891a depends: - - libarrow 18.0.0 h3d75c4c_9_cpu + - libarrow 18.1.0 h3d75c4c_0_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1123929 - timestamp: 1732499582562 + size: 1117420 + timestamp: 1732536323359 - kind: conda name: libparquet - version: 18.0.0 - build: h6bd9018_9_cpu - build_number: 9 + version: 18.1.0 + build: h6bd9018_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.0.0-h6bd9018_9_cpu.conda - sha256: 22dd2354ee45e797dd52fbb8325aea3795440821480d4572fc30e4f268239a54 - md5: 79817c62827b836349adf32b218edd95 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda + sha256: d5f73b48e754af5874f48ef22dda1339b74597b66ff5ffeff8a2290f97a9611b + md5: 580349cffeac814a32ff661dcbe72821 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0 h94eee4b_9_cpu + - libarrow 18.1.0 h94eee4b_0_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1213917 - timestamp: 1732498145973 + size: 1204506 + timestamp: 1732536224976 - kind: conda name: libparquet - version: 18.0.0 - build: hda0ea68_9_cpu - build_number: 9 + version: 18.1.0 + build: hda0ea68_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.0.0-hda0ea68_9_cpu.conda - sha256: 6e93414ddda2853bc113bb5895eefa3f65de675ee94eb86e48109196f809425c - md5: 48c0673e0a561279ac8ed3b3cba1c448 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda + sha256: a6a22f0692d99a3cb6306ebd4d2e840c980d08797386f300c47604ee8865af4d + md5: 22f05c8b1c1b82eb5efc2a89c08ee047 depends: - __osx >=11.0 - - libarrow 18.0.0 hb943b0e_9_cpu + - libarrow 18.1.0 hb943b0e_0_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 883867 - timestamp: 1732497873361 + size: 874829 + timestamp: 1732537283879 - kind: conda name: libpng version: 1.6.44 @@ -5696,18 +5675,19 @@ packages: - kind: conda name: lit version: 19.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_0.conda - sha256: 89dfa22c04e6b781ae0e872a8202ccd7994a670493a89d3fb086348438386a89 - md5: 5ece98668bcee7bfc23d4b214a5a8bb4 + url: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_1.conda + sha256: 52614f2f02b16c07759a69cf7b3f7f0794428b811df28fdc672eed1cc498454c + md5: 2b74a4939cd6f0fe32e61dd9617506b9 depends: - python >=3 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 128424 - timestamp: 1732065621077 + size: 128390 + timestamp: 1732691055432 - kind: conda name: llvm-openmp version: 19.1.4 @@ -5842,79 +5822,80 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112505-release.conda - sha256: e8544da30dc3cde2d5201181a0fb554c2fdb1a279343dc6fdc3b3699e480da65 - md5: 18ada131191a1b297d0be0d940b029f4 - depends: - - max-core ==24.6.0.dev2024112505 release - - max-python >=24.6.0.dev2024112505,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112505 release - - mblack ==24.6.0.dev2024112505 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda + sha256: 8f6bc9f7bedbd4f1418d2b53e5958c043b189a01bbf4cb8d6064a41a8e655443 + md5: ed46a257f8120a349093635a248fae10 + depends: + - max-core ==24.6.0.dev2024112802 release + - max-python >=24.6.0.dev2024112802,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112802 release license: LicenseRef-Modular-Proprietary - size: 9930 - timestamp: 1732512294393 + size: 9925 + timestamp: 1732761611545 - kind: conda name: max-core - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112505-release.conda - sha256: 12ba51fe5626bd74c1efd8fdf5717feac6eefbf22efc05ce722babb0c9c123ed - md5: efc447f7345cbcf1fadb3c485c5d1a83 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda + sha256: 42041d5c8c91e2dad56bc2c3aca70eb196d0668d654436945bbb889403507360 + md5: f080fca8828a3f8547980498289f0c94 depends: - - mblack ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112802 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 253852848 - timestamp: 1732512311477 + size: 254574652 + timestamp: 1732761611543 - kind: conda name: max-core - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112505-release.conda - sha256: b9045359f837e8baa054ebe53025af5756ff6ecf06803a401e2e4ccad36d7297 - md5: 8fcd55d2b633c9f27cc956ea7c0fa9d8 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda + sha256: 274e6939e5271c33f893ac8cfa8e9c84ffe2e9a1df71aa983934e01316fbe23b + md5: ad1f154593009241c7573207168d3d4e depends: - - mblack ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112802 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 257504019 - timestamp: 1732512294391 + size: 258185912 + timestamp: 1732761679629 - kind: conda name: max-core - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112505-release.conda - sha256: 8ebbb263653bcc4b962205134f45d87f343f03513208f9ac7144f6ada5ca65ed - md5: 3d74098f452358f071362533e5518745 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda + sha256: 6f7a7565eb4352df793a85ea0a2c9f4044a38500e25fb0d9011b0eca5184b233 + md5: 675998dc57d891d543f0501503478548 depends: - - mblack ==24.6.0.dev2024112505 release + - mblack ==24.6.0.dev2024112802 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 219479698 - timestamp: 1732512237302 + size: 220126850 + timestamp: 1732761683706 - kind: conda name: max-python - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112505-3.12release.conda - sha256: 553628bfa9b9759ddccec73380d63055dcfe82bd6df75f1cb03b12365a811bd7 - md5: ff7c6ff7bb937590832e17bdd742d3ea + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda + sha256: 448b475b496eb65f8f1bb8febeb074b07c26c104901f31d8b5414e435844585b + md5: 5149d46120efd08067a9040f9f4705f5 depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python 3.12.* - pillow - fastapi + - httpx - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 @@ -5932,21 +5913,22 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128104249 - timestamp: 1732512311491 + size: 128356299 + timestamp: 1732761611551 - kind: conda name: max-python - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112505-3.12release.conda - sha256: 1ccf3bfaeef2d63ab0c8d0438ae2c8c6e959790bfcff7334cbce9897dc28c24f - md5: da598be4350ad1ed46b21e07885b13cc + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda + sha256: f0a7710cb0f22917e39c5763d1d075448b68c70c1a4c97a3d0181b56cbbd8dfb + md5: 0bfedc3bd154710db42d79c2918d9c5d depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python 3.12.* - pillow - fastapi + - httpx - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 @@ -5964,21 +5946,22 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 131886497 - timestamp: 1732512294405 + size: 132082582 + timestamp: 1732761679637 - kind: conda name: max-python - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112505-3.12release.conda - sha256: 22c4adb8497b98823bdb7b10117fbd3cff1198ead9f688f533913dedeaf3584b - md5: 8870a7f3214bc3117548074e5fe79d3c + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda + sha256: 0cc06798769540557575638a2a62ac0d5be1d7498588fd3ec9e650e10897e525 + md5: 9c32cacfe9b36e784fd94ab131f3c78b depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python 3.12.* - pillow - fastapi + - httpx - numpy >=1.18,<2.0 - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 @@ -5996,17 +5979,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118834124 - timestamp: 1732512237306 + size: 118974942 + timestamp: 1732761683709 - kind: conda name: mblack - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112505-release.conda - sha256: f72d60f0534d53ce247c450b04bfb6bc67a59f408ee3534392a7d812dc5fa03c - md5: 91a2bae1d55ec1c3bdf9db8d046acd12 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + sha256: f86d1bcf2415aa312f771c520abbdfbfe8c4d98dbecda41e5eb1a521dbd28b93 + md5: 21cf6986dff640f2b7d9d3df43c3af92 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6016,8 +5999,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130604 - timestamp: 1732512294400 + size: 130609 + timestamp: 1732761611548 - kind: conda name: mdurl version: 0.1.2 @@ -6035,21 +6018,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112505 + version: 24.6.0.dev2024112802 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112505-release.conda - sha256: 0b1430e59f40378948363378136c258aa1dbc9d9169f2bcd6468cec240fe8233 - md5: 94f0c957f1f19fec3edd8d58e6b6a7db + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + sha256: 3f56280f801cf79a4cd32e6fd94b0edcf957bf580fc29de6761d535658bc6e56 + md5: cfb9c8e8a2b5c8bde51bfba633da3534 depends: - - max-core ==24.6.0.dev2024112505 release + - max-core ==24.6.0.dev2024112802 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22945 - timestamp: 1732512294400 + size: 22936 + timestamp: 1732761611549 - kind: conda name: multidict version: 6.1.0 @@ -7020,98 +7003,93 @@ packages: timestamp: 1726802424786 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h1f38498_2 - build_number: 2 + version: 18.1.0 + build: py312h1f38498_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.0.0-py312h1f38498_2.conda - sha256: 11c045b44019dbe908315aabb47491519c0a4b5ef07e97a056a9d57d07823de3 - md5: 71ea0ef18b1127e26efaedc875e1853a - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_2_* + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda + sha256: 06c0e208d5bf15051874097366c8e8e5db176dffba38526f227a34e80cc8e9bc + md5: 3710616b880b31d0c8afd8ae7e12392a + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - size: 25410 - timestamp: 1732456749184 + size: 25375 + timestamp: 1732610892198 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h7900ff3_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.0.0-py312h7900ff3_2.conda - sha256: 6c41b69f6cde950f9cb10b80cef1808d0081730038ef7a2675d612b2b126e9cf - md5: 3d91e33cf1a2274d52b9a1ca95bd34a0 - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_2_* + version: 18.1.0 + build: py312h7900ff3_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad + md5: ac65b70df28687c6af4270923c020bdd + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - size: 25195 - timestamp: 1732457103551 + size: 25213 + timestamp: 1732610785600 - kind: conda name: pyarrow - version: 18.0.0 - build: py312h8025657_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.0.0-py312h8025657_2.conda - sha256: 6e892f137ec19d1159b0acc2596846674d36d450bf1469e9d19a913e995bdc3b - md5: 2b2ab50988395f978e700638f754db0a - depends: - - libarrow-acero 18.0.0.* - - libarrow-dataset 18.0.0.* - - libarrow-substrait 18.0.0.* - - libparquet 18.0.0.* - - pyarrow-core 18.0.0 *_2_* + version: 18.1.0 + build: py312h8025657_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda + sha256: 49db959887cb89b44053a44a98d0f35644fc0b2003587492f02b56046de0b60a + md5: 9bb7d32e96a5dcb5ea7fd90a11a83656 + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 - size: 25371 - timestamp: 1732457047763 + size: 25374 + timestamp: 1732611006864 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312h01725c0_2_cpu - build_number: 2 + version: 18.1.0 + build: py312h01725c0_0_cpu subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.0.0-py312h01725c0_2_cpu.conda - sha256: b4457d8e702f7d2eeac03917a2375ebe39cd1f0cb1aa7e4d2864865c29c0bd00 - md5: 190d4fccaa0d28d9f3a7489add69294e + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 + md5: ee80934a6c280ff8635f8db5dec11e04 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 4572029 - timestamp: 1732456649794 + size: 4612916 + timestamp: 1732610377259 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312h66f7834_2_cpu - build_number: 2 + version: 18.1.0 + build: py312h66f7834_0_cpu subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.0.0-py312h66f7834_2_cpu.conda - sha256: 61bdcd4b7900348af7990042f4d7e326f9aa1c75720e47e4d278f902d8efcda8 - md5: 273c8148c2203863fd566d5396d2cc6b + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda + sha256: e7eb062145be554c23dfefa0ebe8c5f6ae8c59635117a6921e66403d6addcda3 + md5: 3390c8b8f57e85506c92a37cf750bdd7 depends: - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 @@ -7119,23 +7097,22 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: - - apache-arrow-proc =*=cpu - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 4397059 - timestamp: 1732456712314 + size: 4406662 + timestamp: 1732610939832 - kind: conda name: pyarrow-core - version: 18.0.0 - build: py312hc40f475_2_cpu - build_number: 2 + version: 18.1.0 + build: py312hc40f475_0_cpu subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.0.0-py312hc40f475_2_cpu.conda - sha256: 83633ec13d303fee24c6f45a8fca0fedad4a80e7ea552a4f06b5643a26ba99f1 - md5: 35308386ec8499ac7114af0edd8de3a2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda + sha256: 063eb168a29d4ce6d9ed865e9e1ad3b6e141712189955a79e06b24ddc0cbbc9c + md5: 9859e7c4b94bbf69772dbf0511101cec depends: - __osx >=11.0 - - libarrow 18.0.0.* *cpu + - libarrow 18.1.0.* *cpu - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - python >=3.12,<3.13.0a0 @@ -7145,8 +7122,8 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 3918835 - timestamp: 1732456722657 + size: 3909116 + timestamp: 1732610863261 - kind: conda name: pycparser version: '2.22' @@ -7164,13 +7141,13 @@ packages: timestamp: 1711811634025 - kind: conda name: pydantic - version: 2.10.1 - build: pyh10f6f8f_0 + version: 2.10.2 + build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.1-pyh10f6f8f_0.conda - sha256: b1872231d26ee3ded32bd1fe3ee1b3c7d9834ad72bf28aed70e5cd1235341584 - md5: c15343c9dbdb30766a07e5b70e46c7d3 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 + md5: e661b732b4d7514ace55a01873f03201 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.1 @@ -7179,8 +7156,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 315991 - timestamp: 1732286519715 + size: 316818 + timestamp: 1732689481710 - kind: conda name: pydantic-core version: 2.27.1 @@ -8012,18 +7989,19 @@ packages: - kind: conda name: setuptools version: 75.6.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_0.conda - sha256: eeec4645f70ce0ed03348397dced9d218a650a42df98592419af61d2689163ed - md5: 68d7d406366926b09a6a023e3d0f71d7 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 + md5: fc80f7995e396cbaeabd23cf46c413dc depends: - python >=3.9 license: MIT license_family: MIT - size: 774304 - timestamp: 1732216189406 + size: 774252 + timestamp: 1732632769210 - kind: conda name: shellingham version: 1.5.4 @@ -8197,13 +8175,12 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.3 - build: py312h8360d73_1 - build_number: 1 + version: 0.20.4 + build: py312h8360d73_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.3-py312h8360d73_1.conda - sha256: 852868de63102c2f16640e688fd500ca10801b667b5fd350144ebde391576d5a - md5: 228c10e93df46415c452f78e8ae57df9 + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda + sha256: 7b59759739b5426e17825b26d6ce9df487d1dc254d4e6a92b14a97107eb6daca + md5: 035c6de3c821559bf1af5ec072593bfd depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 @@ -8216,17 +8193,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2250848 - timestamp: 1732467704757 + size: 2259332 + timestamp: 1732657962717 - kind: conda name: tokenizers - version: 0.20.3 - build: py312ha0d6ea1_1 - build_number: 1 + version: 0.20.4 + build: py312ha0d6ea1_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.3-py312ha0d6ea1_1.conda - sha256: 67c7b487e2b33164d1c1f5af7b9b0d09f5dd88b44fb365d4614e35dc620bc6db - md5: f06befe91e2cbd9a60d200f515d85941 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda + sha256: 6dbb7e5f3f152210817e8658bc454056e464dee16fd9757508f2417edd44d8b8 + md5: b135e3d9178b255993ea4d72741192f8 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 @@ -8239,17 +8215,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2327232 - timestamp: 1732467837340 + size: 2330899 + timestamp: 1732658129796 - kind: conda name: tokenizers - version: 0.20.3 - build: py312hf3e4074_1 - build_number: 1 + version: 0.20.4 + build: py312hf3e4074_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.3-py312hf3e4074_1.conda - sha256: 7423f3b3c961262c6170fa20d4bfdf61a1ba5b4ad472572fc8d0d11a36971ab6 - md5: 365a21a164c0a86a6726f3adcb4207f4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda + sha256: fd86f8a5d41622e8f5092913dea48f41de86258583ee449045905a725672fdc2 + md5: 40e8bc575721b4da76712e90e4a9b7fa depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -8261,61 +8236,58 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1925335 - timestamp: 1732467947397 + size: 1933005 + timestamp: 1732658406859 - kind: conda name: tornado - version: 6.4.1 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.1-py312h024a12e_1.conda - sha256: 5eefede1d8a2f55892bc582dbcb574b1806f19bc1e3939ce56b79721b9406db7 - md5: 967bc97bb9e258993289546479af971f + version: 6.4.2 + build: py312h52516f5_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b depends: - - __osx >=11.0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 841722 - timestamp: 1724956439106 + size: 841662 + timestamp: 1732616934923 - kind: conda name: tornado - version: 6.4.1 - build: py312h52516f5_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.1-py312h52516f5_1.conda - sha256: 714e83cc01dd223ab6e3907843a7523fe745ed0841ee8ef2eae2ced0c485d0d8 - md5: 950b20707177dea3cb74f5ae9aac704d + version: 6.4.2 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 841453 - timestamp: 1724957557137 + size: 840414 + timestamp: 1732616043734 - kind: conda name: tornado - version: 6.4.1 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h66e93f0_1.conda - sha256: c0c9cc7834e8f43702956afaa5af7b0639c4835c285108a43e6b91687ce53ab8 - md5: af648b62462794649066366af4ecd5b0 + version: 6.4.2 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 837665 - timestamp: 1724956252424 + size: 842549 + timestamp: 1732616081362 - kind: conda name: tqdm version: 4.67.1 @@ -8584,13 +8556,12 @@ packages: timestamp: 1730214606664 - kind: conda name: watchfiles - version: 0.24.0 - build: py312h12e396e_1 - build_number: 1 + version: 1.0.0 + build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-0.24.0-py312h12e396e_1.conda - sha256: 04227e72c1e8c30afca18860491462461d35ffa1dba552770adce61794aa7114 - md5: fa5bb5b364b0f8162d67c31009c985c9 + url: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda + sha256: a2a11a751d3fdd2bec79d876687136cee81d0125be40cebd3518042e1e15c349 + md5: b53a91a5cc50cf07f690a5d3b9f91db5 depends: - __glibc >=2.17,<3.0.a0 - anyio >=3.0.0 @@ -8600,18 +8571,16 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 397205 - timestamp: 1725347165866 + size: 409700 + timestamp: 1732689603044 - kind: conda name: watchfiles - version: 0.24.0 - build: py312h8cbf658_1 - build_number: 1 + version: 1.0.0 + build: py312h8cbf658_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-0.24.0-py312h8cbf658_1.conda - sha256: 0c6ce9bc28da2a1e9d04737fc1240f5aadf76df5482ee4c761422169a3bde8bb - md5: a698c65a64db774228eb585ff5dcfc8f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda + sha256: 1d7fde47edacf01a81c0d9ac3f284d4d30982d33686c505374bfa2c7b02bbf8d + md5: 9ecaaf340ad422209a04fcf854fb4a3f depends: - anyio >=3.0.0 - libgcc >=13 @@ -8621,18 +8590,16 @@ packages: constrains: - __glibc >=2.17 license: MIT - license_family: MIT - size: 400026 - timestamp: 1725347309835 + size: 404235 + timestamp: 1732689685476 - kind: conda name: watchfiles - version: 0.24.0 - build: py312he431725_1 - build_number: 1 + version: 1.0.0 + build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-0.24.0-py312he431725_1.conda - sha256: e92ec8593fee0ce6cb2b565900eb9792c73efacc129d2bf92dba074bca505598 - md5: 7fd741404e6fcab22a988ee6742dc778 + url: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda + sha256: 554c4550813b744794fc70451c87d540d38138e6dc901993e85515ffa91087d2 + md5: 0eb2c3f65788f61f905d31ac062fe4b6 depends: - __osx >=11.0 - anyio >=3.0.0 @@ -8642,9 +8609,8 @@ packages: constrains: - __osx >=11.0 license: MIT - license_family: MIT - size: 342896 - timestamp: 1725347401713 + size: 356744 + timestamp: 1732689860624 - kind: conda name: websockets version: '14.1' @@ -8698,58 +8664,52 @@ packages: timestamp: 1731498944076 - kind: conda name: wrapt - version: 1.16.0 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.16.0-py312h024a12e_1.conda - sha256: 54a5d3d9e1b45022b28c5ca3ceaa7ec2db4a40968b2b556804becfdff98f4efe - md5: f97c9abfeb8292f5f8353607ca8a1127 + version: 1.17.0 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda + sha256: a6fc0f4e90643d0c1fd4aab669b6a79f44a305a5474256f6f2da3354d2310fb4 + md5: ddbe3bb0e1356cb9074dd848570694f9 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause - license_family: BSD - size: 59642 - timestamp: 1724958200454 + size: 63807 + timestamp: 1732523690292 - kind: conda name: wrapt - version: 1.16.0 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py312h66e93f0_1.conda - sha256: 3a15a399eb61a999f0f14b4d243acc14e2dff1ead92ef52fcff30c84be89b21c - md5: 2eebcffe80e2a7bb2f0a77e621a7f124 + version: 1.17.0 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda + sha256: b9aa760a987ccc6bc9c61f57badba6798d9a3dcbd0814e5fb8df6d8d2935af73 + md5: 120d5d1c05386d8ce3efd65a4c86431f depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause - license_family: BSD - size: 62624 - timestamp: 1724958046744 + size: 64783 + timestamp: 1732523806 - kind: conda name: wrapt - version: 1.16.0 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.16.0-py312hb2c0f52_1.conda - sha256: b6e1da6b700d489aa89599d46298dc6c16b34617ae1821a01c68015ebcdaa24d - md5: e30d2b17b3d1bf756ddc0e6d3a4dc79f + version: 1.17.0 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda + sha256: 0fb35c3d1642f9f47db87bdb33148f88ef19a3af1eb0ee99b5491551c57269c7 + md5: 73414acdb779a8694a14527865b4357a depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause - license_family: BSD - size: 62782 - timestamp: 1724958067507 + size: 61043 + timestamp: 1732523852129 - kind: conda name: xorg-libxau version: 1.0.11 From 482e65f92ed2f60e5558e0c205231ffd84c18724 Mon Sep 17 00:00:00 2001 From: modularbot Date: Thu, 28 Nov 2024 06:10:32 +0000 Subject: [PATCH 041/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024112805 --- examples/life/magic.lock | 162 +++++++++++++++++----------------- examples/magic.lock | 162 +++++++++++++++++----------------- examples/notebooks/magic.lock | 160 ++++++++++++++++----------------- examples/operators/magic.lock | 162 +++++++++++++++++----------------- magic.lock | 162 +++++++++++++++++----------------- 5 files changed, 404 insertions(+), 404 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 199886c1ec..9a72997840 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -173,12 +173,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda @@ -458,12 +458,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda @@ -723,12 +723,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda @@ -7700,76 +7700,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - sha256: 8f6bc9f7bedbd4f1418d2b53e5958c043b189a01bbf4cb8d6064a41a8e655443 - md5: ed46a257f8120a349093635a248fae10 - depends: - - max-core ==24.6.0.dev2024112802 release - - max-python >=24.6.0.dev2024112802,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112802 release - - mblack ==24.6.0.dev2024112802 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + sha256: d42d9672b36eed3bc4d846d0ae8e20630d80ec5ff54966af36bb0e84eb018a7c + md5: 21b8f08296f321b75659cce32688750b + depends: + - max-core ==24.6.0.dev2024112805 release + - max-python >=24.6.0.dev2024112805,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112805 release license: LicenseRef-Modular-Proprietary - size: 9925 - timestamp: 1732761611545 + size: 9927 + timestamp: 1732771319615 - kind: conda name: max-core - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda - sha256: 42041d5c8c91e2dad56bc2c3aca70eb196d0668d654436945bbb889403507360 - md5: f080fca8828a3f8547980498289f0c94 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda + sha256: 9b02550f0d393451fff14ba476998247e8ce9230c8cde3b496b04ba72ca58a40 + md5: d351616984b25f89afd32b0a98c89928 depends: - - mblack ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254574652 - timestamp: 1732761611543 + size: 254576173 + timestamp: 1732771254860 - kind: conda name: max-core - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda - sha256: 274e6939e5271c33f893ac8cfa8e9c84ffe2e9a1df71aa983934e01316fbe23b - md5: ad1f154593009241c7573207168d3d4e + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda + sha256: a03c929c723950872b136f418c4f197907b850e70382a5f74d5d5540abd1ccc5 + md5: 02c7bc4863ff19c0322ed890145ba23b depends: - - mblack ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258185912 - timestamp: 1732761679629 + size: 258211572 + timestamp: 1732771319613 - kind: conda name: max-core - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda - sha256: 6f7a7565eb4352df793a85ea0a2c9f4044a38500e25fb0d9011b0eca5184b233 - md5: 675998dc57d891d543f0501503478548 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda + sha256: 1a7f82f0029dec8f68847f852e1eac5172c1acc5305541952ae95ce6c3b97436 + md5: 977b26b7ee540c254a23c71e9ba7f1bf depends: - - mblack ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220126850 - timestamp: 1732761683706 + size: 220134322 + timestamp: 1732771049861 - kind: conda name: max-python - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda - sha256: 448b475b496eb65f8f1bb8febeb074b07c26c104901f31d8b5414e435844585b - md5: 5149d46120efd08067a9040f9f4705f5 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda + sha256: ff1ddb4400ac03c4f6ad5ffc016b5f9b087e1aa967d51eac72597036e478b451 + md5: 9017365163eec21de4fed0b35c6be7d9 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python 3.12.* - pillow - fastapi @@ -7791,18 +7791,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128356299 - timestamp: 1732761611551 + size: 128343790 + timestamp: 1732771254868 - kind: conda name: max-python - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda - sha256: f0a7710cb0f22917e39c5763d1d075448b68c70c1a4c97a3d0181b56cbbd8dfb - md5: 0bfedc3bd154710db42d79c2918d9c5d + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda + sha256: 69fb28538434178c34aabf57708859131a5d2f26410802624d401bb0ba3be4a5 + md5: c19242ce517a4d07ff802dca119126e1 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python 3.12.* - pillow - fastapi @@ -7824,18 +7824,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132082582 - timestamp: 1732761679637 + size: 132094887 + timestamp: 1732771319621 - kind: conda name: max-python - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda - sha256: 0cc06798769540557575638a2a62ac0d5be1d7498588fd3ec9e650e10897e525 - md5: 9c32cacfe9b36e784fd94ab131f3c78b + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda + sha256: 75c7d37c1b6fb68c6ef5054ed88cb8ac8bcc4b7273e80b8f9209202a0ae02de1 + md5: 1215e1fa5c7b0cc518447bc214b7e5a5 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python 3.12.* - pillow - fastapi @@ -7857,17 +7857,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118974942 - timestamp: 1732761683709 + size: 118976325 + timestamp: 1732771049864 - kind: conda name: mblack - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - sha256: f86d1bcf2415aa312f771c520abbdfbfe8c4d98dbecda41e5eb1a521dbd28b93 - md5: 21cf6986dff640f2b7d9d3df43c3af92 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + sha256: 821a0e6bc0367ccdca619f0935e0f13a92138a6b2681f617aae2d2000d0a891f + md5: f9fcd437962beaa0c577bcbeecd1e69c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7877,8 +7877,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130609 - timestamp: 1732761611548 + size: 130612 + timestamp: 1732771319618 - kind: conda name: mdurl version: 0.1.2 @@ -7896,21 +7896,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - sha256: 3f56280f801cf79a4cd32e6fd94b0edcf957bf580fc29de6761d535658bc6e56 - md5: cfb9c8e8a2b5c8bde51bfba633da3534 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + sha256: 2702029742752c2bb13fe108c3e5a577151b80b0e0675a0f5a819467b579c136 + md5: 6c9019d1b099600e3a50dca268b658d3 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22936 - timestamp: 1732761611549 + size: 22943 + timestamp: 1732771319619 - kind: conda name: mpg123 version: 1.32.9 diff --git a/examples/magic.lock b/examples/magic.lock index 80aa73de1f..a5bd548e95 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -5803,76 +5803,76 @@ packages: timestamp: 1729352296161 - kind: conda name: max - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - sha256: 8f6bc9f7bedbd4f1418d2b53e5958c043b189a01bbf4cb8d6064a41a8e655443 - md5: ed46a257f8120a349093635a248fae10 - depends: - - max-core ==24.6.0.dev2024112802 release - - max-python >=24.6.0.dev2024112802,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112802 release - - mblack ==24.6.0.dev2024112802 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + sha256: d42d9672b36eed3bc4d846d0ae8e20630d80ec5ff54966af36bb0e84eb018a7c + md5: 21b8f08296f321b75659cce32688750b + depends: + - max-core ==24.6.0.dev2024112805 release + - max-python >=24.6.0.dev2024112805,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112805 release license: LicenseRef-Modular-Proprietary - size: 9925 - timestamp: 1732761611545 + size: 9927 + timestamp: 1732771319615 - kind: conda name: max-core - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda - sha256: 42041d5c8c91e2dad56bc2c3aca70eb196d0668d654436945bbb889403507360 - md5: f080fca8828a3f8547980498289f0c94 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda + sha256: 9b02550f0d393451fff14ba476998247e8ce9230c8cde3b496b04ba72ca58a40 + md5: d351616984b25f89afd32b0a98c89928 depends: - - mblack ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254574652 - timestamp: 1732761611543 + size: 254576173 + timestamp: 1732771254860 - kind: conda name: max-core - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda - sha256: 274e6939e5271c33f893ac8cfa8e9c84ffe2e9a1df71aa983934e01316fbe23b - md5: ad1f154593009241c7573207168d3d4e + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda + sha256: a03c929c723950872b136f418c4f197907b850e70382a5f74d5d5540abd1ccc5 + md5: 02c7bc4863ff19c0322ed890145ba23b depends: - - mblack ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258185912 - timestamp: 1732761679629 + size: 258211572 + timestamp: 1732771319613 - kind: conda name: max-core - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda - sha256: 6f7a7565eb4352df793a85ea0a2c9f4044a38500e25fb0d9011b0eca5184b233 - md5: 675998dc57d891d543f0501503478548 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda + sha256: 1a7f82f0029dec8f68847f852e1eac5172c1acc5305541952ae95ce6c3b97436 + md5: 977b26b7ee540c254a23c71e9ba7f1bf depends: - - mblack ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220126850 - timestamp: 1732761683706 + size: 220134322 + timestamp: 1732771049861 - kind: conda name: max-python - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.11release.conda - sha256: d3069fa0efc03a99f0a668e430717a69bda40a13417687cbfc9523d16436865e - md5: 1ae96b1160d1f9728250ea5ccfdf24fe + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.11release.conda + sha256: 97aac121191462511074298f558c8399a2f3148b76cd65538a24ee99678da0fd + md5: eea765ae285a6b5f85e4c045fda9626d depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python 3.11.* - pillow - fastapi @@ -5894,18 +5894,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128397191 - timestamp: 1732761611549 + size: 128399684 + timestamp: 1732771254866 - kind: conda name: max-python - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.11release.conda - sha256: 2646fe0cf6afb1baf11b58410f81ade59ccd02a48b45079f241247c2c53ecdf3 - md5: fc513c5360958ebab914aab3251be267 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.11release.conda + sha256: 75e23176b4ed0eaa3b39614e32fac600f1b87fc6f8d47c2e7f479a4955c35853 + md5: 828c1e99ddc3856fd0f65e8d08b0867c depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python 3.11.* - pillow - fastapi @@ -5927,18 +5927,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132090316 - timestamp: 1732761679634 + size: 132103194 + timestamp: 1732771319619 - kind: conda name: max-python - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.11release.conda - sha256: bb921dcc9b95d7124095760781f072ef119b579b7a3b222393fbdc3d97491a39 - md5: 28407fbb354de947c2d55c8f5d5b7a66 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.11release.conda + sha256: cc675d1427723a83abd6d322215493d373bd8d40216327333e2f72c4cc260d62 + md5: bd6b1dd3cf9579daf2f60e289365643c depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python 3.11.* - pillow - fastapi @@ -5960,17 +5960,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118981646 - timestamp: 1732761683708 + size: 118987069 + timestamp: 1732771049863 - kind: conda name: mblack - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - sha256: f86d1bcf2415aa312f771c520abbdfbfe8c4d98dbecda41e5eb1a521dbd28b93 - md5: 21cf6986dff640f2b7d9d3df43c3af92 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + sha256: 821a0e6bc0367ccdca619f0935e0f13a92138a6b2681f617aae2d2000d0a891f + md5: f9fcd437962beaa0c577bcbeecd1e69c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5980,8 +5980,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130609 - timestamp: 1732761611548 + size: 130612 + timestamp: 1732771319618 - kind: conda name: mdurl version: 0.1.2 @@ -5999,21 +5999,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - sha256: 3f56280f801cf79a4cd32e6fd94b0edcf957bf580fc29de6761d535658bc6e56 - md5: cfb9c8e8a2b5c8bde51bfba633da3534 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + sha256: 2702029742752c2bb13fe108c3e5a577151b80b0e0675a0f5a819467b579c136 + md5: 6c9019d1b099600e3a50dca268b658d3 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22936 - timestamp: 1732761611549 + size: 22943 + timestamp: 1732771319619 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index b8fb00d453..a7bb3d9dc0 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -166,13 +166,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -460,13 +460,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -745,13 +745,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -6820,76 +6820,76 @@ packages: timestamp: 1713250613726 - kind: conda name: max - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - sha256: 8f6bc9f7bedbd4f1418d2b53e5958c043b189a01bbf4cb8d6064a41a8e655443 - md5: ed46a257f8120a349093635a248fae10 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + sha256: d42d9672b36eed3bc4d846d0ae8e20630d80ec5ff54966af36bb0e84eb018a7c + md5: 21b8f08296f321b75659cce32688750b depends: - - max-core ==24.6.0.dev2024112802 release - - max-python >=24.6.0.dev2024112802,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112802 release - - mblack ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release + - max-python >=24.6.0.dev2024112805,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112805 release license: LicenseRef-Modular-Proprietary - size: 9925 - timestamp: 1732761611545 + size: 9927 + timestamp: 1732771319615 - kind: conda name: max-core - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda - sha256: 42041d5c8c91e2dad56bc2c3aca70eb196d0668d654436945bbb889403507360 - md5: f080fca8828a3f8547980498289f0c94 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda + sha256: 9b02550f0d393451fff14ba476998247e8ce9230c8cde3b496b04ba72ca58a40 + md5: d351616984b25f89afd32b0a98c89928 depends: - - mblack ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254574652 - timestamp: 1732761611543 + size: 254576173 + timestamp: 1732771254860 - kind: conda name: max-core - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda - sha256: 274e6939e5271c33f893ac8cfa8e9c84ffe2e9a1df71aa983934e01316fbe23b - md5: ad1f154593009241c7573207168d3d4e + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda + sha256: a03c929c723950872b136f418c4f197907b850e70382a5f74d5d5540abd1ccc5 + md5: 02c7bc4863ff19c0322ed890145ba23b depends: - - mblack ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258185912 - timestamp: 1732761679629 + size: 258211572 + timestamp: 1732771319613 - kind: conda name: max-core - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda - sha256: 6f7a7565eb4352df793a85ea0a2c9f4044a38500e25fb0d9011b0eca5184b233 - md5: 675998dc57d891d543f0501503478548 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda + sha256: 1a7f82f0029dec8f68847f852e1eac5172c1acc5305541952ae95ce6c3b97436 + md5: 977b26b7ee540c254a23c71e9ba7f1bf depends: - - mblack ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220126850 - timestamp: 1732761683706 + size: 220134322 + timestamp: 1732771049861 - kind: conda name: max-python - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda - sha256: 448b475b496eb65f8f1bb8febeb074b07c26c104901f31d8b5414e435844585b - md5: 5149d46120efd08067a9040f9f4705f5 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda + sha256: ff1ddb4400ac03c4f6ad5ffc016b5f9b087e1aa967d51eac72597036e478b451 + md5: 9017365163eec21de4fed0b35c6be7d9 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python 3.12.* - pillow - fastapi @@ -6911,18 +6911,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128356299 - timestamp: 1732761611551 + size: 128343790 + timestamp: 1732771254868 - kind: conda name: max-python - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda - sha256: f0a7710cb0f22917e39c5763d1d075448b68c70c1a4c97a3d0181b56cbbd8dfb - md5: 0bfedc3bd154710db42d79c2918d9c5d + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda + sha256: 69fb28538434178c34aabf57708859131a5d2f26410802624d401bb0ba3be4a5 + md5: c19242ce517a4d07ff802dca119126e1 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python 3.12.* - pillow - fastapi @@ -6944,18 +6944,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132082582 - timestamp: 1732761679637 + size: 132094887 + timestamp: 1732771319621 - kind: conda name: max-python - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda - sha256: 0cc06798769540557575638a2a62ac0d5be1d7498588fd3ec9e650e10897e525 - md5: 9c32cacfe9b36e784fd94ab131f3c78b + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda + sha256: 75c7d37c1b6fb68c6ef5054ed88cb8ac8bcc4b7273e80b8f9209202a0ae02de1 + md5: 1215e1fa5c7b0cc518447bc214b7e5a5 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python 3.12.* - pillow - fastapi @@ -6977,17 +6977,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118974942 - timestamp: 1732761683709 + size: 118976325 + timestamp: 1732771049864 - kind: conda name: mblack - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - sha256: f86d1bcf2415aa312f771c520abbdfbfe8c4d98dbecda41e5eb1a521dbd28b93 - md5: 21cf6986dff640f2b7d9d3df43c3af92 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + sha256: 821a0e6bc0367ccdca619f0935e0f13a92138a6b2681f617aae2d2000d0a891f + md5: f9fcd437962beaa0c577bcbeecd1e69c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6997,8 +6997,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130609 - timestamp: 1732761611548 + size: 130612 + timestamp: 1732771319618 - kind: conda name: mdurl version: 0.1.2 @@ -7031,21 +7031,21 @@ packages: timestamp: 1698947249750 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - sha256: 3f56280f801cf79a4cd32e6fd94b0edcf957bf580fc29de6761d535658bc6e56 - md5: cfb9c8e8a2b5c8bde51bfba633da3534 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + sha256: 2702029742752c2bb13fe108c3e5a577151b80b0e0675a0f5a819467b579c136 + md5: 6c9019d1b099600e3a50dca268b658d3 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22936 - timestamp: 1732761611549 + size: 22943 + timestamp: 1732771319619 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 831b1c5d5f..116741e367 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -5803,76 +5803,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - sha256: 8f6bc9f7bedbd4f1418d2b53e5958c043b189a01bbf4cb8d6064a41a8e655443 - md5: ed46a257f8120a349093635a248fae10 - depends: - - max-core ==24.6.0.dev2024112802 release - - max-python >=24.6.0.dev2024112802,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112802 release - - mblack ==24.6.0.dev2024112802 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + sha256: d42d9672b36eed3bc4d846d0ae8e20630d80ec5ff54966af36bb0e84eb018a7c + md5: 21b8f08296f321b75659cce32688750b + depends: + - max-core ==24.6.0.dev2024112805 release + - max-python >=24.6.0.dev2024112805,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112805 release license: LicenseRef-Modular-Proprietary - size: 9925 - timestamp: 1732761611545 + size: 9927 + timestamp: 1732771319615 - kind: conda name: max-core - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda - sha256: 42041d5c8c91e2dad56bc2c3aca70eb196d0668d654436945bbb889403507360 - md5: f080fca8828a3f8547980498289f0c94 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda + sha256: 9b02550f0d393451fff14ba476998247e8ce9230c8cde3b496b04ba72ca58a40 + md5: d351616984b25f89afd32b0a98c89928 depends: - - mblack ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254574652 - timestamp: 1732761611543 + size: 254576173 + timestamp: 1732771254860 - kind: conda name: max-core - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda - sha256: 274e6939e5271c33f893ac8cfa8e9c84ffe2e9a1df71aa983934e01316fbe23b - md5: ad1f154593009241c7573207168d3d4e + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda + sha256: a03c929c723950872b136f418c4f197907b850e70382a5f74d5d5540abd1ccc5 + md5: 02c7bc4863ff19c0322ed890145ba23b depends: - - mblack ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258185912 - timestamp: 1732761679629 + size: 258211572 + timestamp: 1732771319613 - kind: conda name: max-core - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda - sha256: 6f7a7565eb4352df793a85ea0a2c9f4044a38500e25fb0d9011b0eca5184b233 - md5: 675998dc57d891d543f0501503478548 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda + sha256: 1a7f82f0029dec8f68847f852e1eac5172c1acc5305541952ae95ce6c3b97436 + md5: 977b26b7ee540c254a23c71e9ba7f1bf depends: - - mblack ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220126850 - timestamp: 1732761683706 + size: 220134322 + timestamp: 1732771049861 - kind: conda name: max-python - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda - sha256: 448b475b496eb65f8f1bb8febeb074b07c26c104901f31d8b5414e435844585b - md5: 5149d46120efd08067a9040f9f4705f5 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda + sha256: ff1ddb4400ac03c4f6ad5ffc016b5f9b087e1aa967d51eac72597036e478b451 + md5: 9017365163eec21de4fed0b35c6be7d9 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python 3.12.* - pillow - fastapi @@ -5894,18 +5894,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128356299 - timestamp: 1732761611551 + size: 128343790 + timestamp: 1732771254868 - kind: conda name: max-python - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda - sha256: f0a7710cb0f22917e39c5763d1d075448b68c70c1a4c97a3d0181b56cbbd8dfb - md5: 0bfedc3bd154710db42d79c2918d9c5d + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda + sha256: 69fb28538434178c34aabf57708859131a5d2f26410802624d401bb0ba3be4a5 + md5: c19242ce517a4d07ff802dca119126e1 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python 3.12.* - pillow - fastapi @@ -5927,18 +5927,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132082582 - timestamp: 1732761679637 + size: 132094887 + timestamp: 1732771319621 - kind: conda name: max-python - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda - sha256: 0cc06798769540557575638a2a62ac0d5be1d7498588fd3ec9e650e10897e525 - md5: 9c32cacfe9b36e784fd94ab131f3c78b + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda + sha256: 75c7d37c1b6fb68c6ef5054ed88cb8ac8bcc4b7273e80b8f9209202a0ae02de1 + md5: 1215e1fa5c7b0cc518447bc214b7e5a5 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python 3.12.* - pillow - fastapi @@ -5960,17 +5960,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118974942 - timestamp: 1732761683709 + size: 118976325 + timestamp: 1732771049864 - kind: conda name: mblack - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - sha256: f86d1bcf2415aa312f771c520abbdfbfe8c4d98dbecda41e5eb1a521dbd28b93 - md5: 21cf6986dff640f2b7d9d3df43c3af92 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + sha256: 821a0e6bc0367ccdca619f0935e0f13a92138a6b2681f617aae2d2000d0a891f + md5: f9fcd437962beaa0c577bcbeecd1e69c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5980,8 +5980,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130609 - timestamp: 1732761611548 + size: 130612 + timestamp: 1732771319618 - kind: conda name: mdurl version: 0.1.2 @@ -5999,21 +5999,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - sha256: 3f56280f801cf79a4cd32e6fd94b0edcf957bf580fc29de6761d535658bc6e56 - md5: cfb9c8e8a2b5c8bde51bfba633da3534 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + sha256: 2702029742752c2bb13fe108c3e5a577151b80b0e0675a0f5a819467b579c136 + md5: 6c9019d1b099600e3a50dca268b658d3 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22936 - timestamp: 1732761611549 + size: 22943 + timestamp: 1732771319619 - kind: conda name: multidict version: 6.1.0 diff --git a/magic.lock b/magic.lock index f45182bd9f..6b52298fec 100644 --- a/magic.lock +++ b/magic.lock @@ -132,12 +132,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -356,12 +356,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -570,12 +570,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -5822,76 +5822,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112802-release.conda - sha256: 8f6bc9f7bedbd4f1418d2b53e5958c043b189a01bbf4cb8d6064a41a8e655443 - md5: ed46a257f8120a349093635a248fae10 - depends: - - max-core ==24.6.0.dev2024112802 release - - max-python >=24.6.0.dev2024112802,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112802 release - - mblack ==24.6.0.dev2024112802 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda + sha256: d42d9672b36eed3bc4d846d0ae8e20630d80ec5ff54966af36bb0e84eb018a7c + md5: 21b8f08296f321b75659cce32688750b + depends: + - max-core ==24.6.0.dev2024112805 release + - max-python >=24.6.0.dev2024112805,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112805 release license: LicenseRef-Modular-Proprietary - size: 9925 - timestamp: 1732761611545 + size: 9927 + timestamp: 1732771319615 - kind: conda name: max-core - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112802-release.conda - sha256: 42041d5c8c91e2dad56bc2c3aca70eb196d0668d654436945bbb889403507360 - md5: f080fca8828a3f8547980498289f0c94 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda + sha256: 9b02550f0d393451fff14ba476998247e8ce9230c8cde3b496b04ba72ca58a40 + md5: d351616984b25f89afd32b0a98c89928 depends: - - mblack ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254574652 - timestamp: 1732761611543 + size: 254576173 + timestamp: 1732771254860 - kind: conda name: max-core - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112802-release.conda - sha256: 274e6939e5271c33f893ac8cfa8e9c84ffe2e9a1df71aa983934e01316fbe23b - md5: ad1f154593009241c7573207168d3d4e + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda + sha256: a03c929c723950872b136f418c4f197907b850e70382a5f74d5d5540abd1ccc5 + md5: 02c7bc4863ff19c0322ed890145ba23b depends: - - mblack ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258185912 - timestamp: 1732761679629 + size: 258211572 + timestamp: 1732771319613 - kind: conda name: max-core - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112802-release.conda - sha256: 6f7a7565eb4352df793a85ea0a2c9f4044a38500e25fb0d9011b0eca5184b233 - md5: 675998dc57d891d543f0501503478548 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda + sha256: 1a7f82f0029dec8f68847f852e1eac5172c1acc5305541952ae95ce6c3b97436 + md5: 977b26b7ee540c254a23c71e9ba7f1bf depends: - - mblack ==24.6.0.dev2024112802 release + - mblack ==24.6.0.dev2024112805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220126850 - timestamp: 1732761683706 + size: 220134322 + timestamp: 1732771049861 - kind: conda name: max-python - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112802-3.12release.conda - sha256: 448b475b496eb65f8f1bb8febeb074b07c26c104901f31d8b5414e435844585b - md5: 5149d46120efd08067a9040f9f4705f5 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda + sha256: ff1ddb4400ac03c4f6ad5ffc016b5f9b087e1aa967d51eac72597036e478b451 + md5: 9017365163eec21de4fed0b35c6be7d9 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python 3.12.* - pillow - fastapi @@ -5913,18 +5913,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128356299 - timestamp: 1732761611551 + size: 128343790 + timestamp: 1732771254868 - kind: conda name: max-python - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112802-3.12release.conda - sha256: f0a7710cb0f22917e39c5763d1d075448b68c70c1a4c97a3d0181b56cbbd8dfb - md5: 0bfedc3bd154710db42d79c2918d9c5d + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda + sha256: 69fb28538434178c34aabf57708859131a5d2f26410802624d401bb0ba3be4a5 + md5: c19242ce517a4d07ff802dca119126e1 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python 3.12.* - pillow - fastapi @@ -5946,18 +5946,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132082582 - timestamp: 1732761679637 + size: 132094887 + timestamp: 1732771319621 - kind: conda name: max-python - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112802-3.12release.conda - sha256: 0cc06798769540557575638a2a62ac0d5be1d7498588fd3ec9e650e10897e525 - md5: 9c32cacfe9b36e784fd94ab131f3c78b + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda + sha256: 75c7d37c1b6fb68c6ef5054ed88cb8ac8bcc4b7273e80b8f9209202a0ae02de1 + md5: 1215e1fa5c7b0cc518447bc214b7e5a5 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python 3.12.* - pillow - fastapi @@ -5979,17 +5979,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118974942 - timestamp: 1732761683709 + size: 118976325 + timestamp: 1732771049864 - kind: conda name: mblack - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112802-release.conda - sha256: f86d1bcf2415aa312f771c520abbdfbfe8c4d98dbecda41e5eb1a521dbd28b93 - md5: 21cf6986dff640f2b7d9d3df43c3af92 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + sha256: 821a0e6bc0367ccdca619f0935e0f13a92138a6b2681f617aae2d2000d0a891f + md5: f9fcd437962beaa0c577bcbeecd1e69c depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5999,8 +5999,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130609 - timestamp: 1732761611548 + size: 130612 + timestamp: 1732771319618 - kind: conda name: mdurl version: 0.1.2 @@ -6018,21 +6018,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112802 + version: 24.6.0.dev2024112805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112802-release.conda - sha256: 3f56280f801cf79a4cd32e6fd94b0edcf957bf580fc29de6761d535658bc6e56 - md5: cfb9c8e8a2b5c8bde51bfba633da3534 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + sha256: 2702029742752c2bb13fe108c3e5a577151b80b0e0675a0f5a819467b579c136 + md5: 6c9019d1b099600e3a50dca268b658d3 depends: - - max-core ==24.6.0.dev2024112802 release + - max-core ==24.6.0.dev2024112805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22936 - timestamp: 1732761611549 + size: 22943 + timestamp: 1732771319619 - kind: conda name: multidict version: 6.1.0 From 9d0d2b09176dede02cf4620f687f7c6574ec2ab1 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Thu, 28 Nov 2024 09:23:38 -0800 Subject: [PATCH 042/119] [stdlib] Add AMD float8 formatting support Add lookup tables for the two AMD float8 types MODULAR_ORIG_COMMIT_REV_ID: 05f4a3d5e2e063a0f265e396c509c654480c6c5f --- stdlib/src/builtin/_format_float.mojo | 526 ++++++++++++++++++++++++++ 1 file changed, 526 insertions(+) diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index b7e27ebc76..ff57737766 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -110,6 +110,14 @@ fn _write_float[ return writer.write(float8e5m2_to_str[int(bitcast[DType.uint8](value))]) elif type is DType.float8e4m3: return writer.write(float8e4m3_to_str[int(bitcast[DType.uint8](value))]) + elif type is DType.float8e5m2fnuz: + return writer.write( + float8e5m2fnuz_to_str[int(bitcast[DType.uint8](value))] + ) + elif type is DType.float8e4m3fnuz: + return writer.write( + float8e4m3fnuz_to_str[int(bitcast[DType.uint8](value))] + ) else: # Currently only specialized for float32 and float64, upcast anything # else to float32 @@ -1951,3 +1959,521 @@ alias float8e4m3_to_str = StaticTuple[StringLiteral, 256]( "-448.0", "nan", ) + +alias float8e5m2fnuz_to_str = StaticTuple[StringLiteral, 256]( + "0.0", + "7.62939453125e-06", + "1.52587890625e-05", + "2.288818359375e-05", + "3.0517578125e-05", + "3.814697265625e-05", + "4.57763671875e-05", + "5.340576171875e-05", + "6.103515625e-05", + "7.62939453125e-05", + "9.1552734375e-05", + "0.0001068115234375", + "0.0001220703125", + "0.000152587890625", + "0.00018310546875", + "0.000213623046875", + "0.000244140625", + "0.00030517578125", + "0.0003662109375", + "0.00042724609375", + "0.00048828125", + "0.0006103515625", + "0.000732421875", + "0.0008544921875", + "0.0009765625", + "0.001220703125", + "0.00146484375", + "0.001708984375", + "0.001953125", + "0.00244140625", + "0.0029296875", + "0.00341796875", + "0.00390625", + "0.0048828125", + "0.005859375", + "0.0068359375", + "0.0078125", + "0.009765625", + "0.01171875", + "0.013671875", + "0.015625", + "0.01953125", + "0.0234375", + "0.02734375", + "0.03125", + "0.0390625", + "0.046875", + "0.0546875", + "0.0625", + "0.078125", + "0.09375", + "0.109375", + "0.125", + "0.15625", + "0.1875", + "0.21875", + "0.25", + "0.3125", + "0.375", + "0.4375", + "0.5", + "0.625", + "0.75", + "0.875", + "1.0", + "1.25", + "1.5", + "1.75", + "2.0", + "2.5", + "3.0", + "3.5", + "4.0", + "5.0", + "6.0", + "7.0", + "8.0", + "10.0", + "12.0", + "14.0", + "16.0", + "20.0", + "24.0", + "28.0", + "32.0", + "40.0", + "48.0", + "56.0", + "64.0", + "80.0", + "96.0", + "112.0", + "128.0", + "160.0", + "192.0", + "224.0", + "256.0", + "320.0", + "384.0", + "448.0", + "512.0", + "640.0", + "768.0", + "896.0", + "1024.0", + "1280.0", + "1536.0", + "1792.0", + "2048.0", + "2560.0", + "3072.0", + "3584.0", + "4096.0", + "5120.0", + "6144.0", + "7168.0", + "8192.0", + "10240.0", + "12288.0", + "14336.0", + "16384.0", + "20480.0", + "24576.0", + "28672.0", + "32768.0", + "40960.0", + "49152.0", + "57344.0", + "nan", + "-7.62939453125e-06", + "-1.52587890625e-05", + "-2.288818359375e-05", + "-3.0517578125e-05", + "-3.814697265625e-05", + "-4.57763671875e-05", + "-5.340576171875e-05", + "-6.103515625e-05", + "-7.62939453125e-05", + "-9.1552734375e-05", + "-0.0001068115234375", + "-0.0001220703125", + "-0.000152587890625", + "-0.00018310546875", + "-0.000213623046875", + "-0.000244140625", + "-0.00030517578125", + "-0.0003662109375", + "-0.00042724609375", + "-0.00048828125", + "-0.0006103515625", + "-0.000732421875", + "-0.0008544921875", + "-0.0009765625", + "-0.001220703125", + "-0.00146484375", + "-0.001708984375", + "-0.001953125", + "-0.00244140625", + "-0.0029296875", + "-0.00341796875", + "-0.00390625", + "-0.0048828125", + "-0.005859375", + "-0.0068359375", + "-0.0078125", + "-0.009765625", + "-0.01171875", + "-0.013671875", + "-0.015625", + "-0.01953125", + "-0.0234375", + "-0.02734375", + "-0.03125", + "-0.0390625", + "-0.046875", + "-0.0546875", + "-0.0625", + "-0.078125", + "-0.09375", + "-0.109375", + "-0.125", + "-0.15625", + "-0.1875", + "-0.21875", + "-0.25", + "-0.3125", + "-0.375", + "-0.4375", + "-0.5", + "-0.625", + "-0.75", + "-0.875", + "-1.0", + "-1.25", + "-1.5", + "-1.75", + "-2.0", + "-2.5", + "-3.0", + "-3.5", + "-4.0", + "-5.0", + "-6.0", + "-7.0", + "-8.0", + "-10.0", + "-12.0", + "-14.0", + "-16.0", + "-20.0", + "-24.0", + "-28.0", + "-32.0", + "-40.0", + "-48.0", + "-56.0", + "-64.0", + "-80.0", + "-96.0", + "-112.0", + "-128.0", + "-160.0", + "-192.0", + "-224.0", + "-256.0", + "-320.0", + "-384.0", + "-448.0", + "-512.0", + "-640.0", + "-768.0", + "-896.0", + "-1024.0", + "-1280.0", + "-1536.0", + "-1792.0", + "-2048.0", + "-2560.0", + "-3072.0", + "-3584.0", + "-4096.0", + "-5120.0", + "-6144.0", + "-7168.0", + "-8192.0", + "-10240.0", + "-12288.0", + "-14336.0", + "-16384.0", + "-20480.0", + "-24576.0", + "-28672.0", + "-32768.0", + "-40960.0", + "-49152.0", + "-57344.0", +) + +alias float8e4m3fnuz_to_str = StaticTuple[StringLiteral, 256]( + "0.0", + "0.0009765625", + "0.001953125", + "0.0029296875", + "0.00390625", + "0.0048828125", + "0.005859375", + "0.0068359375", + "0.0078125", + "0.0087890625", + "0.009765625", + "0.0107421875", + "0.01171875", + "0.0126953125", + "0.013671875", + "0.0146484375", + "0.015625", + "0.017578125", + "0.01953125", + "0.021484375", + "0.0234375", + "0.025390625", + "0.02734375", + "0.029296875", + "0.03125", + "0.03515625", + "0.0390625", + "0.04296875", + "0.046875", + "0.05078125", + "0.0546875", + "0.05859375", + "0.0625", + "0.0703125", + "0.078125", + "0.0859375", + "0.09375", + "0.1015625", + "0.109375", + "0.1171875", + "0.125", + "0.140625", + "0.15625", + "0.171875", + "0.1875", + "0.203125", + "0.21875", + "0.234375", + "0.25", + "0.28125", + "0.3125", + "0.34375", + "0.375", + "0.40625", + "0.4375", + "0.46875", + "0.5", + "0.5625", + "0.625", + "0.6875", + "0.75", + "0.8125", + "0.875", + "0.9375", + "1.0", + "1.125", + "1.25", + "1.375", + "1.5", + "1.625", + "1.75", + "1.875", + "2.0", + "2.25", + "2.5", + "2.75", + "3.0", + "3.25", + "3.5", + "3.75", + "4.0", + "4.5", + "5.0", + "5.5", + "6.0", + "6.5", + "7.0", + "7.5", + "8.0", + "9.0", + "10.0", + "11.0", + "12.0", + "13.0", + "14.0", + "15.0", + "16.0", + "18.0", + "20.0", + "22.0", + "24.0", + "26.0", + "28.0", + "30.0", + "32.0", + "36.0", + "40.0", + "44.0", + "48.0", + "52.0", + "56.0", + "60.0", + "64.0", + "72.0", + "80.0", + "88.0", + "96.0", + "104.0", + "112.0", + "120.0", + "128.0", + "144.0", + "160.0", + "176.0", + "192.0", + "208.0", + "224.0", + "240.0", + "nan", + "-0.0009765625", + "-0.001953125", + "-0.0029296875", + "-0.00390625", + "-0.0048828125", + "-0.005859375", + "-0.0068359375", + "-0.0078125", + "-0.0087890625", + "-0.009765625", + "-0.0107421875", + "-0.01171875", + "-0.0126953125", + "-0.013671875", + "-0.0146484375", + "-0.015625", + "-0.017578125", + "-0.01953125", + "-0.021484375", + "-0.0234375", + "-0.025390625", + "-0.02734375", + "-0.029296875", + "-0.03125", + "-0.03515625", + "-0.0390625", + "-0.04296875", + "-0.046875", + "-0.05078125", + "-0.0546875", + "-0.05859375", + "-0.0625", + "-0.0703125", + "-0.078125", + "-0.0859375", + "-0.09375", + "-0.1015625", + "-0.109375", + "-0.1171875", + "-0.125", + "-0.140625", + "-0.15625", + "-0.171875", + "-0.1875", + "-0.203125", + "-0.21875", + "-0.234375", + "-0.25", + "-0.28125", + "-0.3125", + "-0.34375", + "-0.375", + "-0.40625", + "-0.4375", + "-0.46875", + "-0.5", + "-0.5625", + "-0.625", + "-0.6875", + "-0.75", + "-0.8125", + "-0.875", + "-0.9375", + "-1.0", + "-1.125", + "-1.25", + "-1.375", + "-1.5", + "-1.625", + "-1.75", + "-1.875", + "-2.0", + "-2.25", + "-2.5", + "-2.75", + "-3.0", + "-3.25", + "-3.5", + "-3.75", + "-4.0", + "-4.5", + "-5.0", + "-5.5", + "-6.0", + "-6.5", + "-7.0", + "-7.5", + "-8.0", + "-9.0", + "-10.0", + "-11.0", + "-12.0", + "-13.0", + "-14.0", + "-15.0", + "-16.0", + "-18.0", + "-20.0", + "-22.0", + "-24.0", + "-26.0", + "-28.0", + "-30.0", + "-32.0", + "-36.0", + "-40.0", + "-44.0", + "-48.0", + "-52.0", + "-56.0", + "-60.0", + "-64.0", + "-72.0", + "-80.0", + "-88.0", + "-96.0", + "-104.0", + "-112.0", + "-120.0", + "-128.0", + "-144.0", + "-160.0", + "-176.0", + "-192.0", + "-208.0", + "-224.0", + "-240.0", +) From af0ac4513fd15b5033177ec2d0cdeb8062d24e60 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Thu, 28 Nov 2024 10:12:04 -0800 Subject: [PATCH 043/119] [stdlib] format float consistency changes Make consistent with `dtype is` instead of `dtype ==`, and return on the same line as final expression. MODULAR_ORIG_COMMIT_REV_ID: 9ce3daf3af56f8542bc0a7614cbd9c0ff8b0b74f --- stdlib/src/builtin/_format_float.mojo | 36 ++++++++++++--------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index ff57737766..76c255c1b5 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -119,8 +119,7 @@ fn _write_float[ float8e4m3fnuz_to_str[int(bitcast[DType.uint8](value))] ) else: - # Currently only specialized for float32 and float64, upcast anything - # else to float32 + # Upcast the float16 types to float32 casted = value.cast[ DType.float64 if type == DType.float64 else DType.float32 ]() @@ -135,20 +134,17 @@ fn _write_float[ if isinf(value): if sign: - writer.write("-") - writer.write("inf") - return + return writer.write("-inf") + return writer.write("inf") if isnan(value): - writer.write("nan") - return + return writer.write("nan") if sign: writer.write("-") if not sig and not exp: - writer.write("0.0") - return + return writer.write("0.0") # Convert the binary components to a decimal representation: # - The raw binary sig into a decimal sig @@ -383,7 +379,7 @@ fn _compute_endpoint[ CarrierDType: DType, sig_bits: Int, total_bits: Int, cache_bits: Int ](cache_index: Int, beta: Int, left_endpoint: Bool) -> Scalar[CarrierDType]: @parameter - if CarrierDType == DType.uint64: + if CarrierDType is DType.uint64: var cache = cache_f64[cache_index] if left_endpoint: return ( @@ -420,9 +416,9 @@ fn _print_bits[type: DType](x: Scalar[type]) -> String: if i % 8 == 0: output.write(" ") else: - alias sig_bits = 23 if type == DType.float32 else 52 - alias exp_bits = 8 if type == DType.float32 else 11 - alias cast_type = DType.uint32 if type == DType.float32 else DType.uint64 + alias sig_bits = 23 if type is DType.float32 else 52 + alias exp_bits = 8 if type is DType.float32 else 11 + alias cast_type = DType.uint32 if type is DType.float32 else DType.uint64 var casted = bitcast[cast_type](x) for i in reversed(range(total_bits)): output.write((casted >> i) & 1) @@ -448,7 +444,7 @@ fn _rotr[ CarrierDType: DType ](n: Scalar[CarrierDType], r: Scalar[CarrierDType]) -> Scalar[CarrierDType]: @parameter - if CarrierDType == DType.uint32: + if CarrierDType is DType.uint32: var r_masked = r & 31 return (n >> r_masked) | (n << ((32 - r_masked) & 31)) else: @@ -508,7 +504,7 @@ fn _remove_trailing_zeros[ """ @parameter - if CarrierDType == DType.uint64: + if CarrierDType is DType.uint64: var r = _rotr(sig * 28999941890838049, 8) var b = r < 184467440738 var s = int(b) @@ -560,7 +556,7 @@ fn _divide_by_pow10[ CarrierDType: DType, //, N: Int, n_max: Scalar[CarrierDType] ](n: Scalar[CarrierDType]) -> Scalar[CarrierDType]: @parameter - if CarrierDType == DType.uint64: + if CarrierDType is DType.uint64: @parameter if N == 1 and bool(n_max <= 4611686018427387908): @@ -596,7 +592,7 @@ fn _umul192_lower128(x: UInt64, y: _UInt128) -> _UInt128: fn _compute_mul_parity[ CarrierDType: DType ](two_f: Scalar[CarrierDType], cache_index: Int, beta: Int) -> _MulParity: - if CarrierDType == DType.uint64: + if CarrierDType is DType.uint64: debug_assert(1 <= beta < 64, "beta must be between 1 and 64") var r = _umul192_lower128( two_f.cast[DType.uint64](), cache_f64[cache_index] @@ -668,7 +664,7 @@ fn _umul96_upper64[ fn _compute_mul[ CarrierDType: DType ](u: Scalar[CarrierDType], cache_index: Int) -> _MulResult[CarrierDType]: - if CarrierDType == DType.uint64: + if CarrierDType is DType.uint64: var r = _umul192_upper128(u, cache_f64[cache_index]) return _MulResult[CarrierDType](r.high.cast[CarrierDType](), r.low == 0) else: @@ -682,7 +678,7 @@ fn _compute_mul[ fn _compute_delta[ CarrierDType: DType, total_bits: Int, cache_bits: Int ](cache_index: Int, beta: Int) -> Scalar[CarrierDType]: - if CarrierDType == DType.uint64: + if CarrierDType is DType.uint64: var cache = cache_f64[cache_index] return (cache.high >> (total_bits - 1 - beta)).cast[CarrierDType]() else: @@ -737,7 +733,7 @@ fn _count_factors[ fn _compute_round_up_for_shorter_interval_case[ CarrierDType: DType, total_bits: Int, sig_bits: Int, cache_bits: Int ](cache_index: Int, beta: Int) -> Scalar[CarrierDType]: - if CarrierDType == DType.uint64: + if CarrierDType is DType.uint64: var cache = cache_f64[cache_index] return ( ( From 135c19c6cc914cc47ea9363a94c67c636c187ef7 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Thu, 28 Nov 2024 12:30:43 -0800 Subject: [PATCH 044/119] [******] Reformat imports, NFC (#51760) MODULAR_ORIG_COMMIT_REV_ID: 16f4eb58466393e8902ce4629cbcd4c6c8960772 --- examples/life/benchmark.mojo | 3 +- examples/life/gridv1.mojo | 2 +- examples/life/gridv2.mojo | 5 +- examples/life/lifev1.mojo | 3 +- examples/life/lifev2.mojo | 3 +- examples/mandelbrot.mojo | 2 +- examples/matmul.mojo | 5 +- .../algorithm/bench_elementwise.mojo | 1 + stdlib/benchmarks/builtin/bench_sort.mojo | 11 +- stdlib/benchmarks/collections/bench_dict.mojo | 8 +- .../benchmarks/collections/bench_string.mojo | 12 +- stdlib/benchmarks/hashlib/bench_hash.mojo | 17 +-- stdlib/benchmarks/utils/bench_formatter.mojo | 1 + stdlib/benchmarks/utils/bench_memmem.mojo | 3 +- stdlib/src/base64/_b64encode.mojo | 6 +- stdlib/src/base64/base64.mojo | 2 + stdlib/src/builtin/_format_float.mojo | 6 +- stdlib/src/builtin/_pybind.mojo | 35 +++-- stdlib/src/builtin/_startup.mojo | 5 +- stdlib/src/builtin/bool.mojo | 4 +- stdlib/src/builtin/builtin_list.mojo | 1 - stdlib/src/builtin/debug_assert.mojo | 14 +- stdlib/src/builtin/dtype.mojo | 2 +- stdlib/src/builtin/file.mojo | 3 +- stdlib/src/builtin/file_descriptor.mojo | 6 +- stdlib/src/builtin/format_int.mojo | 5 +- stdlib/src/builtin/int.mojo | 16 +-- stdlib/src/builtin/io.mojo | 18 ++- stdlib/src/builtin/object.mojo | 4 +- stdlib/src/builtin/range.mojo | 4 +- stdlib/src/builtin/simd.mojo | 42 +++--- stdlib/src/builtin/sort.mojo | 3 +- stdlib/src/builtin/string_literal.mojo | 15 +-- stdlib/src/builtin/tuple.mojo | 1 + stdlib/src/builtin/uint.mojo | 8 +- stdlib/src/collections/counter.mojo | 3 +- stdlib/src/collections/deque.mojo | 4 +- stdlib/src/collections/dict.mojo | 7 +- stdlib/src/collections/inline_array.mojo | 1 + stdlib/src/collections/inline_list.mojo | 1 + stdlib/src/collections/list.mojo | 6 +- stdlib/src/collections/optional.mojo | 1 + stdlib/src/collections/set.mojo | 2 +- stdlib/src/collections/string.mojo | 27 ++-- stdlib/src/collections/vector.mojo | 3 +- stdlib/src/hashlib/__init__.mojo | 2 +- stdlib/src/hashlib/_ahash.mojo | 6 +- stdlib/src/hashlib/_hasher.mojo | 3 +- stdlib/src/hashlib/hash.mojo | 7 +- stdlib/src/math/__init__.mojo | 10 +- stdlib/src/math/math.mojo | 17 ++- stdlib/src/memory/memory.mojo | 13 +- stdlib/src/memory/owned_pointer.mojo | 2 +- stdlib/src/memory/unsafe_pointer.mojo | 3 +- stdlib/src/os/__init__.mojo | 4 +- stdlib/src/os/_linux_x86.mojo | 2 +- stdlib/src/os/atomic.mojo | 3 +- stdlib/src/os/env.mojo | 1 + stdlib/src/os/os.mojo | 7 +- stdlib/src/os/path/__init__.mojo | 4 +- stdlib/src/os/path/path.mojo | 7 +- stdlib/src/pathlib/path.mojo | 7 +- stdlib/src/prelude/__init__.mojo | 120 +++++++++--------- stdlib/src/pwd/__init__.mojo | 2 +- stdlib/src/pwd/_linux.mojo | 6 +- stdlib/src/pwd/_macos.mojo | 6 +- stdlib/src/pwd/pwd.mojo | 3 +- stdlib/src/python/__init__.mojo | 2 +- stdlib/src/python/_bindings.mojo | 21 ++- stdlib/src/python/_cpython.mojo | 8 +- stdlib/src/python/python.mojo | 4 +- stdlib/src/python/python_object.mojo | 8 +- stdlib/src/random/random.mojo | 7 +- stdlib/src/sys/__init__.mojo | 12 +- stdlib/src/sys/_libc.mojo | 4 +- stdlib/src/sys/ffi.mojo | 6 +- stdlib/src/sys/info.mojo | 3 +- stdlib/src/sys/intrinsics.mojo | 5 +- stdlib/src/sys/terminate.mojo | 2 +- stdlib/src/tempfile/tempfile.mojo | 3 +- stdlib/src/testing/__init__.mojo | 4 +- stdlib/src/testing/testing.mojo | 1 - stdlib/src/time/__init__.mojo | 2 +- stdlib/src/time/time.mojo | 6 +- stdlib/src/utils/__init__.mojo | 6 +- stdlib/src/utils/_serialize.mojo | 2 +- stdlib/src/utils/_unicode.mojo | 3 +- stdlib/src/utils/_utf8_validation.mojo | 5 +- stdlib/src/utils/format.mojo | 2 + stdlib/src/utils/index.mojo | 3 +- stdlib/src/utils/inline_string.mojo | 3 +- stdlib/src/utils/lock.mojo | 4 +- stdlib/src/utils/loop.mojo | 2 +- stdlib/src/utils/span.mojo | 3 +- stdlib/src/utils/string_slice.mojo | 13 +- stdlib/src/utils/stringref.mojo | 10 +- stdlib/src/utils/write.mojo | 6 +- stdlib/test/builtin/test_dtype.mojo | 2 +- stdlib/test/builtin/test_file.mojo | 2 +- stdlib/test/builtin/test_format_float.mojo | 5 +- stdlib/test/builtin/test_int.mojo | 5 +- stdlib/test/builtin/test_int_literal.mojo | 2 +- stdlib/test/builtin/test_issue_1505.mojo | 3 +- stdlib/test/builtin/test_list_literal.mojo | 2 +- stdlib/test/builtin/test_print.mojo | 4 +- stdlib/test/builtin/test_reversed.mojo | 1 + stdlib/test/builtin/test_simd.mojo | 7 +- stdlib/test/builtin/test_sort_issue_1018.mojo | 2 + stdlib/test/builtin/test_string_literal.mojo | 2 +- stdlib/test/builtin/test_uint.mojo | 3 +- stdlib/test/collections/test_counter.mojo | 2 +- stdlib/test/collections/test_deque.mojo | 4 +- .../test/collections/test_inline_array.mojo | 5 +- stdlib/test/collections/test_inline_list.mojo | 2 +- stdlib/test/collections/test_list.mojo | 3 +- stdlib/test/collections/test_set.mojo | 2 +- stdlib/test/collections/test_string.mojo | 1 + stdlib/test/hashlib/test_ahash.mojo | 12 +- stdlib/test/hashlib/test_hash.mojo | 1 + stdlib/test/hashlib/test_hasher.mojo | 6 +- stdlib/test/lit.cfg.py | 1 - stdlib/test/memory/test_arc.mojo | 2 +- .../test/memory/test_maybe_uninitialized.mojo | 2 +- stdlib/test/memory/test_memory.mojo | 2 +- stdlib/test/memory/test_owned_pointer.mojo | 6 +- stdlib/test/memory/test_unsafepointer.mojo | 4 +- stdlib/test/os/path/test_basename.mojo | 1 + stdlib/test/os/path/test_expanduser.mojo | 5 +- stdlib/test/os/path/test_expandvars.mojo | 1 + stdlib/test/os/path/test_getsize.mojo | 1 + stdlib/test/os/path/test_split.mojo | 2 +- stdlib/test/os/path/test_splitroot.mojo | 1 + stdlib/test/os/test_no_trap.mojo | 2 +- stdlib/test/os/test_remove.mojo | 2 +- stdlib/test/pwd/test_pwd.mojo | 5 +- stdlib/test/python/test_python_object.mojo | 1 + stdlib/test/sys/test_c_types.mojo | 2 +- stdlib/test/sys/test_intrinsics.mojo | 2 +- stdlib/test/sys/test_paramenv.mojo | 2 +- stdlib/test/testing/test_assertion.mojo | 8 +- stdlib/test/time/test_time.mojo | 2 +- stdlib/test/utils/test_format_to_stdout.mojo | 3 +- stdlib/test/utils/test_inlined_string.mojo | 3 +- stdlib/test/utils/test_select.mojo | 3 +- stdlib/test/utils/test_span.mojo | 1 + stdlib/test/utils/test_string_slice.mojo | 2 +- stdlib/test/utils/test_tuple.mojo | 4 +- stdlib/test/utils/test_variant.mojo | 2 +- 148 files changed, 474 insertions(+), 402 deletions(-) diff --git a/examples/life/benchmark.mojo b/examples/life/benchmark.mojo index 268e9496ff..c54c93f15b 100644 --- a/examples/life/benchmark.mojo +++ b/examples/life/benchmark.mojo @@ -11,9 +11,10 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # +from time import perf_counter_ns + import gridv1 import gridv2 -from time import perf_counter_ns def main(): diff --git a/examples/life/gridv1.mojo b/examples/life/gridv1.mojo index e416860928..9b7ec2e386 100644 --- a/examples/life/gridv1.mojo +++ b/examples/life/gridv1.mojo @@ -11,8 +11,8 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from collections import Optional import random +from collections import Optional @value diff --git a/examples/life/gridv2.mojo b/examples/life/gridv2.mojo index 8f937a2046..574d41e314 100644 --- a/examples/life/gridv2.mojo +++ b/examples/life/gridv2.mojo @@ -11,9 +11,10 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from collections import Optional -from memory import memcpy, memset_zero, UnsafePointer import random +from collections import Optional + +from memory import UnsafePointer, memcpy, memset_zero struct Grid[rows: Int, cols: Int](StringableRaising): diff --git a/examples/life/lifev1.mojo b/examples/life/lifev1.mojo index c87ca0eeb0..9056388874 100644 --- a/examples/life/lifev1.mojo +++ b/examples/life/lifev1.mojo @@ -11,9 +11,10 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # +import time + from gridv1 import Grid from python import Python, PythonObject -import time def run_display( diff --git a/examples/life/lifev2.mojo b/examples/life/lifev2.mojo index c399d2eb9b..ca2071ae06 100644 --- a/examples/life/lifev2.mojo +++ b/examples/life/lifev2.mojo @@ -11,9 +11,10 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # +import time + from gridv2 import Grid from python import Python, PythonObject -import time def run_display( diff --git a/examples/mandelbrot.mojo b/examples/mandelbrot.mojo index 9603e31c70..505303f30b 100644 --- a/examples/mandelbrot.mojo +++ b/examples/mandelbrot.mojo @@ -14,12 +14,12 @@ # RUN: %mojo %s | FileCheck %s from math import iota -from memory import UnsafePointer from sys import num_physical_cores, simdwidthof import benchmark from algorithm import parallelize, vectorize from complex import ComplexFloat64, ComplexSIMD +from memory import UnsafePointer alias float_type = DType.float32 alias int_type = DType.int32 diff --git a/examples/matmul.mojo b/examples/matmul.mojo index 77eb9c447d..1d58d68bb3 100644 --- a/examples/matmul.mojo +++ b/examples/matmul.mojo @@ -17,13 +17,12 @@ from os.env import getenv from random import rand -from sys import info -from sys import simdwidthof +from sys import info, simdwidthof import benchmark from algorithm import Static2DTileUnitFunc as Tile2DFunc from algorithm import parallelize, vectorize -from memory import memset_zero, stack_allocation, UnsafePointer +from memory import UnsafePointer, memset_zero, stack_allocation from python import Python, PythonObject alias M = 512 # rows of A and C diff --git a/stdlib/benchmarks/algorithm/bench_elementwise.mojo b/stdlib/benchmarks/algorithm/bench_elementwise.mojo index 42ab4732f0..34130a2c37 100644 --- a/stdlib/benchmarks/algorithm/bench_elementwise.mojo +++ b/stdlib/benchmarks/algorithm/bench_elementwise.mojo @@ -15,6 +15,7 @@ # the -t flag. Remember to replace it again before pushing any code. from sys import simdwidthof + from algorithm import elementwise from benchmark import Bench, BenchConfig, Bencher, BenchId from buffer import Buffer diff --git a/stdlib/benchmarks/builtin/bench_sort.mojo b/stdlib/benchmarks/builtin/bench_sort.mojo index 57bfcc9e5b..0d482a72cf 100644 --- a/stdlib/benchmarks/builtin/bench_sort.mojo +++ b/stdlib/benchmarks/builtin/bench_sort.mojo @@ -14,15 +14,16 @@ # NOTE: to test changes on the current branch using run-benchmarks.sh, remove # the -t flag. Remember to replace it again before pushing any code. -from benchmark import Bench, Bencher, BenchId, keep, BenchConfig, Unit, run -from memory import UnsafePointer from random import * + +from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run +from memory import UnsafePointer from stdlib.builtin.sort import ( - sort, - _small_sort, - _insertion_sort, _heap_sort, + _insertion_sort, + _small_sort, _SortWrapper, + sort, ) # ===----------------------------------------------------------------------===# diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/stdlib/benchmarks/collections/bench_dict.mojo index d8c782846e..c88c633579 100644 --- a/stdlib/benchmarks/collections/bench_dict.mojo +++ b/stdlib/benchmarks/collections/bench_dict.mojo @@ -14,14 +14,14 @@ # NOTE: to test changes on the current branch using run-benchmarks.sh, remove # the -t flag. Remember to replace it again before pushing any code. +from collections import Dict, Optional +from collections.dict import DictEntry +from math import ceil from random import * +from sys import sizeof from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run -from sys import sizeof from bit import bit_ceil -from math import ceil -from collections import Dict, Optional -from collections.dict import DictEntry # ===----------------------------------------------------------------------===# diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/stdlib/benchmarks/collections/bench_string.mojo index be397e082e..7a46242714 100644 --- a/stdlib/benchmarks/collections/bench_string.mojo +++ b/stdlib/benchmarks/collections/bench_string.mojo @@ -14,12 +14,14 @@ # NOTE: to test changes on the current branch using run-benchmarks.sh, remove # the -t flag. Remember to replace it again before pushing any code. -from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run -from random import random_si64, seed -from pathlib import _dir_of_current_file -from collections import Optional, Dict -from os import abort +from collections import Dict, Optional from collections.string import String +from os import abort +from pathlib import _dir_of_current_file +from random import random_si64, seed + +from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run + from utils._utf8_validation import _is_valid_utf8 diff --git a/stdlib/benchmarks/hashlib/bench_hash.mojo b/stdlib/benchmarks/hashlib/bench_hash.mojo index 1f4f93c0cc..6ac5e62013 100644 --- a/stdlib/benchmarks/hashlib/bench_hash.mojo +++ b/stdlib/benchmarks/hashlib/bench_hash.mojo @@ -14,20 +14,21 @@ # NOTE: to test changes on the current branch using run-benchmarks.sh, remove # the -t flag. Remember to replace it again before pushing any code. -from benchmark import Bench, BenchConfig, Bencher, BenchId -from bit import byte_swap, rotate_bits_left -from memory import UnsafePointer -from hashlib.hash import hash as old_hash from hashlib._ahash import ( + MULTIPLE, + ROT, + U128, + U256, AHasher, _folded_multiply, _read_small, - U256, - U128, - MULTIPLE, - ROT, ) from hashlib._hasher import _hash_with_hasher +from hashlib.hash import hash as old_hash + +from benchmark import Bench, BenchConfig, Bencher, BenchId +from bit import byte_swap, rotate_bits_left +from memory import UnsafePointer # Source: https://www.101languages.net/arabic/most-common-arabic-words/ alias words_ar = """ diff --git a/stdlib/benchmarks/utils/bench_formatter.mojo b/stdlib/benchmarks/utils/bench_formatter.mojo index 83c4c44e82..3d22aa92a8 100644 --- a/stdlib/benchmarks/utils/bench_formatter.mojo +++ b/stdlib/benchmarks/utils/bench_formatter.mojo @@ -15,6 +15,7 @@ # the -t flag. Remember to replace it again before pushing any code. from sys import simdwidthof + from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run from bit import count_trailing_zeros from builtin.dtype import _uint_type_of_width diff --git a/stdlib/benchmarks/utils/bench_memmem.mojo b/stdlib/benchmarks/utils/bench_memmem.mojo index 6fd0b16a89..9cca51fc83 100644 --- a/stdlib/benchmarks/utils/bench_memmem.mojo +++ b/stdlib/benchmarks/utils/bench_memmem.mojo @@ -15,10 +15,11 @@ # the -t flag. Remember to replace it again before pushing any code. from sys import simdwidthof + from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run from bit import count_trailing_zeros from builtin.dtype import _uint_type_of_width -from memory import memcmp, bitcast, UnsafePointer, pack_bits +from memory import UnsafePointer, bitcast, memcmp, pack_bits from utils.stringref import _align_down, _memchr, _memmem diff --git a/stdlib/src/base64/_b64encode.mojo b/stdlib/src/base64/_b64encode.mojo index 03aa0a56ab..f2179b88d0 100644 --- a/stdlib/src/base64/_b64encode.mojo +++ b/stdlib/src/base64/_b64encode.mojo @@ -26,10 +26,12 @@ https://arxiv.org/abs/1704.00605 from collections import InlineArray from math.math import _compile_time_iota -from memory import memcpy, bitcast, UnsafePointer -from utils import IndexList from sys import llvm_intrinsic +from memory import UnsafePointer, bitcast, memcpy + +from utils import IndexList + alias Bytes = SIMD[DType.uint8, _] diff --git a/stdlib/src/base64/base64.mojo b/stdlib/src/base64/base64.mojo index 0bf4f2a3b9..0787b01ff2 100644 --- a/stdlib/src/base64/base64.mojo +++ b/stdlib/src/base64/base64.mojo @@ -21,7 +21,9 @@ from base64 import b64encode from collections import List from sys import simdwidthof + import bit + from ._b64encode import b64encode_with_buffers as _b64encode_with_buffers # ===----------------------------------------------------------------------===# diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index 76c255c1b5..7101144eca 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -25,10 +25,12 @@ # ===----------------------------------------------------------------------=== # from collections import InlineArray from math import log2 -from memory import bitcast from sys.info import sizeof -from utils import StaticTuple, Span + from builtin.io import _printf +from memory import bitcast + +from utils import Span, StaticTuple from utils.numerics import FPUtils, isinf, isnan diff --git a/stdlib/src/builtin/_pybind.mojo b/stdlib/src/builtin/_pybind.mojo index 2644bceba2..fd2613961f 100644 --- a/stdlib/src/builtin/_pybind.mojo +++ b/stdlib/src/builtin/_pybind.mojo @@ -11,32 +11,29 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from memory import UnsafePointer, stack_allocation - -from sys import sizeof, alignof +from collections import Optional +from sys import alignof, sizeof import python._cpython as cp -from python import TypedPythonObject, Python, PythonObject -from python.python import _get_global_python_itf -from python._cpython import ( - PyObjectPtr, - PyMethodDef, - PyType_Slot, - PyType_Spec, - CPython, -) -from python._bindings import ( - Pythonable, +from memory import UnsafePointer, stack_allocation +from python import Python, PythonObject, TypedPythonObject +from python._bindings import ( # Imported for use by the compiler ConvertibleFromPython, PyMojoObject, - python_type_object, - py_c_function_wrapper, + Pythonable, check_argument_type, - # Imported for use by the compiler check_arguments_arity, + py_c_function_wrapper, + python_type_object, ) - -from collections import Optional +from python._cpython import ( + CPython, + PyMethodDef, + PyObjectPtr, + PyType_Slot, + PyType_Spec, +) +from python.python import _get_global_python_itf alias PyModule = TypedPythonObject["Module"] diff --git a/stdlib/src/builtin/_startup.mojo b/stdlib/src/builtin/_startup.mojo index 97a815742f..e6efe691e0 100644 --- a/stdlib/src/builtin/_startup.mojo +++ b/stdlib/src/builtin/_startup.mojo @@ -12,9 +12,10 @@ # ===----------------------------------------------------------------------=== # """Implements functionality to start a mojo execution.""" -from memory import UnsafePointer from sys import external_call -from sys.ffi import _get_global, OpaquePointer +from sys.ffi import OpaquePointer, _get_global + +from memory import UnsafePointer fn _init_global_runtime(ignored: OpaquePointer) -> OpaquePointer: diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index c9073c3558..a877d384ac 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -15,10 +15,10 @@ These are Mojo built-ins, so you don't need to import them. """ -from collections import Set, List +from collections import List, Set -from utils._visualizers import lldb_formatter_wrapping_type from utils._select import _select_register_value +from utils._visualizers import lldb_formatter_wrapping_type # ===----------------------------------------------------------------------=== # # Boolable diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 80e4b61185..c50a2006a5 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -17,7 +17,6 @@ These are Mojo built-ins, so you don't need to import them. from memory import Pointer, UnsafePointer - # ===----------------------------------------------------------------------===# # ListLiteral # ===----------------------------------------------------------------------===# diff --git a/stdlib/src/builtin/debug_assert.mojo b/stdlib/src/builtin/debug_assert.mojo index 86f58ecb44..25d3d8b4e5 100644 --- a/stdlib/src/builtin/debug_assert.mojo +++ b/stdlib/src/builtin/debug_assert.mojo @@ -17,21 +17,21 @@ These are Mojo built-ins, so you don't need to import them. from os import abort -from sys import is_nvidia_gpu, is_gpu, llvm_intrinsic +from sys import is_gpu, is_nvidia_gpu, llvm_intrinsic from sys._build import is_debug_build +from sys.ffi import c_char, c_size_t, c_uint, external_call from sys.param_env import env_get_string -from sys.ffi import external_call, c_uint, c_size_t, c_char + +from builtin._location import __call_location, _SourceLocation from memory import UnsafePointer + +from utils import Span from utils.write import ( + _ArgBytes, _WriteBufferHeap, _WriteBufferStack, - _ArgBytes, write_args, ) -from utils import Span - - -from builtin._location import __call_location, _SourceLocation alias defined_mode = env_get_string["ASSERT", "safe"]() diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index 09afc140d9..acdd3eba30 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -17,7 +17,7 @@ These are Mojo built-ins, so you don't need to import them. from collections import KeyElement from hashlib._hasher import _HashableWithHasher, _Hasher -from sys import sizeof, bitwidthof, os_is_windows +from sys import bitwidthof, os_is_windows, sizeof alias _mIsSigned = UInt8(1) alias _mIsInteger = UInt8(1 << 7) diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index 99e4d6a917..3185adc6b9 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -34,10 +34,11 @@ with open("my_file.txt", "r") as f: from os import PathLike, abort from sys import external_call, sizeof from sys.ffi import OpaquePointer -from utils import Span, StringRef, StringSlice, write_buffered from memory import AddressSpace, UnsafePointer +from utils import Span, StringRef, StringSlice, write_buffered + @register_passable struct _OwnedStringRef(Boolable): diff --git a/stdlib/src/builtin/file_descriptor.mojo b/stdlib/src/builtin/file_descriptor.mojo index 76c2512dad..2843c9dcbf 100644 --- a/stdlib/src/builtin/file_descriptor.mojo +++ b/stdlib/src/builtin/file_descriptor.mojo @@ -23,12 +23,14 @@ f.close() ``` """ -from utils import Span -from builtin.io import _printf from sys.ffi import external_call from sys.info import is_gpu + +from builtin.io import _printf from memory import UnsafePointer +from utils import Span + @value @register_passable("trivial") diff --git a/stdlib/src/builtin/format_int.mojo b/stdlib/src/builtin/format_int.mojo index 940ac43683..efdc0015c5 100644 --- a/stdlib/src/builtin/format_int.mojo +++ b/stdlib/src/builtin/format_int.mojo @@ -16,9 +16,10 @@ These are Mojo built-ins, so you don't need to import them. """ +from collections import InlineArray, List, Optional from os import abort -from collections import List, Optional, InlineArray -from utils import StringSlice, StaticString + +from utils import StaticString, StringSlice alias _DEFAULT_DIGIT_CHARS = "0123456789abcdefghijklmnopqrstuvwxyz" diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 2e50208ea7..4d7e18dbac 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -16,23 +16,23 @@ These are Mojo built-ins, so you don't need to import them. """ from collections import KeyElement - -from math import Ceilable, CeilDivable, Floorable, Truncable -from hashlib.hash import _hash_simd -from hashlib._hasher import _HashableWithHasher, _Hasher -from builtin.io import _snprintf from collections.string import ( _calc_initial_buffer_size_int32, _calc_initial_buffer_size_int64, ) +from hashlib._hasher import _HashableWithHasher, _Hasher +from hashlib.hash import _hash_simd +from math import Ceilable, CeilDivable, Floorable, Truncable +from sys import bitwidthof + +from builtin.io import _snprintf +from memory import UnsafePointer from python import Python, PythonObject from python._cpython import Py_ssize_t -from memory import UnsafePointer from utils import Writable, Writer -from utils._visualizers import lldb_formatter_wrapping_type from utils._select import _select_register_value as select -from sys import bitwidthof +from utils._visualizers import lldb_formatter_wrapping_type # ===----------------------------------------------------------------------=== # # Indexer diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index 9efa7ae54a..259f065987 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -15,25 +15,31 @@ These are Mojo built-ins, so you don't need to import them. """ +from collections import InlineArray +from sys import _libc as libc from sys import ( bitwidthof, external_call, - stdout, - is_nvidia_gpu, is_amd_gpu, is_gpu, - _libc as libc, + is_nvidia_gpu, + stdout, ) from sys._libc import dup, fclose, fdopen, fflush from sys.ffi import OpaquePointer -from utils import Span, write_buffered, write_args -from collections import InlineArray from builtin.dtype import _get_dtype_printf_format from builtin.file_descriptor import FileDescriptor from memory import UnsafePointer, memcpy -from utils import StringRef, StaticString, StringSlice +from utils import ( + Span, + StaticString, + StringRef, + StringSlice, + write_args, + write_buffered, +) # ===----------------------------------------------------------------------=== # # _file_handle diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index 0936da0cb1..1eb57a4acb 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -16,10 +16,10 @@ These are Mojo built-ins, so you don't need to import them. """ from collections import Dict, List -from sys.intrinsics import _type_is_eq from sys.ffi import OpaquePointer +from sys.intrinsics import _type_is_eq -from memory import ArcPointer, memcmp, memcpy, UnsafePointer +from memory import ArcPointer, UnsafePointer, memcmp, memcpy from utils import StringRef, Variant diff --git a/stdlib/src/builtin/range.mojo b/stdlib/src/builtin/range.mojo index 345c2124a4..587b859e16 100644 --- a/stdlib/src/builtin/range.mojo +++ b/stdlib/src/builtin/range.mojo @@ -16,12 +16,14 @@ These are Mojo built-ins, so you don't need to import them. """ +from math import ceildiv + # FIXME(MOCO-658): Explicit conformance to these traits shouldn't be needed. from builtin._stubs import _IntIterable, _StridedIterable, _UIntStridedIterable from python import ( PythonObject, ) # TODO: remove this and fixup downstream imports -from math import ceildiv + from utils._select import _select_register_value as select # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 14e7075d53..93d37cd554 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -16,38 +16,43 @@ These are Mojo built-ins, so you don't need to import them. """ import math +from collections import InlineArray +from collections.string import ( + _calc_format_buffer_size, + _calc_initial_buffer_size, +) +from hashlib._hasher import _HashableWithHasher, _Hasher +from hashlib.hash import _hash_simd +from math import Ceilable, CeilDivable, Floorable, Truncable from math.math import _call_ptx_intrinsic +from os import abort from sys import ( PrefetchOptions, _RegisterPackType, + alignof, + bitwidthof, has_neon, + is_amd_gpu, + is_gpu, + is_nvidia_gpu, is_x86, llvm_intrinsic, prefetch, simdwidthof, - is_nvidia_gpu, - is_gpu, - is_amd_gpu, - bitwidthof, + sizeof, ) -from sys.info import _current_arch, _is_sm_8x, _is_sm_9x - from sys._assembly import inlined_assembly -from os import abort +from sys.info import _current_arch, _is_sm_8x, _is_sm_9x from bit import pop_count -from documentation import doc_private -from math import Ceilable, CeilDivable, Floorable, Truncable +from builtin._format_float import _write_float from builtin.dtype import _uint_type_of_width -from hashlib.hash import _hash_simd -from hashlib._hasher import _HashableWithHasher, _Hasher from builtin.format_int import _try_write_int -from builtin._format_float import _write_float from builtin.io import _snprintf -from collections import InlineArray -from memory import bitcast, UnsafePointer +from documentation import doc_private +from memory import UnsafePointer, bitcast -from utils import StringSlice, StaticTuple, IndexList, Span +from utils import IndexList, Span, StaticTuple, StringSlice from utils._visualizers import lldb_formatter_wrapping_type from utils.numerics import FPUtils from utils.numerics import isnan as _isnan @@ -56,17 +61,12 @@ from utils.numerics import max_or_inf as _max_or_inf from utils.numerics import min_finite as _min_finite from utils.numerics import min_or_neg_inf as _min_or_neg_inf from utils.numerics import nan as _nan -from sys import sizeof, alignof from .dtype import ( _get_dtype_printf_format, _integral_type_of, - _unsigned_integral_type_of, _scientific_notation_digits, -) -from collections.string import ( - _calc_format_buffer_size, - _calc_initial_buffer_size, + _unsigned_integral_type_of, ) # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/builtin/sort.mojo b/stdlib/src/builtin/sort.mojo index 8e2f0aadbe..093cc41914 100644 --- a/stdlib/src/builtin/sort.mojo +++ b/stdlib/src/builtin/sort.mojo @@ -16,11 +16,12 @@ These are Mojo built-ins, so you don't need to import them. """ from collections import List -from sys import bitwidthof from math import ceil +from sys import bitwidthof from bit import count_leading_zeros from memory import UnsafePointer + from utils import Span # ===----------------------------------------------------------------------===# diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index c6859b4f04..367047a85c 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -15,19 +15,16 @@ These are Mojo built-ins, so you don't need to import them. """ -from sys.ffi import c_char - -from memory import memcpy, UnsafePointer from collections import List from hashlib._hasher import _HashableWithHasher, _Hasher -from utils import StringRef, Span, StringSlice, StaticString -from utils import Writable, Writer +from sys.ffi import c_char + +from memory import UnsafePointer, memcpy + +from utils import Span, StaticString, StringRef, StringSlice, Writable, Writer from utils._visualizers import lldb_formatter_wrapping_type from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry -from utils.string_slice import ( - _StringSliceIter, - _to_string_list, -) +from utils.string_slice import _StringSliceIter, _to_string_list # ===----------------------------------------------------------------------===# # StringLiteral diff --git a/stdlib/src/builtin/tuple.mojo b/stdlib/src/builtin/tuple.mojo index 698a73286e..6d7f45a029 100644 --- a/stdlib/src/builtin/tuple.mojo +++ b/stdlib/src/builtin/tuple.mojo @@ -16,6 +16,7 @@ These are Mojo built-ins, so you don't need to import them. """ from sys.intrinsics import _type_is_eq + from memory import UnsafePointer from utils._visualizers import lldb_formatter_wrapping_type diff --git a/stdlib/src/builtin/uint.mojo b/stdlib/src/builtin/uint.mojo index 2c0f3f7de9..cb3de1bcb5 100644 --- a/stdlib/src/builtin/uint.mojo +++ b/stdlib/src/builtin/uint.mojo @@ -15,11 +15,13 @@ These are Mojo built-ins, so you don't need to import them. """ +from hashlib._hasher import _HashableWithHasher, _Hasher +from hashlib.hash import _hash_simd from sys import bitwidthof -from utils._visualizers import lldb_formatter_wrapping_type + from documentation import doc_private -from hashlib.hash import _hash_simd -from hashlib._hasher import _HashableWithHasher, _Hasher + +from utils._visualizers import lldb_formatter_wrapping_type @lldb_formatter_wrapping_type diff --git a/stdlib/src/collections/counter.mojo b/stdlib/src/collections/counter.mojo index e6000ce5fb..a4a2ac1df3 100644 --- a/stdlib/src/collections/counter.mojo +++ b/stdlib/src/collections/counter.mojo @@ -18,7 +18,8 @@ You can import these APIs from the `collections` package. For example: from collections import Counter ``` """ -from collections.dict import Dict, _DictKeyIter, _DictValueIter, _DictEntryIter +from collections.dict import Dict, _DictEntryIter, _DictKeyIter, _DictValueIter + from utils import Variant diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index 5af332c273..37ec9d97bf 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -21,10 +21,10 @@ from collections import Deque ``` """ -from bit import bit_ceil from collections import Optional -from memory import UnsafePointer +from bit import bit_ceil +from memory import UnsafePointer # ===----------------------------------------------------------------------===# # Deque diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index e6c8c2a821..0e545e8a87 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -31,12 +31,13 @@ value types must always be Movable so we can resize the dictionary as it grows. See the `Dict` docs for more details. """ +from sys.ffi import OpaquePointer + +from bit import is_power_of_two from builtin.value import StringableCollectionElement +from memory import UnsafePointer, bitcast, memcpy from .optional import Optional -from bit import is_power_of_two -from sys.ffi import OpaquePointer -from memory import memcpy, bitcast, UnsafePointer trait KeyElement(CollectionElement, Hashable, EqualityComparable): diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index b1c833b75c..9112e51818 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -21,6 +21,7 @@ from collections import InlineArray from collections._index_normalization import normalize_index from sys.intrinsics import _type_is_eq + from memory import UnsafePointer from memory.maybe_uninitialized import UnsafeMaybeUninitialized diff --git a/stdlib/src/collections/inline_list.mojo b/stdlib/src/collections/inline_list.mojo index 9d5610ff36..01486e07ed 100644 --- a/stdlib/src/collections/inline_list.mojo +++ b/stdlib/src/collections/inline_list.mojo @@ -20,6 +20,7 @@ from collections import InlineList """ from sys.intrinsics import _type_is_eq + from memory.maybe_uninitialized import UnsafeMaybeUninitialized diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 1ed439c040..b3442b1228 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -20,10 +20,12 @@ from collections import List """ -from sys.intrinsics import _type_is_eq -from sys import sizeof from os import abort +from sys import sizeof +from sys.intrinsics import _type_is_eq + from memory import Pointer, UnsafePointer, memcpy + from utils import Span from .optional import Optional diff --git a/stdlib/src/collections/optional.mojo b/stdlib/src/collections/optional.mojo index 2bcaf9ea8e..eb019dd463 100644 --- a/stdlib/src/collections/optional.mojo +++ b/stdlib/src/collections/optional.mojo @@ -32,6 +32,7 @@ print(d) # prints 2 """ from os import abort + from utils import Variant diff --git a/stdlib/src/collections/set.mojo b/stdlib/src/collections/set.mojo index 10451bc126..500e4c73b2 100644 --- a/stdlib/src/collections/set.mojo +++ b/stdlib/src/collections/set.mojo @@ -15,9 +15,9 @@ from .dict import ( Dict, KeyElement, + RepresentableKeyElement, _DictEntryIter, _DictKeyIter, - RepresentableKeyElement, ) diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index 55c4da1b0e..1b38236b10 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -17,41 +17,40 @@ These are Mojo built-ins, so you don't need to import them. from collections import KeyElement, List, Optional from collections._index_normalization import normalize_index +from hashlib._hasher import _HashableWithHasher, _Hasher from sys import bitwidthof, llvm_intrinsic from sys.ffi import c_char -from utils import StaticString, write_args +from sys.intrinsics import _type_is_eq from bit import count_leading_zeros from memory import UnsafePointer, memcmp, memcpy from python import PythonObject -from sys.intrinsics import _type_is_eq -from hashlib._hasher import _HashableWithHasher, _Hasher - from utils import ( - Span, IndexList, + Span, + StaticString, StringRef, StringSlice, Variant, Writable, Writer, + write_args, ) -from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry -from utils.string_slice import ( - _utf8_byte_type, - _StringSliceIter, - _unicode_codepoint_utf8_byte_length, - _shift_unicode_to_utf8, - _to_string_list, -) - from utils._unicode import ( is_lowercase, is_uppercase, to_lowercase, to_uppercase, ) +from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry +from utils.string_slice import ( + _shift_unicode_to_utf8, + _StringSliceIter, + _to_string_list, + _unicode_codepoint_utf8_byte_length, + _utf8_byte_type, +) # ===----------------------------------------------------------------------=== # # ord diff --git a/stdlib/src/collections/vector.mojo b/stdlib/src/collections/vector.mojo index 8812b4b61c..1dc60fcc76 100644 --- a/stdlib/src/collections/vector.mojo +++ b/stdlib/src/collections/vector.mojo @@ -19,9 +19,10 @@ from collections import InlinedFixedVector ``` """ -from memory import Pointer, UnsafePointer, memcpy from sys import sizeof +from memory import Pointer, UnsafePointer, memcpy + from utils import StaticTuple # ===----------------------------------------------------------------------===# diff --git a/stdlib/src/hashlib/__init__.mojo b/stdlib/src/hashlib/__init__.mojo index 2bdc949799..9de67db15d 100644 --- a/stdlib/src/hashlib/__init__.mojo +++ b/stdlib/src/hashlib/__init__.mojo @@ -11,4 +11,4 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # """Implements the hashlib package that provides various hash algorithms.""" -from .hash import hash, Hashable +from .hash import Hashable, hash diff --git a/stdlib/src/hashlib/_ahash.mojo b/stdlib/src/hashlib/_ahash.mojo index 0845dc8d58..9adb7d08e0 100644 --- a/stdlib/src/hashlib/_ahash.mojo +++ b/stdlib/src/hashlib/_ahash.mojo @@ -11,10 +11,10 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from bit import byte_swap -from bit import rotate_bits_left +from bit import byte_swap, rotate_bits_left from memory import UnsafePointer -from ._hasher import _Hasher, _HashableWithHasher + +from ._hasher import _HashableWithHasher, _Hasher alias U256 = SIMD[DType.uint64, 4] alias U128 = SIMD[DType.uint64, 2] diff --git a/stdlib/src/hashlib/_hasher.mojo b/stdlib/src/hashlib/_hasher.mojo index 7bd278d5e9..e29257a9e0 100644 --- a/stdlib/src/hashlib/_hasher.mojo +++ b/stdlib/src/hashlib/_hasher.mojo @@ -11,9 +11,10 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from ._ahash import AHasher from memory import UnsafePointer +from ._ahash import AHasher + trait _HashableWithHasher: fn __hash__[H: _Hasher](self, inout hasher: H): diff --git a/stdlib/src/hashlib/hash.mojo b/stdlib/src/hashlib/hash.mojo index 84f3a82a58..5eddfc21b8 100644 --- a/stdlib/src/hashlib/hash.mojo +++ b/stdlib/src/hashlib/hash.mojo @@ -26,13 +26,12 @@ There are a few main tools in this module: """ import random - -from sys.ffi import _Global -from sys import simdwidthof, bitwidthof from collections import InlineArray +from sys import bitwidthof, simdwidthof +from sys.ffi import _Global from builtin.dtype import _uint_type_of_width -from memory import memcpy, memset_zero, stack_allocation, bitcast, UnsafePointer +from memory import UnsafePointer, bitcast, memcpy, memset_zero, stack_allocation # ===----------------------------------------------------------------------=== # # Implementation diff --git a/stdlib/src/math/__init__.mojo b/stdlib/src/math/__init__.mojo index 3a9e67e7c7..54b918a837 100644 --- a/stdlib/src/math/__init__.mojo +++ b/stdlib/src/math/__init__.mojo @@ -15,7 +15,7 @@ # In Python, these are in the math module, so we also expose them here. from utils.numerics import inf, isfinite, isinf, isnan, nan, nextafter, ulp -from .constants import pi, e, tau +from .constants import e, pi, tau # These are not part of Python's `math` module, but we define them here. from .math import ( @@ -36,6 +36,7 @@ from .math import ( cbrt, ceil, ceildiv, + clamp, copysign, cos, cosh, @@ -53,19 +54,20 @@ from .math import ( hypot, iota, isclose, + isqrt, j0, j1, lcm, ldexp, lgamma, log, - log10, log1p, log2, + log10, logb, modf, + recip, remainder, - isqrt, scalb, sin, sinh, @@ -75,6 +77,4 @@ from .math import ( trunc, y0, y1, - clamp, - recip, ) diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 0ada40bdfe..98ff2cca07 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -20,24 +20,23 @@ from math import floor """ from collections import List -from sys._assembly import inlined_assembly -from sys.ffi import _external_call_const from sys import ( - llvm_intrinsic, bitwidthof, has_avx512f, - simdwidthof, - is_nvidia_gpu, is_amd_gpu, + is_nvidia_gpu, + llvm_intrinsic, + simdwidthof, sizeof, ) - -from memory import UnsafePointer +from sys._assembly import inlined_assembly +from sys.ffi import _external_call_const +from sys.info import _current_arch from bit import count_trailing_zeros from builtin.dtype import _integral_type_of -from builtin.simd import _simd_apply, _modf -from sys.info import _current_arch +from builtin.simd import _modf, _simd_apply +from memory import UnsafePointer from utils import Span from utils.index import IndexList diff --git a/stdlib/src/memory/memory.mojo b/stdlib/src/memory/memory.mojo index 8f03fd2fb9..1cbf5c43d3 100644 --- a/stdlib/src/memory/memory.mojo +++ b/stdlib/src/memory/memory.mojo @@ -20,17 +20,18 @@ from memory import memcmp """ +from collections import Optional +from sys import _libc as libc from sys import ( alignof, - llvm_intrinsic, - sizeof, - is_gpu, external_call, - simdwidthof, + is_gpu, + llvm_intrinsic, simdbitwidth, - _libc as libc, + simdwidthof, + sizeof, ) -from collections import Optional + from memory.pointer import AddressSpace, _GPUAddressSpace # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/memory/owned_pointer.mojo b/stdlib/src/memory/owned_pointer.mojo index 597375cbf4..71c4c963eb 100644 --- a/stdlib/src/memory/owned_pointer.mojo +++ b/stdlib/src/memory/owned_pointer.mojo @@ -10,7 +10,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -from memory import UnsafePointer, stack_allocation, memcpy +from memory import UnsafePointer, memcpy, stack_allocation struct OwnedPointer[T: AnyType]: diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index 5f37054609..22fede2402 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -19,7 +19,7 @@ from memory import UnsafePointer ``` """ -from sys import alignof, sizeof, is_nvidia_gpu, is_gpu +from sys import alignof, is_gpu, is_nvidia_gpu, sizeof from sys.intrinsics import ( _mlirtype_is_eq, _type_is_eq, @@ -32,7 +32,6 @@ from sys.intrinsics import ( from bit import is_power_of_two from memory.memory import _free, _malloc - # ===----------------------------------------------------------------------=== # # UnsafePointer # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/os/__init__.mojo b/stdlib/src/os/__init__.mojo index b55400cad3..c07761b658 100644 --- a/stdlib/src/os/__init__.mojo +++ b/stdlib/src/os/__init__.mojo @@ -22,11 +22,11 @@ from .os import ( abort, getuid, listdir, - mkdir, makedirs, + mkdir, remove, - rmdir, removedirs, + rmdir, sep, unlink, ) diff --git a/stdlib/src/os/_linux_x86.mojo b/stdlib/src/os/_linux_x86.mojo index d2872d8a1a..7fec00bfdf 100644 --- a/stdlib/src/os/_linux_x86.mojo +++ b/stdlib/src/os/_linux_x86.mojo @@ -11,9 +11,9 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from time.time import _CTimeSpec from collections import InlineArray from sys.ffi import external_call +from time.time import _CTimeSpec from .fstat import stat_result diff --git a/stdlib/src/os/atomic.mojo b/stdlib/src/os/atomic.mojo index 90a1952246..3d7cb39bd8 100644 --- a/stdlib/src/os/atomic.mojo +++ b/stdlib/src/os/atomic.mojo @@ -19,9 +19,10 @@ from os import Atomic ``` """ +from sys.info import is_nvidia_gpu + from builtin.dtype import _integral_type_of, _unsigned_integral_type_of from memory import UnsafePointer, bitcast -from sys.info import is_nvidia_gpu struct Atomic[type: DType]: diff --git a/stdlib/src/os/env.mojo b/stdlib/src/os/env.mojo index 0556389882..9ffe0eb2d8 100644 --- a/stdlib/src/os/env.mojo +++ b/stdlib/src/os/env.mojo @@ -23,6 +23,7 @@ from sys import external_call, os_is_linux, os_is_macos, os_is_windows from sys.ffi import c_int from memory import UnsafePointer + from utils import StringRef diff --git a/stdlib/src/os/os.mojo b/stdlib/src/os/os.mojo index 1678cc89e6..86c793fa6b 100644 --- a/stdlib/src/os/os.mojo +++ b/stdlib/src/os/os.mojo @@ -19,11 +19,12 @@ from os import listdir ``` """ -from collections import List, InlineArray -from sys import os_is_linux, os_is_windows, is_gpu, external_call -from sys.ffi import c_char, OpaquePointer +from collections import InlineArray, List +from sys import external_call, is_gpu, os_is_linux, os_is_windows +from sys.ffi import OpaquePointer, c_char from memory import UnsafePointer + from utils import StringRef from .path import isdir, split diff --git a/stdlib/src/os/path/__init__.mojo b/stdlib/src/os/path/__init__.mojo index edf3b394af..ef6694482a 100644 --- a/stdlib/src/os/path/__init__.mojo +++ b/stdlib/src/os/path/__init__.mojo @@ -12,8 +12,8 @@ # ===----------------------------------------------------------------------=== # from .path import ( - dirname, basename, + dirname, exists, expanduser, expandvars, @@ -22,7 +22,7 @@ from .path import ( isfile, islink, join, + lexists, split, splitroot, - lexists, ) diff --git a/stdlib/src/os/path/path.mojo b/stdlib/src/os/path/path.mojo index 839e66f890..3840a97fac 100644 --- a/stdlib/src/os/path/path.mojo +++ b/stdlib/src/os/path/path.mojo @@ -19,9 +19,11 @@ from os.path import isdir ``` """ -from collections import List, InlineArray +from collections import InlineArray, List +from pwd import getpwuid from stat import S_ISDIR, S_ISLNK, S_ISREG from sys import has_neon, os_is_linux, os_is_macos, os_is_windows + from utils import Span, StringSlice from .. import PathLike @@ -31,10 +33,9 @@ from .._linux_x86 import _lstat as _lstat_linux_x86 from .._linux_x86 import _stat as _stat_linux_x86 from .._macos import _lstat as _lstat_macos from .._macos import _stat as _stat_macos +from ..env import getenv from ..fstat import stat from ..os import sep -from ..env import getenv -from pwd import getpwuid # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/pathlib/path.mojo b/stdlib/src/pathlib/path.mojo index 0d4449d405..5e47d0d846 100644 --- a/stdlib/src/pathlib/path.mojo +++ b/stdlib/src/pathlib/path.mojo @@ -15,14 +15,13 @@ import os from collections import List +from hashlib._hasher import _HashableWithHasher, _Hasher from os import PathLike, listdir, stat_result -from sys import os_is_windows, external_call +from sys import external_call, os_is_windows from sys.ffi import c_char from builtin._location import __call_location, _SourceLocation -from memory import stack_allocation, UnsafePointer - -from hashlib._hasher import _HashableWithHasher, _Hasher +from memory import UnsafePointer, stack_allocation from utils import StringRef diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index 5592ec2663..d66496d91a 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -14,8 +14,23 @@ that are automatically imported into every Mojo program. """ -from builtin.anytype import UnknownDestructibility, AnyType -from builtin.bool import Boolable, ImplicitlyBoolable, Bool, bool, any, all +from collections import KeyElement, List +from collections.string import ( + String, + ascii, + atof, + atol, + chr, + isdigit, + islower, + isprintable, + isupper, + ord, +) +from hashlib.hash import Hashable, hash + +from builtin.anytype import AnyType, UnknownDestructibility +from builtin.bool import Bool, Boolable, ImplicitlyBoolable, all, any, bool from builtin.breakpoint import breakpoint from builtin.builtin_list import ( ListLiteral, @@ -26,38 +41,38 @@ from builtin.builtin_list import ( from builtin.builtin_slice import Slice, slice from builtin.comparable import Comparable from builtin.constrained import constrained -from builtin.coroutine import Coroutine, RaisingCoroutine, AnyCoroutine +from builtin.coroutine import AnyCoroutine, Coroutine, RaisingCoroutine from builtin.debug_assert import debug_assert from builtin.dtype import DType from builtin.equality_comparable import EqualityComparable from builtin.error import Error -from builtin.file import open, FileHandle +from builtin.file import FileHandle, open from builtin.file_descriptor import FileDescriptor from builtin.float_literal import FloatLiteral from builtin.floatable import Floatable, FloatableRaising, float from builtin.format_int import bin, hex, oct from builtin.identifiable import Identifiable, StringableIdentifiable from builtin.int import ( + Indexer, Int, - IntLike, Intable, IntableRaising, - Indexer, + IntLike, index, int, ) from builtin.int_literal import IntLiteral -from builtin.io import print, input -from builtin.len import Sized, UIntSized, SizedRaising, len +from builtin.io import input, print +from builtin.len import Sized, SizedRaising, UIntSized, len from builtin.math import ( Absable, + Powable, + Roundable, abs, divmod, max, min, - Powable, pow, - Roundable, round, ) from builtin.none import NoneType @@ -66,72 +81,55 @@ from builtin.range import range from builtin.rebind import rebind from builtin.repr import Representable, repr from builtin.reversed import ReversibleRange, reversed -from builtin.sort import sort, partition +from builtin.simd import ( + SIMD, + BFloat16, + Byte, + Float16, + Float32, + Float64, + Int8, + Int16, + Int32, + Int64, + Scalar, + UInt8, + UInt16, + UInt32, + UInt64, +) +from builtin.sort import partition, sort from builtin.str import Stringable, StringableRaising, str from builtin.string_literal import StringLiteral from builtin.swap import swap -from builtin.tuple import ( - Tuple, -) +from builtin.tuple import Tuple from builtin.type_aliases import ( AnyTrivialRegType, - ImmutableOrigin, - MutableOrigin, ImmutableAnyOrigin, + ImmutableOrigin, MutableAnyOrigin, - StaticConstantOrigin, - OriginSet, + MutableOrigin, Origin, + OriginSet, + StaticConstantOrigin, ) from builtin.uint import UInt from builtin.value import ( - Movable, - Copyable, - ExplicitlyCopyable, - Defaultable, + BoolableCollectionElement, + BoolableKeyElement, + BytesCollectionElement, CollectionElement, CollectionElementNew, - BytesCollectionElement, - StringableCollectionElement, - EqualityComparableCollectionElement, ComparableCollectionElement, + Copyable, + Defaultable, + EqualityComparableCollectionElement, + ExplicitlyCopyable, + Movable, RepresentableCollectionElement, - BoolableKeyElement, - BoolableCollectionElement, -) -from builtin.simd import ( - Scalar, - Int8, - UInt8, - Int16, - UInt16, - Int32, - UInt32, - Int64, - UInt64, - BFloat16, - Float16, - Float32, - Float64, - Byte, - SIMD, + StringableCollectionElement, ) -from builtin.type_aliases import AnyTrivialRegType +from documentation import doc_private +from memory import AddressSpace, Pointer -from collections import KeyElement, List -from collections.string import ( - String, - ord, - chr, - ascii, - atol, - atof, - isdigit, - isupper, - islower, - isprintable, -) -from hashlib.hash import hash, Hashable -from memory import Pointer, AddressSpace from utils import AsBytes, Writable, Writer -from documentation import doc_private diff --git a/stdlib/src/pwd/__init__.mojo b/stdlib/src/pwd/__init__.mojo index a62388303c..088bffae14 100644 --- a/stdlib/src/pwd/__init__.mojo +++ b/stdlib/src/pwd/__init__.mojo @@ -12,4 +12,4 @@ # ===----------------------------------------------------------------------=== # """Implements the pwd package.""" -from .pwd import getpwuid, getpwnam +from .pwd import getpwnam, getpwuid diff --git a/stdlib/src/pwd/_linux.mojo b/stdlib/src/pwd/_linux.mojo index d2ed4175a7..2c485aa5e7 100644 --- a/stdlib/src/pwd/_linux.mojo +++ b/stdlib/src/pwd/_linux.mojo @@ -10,10 +10,12 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -from .pwd import Passwd -from memory import UnsafePointer from sys.ffi import c_char, external_call +from memory import UnsafePointer + +from .pwd import Passwd + alias uid_t = Int32 alias gid_t = Int32 alias char = UnsafePointer[c_char] diff --git a/stdlib/src/pwd/_macos.mojo b/stdlib/src/pwd/_macos.mojo index 9908504d97..5958ab1a58 100644 --- a/stdlib/src/pwd/_macos.mojo +++ b/stdlib/src/pwd/_macos.mojo @@ -10,10 +10,12 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -from .pwd import Passwd -from memory import UnsafePointer from sys.ffi import c_char, external_call +from memory import UnsafePointer + +from .pwd import Passwd + alias uid_t = Int32 alias gid_t = Int32 alias time_t = Int diff --git a/stdlib/src/pwd/pwd.mojo b/stdlib/src/pwd/pwd.mojo index 0bc26698d1..a6342d42b4 100644 --- a/stdlib/src/pwd/pwd.mojo +++ b/stdlib/src/pwd/pwd.mojo @@ -11,12 +11,13 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # +from sys import os_is_linux, os_is_macos, os_is_windows + # ===----------------------------------------------------------------------=== # # Passwd # ===----------------------------------------------------------------------=== # from ._linux import _getpw_linux from ._macos import _getpw_macos -from sys import os_is_windows, os_is_macos, os_is_linux @value diff --git a/stdlib/src/python/__init__.mojo b/stdlib/src/python/__init__.mojo index c91813320c..f8d0d9d73c 100644 --- a/stdlib/src/python/__init__.mojo +++ b/stdlib/src/python/__init__.mojo @@ -12,5 +12,5 @@ # ===----------------------------------------------------------------------=== # """Implements the python package.""" -from .python_object import PythonObject, TypedPythonObject from .python import Python +from .python_object import PythonObject, TypedPythonObject diff --git a/stdlib/src/python/_bindings.mojo b/stdlib/src/python/_bindings.mojo index 4046ca5f50..2921ebb3bd 100644 --- a/stdlib/src/python/_bindings.mojo +++ b/stdlib/src/python/_bindings.mojo @@ -11,28 +11,25 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from memory import UnsafePointer - +from collections import Optional +from os import abort from sys.ffi import c_int from sys.info import sizeof -from os import abort - -from collections import Optional - +from memory import UnsafePointer from python import PythonObject, TypedPythonObject -from python.python import _get_global_python_itf from python._cpython import ( + Py_TPFLAGS_DEFAULT, + PyCFunction, + PyMethodDef, PyObject, PyObjectPtr, - PyCFunction, - PyType_Spec, PyType_Slot, - PyMethodDef, - Py_TPFLAGS_DEFAULT, - newfunc, + PyType_Spec, destructor, + newfunc, ) +from python.python import _get_global_python_itf trait ConvertibleFromPython(CollectionElement): diff --git a/stdlib/src/python/_cpython.mojo b/stdlib/src/python/_cpython.mojo index ef437a3d06..defbd9d4b9 100644 --- a/stdlib/src/python/_cpython.mojo +++ b/stdlib/src/python/_cpython.mojo @@ -18,7 +18,7 @@ Documentation for these functions can be found online at: """ from collections import InlineArray, Optional -from os import getenv, setenv, abort +from os import abort, getenv, setenv from os.path import dirname from pathlib import Path from sys import external_call @@ -34,14 +34,12 @@ from sys.ffi import ( c_uint, ) -from python.python import _get_global_python_itf -from python._bindings import Typed_initproc, PyMojoObject, Pythonable - from memory import UnsafePointer +from python._bindings import PyMojoObject, Pythonable, Typed_initproc +from python.python import _get_global_python_itf from utils import StringRef, StringSlice - # ===-----------------------------------------------------------------------===# # Raw Bindings # ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/python/python.mojo b/stdlib/src/python/python.mojo index 990daaf583..80437fc9e2 100644 --- a/stdlib/src/python/python.mojo +++ b/stdlib/src/python/python.mojo @@ -28,14 +28,14 @@ from memory import UnsafePointer from utils import StringRef -from .python_object import PythonObject, TypedPythonObject from ._cpython import ( CPython, Py_eval_input, Py_file_input, - PyMethodDef, Py_ssize_t, + PyMethodDef, ) +from .python_object import PythonObject, TypedPythonObject alias _PYTHON_GLOBAL = _Global["Python", _PythonGlobal, _init_python_global] diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index 151336f510..a579696179 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -19,17 +19,17 @@ from python import PythonObject ``` """ +from collections import Dict +from hashlib._hasher import _HashableWithHasher, _Hasher +from sys.ffi import c_ssize_t from sys.intrinsics import _type_is_eq from memory import UnsafePointer -from collections import Dict -from utils import StringRef -from hashlib._hasher import _HashableWithHasher, _Hasher +from utils import StringRef from ._cpython import CPython, PyObjectPtr from .python import Python, _get_global_python_itf -from sys.ffi import c_ssize_t struct _PyIter(Sized): diff --git a/stdlib/src/random/random.mojo b/stdlib/src/random/random.mojo index 37461dd625..e536c6f533 100644 --- a/stdlib/src/random/random.mojo +++ b/stdlib/src/random/random.mojo @@ -19,13 +19,14 @@ from random import seed ``` """ +import math +from collections import List, Optional +from math import floor from sys import bitwidthof, external_call from sys.ffi import OpaquePointer from time import perf_counter_ns -from collections import Optional, List + from memory import UnsafePointer -from math import floor -import math fn _get_random_state() -> OpaquePointer: diff --git a/stdlib/src/sys/__init__.mojo b/stdlib/src/sys/__init__.mojo index 1323b94f86..baf2af6fa7 100644 --- a/stdlib/src/sys/__init__.mojo +++ b/stdlib/src/sys/__init__.mojo @@ -19,6 +19,7 @@ from .ffi import DEFAULT_RTLD, RTLD, DLHandle, external_call from .info import ( alignof, bitwidthof, + has_amd_gpu, has_avx, has_avx2, has_avx512f, @@ -27,15 +28,19 @@ from .info import ( has_neon, has_neon_int8_dotprod, has_neon_int8_matmul, + has_nvidia_gpu, has_sse4, has_vnni, + is_amd_gpu, is_apple_m1, is_apple_m2, is_apple_m3, is_apple_silicon, is_big_endian, + is_gpu, is_little_endian, is_neoverse_n1, + is_nvidia_gpu, is_x86, num_logical_cores, num_performance_cores, @@ -47,11 +52,6 @@ from .info import ( simdbytewidth, simdwidthof, sizeof, - is_nvidia_gpu, - is_amd_gpu, - is_gpu, - has_amd_gpu, - has_nvidia_gpu, ) from .intrinsics import ( PrefetchCache, @@ -69,5 +69,5 @@ from .intrinsics import ( strided_load, strided_store, ) -from .param_env import env_get_int, env_get_string, env_get_bool, is_defined +from .param_env import env_get_bool, env_get_int, env_get_string, is_defined from .terminate import exit diff --git a/stdlib/src/sys/_libc.mojo b/stdlib/src/sys/_libc.mojo index a76a1e47d1..6751a60e62 100644 --- a/stdlib/src/sys/_libc.mojo +++ b/stdlib/src/sys/_libc.mojo @@ -17,10 +17,10 @@ C standard library counterparts. These are used to implement higher level functionality in the rest of the Mojo standard library. """ -from memory import UnsafePointer from sys import os_is_windows -from sys.ffi import c_char, c_int, OpaquePointer +from sys.ffi import OpaquePointer, c_char, c_int +from memory import UnsafePointer # ===----------------------------------------------------------------------===# # stdlib.h — core C standard library operations diff --git a/stdlib/src/sys/ffi.mojo b/stdlib/src/sys/ffi.mojo index cdfbcfb18f..fea193e75b 100644 --- a/stdlib/src/sys/ffi.mojo +++ b/stdlib/src/sys/ffi.mojo @@ -13,15 +13,15 @@ """Implements a foreign functions interface (FFI).""" from os import abort +from sys._libc import dlclose, dlerror, dlopen, dlsym + from memory import UnsafePointer from utils import StringRef -from .info import os_is_linux, os_is_windows, is_64bit, os_is_macos +from .info import is_64bit, os_is_linux, os_is_macos, os_is_windows from .intrinsics import _mlirtype_is_eq -from sys._libc import dlerror, dlopen, dlclose, dlsym - # ===-----------------------------------------------------------------------===# # Primitive C type aliases # ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/sys/info.mojo b/stdlib/src/sys/info.mojo index a2f1891fc9..2fe91f3b99 100644 --- a/stdlib/src/sys/info.mojo +++ b/stdlib/src/sys/info.mojo @@ -19,9 +19,10 @@ from sys import is_x86 ``` """ -from .ffi import _external_call_const, external_call, OpaquePointer from memory import UnsafePointer +from .ffi import OpaquePointer, _external_call_const, external_call + @always_inline("nodebug") fn _current_target() -> __mlir_type.`!kgen.target`: diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index 054c66c497..dbc833dcc8 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -19,12 +19,13 @@ from sys import PrefetchLocality ``` """ -from .info import sizeof, is_nvidia_gpu -from ._assembly import inlined_assembly import math from memory import AddressSpace, UnsafePointer +from ._assembly import inlined_assembly +from .info import is_nvidia_gpu, sizeof + # ===----------------------------------------------------------------------===# # llvm_intrinsic # ===----------------------------------------------------------------------===# diff --git a/stdlib/src/sys/terminate.mojo b/stdlib/src/sys/terminate.mojo index 48e5fd8455..69fae08ca4 100644 --- a/stdlib/src/sys/terminate.mojo +++ b/stdlib/src/sys/terminate.mojo @@ -13,8 +13,8 @@ """This module includes the exit functions.""" -from sys.ffi import c_int from sys import _libc as libc +from sys.ffi import c_int fn exit(): diff --git a/stdlib/src/tempfile/tempfile.mojo b/stdlib/src/tempfile/tempfile.mojo index 7f3c2dd09d..55c3ca42d2 100644 --- a/stdlib/src/tempfile/tempfile.mojo +++ b/stdlib/src/tempfile/tempfile.mojo @@ -21,8 +21,9 @@ from tempfile import gettempdir import os import sys -from collections import Optional, List +from collections import List, Optional from pathlib import Path + from utils import Span, write_buffered alias TMP_MAX = 10_000 diff --git a/stdlib/src/testing/__init__.mojo b/stdlib/src/testing/__init__.mojo index 23636b5081..79c2180d4d 100644 --- a/stdlib/src/testing/__init__.mojo +++ b/stdlib/src/testing/__init__.mojo @@ -17,9 +17,9 @@ from .testing import ( assert_almost_equal, assert_equal, assert_false, + assert_is, + assert_is_not, assert_not_equal, assert_raises, assert_true, - assert_is, - assert_is_not, ) diff --git a/stdlib/src/testing/testing.mojo b/stdlib/src/testing/testing.mojo index 5dff04c458..38423c9aa4 100644 --- a/stdlib/src/testing/testing.mojo +++ b/stdlib/src/testing/testing.mojo @@ -35,7 +35,6 @@ from math import isclose from builtin._location import __call_location, _SourceLocation - # ===----------------------------------------------------------------------=== # # Assertions # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/time/__init__.mojo b/stdlib/src/time/__init__.mojo index de8f50f95e..5d01e75fdf 100644 --- a/stdlib/src/time/__init__.mojo +++ b/stdlib/src/time/__init__.mojo @@ -13,10 +13,10 @@ """Implements the time package.""" from .time import ( + monotonic, now, perf_counter, perf_counter_ns, sleep, time_function, - monotonic, ) diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index a8a38b5841..7b68624fdf 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -19,17 +19,17 @@ from time import now ``` """ +from math import floor from os import abort from sys import ( external_call, - os_is_linux, - os_is_windows, is_amd_gpu, is_nvidia_gpu, llvm_intrinsic, + os_is_linux, + os_is_windows, ) from sys._assembly import inlined_assembly -from math import floor from memory import UnsafePointer diff --git a/stdlib/src/utils/__init__.mojo b/stdlib/src/utils/__init__.mojo index d319cf884a..0f3b95ced0 100644 --- a/stdlib/src/utils/__init__.mojo +++ b/stdlib/src/utils/__init__.mojo @@ -14,11 +14,11 @@ from .index import Index, IndexList, product from .inline_string import InlineString +from .lock import BlockingScopedLock, BlockingSpinLock, SpinWaiter from .loop import unroll from .span import AsBytes, Span from .static_tuple import StaticTuple -from .stringref import StringRef from .string_slice import StaticString, StringSlice +from .stringref import StringRef from .variant import Variant -from .lock import SpinWaiter, BlockingSpinLock, BlockingScopedLock -from .write import Writer, Writable, write_args, write_buffered +from .write import Writable, Writer, write_args, write_buffered diff --git a/stdlib/src/utils/_serialize.mojo b/stdlib/src/utils/_serialize.mojo index ddf05a31ac..1cc0eea138 100644 --- a/stdlib/src/utils/_serialize.mojo +++ b/stdlib/src/utils/_serialize.mojo @@ -13,7 +13,7 @@ from pathlib import Path -from memory import AddressSpace, bitcast, UnsafePointer +from memory import AddressSpace, UnsafePointer, bitcast alias _kStartTensorMarker = "[" alias _kEndTensorMarker = "]" diff --git a/stdlib/src/utils/_unicode.mojo b/stdlib/src/utils/_unicode.mojo index 079bd7e180..fb61a24cd9 100644 --- a/stdlib/src/utils/_unicode.mojo +++ b/stdlib/src/utils/_unicode.mojo @@ -11,7 +11,8 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # from bit import count_leading_zeros -from memory import memcpy, UnsafePointer +from memory import UnsafePointer, memcpy + from ._unicode_lookups import * diff --git a/stdlib/src/utils/_utf8_validation.mojo b/stdlib/src/utils/_utf8_validation.mojo index 3cc522d33d..e7ca5a5e3b 100644 --- a/stdlib/src/utils/_utf8_validation.mojo +++ b/stdlib/src/utils/_utf8_validation.mojo @@ -25,9 +25,10 @@ Code adapted from: https://github.com/simdutf/SimdUnicode/blob/main/src/UTF8.cs """ -from memory import UnsafePointer -from sys.intrinsics import llvm_intrinsic from base64._b64encode import _sub_with_saturation +from sys.intrinsics import llvm_intrinsic + +from memory import UnsafePointer alias TOO_SHORT: UInt8 = 1 << 0 alias TOO_LONG: UInt8 = 1 << 1 diff --git a/stdlib/src/utils/format.mojo b/stdlib/src/utils/format.mojo index cac20f191d..eab8549b19 100644 --- a/stdlib/src/utils/format.mojo +++ b/stdlib/src/utils/format.mojo @@ -13,7 +13,9 @@ """Implements Formatting utilities.""" from collections import Optional + from memory import UnsafePointer + from utils.string_slice import Stringlike # TODO: _FormatCurlyEntry and _FormatSpec should be public in the future for diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index ff6ada51d1..174cde61a9 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -20,10 +20,11 @@ from utils import IndexList ``` """ +from collections.string import _calc_initial_buffer_size from sys import bitwidthof + from builtin.dtype import _int_type_of_width, _uint_type_of_width from builtin.io import _get_dtype_printf_format, _snprintf -from collections.string import _calc_initial_buffer_size from . import unroll from .static_tuple import StaticTuple diff --git a/stdlib/src/utils/inline_string.mojo b/stdlib/src/utils/inline_string.mojo index 3f8d5d52f0..055ad748a8 100644 --- a/stdlib/src/utils/inline_string.mojo +++ b/stdlib/src/utils/inline_string.mojo @@ -15,9 +15,8 @@ avoids heap allocations for short strings. """ -from collections import InlineArray +from collections import InlineArray, Optional from os import abort -from collections import Optional from sys import sizeof from memory import UnsafePointer, memcpy diff --git a/stdlib/src/utils/lock.mojo b/stdlib/src/utils/lock.mojo index 9737dc2178..dbae8c0d63 100644 --- a/stdlib/src/utils/lock.mojo +++ b/stdlib/src/utils/lock.mojo @@ -11,12 +11,12 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from memory import UnsafePointer from os import Atomic -from time import sleep from sys import external_call from sys.ffi import OpaquePointer +from time import sleep +from memory import UnsafePointer # ===----------------------------------------------------------------------===# # SpinWaiter diff --git a/stdlib/src/utils/loop.mojo b/stdlib/src/utils/loop.mojo index efef81a73f..c0a6aa3f5e 100644 --- a/stdlib/src/utils/loop.mojo +++ b/stdlib/src/utils/loop.mojo @@ -11,7 +11,7 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # -from builtin.range import _ZeroStartingRange, _SequentialRange, _StridedRange +from builtin.range import _SequentialRange, _StridedRange, _ZeroStartingRange """Implements higher-order functions. diff --git a/stdlib/src/utils/span.mojo b/stdlib/src/utils/span.mojo index 3ebb316f2d..5a9588d107 100644 --- a/stdlib/src/utils/span.mojo +++ b/stdlib/src/utils/span.mojo @@ -21,8 +21,9 @@ from utils import Span """ from collections import InlineArray -from memory import Pointer, UnsafePointer + from builtin.builtin_list import _lit_mut_cast +from memory import Pointer, UnsafePointer trait AsBytes: diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 3b6c8bb4fd..96f6aaeada 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -21,15 +21,18 @@ from utils import StringSlice ``` """ -from bit import count_leading_zeros -from utils import Span -from collections.string import _isspace, _atol, _atof from collections import List, Optional -from memory import memcmp, UnsafePointer, memcpy -from sys import simdwidthof, bitwidthof +from collections.string import _atof, _atol, _isspace +from sys import bitwidthof, simdwidthof from sys.intrinsics import unlikely + +from bit import count_leading_zeros +from memory import UnsafePointer, memcmp, memcpy from memory.memory import _memcmp_impl_unconstrained + +from utils import Span from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry + from ._utf8_validation import _is_valid_utf8 alias StaticString = StringSlice[StaticConstantOrigin] diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index 729999be24..1a19e5788b 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -13,15 +13,17 @@ """Implements the StringRef class. """ -from bit import count_trailing_zeros -from builtin.dtype import _uint_type_of_width from collections.string import _atol, _isspace from hashlib._hasher import _HashableWithHasher, _Hasher +from sys import simdwidthof +from sys.ffi import c_char + +from bit import count_trailing_zeros +from builtin.dtype import _uint_type_of_width from memory import UnsafePointer, memcmp, pack_bits from memory.memory import _memcmp_impl_unconstrained + from utils import StringSlice -from sys.ffi import c_char -from sys import simdwidthof # ===----------------------------------------------------------------------=== # # Utilities diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index 1b4d8da6d2..bbb574670b 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -13,10 +13,12 @@ """Establishes the contract between `Writer` and `Writable` types.""" from collections import InlineArray -from memory import memcpy, UnsafePointer -from utils import Span, StaticString from sys.info import is_gpu + from builtin.io import _printf +from memory import UnsafePointer, memcpy + +from utils import Span, StaticString # ===----------------------------------------------------------------------===# diff --git a/stdlib/test/builtin/test_dtype.mojo b/stdlib/test/builtin/test_dtype.mojo index 49d509d21c..d941ab794a 100644 --- a/stdlib/test/builtin/test_dtype.mojo +++ b/stdlib/test/builtin/test_dtype.mojo @@ -13,9 +13,9 @@ # RUN: %mojo %s from collections import Set +from sys import sizeof from testing import assert_equal, assert_false, assert_true -from sys import sizeof fn test_equality() raises: diff --git a/stdlib/test/builtin/test_file.mojo b/stdlib/test/builtin/test_file.mojo index 7c9d3055f4..d30091958e 100644 --- a/stdlib/test/builtin/test_file.mojo +++ b/stdlib/test/builtin/test_file.mojo @@ -16,8 +16,8 @@ from pathlib import Path, _dir_of_current_file from sys import os_is_windows from tempfile import gettempdir -from memory import UnsafePointer +from memory import UnsafePointer from testing import assert_equal, assert_true diff --git a/stdlib/test/builtin/test_format_float.mojo b/stdlib/test/builtin/test_format_float.mojo index 1544f185ff..3bf820543d 100644 --- a/stdlib/test/builtin/test_format_float.mojo +++ b/stdlib/test/builtin/test_format_float.mojo @@ -12,10 +12,11 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s +from random import random_float64 + from builtin._format_float import _write_float -from testing import assert_equal from python import Python, PythonObject -from random import random_float64 +from testing import assert_equal def test_float64(): diff --git a/stdlib/test/builtin/test_int.mojo b/stdlib/test/builtin/test_int.mojo index 8d898798da..9919b2f636 100644 --- a/stdlib/test/builtin/test_int.mojo +++ b/stdlib/test/builtin/test_int.mojo @@ -14,10 +14,9 @@ from sys.info import bitwidthof -from testing import assert_equal, assert_true, assert_false, assert_raises - -from python import PythonObject from memory import UnsafePointer +from python import PythonObject +from testing import assert_equal, assert_false, assert_raises, assert_true def test_properties(): diff --git a/stdlib/test/builtin/test_int_literal.mojo b/stdlib/test/builtin/test_int_literal.mojo index 84d23a7955..9651e564b5 100644 --- a/stdlib/test/builtin/test_int_literal.mojo +++ b/stdlib/test/builtin/test_int_literal.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_true, assert_false +from testing import assert_equal, assert_false, assert_true def test_add(): diff --git a/stdlib/test/builtin/test_issue_1505.mojo b/stdlib/test/builtin/test_issue_1505.mojo index a4f9c4e14f..25f8f32e6f 100644 --- a/stdlib/test/builtin/test_issue_1505.mojo +++ b/stdlib/test/builtin/test_issue_1505.mojo @@ -15,9 +15,10 @@ from random import random_ui64 -from utils import IndexList from testing import assert_equal +from utils import IndexList + fn gen_perm() -> IndexList[64]: var result = IndexList[64]() diff --git a/stdlib/test/builtin/test_list_literal.mojo b/stdlib/test/builtin/test_list_literal.mojo index 38ae7764fe..309a831b24 100644 --- a/stdlib/test/builtin/test_list_literal.mojo +++ b/stdlib/test/builtin/test_list_literal.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_true, assert_false +from testing import assert_equal, assert_false, assert_true def test_list(): diff --git a/stdlib/test/builtin/test_print.mojo b/stdlib/test/builtin/test_print.mojo index ca3b03afcc..a18b7366ff 100644 --- a/stdlib/test/builtin/test_print.mojo +++ b/stdlib/test/builtin/test_print.mojo @@ -14,11 +14,11 @@ import sys - from tempfile import NamedTemporaryFile -from testing import assert_equal from builtin._location import __call_location, _SourceLocation +from testing import assert_equal + from utils import IndexList, StringRef diff --git a/stdlib/test/builtin/test_reversed.mojo b/stdlib/test/builtin/test_reversed.mojo index d6027d5429..790619c6c4 100644 --- a/stdlib/test/builtin/test_reversed.mojo +++ b/stdlib/test/builtin/test_reversed.mojo @@ -13,6 +13,7 @@ # RUN: %mojo %s from collections import Deque, Dict + from testing import assert_equal diff --git a/stdlib/test/builtin/test_simd.mojo b/stdlib/test/builtin/test_simd.mojo index 8b8698c9e7..d7bd8928b4 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/stdlib/test/builtin/test_simd.mojo @@ -12,11 +12,11 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s +from collections import InlineArray from sys import has_neon -from memory import UnsafePointer -from collections import InlineArray from builtin.simd import _modf +from memory import UnsafePointer from testing import ( assert_almost_equal, assert_equal, @@ -24,7 +24,8 @@ from testing import ( assert_not_equal, assert_true, ) -from utils import unroll, StaticTuple, IndexList + +from utils import IndexList, StaticTuple, unroll from utils.numerics import isfinite, isinf, isnan, nan diff --git a/stdlib/test/builtin/test_sort_issue_1018.mojo b/stdlib/test/builtin/test_sort_issue_1018.mojo index 855b0a8036..e8cfb4e1f0 100644 --- a/stdlib/test/builtin/test_sort_issue_1018.mojo +++ b/stdlib/test/builtin/test_sort_issue_1018.mojo @@ -14,7 +14,9 @@ # RUN: %mojo %s | FileCheck %s from random import rand + from memory import UnsafePointer + from utils import Span diff --git a/stdlib/test/builtin/test_string_literal.mojo b/stdlib/test/builtin/test_string_literal.mojo index 429378fbd4..2aaa26e063 100644 --- a/stdlib/test/builtin/test_string_literal.mojo +++ b/stdlib/test/builtin/test_string_literal.mojo @@ -13,8 +13,8 @@ # RUN: %mojo %s from sys.ffi import c_char -from memory import UnsafePointer +from memory import UnsafePointer from testing import ( assert_equal, assert_false, diff --git a/stdlib/test/builtin/test_uint.mojo b/stdlib/test/builtin/test_uint.mojo index 9e63c45937..1af1d2f125 100644 --- a/stdlib/test/builtin/test_uint.mojo +++ b/stdlib/test/builtin/test_uint.mojo @@ -12,9 +12,10 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_false, assert_not_equal, assert_true from sys import bitwidthof + from bit import count_trailing_zeros +from testing import assert_equal, assert_false, assert_not_equal, assert_true def test_simple_uint(): diff --git a/stdlib/test/collections/test_counter.mojo b/stdlib/test/collections/test_counter.mojo index 0abc8e1287..27f5f3b9e6 100644 --- a/stdlib/test/collections/test_counter.mojo +++ b/stdlib/test/collections/test_counter.mojo @@ -12,8 +12,8 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from collections.counter import Counter from collections import Optional +from collections.counter import Counter from testing import assert_equal, assert_false, assert_raises, assert_true diff --git a/stdlib/test/collections/test_deque.mojo b/stdlib/test/collections/test_deque.mojo index a9350c2180..84b759eb91 100644 --- a/stdlib/test/collections/test_deque.mojo +++ b/stdlib/test/collections/test_deque.mojo @@ -12,10 +12,10 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_false, assert_true, assert_raises - from collections import Deque +from testing import assert_equal, assert_false, assert_raises, assert_true + # ===----------------------------------------------------------------------===# # Implementation tests # ===----------------------------------------------------------------------===# diff --git a/stdlib/test/collections/test_inline_array.mojo b/stdlib/test/collections/test_inline_array.mojo index b16cb4b5bb..18a933c6be 100644 --- a/stdlib/test/collections/test_inline_array.mojo +++ b/stdlib/test/collections/test_inline_array.mojo @@ -13,10 +13,11 @@ # RUN: %mojo %s from collections import InlineArray -from testing import assert_equal, assert_false, assert_true -from memory.maybe_uninitialized import UnsafeMaybeUninitialized + from memory import UnsafePointer +from memory.maybe_uninitialized import UnsafeMaybeUninitialized from test_utils import ValueDestructorRecorder +from testing import assert_equal, assert_false, assert_true def test_array_unsafe_get(): diff --git a/stdlib/test/collections/test_inline_list.mojo b/stdlib/test/collections/test_inline_list.mojo index b3d21ed3a0..52adea853c 100644 --- a/stdlib/test/collections/test_inline_list.mojo +++ b/stdlib/test/collections/test_inline_list.mojo @@ -13,8 +13,8 @@ # RUN: %mojo %s from collections import InlineList, Set -from memory import UnsafePointer +from memory import UnsafePointer from test_utils import MoveCounter, ValueDestructorRecorder from testing import assert_equal, assert_false, assert_raises, assert_true diff --git a/stdlib/test/collections/test_list.mojo b/stdlib/test/collections/test_list.mojo index 873baf32e6..cd173fc66c 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/stdlib/test/collections/test_list.mojo @@ -13,8 +13,9 @@ # RUN: %mojo %s from collections import List -from memory import UnsafePointer from sys.info import sizeof + +from memory import UnsafePointer from test_utils import CopyCounter, MoveCounter from testing import assert_equal, assert_false, assert_raises, assert_true diff --git a/stdlib/test/collections/test_set.mojo b/stdlib/test/collections/test_set.mojo index 4dceebd59d..147e488304 100644 --- a/stdlib/test/collections/test_set.mojo +++ b/stdlib/test/collections/test_set.mojo @@ -14,8 +14,8 @@ from collections import Set -from testing import assert_false, assert_raises, assert_true from testing import assert_equal as AE +from testing import assert_false, assert_raises, assert_true fn assert_equal[T: EqualityComparable](lhs: T, rhs: T) raises: diff --git a/stdlib/test/collections/test_string.mojo b/stdlib/test/collections/test_string.mojo index d02ad51563..c70ff3a50c 100644 --- a/stdlib/test/collections/test_string.mojo +++ b/stdlib/test/collections/test_string.mojo @@ -17,6 +17,7 @@ from collections.string import ( _calc_initial_buffer_size_int64, _isspace, ) + from memory import UnsafePointer from python import Python from testing import ( diff --git a/stdlib/test/hashlib/test_ahash.mojo b/stdlib/test/hashlib/test_ahash.mojo index 87604606ca..f1fdc69a62 100644 --- a/stdlib/test/hashlib/test_ahash.mojo +++ b/stdlib/test/hashlib/test_ahash.mojo @@ -12,14 +12,16 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from bit import pop_count -from builtin._location import __call_location from hashlib._ahash import AHasher -from hashlib.hash import hash as old_hash from hashlib._hasher import _hash_with_hasher as hash -from testing import assert_equal, assert_not_equal, assert_true -from memory import memset_zero, stack_allocation +from hashlib.hash import hash as old_hash from time import now + +from bit import pop_count +from builtin._location import __call_location +from memory import memset_zero, stack_allocation +from testing import assert_equal, assert_not_equal, assert_true + from utils import Span # Source: https://www.101languages.net/arabic/most-common-arabic-words/ diff --git a/stdlib/test/hashlib/test_hash.mojo b/stdlib/test/hashlib/test_hash.mojo index 5e7662fbd7..56f475f55d 100644 --- a/stdlib/test/hashlib/test_hash.mojo +++ b/stdlib/test/hashlib/test_hash.mojo @@ -19,6 +19,7 @@ # specific. But for now they test behavior and reproducibility. from hashlib.hash import _hash_simd + from testing import assert_equal, assert_not_equal, assert_true diff --git a/stdlib/test/hashlib/test_hasher.mojo b/stdlib/test/hashlib/test_hasher.mojo index f41685b553..809d494c7e 100644 --- a/stdlib/test/hashlib/test_hasher.mojo +++ b/stdlib/test/hashlib/test_hasher.mojo @@ -13,12 +13,14 @@ # RUN: %mojo %s -from hashlib._hasher import _hash_with_hasher, _HashableWithHasher, _Hasher from hashlib._ahash import AHasher -from memory import UnsafePointer +from hashlib._hasher import _hash_with_hasher, _HashableWithHasher, _Hasher from pathlib import Path + +from memory import UnsafePointer from python import Python, PythonObject from testing import assert_equal, assert_true + from utils import StringRef diff --git a/stdlib/test/lit.cfg.py b/stdlib/test/lit.cfg.py index 33e85712be..55976ecfe6 100644 --- a/stdlib/test/lit.cfg.py +++ b/stdlib/test/lit.cfg.py @@ -13,7 +13,6 @@ import os import shutil - from pathlib import Path import lit.formats diff --git a/stdlib/test/memory/test_arc.mojo b/stdlib/test/memory/test_arc.mojo index e5c2ba8fd2..82b5342aea 100644 --- a/stdlib/test/memory/test_arc.mojo +++ b/stdlib/test/memory/test_arc.mojo @@ -15,8 +15,8 @@ from collections import List from memory import ArcPointer, UnsafePointer -from testing import assert_equal, assert_false, assert_true from test_utils import ObservableDel +from testing import assert_equal, assert_false, assert_true def test_basic(): diff --git a/stdlib/test/memory/test_maybe_uninitialized.mojo b/stdlib/test/memory/test_maybe_uninitialized.mojo index 6c02fec9b6..5dbebfd8d7 100644 --- a/stdlib/test/memory/test_maybe_uninitialized.mojo +++ b/stdlib/test/memory/test_maybe_uninitialized.mojo @@ -13,9 +13,9 @@ # RUN: %mojo %s from os import abort + from memory import UnsafePointer from memory.maybe_uninitialized import UnsafeMaybeUninitialized - from test_utils import CopyCounter, MoveCounter, ValueDestructorRecorder from testing import assert_equal diff --git a/stdlib/test/memory/test_memory.mojo b/stdlib/test/memory/test_memory.mojo index 52cbe98ae4..b9f754c97d 100644 --- a/stdlib/test/memory/test_memory.mojo +++ b/stdlib/test/memory/test_memory.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo --debug-level full %s -from sys import sizeof, simdwidthof +from sys import simdwidthof, sizeof from memory import ( AddressSpace, diff --git a/stdlib/test/memory/test_owned_pointer.mojo b/stdlib/test/memory/test_owned_pointer.mojo index a09b8fa59b..133dff1348 100644 --- a/stdlib/test/memory/test_owned_pointer.mojo +++ b/stdlib/test/memory/test_owned_pointer.mojo @@ -12,14 +12,14 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_false, assert_true, assert_not_equal +from memory import OwnedPointer, UnsafePointer from test_utils import ( - MoveOnly, ExplicitCopyOnly, ImplicitCopyOnly, + MoveOnly, ObservableDel, ) -from memory import OwnedPointer, UnsafePointer +from testing import assert_equal, assert_false, assert_not_equal, assert_true def test_basic_ref(): diff --git a/stdlib/test/memory/test_unsafepointer.mojo b/stdlib/test/memory/test_unsafepointer.mojo index a44fb58cf6..d6339f7e18 100644 --- a/stdlib/test/memory/test_unsafepointer.mojo +++ b/stdlib/test/memory/test_unsafepointer.mojo @@ -12,9 +12,9 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from memory import UnsafePointer, AddressSpace +from memory import AddressSpace, UnsafePointer from test_utils import ExplicitCopyOnly, MoveCounter -from testing import assert_equal, assert_not_equal, assert_true, assert_false +from testing import assert_equal, assert_false, assert_not_equal, assert_true struct MoveOnlyType(Movable): diff --git a/stdlib/test/os/path/test_basename.mojo b/stdlib/test/os/path/test_basename.mojo index 24713367f8..acda789eca 100644 --- a/stdlib/test/os/path/test_basename.mojo +++ b/stdlib/test/os/path/test_basename.mojo @@ -14,6 +14,7 @@ from os.path import basename from pathlib import Path + from builtin._location import __source_location from testing import assert_equal diff --git a/stdlib/test/os/path/test_expanduser.mojo b/stdlib/test/os/path/test_expanduser.mojo index 78764e6bf1..7041eefdd6 100644 --- a/stdlib/test/os/path/test_expanduser.mojo +++ b/stdlib/test/os/path/test_expanduser.mojo @@ -14,11 +14,12 @@ import os +from os.env import getenv, setenv from os.path import expanduser, join -from os.env import setenv, getenv -from testing import assert_equal, assert_raises, assert_true from sys.info import os_is_windows +from testing import assert_equal, assert_raises, assert_true + fn get_user_path() -> String: @parameter diff --git a/stdlib/test/os/path/test_expandvars.mojo b/stdlib/test/os/path/test_expandvars.mojo index d81746d88c..4dccce1208 100644 --- a/stdlib/test/os/path/test_expandvars.mojo +++ b/stdlib/test/os/path/test_expandvars.mojo @@ -14,6 +14,7 @@ import os from os.path import expandvars + from testing import assert_equal diff --git a/stdlib/test/os/path/test_getsize.mojo b/stdlib/test/os/path/test_getsize.mojo index 6975d91335..1aa50e9bfb 100644 --- a/stdlib/test/os/path/test_getsize.mojo +++ b/stdlib/test/os/path/test_getsize.mojo @@ -14,6 +14,7 @@ from os.path import getsize from tempfile import NamedTemporaryFile + from testing import assert_equal diff --git a/stdlib/test/os/path/test_split.mojo b/stdlib/test/os/path/test_split.mojo index eaa6c008ea..0ef994827b 100644 --- a/stdlib/test/os/path/test_split.mojo +++ b/stdlib/test/os/path/test_split.mojo @@ -13,7 +13,7 @@ # RUN: %mojo %s import os -from os.path import split, expanduser +from os.path import expanduser, split from pathlib import Path from builtin._location import __source_location diff --git a/stdlib/test/os/path/test_splitroot.mojo b/stdlib/test/os/path/test_splitroot.mojo index fc52a959dd..fddf23677c 100644 --- a/stdlib/test/os/path/test_splitroot.mojo +++ b/stdlib/test/os/path/test_splitroot.mojo @@ -14,6 +14,7 @@ import os from os.path import splitroot + from testing import assert_equal diff --git a/stdlib/test/os/test_no_trap.mojo b/stdlib/test/os/test_no_trap.mojo index 3ccfd1a230..8c36b634f1 100644 --- a/stdlib/test/os/test_no_trap.mojo +++ b/stdlib/test/os/test_no_trap.mojo @@ -14,8 +14,8 @@ # We pass an_argument here to avoid the compiler from optimizing the code # away. -from sys import argv from os import abort +from sys import argv # CHECK-LABEL: OK diff --git a/stdlib/test/os/test_remove.mojo b/stdlib/test/os/test_remove.mojo index 820e1d21bb..ccd9382ad3 100644 --- a/stdlib/test/os/test_remove.mojo +++ b/stdlib/test/os/test_remove.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from os import remove, unlink, PathLike +from os import PathLike, remove, unlink from os.path import exists from pathlib import Path diff --git a/stdlib/test/pwd/test_pwd.mojo b/stdlib/test/pwd/test_pwd.mojo index 0cab2ff11f..14f3946a87 100644 --- a/stdlib/test/pwd/test_pwd.mojo +++ b/stdlib/test/pwd/test_pwd.mojo @@ -12,9 +12,10 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -import pwd import os -from testing import assert_equal, assert_true, assert_raises +import pwd + +from testing import assert_equal, assert_raises, assert_true def test_pwuid(): diff --git a/stdlib/test/python/test_python_object.mojo b/stdlib/test/python/test_python_object.mojo index b6e5fc38c1..eed042c564 100644 --- a/stdlib/test/python/test_python_object.mojo +++ b/stdlib/test/python/test_python_object.mojo @@ -14,6 +14,7 @@ # RUN: %mojo %s from collections import Dict + from python import Python, PythonObject from testing import assert_equal, assert_false, assert_raises, assert_true diff --git a/stdlib/test/sys/test_c_types.mojo b/stdlib/test/sys/test_c_types.mojo index 61029f21c9..f2610aa453 100644 --- a/stdlib/test/sys/test_c_types.mojo +++ b/stdlib/test/sys/test_c_types.mojo @@ -12,8 +12,8 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from sys.info import os_is_linux, os_is_macos, os_is_windows, is_64bit, is_32bit from sys.ffi import c_int, c_long, c_long_long +from sys.info import is_32bit, is_64bit, os_is_linux, os_is_macos, os_is_windows from testing import assert_equal, assert_true diff --git a/stdlib/test/sys/test_intrinsics.mojo b/stdlib/test/sys/test_intrinsics.mojo index 417b5bd23b..2bc51de5c6 100644 --- a/stdlib/test/sys/test_intrinsics.mojo +++ b/stdlib/test/sys/test_intrinsics.mojo @@ -20,7 +20,7 @@ from sys import ( strided_load, strided_store, ) -from sys.intrinsics import likely, unlikely, assume +from sys.intrinsics import assume, likely, unlikely from memory import UnsafePointer, memset_zero from testing import assert_equal diff --git a/stdlib/test/sys/test_paramenv.mojo b/stdlib/test/sys/test_paramenv.mojo index abdbd3c266..b1e3cadeb6 100644 --- a/stdlib/test/sys/test_paramenv.mojo +++ b/stdlib/test/sys/test_paramenv.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo -D bar=99 -D baz=hello -D foo=11 -D my_true=True -D my_false=false %s -from sys import env_get_int, env_get_bool, env_get_string, is_defined +from sys import env_get_bool, env_get_int, env_get_string, is_defined from testing import assert_equal, assert_false, assert_true diff --git a/stdlib/test/testing/test_assertion.mojo b/stdlib/test/testing/test_assertion.mojo index 6f07f4d3b9..35283b7088 100644 --- a/stdlib/test/testing/test_assertion.mojo +++ b/stdlib/test/testing/test_assertion.mojo @@ -12,20 +12,20 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo -debug-level full %s +from builtin._location import _SourceLocation +from python import PythonObject from testing import ( assert_almost_equal, assert_equal, assert_false, + assert_is, + assert_is_not, assert_not_equal, assert_raises, assert_true, - assert_is, - assert_is_not, ) from utils.numerics import inf, nan -from builtin._location import _SourceLocation -from python import PythonObject def test_assert_messages(): diff --git a/stdlib/test/time/test_time.mojo b/stdlib/test/time/test_time.mojo index 6be7e4e60a..985a0ec9f6 100644 --- a/stdlib/test/time/test_time.mojo +++ b/stdlib/test/time/test_time.mojo @@ -14,12 +14,12 @@ from sys import os_is_windows from time import ( + monotonic, now, perf_counter, perf_counter_ns, sleep, time_function, - monotonic, ) from testing import assert_true diff --git a/stdlib/test/utils/test_format_to_stdout.mojo b/stdlib/test/utils/test_format_to_stdout.mojo index 256146aeff..c487ea14db 100644 --- a/stdlib/test/utils/test_format_to_stdout.mojo +++ b/stdlib/test/utils/test_format_to_stdout.mojo @@ -12,9 +12,10 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo -debug-level full %s -from utils import Writable, Writer import sys +from utils import Writable, Writer + fn main() raises: test_write_to_stdout() diff --git a/stdlib/test/utils/test_inlined_string.mojo b/stdlib/test/utils/test_inlined_string.mojo index 11712e5925..b2bc0d1956 100644 --- a/stdlib/test/utils/test_inlined_string.mojo +++ b/stdlib/test/utils/test_inlined_string.mojo @@ -13,9 +13,10 @@ # REQUIRES: disabled # RUN: %mojo --debug-level full %s +from os import abort + from testing import assert_equal, assert_true -from os import abort from utils import InlineString from utils.inline_string import _FixedString diff --git a/stdlib/test/utils/test_select.mojo b/stdlib/test/utils/test_select.mojo index cd82f84a2e..dc1911c98a 100644 --- a/stdlib/test/utils/test_select.mojo +++ b/stdlib/test/utils/test_select.mojo @@ -12,9 +12,10 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from utils._select import _select_register_value from testing import assert_equal +from utils._select import _select_register_value + def test_select_register_value(): assert_equal(_select_register_value(True, 42, 100), 42) diff --git a/stdlib/test/utils/test_span.mojo b/stdlib/test/utils/test_span.mojo index 79cd780401..ebf04f8157 100644 --- a/stdlib/test/utils/test_span.mojo +++ b/stdlib/test/utils/test_span.mojo @@ -13,6 +13,7 @@ # RUN: %mojo %s from collections import InlineArray, List + from memory import UnsafePointer from testing import assert_equal, assert_true diff --git a/stdlib/test/utils/test_string_slice.mojo b/stdlib/test/utils/test_string_slice.mojo index 19efdc1e0e..191d98a7d6 100644 --- a/stdlib/test/utils/test_string_slice.mojo +++ b/stdlib/test/utils/test_string_slice.mojo @@ -12,7 +12,7 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -from testing import assert_equal, assert_true, assert_false +from testing import assert_equal, assert_false, assert_true from utils import Span, StringSlice from utils._utf8_validation import _is_valid_utf8 diff --git a/stdlib/test/utils/test_tuple.mojo b/stdlib/test/utils/test_tuple.mojo index b38a4e0e75..f6ccb2ce3a 100644 --- a/stdlib/test/utils/test_tuple.mojo +++ b/stdlib/test/utils/test_tuple.mojo @@ -12,11 +12,11 @@ # ===----------------------------------------------------------------------=== # # RUN: %mojo %s +from memory import UnsafePointer +from test_utils import ValueDestructorRecorder from testing import assert_equal, assert_false, assert_true -from memory import UnsafePointer from utils import IndexList, StaticTuple -from test_utils import ValueDestructorRecorder def test_static_tuple(): diff --git a/stdlib/test/utils/test_variant.mojo b/stdlib/test/utils/test_variant.mojo index 2428ac18a7..f07b3aa099 100644 --- a/stdlib/test/utils/test_variant.mojo +++ b/stdlib/test/utils/test_variant.mojo @@ -15,8 +15,8 @@ from sys.ffi import _Global from memory import UnsafePointer -from testing import assert_equal, assert_false, assert_true from test_utils import ObservableDel +from testing import assert_equal, assert_false, assert_true from utils import Variant From 1a571a4c463846557b54f0ea0d8042e35dbe6c2a Mon Sep 17 00:00:00 2001 From: Evan Ovadia Date: Thu, 28 Nov 2024 13:10:06 -0800 Subject: [PATCH 045/119] [mojo-stdlib] Makes Coroutine an explicitly destroyed type. This makes Coroutine into an explicitly destroyed (or "linear") type, which prevents it from accidentally going out of scope. The user must explicitly `await` it, or in rare circumstances, they can call `force_destroy`. MODULAR_ORIG_COMMIT_REV_ID: 8590e9fad437a5c27e91b745c4b3f0c98a94bc5f --- stdlib/src/builtin/coroutine.mojo | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/stdlib/src/builtin/coroutine.mojo b/stdlib/src/builtin/coroutine.mojo index d33445e100..b1e7c4bd55 100644 --- a/stdlib/src/builtin/coroutine.mojo +++ b/stdlib/src/builtin/coroutine.mojo @@ -78,6 +78,7 @@ fn _coro_resume_noop_callback(null: AnyCoroutine): # ===----------------------------------------------------------------------=== # +@explicit_destroy @register_passable struct Coroutine[type: AnyType, origins: OriginSet]: """Represents a coroutine. @@ -130,9 +131,10 @@ struct Coroutine[type: AnyType, origins: OriginSet]: self._handle = handle @always_inline - fn __del__(owned self): + fn force_destroy(owned self): """Destroy the coroutine object.""" __mlir_op.`co.destroy`(self._handle) + __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) @always_inline fn __await__(owned self) -> type as out: @@ -158,6 +160,7 @@ struct Coroutine[type: AnyType, origins: OriginSet]: # ===----------------------------------------------------------------------=== # +@explicit_destroy @register_passable struct RaisingCoroutine[type: AnyType, origins: OriginSet]: """Represents a coroutine that can raise. @@ -211,9 +214,10 @@ struct RaisingCoroutine[type: AnyType, origins: OriginSet]: self._handle = handle @always_inline - fn __del__(owned self): + fn force_destroy(owned self): """Destroy the coroutine object.""" __mlir_op.`co.destroy`(self._handle) + __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) @always_inline fn __await__(owned self) raises -> type as out: From d9c976a0ab7ee91693cfb4f7648d5a6c8756864a Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Thu, 28 Nov 2024 16:25:44 -0800 Subject: [PATCH 046/119] [******][GPU] Extend the SIMD FloatLiteral constructor support MODULAR_ORIG_COMMIT_REV_ID: 8006835197cc190c357956d0993f4e8198244e63 --- stdlib/src/builtin/simd.mojo | 82 +++++++++++++++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 93d37cd554..b2fb025b4f 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -441,7 +441,87 @@ struct SIMD[type: DType, size: Int]( # TODO (#36686): This introduces unneeded casts here to work around # parameter if issues. @parameter - if type is DType.float16: + if type is DType.float8e4m3: + self = SIMD[type, size]( + __mlir_op.`pop.simd.splat`[ + _type = __mlir_type[ + `!pop.simd<`, size.value, `,`, type.value, `>` + ] + ]( + __mlir_op.`pop.cast`[ + _type = __mlir_type[`!pop.scalar<`, type.value, `>`] + ]( + __mlir_op.`pop.cast_from_builtin`[ + _type = __mlir_type[`!pop.scalar`] + ]( + __mlir_op.`kgen.float_literal.convert`[ + _type = __mlir_type.f8E4M3 + ](value.value) + ) + ) + ) + ) + elif type is DType.float8e4m3fnuz: + self = SIMD[type, size]( + __mlir_op.`pop.simd.splat`[ + _type = __mlir_type[ + `!pop.simd<`, size.value, `,`, type.value, `>` + ] + ]( + __mlir_op.`pop.cast`[ + _type = __mlir_type[`!pop.scalar<`, type.value, `>`] + ]( + __mlir_op.`pop.cast_from_builtin`[ + _type = __mlir_type[`!pop.scalar`] + ]( + __mlir_op.`kgen.float_literal.convert`[ + _type = __mlir_type.f8E4M3FNUZ + ](value.value) + ) + ) + ) + ) + elif type is DType.float8e5m2: + self = SIMD[type, size]( + __mlir_op.`pop.simd.splat`[ + _type = __mlir_type[ + `!pop.simd<`, size.value, `,`, type.value, `>` + ] + ]( + __mlir_op.`pop.cast`[ + _type = __mlir_type[`!pop.scalar<`, type.value, `>`] + ]( + __mlir_op.`pop.cast_from_builtin`[ + _type = __mlir_type[`!pop.scalar`] + ]( + __mlir_op.`kgen.float_literal.convert`[ + _type = __mlir_type.f8E5M2 + ](value.value) + ) + ) + ) + ) + elif type is DType.float8e5m2fnuz: + self = SIMD[type, size]( + __mlir_op.`pop.simd.splat`[ + _type = __mlir_type[ + `!pop.simd<`, size.value, `,`, type.value, `>` + ] + ]( + __mlir_op.`pop.cast`[ + _type = __mlir_type[`!pop.scalar<`, type.value, `>`] + ]( + __mlir_op.`pop.cast_from_builtin`[ + _type = __mlir_type[`!pop.scalar`] + ]( + __mlir_op.`kgen.float_literal.convert`[ + _type = __mlir_type.f8E5M2FNUZ + ](value.value) + ) + ) + ) + ) + elif type is DType.float16: self = SIMD[type, size]( __mlir_op.`pop.simd.splat`[ _type = __mlir_type[ From 4a2d7c9e711c613c0e7e4eebc7227c27e2b204e1 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Thu, 28 Nov 2024 20:12:49 -0800 Subject: [PATCH 047/119] [******][GPU] Export the Float8 scalar types, NFC (#51780) Export the fp8 scalar types as builtins. MODULAR_ORIG_COMMIT_REV_ID: 72806233f08c8d1fb58f3e386025929a61b5f241 --- stdlib/src/prelude/__init__.mojo | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index d66496d91a..5551b826ee 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -85,6 +85,10 @@ from builtin.simd import ( SIMD, BFloat16, Byte, + Float8e5m2, + Float8e5m2fnuz, + Float8e4m3, + Float8e4m3fnuz, Float16, Float32, Float64, From a288541699c65a0d11d956e84a9739df7afc87fa Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Fri, 29 Nov 2024 00:17:48 -0800 Subject: [PATCH 048/119] [Stdlib] Use rebind instead of cast in FloatLiteral SIMD init MODULAR_ORIG_COMMIT_REV_ID: 2c23cbf9e6e4bcebfa4fc2c33706545e8193b0ca --- stdlib/src/builtin/simd.mojo | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index b2fb025b4f..332220f11f 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -448,9 +448,7 @@ struct SIMD[type: DType, size: Int]( `!pop.simd<`, size.value, `,`, type.value, `>` ] ]( - __mlir_op.`pop.cast`[ - _type = __mlir_type[`!pop.scalar<`, type.value, `>`] - ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`pop.cast_from_builtin`[ _type = __mlir_type[`!pop.scalar`] ]( @@ -468,9 +466,7 @@ struct SIMD[type: DType, size: Int]( `!pop.simd<`, size.value, `,`, type.value, `>` ] ]( - __mlir_op.`pop.cast`[ - _type = __mlir_type[`!pop.scalar<`, type.value, `>`] - ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`pop.cast_from_builtin`[ _type = __mlir_type[`!pop.scalar`] ]( @@ -488,9 +484,7 @@ struct SIMD[type: DType, size: Int]( `!pop.simd<`, size.value, `,`, type.value, `>` ] ]( - __mlir_op.`pop.cast`[ - _type = __mlir_type[`!pop.scalar<`, type.value, `>`] - ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`pop.cast_from_builtin`[ _type = __mlir_type[`!pop.scalar`] ]( @@ -508,9 +502,7 @@ struct SIMD[type: DType, size: Int]( `!pop.simd<`, size.value, `,`, type.value, `>` ] ]( - __mlir_op.`pop.cast`[ - _type = __mlir_type[`!pop.scalar<`, type.value, `>`] - ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`pop.cast_from_builtin`[ _type = __mlir_type[`!pop.scalar`] ]( @@ -528,9 +520,7 @@ struct SIMD[type: DType, size: Int]( `!pop.simd<`, size.value, `,`, type.value, `>` ] ]( - __mlir_op.`pop.cast`[ - _type = __mlir_type[`!pop.scalar<`, type.value, `>`] - ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`pop.cast_from_builtin`[ _type = __mlir_type[`!pop.scalar`] ]( @@ -548,9 +538,7 @@ struct SIMD[type: DType, size: Int]( `!pop.simd<`, size.value, `,`, type.value, `>` ] ]( - __mlir_op.`pop.cast`[ - _type = __mlir_type[`!pop.scalar<`, type.value, `>`] - ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`pop.cast_from_builtin`[ _type = __mlir_type[`!pop.scalar`] ]( @@ -568,9 +556,7 @@ struct SIMD[type: DType, size: Int]( `!pop.simd<`, size.value, `,`, type.value, `>` ] ]( - __mlir_op.`pop.cast`[ - _type = __mlir_type[`!pop.scalar<`, type.value, `>`] - ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`pop.cast_from_builtin`[ _type = __mlir_type[`!pop.scalar`] ]( @@ -588,9 +574,7 @@ struct SIMD[type: DType, size: Int]( `!pop.simd<`, size.value, `,`, type.value, `>` ] ]( - __mlir_op.`pop.cast`[ - _type = __mlir_type[`!pop.scalar<`, type.value, `>`] - ]( + rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`pop.cast_from_builtin`[ _type = __mlir_type[`!pop.scalar`] ]( From 4d86aa37344ccfab200a757bda4b2aa8a80b5a54 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Fri, 29 Nov 2024 10:12:55 -0800 Subject: [PATCH 049/119] [KGEN][******][GPU] Extend atomic operations to operate with a syncscope MODULAR_ORIG_COMMIT_REV_ID: 6ef07feb9a1786b1b325ee279d6687e18358c557 --- stdlib/src/os/atomic.mojo | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/stdlib/src/os/atomic.mojo b/stdlib/src/os/atomic.mojo index 3d7cb39bd8..28980d33e9 100644 --- a/stdlib/src/os/atomic.mojo +++ b/stdlib/src/os/atomic.mojo @@ -25,13 +25,14 @@ from builtin.dtype import _integral_type_of, _unsigned_integral_type_of from memory import UnsafePointer, bitcast -struct Atomic[type: DType]: +struct Atomic[type: DType, *, scope: StringLiteral = ""]: """Represents a value with atomic operations. The class provides atomic `add` and `sub` methods for mutating the value. Parameters: type: DType of the value. + scope: The memory synchronization scope. """ var value: Scalar[type] @@ -83,6 +84,7 @@ struct Atomic[type: DType]: return __mlir_op.`pop.atomic.rmw`[ bin_op = __mlir_attr.`#pop`, ordering = __mlir_attr.`#pop`, + syncscope = scope.value, _type = __mlir_type[`!pop.scalar<`, type.value, `>`], ]( ptr.bitcast[__mlir_type[`!pop.scalar<`, type.value, `>`]]().address, @@ -143,6 +145,7 @@ struct Atomic[type: DType]: return __mlir_op.`pop.atomic.rmw`[ bin_op = __mlir_attr.`#pop`, ordering = __mlir_attr.`#pop`, + syncscope = scope.value, _type = __mlir_type[`!pop.scalar<`, type.value, `>`], ](value_addr.address, rhs.value) @@ -181,7 +184,7 @@ struct Atomic[type: DType]: @parameter if type.is_integral(): - return _compare_exchange_weak_integral_impl( + return _compare_exchange_weak_integral_impl[scope=scope]( UnsafePointer.address_of(self.value), expected, desired ) @@ -195,7 +198,7 @@ struct Atomic[type: DType]: ]() var expected_integral = bitcast[integral_type](expected) var desired_integral = bitcast[integral_type](desired) - return _compare_exchange_weak_integral_impl( + return _compare_exchange_weak_integral_impl[scope=scope]( value_integral_addr, expected_integral, desired_integral ) @@ -218,7 +221,7 @@ struct Atomic[type: DType]: """ constrained[type.is_numeric(), "the input type must be arithmetic"]() - _max_impl(ptr, rhs) + _max_impl[scope=scope](ptr, rhs) @always_inline fn max(inout self, rhs: Scalar[type]): @@ -258,7 +261,7 @@ struct Atomic[type: DType]: """ constrained[type.is_numeric(), "the input type must be arithmetic"]() - _min_impl(ptr, rhs) + _min_impl[scope=scope](ptr, rhs) @always_inline fn min(inout self, rhs: Scalar[type]): @@ -288,7 +291,7 @@ struct Atomic[type: DType]: @always_inline fn _compare_exchange_weak_integral_impl[ - type: DType, // + type: DType, //, *, scope: StringLiteral ]( value_addr: UnsafePointer[Scalar[type], **_], inout expected: Scalar[type], @@ -299,6 +302,7 @@ fn _compare_exchange_weak_integral_impl[ bin_op = __mlir_attr.`#pop`, failure_ordering = __mlir_attr.`#pop`, success_ordering = __mlir_attr.`#pop`, + syncscope = scope.value, ]( value_addr.bitcast[ __mlir_type[`!pop.scalar<`, type.value, `>`] @@ -318,69 +322,71 @@ fn _compare_exchange_weak_integral_impl[ @always_inline fn _max_impl_base[ - type: DType, // + type: DType, //, *, scope: StringLiteral ](ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): var value_addr = ptr.bitcast[__mlir_type[`!pop.scalar<`, type.value, `>`]]() _ = __mlir_op.`pop.atomic.rmw`[ bin_op = __mlir_attr.`#pop`, ordering = __mlir_attr.`#pop`, + syncscope = scope.value, _type = __mlir_type[`!pop.scalar<`, type.value, `>`], ](value_addr.address, rhs.value) @always_inline fn _min_impl_base[ - type: DType, // + type: DType, //, *, scope: StringLiteral ](ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): var value_addr = ptr.bitcast[__mlir_type[`!pop.scalar<`, type.value, `>`]]() _ = __mlir_op.`pop.atomic.rmw`[ bin_op = __mlir_attr.`#pop`, ordering = __mlir_attr.`#pop`, + syncscope = scope.value, _type = __mlir_type[`!pop.scalar<`, type.value, `>`], ](value_addr.address, rhs.value) @always_inline fn _max_impl[ - type: DType, // + type: DType, //, *, scope: StringLiteral ](ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): @parameter if is_nvidia_gpu() and type.is_floating_point(): alias integral_type = _integral_type_of[type]() alias unsigned_integral_type = _unsigned_integral_type_of[type]() if rhs >= 0: - _max_impl_base( + _max_impl_base[scope=scope]( ptr.bitcast[Scalar[integral_type]](), bitcast[integral_type](rhs), ) return - _min_impl_base( + _min_impl_base[scope=scope]( ptr.bitcast[Scalar[unsigned_integral_type]](), bitcast[unsigned_integral_type](rhs), ) return - _max_impl_base(ptr, rhs) + _max_impl_base[scope=scope](ptr, rhs) @always_inline fn _min_impl[ - type: DType, // + type: DType, //, *, scope: StringLiteral ](ptr: UnsafePointer[Scalar[type], **_], rhs: Scalar[type]): @parameter if is_nvidia_gpu() and type.is_floating_point(): alias integral_type = _integral_type_of[type]() alias unsigned_integral_type = _unsigned_integral_type_of[type]() if rhs >= 0: - _min_impl_base( + _min_impl_base[scope=scope]( ptr.bitcast[Scalar[integral_type]](), bitcast[integral_type](rhs), ) return - _max_impl_base( + _max_impl_base[scope=scope]( ptr.bitcast[Scalar[unsigned_integral_type]](), bitcast[unsigned_integral_type](rhs), ) return - _min_impl_base(ptr, rhs) + _min_impl_base[scope=scope](ptr, rhs) From 385bc844ed16f1b2f8982adcf9eaef4f1f8248d7 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 29 Nov 2024 10:52:04 -0800 Subject: [PATCH 050/119] [mojo-lang] Fix ternary operator to propagate references. (#51773) An `if else` expression involving memory types with compatible rvalue types can and should propagate the memory value. This allows factoring of the copy and propagation of the reference through ref results. This fixes https://github.com/modularml/mojo/issues/3816 MODULAR_ORIG_COMMIT_REV_ID: bef08814a494ef976e2409e7b992b0546c794b68 --- docs/changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index bef76b5e3d..5c36145f92 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -577,6 +577,9 @@ what we publish. - [Issue #3710](https://github.com/modularml/mojo/issues/3710) - Mojo frees memory while reference to it is still in use. +- [Issue #3816](https://github.com/modularml/mojo/issues/3816) - Ternary + if-operator doesn't propagate origin information. + - The VS Code extension now auto-updates its private copy of the MAX SDK. - The variadic initializer for `SIMD` now works in parameter expressions. From 9d5302e89930b0236af6f109fb82350254d68d5e Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 29 Nov 2024 12:16:17 -0800 Subject: [PATCH 051/119] [mojo-lang] Fix origin union mutability handling. Previously it would treat differing mutabilities conservatively as being immutabable. Now we just "and" them together, which allows them to propagate conditional mutability from callee to callers. With the changes, this "just works" which feels pretty nice: ``` fn my_min[T: Comparable](ref a: T, ref b: T) -> ref [__origin_of(a, b)] T: return a if a < b else b fn main(): s1 = String("hello") s2 = String("world") my_min(s1, s2) += " fine" # hello fine world print(s1, s2) ``` This fixes https://github.com/modularml/mojo/issues/3813 This fixes https://github.com/modularml/mojo/issues/3815 MODULAR_ORIG_COMMIT_REV_ID: 806399a9c99eef117bab5307530a2dcda23b333e --- docs/changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 5c36145f92..9cd221161d 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -580,6 +580,9 @@ what we publish. - [Issue #3816](https://github.com/modularml/mojo/issues/3816) - Ternary if-operator doesn't propagate origin information. +- [Issue #3815](https://github.com/modularml/mojo/issues/3815) - + [BUG] Mutability not preserved when taking the union of two origins. + - The VS Code extension now auto-updates its private copy of the MAX SDK. - The variadic initializer for `SIMD` now works in parameter expressions. From 63b85a2d304a645bc34eb2646f6b9939e6d08470 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 29 Nov 2024 13:32:04 -0800 Subject: [PATCH 052/119] [mojo-lang] Allow multiple memory values in a `ref` specification. This reworks handling of the `ref [x,y,z]` specification for a function argument or ref result to allow multiple memory values, implicitly forming a union like `__origin_of(x,y,z)` does. This enables some more ergonomic use cases, and also allows an address space to be specified as an arbitrary member. With this, you can write a mutability-parametric `min` with just: ``` fn my_min[T: Comparable](ref a: T, ref b: T) -> ref [a, b] T: return a if a < b else b ``` ... which is quite nice IMO! MODULAR_ORIG_COMMIT_REV_ID: 739170c1f0f981ad1a0c4c09831250e0717237ac --- docs/changelog.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 9cd221161d..e3e60f7599 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -50,6 +50,20 @@ what we publish. The consequence of this is that the old hack is no longer needed for these cases! +- Various improvements to origin handling and syntax have landed, including + support for the ternary operator and allowing multiple arguments in a `ref` + specifier (which are implicitly unions). This enables expression of simple + algorithms cleanly: + + ```mojo + fn my_min[T: Comparable](ref a: T, ref b: T) -> ref [a, b] T: + return a if a < b else b + ``` + + It is also nice that `my_min` automatically and implicitly propagates the + mutability of its arguments, so things like `my_min(str1, str2) += "foo"` is + valid. + - The `UnsafePointer` type now has an `origin` parameter that can be used when the `UnsafePointer` is known to point to a value with a known origin. This origin is propagated through the `ptr[]` indirection operation. From a8005be90031a9bd11528af0aece755279e23f2e Mon Sep 17 00:00:00 2001 From: modularbot Date: Fri, 29 Nov 2024 23:14:58 +0000 Subject: [PATCH 053/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024112922 --- examples/life/magic.lock | 839 +++++++++++++++++--------------- examples/magic.lock | 837 ++++++++++++++++--------------- examples/notebooks/magic.lock | 892 ++++++++++++++++++---------------- examples/operators/magic.lock | 837 ++++++++++++++++--------------- magic.lock | 837 ++++++++++++++++--------------- 5 files changed, 2230 insertions(+), 2012 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 9a72997840..72196ab831 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda @@ -29,8 +29,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -83,7 +83,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda @@ -100,10 +100,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda @@ -148,7 +148,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -161,7 +161,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.7-h2774228_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 @@ -173,12 +173,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda @@ -228,7 +228,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -261,9 +261,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -287,14 +287,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda @@ -314,8 +314,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -368,7 +368,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -385,10 +385,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda @@ -433,7 +433,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -446,7 +446,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.7-hd54d049_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 @@ -458,12 +458,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda @@ -513,7 +513,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -546,9 +546,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -572,13 +572,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -596,8 +596,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -648,7 +648,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda @@ -662,10 +662,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda @@ -702,7 +702,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -712,7 +712,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda @@ -723,12 +723,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda @@ -777,7 +777,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -809,9 +809,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -829,7 +829,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda @@ -897,12 +897,12 @@ packages: timestamp: 1727779893392 - kind: conda name: aiohttp - version: 3.11.7 + version: 3.11.8 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda - sha256: e95adfd637644c9a0641bc5fbec04d53b19330568971a24021253e5054f7750e - md5: a1dc198dad91736555c27caa420029b1 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda + sha256: 5a51cfa8c17a1c545f07c8a9bae637b233c803f92f922ce3badb7a81f6e7eba8 + md5: 63eb2bd555d446218c7bbdec2dd746c5 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -917,16 +917,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 909778 - timestamp: 1732220397535 + size: 912229 + timestamp: 1732780345490 - kind: conda name: aiohttp - version: 3.11.7 + version: 3.11.8 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda - sha256: 6f5fc3177188871418f4112e87b708499f6c9c484e175ad8c3a2e08554143e85 - md5: 6d8e94bda91469c00eb617a9cdb7f622 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda + sha256: 991fccd7387b08127a8398cdd499ebb9be7a16a612b024f7f82d0ecbae456b00 + md5: 8caf80b1f8510c2c626831f463fac611 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -941,16 +941,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 870661 - timestamp: 1732220535266 + size: 873606 + timestamp: 1732780440642 - kind: conda name: aiohttp - version: 3.11.7 + version: 3.11.8 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda - sha256: 932bdef3892216f6219bb604319a63fe99a0780acf780d4265bcf10f906ade6b - md5: a5210c6947a961dec22d272c4bed586a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda + sha256: 04dc698f291a0580101baa4df07cc12ed99f025c4aab23e184cfe12cf692fa12 + md5: dc9d21c22f3a000083437b0e99e99f31 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -965,8 +965,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900629 - timestamp: 1732220481990 + size: 900671 + timestamp: 1732780496954 - kind: conda name: aiosignal version: 1.3.1 @@ -1749,13 +1749,12 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.5 - build: h0e61686_1 - build_number: 1 + version: 0.29.6 + build: h0e61686_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda - sha256: 1d7bc75a81cdcd992ebee9b06be6a63963203d7fc2537099bf91fda0573c3be6 - md5: 7143a281febcabfc242a458b7bc12048 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + sha256: b821d0125f8fcb589b880bf3a5e0e1667e285b3006ceb19d96e6d92d049ab787 + md5: 651a6500e5fded51bb7572f4eebcfd7b depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1771,17 +1770,16 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 353633 - timestamp: 1732704043097 + size: 355169 + timestamp: 1732769507038 - kind: conda name: aws-crt-cpp - version: 0.29.5 - build: h6068a22_1 - build_number: 1 + version: 0.29.6 + build: h6068a22_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda - sha256: 15eba2ca46b10a17d60b26d7a6db222f08e1d63c55eb76a19f16c30e06679fe4 - md5: 6c0a760285cb79c46a99b15449ecb9ac + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + sha256: 45b15e8ecad820f9f80bace92cbb29f81b30e0ba31e25b936a13bdb0360a0637 + md5: 7f8ecd32e9afbbf87438367b551c3a8b depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1796,17 +1794,16 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283812 - timestamp: 1732704031684 + size: 283440 + timestamp: 1732769529667 - kind: conda name: aws-crt-cpp - version: 0.29.5 - build: h8bcca62_1 - build_number: 1 + version: 0.29.6 + build: h8bcca62_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda - sha256: 371c509c0cd22360cd39963189ba7aa290b08b7384dd4414895f6186e2aecf7e - md5: ef024742bb2501bd3d7f10b0f9ce5a4d + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + sha256: b6d2ff238a712137afd9b46842235b32a04cac580734873bf86876da6e71dd03 + md5: 8e49f5e86a3e39699b24035fa6d1ad40 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1821,69 +1818,69 @@ packages: - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236161 - timestamp: 1732704224415 + size: 236490 + timestamp: 1732769764315 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h775d804_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda - sha256: dae09cbccc5af7282a9b74b424a4d451362fe3b31eb2ccbf571db321f9619c52 - md5: 6e691206e10feb236ca7c0cf985797a8 + build: h3b64406_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda + sha256: 10ce9c203d31229432421a841d8d135d3e942637571aae4bb2d3c7d5242e7f05 + md5: f9e46a4bb5a04cbca08355f166ce87c8 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2794659 - timestamp: 1732184111138 + size: 2722689 + timestamp: 1732812825640 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h8577fd2_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda - sha256: ddd7aaa925ac3d569aa3dc1fe0239fa5c57034a1360683c41d310d6805f0d5bd - md5: 3c789cd7093639a2662b14b87f11b04c + build: h5558e3c_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda + sha256: 4881f7b4f5e3c797332cffb990df246a422346b220a9c16014f274beb2a276f5 + md5: ba7abdc93b0ade11d774b47aaab84737 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2737395 - timestamp: 1732184718613 + size: 2945541 + timestamp: 1732812288219 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: hdaa582e_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda - sha256: a6fdba49b87ad3b92c219f60ac31e0d0b4fea7e651efe6d668288e5a0f7a1755 - md5: 0dca4b37cf80312f8ef84b649e6ad3a3 + build: h7085e57_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda + sha256: 0908a82e7c50c51d5ee0ca543dbe70cbe1963e6e8f80ffa58ea6d26e5c68251e + md5: feec198cb18a5e90aa36c97328567d63 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1891,8 +1888,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2951998 - timestamp: 1732184141 + size: 2813856 + timestamp: 1732812337182 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -3604,6 +3601,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT size: 101872 timestamp: 1732707756745 - kind: conda @@ -3620,6 +3618,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT size: 101255 timestamp: 1732707891645 - kind: conda @@ -3636,28 +3635,28 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT size: 85623 timestamp: 1732707871414 - kind: conda name: httpx - version: 0.27.2 + version: 0.28.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - sha256: 1a33f160548bf447e15c0273899d27e4473f1d5b7ca1441232ec2d9d07c56d03 - md5: 7e9ac3faeebdbd7b53b462c41891e7f7 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + sha256: cb7895446cd93091300accea6afbc8d9811a3c5899922ccfeeff97d9b55909dc + md5: 22878824a87f1af2ad48665f9d5bfcc8 depends: - anyio - certifi - httpcore 1.* - idna - - python >=3.8 - - sniffio + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 65085 - timestamp: 1724778453275 + size: 63183 + timestamp: 1732831049776 - kind: conda name: huggingface_hub version: 0.26.2 @@ -4175,13 +4174,14 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h3d75c4c_0_cpu + build: h944b843_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda - sha256: 46d841b3f316d52d0fa085d5c583a4370de8223afc4f1bbf57eaebdf3aede7f1 - md5: cfee3c6a6ddeb26bba5d96ce7924a817 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda + sha256: a6708e09c64711096439a23c76df161ecff98837dfb0ace07b33a9147141c07f + md5: 05ed5955fe5a46c9475d6c63d36291f5 depends: - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -4199,7 +4199,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.8.0,<2.9.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4207,41 +4207,41 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8024186 - timestamp: 1732536195865 + license_family: APACHE + size: 8042546 + timestamp: 1732864233719 - kind: conda name: libarrow version: 18.1.0 - build: h94eee4b_0_cpu - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda - sha256: 4f8ad6d3ac85f17b7ce319c1f8d0ffacee16403341315677977d3c7b9788166e - md5: 1718fa336f42a0b24b822457df7ce43d + build: hacc6a60_1_cpu + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda + sha256: c06d055a3b1fdc1a670481345a11ab7d2225074d0a98e448419e5cd828c070f4 + md5: 4957a938ab42181d6c9748920f13a027 depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.8.0,<2.9.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4249,39 +4249,42 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 - size: 8783805 - timestamp: 1732536115314 + size: 5470388 + timestamp: 1732863147130 - kind: conda name: libarrow version: 18.1.0 - build: hb943b0e_0_cpu - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda - sha256: acc1b6ec23a964ec87722fc90b55d47f8cb03e211e86b9ff312bed588cfc400a - md5: f2dac358d4bd6b57d9b47f11cca0ea8c + build: he15abb1_1_cpu + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda + sha256: afc81af2e533cc35295aebae4fb382e770310d9b1ac31837456b440d35c54cf7 + md5: bd3e35a6f3f869b4777488452f315008 depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.8.0,<3.0a0 + - libstdcxx >=13 + - libutf8proc >=2.8.0,<2.9.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4289,171 +4292,187 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 5497775 - timestamp: 1732535993576 + license_family: APACHE + size: 8780597 + timestamp: 1732863546099 - kind: conda name: libarrow-acero version: 18.1.0 - build: h286801f_0_cpu + build: h1dc2043_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda - sha256: 1b4ae51de889becdd7aca2053e5115d65e2ea94b91d07d2e297d8d3c4666cec5 - md5: fd53fc3858c13425e3334b0af9b6637f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda + sha256: 54709d2e29fe13167bb2b5e7755382723684197b32188ea18c9c48f5a911af46 + md5: 8a7dfd6c38ecc940e8edbf341819b2fe depends: - __osx >=11.0 - - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu - libcxx >=18 license: Apache-2.0 - size: 484735 - timestamp: 1732536132543 + size: 484158 + timestamp: 1732863376127 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5888daf_0_cpu + build: h5888daf_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda - sha256: ad2cab7ca7320642a655ac1214248a64d60a0ce771fa8e7b5378746c16be1c64 - md5: d2f94a6f24f028544c7a4cb1b50c5eca + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda + sha256: 3de5719a7035baad7e665116dce7bb3d069f0c1916e163c553e2e491bbe8b614 + md5: 6197dcb930f6254e9b2fdc416be56b71 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 610906 - timestamp: 1732536155092 + license_family: APACHE + size: 611272 + timestamp: 1732863586114 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_0_cpu + build: h5ad3122_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda - sha256: 216f791e47c774b1d44c89fe7839e03646285cf3220961306b90eec7bf4a6d71 - md5: 7b55a3bc6a3c9a75e509e68d89afd77a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda + sha256: 52bcb30299f9e49c11eaa3c49aa4360e530ead6d906f883068cd2759d355361e + md5: 8d1175956362366c0550da2a81730561 depends: - - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow 18.1.0 h944b843_1_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 577886 - timestamp: 1732536278269 + license_family: APACHE + size: 578289 + timestamp: 1732864300809 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h286801f_0_cpu + build: h1dc2043_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda - sha256: a52ba6632837f2e5ec1c91ea4271ae7bd84fe9af348467e234a338b2fc78f41c - md5: 4020134362b81be7b91c7c6ae086eecc + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda + sha256: 7b5b462c709c2269af5dfec695028c6efe67dc7eb90b485e0e71fae6ecce6f6d + md5: 27c23281c2e2b56fec1b6d7dd1df439a depends: - __osx >=11.0 - - libarrow 18.1.0 hb943b0e_0_cpu - - libarrow-acero 18.1.0 h286801f_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu + - libarrow-acero 18.1.0 h1dc2043_1_cpu - libcxx >=18 - - libparquet 18.1.0 hda0ea68_0_cpu + - libparquet 18.1.0 hf4cc9e7_1_cpu license: Apache-2.0 - size: 489616 - timestamp: 1732537344927 + size: 489630 + timestamp: 1732865758291 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5888daf_0_cpu + build: h5888daf_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda - sha256: da77235b3874b50facb632cc409bee0df81e9dd7c25543a5e8b92873bd2d2a20 - md5: 7834b3a11d0f1ee7e13b4533e361586f + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda + sha256: 7b3db3d5a7e411f8897e8d74403c1d871f3054300f5009c4bdf75da011bc3f42 + md5: 77501831a2aabbaabac55e8cb3b6900a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h94eee4b_0_cpu - - libarrow-acero 18.1.0 h5888daf_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu + - libarrow-acero 18.1.0 h5888daf_1_cpu - libgcc >=13 - - libparquet 18.1.0 h6bd9018_0_cpu + - libparquet 18.1.0 h6bd9018_1_cpu - libstdcxx >=13 license: Apache-2.0 - size: 588196 - timestamp: 1732536246424 + license_family: APACHE + size: 585458 + timestamp: 1732863686753 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_0_cpu + build: h5ad3122_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda - sha256: 17cd3bc19ae04d1a5b3795fac0fb796cc90eabeb3359a39eaf5dfed84385b4de - md5: 98d2712cebf91fc823e6231f7e55eda3 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda + sha256: f6a01e972523d28f8cbabfe803fb136df2b6fae26aaad21d6c539bbd818c0fba + md5: f02295f8a252e8588d220364164565ae depends: - - libarrow 18.1.0 h3d75c4c_0_cpu - - libarrow-acero 18.1.0 h5ad3122_0_cpu + - libarrow 18.1.0 h944b843_1_cpu + - libarrow-acero 18.1.0 h5ad3122_1_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_0_cpu + - libparquet 18.1.0 h23a96eb_1_cpu - libstdcxx >=13 license: Apache-2.0 - size: 561486 - timestamp: 1732536339536 + license_family: APACHE + size: 559007 + timestamp: 1732864377646 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h14ec2bd_0_cpu + build: h14ec2bd_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda - sha256: 30723e91df659aa971d9964e25730276295cf3a45be557ec1df9d413c31c44a9 - md5: f93217605309abc1c0314102036da21c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda + sha256: ac3756dcfb242877719c629d343f000b807130aec6f41d4167a392eb152c1549 + md5: e1160e0f8017b4f4ae55578ff0fddd98 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h3d75c4c_0_cpu - - libarrow-acero 18.1.0 h5ad3122_0_cpu - - libarrow-dataset 18.1.0 h5ad3122_0_cpu + - libarrow 18.1.0 h944b843_1_cpu + - libarrow-acero 18.1.0 h5ad3122_1_cpu + - libarrow-dataset 18.1.0 h5ad3122_1_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 515320 - timestamp: 1732536368053 + license_family: APACHE + size: 515219 + timestamp: 1732864413881 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h5c8f2c3_0_cpu + build: h5c8f2c3_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda - sha256: d40e4a3061d58d07d017a6e439883ce1b9860f3a960a5aead8da189f8795a92c - md5: 51dc5a7117ec264e0a5cc1a5d82437dd + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda + sha256: e77a354bfc0ba7b04c856f1bb16e7b08950bcde54026087bafec46090380fcc1 + md5: 5d47bd2674afd104dbe2f2f3534594b0 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h94eee4b_0_cpu - - libarrow-acero 18.1.0 h5888daf_0_cpu - - libarrow-dataset 18.1.0 h5888daf_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu + - libarrow-acero 18.1.0 h5888daf_1_cpu + - libarrow-dataset 18.1.0 h5888daf_1_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 520871 - timestamp: 1732536289093 + license_family: APACHE + size: 520681 + timestamp: 1732863726954 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h6a6e5c5_0_cpu + build: hf3d3107_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda - sha256: aa673d86e56c3b17b66f5ffcd8ce98b93754c9c07e2e6aff96d0dd02135c0969 - md5: 9b2fd35f01e23972abb91543bbd6d84c + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda + sha256: 725aa1db6b91068613c1effdf8f23d592dd1e6c95722e27eb63ad94c98d47c1b + md5: 72ec5bcfc66b3cc5e865c7c90b24c43e depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb943b0e_0_cpu - - libarrow-acero 18.1.0 h286801f_0_cpu - - libarrow-dataset 18.1.0 h286801f_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu + - libarrow-acero 18.1.0 h1dc2043_1_cpu + - libarrow-dataset 18.1.0 h1dc2043_1_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - size: 452400 - timestamp: 1732537518703 + size: 451765 + timestamp: 1732866475770 - kind: conda name: libasprintf version: 0.22.5 @@ -5547,6 +5566,7 @@ packages: - libgcrypt-lib 1.11.0 h86ecc28_2 - libgpg-error >=1.51,<2.0a0 license: GPL-2.0-or-later + license_family: GPL size: 35981 timestamp: 1732523336202 - kind: conda @@ -5564,6 +5584,7 @@ packages: - libgcrypt-lib 1.11.0 hb9d3cd8_2 - libgpg-error >=1.51,<2.0a0 license: GPL-2.0-or-later + license_family: GPL size: 33257 timestamp: 1732523208992 - kind: conda @@ -6548,55 +6569,60 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_0_cpu + build: h23a96eb_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda - sha256: be9d2527e709007aef42c39d9ab49163e587c25dc23cc1baba8af91edce16437 - md5: 99592ed1d2877136ebd192789164891a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda + sha256: ac045716c4e643d5d92c2dee96f50cdd8aaac9ce3f768b2375aa545b0551d89e + md5: a0e6b8bb23a75fbe8d38cf3cab6abf44 depends: - - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow 18.1.0 h944b843_1_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1117420 - timestamp: 1732536323359 + license_family: APACHE + size: 1116708 + timestamp: 1732864357500 - kind: conda name: libparquet version: 18.1.0 - build: h6bd9018_0_cpu + build: h6bd9018_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda - sha256: d5f73b48e754af5874f48ef22dda1339b74597b66ff5ffeff8a2290f97a9611b - md5: 580349cffeac814a32ff661dcbe72821 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda + sha256: 0df119f4c1a2387d910e132c670b29ee5b29dd79384549de6f1a43067515c8ba + md5: 1054909202f86e38bbbb7ca1131b8471 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1204506 - timestamp: 1732536224976 + license_family: APACHE + size: 1203523 + timestamp: 1732863665743 - kind: conda name: libparquet version: 18.1.0 - build: hda0ea68_0_cpu + build: hf4cc9e7_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda - sha256: a6a22f0692d99a3cb6306ebd4d2e840c980d08797386f300c47604ee8865af4d - md5: 22f05c8b1c1b82eb5efc2a89c08ee047 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda + sha256: 974b773c8a000b27ef3283b8744cfda9e46afff7d66c708b90971cc4d681805e + md5: 1d41143609ae6961de983182053fbdf2 depends: - __osx >=11.0 - - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 874829 - timestamp: 1732537283879 + size: 874294 + timestamp: 1732865555683 - kind: conda name: libpng version: 1.6.44 @@ -7178,43 +7204,49 @@ packages: - kind: conda name: libutf8proc version: 2.8.0 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 - sha256: 49082ee8d01339b225f7f8c60f32a2a2c05fe3b16f31b554b4fb2c1dea237d1c - md5: ede4266dc02e875fe1ea77b25dd43747 + build: h812390e_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda + sha256: 25dc68d188336e1b83f28175b5146c2192e49a3236b340962c97727c6d47ede9 + md5: 83c5f8e4431ad4b6b7e22c4edd898163 depends: - - libgcc-ng >=12 + - libgcc >=13 license: MIT license_family: MIT - size: 101070 - timestamp: 1667316029302 + size: 81515 + timestamp: 1732829682446 - kind: conda name: libutf8proc version: 2.8.0 - build: h1a8c8d9_0 + build: hc098a78_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 - sha256: a3faddac08efd930fa3a1cc254b5053b4ed9428c49a888d437bf084d403c931a - md5: f8c9c41a122ab3abdf8943b13f4957ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda + sha256: 7807a98522477a8bf12460402845224f607ab6e1e73ac316b667169f5143cfe5 + md5: ed89b8bf0d74d23ce47bcf566dd36608 + depends: + - __osx >=11.0 license: MIT license_family: MIT - size: 103492 - timestamp: 1667316405233 + size: 82462 + timestamp: 1732829832932 - kind: conda name: libutf8proc version: 2.8.0 - build: h4e544f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 - sha256: c1956b64ad9613c66cf87398f5e2c36d071034a93892da7e8cc22e75cface878 - md5: bf0defbd8ac06270fb5ec05c85fb3c96 + build: hf23e847_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb + md5: b1aa0faa95017bca11369bd080487ec4 depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: MIT license_family: MIT - size: 101529 - timestamp: 1667315331359 + size: 80852 + timestamp: 1732829699583 - kind: conda name: libuuid version: 2.38.1 @@ -7700,76 +7732,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - sha256: d42d9672b36eed3bc4d846d0ae8e20630d80ec5ff54966af36bb0e84eb018a7c - md5: 21b8f08296f321b75659cce32688750b - depends: - - max-core ==24.6.0.dev2024112805 release - - max-python >=24.6.0.dev2024112805,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112805 release - - mblack ==24.6.0.dev2024112805 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + sha256: d2d1d27c804d40be907e5f24dee2c96a83530f99a4aa4698d4bfbcd2389f8a68 + md5: 07dc8704dd68d983b1292db751b677fe + depends: + - max-core ==24.6.0.dev2024112922 release + - max-python >=24.6.0.dev2024112922,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024112922 release license: LicenseRef-Modular-Proprietary - size: 9927 - timestamp: 1732771319615 + size: 9917 + timestamp: 1732918079788 - kind: conda name: max-core - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda - sha256: 9b02550f0d393451fff14ba476998247e8ce9230c8cde3b496b04ba72ca58a40 - md5: d351616984b25f89afd32b0a98c89928 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda + sha256: ab1ec7348e8edca48914c0203b5995c8013347ad0fd93d5e38c8e62261cb6ca2 + md5: 18c1fd2b6354db88e967cb200fee0a55 depends: - - mblack ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112922 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254576173 - timestamp: 1732771254860 + size: 254726602 + timestamp: 1732918231240 - kind: conda name: max-core - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda - sha256: a03c929c723950872b136f418c4f197907b850e70382a5f74d5d5540abd1ccc5 - md5: 02c7bc4863ff19c0322ed890145ba23b + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda + sha256: 4584866065437877ec865afb88d99ef983bd284f2b5e88750f7ba4616c73de54 + md5: a05d93b813689510b14c1c478c0f7e20 depends: - - mblack ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112922 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258211572 - timestamp: 1732771319613 + size: 258398513 + timestamp: 1732918079786 - kind: conda name: max-core - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda - sha256: 1a7f82f0029dec8f68847f852e1eac5172c1acc5305541952ae95ce6c3b97436 - md5: 977b26b7ee540c254a23c71e9ba7f1bf + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda + sha256: faacbe747fdad79e9275664da544b174a5e77b705331988fed5d943b77a49c11 + md5: 72bedc7bfeff8091539861c600246817 depends: - - mblack ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112922 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220134322 - timestamp: 1732771049861 + size: 220273860 + timestamp: 1732917995058 - kind: conda name: max-python - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda - sha256: ff1ddb4400ac03c4f6ad5ffc016b5f9b087e1aa967d51eac72597036e478b451 - md5: 9017365163eec21de4fed0b35c6be7d9 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda + sha256: 129fabb8fb1086a760e1e49654fcccf016454f224eda1c37016f487a37e8770b + md5: f581c28718cefb1960ba65708ff8303a depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python 3.12.* - pillow - fastapi @@ -7791,18 +7823,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128343790 - timestamp: 1732771254868 + size: 128543797 + timestamp: 1732918231248 - kind: conda name: max-python - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda - sha256: 69fb28538434178c34aabf57708859131a5d2f26410802624d401bb0ba3be4a5 - md5: c19242ce517a4d07ff802dca119126e1 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda + sha256: 89ee58ba2ea8b51d5816121a9a662d64455313d840f4726500c531f557b56d99 + md5: 05b1090842c71dd75a66757658960f7f depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python 3.12.* - pillow - fastapi @@ -7824,18 +7856,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132094887 - timestamp: 1732771319621 + size: 132246699 + timestamp: 1732918079795 - kind: conda name: max-python - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda - sha256: 75c7d37c1b6fb68c6ef5054ed88cb8ac8bcc4b7273e80b8f9209202a0ae02de1 - md5: 1215e1fa5c7b0cc518447bc214b7e5a5 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda + sha256: 689d02e41019da522704fe705487d1b7ea9ab228c6c49f6917a9caee9d4002b9 + md5: fa1eec6a9b9d84f6c097005b5dc0b5a6 depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python 3.12.* - pillow - fastapi @@ -7857,17 +7889,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118976325 - timestamp: 1732771049864 + size: 119120270 + timestamp: 1732917995061 - kind: conda name: mblack - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - sha256: 821a0e6bc0367ccdca619f0935e0f13a92138a6b2681f617aae2d2000d0a891f - md5: f9fcd437962beaa0c577bcbeecd1e69c + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + sha256: b2533bf1ffe77004616d6c78440666b71a1d08d09057f3da900c31ea7e277d33 + md5: 5ddc332663efce023813d99e7e474c28 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7877,8 +7909,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130612 - timestamp: 1732771319618 + size: 130611 + timestamp: 1732918079791 - kind: conda name: mdurl version: 0.1.2 @@ -7896,21 +7928,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - sha256: 2702029742752c2bb13fe108c3e5a577151b80b0e0675a0f5a819467b579c136 - md5: 6c9019d1b099600e3a50dca268b658d3 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + sha256: 0e5cbf4fed2931f0cd8051b3c909fc8f7e2d20dbccfbe9af4bac76a24a5cac21 + md5: bf727d981f2de8cf1cb7ac9cf222c70b depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22943 - timestamp: 1732771319619 + size: 22938 + timestamp: 1732918079793 - kind: conda name: mpg123 version: 1.32.9 @@ -9229,6 +9261,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 + license_family: APACHE size: 25375 timestamp: 1732610892198 - kind: conda @@ -9248,6 +9281,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 + license_family: APACHE size: 25213 timestamp: 1732610785600 - kind: conda @@ -9267,6 +9301,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 + license_family: APACHE size: 25374 timestamp: 1732611006864 - kind: conda @@ -9289,6 +9324,7 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 4612916 timestamp: 1732610377259 - kind: conda @@ -9311,6 +9347,7 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 4406662 timestamp: 1732610939832 - kind: conda @@ -9333,6 +9370,7 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 3909116 timestamp: 1732610863261 - kind: conda @@ -9748,19 +9786,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.17 + version: 0.0.18 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - sha256: f351636a91163de28cf602c755abd1b5ad858e4a790c3a30d5a5aa1066c0550c - md5: a08ea55eb3ad403b12639cd3a4a8d28f + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + sha256: e4c762c261f152cb4219a736fffbd8225ea1e060ce250318aae89df5d708a089 + md5: 8a5e488f98049813ba403c5f751f6e1e depends: - python >=3.8 license: Apache-2.0 license_family: Apache - size: 27810 - timestamp: 1730382122271 + size: 27752 + timestamp: 1732867990988 - kind: conda name: python-tzdata version: '2024.2' @@ -10966,58 +11004,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.13.1 + version: 0.14.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - sha256: 2f12a5af13d440aa75970e3d0d1ea3192916848473967b4ecb483627c01333cb - md5: 82a4704166144f27e9c83803bff5bf53 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + sha256: 4d7f1c77b928a66ae3b0089e288e7fdeb826bf0dabba9799488017e6a9b84f38 + md5: 9eb8a3f5d36ca3e7f686e7a5d85aff72 depends: - python >=3.9 - - typer-slim-standard 0.13.1 hd8ed1ab_0 + - typer-slim-standard 0.14.0 hd8ed1ab_0 license: MIT license_family: MIT - size: 55352 - timestamp: 1732084066966 + size: 54637 + timestamp: 1732848384457 - kind: conda name: typer-slim - version: 0.13.1 - build: pyhff2d567_0 + version: 0.14.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - sha256: b190bcd5f341ba8843f2f1ce43b5e8dae770bb84d49e2ce5b346e4d8098367a1 - md5: 85283fb942fa2604c3db03483027ced2 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + sha256: 883969c10b9837bb18a340ffb01a984ef6b4655fc72ff05aeb7bc659c9a1229d + md5: 3674a4cd7fd8e8a7277af2b30965925d depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - shellingham >=1.3.0 - - typer >=0.13.1,<0.13.2.0a0 - rich >=10.11.0 + - typer >=0.14.0,<0.14.1.0a0 license: MIT license_family: MIT - size: 43463 - timestamp: 1732084053693 + size: 43504 + timestamp: 1732848371202 - kind: conda name: typer-slim-standard - version: 0.13.1 + version: 0.14.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - sha256: 14ac72d0533bc2f37f8dc85b90b45a91ca28ee0995c520b16a40f34629749c7a - md5: a9bf95ed3c65bf936292d944bf3df36d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + sha256: 0e09e393e75028a0e827c7177e0fb1a070c87756e47b5ae6418423e22b10dfac + md5: 9e1e1f9c84add9637ca715f8fb71a83f depends: - rich - shellingham - - typer-slim 0.13.1 pyhff2d567_0 + - typer-slim 0.14.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 48744 - timestamp: 1732084054211 + size: 49180 + timestamp: 1732848371718 - kind: conda name: typing-extensions version: 4.12.2 @@ -11191,6 +11229,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 409700 timestamp: 1732689603044 - kind: conda @@ -11210,6 +11249,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 404235 timestamp: 1732689685476 - kind: conda @@ -11229,6 +11269,7 @@ packages: constrains: - __osx >=11.0 license: MIT + license_family: MIT size: 356744 timestamp: 1732689860624 - kind: conda @@ -11296,6 +11337,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-2-Clause + license_family: BSD size: 63807 timestamp: 1732523690292 - kind: conda @@ -11312,6 +11354,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause + license_family: BSD size: 64783 timestamp: 1732523806 - kind: conda @@ -11328,6 +11371,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause + license_family: BSD size: 61043 timestamp: 1732523852129 - kind: conda @@ -11854,18 +11898,19 @@ packages: - kind: conda name: zipp version: 3.21.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - sha256: 232a30e4b0045c9de5e168dda0328dc0e28df9439cdecdfb97dd79c1c82c4cec - md5: fee389bf8a4843bd7a2248ce11b7f188 + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 21702 - timestamp: 1731262194278 + size: 21809 + timestamp: 1732827613585 - kind: conda name: zlib version: 1.3.1 diff --git a/examples/magic.lock b/examples/magic.lock index a5bd548e95..3eb111afa3 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py311h2dc5d0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -26,8 +26,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -78,10 +78,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -120,7 +120,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -178,7 +178,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda @@ -205,9 +205,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -225,13 +225,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py311h58d527c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py311h58d527c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -248,8 +248,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -286,7 +286,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -301,10 +301,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -332,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -343,7 +343,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -401,7 +401,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py311h5487e9b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda @@ -428,9 +428,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -448,12 +448,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py311h4921393_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py311h4921393_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -470,8 +470,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -508,7 +508,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -520,10 +520,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -548,7 +548,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -557,7 +557,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -614,7 +614,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda @@ -640,9 +640,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -660,7 +660,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -727,12 +727,12 @@ packages: timestamp: 1727779893392 - kind: conda name: aiohttp - version: 3.11.7 + version: 3.11.8 build: py311h2dc5d0c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py311h2dc5d0c_0.conda - sha256: 1593324a87e5e86124a99b37d89daa38f5e715ec2f51efad687d099b7a0e37e2 - md5: 97f233735417eb21002c2b65734efd36 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py311h2dc5d0c_0.conda + sha256: 754ba9e0286a4daa5b9339e79e55f026f37c40500b382cf9b616bca4e22084cc + md5: c3f865299ddb7f52b7f85bc65ba5df29 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -747,16 +747,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 918112 - timestamp: 1732220437696 + size: 920889 + timestamp: 1732780337315 - kind: conda name: aiohttp - version: 3.11.7 + version: 3.11.8 build: py311h4921393_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py311h4921393_0.conda - sha256: 10ebda6e4b59da2f02e4ab33b3db354860511840dfefd6e3d3bb91eefb17e23f - md5: f28eadd7e41b5ab5c0bc7cf37a7c3c7b + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py311h4921393_0.conda + sha256: f2ac631e80fd55d6ab5e4a7624c4174e74b2b39c73b6e0f131453bf1431ec555 + md5: 6b0f861eaa6c8279b7131e0f7e9627c2 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -771,16 +771,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 876337 - timestamp: 1732220489509 + size: 881546 + timestamp: 1732780521684 - kind: conda name: aiohttp - version: 3.11.7 + version: 3.11.8 build: py311h58d527c_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py311h58d527c_0.conda - sha256: fe5a23c2bdf15776fb9a7763f7a9aba9efcc9b7dc09df83918bbb3d2ff2ecf56 - md5: 1a41cfaf6a2fe1887a94dc3afbeb65ac + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py311h58d527c_0.conda + sha256: a27c895653dda4f1571f52bc062a6138a069f6d9cdadc900fd72c30c70b9ae8f + md5: f512010b07013ca24f2aa4c47e087a1f depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -795,8 +795,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 911216 - timestamp: 1732220495568 + size: 912113 + timestamp: 1732780432515 - kind: conda name: aiosignal version: 1.3.1 @@ -1475,13 +1475,12 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.5 - build: h0e61686_1 - build_number: 1 + version: 0.29.6 + build: h0e61686_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda - sha256: 1d7bc75a81cdcd992ebee9b06be6a63963203d7fc2537099bf91fda0573c3be6 - md5: 7143a281febcabfc242a458b7bc12048 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + sha256: b821d0125f8fcb589b880bf3a5e0e1667e285b3006ceb19d96e6d92d049ab787 + md5: 651a6500e5fded51bb7572f4eebcfd7b depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1497,17 +1496,16 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 353633 - timestamp: 1732704043097 + size: 355169 + timestamp: 1732769507038 - kind: conda name: aws-crt-cpp - version: 0.29.5 - build: h6068a22_1 - build_number: 1 + version: 0.29.6 + build: h6068a22_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda - sha256: 15eba2ca46b10a17d60b26d7a6db222f08e1d63c55eb76a19f16c30e06679fe4 - md5: 6c0a760285cb79c46a99b15449ecb9ac + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + sha256: 45b15e8ecad820f9f80bace92cbb29f81b30e0ba31e25b936a13bdb0360a0637 + md5: 7f8ecd32e9afbbf87438367b551c3a8b depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1522,17 +1520,16 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283812 - timestamp: 1732704031684 + size: 283440 + timestamp: 1732769529667 - kind: conda name: aws-crt-cpp - version: 0.29.5 - build: h8bcca62_1 - build_number: 1 + version: 0.29.6 + build: h8bcca62_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda - sha256: 371c509c0cd22360cd39963189ba7aa290b08b7384dd4414895f6186e2aecf7e - md5: ef024742bb2501bd3d7f10b0f9ce5a4d + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + sha256: b6d2ff238a712137afd9b46842235b32a04cac580734873bf86876da6e71dd03 + md5: 8e49f5e86a3e39699b24035fa6d1ad40 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1547,69 +1544,69 @@ packages: - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236161 - timestamp: 1732704224415 + size: 236490 + timestamp: 1732769764315 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h775d804_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda - sha256: dae09cbccc5af7282a9b74b424a4d451362fe3b31eb2ccbf571db321f9619c52 - md5: 6e691206e10feb236ca7c0cf985797a8 + build: h3b64406_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda + sha256: 10ce9c203d31229432421a841d8d135d3e942637571aae4bb2d3c7d5242e7f05 + md5: f9e46a4bb5a04cbca08355f166ce87c8 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2794659 - timestamp: 1732184111138 + size: 2722689 + timestamp: 1732812825640 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h8577fd2_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda - sha256: ddd7aaa925ac3d569aa3dc1fe0239fa5c57034a1360683c41d310d6805f0d5bd - md5: 3c789cd7093639a2662b14b87f11b04c + build: h5558e3c_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda + sha256: 4881f7b4f5e3c797332cffb990df246a422346b220a9c16014f274beb2a276f5 + md5: ba7abdc93b0ade11d774b47aaab84737 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2737395 - timestamp: 1732184718613 + size: 2945541 + timestamp: 1732812288219 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: hdaa582e_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda - sha256: a6fdba49b87ad3b92c219f60ac31e0d0b4fea7e651efe6d668288e5a0f7a1755 - md5: 0dca4b37cf80312f8ef84b649e6ad3a3 + build: h7085e57_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda + sha256: 0908a82e7c50c51d5ee0ca543dbe70cbe1963e6e8f80ffa58ea6d26e5c68251e + md5: feec198cb18a5e90aa36c97328567d63 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1617,8 +1614,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2951998 - timestamp: 1732184141 + size: 2813856 + timestamp: 1732812337182 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2707,6 +2704,7 @@ packages: - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: MIT + license_family: MIT size: 84562 timestamp: 1732707884099 - kind: conda @@ -2723,6 +2721,7 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: MIT + license_family: MIT size: 99955 timestamp: 1732707791797 - kind: conda @@ -2739,28 +2738,28 @@ packages: - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: MIT + license_family: MIT size: 98813 timestamp: 1732707937311 - kind: conda name: httpx - version: 0.27.2 + version: 0.28.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - sha256: 1a33f160548bf447e15c0273899d27e4473f1d5b7ca1441232ec2d9d07c56d03 - md5: 7e9ac3faeebdbd7b53b462c41891e7f7 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + sha256: cb7895446cd93091300accea6afbc8d9811a3c5899922ccfeeff97d9b55909dc + md5: 22878824a87f1af2ad48665f9d5bfcc8 depends: - anyio - certifi - httpcore 1.* - idna - - python >=3.8 - - sniffio + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 65085 - timestamp: 1724778453275 + size: 63183 + timestamp: 1732831049776 - kind: conda name: huggingface_hub version: 0.26.2 @@ -3167,13 +3166,14 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h3d75c4c_0_cpu + build: h944b843_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda - sha256: 46d841b3f316d52d0fa085d5c583a4370de8223afc4f1bbf57eaebdf3aede7f1 - md5: cfee3c6a6ddeb26bba5d96ce7924a817 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda + sha256: a6708e09c64711096439a23c76df161ecff98837dfb0ace07b33a9147141c07f + md5: 05ed5955fe5a46c9475d6c63d36291f5 depends: - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3191,7 +3191,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.8.0,<2.9.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3199,41 +3199,41 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8024186 - timestamp: 1732536195865 + license_family: APACHE + size: 8042546 + timestamp: 1732864233719 - kind: conda name: libarrow version: 18.1.0 - build: h94eee4b_0_cpu - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda - sha256: 4f8ad6d3ac85f17b7ce319c1f8d0ffacee16403341315677977d3c7b9788166e - md5: 1718fa336f42a0b24b822457df7ce43d + build: hacc6a60_1_cpu + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda + sha256: c06d055a3b1fdc1a670481345a11ab7d2225074d0a98e448419e5cd828c070f4 + md5: 4957a938ab42181d6c9748920f13a027 depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.8.0,<2.9.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3241,39 +3241,42 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 - size: 8783805 - timestamp: 1732536115314 + size: 5470388 + timestamp: 1732863147130 - kind: conda name: libarrow version: 18.1.0 - build: hb943b0e_0_cpu - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda - sha256: acc1b6ec23a964ec87722fc90b55d47f8cb03e211e86b9ff312bed588cfc400a - md5: f2dac358d4bd6b57d9b47f11cca0ea8c + build: he15abb1_1_cpu + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda + sha256: afc81af2e533cc35295aebae4fb382e770310d9b1ac31837456b440d35c54cf7 + md5: bd3e35a6f3f869b4777488452f315008 depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.8.0,<3.0a0 + - libstdcxx >=13 + - libutf8proc >=2.8.0,<2.9.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3281,171 +3284,187 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 5497775 - timestamp: 1732535993576 + license_family: APACHE + size: 8780597 + timestamp: 1732863546099 - kind: conda name: libarrow-acero version: 18.1.0 - build: h286801f_0_cpu + build: h1dc2043_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda - sha256: 1b4ae51de889becdd7aca2053e5115d65e2ea94b91d07d2e297d8d3c4666cec5 - md5: fd53fc3858c13425e3334b0af9b6637f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda + sha256: 54709d2e29fe13167bb2b5e7755382723684197b32188ea18c9c48f5a911af46 + md5: 8a7dfd6c38ecc940e8edbf341819b2fe depends: - __osx >=11.0 - - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu - libcxx >=18 license: Apache-2.0 - size: 484735 - timestamp: 1732536132543 + size: 484158 + timestamp: 1732863376127 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5888daf_0_cpu + build: h5888daf_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda - sha256: ad2cab7ca7320642a655ac1214248a64d60a0ce771fa8e7b5378746c16be1c64 - md5: d2f94a6f24f028544c7a4cb1b50c5eca + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda + sha256: 3de5719a7035baad7e665116dce7bb3d069f0c1916e163c553e2e491bbe8b614 + md5: 6197dcb930f6254e9b2fdc416be56b71 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 610906 - timestamp: 1732536155092 + license_family: APACHE + size: 611272 + timestamp: 1732863586114 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_0_cpu + build: h5ad3122_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda - sha256: 216f791e47c774b1d44c89fe7839e03646285cf3220961306b90eec7bf4a6d71 - md5: 7b55a3bc6a3c9a75e509e68d89afd77a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda + sha256: 52bcb30299f9e49c11eaa3c49aa4360e530ead6d906f883068cd2759d355361e + md5: 8d1175956362366c0550da2a81730561 depends: - - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow 18.1.0 h944b843_1_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 577886 - timestamp: 1732536278269 + license_family: APACHE + size: 578289 + timestamp: 1732864300809 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h286801f_0_cpu + build: h1dc2043_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda - sha256: a52ba6632837f2e5ec1c91ea4271ae7bd84fe9af348467e234a338b2fc78f41c - md5: 4020134362b81be7b91c7c6ae086eecc + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda + sha256: 7b5b462c709c2269af5dfec695028c6efe67dc7eb90b485e0e71fae6ecce6f6d + md5: 27c23281c2e2b56fec1b6d7dd1df439a depends: - __osx >=11.0 - - libarrow 18.1.0 hb943b0e_0_cpu - - libarrow-acero 18.1.0 h286801f_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu + - libarrow-acero 18.1.0 h1dc2043_1_cpu - libcxx >=18 - - libparquet 18.1.0 hda0ea68_0_cpu + - libparquet 18.1.0 hf4cc9e7_1_cpu license: Apache-2.0 - size: 489616 - timestamp: 1732537344927 + size: 489630 + timestamp: 1732865758291 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5888daf_0_cpu + build: h5888daf_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda - sha256: da77235b3874b50facb632cc409bee0df81e9dd7c25543a5e8b92873bd2d2a20 - md5: 7834b3a11d0f1ee7e13b4533e361586f + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda + sha256: 7b3db3d5a7e411f8897e8d74403c1d871f3054300f5009c4bdf75da011bc3f42 + md5: 77501831a2aabbaabac55e8cb3b6900a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h94eee4b_0_cpu - - libarrow-acero 18.1.0 h5888daf_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu + - libarrow-acero 18.1.0 h5888daf_1_cpu - libgcc >=13 - - libparquet 18.1.0 h6bd9018_0_cpu + - libparquet 18.1.0 h6bd9018_1_cpu - libstdcxx >=13 license: Apache-2.0 - size: 588196 - timestamp: 1732536246424 + license_family: APACHE + size: 585458 + timestamp: 1732863686753 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_0_cpu + build: h5ad3122_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda - sha256: 17cd3bc19ae04d1a5b3795fac0fb796cc90eabeb3359a39eaf5dfed84385b4de - md5: 98d2712cebf91fc823e6231f7e55eda3 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda + sha256: f6a01e972523d28f8cbabfe803fb136df2b6fae26aaad21d6c539bbd818c0fba + md5: f02295f8a252e8588d220364164565ae depends: - - libarrow 18.1.0 h3d75c4c_0_cpu - - libarrow-acero 18.1.0 h5ad3122_0_cpu + - libarrow 18.1.0 h944b843_1_cpu + - libarrow-acero 18.1.0 h5ad3122_1_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_0_cpu + - libparquet 18.1.0 h23a96eb_1_cpu - libstdcxx >=13 license: Apache-2.0 - size: 561486 - timestamp: 1732536339536 + license_family: APACHE + size: 559007 + timestamp: 1732864377646 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h14ec2bd_0_cpu + build: h14ec2bd_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda - sha256: 30723e91df659aa971d9964e25730276295cf3a45be557ec1df9d413c31c44a9 - md5: f93217605309abc1c0314102036da21c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda + sha256: ac3756dcfb242877719c629d343f000b807130aec6f41d4167a392eb152c1549 + md5: e1160e0f8017b4f4ae55578ff0fddd98 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h3d75c4c_0_cpu - - libarrow-acero 18.1.0 h5ad3122_0_cpu - - libarrow-dataset 18.1.0 h5ad3122_0_cpu + - libarrow 18.1.0 h944b843_1_cpu + - libarrow-acero 18.1.0 h5ad3122_1_cpu + - libarrow-dataset 18.1.0 h5ad3122_1_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 515320 - timestamp: 1732536368053 + license_family: APACHE + size: 515219 + timestamp: 1732864413881 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h5c8f2c3_0_cpu + build: h5c8f2c3_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda - sha256: d40e4a3061d58d07d017a6e439883ce1b9860f3a960a5aead8da189f8795a92c - md5: 51dc5a7117ec264e0a5cc1a5d82437dd + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda + sha256: e77a354bfc0ba7b04c856f1bb16e7b08950bcde54026087bafec46090380fcc1 + md5: 5d47bd2674afd104dbe2f2f3534594b0 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h94eee4b_0_cpu - - libarrow-acero 18.1.0 h5888daf_0_cpu - - libarrow-dataset 18.1.0 h5888daf_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu + - libarrow-acero 18.1.0 h5888daf_1_cpu + - libarrow-dataset 18.1.0 h5888daf_1_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 520871 - timestamp: 1732536289093 + license_family: APACHE + size: 520681 + timestamp: 1732863726954 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h6a6e5c5_0_cpu + build: hf3d3107_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda - sha256: aa673d86e56c3b17b66f5ffcd8ce98b93754c9c07e2e6aff96d0dd02135c0969 - md5: 9b2fd35f01e23972abb91543bbd6d84c + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda + sha256: 725aa1db6b91068613c1effdf8f23d592dd1e6c95722e27eb63ad94c98d47c1b + md5: 72ec5bcfc66b3cc5e865c7c90b24c43e depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb943b0e_0_cpu - - libarrow-acero 18.1.0 h286801f_0_cpu - - libarrow-dataset 18.1.0 h286801f_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu + - libarrow-acero 18.1.0 h1dc2043_1_cpu + - libarrow-dataset 18.1.0 h1dc2043_1_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - size: 452400 - timestamp: 1732537518703 + size: 451765 + timestamp: 1732866475770 - kind: conda name: libblas version: 3.9.0 @@ -4800,55 +4819,60 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_0_cpu + build: h23a96eb_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda - sha256: be9d2527e709007aef42c39d9ab49163e587c25dc23cc1baba8af91edce16437 - md5: 99592ed1d2877136ebd192789164891a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda + sha256: ac045716c4e643d5d92c2dee96f50cdd8aaac9ce3f768b2375aa545b0551d89e + md5: a0e6b8bb23a75fbe8d38cf3cab6abf44 depends: - - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow 18.1.0 h944b843_1_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1117420 - timestamp: 1732536323359 + license_family: APACHE + size: 1116708 + timestamp: 1732864357500 - kind: conda name: libparquet version: 18.1.0 - build: h6bd9018_0_cpu + build: h6bd9018_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda - sha256: d5f73b48e754af5874f48ef22dda1339b74597b66ff5ffeff8a2290f97a9611b - md5: 580349cffeac814a32ff661dcbe72821 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda + sha256: 0df119f4c1a2387d910e132c670b29ee5b29dd79384549de6f1a43067515c8ba + md5: 1054909202f86e38bbbb7ca1131b8471 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1204506 - timestamp: 1732536224976 + license_family: APACHE + size: 1203523 + timestamp: 1732863665743 - kind: conda name: libparquet version: 18.1.0 - build: hda0ea68_0_cpu + build: hf4cc9e7_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda - sha256: a6a22f0692d99a3cb6306ebd4d2e840c980d08797386f300c47604ee8865af4d - md5: 22f05c8b1c1b82eb5efc2a89c08ee047 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda + sha256: 974b773c8a000b27ef3283b8744cfda9e46afff7d66c708b90971cc4d681805e + md5: 1d41143609ae6961de983182053fbdf2 depends: - __osx >=11.0 - - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 874829 - timestamp: 1732537283879 + size: 874294 + timestamp: 1732865555683 - kind: conda name: libpng version: 1.6.44 @@ -5326,43 +5350,49 @@ packages: - kind: conda name: libutf8proc version: 2.8.0 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 - sha256: 49082ee8d01339b225f7f8c60f32a2a2c05fe3b16f31b554b4fb2c1dea237d1c - md5: ede4266dc02e875fe1ea77b25dd43747 + build: h812390e_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda + sha256: 25dc68d188336e1b83f28175b5146c2192e49a3236b340962c97727c6d47ede9 + md5: 83c5f8e4431ad4b6b7e22c4edd898163 depends: - - libgcc-ng >=12 + - libgcc >=13 license: MIT license_family: MIT - size: 101070 - timestamp: 1667316029302 + size: 81515 + timestamp: 1732829682446 - kind: conda name: libutf8proc version: 2.8.0 - build: h1a8c8d9_0 + build: hc098a78_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 - sha256: a3faddac08efd930fa3a1cc254b5053b4ed9428c49a888d437bf084d403c931a - md5: f8c9c41a122ab3abdf8943b13f4957ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda + sha256: 7807a98522477a8bf12460402845224f607ab6e1e73ac316b667169f5143cfe5 + md5: ed89b8bf0d74d23ce47bcf566dd36608 + depends: + - __osx >=11.0 license: MIT license_family: MIT - size: 103492 - timestamp: 1667316405233 + size: 82462 + timestamp: 1732829832932 - kind: conda name: libutf8proc version: 2.8.0 - build: h4e544f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 - sha256: c1956b64ad9613c66cf87398f5e2c36d071034a93892da7e8cc22e75cface878 - md5: bf0defbd8ac06270fb5ec05c85fb3c96 + build: hf23e847_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb + md5: b1aa0faa95017bca11369bd080487ec4 depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: MIT license_family: MIT - size: 101529 - timestamp: 1667315331359 + size: 80852 + timestamp: 1732829699583 - kind: conda name: libuuid version: 2.38.1 @@ -5803,76 +5833,76 @@ packages: timestamp: 1729352296161 - kind: conda name: max - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - sha256: d42d9672b36eed3bc4d846d0ae8e20630d80ec5ff54966af36bb0e84eb018a7c - md5: 21b8f08296f321b75659cce32688750b - depends: - - max-core ==24.6.0.dev2024112805 release - - max-python >=24.6.0.dev2024112805,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112805 release - - mblack ==24.6.0.dev2024112805 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + sha256: d2d1d27c804d40be907e5f24dee2c96a83530f99a4aa4698d4bfbcd2389f8a68 + md5: 07dc8704dd68d983b1292db751b677fe + depends: + - max-core ==24.6.0.dev2024112922 release + - max-python >=24.6.0.dev2024112922,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024112922 release license: LicenseRef-Modular-Proprietary - size: 9927 - timestamp: 1732771319615 + size: 9917 + timestamp: 1732918079788 - kind: conda name: max-core - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda - sha256: 9b02550f0d393451fff14ba476998247e8ce9230c8cde3b496b04ba72ca58a40 - md5: d351616984b25f89afd32b0a98c89928 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda + sha256: ab1ec7348e8edca48914c0203b5995c8013347ad0fd93d5e38c8e62261cb6ca2 + md5: 18c1fd2b6354db88e967cb200fee0a55 depends: - - mblack ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112922 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254576173 - timestamp: 1732771254860 + size: 254726602 + timestamp: 1732918231240 - kind: conda name: max-core - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda - sha256: a03c929c723950872b136f418c4f197907b850e70382a5f74d5d5540abd1ccc5 - md5: 02c7bc4863ff19c0322ed890145ba23b + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda + sha256: 4584866065437877ec865afb88d99ef983bd284f2b5e88750f7ba4616c73de54 + md5: a05d93b813689510b14c1c478c0f7e20 depends: - - mblack ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112922 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258211572 - timestamp: 1732771319613 + size: 258398513 + timestamp: 1732918079786 - kind: conda name: max-core - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda - sha256: 1a7f82f0029dec8f68847f852e1eac5172c1acc5305541952ae95ce6c3b97436 - md5: 977b26b7ee540c254a23c71e9ba7f1bf + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda + sha256: faacbe747fdad79e9275664da544b174a5e77b705331988fed5d943b77a49c11 + md5: 72bedc7bfeff8091539861c600246817 depends: - - mblack ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112922 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220134322 - timestamp: 1732771049861 + size: 220273860 + timestamp: 1732917995058 - kind: conda name: max-python - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.11release.conda - sha256: 97aac121191462511074298f558c8399a2f3148b76cd65538a24ee99678da0fd - md5: eea765ae285a6b5f85e4c045fda9626d + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.11release.conda + sha256: 1f417d102bea2830fd021eafbe64cf300d11bc4316a69e79ba59f554907d609e + md5: a481844d9bfbedd008cd52fd6a41a118 depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python 3.11.* - pillow - fastapi @@ -5894,18 +5924,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128399684 - timestamp: 1732771254866 + size: 128524644 + timestamp: 1732918231246 - kind: conda name: max-python - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.11release.conda - sha256: 75e23176b4ed0eaa3b39614e32fac600f1b87fc6f8d47c2e7f479a4955c35853 - md5: 828c1e99ddc3856fd0f65e8d08b0867c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.11release.conda + sha256: e63cbfa90acdef5973d70d6e2250dc4353c288571ed14487f03f569959a3775f + md5: 71f26a90c3da379a1ff1f03512a19c1a depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python 3.11.* - pillow - fastapi @@ -5927,18 +5957,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132103194 - timestamp: 1732771319619 + size: 132241762 + timestamp: 1732918079792 - kind: conda name: max-python - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.11release.conda - sha256: cc675d1427723a83abd6d322215493d373bd8d40216327333e2f72c4cc260d62 - md5: bd6b1dd3cf9579daf2f60e289365643c + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.11release.conda + sha256: bbb631d2314c4ca341f10578eb22c39bf8e12e731f6b3e441ec1d4bf988d1844 + md5: 7d4f48fa1d0ecdb6e1f506f0348dc33b depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python 3.11.* - pillow - fastapi @@ -5960,17 +5990,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118987069 - timestamp: 1732771049863 + size: 119118699 + timestamp: 1732917995060 - kind: conda name: mblack - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - sha256: 821a0e6bc0367ccdca619f0935e0f13a92138a6b2681f617aae2d2000d0a891f - md5: f9fcd437962beaa0c577bcbeecd1e69c + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + sha256: b2533bf1ffe77004616d6c78440666b71a1d08d09057f3da900c31ea7e277d33 + md5: 5ddc332663efce023813d99e7e474c28 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5980,8 +6010,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130612 - timestamp: 1732771319618 + size: 130611 + timestamp: 1732918079791 - kind: conda name: mdurl version: 0.1.2 @@ -5999,21 +6029,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - sha256: 2702029742752c2bb13fe108c3e5a577151b80b0e0675a0f5a819467b579c136 - md5: 6c9019d1b099600e3a50dca268b658d3 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + sha256: 0e5cbf4fed2931f0cd8051b3c909fc8f7e2d20dbccfbe9af4bac76a24a5cac21 + md5: bf727d981f2de8cf1cb7ac9cf222c70b depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22943 - timestamp: 1732771319619 + size: 22938 + timestamp: 1732918079793 - kind: conda name: multidict version: 6.1.0 @@ -6999,6 +7029,7 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: Apache-2.0 + license_family: APACHE size: 25199 timestamp: 1732610760700 - kind: conda @@ -7018,6 +7049,7 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: Apache-2.0 + license_family: APACHE size: 25322 timestamp: 1732611121491 - kind: conda @@ -7037,6 +7069,7 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: Apache-2.0 + license_family: APACHE size: 25373 timestamp: 1732611450659 - kind: conda @@ -7059,6 +7092,7 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 4562010 timestamp: 1732610600424 - kind: conda @@ -7081,6 +7115,7 @@ packages: - apache-arrow-proc =*=cpu - numpy >=1.21,<3 license: Apache-2.0 + license_family: APACHE size: 4484447 timestamp: 1732610567027 - kind: conda @@ -7103,6 +7138,7 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 3974075 timestamp: 1732611073316 - kind: conda @@ -7437,19 +7473,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.17 + version: 0.0.18 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - sha256: f351636a91163de28cf602c755abd1b5ad858e4a790c3a30d5a5aa1066c0550c - md5: a08ea55eb3ad403b12639cd3a4a8d28f + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + sha256: e4c762c261f152cb4219a736fffbd8225ea1e060ce250318aae89df5d708a089 + md5: 8a5e488f98049813ba403c5f751f6e1e depends: - python >=3.8 license: Apache-2.0 license_family: Apache - size: 27810 - timestamp: 1730382122271 + size: 27752 + timestamp: 1732867990988 - kind: conda name: python-tzdata version: '2024.2' @@ -8330,58 +8366,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.13.1 + version: 0.14.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - sha256: 2f12a5af13d440aa75970e3d0d1ea3192916848473967b4ecb483627c01333cb - md5: 82a4704166144f27e9c83803bff5bf53 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + sha256: 4d7f1c77b928a66ae3b0089e288e7fdeb826bf0dabba9799488017e6a9b84f38 + md5: 9eb8a3f5d36ca3e7f686e7a5d85aff72 depends: - python >=3.9 - - typer-slim-standard 0.13.1 hd8ed1ab_0 + - typer-slim-standard 0.14.0 hd8ed1ab_0 license: MIT license_family: MIT - size: 55352 - timestamp: 1732084066966 + size: 54637 + timestamp: 1732848384457 - kind: conda name: typer-slim - version: 0.13.1 - build: pyhff2d567_0 + version: 0.14.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - sha256: b190bcd5f341ba8843f2f1ce43b5e8dae770bb84d49e2ce5b346e4d8098367a1 - md5: 85283fb942fa2604c3db03483027ced2 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + sha256: 883969c10b9837bb18a340ffb01a984ef6b4655fc72ff05aeb7bc659c9a1229d + md5: 3674a4cd7fd8e8a7277af2b30965925d depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - shellingham >=1.3.0 - - typer >=0.13.1,<0.13.2.0a0 - rich >=10.11.0 + - typer >=0.14.0,<0.14.1.0a0 license: MIT license_family: MIT - size: 43463 - timestamp: 1732084053693 + size: 43504 + timestamp: 1732848371202 - kind: conda name: typer-slim-standard - version: 0.13.1 + version: 0.14.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - sha256: 14ac72d0533bc2f37f8dc85b90b45a91ca28ee0995c520b16a40f34629749c7a - md5: a9bf95ed3c65bf936292d944bf3df36d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + sha256: 0e09e393e75028a0e827c7177e0fb1a070c87756e47b5ae6418423e22b10dfac + md5: 9e1e1f9c84add9637ca715f8fb71a83f depends: - rich - shellingham - - typer-slim 0.13.1 pyhff2d567_0 + - typer-slim 0.14.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 48744 - timestamp: 1732084054211 + size: 49180 + timestamp: 1732848371718 - kind: conda name: typing-extensions version: 4.12.2 @@ -8555,6 +8591,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 405692 timestamp: 1732689662727 - kind: conda @@ -8574,6 +8611,7 @@ packages: constrains: - __osx >=11.0 license: MIT + license_family: MIT size: 357633 timestamp: 1732689799347 - kind: conda @@ -8593,6 +8631,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 409759 timestamp: 1732689546491 - kind: conda @@ -8660,6 +8699,7 @@ packages: - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-2-Clause + license_family: BSD size: 62309 timestamp: 1732524074190 - kind: conda @@ -8676,6 +8716,7 @@ packages: - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: BSD-2-Clause + license_family: BSD size: 65396 timestamp: 1732523677157 - kind: conda @@ -8692,6 +8733,7 @@ packages: - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-2-Clause + license_family: BSD size: 65780 timestamp: 1732523794589 - kind: conda @@ -9021,18 +9063,19 @@ packages: - kind: conda name: zipp version: 3.21.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - sha256: 232a30e4b0045c9de5e168dda0328dc0e28df9439cdecdfb97dd79c1c82c4cec - md5: fee389bf8a4843bd7a2248ce11b7f188 + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 21702 - timestamp: 1731262194278 + size: 21809 + timestamp: 1732827613585 - kind: conda name: zstandard version: 0.23.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index a7bb3d9dc0..7131e093ff 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -31,8 +31,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -81,14 +81,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda @@ -112,10 +112,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -143,7 +143,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -154,7 +154,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda @@ -166,17 +166,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda @@ -229,9 +229,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -268,9 +268,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda @@ -296,13 +296,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -324,8 +324,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -374,7 +374,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -382,7 +382,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda @@ -406,10 +406,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -437,7 +437,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -448,7 +448,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda @@ -460,17 +460,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda @@ -523,9 +523,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -562,9 +562,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda @@ -590,12 +590,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -618,8 +618,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -668,14 +668,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda @@ -697,10 +697,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -725,7 +725,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -734,7 +734,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda @@ -745,17 +745,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda @@ -810,9 +810,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -848,9 +848,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda @@ -876,7 +876,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -943,12 +943,12 @@ packages: timestamp: 1727779893392 - kind: conda name: aiohttp - version: 3.11.7 + version: 3.11.8 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda - sha256: e95adfd637644c9a0641bc5fbec04d53b19330568971a24021253e5054f7750e - md5: a1dc198dad91736555c27caa420029b1 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda + sha256: 5a51cfa8c17a1c545f07c8a9bae637b233c803f92f922ce3badb7a81f6e7eba8 + md5: 63eb2bd555d446218c7bbdec2dd746c5 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -963,16 +963,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 909778 - timestamp: 1732220397535 + size: 912229 + timestamp: 1732780345490 - kind: conda name: aiohttp - version: 3.11.7 + version: 3.11.8 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda - sha256: 6f5fc3177188871418f4112e87b708499f6c9c484e175ad8c3a2e08554143e85 - md5: 6d8e94bda91469c00eb617a9cdb7f622 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda + sha256: 991fccd7387b08127a8398cdd499ebb9be7a16a612b024f7f82d0ecbae456b00 + md5: 8caf80b1f8510c2c626831f463fac611 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -987,16 +987,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 870661 - timestamp: 1732220535266 + size: 873606 + timestamp: 1732780440642 - kind: conda name: aiohttp - version: 3.11.7 + version: 3.11.8 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda - sha256: 932bdef3892216f6219bb604319a63fe99a0780acf780d4265bcf10f906ade6b - md5: a5210c6947a961dec22d272c4bed586a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda + sha256: 04dc698f291a0580101baa4df07cc12ed99f025c4aab23e184cfe12cf692fa12 + md5: dc9d21c22f3a000083437b0e99e99f31 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -1011,8 +1011,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900629 - timestamp: 1732220481990 + size: 900671 + timestamp: 1732780496954 - kind: conda name: aiosignal version: 1.3.1 @@ -1831,13 +1831,12 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.5 - build: h0e61686_1 - build_number: 1 + version: 0.29.6 + build: h0e61686_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda - sha256: 1d7bc75a81cdcd992ebee9b06be6a63963203d7fc2537099bf91fda0573c3be6 - md5: 7143a281febcabfc242a458b7bc12048 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + sha256: b821d0125f8fcb589b880bf3a5e0e1667e285b3006ceb19d96e6d92d049ab787 + md5: 651a6500e5fded51bb7572f4eebcfd7b depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1853,17 +1852,16 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 353633 - timestamp: 1732704043097 + size: 355169 + timestamp: 1732769507038 - kind: conda name: aws-crt-cpp - version: 0.29.5 - build: h6068a22_1 - build_number: 1 + version: 0.29.6 + build: h6068a22_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda - sha256: 15eba2ca46b10a17d60b26d7a6db222f08e1d63c55eb76a19f16c30e06679fe4 - md5: 6c0a760285cb79c46a99b15449ecb9ac + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + sha256: 45b15e8ecad820f9f80bace92cbb29f81b30e0ba31e25b936a13bdb0360a0637 + md5: 7f8ecd32e9afbbf87438367b551c3a8b depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1878,17 +1876,16 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283812 - timestamp: 1732704031684 + size: 283440 + timestamp: 1732769529667 - kind: conda name: aws-crt-cpp - version: 0.29.5 - build: h8bcca62_1 - build_number: 1 + version: 0.29.6 + build: h8bcca62_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda - sha256: 371c509c0cd22360cd39963189ba7aa290b08b7384dd4414895f6186e2aecf7e - md5: ef024742bb2501bd3d7f10b0f9ce5a4d + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + sha256: b6d2ff238a712137afd9b46842235b32a04cac580734873bf86876da6e71dd03 + md5: 8e49f5e86a3e39699b24035fa6d1ad40 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1903,69 +1900,69 @@ packages: - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236161 - timestamp: 1732704224415 + size: 236490 + timestamp: 1732769764315 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h775d804_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda - sha256: dae09cbccc5af7282a9b74b424a4d451362fe3b31eb2ccbf571db321f9619c52 - md5: 6e691206e10feb236ca7c0cf985797a8 + build: h3b64406_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda + sha256: 10ce9c203d31229432421a841d8d135d3e942637571aae4bb2d3c7d5242e7f05 + md5: f9e46a4bb5a04cbca08355f166ce87c8 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2794659 - timestamp: 1732184111138 + size: 2722689 + timestamp: 1732812825640 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h8577fd2_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda - sha256: ddd7aaa925ac3d569aa3dc1fe0239fa5c57034a1360683c41d310d6805f0d5bd - md5: 3c789cd7093639a2662b14b87f11b04c + build: h5558e3c_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda + sha256: 4881f7b4f5e3c797332cffb990df246a422346b220a9c16014f274beb2a276f5 + md5: ba7abdc93b0ade11d774b47aaab84737 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2737395 - timestamp: 1732184718613 + size: 2945541 + timestamp: 1732812288219 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: hdaa582e_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda - sha256: a6fdba49b87ad3b92c219f60ac31e0d0b4fea7e651efe6d668288e5a0f7a1755 - md5: 0dca4b37cf80312f8ef84b649e6ad3a3 + build: h7085e57_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda + sha256: 0908a82e7c50c51d5ee0ca543dbe70cbe1963e6e8f80ffa58ea6d26e5c68251e + md5: feec198cb18a5e90aa36c97328567d63 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1973,8 +1970,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2951998 - timestamp: 1732184141 + size: 2813856 + timestamp: 1732812337182 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -3289,6 +3286,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT size: 101872 timestamp: 1732707756745 - kind: conda @@ -3305,6 +3303,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT size: 101255 timestamp: 1732707891645 - kind: conda @@ -3321,28 +3320,28 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT size: 85623 timestamp: 1732707871414 - kind: conda name: httpx - version: 0.27.2 + version: 0.28.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - sha256: 1a33f160548bf447e15c0273899d27e4473f1d5b7ca1441232ec2d9d07c56d03 - md5: 7e9ac3faeebdbd7b53b462c41891e7f7 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + sha256: cb7895446cd93091300accea6afbc8d9811a3c5899922ccfeeff97d9b55909dc + md5: 22878824a87f1af2ad48665f9d5bfcc8 depends: - anyio - certifi - httpcore 1.* - idna - - python >=3.8 - - sniffio + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 65085 - timestamp: 1724778453275 + size: 63183 + timestamp: 1732831049776 - kind: conda name: huggingface_hub version: 0.26.2 @@ -3504,13 +3503,13 @@ packages: timestamp: 1719845667420 - kind: conda name: ipython - version: 8.29.0 + version: 8.30.0 build: pyh707e725_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.29.0-pyh707e725_0.conda - sha256: 606723272a208cca1036852e04fbb61741b78451784746e75edd1becb70347d2 - md5: 56db21d7d51410fcfbfeca3d1a6b4269 + url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda + sha256: 65cdc105e5effea2943d3979cc1592590c923a589009b484d07672faaf047af1 + md5: 5d6e5cb3a4b820f61b2073f0ad5431f1 depends: - __unix - decorator @@ -3527,8 +3526,8 @@ packages: - typing_extensions >=4.6 license: BSD-3-Clause license_family: BSD - size: 599356 - timestamp: 1729866495921 + size: 600248 + timestamp: 1732897026255 - kind: conda name: isoduration version: 20.11.0 @@ -3588,6 +3587,7 @@ packages: depends: - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 32030 timestamp: 1732666224221 - kind: conda @@ -4168,13 +4168,14 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h3d75c4c_0_cpu + build: h944b843_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda - sha256: 46d841b3f316d52d0fa085d5c583a4370de8223afc4f1bbf57eaebdf3aede7f1 - md5: cfee3c6a6ddeb26bba5d96ce7924a817 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda + sha256: a6708e09c64711096439a23c76df161ecff98837dfb0ace07b33a9147141c07f + md5: 05ed5955fe5a46c9475d6c63d36291f5 depends: - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -4192,7 +4193,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.8.0,<2.9.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4200,41 +4201,41 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8024186 - timestamp: 1732536195865 + license_family: APACHE + size: 8042546 + timestamp: 1732864233719 - kind: conda name: libarrow version: 18.1.0 - build: h94eee4b_0_cpu - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda - sha256: 4f8ad6d3ac85f17b7ce319c1f8d0ffacee16403341315677977d3c7b9788166e - md5: 1718fa336f42a0b24b822457df7ce43d + build: hacc6a60_1_cpu + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda + sha256: c06d055a3b1fdc1a670481345a11ab7d2225074d0a98e448419e5cd828c070f4 + md5: 4957a938ab42181d6c9748920f13a027 depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.8.0,<2.9.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4242,39 +4243,42 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 - size: 8783805 - timestamp: 1732536115314 + size: 5470388 + timestamp: 1732863147130 - kind: conda name: libarrow version: 18.1.0 - build: hb943b0e_0_cpu - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda - sha256: acc1b6ec23a964ec87722fc90b55d47f8cb03e211e86b9ff312bed588cfc400a - md5: f2dac358d4bd6b57d9b47f11cca0ea8c + build: he15abb1_1_cpu + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda + sha256: afc81af2e533cc35295aebae4fb382e770310d9b1ac31837456b440d35c54cf7 + md5: bd3e35a6f3f869b4777488452f315008 depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.8.0,<3.0a0 + - libstdcxx >=13 + - libutf8proc >=2.8.0,<2.9.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4282,171 +4286,187 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 5497775 - timestamp: 1732535993576 + license_family: APACHE + size: 8780597 + timestamp: 1732863546099 - kind: conda name: libarrow-acero version: 18.1.0 - build: h286801f_0_cpu + build: h1dc2043_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda - sha256: 1b4ae51de889becdd7aca2053e5115d65e2ea94b91d07d2e297d8d3c4666cec5 - md5: fd53fc3858c13425e3334b0af9b6637f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda + sha256: 54709d2e29fe13167bb2b5e7755382723684197b32188ea18c9c48f5a911af46 + md5: 8a7dfd6c38ecc940e8edbf341819b2fe depends: - __osx >=11.0 - - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu - libcxx >=18 license: Apache-2.0 - size: 484735 - timestamp: 1732536132543 + size: 484158 + timestamp: 1732863376127 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5888daf_0_cpu + build: h5888daf_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda - sha256: ad2cab7ca7320642a655ac1214248a64d60a0ce771fa8e7b5378746c16be1c64 - md5: d2f94a6f24f028544c7a4cb1b50c5eca + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda + sha256: 3de5719a7035baad7e665116dce7bb3d069f0c1916e163c553e2e491bbe8b614 + md5: 6197dcb930f6254e9b2fdc416be56b71 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 610906 - timestamp: 1732536155092 + license_family: APACHE + size: 611272 + timestamp: 1732863586114 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_0_cpu + build: h5ad3122_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda - sha256: 216f791e47c774b1d44c89fe7839e03646285cf3220961306b90eec7bf4a6d71 - md5: 7b55a3bc6a3c9a75e509e68d89afd77a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda + sha256: 52bcb30299f9e49c11eaa3c49aa4360e530ead6d906f883068cd2759d355361e + md5: 8d1175956362366c0550da2a81730561 depends: - - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow 18.1.0 h944b843_1_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 577886 - timestamp: 1732536278269 + license_family: APACHE + size: 578289 + timestamp: 1732864300809 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h286801f_0_cpu + build: h1dc2043_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda - sha256: a52ba6632837f2e5ec1c91ea4271ae7bd84fe9af348467e234a338b2fc78f41c - md5: 4020134362b81be7b91c7c6ae086eecc + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda + sha256: 7b5b462c709c2269af5dfec695028c6efe67dc7eb90b485e0e71fae6ecce6f6d + md5: 27c23281c2e2b56fec1b6d7dd1df439a depends: - __osx >=11.0 - - libarrow 18.1.0 hb943b0e_0_cpu - - libarrow-acero 18.1.0 h286801f_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu + - libarrow-acero 18.1.0 h1dc2043_1_cpu - libcxx >=18 - - libparquet 18.1.0 hda0ea68_0_cpu + - libparquet 18.1.0 hf4cc9e7_1_cpu license: Apache-2.0 - size: 489616 - timestamp: 1732537344927 + size: 489630 + timestamp: 1732865758291 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5888daf_0_cpu + build: h5888daf_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda - sha256: da77235b3874b50facb632cc409bee0df81e9dd7c25543a5e8b92873bd2d2a20 - md5: 7834b3a11d0f1ee7e13b4533e361586f + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda + sha256: 7b3db3d5a7e411f8897e8d74403c1d871f3054300f5009c4bdf75da011bc3f42 + md5: 77501831a2aabbaabac55e8cb3b6900a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h94eee4b_0_cpu - - libarrow-acero 18.1.0 h5888daf_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu + - libarrow-acero 18.1.0 h5888daf_1_cpu - libgcc >=13 - - libparquet 18.1.0 h6bd9018_0_cpu + - libparquet 18.1.0 h6bd9018_1_cpu - libstdcxx >=13 license: Apache-2.0 - size: 588196 - timestamp: 1732536246424 + license_family: APACHE + size: 585458 + timestamp: 1732863686753 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_0_cpu + build: h5ad3122_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda - sha256: 17cd3bc19ae04d1a5b3795fac0fb796cc90eabeb3359a39eaf5dfed84385b4de - md5: 98d2712cebf91fc823e6231f7e55eda3 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda + sha256: f6a01e972523d28f8cbabfe803fb136df2b6fae26aaad21d6c539bbd818c0fba + md5: f02295f8a252e8588d220364164565ae depends: - - libarrow 18.1.0 h3d75c4c_0_cpu - - libarrow-acero 18.1.0 h5ad3122_0_cpu + - libarrow 18.1.0 h944b843_1_cpu + - libarrow-acero 18.1.0 h5ad3122_1_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_0_cpu + - libparquet 18.1.0 h23a96eb_1_cpu - libstdcxx >=13 license: Apache-2.0 - size: 561486 - timestamp: 1732536339536 + license_family: APACHE + size: 559007 + timestamp: 1732864377646 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h14ec2bd_0_cpu + build: h14ec2bd_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda - sha256: 30723e91df659aa971d9964e25730276295cf3a45be557ec1df9d413c31c44a9 - md5: f93217605309abc1c0314102036da21c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda + sha256: ac3756dcfb242877719c629d343f000b807130aec6f41d4167a392eb152c1549 + md5: e1160e0f8017b4f4ae55578ff0fddd98 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h3d75c4c_0_cpu - - libarrow-acero 18.1.0 h5ad3122_0_cpu - - libarrow-dataset 18.1.0 h5ad3122_0_cpu + - libarrow 18.1.0 h944b843_1_cpu + - libarrow-acero 18.1.0 h5ad3122_1_cpu + - libarrow-dataset 18.1.0 h5ad3122_1_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 515320 - timestamp: 1732536368053 + license_family: APACHE + size: 515219 + timestamp: 1732864413881 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h5c8f2c3_0_cpu + build: h5c8f2c3_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda - sha256: d40e4a3061d58d07d017a6e439883ce1b9860f3a960a5aead8da189f8795a92c - md5: 51dc5a7117ec264e0a5cc1a5d82437dd + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda + sha256: e77a354bfc0ba7b04c856f1bb16e7b08950bcde54026087bafec46090380fcc1 + md5: 5d47bd2674afd104dbe2f2f3534594b0 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h94eee4b_0_cpu - - libarrow-acero 18.1.0 h5888daf_0_cpu - - libarrow-dataset 18.1.0 h5888daf_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu + - libarrow-acero 18.1.0 h5888daf_1_cpu + - libarrow-dataset 18.1.0 h5888daf_1_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 520871 - timestamp: 1732536289093 + license_family: APACHE + size: 520681 + timestamp: 1732863726954 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h6a6e5c5_0_cpu + build: hf3d3107_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda - sha256: aa673d86e56c3b17b66f5ffcd8ce98b93754c9c07e2e6aff96d0dd02135c0969 - md5: 9b2fd35f01e23972abb91543bbd6d84c + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda + sha256: 725aa1db6b91068613c1effdf8f23d592dd1e6c95722e27eb63ad94c98d47c1b + md5: 72ec5bcfc66b3cc5e865c7c90b24c43e depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb943b0e_0_cpu - - libarrow-acero 18.1.0 h286801f_0_cpu - - libarrow-dataset 18.1.0 h286801f_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu + - libarrow-acero 18.1.0 h1dc2043_1_cpu + - libarrow-dataset 18.1.0 h1dc2043_1_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - size: 452400 - timestamp: 1732537518703 + size: 451765 + timestamp: 1732866475770 - kind: conda name: libblas version: 3.9.0 @@ -5801,55 +5821,60 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_0_cpu + build: h23a96eb_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda - sha256: be9d2527e709007aef42c39d9ab49163e587c25dc23cc1baba8af91edce16437 - md5: 99592ed1d2877136ebd192789164891a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda + sha256: ac045716c4e643d5d92c2dee96f50cdd8aaac9ce3f768b2375aa545b0551d89e + md5: a0e6b8bb23a75fbe8d38cf3cab6abf44 depends: - - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow 18.1.0 h944b843_1_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1117420 - timestamp: 1732536323359 + license_family: APACHE + size: 1116708 + timestamp: 1732864357500 - kind: conda name: libparquet version: 18.1.0 - build: h6bd9018_0_cpu + build: h6bd9018_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda - sha256: d5f73b48e754af5874f48ef22dda1339b74597b66ff5ffeff8a2290f97a9611b - md5: 580349cffeac814a32ff661dcbe72821 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda + sha256: 0df119f4c1a2387d910e132c670b29ee5b29dd79384549de6f1a43067515c8ba + md5: 1054909202f86e38bbbb7ca1131b8471 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1204506 - timestamp: 1732536224976 + license_family: APACHE + size: 1203523 + timestamp: 1732863665743 - kind: conda name: libparquet version: 18.1.0 - build: hda0ea68_0_cpu + build: hf4cc9e7_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda - sha256: a6a22f0692d99a3cb6306ebd4d2e840c980d08797386f300c47604ee8865af4d - md5: 22f05c8b1c1b82eb5efc2a89c08ee047 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda + sha256: 974b773c8a000b27ef3283b8744cfda9e46afff7d66c708b90971cc4d681805e + md5: 1d41143609ae6961de983182053fbdf2 depends: - __osx >=11.0 - - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 874829 - timestamp: 1732537283879 + size: 874294 + timestamp: 1732865555683 - kind: conda name: libpng version: 1.6.44 @@ -6327,43 +6352,49 @@ packages: - kind: conda name: libutf8proc version: 2.8.0 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 - sha256: 49082ee8d01339b225f7f8c60f32a2a2c05fe3b16f31b554b4fb2c1dea237d1c - md5: ede4266dc02e875fe1ea77b25dd43747 + build: h812390e_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda + sha256: 25dc68d188336e1b83f28175b5146c2192e49a3236b340962c97727c6d47ede9 + md5: 83c5f8e4431ad4b6b7e22c4edd898163 depends: - - libgcc-ng >=12 + - libgcc >=13 license: MIT license_family: MIT - size: 101070 - timestamp: 1667316029302 + size: 81515 + timestamp: 1732829682446 - kind: conda name: libutf8proc version: 2.8.0 - build: h1a8c8d9_0 + build: hc098a78_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 - sha256: a3faddac08efd930fa3a1cc254b5053b4ed9428c49a888d437bf084d403c931a - md5: f8c9c41a122ab3abdf8943b13f4957ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda + sha256: 7807a98522477a8bf12460402845224f607ab6e1e73ac316b667169f5143cfe5 + md5: ed89b8bf0d74d23ce47bcf566dd36608 + depends: + - __osx >=11.0 license: MIT license_family: MIT - size: 103492 - timestamp: 1667316405233 + size: 82462 + timestamp: 1732829832932 - kind: conda name: libutf8proc version: 2.8.0 - build: h4e544f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 - sha256: c1956b64ad9613c66cf87398f5e2c36d071034a93892da7e8cc22e75cface878 - md5: bf0defbd8ac06270fb5ec05c85fb3c96 + build: hf23e847_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb + md5: b1aa0faa95017bca11369bd080487ec4 depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: MIT license_family: MIT - size: 101529 - timestamp: 1667315331359 + size: 80852 + timestamp: 1732829699583 - kind: conda name: libuuid version: 2.38.1 @@ -6820,76 +6851,76 @@ packages: timestamp: 1713250613726 - kind: conda name: max - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - sha256: d42d9672b36eed3bc4d846d0ae8e20630d80ec5ff54966af36bb0e84eb018a7c - md5: 21b8f08296f321b75659cce32688750b + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + sha256: d2d1d27c804d40be907e5f24dee2c96a83530f99a4aa4698d4bfbcd2389f8a68 + md5: 07dc8704dd68d983b1292db751b677fe depends: - - max-core ==24.6.0.dev2024112805 release - - max-python >=24.6.0.dev2024112805,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112805 release - - mblack ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release + - max-python >=24.6.0.dev2024112922,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024112922 release license: LicenseRef-Modular-Proprietary - size: 9927 - timestamp: 1732771319615 + size: 9917 + timestamp: 1732918079788 - kind: conda name: max-core - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda - sha256: 9b02550f0d393451fff14ba476998247e8ce9230c8cde3b496b04ba72ca58a40 - md5: d351616984b25f89afd32b0a98c89928 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda + sha256: ab1ec7348e8edca48914c0203b5995c8013347ad0fd93d5e38c8e62261cb6ca2 + md5: 18c1fd2b6354db88e967cb200fee0a55 depends: - - mblack ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112922 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254576173 - timestamp: 1732771254860 + size: 254726602 + timestamp: 1732918231240 - kind: conda name: max-core - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda - sha256: a03c929c723950872b136f418c4f197907b850e70382a5f74d5d5540abd1ccc5 - md5: 02c7bc4863ff19c0322ed890145ba23b + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda + sha256: 4584866065437877ec865afb88d99ef983bd284f2b5e88750f7ba4616c73de54 + md5: a05d93b813689510b14c1c478c0f7e20 depends: - - mblack ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112922 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258211572 - timestamp: 1732771319613 + size: 258398513 + timestamp: 1732918079786 - kind: conda name: max-core - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda - sha256: 1a7f82f0029dec8f68847f852e1eac5172c1acc5305541952ae95ce6c3b97436 - md5: 977b26b7ee540c254a23c71e9ba7f1bf + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda + sha256: faacbe747fdad79e9275664da544b174a5e77b705331988fed5d943b77a49c11 + md5: 72bedc7bfeff8091539861c600246817 depends: - - mblack ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112922 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220134322 - timestamp: 1732771049861 + size: 220273860 + timestamp: 1732917995058 - kind: conda name: max-python - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda - sha256: ff1ddb4400ac03c4f6ad5ffc016b5f9b087e1aa967d51eac72597036e478b451 - md5: 9017365163eec21de4fed0b35c6be7d9 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda + sha256: 129fabb8fb1086a760e1e49654fcccf016454f224eda1c37016f487a37e8770b + md5: f581c28718cefb1960ba65708ff8303a depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python 3.12.* - pillow - fastapi @@ -6911,18 +6942,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128343790 - timestamp: 1732771254868 + size: 128543797 + timestamp: 1732918231248 - kind: conda name: max-python - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda - sha256: 69fb28538434178c34aabf57708859131a5d2f26410802624d401bb0ba3be4a5 - md5: c19242ce517a4d07ff802dca119126e1 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda + sha256: 89ee58ba2ea8b51d5816121a9a662d64455313d840f4726500c531f557b56d99 + md5: 05b1090842c71dd75a66757658960f7f depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python 3.12.* - pillow - fastapi @@ -6944,18 +6975,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132094887 - timestamp: 1732771319621 + size: 132246699 + timestamp: 1732918079795 - kind: conda name: max-python - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda - sha256: 75c7d37c1b6fb68c6ef5054ed88cb8ac8bcc4b7273e80b8f9209202a0ae02de1 - md5: 1215e1fa5c7b0cc518447bc214b7e5a5 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda + sha256: 689d02e41019da522704fe705487d1b7ea9ab228c6c49f6917a9caee9d4002b9 + md5: fa1eec6a9b9d84f6c097005b5dc0b5a6 depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python 3.12.* - pillow - fastapi @@ -6977,17 +7008,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118976325 - timestamp: 1732771049864 + size: 119120270 + timestamp: 1732917995061 - kind: conda name: mblack - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - sha256: 821a0e6bc0367ccdca619f0935e0f13a92138a6b2681f617aae2d2000d0a891f - md5: f9fcd437962beaa0c577bcbeecd1e69c + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + sha256: b2533bf1ffe77004616d6c78440666b71a1d08d09057f3da900c31ea7e277d33 + md5: 5ddc332663efce023813d99e7e474c28 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6997,8 +7028,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130612 - timestamp: 1732771319618 + size: 130611 + timestamp: 1732918079791 - kind: conda name: mdurl version: 0.1.2 @@ -7031,21 +7062,21 @@ packages: timestamp: 1698947249750 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - sha256: 2702029742752c2bb13fe108c3e5a577151b80b0e0675a0f5a819467b579c136 - md5: 6c9019d1b099600e3a50dca268b658d3 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + sha256: 0e5cbf4fed2931f0cd8051b3c909fc8f7e2d20dbccfbe9af4bac76a24a5cac21 + md5: bf727d981f2de8cf1cb7ac9cf222c70b depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22943 - timestamp: 1732771319619 + size: 22938 + timestamp: 1732918079793 - kind: conda name: multidict version: 6.1.0 @@ -7174,13 +7205,13 @@ packages: timestamp: 1675543414256 - kind: conda name: nbclient - version: 0.10.0 + version: 0.10.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda - sha256: 589d72d36d61a23b39d6fff2c488f93e29e20de4fc6f5d315b5f2c16e81028bf - md5: 15b51397e0fe8ea7d7da60d83eb76ebc + url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda + sha256: 564e22c4048f2f00c7ee79417dea364f95cf069a1f2565dc26d5ece1fc3fd779 + md5: 3ee79082e59a28e1db11e2a9c3bcd85a depends: - jupyter_client >=6.1.12 - jupyter_core >=4.12,!=5.0.* @@ -7189,8 +7220,8 @@ packages: - traitlets >=5.4 license: BSD-3-Clause license_family: BSD - size: 27851 - timestamp: 1710317767117 + size: 27878 + timestamp: 1732882434219 - kind: conda name: nbconvert-core version: 7.16.4 @@ -8338,6 +8369,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 + license_family: APACHE size: 25375 timestamp: 1732610892198 - kind: conda @@ -8357,6 +8389,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 + license_family: APACHE size: 25213 timestamp: 1732610785600 - kind: conda @@ -8376,6 +8409,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 + license_family: APACHE size: 25374 timestamp: 1732611006864 - kind: conda @@ -8398,6 +8432,7 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 4612916 timestamp: 1732610377259 - kind: conda @@ -8420,6 +8455,7 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 4406662 timestamp: 1732610939832 - kind: conda @@ -8442,6 +8478,7 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 3909116 timestamp: 1732610863261 - kind: conda @@ -8798,19 +8835,19 @@ packages: timestamp: 1706018281544 - kind: conda name: python-fastjsonschema - version: 2.20.0 + version: 2.21.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.20.0-pyhd8ed1ab_0.conda - sha256: 7d8c931b89c9980434986b4deb22c2917b58d9936c3974139b9c10ae86fdfe60 - md5: b98d2018c01ce9980c03ee2850690fab + url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda + sha256: 09ae0acccbfc325b9b65946795c0055e0a40374e4e73b264f3b7e8cd8ae0a95a + md5: 4c849126120d1b3d61cf0eac8120ea70 depends: - - python >=3.3 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 226165 - timestamp: 1718477110630 + size: 225949 + timestamp: 1732805566866 - kind: conda name: python-json-logger version: 2.0.7 @@ -8828,19 +8865,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.17 + version: 0.0.18 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - sha256: f351636a91163de28cf602c755abd1b5ad858e4a790c3a30d5a5aa1066c0550c - md5: a08ea55eb3ad403b12639cd3a4a8d28f + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + sha256: e4c762c261f152cb4219a736fffbd8225ea1e060ce250318aae89df5d708a089 + md5: 8a5e488f98049813ba403c5f751f6e1e depends: - python >=3.8 license: Apache-2.0 license_family: Apache - size: 27810 - timestamp: 1730382122271 + size: 27752 + timestamp: 1732867990988 - kind: conda name: python-tzdata version: '2024.2' @@ -9959,58 +9996,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.13.1 + version: 0.14.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - sha256: 2f12a5af13d440aa75970e3d0d1ea3192916848473967b4ecb483627c01333cb - md5: 82a4704166144f27e9c83803bff5bf53 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + sha256: 4d7f1c77b928a66ae3b0089e288e7fdeb826bf0dabba9799488017e6a9b84f38 + md5: 9eb8a3f5d36ca3e7f686e7a5d85aff72 depends: - python >=3.9 - - typer-slim-standard 0.13.1 hd8ed1ab_0 + - typer-slim-standard 0.14.0 hd8ed1ab_0 license: MIT license_family: MIT - size: 55352 - timestamp: 1732084066966 + size: 54637 + timestamp: 1732848384457 - kind: conda name: typer-slim - version: 0.13.1 - build: pyhff2d567_0 + version: 0.14.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - sha256: b190bcd5f341ba8843f2f1ce43b5e8dae770bb84d49e2ce5b346e4d8098367a1 - md5: 85283fb942fa2604c3db03483027ced2 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + sha256: 883969c10b9837bb18a340ffb01a984ef6b4655fc72ff05aeb7bc659c9a1229d + md5: 3674a4cd7fd8e8a7277af2b30965925d depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - shellingham >=1.3.0 - - typer >=0.13.1,<0.13.2.0a0 - rich >=10.11.0 + - typer >=0.14.0,<0.14.1.0a0 license: MIT license_family: MIT - size: 43463 - timestamp: 1732084053693 + size: 43504 + timestamp: 1732848371202 - kind: conda name: typer-slim-standard - version: 0.13.1 + version: 0.14.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - sha256: 14ac72d0533bc2f37f8dc85b90b45a91ca28ee0995c520b16a40f34629749c7a - md5: a9bf95ed3c65bf936292d944bf3df36d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + sha256: 0e09e393e75028a0e827c7177e0fb1a070c87756e47b5ae6418423e22b10dfac + md5: 9e1e1f9c84add9637ca715f8fb71a83f depends: - rich - shellingham - - typer-slim 0.13.1 pyhff2d567_0 + - typer-slim 0.14.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 48744 - timestamp: 1732084054211 + size: 49180 + timestamp: 1732848371718 - kind: conda name: types-python-dateutil version: 2.9.0.20241003 @@ -10228,6 +10265,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 409700 timestamp: 1732689603044 - kind: conda @@ -10247,6 +10285,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 404235 timestamp: 1732689685476 - kind: conda @@ -10266,6 +10305,7 @@ packages: constrains: - __osx >=11.0 license: MIT + license_family: MIT size: 356744 timestamp: 1732689860624 - kind: conda @@ -10409,6 +10449,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-2-Clause + license_family: BSD size: 63807 timestamp: 1732523690292 - kind: conda @@ -10425,6 +10466,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause + license_family: BSD size: 64783 timestamp: 1732523806 - kind: conda @@ -10441,6 +10483,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause + license_family: BSD size: 61043 timestamp: 1732523852129 - kind: conda @@ -10770,18 +10813,19 @@ packages: - kind: conda name: zipp version: 3.21.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - sha256: 232a30e4b0045c9de5e168dda0328dc0e28df9439cdecdfb97dd79c1c82c4cec - md5: fee389bf8a4843bd7a2248ce11b7f188 + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 21702 - timestamp: 1731262194278 + size: 21809 + timestamp: 1732827613585 - kind: conda name: zstandard version: 0.23.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 116741e367..f00fb688a8 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -26,8 +26,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -78,10 +78,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -120,7 +120,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -178,7 +178,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -205,9 +205,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -225,13 +225,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -248,8 +248,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -286,7 +286,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -301,10 +301,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -332,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -343,7 +343,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -401,7 +401,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -428,9 +428,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -448,12 +448,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -470,8 +470,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -508,7 +508,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -520,10 +520,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -548,7 +548,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -557,7 +557,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -614,7 +614,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -640,9 +640,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -660,7 +660,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -727,12 +727,12 @@ packages: timestamp: 1727779893392 - kind: conda name: aiohttp - version: 3.11.7 + version: 3.11.8 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda - sha256: e95adfd637644c9a0641bc5fbec04d53b19330568971a24021253e5054f7750e - md5: a1dc198dad91736555c27caa420029b1 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda + sha256: 5a51cfa8c17a1c545f07c8a9bae637b233c803f92f922ce3badb7a81f6e7eba8 + md5: 63eb2bd555d446218c7bbdec2dd746c5 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -747,16 +747,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 909778 - timestamp: 1732220397535 + size: 912229 + timestamp: 1732780345490 - kind: conda name: aiohttp - version: 3.11.7 + version: 3.11.8 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda - sha256: 6f5fc3177188871418f4112e87b708499f6c9c484e175ad8c3a2e08554143e85 - md5: 6d8e94bda91469c00eb617a9cdb7f622 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda + sha256: 991fccd7387b08127a8398cdd499ebb9be7a16a612b024f7f82d0ecbae456b00 + md5: 8caf80b1f8510c2c626831f463fac611 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -771,16 +771,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 870661 - timestamp: 1732220535266 + size: 873606 + timestamp: 1732780440642 - kind: conda name: aiohttp - version: 3.11.7 + version: 3.11.8 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda - sha256: 932bdef3892216f6219bb604319a63fe99a0780acf780d4265bcf10f906ade6b - md5: a5210c6947a961dec22d272c4bed586a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda + sha256: 04dc698f291a0580101baa4df07cc12ed99f025c4aab23e184cfe12cf692fa12 + md5: dc9d21c22f3a000083437b0e99e99f31 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -795,8 +795,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900629 - timestamp: 1732220481990 + size: 900671 + timestamp: 1732780496954 - kind: conda name: aiosignal version: 1.3.1 @@ -1475,13 +1475,12 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.5 - build: h0e61686_1 - build_number: 1 + version: 0.29.6 + build: h0e61686_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda - sha256: 1d7bc75a81cdcd992ebee9b06be6a63963203d7fc2537099bf91fda0573c3be6 - md5: 7143a281febcabfc242a458b7bc12048 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + sha256: b821d0125f8fcb589b880bf3a5e0e1667e285b3006ceb19d96e6d92d049ab787 + md5: 651a6500e5fded51bb7572f4eebcfd7b depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1497,17 +1496,16 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 353633 - timestamp: 1732704043097 + size: 355169 + timestamp: 1732769507038 - kind: conda name: aws-crt-cpp - version: 0.29.5 - build: h6068a22_1 - build_number: 1 + version: 0.29.6 + build: h6068a22_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda - sha256: 15eba2ca46b10a17d60b26d7a6db222f08e1d63c55eb76a19f16c30e06679fe4 - md5: 6c0a760285cb79c46a99b15449ecb9ac + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + sha256: 45b15e8ecad820f9f80bace92cbb29f81b30e0ba31e25b936a13bdb0360a0637 + md5: 7f8ecd32e9afbbf87438367b551c3a8b depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1522,17 +1520,16 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283812 - timestamp: 1732704031684 + size: 283440 + timestamp: 1732769529667 - kind: conda name: aws-crt-cpp - version: 0.29.5 - build: h8bcca62_1 - build_number: 1 + version: 0.29.6 + build: h8bcca62_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda - sha256: 371c509c0cd22360cd39963189ba7aa290b08b7384dd4414895f6186e2aecf7e - md5: ef024742bb2501bd3d7f10b0f9ce5a4d + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + sha256: b6d2ff238a712137afd9b46842235b32a04cac580734873bf86876da6e71dd03 + md5: 8e49f5e86a3e39699b24035fa6d1ad40 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1547,69 +1544,69 @@ packages: - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236161 - timestamp: 1732704224415 + size: 236490 + timestamp: 1732769764315 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h775d804_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda - sha256: dae09cbccc5af7282a9b74b424a4d451362fe3b31eb2ccbf571db321f9619c52 - md5: 6e691206e10feb236ca7c0cf985797a8 + build: h3b64406_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda + sha256: 10ce9c203d31229432421a841d8d135d3e942637571aae4bb2d3c7d5242e7f05 + md5: f9e46a4bb5a04cbca08355f166ce87c8 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2794659 - timestamp: 1732184111138 + size: 2722689 + timestamp: 1732812825640 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h8577fd2_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda - sha256: ddd7aaa925ac3d569aa3dc1fe0239fa5c57034a1360683c41d310d6805f0d5bd - md5: 3c789cd7093639a2662b14b87f11b04c + build: h5558e3c_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda + sha256: 4881f7b4f5e3c797332cffb990df246a422346b220a9c16014f274beb2a276f5 + md5: ba7abdc93b0ade11d774b47aaab84737 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2737395 - timestamp: 1732184718613 + size: 2945541 + timestamp: 1732812288219 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: hdaa582e_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda - sha256: a6fdba49b87ad3b92c219f60ac31e0d0b4fea7e651efe6d668288e5a0f7a1755 - md5: 0dca4b37cf80312f8ef84b649e6ad3a3 + build: h7085e57_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda + sha256: 0908a82e7c50c51d5ee0ca543dbe70cbe1963e6e8f80ffa58ea6d26e5c68251e + md5: feec198cb18a5e90aa36c97328567d63 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1617,8 +1614,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2951998 - timestamp: 1732184141 + size: 2813856 + timestamp: 1732812337182 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2707,6 +2704,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT size: 101872 timestamp: 1732707756745 - kind: conda @@ -2723,6 +2721,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT size: 101255 timestamp: 1732707891645 - kind: conda @@ -2739,28 +2738,28 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT size: 85623 timestamp: 1732707871414 - kind: conda name: httpx - version: 0.27.2 + version: 0.28.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - sha256: 1a33f160548bf447e15c0273899d27e4473f1d5b7ca1441232ec2d9d07c56d03 - md5: 7e9ac3faeebdbd7b53b462c41891e7f7 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + sha256: cb7895446cd93091300accea6afbc8d9811a3c5899922ccfeeff97d9b55909dc + md5: 22878824a87f1af2ad48665f9d5bfcc8 depends: - anyio - certifi - httpcore 1.* - idna - - python >=3.8 - - sniffio + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 65085 - timestamp: 1724778453275 + size: 63183 + timestamp: 1732831049776 - kind: conda name: huggingface_hub version: 0.26.2 @@ -3167,13 +3166,14 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h3d75c4c_0_cpu + build: h944b843_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda - sha256: 46d841b3f316d52d0fa085d5c583a4370de8223afc4f1bbf57eaebdf3aede7f1 - md5: cfee3c6a6ddeb26bba5d96ce7924a817 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda + sha256: a6708e09c64711096439a23c76df161ecff98837dfb0ace07b33a9147141c07f + md5: 05ed5955fe5a46c9475d6c63d36291f5 depends: - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3191,7 +3191,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.8.0,<2.9.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3199,41 +3199,41 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8024186 - timestamp: 1732536195865 + license_family: APACHE + size: 8042546 + timestamp: 1732864233719 - kind: conda name: libarrow version: 18.1.0 - build: h94eee4b_0_cpu - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda - sha256: 4f8ad6d3ac85f17b7ce319c1f8d0ffacee16403341315677977d3c7b9788166e - md5: 1718fa336f42a0b24b822457df7ce43d + build: hacc6a60_1_cpu + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda + sha256: c06d055a3b1fdc1a670481345a11ab7d2225074d0a98e448419e5cd828c070f4 + md5: 4957a938ab42181d6c9748920f13a027 depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.8.0,<2.9.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3241,39 +3241,42 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 - size: 8783805 - timestamp: 1732536115314 + size: 5470388 + timestamp: 1732863147130 - kind: conda name: libarrow version: 18.1.0 - build: hb943b0e_0_cpu - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda - sha256: acc1b6ec23a964ec87722fc90b55d47f8cb03e211e86b9ff312bed588cfc400a - md5: f2dac358d4bd6b57d9b47f11cca0ea8c + build: he15abb1_1_cpu + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda + sha256: afc81af2e533cc35295aebae4fb382e770310d9b1ac31837456b440d35c54cf7 + md5: bd3e35a6f3f869b4777488452f315008 depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.8.0,<3.0a0 + - libstdcxx >=13 + - libutf8proc >=2.8.0,<2.9.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3281,171 +3284,187 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 5497775 - timestamp: 1732535993576 + license_family: APACHE + size: 8780597 + timestamp: 1732863546099 - kind: conda name: libarrow-acero version: 18.1.0 - build: h286801f_0_cpu + build: h1dc2043_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda - sha256: 1b4ae51de889becdd7aca2053e5115d65e2ea94b91d07d2e297d8d3c4666cec5 - md5: fd53fc3858c13425e3334b0af9b6637f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda + sha256: 54709d2e29fe13167bb2b5e7755382723684197b32188ea18c9c48f5a911af46 + md5: 8a7dfd6c38ecc940e8edbf341819b2fe depends: - __osx >=11.0 - - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu - libcxx >=18 license: Apache-2.0 - size: 484735 - timestamp: 1732536132543 + size: 484158 + timestamp: 1732863376127 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5888daf_0_cpu + build: h5888daf_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda - sha256: ad2cab7ca7320642a655ac1214248a64d60a0ce771fa8e7b5378746c16be1c64 - md5: d2f94a6f24f028544c7a4cb1b50c5eca + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda + sha256: 3de5719a7035baad7e665116dce7bb3d069f0c1916e163c553e2e491bbe8b614 + md5: 6197dcb930f6254e9b2fdc416be56b71 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 610906 - timestamp: 1732536155092 + license_family: APACHE + size: 611272 + timestamp: 1732863586114 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_0_cpu + build: h5ad3122_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda - sha256: 216f791e47c774b1d44c89fe7839e03646285cf3220961306b90eec7bf4a6d71 - md5: 7b55a3bc6a3c9a75e509e68d89afd77a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda + sha256: 52bcb30299f9e49c11eaa3c49aa4360e530ead6d906f883068cd2759d355361e + md5: 8d1175956362366c0550da2a81730561 depends: - - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow 18.1.0 h944b843_1_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 577886 - timestamp: 1732536278269 + license_family: APACHE + size: 578289 + timestamp: 1732864300809 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h286801f_0_cpu + build: h1dc2043_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda - sha256: a52ba6632837f2e5ec1c91ea4271ae7bd84fe9af348467e234a338b2fc78f41c - md5: 4020134362b81be7b91c7c6ae086eecc + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda + sha256: 7b5b462c709c2269af5dfec695028c6efe67dc7eb90b485e0e71fae6ecce6f6d + md5: 27c23281c2e2b56fec1b6d7dd1df439a depends: - __osx >=11.0 - - libarrow 18.1.0 hb943b0e_0_cpu - - libarrow-acero 18.1.0 h286801f_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu + - libarrow-acero 18.1.0 h1dc2043_1_cpu - libcxx >=18 - - libparquet 18.1.0 hda0ea68_0_cpu + - libparquet 18.1.0 hf4cc9e7_1_cpu license: Apache-2.0 - size: 489616 - timestamp: 1732537344927 + size: 489630 + timestamp: 1732865758291 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5888daf_0_cpu + build: h5888daf_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda - sha256: da77235b3874b50facb632cc409bee0df81e9dd7c25543a5e8b92873bd2d2a20 - md5: 7834b3a11d0f1ee7e13b4533e361586f + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda + sha256: 7b3db3d5a7e411f8897e8d74403c1d871f3054300f5009c4bdf75da011bc3f42 + md5: 77501831a2aabbaabac55e8cb3b6900a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h94eee4b_0_cpu - - libarrow-acero 18.1.0 h5888daf_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu + - libarrow-acero 18.1.0 h5888daf_1_cpu - libgcc >=13 - - libparquet 18.1.0 h6bd9018_0_cpu + - libparquet 18.1.0 h6bd9018_1_cpu - libstdcxx >=13 license: Apache-2.0 - size: 588196 - timestamp: 1732536246424 + license_family: APACHE + size: 585458 + timestamp: 1732863686753 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_0_cpu + build: h5ad3122_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda - sha256: 17cd3bc19ae04d1a5b3795fac0fb796cc90eabeb3359a39eaf5dfed84385b4de - md5: 98d2712cebf91fc823e6231f7e55eda3 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda + sha256: f6a01e972523d28f8cbabfe803fb136df2b6fae26aaad21d6c539bbd818c0fba + md5: f02295f8a252e8588d220364164565ae depends: - - libarrow 18.1.0 h3d75c4c_0_cpu - - libarrow-acero 18.1.0 h5ad3122_0_cpu + - libarrow 18.1.0 h944b843_1_cpu + - libarrow-acero 18.1.0 h5ad3122_1_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_0_cpu + - libparquet 18.1.0 h23a96eb_1_cpu - libstdcxx >=13 license: Apache-2.0 - size: 561486 - timestamp: 1732536339536 + license_family: APACHE + size: 559007 + timestamp: 1732864377646 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h14ec2bd_0_cpu + build: h14ec2bd_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda - sha256: 30723e91df659aa971d9964e25730276295cf3a45be557ec1df9d413c31c44a9 - md5: f93217605309abc1c0314102036da21c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda + sha256: ac3756dcfb242877719c629d343f000b807130aec6f41d4167a392eb152c1549 + md5: e1160e0f8017b4f4ae55578ff0fddd98 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h3d75c4c_0_cpu - - libarrow-acero 18.1.0 h5ad3122_0_cpu - - libarrow-dataset 18.1.0 h5ad3122_0_cpu + - libarrow 18.1.0 h944b843_1_cpu + - libarrow-acero 18.1.0 h5ad3122_1_cpu + - libarrow-dataset 18.1.0 h5ad3122_1_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 515320 - timestamp: 1732536368053 + license_family: APACHE + size: 515219 + timestamp: 1732864413881 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h5c8f2c3_0_cpu + build: h5c8f2c3_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda - sha256: d40e4a3061d58d07d017a6e439883ce1b9860f3a960a5aead8da189f8795a92c - md5: 51dc5a7117ec264e0a5cc1a5d82437dd + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda + sha256: e77a354bfc0ba7b04c856f1bb16e7b08950bcde54026087bafec46090380fcc1 + md5: 5d47bd2674afd104dbe2f2f3534594b0 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h94eee4b_0_cpu - - libarrow-acero 18.1.0 h5888daf_0_cpu - - libarrow-dataset 18.1.0 h5888daf_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu + - libarrow-acero 18.1.0 h5888daf_1_cpu + - libarrow-dataset 18.1.0 h5888daf_1_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 520871 - timestamp: 1732536289093 + license_family: APACHE + size: 520681 + timestamp: 1732863726954 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h6a6e5c5_0_cpu + build: hf3d3107_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda - sha256: aa673d86e56c3b17b66f5ffcd8ce98b93754c9c07e2e6aff96d0dd02135c0969 - md5: 9b2fd35f01e23972abb91543bbd6d84c + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda + sha256: 725aa1db6b91068613c1effdf8f23d592dd1e6c95722e27eb63ad94c98d47c1b + md5: 72ec5bcfc66b3cc5e865c7c90b24c43e depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb943b0e_0_cpu - - libarrow-acero 18.1.0 h286801f_0_cpu - - libarrow-dataset 18.1.0 h286801f_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu + - libarrow-acero 18.1.0 h1dc2043_1_cpu + - libarrow-dataset 18.1.0 h1dc2043_1_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - size: 452400 - timestamp: 1732537518703 + size: 451765 + timestamp: 1732866475770 - kind: conda name: libblas version: 3.9.0 @@ -4800,55 +4819,60 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_0_cpu + build: h23a96eb_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda - sha256: be9d2527e709007aef42c39d9ab49163e587c25dc23cc1baba8af91edce16437 - md5: 99592ed1d2877136ebd192789164891a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda + sha256: ac045716c4e643d5d92c2dee96f50cdd8aaac9ce3f768b2375aa545b0551d89e + md5: a0e6b8bb23a75fbe8d38cf3cab6abf44 depends: - - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow 18.1.0 h944b843_1_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1117420 - timestamp: 1732536323359 + license_family: APACHE + size: 1116708 + timestamp: 1732864357500 - kind: conda name: libparquet version: 18.1.0 - build: h6bd9018_0_cpu + build: h6bd9018_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda - sha256: d5f73b48e754af5874f48ef22dda1339b74597b66ff5ffeff8a2290f97a9611b - md5: 580349cffeac814a32ff661dcbe72821 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda + sha256: 0df119f4c1a2387d910e132c670b29ee5b29dd79384549de6f1a43067515c8ba + md5: 1054909202f86e38bbbb7ca1131b8471 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1204506 - timestamp: 1732536224976 + license_family: APACHE + size: 1203523 + timestamp: 1732863665743 - kind: conda name: libparquet version: 18.1.0 - build: hda0ea68_0_cpu + build: hf4cc9e7_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda - sha256: a6a22f0692d99a3cb6306ebd4d2e840c980d08797386f300c47604ee8865af4d - md5: 22f05c8b1c1b82eb5efc2a89c08ee047 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda + sha256: 974b773c8a000b27ef3283b8744cfda9e46afff7d66c708b90971cc4d681805e + md5: 1d41143609ae6961de983182053fbdf2 depends: - __osx >=11.0 - - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 874829 - timestamp: 1732537283879 + size: 874294 + timestamp: 1732865555683 - kind: conda name: libpng version: 1.6.44 @@ -5326,43 +5350,49 @@ packages: - kind: conda name: libutf8proc version: 2.8.0 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 - sha256: 49082ee8d01339b225f7f8c60f32a2a2c05fe3b16f31b554b4fb2c1dea237d1c - md5: ede4266dc02e875fe1ea77b25dd43747 + build: h812390e_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda + sha256: 25dc68d188336e1b83f28175b5146c2192e49a3236b340962c97727c6d47ede9 + md5: 83c5f8e4431ad4b6b7e22c4edd898163 depends: - - libgcc-ng >=12 + - libgcc >=13 license: MIT license_family: MIT - size: 101070 - timestamp: 1667316029302 + size: 81515 + timestamp: 1732829682446 - kind: conda name: libutf8proc version: 2.8.0 - build: h1a8c8d9_0 + build: hc098a78_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 - sha256: a3faddac08efd930fa3a1cc254b5053b4ed9428c49a888d437bf084d403c931a - md5: f8c9c41a122ab3abdf8943b13f4957ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda + sha256: 7807a98522477a8bf12460402845224f607ab6e1e73ac316b667169f5143cfe5 + md5: ed89b8bf0d74d23ce47bcf566dd36608 + depends: + - __osx >=11.0 license: MIT license_family: MIT - size: 103492 - timestamp: 1667316405233 + size: 82462 + timestamp: 1732829832932 - kind: conda name: libutf8proc version: 2.8.0 - build: h4e544f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 - sha256: c1956b64ad9613c66cf87398f5e2c36d071034a93892da7e8cc22e75cface878 - md5: bf0defbd8ac06270fb5ec05c85fb3c96 + build: hf23e847_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb + md5: b1aa0faa95017bca11369bd080487ec4 depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: MIT license_family: MIT - size: 101529 - timestamp: 1667315331359 + size: 80852 + timestamp: 1732829699583 - kind: conda name: libuuid version: 2.38.1 @@ -5803,76 +5833,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - sha256: d42d9672b36eed3bc4d846d0ae8e20630d80ec5ff54966af36bb0e84eb018a7c - md5: 21b8f08296f321b75659cce32688750b - depends: - - max-core ==24.6.0.dev2024112805 release - - max-python >=24.6.0.dev2024112805,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112805 release - - mblack ==24.6.0.dev2024112805 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + sha256: d2d1d27c804d40be907e5f24dee2c96a83530f99a4aa4698d4bfbcd2389f8a68 + md5: 07dc8704dd68d983b1292db751b677fe + depends: + - max-core ==24.6.0.dev2024112922 release + - max-python >=24.6.0.dev2024112922,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024112922 release license: LicenseRef-Modular-Proprietary - size: 9927 - timestamp: 1732771319615 + size: 9917 + timestamp: 1732918079788 - kind: conda name: max-core - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda - sha256: 9b02550f0d393451fff14ba476998247e8ce9230c8cde3b496b04ba72ca58a40 - md5: d351616984b25f89afd32b0a98c89928 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda + sha256: ab1ec7348e8edca48914c0203b5995c8013347ad0fd93d5e38c8e62261cb6ca2 + md5: 18c1fd2b6354db88e967cb200fee0a55 depends: - - mblack ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112922 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254576173 - timestamp: 1732771254860 + size: 254726602 + timestamp: 1732918231240 - kind: conda name: max-core - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda - sha256: a03c929c723950872b136f418c4f197907b850e70382a5f74d5d5540abd1ccc5 - md5: 02c7bc4863ff19c0322ed890145ba23b + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda + sha256: 4584866065437877ec865afb88d99ef983bd284f2b5e88750f7ba4616c73de54 + md5: a05d93b813689510b14c1c478c0f7e20 depends: - - mblack ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112922 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258211572 - timestamp: 1732771319613 + size: 258398513 + timestamp: 1732918079786 - kind: conda name: max-core - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda - sha256: 1a7f82f0029dec8f68847f852e1eac5172c1acc5305541952ae95ce6c3b97436 - md5: 977b26b7ee540c254a23c71e9ba7f1bf + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda + sha256: faacbe747fdad79e9275664da544b174a5e77b705331988fed5d943b77a49c11 + md5: 72bedc7bfeff8091539861c600246817 depends: - - mblack ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112922 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220134322 - timestamp: 1732771049861 + size: 220273860 + timestamp: 1732917995058 - kind: conda name: max-python - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda - sha256: ff1ddb4400ac03c4f6ad5ffc016b5f9b087e1aa967d51eac72597036e478b451 - md5: 9017365163eec21de4fed0b35c6be7d9 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda + sha256: 129fabb8fb1086a760e1e49654fcccf016454f224eda1c37016f487a37e8770b + md5: f581c28718cefb1960ba65708ff8303a depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python 3.12.* - pillow - fastapi @@ -5894,18 +5924,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128343790 - timestamp: 1732771254868 + size: 128543797 + timestamp: 1732918231248 - kind: conda name: max-python - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda - sha256: 69fb28538434178c34aabf57708859131a5d2f26410802624d401bb0ba3be4a5 - md5: c19242ce517a4d07ff802dca119126e1 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda + sha256: 89ee58ba2ea8b51d5816121a9a662d64455313d840f4726500c531f557b56d99 + md5: 05b1090842c71dd75a66757658960f7f depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python 3.12.* - pillow - fastapi @@ -5927,18 +5957,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132094887 - timestamp: 1732771319621 + size: 132246699 + timestamp: 1732918079795 - kind: conda name: max-python - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda - sha256: 75c7d37c1b6fb68c6ef5054ed88cb8ac8bcc4b7273e80b8f9209202a0ae02de1 - md5: 1215e1fa5c7b0cc518447bc214b7e5a5 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda + sha256: 689d02e41019da522704fe705487d1b7ea9ab228c6c49f6917a9caee9d4002b9 + md5: fa1eec6a9b9d84f6c097005b5dc0b5a6 depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python 3.12.* - pillow - fastapi @@ -5960,17 +5990,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118976325 - timestamp: 1732771049864 + size: 119120270 + timestamp: 1732917995061 - kind: conda name: mblack - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - sha256: 821a0e6bc0367ccdca619f0935e0f13a92138a6b2681f617aae2d2000d0a891f - md5: f9fcd437962beaa0c577bcbeecd1e69c + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + sha256: b2533bf1ffe77004616d6c78440666b71a1d08d09057f3da900c31ea7e277d33 + md5: 5ddc332663efce023813d99e7e474c28 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5980,8 +6010,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130612 - timestamp: 1732771319618 + size: 130611 + timestamp: 1732918079791 - kind: conda name: mdurl version: 0.1.2 @@ -5999,21 +6029,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - sha256: 2702029742752c2bb13fe108c3e5a577151b80b0e0675a0f5a819467b579c136 - md5: 6c9019d1b099600e3a50dca268b658d3 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + sha256: 0e5cbf4fed2931f0cd8051b3c909fc8f7e2d20dbccfbe9af4bac76a24a5cac21 + md5: bf727d981f2de8cf1cb7ac9cf222c70b depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22943 - timestamp: 1732771319619 + size: 22938 + timestamp: 1732918079793 - kind: conda name: multidict version: 6.1.0 @@ -6999,6 +7029,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 + license_family: APACHE size: 25375 timestamp: 1732610892198 - kind: conda @@ -7018,6 +7049,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 + license_family: APACHE size: 25213 timestamp: 1732610785600 - kind: conda @@ -7037,6 +7069,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 + license_family: APACHE size: 25374 timestamp: 1732611006864 - kind: conda @@ -7059,6 +7092,7 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 4612916 timestamp: 1732610377259 - kind: conda @@ -7081,6 +7115,7 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 4406662 timestamp: 1732610939832 - kind: conda @@ -7103,6 +7138,7 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 3909116 timestamp: 1732610863261 - kind: conda @@ -7434,19 +7470,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.17 + version: 0.0.18 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - sha256: f351636a91163de28cf602c755abd1b5ad858e4a790c3a30d5a5aa1066c0550c - md5: a08ea55eb3ad403b12639cd3a4a8d28f + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + sha256: e4c762c261f152cb4219a736fffbd8225ea1e060ce250318aae89df5d708a089 + md5: 8a5e488f98049813ba403c5f751f6e1e depends: - python >=3.8 license: Apache-2.0 license_family: Apache - size: 27810 - timestamp: 1730382122271 + size: 27752 + timestamp: 1732867990988 - kind: conda name: python-tzdata version: '2024.2' @@ -8327,58 +8363,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.13.1 + version: 0.14.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - sha256: 2f12a5af13d440aa75970e3d0d1ea3192916848473967b4ecb483627c01333cb - md5: 82a4704166144f27e9c83803bff5bf53 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + sha256: 4d7f1c77b928a66ae3b0089e288e7fdeb826bf0dabba9799488017e6a9b84f38 + md5: 9eb8a3f5d36ca3e7f686e7a5d85aff72 depends: - python >=3.9 - - typer-slim-standard 0.13.1 hd8ed1ab_0 + - typer-slim-standard 0.14.0 hd8ed1ab_0 license: MIT license_family: MIT - size: 55352 - timestamp: 1732084066966 + size: 54637 + timestamp: 1732848384457 - kind: conda name: typer-slim - version: 0.13.1 - build: pyhff2d567_0 + version: 0.14.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - sha256: b190bcd5f341ba8843f2f1ce43b5e8dae770bb84d49e2ce5b346e4d8098367a1 - md5: 85283fb942fa2604c3db03483027ced2 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + sha256: 883969c10b9837bb18a340ffb01a984ef6b4655fc72ff05aeb7bc659c9a1229d + md5: 3674a4cd7fd8e8a7277af2b30965925d depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - shellingham >=1.3.0 - - typer >=0.13.1,<0.13.2.0a0 - rich >=10.11.0 + - typer >=0.14.0,<0.14.1.0a0 license: MIT license_family: MIT - size: 43463 - timestamp: 1732084053693 + size: 43504 + timestamp: 1732848371202 - kind: conda name: typer-slim-standard - version: 0.13.1 + version: 0.14.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - sha256: 14ac72d0533bc2f37f8dc85b90b45a91ca28ee0995c520b16a40f34629749c7a - md5: a9bf95ed3c65bf936292d944bf3df36d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + sha256: 0e09e393e75028a0e827c7177e0fb1a070c87756e47b5ae6418423e22b10dfac + md5: 9e1e1f9c84add9637ca715f8fb71a83f depends: - rich - shellingham - - typer-slim 0.13.1 pyhff2d567_0 + - typer-slim 0.14.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 48744 - timestamp: 1732084054211 + size: 49180 + timestamp: 1732848371718 - kind: conda name: typing-extensions version: 4.12.2 @@ -8552,6 +8588,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 409700 timestamp: 1732689603044 - kind: conda @@ -8571,6 +8608,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 404235 timestamp: 1732689685476 - kind: conda @@ -8590,6 +8628,7 @@ packages: constrains: - __osx >=11.0 license: MIT + license_family: MIT size: 356744 timestamp: 1732689860624 - kind: conda @@ -8657,6 +8696,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-2-Clause + license_family: BSD size: 63807 timestamp: 1732523690292 - kind: conda @@ -8673,6 +8713,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause + license_family: BSD size: 64783 timestamp: 1732523806 - kind: conda @@ -8689,6 +8730,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause + license_family: BSD size: 61043 timestamp: 1732523852129 - kind: conda @@ -9018,18 +9060,19 @@ packages: - kind: conda name: zipp version: 3.21.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - sha256: 232a30e4b0045c9de5e168dda0328dc0e28df9439cdecdfb97dd79c1c82c4cec - md5: fee389bf8a4843bd7a2248ce11b7f188 + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 21702 - timestamp: 1731262194278 + size: 21809 + timestamp: 1732827613585 - kind: conda name: zstandard version: 0.23.0 diff --git a/magic.lock b/magic.lock index 6b52298fec..dd2f5cc98e 100644 --- a/magic.lock +++ b/magic.lock @@ -9,7 +9,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -26,8 +26,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -78,10 +78,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -120,7 +120,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda @@ -132,12 +132,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -179,7 +179,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -206,9 +206,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -226,13 +226,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -249,8 +249,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -287,7 +287,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -302,10 +302,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -333,7 +333,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -344,7 +344,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda @@ -356,12 +356,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -403,7 +403,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -430,9 +430,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -450,12 +450,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -472,8 +472,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -510,7 +510,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -522,10 +522,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -550,7 +550,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -559,7 +559,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda @@ -570,12 +570,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -617,7 +617,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -643,9 +643,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -663,7 +663,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -730,12 +730,12 @@ packages: timestamp: 1727779893392 - kind: conda name: aiohttp - version: 3.11.7 + version: 3.11.8 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.7-py312h178313f_0.conda - sha256: e95adfd637644c9a0641bc5fbec04d53b19330568971a24021253e5054f7750e - md5: a1dc198dad91736555c27caa420029b1 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda + sha256: 5a51cfa8c17a1c545f07c8a9bae637b233c803f92f922ce3badb7a81f6e7eba8 + md5: 63eb2bd555d446218c7bbdec2dd746c5 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -750,16 +750,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 909778 - timestamp: 1732220397535 + size: 912229 + timestamp: 1732780345490 - kind: conda name: aiohttp - version: 3.11.7 + version: 3.11.8 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.7-py312h998013c_0.conda - sha256: 6f5fc3177188871418f4112e87b708499f6c9c484e175ad8c3a2e08554143e85 - md5: 6d8e94bda91469c00eb617a9cdb7f622 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda + sha256: 991fccd7387b08127a8398cdd499ebb9be7a16a612b024f7f82d0ecbae456b00 + md5: 8caf80b1f8510c2c626831f463fac611 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -774,16 +774,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 870661 - timestamp: 1732220535266 + size: 873606 + timestamp: 1732780440642 - kind: conda name: aiohttp - version: 3.11.7 + version: 3.11.8 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.7-py312hcc812fe_0.conda - sha256: 932bdef3892216f6219bb604319a63fe99a0780acf780d4265bcf10f906ade6b - md5: a5210c6947a961dec22d272c4bed586a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda + sha256: 04dc698f291a0580101baa4df07cc12ed99f025c4aab23e184cfe12cf692fa12 + md5: dc9d21c22f3a000083437b0e99e99f31 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -798,8 +798,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900629 - timestamp: 1732220481990 + size: 900671 + timestamp: 1732780496954 - kind: conda name: aiosignal version: 1.3.1 @@ -1478,13 +1478,12 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.5 - build: h0e61686_1 - build_number: 1 + version: 0.29.6 + build: h0e61686_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.5-h0e61686_1.conda - sha256: 1d7bc75a81cdcd992ebee9b06be6a63963203d7fc2537099bf91fda0573c3be6 - md5: 7143a281febcabfc242a458b7bc12048 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + sha256: b821d0125f8fcb589b880bf3a5e0e1667e285b3006ceb19d96e6d92d049ab787 + md5: 651a6500e5fded51bb7572f4eebcfd7b depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1500,17 +1499,16 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 353633 - timestamp: 1732704043097 + size: 355169 + timestamp: 1732769507038 - kind: conda name: aws-crt-cpp - version: 0.29.5 - build: h6068a22_1 - build_number: 1 + version: 0.29.6 + build: h6068a22_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.5-h6068a22_1.conda - sha256: 15eba2ca46b10a17d60b26d7a6db222f08e1d63c55eb76a19f16c30e06679fe4 - md5: 6c0a760285cb79c46a99b15449ecb9ac + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + sha256: 45b15e8ecad820f9f80bace92cbb29f81b30e0ba31e25b936a13bdb0360a0637 + md5: 7f8ecd32e9afbbf87438367b551c3a8b depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1525,17 +1523,16 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283812 - timestamp: 1732704031684 + size: 283440 + timestamp: 1732769529667 - kind: conda name: aws-crt-cpp - version: 0.29.5 - build: h8bcca62_1 - build_number: 1 + version: 0.29.6 + build: h8bcca62_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.5-h8bcca62_1.conda - sha256: 371c509c0cd22360cd39963189ba7aa290b08b7384dd4414895f6186e2aecf7e - md5: ef024742bb2501bd3d7f10b0f9ce5a4d + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + sha256: b6d2ff238a712137afd9b46842235b32a04cac580734873bf86876da6e71dd03 + md5: 8e49f5e86a3e39699b24035fa6d1ad40 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1550,69 +1547,69 @@ packages: - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236161 - timestamp: 1732704224415 + size: 236490 + timestamp: 1732769764315 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h775d804_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h775d804_3.conda - sha256: dae09cbccc5af7282a9b74b424a4d451362fe3b31eb2ccbf571db321f9619c52 - md5: 6e691206e10feb236ca7c0cf985797a8 + build: h3b64406_4 + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda + sha256: 10ce9c203d31229432421a841d8d135d3e942637571aae4bb2d3c7d5242e7f05 + md5: f9e46a4bb5a04cbca08355f166ce87c8 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2794659 - timestamp: 1732184111138 + size: 2722689 + timestamp: 1732812825640 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: h8577fd2_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h8577fd2_3.conda - sha256: ddd7aaa925ac3d569aa3dc1fe0239fa5c57034a1360683c41d310d6805f0d5bd - md5: 3c789cd7093639a2662b14b87f11b04c + build: h5558e3c_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda + sha256: 4881f7b4f5e3c797332cffb990df246a422346b220a9c16014f274beb2a276f5 + md5: ba7abdc93b0ade11d774b47aaab84737 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2737395 - timestamp: 1732184718613 + size: 2945541 + timestamp: 1732812288219 - kind: conda name: aws-sdk-cpp version: 1.11.449 - build: hdaa582e_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-hdaa582e_3.conda - sha256: a6fdba49b87ad3b92c219f60ac31e0d0b4fea7e651efe6d668288e5a0f7a1755 - md5: 0dca4b37cf80312f8ef84b649e6ad3a3 + build: h7085e57_4 + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda + sha256: 0908a82e7c50c51d5ee0ca543dbe70cbe1963e6e8f80ffa58ea6d26e5c68251e + md5: feec198cb18a5e90aa36c97328567d63 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1620,8 +1617,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2951998 - timestamp: 1732184141 + size: 2813856 + timestamp: 1732812337182 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2710,6 +2707,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT size: 101872 timestamp: 1732707756745 - kind: conda @@ -2726,6 +2724,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT size: 101255 timestamp: 1732707891645 - kind: conda @@ -2742,28 +2741,28 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT size: 85623 timestamp: 1732707871414 - kind: conda name: httpx - version: 0.27.2 + version: 0.28.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.27.2-pyhd8ed1ab_0.conda - sha256: 1a33f160548bf447e15c0273899d27e4473f1d5b7ca1441232ec2d9d07c56d03 - md5: 7e9ac3faeebdbd7b53b462c41891e7f7 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + sha256: cb7895446cd93091300accea6afbc8d9811a3c5899922ccfeeff97d9b55909dc + md5: 22878824a87f1af2ad48665f9d5bfcc8 depends: - anyio - certifi - httpcore 1.* - idna - - python >=3.8 - - sniffio + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 65085 - timestamp: 1724778453275 + size: 63183 + timestamp: 1732831049776 - kind: conda name: huggingface_hub version: 0.26.2 @@ -3170,13 +3169,14 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h3d75c4c_0_cpu + build: h944b843_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h3d75c4c_0_cpu.conda - sha256: 46d841b3f316d52d0fa085d5c583a4370de8223afc4f1bbf57eaebdf3aede7f1 - md5: cfee3c6a6ddeb26bba5d96ce7924a817 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda + sha256: a6708e09c64711096439a23c76df161ecff98837dfb0ace07b33a9147141c07f + md5: 05ed5955fe5a46c9475d6c63d36291f5 depends: - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3194,7 +3194,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.8.0,<2.9.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3202,41 +3202,41 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8024186 - timestamp: 1732536195865 + license_family: APACHE + size: 8042546 + timestamp: 1732864233719 - kind: conda name: libarrow version: 18.1.0 - build: h94eee4b_0_cpu - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h94eee4b_0_cpu.conda - sha256: 4f8ad6d3ac85f17b7ce319c1f8d0ffacee16403341315677977d3c7b9788166e - md5: 1718fa336f42a0b24b822457df7ce43d + build: hacc6a60_1_cpu + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda + sha256: c06d055a3b1fdc1a670481345a11ab7d2225074d0a98e448419e5cd828c070f4 + md5: 4957a938ab42181d6c9748920f13a027 depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.8.0,<3.0a0 + - libutf8proc >=2.8.0,<2.9.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3244,39 +3244,42 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 - size: 8783805 - timestamp: 1732536115314 + size: 5470388 + timestamp: 1732863147130 - kind: conda name: libarrow version: 18.1.0 - build: hb943b0e_0_cpu - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hb943b0e_0_cpu.conda - sha256: acc1b6ec23a964ec87722fc90b55d47f8cb03e211e86b9ff312bed588cfc400a - md5: f2dac358d4bd6b57d9b47f11cca0ea8c + build: he15abb1_1_cpu + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda + sha256: afc81af2e533cc35295aebae4fb382e770310d9b1ac31837456b440d35c54cf7 + md5: bd3e35a6f3f869b4777488452f315008 depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.5,<0.29.6.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.8.0,<3.0a0 + - libstdcxx >=13 + - libutf8proc >=2.8.0,<2.9.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3284,171 +3287,187 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - apache-arrow-proc =*=cpu license: Apache-2.0 - size: 5497775 - timestamp: 1732535993576 + license_family: APACHE + size: 8780597 + timestamp: 1732863546099 - kind: conda name: libarrow-acero version: 18.1.0 - build: h286801f_0_cpu + build: h1dc2043_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h286801f_0_cpu.conda - sha256: 1b4ae51de889becdd7aca2053e5115d65e2ea94b91d07d2e297d8d3c4666cec5 - md5: fd53fc3858c13425e3334b0af9b6637f + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda + sha256: 54709d2e29fe13167bb2b5e7755382723684197b32188ea18c9c48f5a911af46 + md5: 8a7dfd6c38ecc940e8edbf341819b2fe depends: - __osx >=11.0 - - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu - libcxx >=18 license: Apache-2.0 - size: 484735 - timestamp: 1732536132543 + size: 484158 + timestamp: 1732863376127 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5888daf_0_cpu + build: h5888daf_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_0_cpu.conda - sha256: ad2cab7ca7320642a655ac1214248a64d60a0ce771fa8e7b5378746c16be1c64 - md5: d2f94a6f24f028544c7a4cb1b50c5eca + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda + sha256: 3de5719a7035baad7e665116dce7bb3d069f0c1916e163c553e2e491bbe8b614 + md5: 6197dcb930f6254e9b2fdc416be56b71 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 610906 - timestamp: 1732536155092 + license_family: APACHE + size: 611272 + timestamp: 1732863586114 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_0_cpu + build: h5ad3122_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_0_cpu.conda - sha256: 216f791e47c774b1d44c89fe7839e03646285cf3220961306b90eec7bf4a6d71 - md5: 7b55a3bc6a3c9a75e509e68d89afd77a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda + sha256: 52bcb30299f9e49c11eaa3c49aa4360e530ead6d906f883068cd2759d355361e + md5: 8d1175956362366c0550da2a81730561 depends: - - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow 18.1.0 h944b843_1_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 577886 - timestamp: 1732536278269 + license_family: APACHE + size: 578289 + timestamp: 1732864300809 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h286801f_0_cpu + build: h1dc2043_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h286801f_0_cpu.conda - sha256: a52ba6632837f2e5ec1c91ea4271ae7bd84fe9af348467e234a338b2fc78f41c - md5: 4020134362b81be7b91c7c6ae086eecc + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda + sha256: 7b5b462c709c2269af5dfec695028c6efe67dc7eb90b485e0e71fae6ecce6f6d + md5: 27c23281c2e2b56fec1b6d7dd1df439a depends: - __osx >=11.0 - - libarrow 18.1.0 hb943b0e_0_cpu - - libarrow-acero 18.1.0 h286801f_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu + - libarrow-acero 18.1.0 h1dc2043_1_cpu - libcxx >=18 - - libparquet 18.1.0 hda0ea68_0_cpu + - libparquet 18.1.0 hf4cc9e7_1_cpu license: Apache-2.0 - size: 489616 - timestamp: 1732537344927 + size: 489630 + timestamp: 1732865758291 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5888daf_0_cpu + build: h5888daf_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_0_cpu.conda - sha256: da77235b3874b50facb632cc409bee0df81e9dd7c25543a5e8b92873bd2d2a20 - md5: 7834b3a11d0f1ee7e13b4533e361586f + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda + sha256: 7b3db3d5a7e411f8897e8d74403c1d871f3054300f5009c4bdf75da011bc3f42 + md5: 77501831a2aabbaabac55e8cb3b6900a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h94eee4b_0_cpu - - libarrow-acero 18.1.0 h5888daf_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu + - libarrow-acero 18.1.0 h5888daf_1_cpu - libgcc >=13 - - libparquet 18.1.0 h6bd9018_0_cpu + - libparquet 18.1.0 h6bd9018_1_cpu - libstdcxx >=13 license: Apache-2.0 - size: 588196 - timestamp: 1732536246424 + license_family: APACHE + size: 585458 + timestamp: 1732863686753 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_0_cpu + build: h5ad3122_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_0_cpu.conda - sha256: 17cd3bc19ae04d1a5b3795fac0fb796cc90eabeb3359a39eaf5dfed84385b4de - md5: 98d2712cebf91fc823e6231f7e55eda3 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda + sha256: f6a01e972523d28f8cbabfe803fb136df2b6fae26aaad21d6c539bbd818c0fba + md5: f02295f8a252e8588d220364164565ae depends: - - libarrow 18.1.0 h3d75c4c_0_cpu - - libarrow-acero 18.1.0 h5ad3122_0_cpu + - libarrow 18.1.0 h944b843_1_cpu + - libarrow-acero 18.1.0 h5ad3122_1_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_0_cpu + - libparquet 18.1.0 h23a96eb_1_cpu - libstdcxx >=13 license: Apache-2.0 - size: 561486 - timestamp: 1732536339536 + license_family: APACHE + size: 559007 + timestamp: 1732864377646 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h14ec2bd_0_cpu + build: h14ec2bd_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_0_cpu.conda - sha256: 30723e91df659aa971d9964e25730276295cf3a45be557ec1df9d413c31c44a9 - md5: f93217605309abc1c0314102036da21c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda + sha256: ac3756dcfb242877719c629d343f000b807130aec6f41d4167a392eb152c1549 + md5: e1160e0f8017b4f4ae55578ff0fddd98 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h3d75c4c_0_cpu - - libarrow-acero 18.1.0 h5ad3122_0_cpu - - libarrow-dataset 18.1.0 h5ad3122_0_cpu + - libarrow 18.1.0 h944b843_1_cpu + - libarrow-acero 18.1.0 h5ad3122_1_cpu + - libarrow-dataset 18.1.0 h5ad3122_1_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 515320 - timestamp: 1732536368053 + license_family: APACHE + size: 515219 + timestamp: 1732864413881 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h5c8f2c3_0_cpu + build: h5c8f2c3_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_0_cpu.conda - sha256: d40e4a3061d58d07d017a6e439883ce1b9860f3a960a5aead8da189f8795a92c - md5: 51dc5a7117ec264e0a5cc1a5d82437dd + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda + sha256: e77a354bfc0ba7b04c856f1bb16e7b08950bcde54026087bafec46090380fcc1 + md5: 5d47bd2674afd104dbe2f2f3534594b0 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h94eee4b_0_cpu - - libarrow-acero 18.1.0 h5888daf_0_cpu - - libarrow-dataset 18.1.0 h5888daf_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu + - libarrow-acero 18.1.0 h5888daf_1_cpu + - libarrow-dataset 18.1.0 h5888daf_1_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 520871 - timestamp: 1732536289093 + license_family: APACHE + size: 520681 + timestamp: 1732863726954 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h6a6e5c5_0_cpu + build: hf3d3107_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h6a6e5c5_0_cpu.conda - sha256: aa673d86e56c3b17b66f5ffcd8ce98b93754c9c07e2e6aff96d0dd02135c0969 - md5: 9b2fd35f01e23972abb91543bbd6d84c + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda + sha256: 725aa1db6b91068613c1effdf8f23d592dd1e6c95722e27eb63ad94c98d47c1b + md5: 72ec5bcfc66b3cc5e865c7c90b24c43e depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb943b0e_0_cpu - - libarrow-acero 18.1.0 h286801f_0_cpu - - libarrow-dataset 18.1.0 h286801f_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu + - libarrow-acero 18.1.0 h1dc2043_1_cpu + - libarrow-dataset 18.1.0 h1dc2043_1_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - size: 452400 - timestamp: 1732537518703 + size: 451765 + timestamp: 1732866475770 - kind: conda name: libblas version: 3.9.0 @@ -4803,55 +4822,60 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_0_cpu + build: h23a96eb_1_cpu + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_0_cpu.conda - sha256: be9d2527e709007aef42c39d9ab49163e587c25dc23cc1baba8af91edce16437 - md5: 99592ed1d2877136ebd192789164891a + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda + sha256: ac045716c4e643d5d92c2dee96f50cdd8aaac9ce3f768b2375aa545b0551d89e + md5: a0e6b8bb23a75fbe8d38cf3cab6abf44 depends: - - libarrow 18.1.0 h3d75c4c_0_cpu + - libarrow 18.1.0 h944b843_1_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1117420 - timestamp: 1732536323359 + license_family: APACHE + size: 1116708 + timestamp: 1732864357500 - kind: conda name: libparquet version: 18.1.0 - build: h6bd9018_0_cpu + build: h6bd9018_1_cpu + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_0_cpu.conda - sha256: d5f73b48e754af5874f48ef22dda1339b74597b66ff5ffeff8a2290f97a9611b - md5: 580349cffeac814a32ff661dcbe72821 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda + sha256: 0df119f4c1a2387d910e132c670b29ee5b29dd79384549de6f1a43067515c8ba + md5: 1054909202f86e38bbbb7ca1131b8471 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 h94eee4b_0_cpu + - libarrow 18.1.0 he15abb1_1_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1204506 - timestamp: 1732536224976 + license_family: APACHE + size: 1203523 + timestamp: 1732863665743 - kind: conda name: libparquet version: 18.1.0 - build: hda0ea68_0_cpu + build: hf4cc9e7_1_cpu + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hda0ea68_0_cpu.conda - sha256: a6a22f0692d99a3cb6306ebd4d2e840c980d08797386f300c47604ee8865af4d - md5: 22f05c8b1c1b82eb5efc2a89c08ee047 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda + sha256: 974b773c8a000b27ef3283b8744cfda9e46afff7d66c708b90971cc4d681805e + md5: 1d41143609ae6961de983182053fbdf2 depends: - __osx >=11.0 - - libarrow 18.1.0 hb943b0e_0_cpu + - libarrow 18.1.0 hacc6a60_1_cpu - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 874829 - timestamp: 1732537283879 + size: 874294 + timestamp: 1732865555683 - kind: conda name: libpng version: 1.6.44 @@ -5329,43 +5353,49 @@ packages: - kind: conda name: libutf8proc version: 2.8.0 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2 - sha256: 49082ee8d01339b225f7f8c60f32a2a2c05fe3b16f31b554b4fb2c1dea237d1c - md5: ede4266dc02e875fe1ea77b25dd43747 + build: h812390e_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda + sha256: 25dc68d188336e1b83f28175b5146c2192e49a3236b340962c97727c6d47ede9 + md5: 83c5f8e4431ad4b6b7e22c4edd898163 depends: - - libgcc-ng >=12 + - libgcc >=13 license: MIT license_family: MIT - size: 101070 - timestamp: 1667316029302 + size: 81515 + timestamp: 1732829682446 - kind: conda name: libutf8proc version: 2.8.0 - build: h1a8c8d9_0 + build: hc098a78_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-h1a8c8d9_0.tar.bz2 - sha256: a3faddac08efd930fa3a1cc254b5053b4ed9428c49a888d437bf084d403c931a - md5: f8c9c41a122ab3abdf8943b13f4957ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda + sha256: 7807a98522477a8bf12460402845224f607ab6e1e73ac316b667169f5143cfe5 + md5: ed89b8bf0d74d23ce47bcf566dd36608 + depends: + - __osx >=11.0 license: MIT license_family: MIT - size: 103492 - timestamp: 1667316405233 + size: 82462 + timestamp: 1732829832932 - kind: conda name: libutf8proc version: 2.8.0 - build: h4e544f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h4e544f5_0.tar.bz2 - sha256: c1956b64ad9613c66cf87398f5e2c36d071034a93892da7e8cc22e75cface878 - md5: bf0defbd8ac06270fb5ec05c85fb3c96 + build: hf23e847_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb + md5: b1aa0faa95017bca11369bd080487ec4 depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: MIT license_family: MIT - size: 101529 - timestamp: 1667315331359 + size: 80852 + timestamp: 1732829699583 - kind: conda name: libuuid version: 2.38.1 @@ -5822,76 +5852,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112805-release.conda - sha256: d42d9672b36eed3bc4d846d0ae8e20630d80ec5ff54966af36bb0e84eb018a7c - md5: 21b8f08296f321b75659cce32688750b - depends: - - max-core ==24.6.0.dev2024112805 release - - max-python >=24.6.0.dev2024112805,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112805 release - - mblack ==24.6.0.dev2024112805 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda + sha256: d2d1d27c804d40be907e5f24dee2c96a83530f99a4aa4698d4bfbcd2389f8a68 + md5: 07dc8704dd68d983b1292db751b677fe + depends: + - max-core ==24.6.0.dev2024112922 release + - max-python >=24.6.0.dev2024112922,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024112922 release license: LicenseRef-Modular-Proprietary - size: 9927 - timestamp: 1732771319615 + size: 9917 + timestamp: 1732918079788 - kind: conda name: max-core - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112805-release.conda - sha256: 9b02550f0d393451fff14ba476998247e8ce9230c8cde3b496b04ba72ca58a40 - md5: d351616984b25f89afd32b0a98c89928 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda + sha256: ab1ec7348e8edca48914c0203b5995c8013347ad0fd93d5e38c8e62261cb6ca2 + md5: 18c1fd2b6354db88e967cb200fee0a55 depends: - - mblack ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112922 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254576173 - timestamp: 1732771254860 + size: 254726602 + timestamp: 1732918231240 - kind: conda name: max-core - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112805-release.conda - sha256: a03c929c723950872b136f418c4f197907b850e70382a5f74d5d5540abd1ccc5 - md5: 02c7bc4863ff19c0322ed890145ba23b + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda + sha256: 4584866065437877ec865afb88d99ef983bd284f2b5e88750f7ba4616c73de54 + md5: a05d93b813689510b14c1c478c0f7e20 depends: - - mblack ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112922 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258211572 - timestamp: 1732771319613 + size: 258398513 + timestamp: 1732918079786 - kind: conda name: max-core - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112805-release.conda - sha256: 1a7f82f0029dec8f68847f852e1eac5172c1acc5305541952ae95ce6c3b97436 - md5: 977b26b7ee540c254a23c71e9ba7f1bf + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda + sha256: faacbe747fdad79e9275664da544b174a5e77b705331988fed5d943b77a49c11 + md5: 72bedc7bfeff8091539861c600246817 depends: - - mblack ==24.6.0.dev2024112805 release + - mblack ==24.6.0.dev2024112922 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220134322 - timestamp: 1732771049861 + size: 220273860 + timestamp: 1732917995058 - kind: conda name: max-python - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112805-3.12release.conda - sha256: ff1ddb4400ac03c4f6ad5ffc016b5f9b087e1aa967d51eac72597036e478b451 - md5: 9017365163eec21de4fed0b35c6be7d9 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda + sha256: 129fabb8fb1086a760e1e49654fcccf016454f224eda1c37016f487a37e8770b + md5: f581c28718cefb1960ba65708ff8303a depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python 3.12.* - pillow - fastapi @@ -5913,18 +5943,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128343790 - timestamp: 1732771254868 + size: 128543797 + timestamp: 1732918231248 - kind: conda name: max-python - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112805-3.12release.conda - sha256: 69fb28538434178c34aabf57708859131a5d2f26410802624d401bb0ba3be4a5 - md5: c19242ce517a4d07ff802dca119126e1 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda + sha256: 89ee58ba2ea8b51d5816121a9a662d64455313d840f4726500c531f557b56d99 + md5: 05b1090842c71dd75a66757658960f7f depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python 3.12.* - pillow - fastapi @@ -5946,18 +5976,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132094887 - timestamp: 1732771319621 + size: 132246699 + timestamp: 1732918079795 - kind: conda name: max-python - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112805-3.12release.conda - sha256: 75c7d37c1b6fb68c6ef5054ed88cb8ac8bcc4b7273e80b8f9209202a0ae02de1 - md5: 1215e1fa5c7b0cc518447bc214b7e5a5 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda + sha256: 689d02e41019da522704fe705487d1b7ea9ab228c6c49f6917a9caee9d4002b9 + md5: fa1eec6a9b9d84f6c097005b5dc0b5a6 depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python 3.12.* - pillow - fastapi @@ -5979,17 +6009,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 118976325 - timestamp: 1732771049864 + size: 119120270 + timestamp: 1732917995061 - kind: conda name: mblack - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112805-release.conda - sha256: 821a0e6bc0367ccdca619f0935e0f13a92138a6b2681f617aae2d2000d0a891f - md5: f9fcd437962beaa0c577bcbeecd1e69c + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + sha256: b2533bf1ffe77004616d6c78440666b71a1d08d09057f3da900c31ea7e277d33 + md5: 5ddc332663efce023813d99e7e474c28 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5999,8 +6029,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130612 - timestamp: 1732771319618 + size: 130611 + timestamp: 1732918079791 - kind: conda name: mdurl version: 0.1.2 @@ -6018,21 +6048,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112805 + version: 24.6.0.dev2024112922 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112805-release.conda - sha256: 2702029742752c2bb13fe108c3e5a577151b80b0e0675a0f5a819467b579c136 - md5: 6c9019d1b099600e3a50dca268b658d3 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + sha256: 0e5cbf4fed2931f0cd8051b3c909fc8f7e2d20dbccfbe9af4bac76a24a5cac21 + md5: bf727d981f2de8cf1cb7ac9cf222c70b depends: - - max-core ==24.6.0.dev2024112805 release + - max-core ==24.6.0.dev2024112922 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22943 - timestamp: 1732771319619 + size: 22938 + timestamp: 1732918079793 - kind: conda name: multidict version: 6.1.0 @@ -7018,6 +7048,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 + license_family: APACHE size: 25375 timestamp: 1732610892198 - kind: conda @@ -7037,6 +7068,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 + license_family: APACHE size: 25213 timestamp: 1732610785600 - kind: conda @@ -7056,6 +7088,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 + license_family: APACHE size: 25374 timestamp: 1732611006864 - kind: conda @@ -7078,6 +7111,7 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 4612916 timestamp: 1732610377259 - kind: conda @@ -7100,6 +7134,7 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 4406662 timestamp: 1732610939832 - kind: conda @@ -7122,6 +7157,7 @@ packages: - numpy >=1.21,<3 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 3909116 timestamp: 1732610863261 - kind: conda @@ -7453,19 +7489,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.17 + version: 0.0.18 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.17-pyhff2d567_0.conda - sha256: f351636a91163de28cf602c755abd1b5ad858e4a790c3a30d5a5aa1066c0550c - md5: a08ea55eb3ad403b12639cd3a4a8d28f + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + sha256: e4c762c261f152cb4219a736fffbd8225ea1e060ce250318aae89df5d708a089 + md5: 8a5e488f98049813ba403c5f751f6e1e depends: - python >=3.8 license: Apache-2.0 license_family: Apache - size: 27810 - timestamp: 1730382122271 + size: 27752 + timestamp: 1732867990988 - kind: conda name: python-tzdata version: '2024.2' @@ -8346,58 +8382,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.13.1 + version: 0.14.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.13.1-pyhd8ed1ab_0.conda - sha256: 2f12a5af13d440aa75970e3d0d1ea3192916848473967b4ecb483627c01333cb - md5: 82a4704166144f27e9c83803bff5bf53 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda + sha256: 4d7f1c77b928a66ae3b0089e288e7fdeb826bf0dabba9799488017e6a9b84f38 + md5: 9eb8a3f5d36ca3e7f686e7a5d85aff72 depends: - python >=3.9 - - typer-slim-standard 0.13.1 hd8ed1ab_0 + - typer-slim-standard 0.14.0 hd8ed1ab_0 license: MIT license_family: MIT - size: 55352 - timestamp: 1732084066966 + size: 54637 + timestamp: 1732848384457 - kind: conda name: typer-slim - version: 0.13.1 - build: pyhff2d567_0 + version: 0.14.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.13.1-pyhff2d567_0.conda - sha256: b190bcd5f341ba8843f2f1ce43b5e8dae770bb84d49e2ce5b346e4d8098367a1 - md5: 85283fb942fa2604c3db03483027ced2 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda + sha256: 883969c10b9837bb18a340ffb01a984ef6b4655fc72ff05aeb7bc659c9a1229d + md5: 3674a4cd7fd8e8a7277af2b30965925d depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - shellingham >=1.3.0 - - typer >=0.13.1,<0.13.2.0a0 - rich >=10.11.0 + - typer >=0.14.0,<0.14.1.0a0 license: MIT license_family: MIT - size: 43463 - timestamp: 1732084053693 + size: 43504 + timestamp: 1732848371202 - kind: conda name: typer-slim-standard - version: 0.13.1 + version: 0.14.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.13.1-hd8ed1ab_0.conda - sha256: 14ac72d0533bc2f37f8dc85b90b45a91ca28ee0995c520b16a40f34629749c7a - md5: a9bf95ed3c65bf936292d944bf3df36d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + sha256: 0e09e393e75028a0e827c7177e0fb1a070c87756e47b5ae6418423e22b10dfac + md5: 9e1e1f9c84add9637ca715f8fb71a83f depends: - rich - shellingham - - typer-slim 0.13.1 pyhff2d567_0 + - typer-slim 0.14.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 48744 - timestamp: 1732084054211 + size: 49180 + timestamp: 1732848371718 - kind: conda name: typing-extensions version: 4.12.2 @@ -8571,6 +8607,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 409700 timestamp: 1732689603044 - kind: conda @@ -8590,6 +8627,7 @@ packages: constrains: - __glibc >=2.17 license: MIT + license_family: MIT size: 404235 timestamp: 1732689685476 - kind: conda @@ -8609,6 +8647,7 @@ packages: constrains: - __osx >=11.0 license: MIT + license_family: MIT size: 356744 timestamp: 1732689860624 - kind: conda @@ -8676,6 +8715,7 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-2-Clause + license_family: BSD size: 63807 timestamp: 1732523690292 - kind: conda @@ -8692,6 +8732,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause + license_family: BSD size: 64783 timestamp: 1732523806 - kind: conda @@ -8708,6 +8749,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-2-Clause + license_family: BSD size: 61043 timestamp: 1732523852129 - kind: conda @@ -9037,18 +9079,19 @@ packages: - kind: conda name: zipp version: 3.21.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_0.conda - sha256: 232a30e4b0045c9de5e168dda0328dc0e28df9439cdecdfb97dd79c1c82c4cec - md5: fee389bf8a4843bd7a2248ce11b7f188 + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 21702 - timestamp: 1731262194278 + size: 21809 + timestamp: 1732827613585 - kind: conda name: zstandard version: 0.23.0 From 63dfc18e08ee3c4c28c6e6eebc82dd6cecae269a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 29 Nov 2024 14:11:37 -0800 Subject: [PATCH 054/119] [mojo-lang] Improve handling of address spaces in `ref`'s This allows direct use of `AddressSpace` in a ref instead of requiring one to dig into it, cleaning up code like `UnsafePointer`. Address spaces no longer have to be the second member of the ref spec. This also improve ASTPrinting of refs to handle mutcast and unions more nicely. MODULAR_ORIG_COMMIT_REV_ID: 2b09168755b43e2c4921b98050bd0524a5bfcb2f --- stdlib/src/memory/owned_pointer.mojo | 5 ++--- stdlib/src/memory/pointer.mojo | 4 ++-- stdlib/src/memory/unsafe_pointer.mojo | 6 +++--- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/stdlib/src/memory/owned_pointer.mojo b/stdlib/src/memory/owned_pointer.mojo index 71c4c963eb..4b22f14066 100644 --- a/stdlib/src/memory/owned_pointer.mojo +++ b/stdlib/src/memory/owned_pointer.mojo @@ -104,8 +104,8 @@ struct OwnedPointer[T: AnyType]: # ===-------------------------------------------------------------------===# fn __getitem__( - ref [_, AddressSpace.GENERIC._value.value]self - ) -> ref [self, AddressSpace.GENERIC._value.value] T: + ref [AddressSpace.GENERIC]self, + ) -> ref [self, AddressSpace.GENERIC] T: """Returns a reference to the pointers's underlying data with parametric mutability. Returns: @@ -116,7 +116,6 @@ struct OwnedPointer[T: AnyType]: # returned from UnsafePointer to be guarded behind the # aliasing guarantees of the origin system here. # All of the magic happens above in the function signature - return self._inner[] # ===-------------------------------------------------------------------===# diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index 06ddb0f6f6..d95a8c1141 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -341,7 +341,7 @@ struct Pointer[ @staticmethod @always_inline("nodebug") - fn address_of(ref [origin, address_space._value.value]value: type) -> Self: + fn address_of(ref [origin, address_space]value: type) -> Self: """Constructs a Pointer from a reference to a value. Args: @@ -367,7 +367,7 @@ struct Pointer[ # ===------------------------------------------------------------------===# @always_inline("nodebug") - fn __getitem__(self) -> ref [origin, address_space._value.value] type: + fn __getitem__(self) -> ref [origin, address_space] type: """Enable subscript syntax `ptr[]` to access the element. Returns: diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index 22fede2402..9c1a6eac92 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -143,7 +143,7 @@ struct UnsafePointer[ @staticmethod @always_inline("nodebug") fn address_of( - ref [_, address_space._value.value]arg: type + ref [address_space]arg: type, ) -> UnsafePointer[ type, address_space=address_space, @@ -189,7 +189,7 @@ struct UnsafePointer[ @always_inline fn __getitem__( self, - ) -> ref [origin, address_space._value.value] type: + ) -> ref [origin, address_space] type: """Return a reference to the underlying data. Returns: @@ -227,7 +227,7 @@ struct UnsafePointer[ @always_inline fn __getitem__[ IntLike: IntLike, // - ](self, offset: IntLike) -> ref [origin, address_space._value.value] type: + ](self, offset: IntLike) -> ref [origin, address_space] type: """Return a reference to the underlying data, offset by the given index. Parameters: From 710d3286726e4bc7a18107e621f8b3679770484a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 29 Nov 2024 15:29:58 -0800 Subject: [PATCH 055/119] [mojo-lang] Fix a crash with weird llvm dialect ops. This fixes the parser to not assume that the attribute returned by the MLIR fold hook for an op returns a TypedAttr. If it doesn't, we can just retain the op as it is. The LLVM dialect has an `llvm.mlir.zero` op that folds to `#llvm.zero`. This fixes https://github.com/modularml/mojo/issues/3805 MODULAR_ORIG_COMMIT_REV_ID: e2b18182eea2529afd721b3e3969ed3f36d2c3ff --- docs/changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index e3e60f7599..601e9f60d5 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -591,6 +591,9 @@ what we publish. - [Issue #3710](https://github.com/modularml/mojo/issues/3710) - Mojo frees memory while reference to it is still in use. +- [Issue #3805](https://github.com/modularml/mojo/issues/3805) - Crash When + Initializing !llvm.ptr. + - [Issue #3816](https://github.com/modularml/mojo/issues/3816) - Ternary if-operator doesn't propagate origin information. From dffde54a6635bd69f6d459cd556ddd77dc8452d8 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sat, 30 Nov 2024 06:13:15 +0000 Subject: [PATCH 056/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024113005 --- examples/life/magic.lock | 162 +++++++++++++++++----------------- examples/magic.lock | 162 +++++++++++++++++----------------- examples/notebooks/magic.lock | 160 ++++++++++++++++----------------- examples/operators/magic.lock | 162 +++++++++++++++++----------------- magic.lock | 162 +++++++++++++++++----------------- 5 files changed, 404 insertions(+), 404 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 72196ab831..64124dfa6b 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -173,12 +173,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda @@ -458,12 +458,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda @@ -723,12 +723,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda @@ -7732,76 +7732,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - sha256: d2d1d27c804d40be907e5f24dee2c96a83530f99a4aa4698d4bfbcd2389f8a68 - md5: 07dc8704dd68d983b1292db751b677fe - depends: - - max-core ==24.6.0.dev2024112922 release - - max-python >=24.6.0.dev2024112922,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112922 release - - mblack ==24.6.0.dev2024112922 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + sha256: c8b35982053b45e4b6467076b4d582724ef99befccaa9d4a9d2d30560290e041 + md5: ac806202dbe8b063f9cf52d4e518b3a1 + depends: + - max-core ==24.6.0.dev2024113005 release + - max-python >=24.6.0.dev2024113005,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024113005 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1732918079788 + size: 9928 + timestamp: 1732944152723 - kind: conda name: max-core - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda - sha256: ab1ec7348e8edca48914c0203b5995c8013347ad0fd93d5e38c8e62261cb6ca2 - md5: 18c1fd2b6354db88e967cb200fee0a55 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda + sha256: 6d7892171ed63e54f767deabc06693adc5b51757f351e635fc9a5dc5f5ba7234 + md5: e76f1695085dcd96b57d72d863a7ad2e depends: - - mblack ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024113005 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254726602 - timestamp: 1732918231240 + size: 254727962 + timestamp: 1732944122650 - kind: conda name: max-core - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda - sha256: 4584866065437877ec865afb88d99ef983bd284f2b5e88750f7ba4616c73de54 - md5: a05d93b813689510b14c1c478c0f7e20 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda + sha256: 613e4e62c8911463589adfd014a8ab5b72fd926a3939135717863fea42b9fcc6 + md5: 06847a3ccd3481142105f34269926ac7 depends: - - mblack ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024113005 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258398513 - timestamp: 1732918079786 + size: 258397142 + timestamp: 1732944152721 - kind: conda name: max-core - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda - sha256: faacbe747fdad79e9275664da544b174a5e77b705331988fed5d943b77a49c11 - md5: 72bedc7bfeff8091539861c600246817 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda + sha256: 5b8a1c68b7fec3ed05b5a95fcbcec0bd974a0239af4021fa269cab1863ba6698 + md5: 983e33104d26892188dbe56e5e7e9a78 depends: - - mblack ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024113005 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220273860 - timestamp: 1732917995058 + size: 220275093 + timestamp: 1732943775724 - kind: conda name: max-python - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda - sha256: 129fabb8fb1086a760e1e49654fcccf016454f224eda1c37016f487a37e8770b - md5: f581c28718cefb1960ba65708ff8303a + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda + sha256: 3977fae569ccfd20b342fc54d3297fc0c79474a24985e8208e6825fcfe8775cc + md5: 10deb9d112059a58e2d80721b094ee9f depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python 3.12.* - pillow - fastapi @@ -7823,18 +7823,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128543797 - timestamp: 1732918231248 + size: 128542235 + timestamp: 1732944122658 - kind: conda name: max-python - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda - sha256: 89ee58ba2ea8b51d5816121a9a662d64455313d840f4726500c531f557b56d99 - md5: 05b1090842c71dd75a66757658960f7f + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda + sha256: 8e4bedfffa25da43e25147860662f53feeacd7352b910ad774995950286104d4 + md5: ef86bbd73bca695cc61438f19ef2d50d depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python 3.12.* - pillow - fastapi @@ -7856,18 +7856,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132246699 - timestamp: 1732918079795 + size: 132245642 + timestamp: 1732944152730 - kind: conda name: max-python - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda - sha256: 689d02e41019da522704fe705487d1b7ea9ab228c6c49f6917a9caee9d4002b9 - md5: fa1eec6a9b9d84f6c097005b5dc0b5a6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda + sha256: 835d06708d0bf7fa3fdbe622fc56dc089553af7952c47805ca4cde99b6c1dbc8 + md5: e154875e9613c3f46497bd356ea86e85 depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python 3.12.* - pillow - fastapi @@ -7889,17 +7889,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119120270 - timestamp: 1732917995061 + size: 119119100 + timestamp: 1732943775727 - kind: conda name: mblack - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - sha256: b2533bf1ffe77004616d6c78440666b71a1d08d09057f3da900c31ea7e277d33 - md5: 5ddc332663efce023813d99e7e474c28 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + sha256: 028221ee09ae9acf9b1b038c155d0b08627570b17f958fbde94b3308128d4de7 + md5: 54cd3ff8dbad3522dc7d6518913bc8ad depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7909,8 +7909,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130611 - timestamp: 1732918079791 + size: 130613 + timestamp: 1732944152726 - kind: conda name: mdurl version: 0.1.2 @@ -7928,21 +7928,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - sha256: 0e5cbf4fed2931f0cd8051b3c909fc8f7e2d20dbccfbe9af4bac76a24a5cac21 - md5: bf727d981f2de8cf1cb7ac9cf222c70b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + sha256: 0f967018ec949d7d11f071a61f6c799e4adc837f6890b0f48a16afef1c585482 + md5: 2f305b1da789cc9c3b65c9afc265cda7 depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22938 - timestamp: 1732918079793 + size: 22941 + timestamp: 1732944152727 - kind: conda name: mpg123 version: 1.32.9 diff --git a/examples/magic.lock b/examples/magic.lock index 3eb111afa3..6fbd780c0f 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -5833,76 +5833,76 @@ packages: timestamp: 1729352296161 - kind: conda name: max - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - sha256: d2d1d27c804d40be907e5f24dee2c96a83530f99a4aa4698d4bfbcd2389f8a68 - md5: 07dc8704dd68d983b1292db751b677fe - depends: - - max-core ==24.6.0.dev2024112922 release - - max-python >=24.6.0.dev2024112922,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112922 release - - mblack ==24.6.0.dev2024112922 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + sha256: c8b35982053b45e4b6467076b4d582724ef99befccaa9d4a9d2d30560290e041 + md5: ac806202dbe8b063f9cf52d4e518b3a1 + depends: + - max-core ==24.6.0.dev2024113005 release + - max-python >=24.6.0.dev2024113005,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024113005 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1732918079788 + size: 9928 + timestamp: 1732944152723 - kind: conda name: max-core - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda - sha256: ab1ec7348e8edca48914c0203b5995c8013347ad0fd93d5e38c8e62261cb6ca2 - md5: 18c1fd2b6354db88e967cb200fee0a55 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda + sha256: 6d7892171ed63e54f767deabc06693adc5b51757f351e635fc9a5dc5f5ba7234 + md5: e76f1695085dcd96b57d72d863a7ad2e depends: - - mblack ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024113005 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254726602 - timestamp: 1732918231240 + size: 254727962 + timestamp: 1732944122650 - kind: conda name: max-core - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda - sha256: 4584866065437877ec865afb88d99ef983bd284f2b5e88750f7ba4616c73de54 - md5: a05d93b813689510b14c1c478c0f7e20 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda + sha256: 613e4e62c8911463589adfd014a8ab5b72fd926a3939135717863fea42b9fcc6 + md5: 06847a3ccd3481142105f34269926ac7 depends: - - mblack ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024113005 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258398513 - timestamp: 1732918079786 + size: 258397142 + timestamp: 1732944152721 - kind: conda name: max-core - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda - sha256: faacbe747fdad79e9275664da544b174a5e77b705331988fed5d943b77a49c11 - md5: 72bedc7bfeff8091539861c600246817 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda + sha256: 5b8a1c68b7fec3ed05b5a95fcbcec0bd974a0239af4021fa269cab1863ba6698 + md5: 983e33104d26892188dbe56e5e7e9a78 depends: - - mblack ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024113005 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220273860 - timestamp: 1732917995058 + size: 220275093 + timestamp: 1732943775724 - kind: conda name: max-python - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.11release.conda - sha256: 1f417d102bea2830fd021eafbe64cf300d11bc4316a69e79ba59f554907d609e - md5: a481844d9bfbedd008cd52fd6a41a118 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.11release.conda + sha256: 9a9426c09c3dd5afb360d6ec39790aa4923630f60022967561bfb21c5b6362fe + md5: 9cc123e31ca4b0ac893a39b528af7c90 depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python 3.11.* - pillow - fastapi @@ -5924,18 +5924,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128524644 - timestamp: 1732918231246 + size: 128522608 + timestamp: 1732944122656 - kind: conda name: max-python - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.11release.conda - sha256: e63cbfa90acdef5973d70d6e2250dc4353c288571ed14487f03f569959a3775f - md5: 71f26a90c3da379a1ff1f03512a19c1a + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.11release.conda + sha256: cf062104aa99cdee971029725882971a2ddead0059ae3ca301a46a533bf74637 + md5: e40b2924cf8518c7387b40adc4023515 depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python 3.11.* - pillow - fastapi @@ -5957,18 +5957,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132241762 - timestamp: 1732918079792 + size: 132240684 + timestamp: 1732944152727 - kind: conda name: max-python - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.11release.conda - sha256: bbb631d2314c4ca341f10578eb22c39bf8e12e731f6b3e441ec1d4bf988d1844 - md5: 7d4f48fa1d0ecdb6e1f506f0348dc33b + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.11release.conda + sha256: d2b5559deed1e98d268052fe244e2efaf5a10c6192996f465aaed06a88bd33c2 + md5: 583beaaa0fdf1235de6a35bb026debe1 depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python 3.11.* - pillow - fastapi @@ -5990,17 +5990,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119118699 - timestamp: 1732917995060 + size: 119117879 + timestamp: 1732943775726 - kind: conda name: mblack - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - sha256: b2533bf1ffe77004616d6c78440666b71a1d08d09057f3da900c31ea7e277d33 - md5: 5ddc332663efce023813d99e7e474c28 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + sha256: 028221ee09ae9acf9b1b038c155d0b08627570b17f958fbde94b3308128d4de7 + md5: 54cd3ff8dbad3522dc7d6518913bc8ad depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6010,8 +6010,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130611 - timestamp: 1732918079791 + size: 130613 + timestamp: 1732944152726 - kind: conda name: mdurl version: 0.1.2 @@ -6029,21 +6029,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - sha256: 0e5cbf4fed2931f0cd8051b3c909fc8f7e2d20dbccfbe9af4bac76a24a5cac21 - md5: bf727d981f2de8cf1cb7ac9cf222c70b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + sha256: 0f967018ec949d7d11f071a61f6c799e4adc837f6890b0f48a16afef1c585482 + md5: 2f305b1da789cc9c3b65c9afc265cda7 depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22938 - timestamp: 1732918079793 + size: 22941 + timestamp: 1732944152727 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 7131e093ff..4921a442a7 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -166,13 +166,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -460,13 +460,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -745,13 +745,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -6851,76 +6851,76 @@ packages: timestamp: 1713250613726 - kind: conda name: max - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - sha256: d2d1d27c804d40be907e5f24dee2c96a83530f99a4aa4698d4bfbcd2389f8a68 - md5: 07dc8704dd68d983b1292db751b677fe + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + sha256: c8b35982053b45e4b6467076b4d582724ef99befccaa9d4a9d2d30560290e041 + md5: ac806202dbe8b063f9cf52d4e518b3a1 depends: - - max-core ==24.6.0.dev2024112922 release - - max-python >=24.6.0.dev2024112922,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112922 release - - mblack ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release + - max-python >=24.6.0.dev2024113005,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024113005 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1732918079788 + size: 9928 + timestamp: 1732944152723 - kind: conda name: max-core - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda - sha256: ab1ec7348e8edca48914c0203b5995c8013347ad0fd93d5e38c8e62261cb6ca2 - md5: 18c1fd2b6354db88e967cb200fee0a55 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda + sha256: 6d7892171ed63e54f767deabc06693adc5b51757f351e635fc9a5dc5f5ba7234 + md5: e76f1695085dcd96b57d72d863a7ad2e depends: - - mblack ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024113005 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254726602 - timestamp: 1732918231240 + size: 254727962 + timestamp: 1732944122650 - kind: conda name: max-core - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda - sha256: 4584866065437877ec865afb88d99ef983bd284f2b5e88750f7ba4616c73de54 - md5: a05d93b813689510b14c1c478c0f7e20 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda + sha256: 613e4e62c8911463589adfd014a8ab5b72fd926a3939135717863fea42b9fcc6 + md5: 06847a3ccd3481142105f34269926ac7 depends: - - mblack ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024113005 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258398513 - timestamp: 1732918079786 + size: 258397142 + timestamp: 1732944152721 - kind: conda name: max-core - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda - sha256: faacbe747fdad79e9275664da544b174a5e77b705331988fed5d943b77a49c11 - md5: 72bedc7bfeff8091539861c600246817 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda + sha256: 5b8a1c68b7fec3ed05b5a95fcbcec0bd974a0239af4021fa269cab1863ba6698 + md5: 983e33104d26892188dbe56e5e7e9a78 depends: - - mblack ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024113005 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220273860 - timestamp: 1732917995058 + size: 220275093 + timestamp: 1732943775724 - kind: conda name: max-python - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda - sha256: 129fabb8fb1086a760e1e49654fcccf016454f224eda1c37016f487a37e8770b - md5: f581c28718cefb1960ba65708ff8303a + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda + sha256: 3977fae569ccfd20b342fc54d3297fc0c79474a24985e8208e6825fcfe8775cc + md5: 10deb9d112059a58e2d80721b094ee9f depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python 3.12.* - pillow - fastapi @@ -6942,18 +6942,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128543797 - timestamp: 1732918231248 + size: 128542235 + timestamp: 1732944122658 - kind: conda name: max-python - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda - sha256: 89ee58ba2ea8b51d5816121a9a662d64455313d840f4726500c531f557b56d99 - md5: 05b1090842c71dd75a66757658960f7f + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda + sha256: 8e4bedfffa25da43e25147860662f53feeacd7352b910ad774995950286104d4 + md5: ef86bbd73bca695cc61438f19ef2d50d depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python 3.12.* - pillow - fastapi @@ -6975,18 +6975,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132246699 - timestamp: 1732918079795 + size: 132245642 + timestamp: 1732944152730 - kind: conda name: max-python - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda - sha256: 689d02e41019da522704fe705487d1b7ea9ab228c6c49f6917a9caee9d4002b9 - md5: fa1eec6a9b9d84f6c097005b5dc0b5a6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda + sha256: 835d06708d0bf7fa3fdbe622fc56dc089553af7952c47805ca4cde99b6c1dbc8 + md5: e154875e9613c3f46497bd356ea86e85 depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python 3.12.* - pillow - fastapi @@ -7008,17 +7008,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119120270 - timestamp: 1732917995061 + size: 119119100 + timestamp: 1732943775727 - kind: conda name: mblack - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - sha256: b2533bf1ffe77004616d6c78440666b71a1d08d09057f3da900c31ea7e277d33 - md5: 5ddc332663efce023813d99e7e474c28 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + sha256: 028221ee09ae9acf9b1b038c155d0b08627570b17f958fbde94b3308128d4de7 + md5: 54cd3ff8dbad3522dc7d6518913bc8ad depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7028,8 +7028,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130611 - timestamp: 1732918079791 + size: 130613 + timestamp: 1732944152726 - kind: conda name: mdurl version: 0.1.2 @@ -7062,21 +7062,21 @@ packages: timestamp: 1698947249750 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - sha256: 0e5cbf4fed2931f0cd8051b3c909fc8f7e2d20dbccfbe9af4bac76a24a5cac21 - md5: bf727d981f2de8cf1cb7ac9cf222c70b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + sha256: 0f967018ec949d7d11f071a61f6c799e4adc837f6890b0f48a16afef1c585482 + md5: 2f305b1da789cc9c3b65c9afc265cda7 depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22938 - timestamp: 1732918079793 + size: 22941 + timestamp: 1732944152727 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index f00fb688a8..73bd756140 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -5833,76 +5833,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - sha256: d2d1d27c804d40be907e5f24dee2c96a83530f99a4aa4698d4bfbcd2389f8a68 - md5: 07dc8704dd68d983b1292db751b677fe - depends: - - max-core ==24.6.0.dev2024112922 release - - max-python >=24.6.0.dev2024112922,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112922 release - - mblack ==24.6.0.dev2024112922 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + sha256: c8b35982053b45e4b6467076b4d582724ef99befccaa9d4a9d2d30560290e041 + md5: ac806202dbe8b063f9cf52d4e518b3a1 + depends: + - max-core ==24.6.0.dev2024113005 release + - max-python >=24.6.0.dev2024113005,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024113005 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1732918079788 + size: 9928 + timestamp: 1732944152723 - kind: conda name: max-core - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda - sha256: ab1ec7348e8edca48914c0203b5995c8013347ad0fd93d5e38c8e62261cb6ca2 - md5: 18c1fd2b6354db88e967cb200fee0a55 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda + sha256: 6d7892171ed63e54f767deabc06693adc5b51757f351e635fc9a5dc5f5ba7234 + md5: e76f1695085dcd96b57d72d863a7ad2e depends: - - mblack ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024113005 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254726602 - timestamp: 1732918231240 + size: 254727962 + timestamp: 1732944122650 - kind: conda name: max-core - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda - sha256: 4584866065437877ec865afb88d99ef983bd284f2b5e88750f7ba4616c73de54 - md5: a05d93b813689510b14c1c478c0f7e20 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda + sha256: 613e4e62c8911463589adfd014a8ab5b72fd926a3939135717863fea42b9fcc6 + md5: 06847a3ccd3481142105f34269926ac7 depends: - - mblack ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024113005 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258398513 - timestamp: 1732918079786 + size: 258397142 + timestamp: 1732944152721 - kind: conda name: max-core - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda - sha256: faacbe747fdad79e9275664da544b174a5e77b705331988fed5d943b77a49c11 - md5: 72bedc7bfeff8091539861c600246817 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda + sha256: 5b8a1c68b7fec3ed05b5a95fcbcec0bd974a0239af4021fa269cab1863ba6698 + md5: 983e33104d26892188dbe56e5e7e9a78 depends: - - mblack ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024113005 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220273860 - timestamp: 1732917995058 + size: 220275093 + timestamp: 1732943775724 - kind: conda name: max-python - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda - sha256: 129fabb8fb1086a760e1e49654fcccf016454f224eda1c37016f487a37e8770b - md5: f581c28718cefb1960ba65708ff8303a + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda + sha256: 3977fae569ccfd20b342fc54d3297fc0c79474a24985e8208e6825fcfe8775cc + md5: 10deb9d112059a58e2d80721b094ee9f depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python 3.12.* - pillow - fastapi @@ -5924,18 +5924,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128543797 - timestamp: 1732918231248 + size: 128542235 + timestamp: 1732944122658 - kind: conda name: max-python - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda - sha256: 89ee58ba2ea8b51d5816121a9a662d64455313d840f4726500c531f557b56d99 - md5: 05b1090842c71dd75a66757658960f7f + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda + sha256: 8e4bedfffa25da43e25147860662f53feeacd7352b910ad774995950286104d4 + md5: ef86bbd73bca695cc61438f19ef2d50d depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python 3.12.* - pillow - fastapi @@ -5957,18 +5957,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132246699 - timestamp: 1732918079795 + size: 132245642 + timestamp: 1732944152730 - kind: conda name: max-python - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda - sha256: 689d02e41019da522704fe705487d1b7ea9ab228c6c49f6917a9caee9d4002b9 - md5: fa1eec6a9b9d84f6c097005b5dc0b5a6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda + sha256: 835d06708d0bf7fa3fdbe622fc56dc089553af7952c47805ca4cde99b6c1dbc8 + md5: e154875e9613c3f46497bd356ea86e85 depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python 3.12.* - pillow - fastapi @@ -5990,17 +5990,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119120270 - timestamp: 1732917995061 + size: 119119100 + timestamp: 1732943775727 - kind: conda name: mblack - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - sha256: b2533bf1ffe77004616d6c78440666b71a1d08d09057f3da900c31ea7e277d33 - md5: 5ddc332663efce023813d99e7e474c28 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + sha256: 028221ee09ae9acf9b1b038c155d0b08627570b17f958fbde94b3308128d4de7 + md5: 54cd3ff8dbad3522dc7d6518913bc8ad depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6010,8 +6010,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130611 - timestamp: 1732918079791 + size: 130613 + timestamp: 1732944152726 - kind: conda name: mdurl version: 0.1.2 @@ -6029,21 +6029,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - sha256: 0e5cbf4fed2931f0cd8051b3c909fc8f7e2d20dbccfbe9af4bac76a24a5cac21 - md5: bf727d981f2de8cf1cb7ac9cf222c70b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + sha256: 0f967018ec949d7d11f071a61f6c799e4adc837f6890b0f48a16afef1c585482 + md5: 2f305b1da789cc9c3b65c9afc265cda7 depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22938 - timestamp: 1732918079793 + size: 22941 + timestamp: 1732944152727 - kind: conda name: multidict version: 6.1.0 diff --git a/magic.lock b/magic.lock index dd2f5cc98e..9afd6d0386 100644 --- a/magic.lock +++ b/magic.lock @@ -132,12 +132,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -356,12 +356,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -570,12 +570,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -5852,76 +5852,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024112922-release.conda - sha256: d2d1d27c804d40be907e5f24dee2c96a83530f99a4aa4698d4bfbcd2389f8a68 - md5: 07dc8704dd68d983b1292db751b677fe - depends: - - max-core ==24.6.0.dev2024112922 release - - max-python >=24.6.0.dev2024112922,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024112922 release - - mblack ==24.6.0.dev2024112922 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda + sha256: c8b35982053b45e4b6467076b4d582724ef99befccaa9d4a9d2d30560290e041 + md5: ac806202dbe8b063f9cf52d4e518b3a1 + depends: + - max-core ==24.6.0.dev2024113005 release + - max-python >=24.6.0.dev2024113005,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024113005 release license: LicenseRef-Modular-Proprietary - size: 9917 - timestamp: 1732918079788 + size: 9928 + timestamp: 1732944152723 - kind: conda name: max-core - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024112922-release.conda - sha256: ab1ec7348e8edca48914c0203b5995c8013347ad0fd93d5e38c8e62261cb6ca2 - md5: 18c1fd2b6354db88e967cb200fee0a55 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda + sha256: 6d7892171ed63e54f767deabc06693adc5b51757f351e635fc9a5dc5f5ba7234 + md5: e76f1695085dcd96b57d72d863a7ad2e depends: - - mblack ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024113005 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254726602 - timestamp: 1732918231240 + size: 254727962 + timestamp: 1732944122650 - kind: conda name: max-core - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024112922-release.conda - sha256: 4584866065437877ec865afb88d99ef983bd284f2b5e88750f7ba4616c73de54 - md5: a05d93b813689510b14c1c478c0f7e20 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda + sha256: 613e4e62c8911463589adfd014a8ab5b72fd926a3939135717863fea42b9fcc6 + md5: 06847a3ccd3481142105f34269926ac7 depends: - - mblack ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024113005 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258398513 - timestamp: 1732918079786 + size: 258397142 + timestamp: 1732944152721 - kind: conda name: max-core - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024112922-release.conda - sha256: faacbe747fdad79e9275664da544b174a5e77b705331988fed5d943b77a49c11 - md5: 72bedc7bfeff8091539861c600246817 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda + sha256: 5b8a1c68b7fec3ed05b5a95fcbcec0bd974a0239af4021fa269cab1863ba6698 + md5: 983e33104d26892188dbe56e5e7e9a78 depends: - - mblack ==24.6.0.dev2024112922 release + - mblack ==24.6.0.dev2024113005 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220273860 - timestamp: 1732917995058 + size: 220275093 + timestamp: 1732943775724 - kind: conda name: max-python - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024112922-3.12release.conda - sha256: 129fabb8fb1086a760e1e49654fcccf016454f224eda1c37016f487a37e8770b - md5: f581c28718cefb1960ba65708ff8303a + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda + sha256: 3977fae569ccfd20b342fc54d3297fc0c79474a24985e8208e6825fcfe8775cc + md5: 10deb9d112059a58e2d80721b094ee9f depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python 3.12.* - pillow - fastapi @@ -5943,18 +5943,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128543797 - timestamp: 1732918231248 + size: 128542235 + timestamp: 1732944122658 - kind: conda name: max-python - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024112922-3.12release.conda - sha256: 89ee58ba2ea8b51d5816121a9a662d64455313d840f4726500c531f557b56d99 - md5: 05b1090842c71dd75a66757658960f7f + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda + sha256: 8e4bedfffa25da43e25147860662f53feeacd7352b910ad774995950286104d4 + md5: ef86bbd73bca695cc61438f19ef2d50d depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python 3.12.* - pillow - fastapi @@ -5976,18 +5976,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132246699 - timestamp: 1732918079795 + size: 132245642 + timestamp: 1732944152730 - kind: conda name: max-python - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024112922-3.12release.conda - sha256: 689d02e41019da522704fe705487d1b7ea9ab228c6c49f6917a9caee9d4002b9 - md5: fa1eec6a9b9d84f6c097005b5dc0b5a6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda + sha256: 835d06708d0bf7fa3fdbe622fc56dc089553af7952c47805ca4cde99b6c1dbc8 + md5: e154875e9613c3f46497bd356ea86e85 depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python 3.12.* - pillow - fastapi @@ -6009,17 +6009,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119120270 - timestamp: 1732917995061 + size: 119119100 + timestamp: 1732943775727 - kind: conda name: mblack - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024112922-release.conda - sha256: b2533bf1ffe77004616d6c78440666b71a1d08d09057f3da900c31ea7e277d33 - md5: 5ddc332663efce023813d99e7e474c28 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + sha256: 028221ee09ae9acf9b1b038c155d0b08627570b17f958fbde94b3308128d4de7 + md5: 54cd3ff8dbad3522dc7d6518913bc8ad depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6029,8 +6029,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130611 - timestamp: 1732918079791 + size: 130613 + timestamp: 1732944152726 - kind: conda name: mdurl version: 0.1.2 @@ -6048,21 +6048,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024112922 + version: 24.6.0.dev2024113005 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024112922-release.conda - sha256: 0e5cbf4fed2931f0cd8051b3c909fc8f7e2d20dbccfbe9af4bac76a24a5cac21 - md5: bf727d981f2de8cf1cb7ac9cf222c70b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + sha256: 0f967018ec949d7d11f071a61f6c799e4adc837f6890b0f48a16afef1c585482 + md5: 2f305b1da789cc9c3b65c9afc265cda7 depends: - - max-core ==24.6.0.dev2024112922 release + - max-core ==24.6.0.dev2024113005 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22938 - timestamp: 1732918079793 + size: 22941 + timestamp: 1732944152727 - kind: conda name: multidict version: 6.1.0 From 5d3d4504d10c9b0fa1d5e0410578075a3ec401f9 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sun, 1 Dec 2024 06:14:41 +0000 Subject: [PATCH 057/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024120105 --- examples/life/magic.lock | 486 ++++++++++++++++---------------- examples/magic.lock | 486 ++++++++++++++++---------------- examples/notebooks/magic.lock | 505 +++++++++++++++++----------------- examples/operators/magic.lock | 486 ++++++++++++++++---------------- magic.lock | 486 ++++++++++++++++---------------- 5 files changed, 1214 insertions(+), 1235 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 64124dfa6b..57221ff76d 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -173,12 +173,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda @@ -228,7 +228,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -385,10 +385,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda @@ -433,7 +433,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -446,7 +446,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.7-hd54d049_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 @@ -458,12 +458,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda @@ -513,7 +513,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -662,10 +662,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda @@ -702,7 +702,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -712,7 +712,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda @@ -723,12 +723,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda @@ -777,7 +777,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -4174,13 +4174,14 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h944b843_1_cpu - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda - sha256: a6708e09c64711096439a23c76df161ecff98837dfb0ace07b33a9147141c07f - md5: 05ed5955fe5a46c9475d6c63d36291f5 + build: h654e1bb_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda + sha256: 925dcb034f36536eed21d9323f096bf2ebf1111d14c61e1ae0b90e5de131f1e1 + md5: e69934ff9dd8745fea8927028d1603ee depends: + - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4188,18 +4189,16 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.8.0,<2.9.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4207,24 +4206,22 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - - arrow-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8042546 - timestamp: 1732864233719 + size: 5475725 + timestamp: 1732947802614 - kind: conda name: libarrow version: 18.1.0 - build: hacc6a60_1_cpu - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda - sha256: c06d055a3b1fdc1a670481345a11ab7d2225074d0a98e448419e5cd828c070f4 - md5: 4957a938ab42181d6c9748920f13a027 + build: hc7b0e1d_2_cpu + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda + sha256: 3201944d1f97b9207e566ccf388c8376bb2ce7e461534cda63a28975b6790901 + md5: 4a46bd0be8e7f56a217d26b79d290a0e depends: - - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4232,16 +4229,18 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.8.0,<2.9.0a0 + - libstdcxx >=13 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4253,8 +4252,8 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 - size: 5470388 - timestamp: 1732863147130 + size: 8026783 + timestamp: 1732950110265 - kind: conda name: libarrow version: 18.1.0 @@ -4299,22 +4298,6 @@ packages: license_family: APACHE size: 8780597 timestamp: 1732863546099 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h1dc2043_1_cpu - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda - sha256: 54709d2e29fe13167bb2b5e7755382723684197b32188ea18c9c48f5a911af46 - md5: 8a7dfd6c38ecc940e8edbf341819b2fe - depends: - - __osx >=11.0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libcxx >=18 - license: Apache-2.0 - size: 484158 - timestamp: 1732863376127 - kind: conda name: libarrow-acero version: 18.1.0 @@ -4336,38 +4319,35 @@ packages: - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_1_cpu - build_number: 1 + build: h5ad3122_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda - sha256: 52bcb30299f9e49c11eaa3c49aa4360e530ead6d906f883068cd2759d355361e - md5: 8d1175956362366c0550da2a81730561 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda + sha256: e6c8988d1d79163d6d13dda21f9e401f5df4b3af7e0d221718522c600894adcf + md5: 14fede66c995f3cf958797e9fb567e22 depends: - - libarrow 18.1.0 h944b843_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 578289 - timestamp: 1732864300809 + size: 577510 + timestamp: 1732950190684 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h1dc2043_1_cpu - build_number: 1 + build: h605b82c_2_cpu + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda - sha256: 7b5b462c709c2269af5dfec695028c6efe67dc7eb90b485e0e71fae6ecce6f6d - md5: 27c23281c2e2b56fec1b6d7dd1df439a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda + sha256: cfe32f1b0712b77d2c792a839fe4ea2790cabd99d47cd8e1b20ba2d3c8b113b2 + md5: 60351279d7dfd7c254c46aabf9aa35a6 depends: - __osx >=11.0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libarrow-acero 18.1.0 h1dc2043_1_cpu + - libarrow 18.1.0 h654e1bb_2_cpu - libcxx >=18 - - libparquet 18.1.0 hf4cc9e7_1_cpu license: Apache-2.0 - size: 489630 - timestamp: 1732865758291 + size: 483362 + timestamp: 1732948000606 - kind: conda name: libarrow-dataset version: 18.1.0 @@ -4391,44 +4371,60 @@ packages: - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_1_cpu - build_number: 1 + build: h5ad3122_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda - sha256: f6a01e972523d28f8cbabfe803fb136df2b6fae26aaad21d6c539bbd818c0fba - md5: f02295f8a252e8588d220364164565ae + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda + sha256: 53cdae2150c22ef9b5d6de8d0ee8ac52eeacc50fdfa2fa3ea644b52436d1eeb1 + md5: c54d83f012a40fef8a2dc4856e4340a0 depends: - - libarrow 18.1.0 h944b843_1_cpu - - libarrow-acero 18.1.0 h5ad3122_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu + - libarrow-acero 18.1.0 h5ad3122_2_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_1_cpu + - libparquet 18.1.0 h23a96eb_2_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 559007 - timestamp: 1732864377646 + size: 559143 + timestamp: 1732950272727 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h605b82c_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda + sha256: eeae9e8d382c482076f4739455b53f16851d7f99be219b6f96dd4e765132b446 + md5: b5fcaddabf47aa15e50feff072a55ada + depends: + - __osx >=11.0 + - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow-acero 18.1.0 h605b82c_2_cpu + - libcxx >=18 + - libparquet 18.1.0 h5168bdf_2_cpu + license: Apache-2.0 + size: 489769 + timestamp: 1732949732423 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h14ec2bd_1_cpu - build_number: 1 + build: h14ec2bd_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda - sha256: ac3756dcfb242877719c629d343f000b807130aec6f41d4167a392eb152c1549 - md5: e1160e0f8017b4f4ae55578ff0fddd98 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda + sha256: e8923d62cfaadc4a8af1735e717fd4980cad693419e63aed04380566d9fd46df + md5: 4fd0103449cf40214fd348643aa78fff depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h944b843_1_cpu - - libarrow-acero 18.1.0 h5ad3122_1_cpu - - libarrow-dataset 18.1.0 h5ad3122_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu + - libarrow-acero 18.1.0 h5ad3122_2_cpu + - libarrow-dataset 18.1.0 h5ad3122_2_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 515219 - timestamp: 1732864413881 + size: 515352 + timestamp: 1732950311471 - kind: conda name: libarrow-substrait version: 18.1.0 @@ -4455,24 +4451,24 @@ packages: - kind: conda name: libarrow-substrait version: 18.1.0 - build: hf3d3107_1_cpu - build_number: 1 + build: h9b432b6_2_cpu + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda - sha256: 725aa1db6b91068613c1effdf8f23d592dd1e6c95722e27eb63ad94c98d47c1b - md5: 72ec5bcfc66b3cc5e865c7c90b24c43e + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda + sha256: 6dde802134bd2e78581eb838c049b2e7e378899706b471f7072222a6b1284b90 + md5: 49e7c0460532a73f34bd127fff009224 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libarrow-acero 18.1.0 h1dc2043_1_cpu - - libarrow-dataset 18.1.0 h1dc2043_1_cpu + - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow-acero 18.1.0 h605b82c_2_cpu + - libarrow-dataset 18.1.0 h605b82c_2_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - size: 451765 - timestamp: 1732866475770 + size: 451127 + timestamp: 1732950194322 - kind: conda name: libasprintf version: 0.22.5 @@ -6569,22 +6565,39 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_1_cpu - build_number: 1 + build: h23a96eb_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda - sha256: ac045716c4e643d5d92c2dee96f50cdd8aaac9ce3f768b2375aa545b0551d89e - md5: a0e6b8bb23a75fbe8d38cf3cab6abf44 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda + sha256: 83b8fa4a90e214fcd6018f890947666f055f79563fff2b7c3d5f37d894f3a000 + md5: ce205782960a580fa43cfcccca22ad8d depends: - - libarrow 18.1.0 h944b843_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1116708 - timestamp: 1732864357500 + size: 1115906 + timestamp: 1732950250848 +- kind: conda + name: libparquet + version: 18.1.0 + build: h5168bdf_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda + sha256: 454487d113974b923b4214a65aab780fd90c4914390d0b1f4640b1bf60537bff + md5: f995df7ee206617a3e858fd932d7bd2d + depends: + - __osx >=11.0 + - libarrow 18.1.0 h654e1bb_2_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + size: 872333 + timestamp: 1732949558028 - kind: conda name: libparquet version: 18.1.0 @@ -6605,24 +6618,6 @@ packages: license_family: APACHE size: 1203523 timestamp: 1732863665743 -- kind: conda - name: libparquet - version: 18.1.0 - build: hf4cc9e7_1_cpu - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda - sha256: 974b773c8a000b27ef3283b8744cfda9e46afff7d66c708b90971cc4d681805e - md5: 1d41143609ae6961de983182053fbdf2 - depends: - - __osx >=11.0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - size: 874294 - timestamp: 1732865555683 - kind: conda name: libpng version: 1.6.44 @@ -7204,49 +7199,49 @@ packages: - kind: conda name: libutf8proc version: 2.8.0 - build: h812390e_1 + build: hf23e847_1 build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda - sha256: 25dc68d188336e1b83f28175b5146c2192e49a3236b340962c97727c6d47ede9 - md5: 83c5f8e4431ad4b6b7e22c4edd898163 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb + md5: b1aa0faa95017bca11369bd080487ec4 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 81515 - timestamp: 1732829682446 + size: 80852 + timestamp: 1732829699583 - kind: conda name: libutf8proc - version: 2.8.0 - build: hc098a78_1 + version: 2.9.0 + build: h5505292_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda - sha256: 7807a98522477a8bf12460402845224f607ab6e1e73ac316b667169f5143cfe5 - md5: ed89b8bf0d74d23ce47bcf566dd36608 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f depends: - __osx >=11.0 license: MIT license_family: MIT - size: 82462 - timestamp: 1732829832932 + size: 83000 + timestamp: 1732868631531 - kind: conda name: libutf8proc - version: 2.8.0 - build: hf23e847_1 + version: 2.9.0 + build: h86ecc28_1 build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb - md5: b1aa0faa95017bca11369bd080487ec4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 + md5: 699f155da290be3a1a64c932c6728991 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 80852 - timestamp: 1732829699583 + size: 81526 + timestamp: 1732868466862 - kind: conda name: libuuid version: 2.38.1 @@ -7732,76 +7727,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - sha256: c8b35982053b45e4b6467076b4d582724ef99befccaa9d4a9d2d30560290e041 - md5: ac806202dbe8b063f9cf52d4e518b3a1 - depends: - - max-core ==24.6.0.dev2024113005 release - - max-python >=24.6.0.dev2024113005,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024113005 release - - mblack ==24.6.0.dev2024113005 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + sha256: 7b3ef233f35d3c9d2b2a756b85339f3271f2cac8d4433712fce9dbdc83a56ce3 + md5: 066b95823e3c9cd160c5cbe3a530e658 + depends: + - max-core ==24.6.0.dev2024120105 release + - max-python >=24.6.0.dev2024120105,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120105 release license: LicenseRef-Modular-Proprietary - size: 9928 - timestamp: 1732944152723 + size: 9922 + timestamp: 1733030528874 - kind: conda name: max-core - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda - sha256: 6d7892171ed63e54f767deabc06693adc5b51757f351e635fc9a5dc5f5ba7234 - md5: e76f1695085dcd96b57d72d863a7ad2e + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda + sha256: cc9c4b332e39efa40ead3e55c67438b82b4f0f74cb64702636168d92da5f986c + md5: c4876829ff25302ed7aaac7e800f9faa depends: - - mblack ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024120105 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254727962 - timestamp: 1732944122650 + size: 254727332 + timestamp: 1733030528873 - kind: conda name: max-core - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda - sha256: 613e4e62c8911463589adfd014a8ab5b72fd926a3939135717863fea42b9fcc6 - md5: 06847a3ccd3481142105f34269926ac7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda + sha256: d733b0b57191ae17abe55bd5c3cf7fe02e77038c4cf9eb98b3a539d283698f98 + md5: 2f1eb5e1b2e077b3877c4ca7f5670a6c depends: - - mblack ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024120105 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258397142 - timestamp: 1732944152721 + size: 258393349 + timestamp: 1733030529884 - kind: conda name: max-core - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda - sha256: 5b8a1c68b7fec3ed05b5a95fcbcec0bd974a0239af4021fa269cab1863ba6698 - md5: 983e33104d26892188dbe56e5e7e9a78 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda + sha256: 625afbae07f7ef017c037f8b81c2de82d344ca1d14becad14d4d804326046204 + md5: 17df9e0840ae14e6f3c9a840e8237f8a depends: - - mblack ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024120105 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220275093 - timestamp: 1732943775724 + size: 220268454 + timestamp: 1733030465063 - kind: conda name: max-python - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda - sha256: 3977fae569ccfd20b342fc54d3297fc0c79474a24985e8208e6825fcfe8775cc - md5: 10deb9d112059a58e2d80721b094ee9f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda + sha256: 9f9139e62349d97472d5a7b87575de7669ce099e1f2d4090c22b1d6a7a9b246e + md5: c933f4a6c589fad077ce030b33236724 depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python 3.12.* - pillow - fastapi @@ -7823,18 +7818,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128542235 - timestamp: 1732944122658 + size: 128563671 + timestamp: 1733030528881 - kind: conda name: max-python - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda - sha256: 8e4bedfffa25da43e25147860662f53feeacd7352b910ad774995950286104d4 - md5: ef86bbd73bca695cc61438f19ef2d50d + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda + sha256: a5e03fa2abd8453c813a13225e84df4a9781c6b25a05c1b976cfe6f4671d4bbd + md5: 13bbc313863bd5c560a9768165d63be1 depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python 3.12.* - pillow - fastapi @@ -7856,18 +7851,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132245642 - timestamp: 1732944152730 + size: 132240712 + timestamp: 1733030529893 - kind: conda name: max-python - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda - sha256: 835d06708d0bf7fa3fdbe622fc56dc089553af7952c47805ca4cde99b6c1dbc8 - md5: e154875e9613c3f46497bd356ea86e85 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda + sha256: 47b8fb6184f15795d78d408ce2e7f702208af3863adbea9c8a0b1011ac551411 + md5: 5c145a15e58ef93719afa6cc2b472ccf depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python 3.12.* - pillow - fastapi @@ -7889,17 +7884,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119119100 - timestamp: 1732943775727 + size: 119119907 + timestamp: 1733030465067 - kind: conda name: mblack - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - sha256: 028221ee09ae9acf9b1b038c155d0b08627570b17f958fbde94b3308128d4de7 - md5: 54cd3ff8dbad3522dc7d6518913bc8ad + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + sha256: 8b4fdcc9c031e2b16fd48c64767919c6c82b0347d02a606770589b58e659721b + md5: af6b9bb6fed204e9e4ed73c334d24647 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7909,8 +7904,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130613 - timestamp: 1732944152726 + size: 130609 + timestamp: 1733030528877 - kind: conda name: mdurl version: 0.1.2 @@ -7928,21 +7923,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - sha256: 0f967018ec949d7d11f071a61f6c799e4adc837f6890b0f48a16afef1c585482 - md5: 2f305b1da789cc9c3b65c9afc265cda7 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + sha256: 131b9545efd1c967f7fc0ee3b23c5000fc5481ab5ce1a3117624f70b9db7e9e3 + md5: 2c6472e319310564fa809d3e06b25ba5 depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22941 - timestamp: 1732944152727 + timestamp: 1733030528878 - kind: conda name: mpg123 version: 1.32.9 @@ -9787,18 +9782,19 @@ packages: - kind: conda name: python-multipart version: 0.0.18 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - sha256: e4c762c261f152cb4219a736fffbd8225ea1e060ce250318aae89df5d708a089 - md5: 8a5e488f98049813ba403c5f751f6e1e + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + sha256: 464e546b789b8e881e1dc6b4995a11007d1e7c3ef2a533b9fb970146e85f7af8 + md5: 8057e4cf29236ea2094cc20fe9ef451e depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27752 - timestamp: 1732867990988 + size: 27683 + timestamp: 1732988029649 - kind: conda name: python-tzdata version: '2024.2' diff --git a/examples/magic.lock b/examples/magic.lock index 6fbd780c0f..59942a7dac 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -178,7 +178,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda @@ -301,10 +301,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -332,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -343,7 +343,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -401,7 +401,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py311h5487e9b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda @@ -520,10 +520,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -548,7 +548,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -557,7 +557,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -614,7 +614,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda @@ -3166,13 +3166,14 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h944b843_1_cpu - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda - sha256: a6708e09c64711096439a23c76df161ecff98837dfb0ace07b33a9147141c07f - md5: 05ed5955fe5a46c9475d6c63d36291f5 + build: h654e1bb_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda + sha256: 925dcb034f36536eed21d9323f096bf2ebf1111d14c61e1ae0b90e5de131f1e1 + md5: e69934ff9dd8745fea8927028d1603ee depends: + - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3180,18 +3181,16 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.8.0,<2.9.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3199,24 +3198,22 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - - arrow-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8042546 - timestamp: 1732864233719 + size: 5475725 + timestamp: 1732947802614 - kind: conda name: libarrow version: 18.1.0 - build: hacc6a60_1_cpu - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda - sha256: c06d055a3b1fdc1a670481345a11ab7d2225074d0a98e448419e5cd828c070f4 - md5: 4957a938ab42181d6c9748920f13a027 + build: hc7b0e1d_2_cpu + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda + sha256: 3201944d1f97b9207e566ccf388c8376bb2ce7e461534cda63a28975b6790901 + md5: 4a46bd0be8e7f56a217d26b79d290a0e depends: - - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3224,16 +3221,18 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.8.0,<2.9.0a0 + - libstdcxx >=13 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3245,8 +3244,8 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 - size: 5470388 - timestamp: 1732863147130 + size: 8026783 + timestamp: 1732950110265 - kind: conda name: libarrow version: 18.1.0 @@ -3291,22 +3290,6 @@ packages: license_family: APACHE size: 8780597 timestamp: 1732863546099 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h1dc2043_1_cpu - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda - sha256: 54709d2e29fe13167bb2b5e7755382723684197b32188ea18c9c48f5a911af46 - md5: 8a7dfd6c38ecc940e8edbf341819b2fe - depends: - - __osx >=11.0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libcxx >=18 - license: Apache-2.0 - size: 484158 - timestamp: 1732863376127 - kind: conda name: libarrow-acero version: 18.1.0 @@ -3328,38 +3311,35 @@ packages: - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_1_cpu - build_number: 1 + build: h5ad3122_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda - sha256: 52bcb30299f9e49c11eaa3c49aa4360e530ead6d906f883068cd2759d355361e - md5: 8d1175956362366c0550da2a81730561 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda + sha256: e6c8988d1d79163d6d13dda21f9e401f5df4b3af7e0d221718522c600894adcf + md5: 14fede66c995f3cf958797e9fb567e22 depends: - - libarrow 18.1.0 h944b843_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 578289 - timestamp: 1732864300809 + size: 577510 + timestamp: 1732950190684 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h1dc2043_1_cpu - build_number: 1 + build: h605b82c_2_cpu + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda - sha256: 7b5b462c709c2269af5dfec695028c6efe67dc7eb90b485e0e71fae6ecce6f6d - md5: 27c23281c2e2b56fec1b6d7dd1df439a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda + sha256: cfe32f1b0712b77d2c792a839fe4ea2790cabd99d47cd8e1b20ba2d3c8b113b2 + md5: 60351279d7dfd7c254c46aabf9aa35a6 depends: - __osx >=11.0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libarrow-acero 18.1.0 h1dc2043_1_cpu + - libarrow 18.1.0 h654e1bb_2_cpu - libcxx >=18 - - libparquet 18.1.0 hf4cc9e7_1_cpu license: Apache-2.0 - size: 489630 - timestamp: 1732865758291 + size: 483362 + timestamp: 1732948000606 - kind: conda name: libarrow-dataset version: 18.1.0 @@ -3383,44 +3363,60 @@ packages: - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_1_cpu - build_number: 1 + build: h5ad3122_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda - sha256: f6a01e972523d28f8cbabfe803fb136df2b6fae26aaad21d6c539bbd818c0fba - md5: f02295f8a252e8588d220364164565ae + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda + sha256: 53cdae2150c22ef9b5d6de8d0ee8ac52eeacc50fdfa2fa3ea644b52436d1eeb1 + md5: c54d83f012a40fef8a2dc4856e4340a0 depends: - - libarrow 18.1.0 h944b843_1_cpu - - libarrow-acero 18.1.0 h5ad3122_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu + - libarrow-acero 18.1.0 h5ad3122_2_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_1_cpu + - libparquet 18.1.0 h23a96eb_2_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 559007 - timestamp: 1732864377646 + size: 559143 + timestamp: 1732950272727 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h605b82c_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda + sha256: eeae9e8d382c482076f4739455b53f16851d7f99be219b6f96dd4e765132b446 + md5: b5fcaddabf47aa15e50feff072a55ada + depends: + - __osx >=11.0 + - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow-acero 18.1.0 h605b82c_2_cpu + - libcxx >=18 + - libparquet 18.1.0 h5168bdf_2_cpu + license: Apache-2.0 + size: 489769 + timestamp: 1732949732423 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h14ec2bd_1_cpu - build_number: 1 + build: h14ec2bd_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda - sha256: ac3756dcfb242877719c629d343f000b807130aec6f41d4167a392eb152c1549 - md5: e1160e0f8017b4f4ae55578ff0fddd98 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda + sha256: e8923d62cfaadc4a8af1735e717fd4980cad693419e63aed04380566d9fd46df + md5: 4fd0103449cf40214fd348643aa78fff depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h944b843_1_cpu - - libarrow-acero 18.1.0 h5ad3122_1_cpu - - libarrow-dataset 18.1.0 h5ad3122_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu + - libarrow-acero 18.1.0 h5ad3122_2_cpu + - libarrow-dataset 18.1.0 h5ad3122_2_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 515219 - timestamp: 1732864413881 + size: 515352 + timestamp: 1732950311471 - kind: conda name: libarrow-substrait version: 18.1.0 @@ -3447,24 +3443,24 @@ packages: - kind: conda name: libarrow-substrait version: 18.1.0 - build: hf3d3107_1_cpu - build_number: 1 + build: h9b432b6_2_cpu + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda - sha256: 725aa1db6b91068613c1effdf8f23d592dd1e6c95722e27eb63ad94c98d47c1b - md5: 72ec5bcfc66b3cc5e865c7c90b24c43e + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda + sha256: 6dde802134bd2e78581eb838c049b2e7e378899706b471f7072222a6b1284b90 + md5: 49e7c0460532a73f34bd127fff009224 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libarrow-acero 18.1.0 h1dc2043_1_cpu - - libarrow-dataset 18.1.0 h1dc2043_1_cpu + - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow-acero 18.1.0 h605b82c_2_cpu + - libarrow-dataset 18.1.0 h605b82c_2_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - size: 451765 - timestamp: 1732866475770 + size: 451127 + timestamp: 1732950194322 - kind: conda name: libblas version: 3.9.0 @@ -4819,22 +4815,39 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_1_cpu - build_number: 1 + build: h23a96eb_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda - sha256: ac045716c4e643d5d92c2dee96f50cdd8aaac9ce3f768b2375aa545b0551d89e - md5: a0e6b8bb23a75fbe8d38cf3cab6abf44 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda + sha256: 83b8fa4a90e214fcd6018f890947666f055f79563fff2b7c3d5f37d894f3a000 + md5: ce205782960a580fa43cfcccca22ad8d depends: - - libarrow 18.1.0 h944b843_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1116708 - timestamp: 1732864357500 + size: 1115906 + timestamp: 1732950250848 +- kind: conda + name: libparquet + version: 18.1.0 + build: h5168bdf_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda + sha256: 454487d113974b923b4214a65aab780fd90c4914390d0b1f4640b1bf60537bff + md5: f995df7ee206617a3e858fd932d7bd2d + depends: + - __osx >=11.0 + - libarrow 18.1.0 h654e1bb_2_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + size: 872333 + timestamp: 1732949558028 - kind: conda name: libparquet version: 18.1.0 @@ -4855,24 +4868,6 @@ packages: license_family: APACHE size: 1203523 timestamp: 1732863665743 -- kind: conda - name: libparquet - version: 18.1.0 - build: hf4cc9e7_1_cpu - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda - sha256: 974b773c8a000b27ef3283b8744cfda9e46afff7d66c708b90971cc4d681805e - md5: 1d41143609ae6961de983182053fbdf2 - depends: - - __osx >=11.0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - size: 874294 - timestamp: 1732865555683 - kind: conda name: libpng version: 1.6.44 @@ -5350,49 +5345,49 @@ packages: - kind: conda name: libutf8proc version: 2.8.0 - build: h812390e_1 + build: hf23e847_1 build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda - sha256: 25dc68d188336e1b83f28175b5146c2192e49a3236b340962c97727c6d47ede9 - md5: 83c5f8e4431ad4b6b7e22c4edd898163 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb + md5: b1aa0faa95017bca11369bd080487ec4 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 81515 - timestamp: 1732829682446 + size: 80852 + timestamp: 1732829699583 - kind: conda name: libutf8proc - version: 2.8.0 - build: hc098a78_1 + version: 2.9.0 + build: h5505292_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda - sha256: 7807a98522477a8bf12460402845224f607ab6e1e73ac316b667169f5143cfe5 - md5: ed89b8bf0d74d23ce47bcf566dd36608 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f depends: - __osx >=11.0 license: MIT license_family: MIT - size: 82462 - timestamp: 1732829832932 + size: 83000 + timestamp: 1732868631531 - kind: conda name: libutf8proc - version: 2.8.0 - build: hf23e847_1 + version: 2.9.0 + build: h86ecc28_1 build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb - md5: b1aa0faa95017bca11369bd080487ec4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 + md5: 699f155da290be3a1a64c932c6728991 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 80852 - timestamp: 1732829699583 + size: 81526 + timestamp: 1732868466862 - kind: conda name: libuuid version: 2.38.1 @@ -5833,76 +5828,76 @@ packages: timestamp: 1729352296161 - kind: conda name: max - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - sha256: c8b35982053b45e4b6467076b4d582724ef99befccaa9d4a9d2d30560290e041 - md5: ac806202dbe8b063f9cf52d4e518b3a1 - depends: - - max-core ==24.6.0.dev2024113005 release - - max-python >=24.6.0.dev2024113005,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024113005 release - - mblack ==24.6.0.dev2024113005 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + sha256: 7b3ef233f35d3c9d2b2a756b85339f3271f2cac8d4433712fce9dbdc83a56ce3 + md5: 066b95823e3c9cd160c5cbe3a530e658 + depends: + - max-core ==24.6.0.dev2024120105 release + - max-python >=24.6.0.dev2024120105,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120105 release license: LicenseRef-Modular-Proprietary - size: 9928 - timestamp: 1732944152723 + size: 9922 + timestamp: 1733030528874 - kind: conda name: max-core - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda - sha256: 6d7892171ed63e54f767deabc06693adc5b51757f351e635fc9a5dc5f5ba7234 - md5: e76f1695085dcd96b57d72d863a7ad2e + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda + sha256: cc9c4b332e39efa40ead3e55c67438b82b4f0f74cb64702636168d92da5f986c + md5: c4876829ff25302ed7aaac7e800f9faa depends: - - mblack ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024120105 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254727962 - timestamp: 1732944122650 + size: 254727332 + timestamp: 1733030528873 - kind: conda name: max-core - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda - sha256: 613e4e62c8911463589adfd014a8ab5b72fd926a3939135717863fea42b9fcc6 - md5: 06847a3ccd3481142105f34269926ac7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda + sha256: d733b0b57191ae17abe55bd5c3cf7fe02e77038c4cf9eb98b3a539d283698f98 + md5: 2f1eb5e1b2e077b3877c4ca7f5670a6c depends: - - mblack ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024120105 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258397142 - timestamp: 1732944152721 + size: 258393349 + timestamp: 1733030529884 - kind: conda name: max-core - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda - sha256: 5b8a1c68b7fec3ed05b5a95fcbcec0bd974a0239af4021fa269cab1863ba6698 - md5: 983e33104d26892188dbe56e5e7e9a78 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda + sha256: 625afbae07f7ef017c037f8b81c2de82d344ca1d14becad14d4d804326046204 + md5: 17df9e0840ae14e6f3c9a840e8237f8a depends: - - mblack ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024120105 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220275093 - timestamp: 1732943775724 + size: 220268454 + timestamp: 1733030465063 - kind: conda name: max-python - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.11release.conda - sha256: 9a9426c09c3dd5afb360d6ec39790aa4923630f60022967561bfb21c5b6362fe - md5: 9cc123e31ca4b0ac893a39b528af7c90 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.11release.conda + sha256: 7c8631400afb9efb03d005e1ec0276d76bb155b20f5e35a35e1d5d9a2fefd32b + md5: 3a34e5ca2af57200fabe603a6ba0090f depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python 3.11.* - pillow - fastapi @@ -5924,18 +5919,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128522608 - timestamp: 1732944122656 + size: 128532038 + timestamp: 1733030528878 - kind: conda name: max-python - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.11release.conda - sha256: cf062104aa99cdee971029725882971a2ddead0059ae3ca301a46a533bf74637 - md5: e40b2924cf8518c7387b40adc4023515 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.11release.conda + sha256: af999f8f930d5cd4bb6e3de241e8ae9e1789943f2d34b9712952fa64fed6d885 + md5: 1eb9952e5ab3ee82d3a6b8dd73faf3ad depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python 3.11.* - pillow - fastapi @@ -5957,18 +5952,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132240684 - timestamp: 1732944152727 + size: 132257898 + timestamp: 1733030529890 - kind: conda name: max-python - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.11release.conda - sha256: d2b5559deed1e98d268052fe244e2efaf5a10c6192996f465aaed06a88bd33c2 - md5: 583beaaa0fdf1235de6a35bb026debe1 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.11release.conda + sha256: 22e4097971fc3deda331baa08b589a37d3c9c838e2eae6d71864d9f5d925505b + md5: 4b0d0ab11c949e5caba2269794b9b3a5 depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python 3.11.* - pillow - fastapi @@ -5990,17 +5985,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119117879 - timestamp: 1732943775726 + size: 119120379 + timestamp: 1733030465066 - kind: conda name: mblack - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - sha256: 028221ee09ae9acf9b1b038c155d0b08627570b17f958fbde94b3308128d4de7 - md5: 54cd3ff8dbad3522dc7d6518913bc8ad + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + sha256: 8b4fdcc9c031e2b16fd48c64767919c6c82b0347d02a606770589b58e659721b + md5: af6b9bb6fed204e9e4ed73c334d24647 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6010,8 +6005,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130613 - timestamp: 1732944152726 + size: 130609 + timestamp: 1733030528877 - kind: conda name: mdurl version: 0.1.2 @@ -6029,21 +6024,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - sha256: 0f967018ec949d7d11f071a61f6c799e4adc837f6890b0f48a16afef1c585482 - md5: 2f305b1da789cc9c3b65c9afc265cda7 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + sha256: 131b9545efd1c967f7fc0ee3b23c5000fc5481ab5ce1a3117624f70b9db7e9e3 + md5: 2c6472e319310564fa809d3e06b25ba5 depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22941 - timestamp: 1732944152727 + timestamp: 1733030528878 - kind: conda name: multidict version: 6.1.0 @@ -7474,18 +7469,19 @@ packages: - kind: conda name: python-multipart version: 0.0.18 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - sha256: e4c762c261f152cb4219a736fffbd8225ea1e060ce250318aae89df5d708a089 - md5: 8a5e488f98049813ba403c5f751f6e1e + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + sha256: 464e546b789b8e881e1dc6b4995a11007d1e7c3ef2a533b9fb970146e85f7af8 + md5: 8057e4cf29236ea2094cc20fe9ef451e depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27752 - timestamp: 1732867990988 + size: 27683 + timestamp: 1732988029649 - kind: conda name: python-tzdata version: '2024.2' diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 4921a442a7..7e0ec393ea 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -166,13 +166,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -231,7 +231,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -263,7 +263,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda @@ -406,10 +406,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -437,7 +437,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -448,7 +448,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda @@ -460,13 +460,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -525,7 +525,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -557,7 +557,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda @@ -697,10 +697,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -725,7 +725,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -734,7 +734,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda @@ -745,13 +745,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -812,7 +812,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -843,7 +843,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda @@ -4168,13 +4168,14 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h944b843_1_cpu - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda - sha256: a6708e09c64711096439a23c76df161ecff98837dfb0ace07b33a9147141c07f - md5: 05ed5955fe5a46c9475d6c63d36291f5 + build: h654e1bb_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda + sha256: 925dcb034f36536eed21d9323f096bf2ebf1111d14c61e1ae0b90e5de131f1e1 + md5: e69934ff9dd8745fea8927028d1603ee depends: + - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4182,18 +4183,16 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.8.0,<2.9.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4201,24 +4200,22 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - - arrow-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8042546 - timestamp: 1732864233719 + size: 5475725 + timestamp: 1732947802614 - kind: conda name: libarrow version: 18.1.0 - build: hacc6a60_1_cpu - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda - sha256: c06d055a3b1fdc1a670481345a11ab7d2225074d0a98e448419e5cd828c070f4 - md5: 4957a938ab42181d6c9748920f13a027 + build: hc7b0e1d_2_cpu + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda + sha256: 3201944d1f97b9207e566ccf388c8376bb2ce7e461534cda63a28975b6790901 + md5: 4a46bd0be8e7f56a217d26b79d290a0e depends: - - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -4226,16 +4223,18 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.8.0,<2.9.0a0 + - libstdcxx >=13 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4247,8 +4246,8 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 - size: 5470388 - timestamp: 1732863147130 + size: 8026783 + timestamp: 1732950110265 - kind: conda name: libarrow version: 18.1.0 @@ -4293,22 +4292,6 @@ packages: license_family: APACHE size: 8780597 timestamp: 1732863546099 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h1dc2043_1_cpu - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda - sha256: 54709d2e29fe13167bb2b5e7755382723684197b32188ea18c9c48f5a911af46 - md5: 8a7dfd6c38ecc940e8edbf341819b2fe - depends: - - __osx >=11.0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libcxx >=18 - license: Apache-2.0 - size: 484158 - timestamp: 1732863376127 - kind: conda name: libarrow-acero version: 18.1.0 @@ -4330,38 +4313,35 @@ packages: - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_1_cpu - build_number: 1 + build: h5ad3122_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda - sha256: 52bcb30299f9e49c11eaa3c49aa4360e530ead6d906f883068cd2759d355361e - md5: 8d1175956362366c0550da2a81730561 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda + sha256: e6c8988d1d79163d6d13dda21f9e401f5df4b3af7e0d221718522c600894adcf + md5: 14fede66c995f3cf958797e9fb567e22 depends: - - libarrow 18.1.0 h944b843_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 578289 - timestamp: 1732864300809 + size: 577510 + timestamp: 1732950190684 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h1dc2043_1_cpu - build_number: 1 + build: h605b82c_2_cpu + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda - sha256: 7b5b462c709c2269af5dfec695028c6efe67dc7eb90b485e0e71fae6ecce6f6d - md5: 27c23281c2e2b56fec1b6d7dd1df439a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda + sha256: cfe32f1b0712b77d2c792a839fe4ea2790cabd99d47cd8e1b20ba2d3c8b113b2 + md5: 60351279d7dfd7c254c46aabf9aa35a6 depends: - __osx >=11.0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libarrow-acero 18.1.0 h1dc2043_1_cpu + - libarrow 18.1.0 h654e1bb_2_cpu - libcxx >=18 - - libparquet 18.1.0 hf4cc9e7_1_cpu license: Apache-2.0 - size: 489630 - timestamp: 1732865758291 + size: 483362 + timestamp: 1732948000606 - kind: conda name: libarrow-dataset version: 18.1.0 @@ -4385,44 +4365,60 @@ packages: - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_1_cpu - build_number: 1 + build: h5ad3122_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda - sha256: f6a01e972523d28f8cbabfe803fb136df2b6fae26aaad21d6c539bbd818c0fba - md5: f02295f8a252e8588d220364164565ae + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda + sha256: 53cdae2150c22ef9b5d6de8d0ee8ac52eeacc50fdfa2fa3ea644b52436d1eeb1 + md5: c54d83f012a40fef8a2dc4856e4340a0 depends: - - libarrow 18.1.0 h944b843_1_cpu - - libarrow-acero 18.1.0 h5ad3122_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu + - libarrow-acero 18.1.0 h5ad3122_2_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_1_cpu + - libparquet 18.1.0 h23a96eb_2_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 559007 - timestamp: 1732864377646 + size: 559143 + timestamp: 1732950272727 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h605b82c_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda + sha256: eeae9e8d382c482076f4739455b53f16851d7f99be219b6f96dd4e765132b446 + md5: b5fcaddabf47aa15e50feff072a55ada + depends: + - __osx >=11.0 + - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow-acero 18.1.0 h605b82c_2_cpu + - libcxx >=18 + - libparquet 18.1.0 h5168bdf_2_cpu + license: Apache-2.0 + size: 489769 + timestamp: 1732949732423 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h14ec2bd_1_cpu - build_number: 1 + build: h14ec2bd_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda - sha256: ac3756dcfb242877719c629d343f000b807130aec6f41d4167a392eb152c1549 - md5: e1160e0f8017b4f4ae55578ff0fddd98 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda + sha256: e8923d62cfaadc4a8af1735e717fd4980cad693419e63aed04380566d9fd46df + md5: 4fd0103449cf40214fd348643aa78fff depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h944b843_1_cpu - - libarrow-acero 18.1.0 h5ad3122_1_cpu - - libarrow-dataset 18.1.0 h5ad3122_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu + - libarrow-acero 18.1.0 h5ad3122_2_cpu + - libarrow-dataset 18.1.0 h5ad3122_2_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 515219 - timestamp: 1732864413881 + size: 515352 + timestamp: 1732950311471 - kind: conda name: libarrow-substrait version: 18.1.0 @@ -4449,24 +4445,24 @@ packages: - kind: conda name: libarrow-substrait version: 18.1.0 - build: hf3d3107_1_cpu - build_number: 1 + build: h9b432b6_2_cpu + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda - sha256: 725aa1db6b91068613c1effdf8f23d592dd1e6c95722e27eb63ad94c98d47c1b - md5: 72ec5bcfc66b3cc5e865c7c90b24c43e + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda + sha256: 6dde802134bd2e78581eb838c049b2e7e378899706b471f7072222a6b1284b90 + md5: 49e7c0460532a73f34bd127fff009224 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libarrow-acero 18.1.0 h1dc2043_1_cpu - - libarrow-dataset 18.1.0 h1dc2043_1_cpu + - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow-acero 18.1.0 h605b82c_2_cpu + - libarrow-dataset 18.1.0 h605b82c_2_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - size: 451765 - timestamp: 1732866475770 + size: 451127 + timestamp: 1732950194322 - kind: conda name: libblas version: 3.9.0 @@ -5821,22 +5817,39 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_1_cpu - build_number: 1 + build: h23a96eb_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda - sha256: ac045716c4e643d5d92c2dee96f50cdd8aaac9ce3f768b2375aa545b0551d89e - md5: a0e6b8bb23a75fbe8d38cf3cab6abf44 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda + sha256: 83b8fa4a90e214fcd6018f890947666f055f79563fff2b7c3d5f37d894f3a000 + md5: ce205782960a580fa43cfcccca22ad8d depends: - - libarrow 18.1.0 h944b843_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1116708 - timestamp: 1732864357500 + size: 1115906 + timestamp: 1732950250848 +- kind: conda + name: libparquet + version: 18.1.0 + build: h5168bdf_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda + sha256: 454487d113974b923b4214a65aab780fd90c4914390d0b1f4640b1bf60537bff + md5: f995df7ee206617a3e858fd932d7bd2d + depends: + - __osx >=11.0 + - libarrow 18.1.0 h654e1bb_2_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + size: 872333 + timestamp: 1732949558028 - kind: conda name: libparquet version: 18.1.0 @@ -5857,24 +5870,6 @@ packages: license_family: APACHE size: 1203523 timestamp: 1732863665743 -- kind: conda - name: libparquet - version: 18.1.0 - build: hf4cc9e7_1_cpu - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda - sha256: 974b773c8a000b27ef3283b8744cfda9e46afff7d66c708b90971cc4d681805e - md5: 1d41143609ae6961de983182053fbdf2 - depends: - - __osx >=11.0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - size: 874294 - timestamp: 1732865555683 - kind: conda name: libpng version: 1.6.44 @@ -6352,49 +6347,49 @@ packages: - kind: conda name: libutf8proc version: 2.8.0 - build: h812390e_1 + build: hf23e847_1 build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda - sha256: 25dc68d188336e1b83f28175b5146c2192e49a3236b340962c97727c6d47ede9 - md5: 83c5f8e4431ad4b6b7e22c4edd898163 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb + md5: b1aa0faa95017bca11369bd080487ec4 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 81515 - timestamp: 1732829682446 + size: 80852 + timestamp: 1732829699583 - kind: conda name: libutf8proc - version: 2.8.0 - build: hc098a78_1 + version: 2.9.0 + build: h5505292_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda - sha256: 7807a98522477a8bf12460402845224f607ab6e1e73ac316b667169f5143cfe5 - md5: ed89b8bf0d74d23ce47bcf566dd36608 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f depends: - __osx >=11.0 license: MIT license_family: MIT - size: 82462 - timestamp: 1732829832932 + size: 83000 + timestamp: 1732868631531 - kind: conda name: libutf8proc - version: 2.8.0 - build: hf23e847_1 + version: 2.9.0 + build: h86ecc28_1 build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb - md5: b1aa0faa95017bca11369bd080487ec4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 + md5: 699f155da290be3a1a64c932c6728991 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 80852 - timestamp: 1732829699583 + size: 81526 + timestamp: 1732868466862 - kind: conda name: libuuid version: 2.38.1 @@ -6851,76 +6846,76 @@ packages: timestamp: 1713250613726 - kind: conda name: max - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - sha256: c8b35982053b45e4b6467076b4d582724ef99befccaa9d4a9d2d30560290e041 - md5: ac806202dbe8b063f9cf52d4e518b3a1 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + sha256: 7b3ef233f35d3c9d2b2a756b85339f3271f2cac8d4433712fce9dbdc83a56ce3 + md5: 066b95823e3c9cd160c5cbe3a530e658 depends: - - max-core ==24.6.0.dev2024113005 release - - max-python >=24.6.0.dev2024113005,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024113005 release - - mblack ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release + - max-python >=24.6.0.dev2024120105,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120105 release license: LicenseRef-Modular-Proprietary - size: 9928 - timestamp: 1732944152723 + size: 9922 + timestamp: 1733030528874 - kind: conda name: max-core - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda - sha256: 6d7892171ed63e54f767deabc06693adc5b51757f351e635fc9a5dc5f5ba7234 - md5: e76f1695085dcd96b57d72d863a7ad2e + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda + sha256: cc9c4b332e39efa40ead3e55c67438b82b4f0f74cb64702636168d92da5f986c + md5: c4876829ff25302ed7aaac7e800f9faa depends: - - mblack ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024120105 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254727962 - timestamp: 1732944122650 + size: 254727332 + timestamp: 1733030528873 - kind: conda name: max-core - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda - sha256: 613e4e62c8911463589adfd014a8ab5b72fd926a3939135717863fea42b9fcc6 - md5: 06847a3ccd3481142105f34269926ac7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda + sha256: d733b0b57191ae17abe55bd5c3cf7fe02e77038c4cf9eb98b3a539d283698f98 + md5: 2f1eb5e1b2e077b3877c4ca7f5670a6c depends: - - mblack ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024120105 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258397142 - timestamp: 1732944152721 + size: 258393349 + timestamp: 1733030529884 - kind: conda name: max-core - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda - sha256: 5b8a1c68b7fec3ed05b5a95fcbcec0bd974a0239af4021fa269cab1863ba6698 - md5: 983e33104d26892188dbe56e5e7e9a78 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda + sha256: 625afbae07f7ef017c037f8b81c2de82d344ca1d14becad14d4d804326046204 + md5: 17df9e0840ae14e6f3c9a840e8237f8a depends: - - mblack ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024120105 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220275093 - timestamp: 1732943775724 + size: 220268454 + timestamp: 1733030465063 - kind: conda name: max-python - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda - sha256: 3977fae569ccfd20b342fc54d3297fc0c79474a24985e8208e6825fcfe8775cc - md5: 10deb9d112059a58e2d80721b094ee9f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda + sha256: 9f9139e62349d97472d5a7b87575de7669ce099e1f2d4090c22b1d6a7a9b246e + md5: c933f4a6c589fad077ce030b33236724 depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python 3.12.* - pillow - fastapi @@ -6942,18 +6937,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128542235 - timestamp: 1732944122658 + size: 128563671 + timestamp: 1733030528881 - kind: conda name: max-python - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda - sha256: 8e4bedfffa25da43e25147860662f53feeacd7352b910ad774995950286104d4 - md5: ef86bbd73bca695cc61438f19ef2d50d + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda + sha256: a5e03fa2abd8453c813a13225e84df4a9781c6b25a05c1b976cfe6f4671d4bbd + md5: 13bbc313863bd5c560a9768165d63be1 depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python 3.12.* - pillow - fastapi @@ -6975,18 +6970,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132245642 - timestamp: 1732944152730 + size: 132240712 + timestamp: 1733030529893 - kind: conda name: max-python - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda - sha256: 835d06708d0bf7fa3fdbe622fc56dc089553af7952c47805ca4cde99b6c1dbc8 - md5: e154875e9613c3f46497bd356ea86e85 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda + sha256: 47b8fb6184f15795d78d408ce2e7f702208af3863adbea9c8a0b1011ac551411 + md5: 5c145a15e58ef93719afa6cc2b472ccf depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python 3.12.* - pillow - fastapi @@ -7008,17 +7003,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119119100 - timestamp: 1732943775727 + size: 119119907 + timestamp: 1733030465067 - kind: conda name: mblack - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - sha256: 028221ee09ae9acf9b1b038c155d0b08627570b17f958fbde94b3308128d4de7 - md5: 54cd3ff8dbad3522dc7d6518913bc8ad + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + sha256: 8b4fdcc9c031e2b16fd48c64767919c6c82b0347d02a606770589b58e659721b + md5: af6b9bb6fed204e9e4ed73c334d24647 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7028,8 +7023,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130613 - timestamp: 1732944152726 + size: 130609 + timestamp: 1733030528877 - kind: conda name: mdurl version: 0.1.2 @@ -7062,21 +7057,21 @@ packages: timestamp: 1698947249750 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - sha256: 0f967018ec949d7d11f071a61f6c799e4adc837f6890b0f48a16afef1c585482 - md5: 2f305b1da789cc9c3b65c9afc265cda7 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + sha256: 131b9545efd1c967f7fc0ee3b23c5000fc5481ab5ce1a3117624f70b9db7e9e3 + md5: 2c6472e319310564fa809d3e06b25ba5 depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22941 - timestamp: 1732944152727 + timestamp: 1733030528878 - kind: conda name: multidict version: 6.1.0 @@ -8866,18 +8861,19 @@ packages: - kind: conda name: python-multipart version: 0.0.18 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - sha256: e4c762c261f152cb4219a736fffbd8225ea1e060ce250318aae89df5d708a089 - md5: 8a5e488f98049813ba403c5f751f6e1e + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + sha256: 464e546b789b8e881e1dc6b4995a11007d1e7c3ef2a533b9fb970146e85f7af8 + md5: 8057e4cf29236ea2094cc20fe9ef451e depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27752 - timestamp: 1732867990988 + size: 27683 + timestamp: 1732988029649 - kind: conda name: python-tzdata version: '2024.2' @@ -9875,19 +9871,18 @@ packages: timestamp: 1732658406859 - kind: conda name: tomli - version: 2.1.0 - build: pyhff2d567_0 + version: 2.2.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.1.0-pyhff2d567_0.conda - sha256: 354b8a64d4f3311179d85aefc529ca201a36afc1af090d0010c46be7b79f9a47 - md5: 3fa1089b4722df3a900135925f4519d9 + url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_0.conda + sha256: 706f35327a1b433fb57bb99e9fef878e90317fd6ea8cbcd454fb4af1a2e3f035 + md5: ee8ab0fe4c8dfc5a6319f7f8246022fc depends: - python >=3.9 license: MIT - license_family: MIT - size: 18741 - timestamp: 1731426862834 + size: 19129 + timestamp: 1732988289555 - kind: conda name: tornado version: 6.4.2 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 73bd756140..febf0ced33 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -178,7 +178,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -301,10 +301,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -332,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -343,7 +343,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -401,7 +401,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -520,10 +520,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -548,7 +548,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -557,7 +557,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -614,7 +614,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -3166,13 +3166,14 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h944b843_1_cpu - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda - sha256: a6708e09c64711096439a23c76df161ecff98837dfb0ace07b33a9147141c07f - md5: 05ed5955fe5a46c9475d6c63d36291f5 + build: h654e1bb_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda + sha256: 925dcb034f36536eed21d9323f096bf2ebf1111d14c61e1ae0b90e5de131f1e1 + md5: e69934ff9dd8745fea8927028d1603ee depends: + - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3180,18 +3181,16 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.8.0,<2.9.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3199,24 +3198,22 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - - arrow-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8042546 - timestamp: 1732864233719 + size: 5475725 + timestamp: 1732947802614 - kind: conda name: libarrow version: 18.1.0 - build: hacc6a60_1_cpu - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda - sha256: c06d055a3b1fdc1a670481345a11ab7d2225074d0a98e448419e5cd828c070f4 - md5: 4957a938ab42181d6c9748920f13a027 + build: hc7b0e1d_2_cpu + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda + sha256: 3201944d1f97b9207e566ccf388c8376bb2ce7e461534cda63a28975b6790901 + md5: 4a46bd0be8e7f56a217d26b79d290a0e depends: - - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3224,16 +3221,18 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.8.0,<2.9.0a0 + - libstdcxx >=13 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3245,8 +3244,8 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 - size: 5470388 - timestamp: 1732863147130 + size: 8026783 + timestamp: 1732950110265 - kind: conda name: libarrow version: 18.1.0 @@ -3291,22 +3290,6 @@ packages: license_family: APACHE size: 8780597 timestamp: 1732863546099 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h1dc2043_1_cpu - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda - sha256: 54709d2e29fe13167bb2b5e7755382723684197b32188ea18c9c48f5a911af46 - md5: 8a7dfd6c38ecc940e8edbf341819b2fe - depends: - - __osx >=11.0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libcxx >=18 - license: Apache-2.0 - size: 484158 - timestamp: 1732863376127 - kind: conda name: libarrow-acero version: 18.1.0 @@ -3328,38 +3311,35 @@ packages: - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_1_cpu - build_number: 1 + build: h5ad3122_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda - sha256: 52bcb30299f9e49c11eaa3c49aa4360e530ead6d906f883068cd2759d355361e - md5: 8d1175956362366c0550da2a81730561 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda + sha256: e6c8988d1d79163d6d13dda21f9e401f5df4b3af7e0d221718522c600894adcf + md5: 14fede66c995f3cf958797e9fb567e22 depends: - - libarrow 18.1.0 h944b843_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 578289 - timestamp: 1732864300809 + size: 577510 + timestamp: 1732950190684 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h1dc2043_1_cpu - build_number: 1 + build: h605b82c_2_cpu + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda - sha256: 7b5b462c709c2269af5dfec695028c6efe67dc7eb90b485e0e71fae6ecce6f6d - md5: 27c23281c2e2b56fec1b6d7dd1df439a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda + sha256: cfe32f1b0712b77d2c792a839fe4ea2790cabd99d47cd8e1b20ba2d3c8b113b2 + md5: 60351279d7dfd7c254c46aabf9aa35a6 depends: - __osx >=11.0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libarrow-acero 18.1.0 h1dc2043_1_cpu + - libarrow 18.1.0 h654e1bb_2_cpu - libcxx >=18 - - libparquet 18.1.0 hf4cc9e7_1_cpu license: Apache-2.0 - size: 489630 - timestamp: 1732865758291 + size: 483362 + timestamp: 1732948000606 - kind: conda name: libarrow-dataset version: 18.1.0 @@ -3383,44 +3363,60 @@ packages: - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_1_cpu - build_number: 1 + build: h5ad3122_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda - sha256: f6a01e972523d28f8cbabfe803fb136df2b6fae26aaad21d6c539bbd818c0fba - md5: f02295f8a252e8588d220364164565ae + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda + sha256: 53cdae2150c22ef9b5d6de8d0ee8ac52eeacc50fdfa2fa3ea644b52436d1eeb1 + md5: c54d83f012a40fef8a2dc4856e4340a0 depends: - - libarrow 18.1.0 h944b843_1_cpu - - libarrow-acero 18.1.0 h5ad3122_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu + - libarrow-acero 18.1.0 h5ad3122_2_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_1_cpu + - libparquet 18.1.0 h23a96eb_2_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 559007 - timestamp: 1732864377646 + size: 559143 + timestamp: 1732950272727 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h605b82c_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda + sha256: eeae9e8d382c482076f4739455b53f16851d7f99be219b6f96dd4e765132b446 + md5: b5fcaddabf47aa15e50feff072a55ada + depends: + - __osx >=11.0 + - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow-acero 18.1.0 h605b82c_2_cpu + - libcxx >=18 + - libparquet 18.1.0 h5168bdf_2_cpu + license: Apache-2.0 + size: 489769 + timestamp: 1732949732423 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h14ec2bd_1_cpu - build_number: 1 + build: h14ec2bd_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda - sha256: ac3756dcfb242877719c629d343f000b807130aec6f41d4167a392eb152c1549 - md5: e1160e0f8017b4f4ae55578ff0fddd98 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda + sha256: e8923d62cfaadc4a8af1735e717fd4980cad693419e63aed04380566d9fd46df + md5: 4fd0103449cf40214fd348643aa78fff depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h944b843_1_cpu - - libarrow-acero 18.1.0 h5ad3122_1_cpu - - libarrow-dataset 18.1.0 h5ad3122_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu + - libarrow-acero 18.1.0 h5ad3122_2_cpu + - libarrow-dataset 18.1.0 h5ad3122_2_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 515219 - timestamp: 1732864413881 + size: 515352 + timestamp: 1732950311471 - kind: conda name: libarrow-substrait version: 18.1.0 @@ -3447,24 +3443,24 @@ packages: - kind: conda name: libarrow-substrait version: 18.1.0 - build: hf3d3107_1_cpu - build_number: 1 + build: h9b432b6_2_cpu + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda - sha256: 725aa1db6b91068613c1effdf8f23d592dd1e6c95722e27eb63ad94c98d47c1b - md5: 72ec5bcfc66b3cc5e865c7c90b24c43e + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda + sha256: 6dde802134bd2e78581eb838c049b2e7e378899706b471f7072222a6b1284b90 + md5: 49e7c0460532a73f34bd127fff009224 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libarrow-acero 18.1.0 h1dc2043_1_cpu - - libarrow-dataset 18.1.0 h1dc2043_1_cpu + - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow-acero 18.1.0 h605b82c_2_cpu + - libarrow-dataset 18.1.0 h605b82c_2_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - size: 451765 - timestamp: 1732866475770 + size: 451127 + timestamp: 1732950194322 - kind: conda name: libblas version: 3.9.0 @@ -4819,22 +4815,39 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_1_cpu - build_number: 1 + build: h23a96eb_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda - sha256: ac045716c4e643d5d92c2dee96f50cdd8aaac9ce3f768b2375aa545b0551d89e - md5: a0e6b8bb23a75fbe8d38cf3cab6abf44 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda + sha256: 83b8fa4a90e214fcd6018f890947666f055f79563fff2b7c3d5f37d894f3a000 + md5: ce205782960a580fa43cfcccca22ad8d depends: - - libarrow 18.1.0 h944b843_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1116708 - timestamp: 1732864357500 + size: 1115906 + timestamp: 1732950250848 +- kind: conda + name: libparquet + version: 18.1.0 + build: h5168bdf_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda + sha256: 454487d113974b923b4214a65aab780fd90c4914390d0b1f4640b1bf60537bff + md5: f995df7ee206617a3e858fd932d7bd2d + depends: + - __osx >=11.0 + - libarrow 18.1.0 h654e1bb_2_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + size: 872333 + timestamp: 1732949558028 - kind: conda name: libparquet version: 18.1.0 @@ -4855,24 +4868,6 @@ packages: license_family: APACHE size: 1203523 timestamp: 1732863665743 -- kind: conda - name: libparquet - version: 18.1.0 - build: hf4cc9e7_1_cpu - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda - sha256: 974b773c8a000b27ef3283b8744cfda9e46afff7d66c708b90971cc4d681805e - md5: 1d41143609ae6961de983182053fbdf2 - depends: - - __osx >=11.0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - size: 874294 - timestamp: 1732865555683 - kind: conda name: libpng version: 1.6.44 @@ -5350,49 +5345,49 @@ packages: - kind: conda name: libutf8proc version: 2.8.0 - build: h812390e_1 + build: hf23e847_1 build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda - sha256: 25dc68d188336e1b83f28175b5146c2192e49a3236b340962c97727c6d47ede9 - md5: 83c5f8e4431ad4b6b7e22c4edd898163 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb + md5: b1aa0faa95017bca11369bd080487ec4 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 81515 - timestamp: 1732829682446 + size: 80852 + timestamp: 1732829699583 - kind: conda name: libutf8proc - version: 2.8.0 - build: hc098a78_1 + version: 2.9.0 + build: h5505292_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda - sha256: 7807a98522477a8bf12460402845224f607ab6e1e73ac316b667169f5143cfe5 - md5: ed89b8bf0d74d23ce47bcf566dd36608 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f depends: - __osx >=11.0 license: MIT license_family: MIT - size: 82462 - timestamp: 1732829832932 + size: 83000 + timestamp: 1732868631531 - kind: conda name: libutf8proc - version: 2.8.0 - build: hf23e847_1 + version: 2.9.0 + build: h86ecc28_1 build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb - md5: b1aa0faa95017bca11369bd080487ec4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 + md5: 699f155da290be3a1a64c932c6728991 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 80852 - timestamp: 1732829699583 + size: 81526 + timestamp: 1732868466862 - kind: conda name: libuuid version: 2.38.1 @@ -5833,76 +5828,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - sha256: c8b35982053b45e4b6467076b4d582724ef99befccaa9d4a9d2d30560290e041 - md5: ac806202dbe8b063f9cf52d4e518b3a1 - depends: - - max-core ==24.6.0.dev2024113005 release - - max-python >=24.6.0.dev2024113005,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024113005 release - - mblack ==24.6.0.dev2024113005 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + sha256: 7b3ef233f35d3c9d2b2a756b85339f3271f2cac8d4433712fce9dbdc83a56ce3 + md5: 066b95823e3c9cd160c5cbe3a530e658 + depends: + - max-core ==24.6.0.dev2024120105 release + - max-python >=24.6.0.dev2024120105,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120105 release license: LicenseRef-Modular-Proprietary - size: 9928 - timestamp: 1732944152723 + size: 9922 + timestamp: 1733030528874 - kind: conda name: max-core - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda - sha256: 6d7892171ed63e54f767deabc06693adc5b51757f351e635fc9a5dc5f5ba7234 - md5: e76f1695085dcd96b57d72d863a7ad2e + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda + sha256: cc9c4b332e39efa40ead3e55c67438b82b4f0f74cb64702636168d92da5f986c + md5: c4876829ff25302ed7aaac7e800f9faa depends: - - mblack ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024120105 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254727962 - timestamp: 1732944122650 + size: 254727332 + timestamp: 1733030528873 - kind: conda name: max-core - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda - sha256: 613e4e62c8911463589adfd014a8ab5b72fd926a3939135717863fea42b9fcc6 - md5: 06847a3ccd3481142105f34269926ac7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda + sha256: d733b0b57191ae17abe55bd5c3cf7fe02e77038c4cf9eb98b3a539d283698f98 + md5: 2f1eb5e1b2e077b3877c4ca7f5670a6c depends: - - mblack ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024120105 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258397142 - timestamp: 1732944152721 + size: 258393349 + timestamp: 1733030529884 - kind: conda name: max-core - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda - sha256: 5b8a1c68b7fec3ed05b5a95fcbcec0bd974a0239af4021fa269cab1863ba6698 - md5: 983e33104d26892188dbe56e5e7e9a78 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda + sha256: 625afbae07f7ef017c037f8b81c2de82d344ca1d14becad14d4d804326046204 + md5: 17df9e0840ae14e6f3c9a840e8237f8a depends: - - mblack ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024120105 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220275093 - timestamp: 1732943775724 + size: 220268454 + timestamp: 1733030465063 - kind: conda name: max-python - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda - sha256: 3977fae569ccfd20b342fc54d3297fc0c79474a24985e8208e6825fcfe8775cc - md5: 10deb9d112059a58e2d80721b094ee9f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda + sha256: 9f9139e62349d97472d5a7b87575de7669ce099e1f2d4090c22b1d6a7a9b246e + md5: c933f4a6c589fad077ce030b33236724 depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python 3.12.* - pillow - fastapi @@ -5924,18 +5919,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128542235 - timestamp: 1732944122658 + size: 128563671 + timestamp: 1733030528881 - kind: conda name: max-python - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda - sha256: 8e4bedfffa25da43e25147860662f53feeacd7352b910ad774995950286104d4 - md5: ef86bbd73bca695cc61438f19ef2d50d + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda + sha256: a5e03fa2abd8453c813a13225e84df4a9781c6b25a05c1b976cfe6f4671d4bbd + md5: 13bbc313863bd5c560a9768165d63be1 depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python 3.12.* - pillow - fastapi @@ -5957,18 +5952,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132245642 - timestamp: 1732944152730 + size: 132240712 + timestamp: 1733030529893 - kind: conda name: max-python - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda - sha256: 835d06708d0bf7fa3fdbe622fc56dc089553af7952c47805ca4cde99b6c1dbc8 - md5: e154875e9613c3f46497bd356ea86e85 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda + sha256: 47b8fb6184f15795d78d408ce2e7f702208af3863adbea9c8a0b1011ac551411 + md5: 5c145a15e58ef93719afa6cc2b472ccf depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python 3.12.* - pillow - fastapi @@ -5990,17 +5985,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119119100 - timestamp: 1732943775727 + size: 119119907 + timestamp: 1733030465067 - kind: conda name: mblack - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - sha256: 028221ee09ae9acf9b1b038c155d0b08627570b17f958fbde94b3308128d4de7 - md5: 54cd3ff8dbad3522dc7d6518913bc8ad + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + sha256: 8b4fdcc9c031e2b16fd48c64767919c6c82b0347d02a606770589b58e659721b + md5: af6b9bb6fed204e9e4ed73c334d24647 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6010,8 +6005,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130613 - timestamp: 1732944152726 + size: 130609 + timestamp: 1733030528877 - kind: conda name: mdurl version: 0.1.2 @@ -6029,21 +6024,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - sha256: 0f967018ec949d7d11f071a61f6c799e4adc837f6890b0f48a16afef1c585482 - md5: 2f305b1da789cc9c3b65c9afc265cda7 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + sha256: 131b9545efd1c967f7fc0ee3b23c5000fc5481ab5ce1a3117624f70b9db7e9e3 + md5: 2c6472e319310564fa809d3e06b25ba5 depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22941 - timestamp: 1732944152727 + timestamp: 1733030528878 - kind: conda name: multidict version: 6.1.0 @@ -7471,18 +7466,19 @@ packages: - kind: conda name: python-multipart version: 0.0.18 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - sha256: e4c762c261f152cb4219a736fffbd8225ea1e060ce250318aae89df5d708a089 - md5: 8a5e488f98049813ba403c5f751f6e1e + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + sha256: 464e546b789b8e881e1dc6b4995a11007d1e7c3ef2a533b9fb970146e85f7af8 + md5: 8057e4cf29236ea2094cc20fe9ef451e depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27752 - timestamp: 1732867990988 + size: 27683 + timestamp: 1732988029649 - kind: conda name: python-tzdata version: '2024.2' diff --git a/magic.lock b/magic.lock index 9afd6d0386..49204fdacf 100644 --- a/magic.lock +++ b/magic.lock @@ -132,12 +132,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -179,7 +179,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -302,10 +302,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -333,7 +333,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -344,7 +344,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda @@ -356,12 +356,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -403,7 +403,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -522,10 +522,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -550,7 +550,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -559,7 +559,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda @@ -570,12 +570,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -617,7 +617,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -3169,13 +3169,14 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h944b843_1_cpu - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-h944b843_1_cpu.conda - sha256: a6708e09c64711096439a23c76df161ecff98837dfb0ace07b33a9147141c07f - md5: 05ed5955fe5a46c9475d6c63d36291f5 + build: h654e1bb_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda + sha256: 925dcb034f36536eed21d9323f096bf2ebf1111d14c61e1ae0b90e5de131f1e1 + md5: e69934ff9dd8745fea8927028d1603ee depends: + - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3183,18 +3184,16 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.8.0,<2.9.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3202,24 +3201,22 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - - arrow-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8042546 - timestamp: 1732864233719 + size: 5475725 + timestamp: 1732947802614 - kind: conda name: libarrow version: 18.1.0 - build: hacc6a60_1_cpu - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-hacc6a60_1_cpu.conda - sha256: c06d055a3b1fdc1a670481345a11ab7d2225074d0a98e448419e5cd828c070f4 - md5: 4957a938ab42181d6c9748920f13a027 + build: hc7b0e1d_2_cpu + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda + sha256: 3201944d1f97b9207e566ccf388c8376bb2ce7e461534cda63a28975b6790901 + md5: 4a46bd0be8e7f56a217d26b79d290a0e depends: - - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 @@ -3227,16 +3224,18 @@ packages: - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libutf8proc >=2.8.0,<2.9.0a0 + - libstdcxx >=13 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3248,8 +3247,8 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 - size: 5470388 - timestamp: 1732863147130 + size: 8026783 + timestamp: 1732950110265 - kind: conda name: libarrow version: 18.1.0 @@ -3294,22 +3293,6 @@ packages: license_family: APACHE size: 8780597 timestamp: 1732863546099 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h1dc2043_1_cpu - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_1_cpu.conda - sha256: 54709d2e29fe13167bb2b5e7755382723684197b32188ea18c9c48f5a911af46 - md5: 8a7dfd6c38ecc940e8edbf341819b2fe - depends: - - __osx >=11.0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libcxx >=18 - license: Apache-2.0 - size: 484158 - timestamp: 1732863376127 - kind: conda name: libarrow-acero version: 18.1.0 @@ -3331,38 +3314,35 @@ packages: - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_1_cpu - build_number: 1 + build: h5ad3122_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_1_cpu.conda - sha256: 52bcb30299f9e49c11eaa3c49aa4360e530ead6d906f883068cd2759d355361e - md5: 8d1175956362366c0550da2a81730561 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda + sha256: e6c8988d1d79163d6d13dda21f9e401f5df4b3af7e0d221718522c600894adcf + md5: 14fede66c995f3cf958797e9fb567e22 depends: - - libarrow 18.1.0 h944b843_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 578289 - timestamp: 1732864300809 + size: 577510 + timestamp: 1732950190684 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h1dc2043_1_cpu - build_number: 1 + build: h605b82c_2_cpu + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_1_cpu.conda - sha256: 7b5b462c709c2269af5dfec695028c6efe67dc7eb90b485e0e71fae6ecce6f6d - md5: 27c23281c2e2b56fec1b6d7dd1df439a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda + sha256: cfe32f1b0712b77d2c792a839fe4ea2790cabd99d47cd8e1b20ba2d3c8b113b2 + md5: 60351279d7dfd7c254c46aabf9aa35a6 depends: - __osx >=11.0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libarrow-acero 18.1.0 h1dc2043_1_cpu + - libarrow 18.1.0 h654e1bb_2_cpu - libcxx >=18 - - libparquet 18.1.0 hf4cc9e7_1_cpu license: Apache-2.0 - size: 489630 - timestamp: 1732865758291 + size: 483362 + timestamp: 1732948000606 - kind: conda name: libarrow-dataset version: 18.1.0 @@ -3386,44 +3366,60 @@ packages: - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_1_cpu - build_number: 1 + build: h5ad3122_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_1_cpu.conda - sha256: f6a01e972523d28f8cbabfe803fb136df2b6fae26aaad21d6c539bbd818c0fba - md5: f02295f8a252e8588d220364164565ae + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda + sha256: 53cdae2150c22ef9b5d6de8d0ee8ac52eeacc50fdfa2fa3ea644b52436d1eeb1 + md5: c54d83f012a40fef8a2dc4856e4340a0 depends: - - libarrow 18.1.0 h944b843_1_cpu - - libarrow-acero 18.1.0 h5ad3122_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu + - libarrow-acero 18.1.0 h5ad3122_2_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_1_cpu + - libparquet 18.1.0 h23a96eb_2_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 559007 - timestamp: 1732864377646 + size: 559143 + timestamp: 1732950272727 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h605b82c_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda + sha256: eeae9e8d382c482076f4739455b53f16851d7f99be219b6f96dd4e765132b446 + md5: b5fcaddabf47aa15e50feff072a55ada + depends: + - __osx >=11.0 + - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow-acero 18.1.0 h605b82c_2_cpu + - libcxx >=18 + - libparquet 18.1.0 h5168bdf_2_cpu + license: Apache-2.0 + size: 489769 + timestamp: 1732949732423 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h14ec2bd_1_cpu - build_number: 1 + build: h14ec2bd_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_1_cpu.conda - sha256: ac3756dcfb242877719c629d343f000b807130aec6f41d4167a392eb152c1549 - md5: e1160e0f8017b4f4ae55578ff0fddd98 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda + sha256: e8923d62cfaadc4a8af1735e717fd4980cad693419e63aed04380566d9fd46df + md5: 4fd0103449cf40214fd348643aa78fff depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h944b843_1_cpu - - libarrow-acero 18.1.0 h5ad3122_1_cpu - - libarrow-dataset 18.1.0 h5ad3122_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu + - libarrow-acero 18.1.0 h5ad3122_2_cpu + - libarrow-dataset 18.1.0 h5ad3122_2_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 515219 - timestamp: 1732864413881 + size: 515352 + timestamp: 1732950311471 - kind: conda name: libarrow-substrait version: 18.1.0 @@ -3450,24 +3446,24 @@ packages: - kind: conda name: libarrow-substrait version: 18.1.0 - build: hf3d3107_1_cpu - build_number: 1 + build: h9b432b6_2_cpu + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_1_cpu.conda - sha256: 725aa1db6b91068613c1effdf8f23d592dd1e6c95722e27eb63ad94c98d47c1b - md5: 72ec5bcfc66b3cc5e865c7c90b24c43e + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda + sha256: 6dde802134bd2e78581eb838c049b2e7e378899706b471f7072222a6b1284b90 + md5: 49e7c0460532a73f34bd127fff009224 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libarrow-acero 18.1.0 h1dc2043_1_cpu - - libarrow-dataset 18.1.0 h1dc2043_1_cpu + - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow-acero 18.1.0 h605b82c_2_cpu + - libarrow-dataset 18.1.0 h605b82c_2_cpu - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 - size: 451765 - timestamp: 1732866475770 + size: 451127 + timestamp: 1732950194322 - kind: conda name: libblas version: 3.9.0 @@ -4822,22 +4818,39 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_1_cpu - build_number: 1 + build: h23a96eb_2_cpu + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_1_cpu.conda - sha256: ac045716c4e643d5d92c2dee96f50cdd8aaac9ce3f768b2375aa545b0551d89e - md5: a0e6b8bb23a75fbe8d38cf3cab6abf44 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda + sha256: 83b8fa4a90e214fcd6018f890947666f055f79563fff2b7c3d5f37d894f3a000 + md5: ce205782960a580fa43cfcccca22ad8d depends: - - libarrow 18.1.0 h944b843_1_cpu + - libarrow 18.1.0 hc7b0e1d_2_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1116708 - timestamp: 1732864357500 + size: 1115906 + timestamp: 1732950250848 +- kind: conda + name: libparquet + version: 18.1.0 + build: h5168bdf_2_cpu + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda + sha256: 454487d113974b923b4214a65aab780fd90c4914390d0b1f4640b1bf60537bff + md5: f995df7ee206617a3e858fd932d7bd2d + depends: + - __osx >=11.0 + - libarrow 18.1.0 h654e1bb_2_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + size: 872333 + timestamp: 1732949558028 - kind: conda name: libparquet version: 18.1.0 @@ -4858,24 +4871,6 @@ packages: license_family: APACHE size: 1203523 timestamp: 1732863665743 -- kind: conda - name: libparquet - version: 18.1.0 - build: hf4cc9e7_1_cpu - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_1_cpu.conda - sha256: 974b773c8a000b27ef3283b8744cfda9e46afff7d66c708b90971cc4d681805e - md5: 1d41143609ae6961de983182053fbdf2 - depends: - - __osx >=11.0 - - libarrow 18.1.0 hacc6a60_1_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - license: Apache-2.0 - size: 874294 - timestamp: 1732865555683 - kind: conda name: libpng version: 1.6.44 @@ -5353,49 +5348,49 @@ packages: - kind: conda name: libutf8proc version: 2.8.0 - build: h812390e_1 + build: hf23e847_1 build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.8.0-h812390e_1.conda - sha256: 25dc68d188336e1b83f28175b5146c2192e49a3236b340962c97727c6d47ede9 - md5: 83c5f8e4431ad4b6b7e22c4edd898163 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb + md5: b1aa0faa95017bca11369bd080487ec4 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 81515 - timestamp: 1732829682446 + size: 80852 + timestamp: 1732829699583 - kind: conda name: libutf8proc - version: 2.8.0 - build: hc098a78_1 + version: 2.9.0 + build: h5505292_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.8.0-hc098a78_1.conda - sha256: 7807a98522477a8bf12460402845224f607ab6e1e73ac316b667169f5143cfe5 - md5: ed89b8bf0d74d23ce47bcf566dd36608 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda + sha256: ea88f06e97ef8fa2490f7594f8885bb542577226edf8abba3144302d951a53c2 + md5: f777470d31c78cd0abe1903a2fda436f depends: - __osx >=11.0 license: MIT license_family: MIT - size: 82462 - timestamp: 1732829832932 + size: 83000 + timestamp: 1732868631531 - kind: conda name: libutf8proc - version: 2.8.0 - build: hf23e847_1 + version: 2.9.0 + build: h86ecc28_1 build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb - md5: b1aa0faa95017bca11369bd080487ec4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda + sha256: 37a1833c55f9945724cd4b3eb6a1469032cc754a1dd725f191c34154ad2ba7e4 + md5: 699f155da290be3a1a64c932c6728991 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT - size: 80852 - timestamp: 1732829699583 + size: 81526 + timestamp: 1732868466862 - kind: conda name: libuuid version: 2.38.1 @@ -5852,76 +5847,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024113005-release.conda - sha256: c8b35982053b45e4b6467076b4d582724ef99befccaa9d4a9d2d30560290e041 - md5: ac806202dbe8b063f9cf52d4e518b3a1 - depends: - - max-core ==24.6.0.dev2024113005 release - - max-python >=24.6.0.dev2024113005,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024113005 release - - mblack ==24.6.0.dev2024113005 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda + sha256: 7b3ef233f35d3c9d2b2a756b85339f3271f2cac8d4433712fce9dbdc83a56ce3 + md5: 066b95823e3c9cd160c5cbe3a530e658 + depends: + - max-core ==24.6.0.dev2024120105 release + - max-python >=24.6.0.dev2024120105,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120105 release license: LicenseRef-Modular-Proprietary - size: 9928 - timestamp: 1732944152723 + size: 9922 + timestamp: 1733030528874 - kind: conda name: max-core - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024113005-release.conda - sha256: 6d7892171ed63e54f767deabc06693adc5b51757f351e635fc9a5dc5f5ba7234 - md5: e76f1695085dcd96b57d72d863a7ad2e + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda + sha256: cc9c4b332e39efa40ead3e55c67438b82b4f0f74cb64702636168d92da5f986c + md5: c4876829ff25302ed7aaac7e800f9faa depends: - - mblack ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024120105 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254727962 - timestamp: 1732944122650 + size: 254727332 + timestamp: 1733030528873 - kind: conda name: max-core - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024113005-release.conda - sha256: 613e4e62c8911463589adfd014a8ab5b72fd926a3939135717863fea42b9fcc6 - md5: 06847a3ccd3481142105f34269926ac7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda + sha256: d733b0b57191ae17abe55bd5c3cf7fe02e77038c4cf9eb98b3a539d283698f98 + md5: 2f1eb5e1b2e077b3877c4ca7f5670a6c depends: - - mblack ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024120105 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258397142 - timestamp: 1732944152721 + size: 258393349 + timestamp: 1733030529884 - kind: conda name: max-core - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024113005-release.conda - sha256: 5b8a1c68b7fec3ed05b5a95fcbcec0bd974a0239af4021fa269cab1863ba6698 - md5: 983e33104d26892188dbe56e5e7e9a78 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda + sha256: 625afbae07f7ef017c037f8b81c2de82d344ca1d14becad14d4d804326046204 + md5: 17df9e0840ae14e6f3c9a840e8237f8a depends: - - mblack ==24.6.0.dev2024113005 release + - mblack ==24.6.0.dev2024120105 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220275093 - timestamp: 1732943775724 + size: 220268454 + timestamp: 1733030465063 - kind: conda name: max-python - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024113005-3.12release.conda - sha256: 3977fae569ccfd20b342fc54d3297fc0c79474a24985e8208e6825fcfe8775cc - md5: 10deb9d112059a58e2d80721b094ee9f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda + sha256: 9f9139e62349d97472d5a7b87575de7669ce099e1f2d4090c22b1d6a7a9b246e + md5: c933f4a6c589fad077ce030b33236724 depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python 3.12.* - pillow - fastapi @@ -5943,18 +5938,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128542235 - timestamp: 1732944122658 + size: 128563671 + timestamp: 1733030528881 - kind: conda name: max-python - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024113005-3.12release.conda - sha256: 8e4bedfffa25da43e25147860662f53feeacd7352b910ad774995950286104d4 - md5: ef86bbd73bca695cc61438f19ef2d50d + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda + sha256: a5e03fa2abd8453c813a13225e84df4a9781c6b25a05c1b976cfe6f4671d4bbd + md5: 13bbc313863bd5c560a9768165d63be1 depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python 3.12.* - pillow - fastapi @@ -5976,18 +5971,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132245642 - timestamp: 1732944152730 + size: 132240712 + timestamp: 1733030529893 - kind: conda name: max-python - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024113005-3.12release.conda - sha256: 835d06708d0bf7fa3fdbe622fc56dc089553af7952c47805ca4cde99b6c1dbc8 - md5: e154875e9613c3f46497bd356ea86e85 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda + sha256: 47b8fb6184f15795d78d408ce2e7f702208af3863adbea9c8a0b1011ac551411 + md5: 5c145a15e58ef93719afa6cc2b472ccf depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python 3.12.* - pillow - fastapi @@ -6009,17 +6004,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119119100 - timestamp: 1732943775727 + size: 119119907 + timestamp: 1733030465067 - kind: conda name: mblack - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024113005-release.conda - sha256: 028221ee09ae9acf9b1b038c155d0b08627570b17f958fbde94b3308128d4de7 - md5: 54cd3ff8dbad3522dc7d6518913bc8ad + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + sha256: 8b4fdcc9c031e2b16fd48c64767919c6c82b0347d02a606770589b58e659721b + md5: af6b9bb6fed204e9e4ed73c334d24647 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6029,8 +6024,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130613 - timestamp: 1732944152726 + size: 130609 + timestamp: 1733030528877 - kind: conda name: mdurl version: 0.1.2 @@ -6048,21 +6043,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024113005 + version: 24.6.0.dev2024120105 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024113005-release.conda - sha256: 0f967018ec949d7d11f071a61f6c799e4adc837f6890b0f48a16afef1c585482 - md5: 2f305b1da789cc9c3b65c9afc265cda7 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + sha256: 131b9545efd1c967f7fc0ee3b23c5000fc5481ab5ce1a3117624f70b9db7e9e3 + md5: 2c6472e319310564fa809d3e06b25ba5 depends: - - max-core ==24.6.0.dev2024113005 release + - max-core ==24.6.0.dev2024120105 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary size: 22941 - timestamp: 1732944152727 + timestamp: 1733030528878 - kind: conda name: multidict version: 6.1.0 @@ -7490,18 +7485,19 @@ packages: - kind: conda name: python-multipart version: 0.0.18 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_0.conda - sha256: e4c762c261f152cb4219a736fffbd8225ea1e060ce250318aae89df5d708a089 - md5: 8a5e488f98049813ba403c5f751f6e1e + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + sha256: 464e546b789b8e881e1dc6b4995a11007d1e7c3ef2a533b9fb970146e85f7af8 + md5: 8057e4cf29236ea2094cc20fe9ef451e depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27752 - timestamp: 1732867990988 + size: 27683 + timestamp: 1732988029649 - kind: conda name: python-tzdata version: '2024.2' From 9688653870d5055da51d113e76d92c1cfc33691e Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 30 Nov 2024 21:50:23 -0800 Subject: [PATCH 058/119] [mojo-lang] Rename `inout` -> `mut` and `borrowed` -> `read` Per extensive discussion over on this public thread: https://github.com/modularml/mojo/issues/3623 We're moving to rename the `inout` argument convention to be called simply `mut`, and renames `borrowed` to `read` which can still be generally elided. This reduces the need to understand references for the basic conventions that many people work with, while providing a more strictly-correct and consistent model. These words are now "soft" keywords instead of "hard" keywords as well. This still maintains support for the `inout` and `borrowed` keywords, though they will eventually be removed. MODULAR_ORIG_COMMIT_REV_ID: e2b41cfb4cb8bb0b2e67ade93d32d7ef8989428e --- docs/changelog-released.md | 4 +- docs/changelog.md | 6 + examples/life/gridv1.mojo | 2 +- examples/life/gridv2.mojo | 2 +- examples/matmul.mojo | 18 +-- examples/nbody.mojo | 6 +- examples/notebooks/RayTracing.ipynb | 8 +- examples/operators/my_complex.mojo | 20 +-- .../algorithm/bench_elementwise.mojo | 2 +- stdlib/benchmarks/builtin/bench_int.mojo | 2 +- stdlib/benchmarks/builtin/bench_sort.mojo | 36 ++--- stdlib/benchmarks/collections/bench_dict.mojo | 6 +- .../benchmarks/collections/bench_string.mojo | 16 +- stdlib/benchmarks/hashlib/bench_hash.mojo | 8 +- stdlib/benchmarks/math/bench_math.mojo | 6 +- stdlib/benchmarks/utils/bench_formatter.mojo | 4 +- stdlib/benchmarks/utils/bench_memmem.mojo | 4 +- stdlib/src/base64/_b64encode.mojo | 2 +- stdlib/src/base64/base64.mojo | 2 +- stdlib/src/builtin/_format_float.mojo | 12 +- stdlib/src/builtin/_location.mojo | 2 +- stdlib/src/builtin/_pybind.mojo | 4 +- stdlib/src/builtin/_stubs.mojo | 4 +- stdlib/src/builtin/bool.mojo | 10 +- stdlib/src/builtin/builtin_list.mojo | 22 +-- stdlib/src/builtin/builtin_slice.mojo | 4 +- stdlib/src/builtin/debug_assert.mojo | 2 +- stdlib/src/builtin/dtype.mojo | 4 +- stdlib/src/builtin/error.mojo | 2 +- stdlib/src/builtin/file.mojo | 6 +- stdlib/src/builtin/file_descriptor.mojo | 4 +- stdlib/src/builtin/float_literal.mojo | 8 +- stdlib/src/builtin/format_int.mojo | 4 +- stdlib/src/builtin/int.mojo | 32 ++-- stdlib/src/builtin/int_literal.mojo | 18 +-- stdlib/src/builtin/none.mojo | 2 +- stdlib/src/builtin/object.mojo | 48 +++--- stdlib/src/builtin/range.mojo | 20 +-- stdlib/src/builtin/simd.mojo | 36 ++--- stdlib/src/builtin/string_literal.mojo | 6 +- stdlib/src/builtin/swap.mojo | 2 +- stdlib/src/builtin/tuple.mojo | 2 +- stdlib/src/builtin/uint.mojo | 28 ++-- stdlib/src/builtin/value.mojo | 2 +- stdlib/src/collections/counter.mojo | 24 +-- stdlib/src/collections/deque.mojo | 39 +++-- stdlib/src/collections/dict.mojo | 48 +++--- stdlib/src/collections/inline_array.mojo | 4 +- stdlib/src/collections/inline_list.mojo | 4 +- stdlib/src/collections/list.mojo | 40 +++-- stdlib/src/collections/optional.mojo | 6 +- stdlib/src/collections/set.mojo | 28 ++-- stdlib/src/collections/string.mojo | 20 +-- stdlib/src/collections/vector.mojo | 10 +- stdlib/src/hashlib/_ahash.mojo | 10 +- stdlib/src/hashlib/_hasher.mojo | 8 +- stdlib/src/math/math.mojo | 4 +- stdlib/src/memory/arc.mojo | 4 +- stdlib/src/memory/maybe_uninitialized.mojo | 16 +- stdlib/src/memory/owned_pointer.mojo | 8 +- stdlib/src/memory/pointer.mojo | 2 +- stdlib/src/memory/unsafe_pointer.mojo | 6 +- stdlib/src/os/atomic.mojo | 18 +-- stdlib/src/os/fstat.mojo | 4 +- stdlib/src/pathlib/path.mojo | 6 +- stdlib/src/pwd/pwd.mojo | 2 +- stdlib/src/python/_bindings.mojo | 18 +-- stdlib/src/python/_cpython.mojo | 150 +++++++++--------- stdlib/src/python/python.mojo | 20 +-- stdlib/src/python/python_object.mojo | 48 +++--- stdlib/src/random/random.mojo | 2 +- stdlib/src/sys/ffi.mojo | 2 +- stdlib/src/tempfile/tempfile.mojo | 10 +- stdlib/src/testing/testing.mojo | 2 +- stdlib/src/utils/format.mojo | 26 ++- stdlib/src/utils/index.mojo | 8 +- stdlib/src/utils/inline_string.mojo | 20 +-- stdlib/src/utils/lock.mojo | 14 +- stdlib/src/utils/span.mojo | 4 +- stdlib/src/utils/static_tuple.mojo | 4 +- stdlib/src/utils/string_slice.mojo | 10 +- stdlib/src/utils/stringref.mojo | 4 +- stdlib/src/utils/variant.mojo | 16 +- stdlib/src/utils/write.mojo | 32 ++-- stdlib/test/builtin/test_debug_assert.mojo | 2 +- stdlib/test/builtin/test_object.mojo | 2 +- stdlib/test/builtin/test_print.mojo | 4 +- stdlib/test/builtin/test_range.mojo | 2 +- stdlib/test/builtin/test_sort.mojo | 6 +- stdlib/test/hashlib/test_hasher.mojo | 18 +-- stdlib/test/python/test_ownership.mojo | 12 +- stdlib/test/python/test_python_info.mojo | 2 +- stdlib/test/python/test_python_interop.mojo | 8 +- stdlib/test/python/test_python_object.mojo | 2 +- stdlib/test/python/test_python_to_mojo.mojo | 2 +- stdlib/test/tempfile/test_tempfile.mojo | 8 +- stdlib/test/utils/test_format.mojo | 2 +- stdlib/test/utils/test_format_to_stdout.mojo | 2 +- 98 files changed, 602 insertions(+), 609 deletions(-) diff --git a/docs/changelog-released.md b/docs/changelog-released.md index 1bb87df302..5b3c84bdcf 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -6088,7 +6088,7 @@ busy this week. - 📢 The `__clone__` method for copying a value is now named `__copy__` to better follow Python term of art. -- 📢 The `__copy__` method now takes its self argument as a "borrowed" value, +- 📢 The `__copy__` method now takes its self argument as a "read" value, instead of taking it by reference. This makes it easier to write, works for `@register_passable` types, and exposes more optimization opportunities to the early optimizer and dataflow analysis passes. @@ -6153,7 +6153,7 @@ busy this week. Note that `@register_passable` types must use the later style. - 📢 The default argument convention is now the `borrowed` convention. A - "borrowed" argument is passed like a C++ `const&` so it doesn't need to + "read" argument is passed like a C++ `const&` so it doesn't need to invoke the copy constructor (aka the `__clone__` method) when passing a value to the function. There are two differences from C++ `const&`: diff --git a/docs/changelog.md b/docs/changelog.md index 601e9f60d5..640824629c 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -294,6 +294,12 @@ what we publish. ### 🦋 Changed +- The `inout` and `borrowed` argument conventions have been renamed to the `mut` + and `read` argument conventions (respectively). These verbs reflect + declaratively what the callee can do to the argument value passed into the + caller, without tying in the requirement for the programmer to know about + advanced features like references. + - The argument convention for `__init__` methods has been changed from `inout` to `out`, reflecting that an `__init__` method initializes its `self` without reading from it. This also enables spelling the type of an initializer diff --git a/examples/life/gridv1.mojo b/examples/life/gridv1.mojo index 9b7ec2e386..b06cb51315 100644 --- a/examples/life/gridv1.mojo +++ b/examples/life/gridv1.mojo @@ -32,7 +32,7 @@ struct Grid(StringableRaising): def __getitem__(self, row: Int, col: Int) -> Int: return self.data[row][col] - def __setitem__(inout self, row: Int, col: Int, value: Int) -> None: + def __setitem__(mut self, row: Int, col: Int, value: Int) -> None: self.data[row][col] = value # ===-------------------------------------------------------------------===# diff --git a/examples/life/gridv2.mojo b/examples/life/gridv2.mojo index 574d41e314..3e43b5988a 100644 --- a/examples/life/gridv2.mojo +++ b/examples/life/gridv2.mojo @@ -71,7 +71,7 @@ struct Grid[rows: Int, cols: Int](StringableRaising): def __getitem__(self, row: Int, col: Int) -> Int8: return (self.data + row * cols + col)[] - def __setitem__(inout self, row: Int, col: Int, value: Int8) -> None: + def __setitem__(mut self, row: Int, col: Int, value: Int8) -> None: (self.data + row * cols + col)[] = value # ===-------------------------------------------------------------------===# diff --git a/examples/matmul.mojo b/examples/matmul.mojo index 1d58d68bb3..ad81185519 100644 --- a/examples/matmul.mojo +++ b/examples/matmul.mojo @@ -70,7 +70,7 @@ struct Matrix[rows: Int, cols: Int]: fn __getitem__(self, y: Int, x: Int) -> Scalar[type]: return self.load(y, x) - fn __setitem__(inout self, y: Int, x: Int, val: Scalar[type]): + fn __setitem__(mut self, y: Int, x: Int, val: Scalar[type]): self.store(y, x, val) fn load[nelts: Int = 1](self, y: Int, x: Int) -> SIMD[type, nelts]: @@ -100,7 +100,7 @@ def run_matmul_numpy() -> Float64: return gflops -fn matmul_naive(inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_naive(mut C: Matrix, A: Matrix, B: Matrix): for m in range(C.rows): for k in range(A.cols): for n in range(C.cols): @@ -108,7 +108,7 @@ fn matmul_naive(inout C: Matrix, A: Matrix, B: Matrix): # Using stdlib vectorize function -fn matmul_vectorized(inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_vectorized(mut C: Matrix, A: Matrix, B: Matrix): for m in range(C.rows): for k in range(A.cols): @@ -123,7 +123,7 @@ fn matmul_vectorized(inout C: Matrix, A: Matrix, B: Matrix): # Parallelize the code by using the builtin parallelize function # num_workers is the number of worker threads to use in parallalize -fn matmul_parallelized(inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_parallelized(mut C: Matrix, A: Matrix, B: Matrix): var num_workers = C.rows @parameter @@ -150,7 +150,7 @@ fn tile[tiled_fn: Tile2DFunc, tile_x: Int, tile_y: Int](end_x: Int, end_y: Int): # Use the above tile function to perform tiled matmul # Also parallelize with num_workers threads -fn matmul_tiled(inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_tiled(mut C: Matrix, A: Matrix, B: Matrix): var num_workers = C.rows @parameter @@ -177,7 +177,7 @@ fn matmul_tiled(inout C: Matrix, A: Matrix, B: Matrix): # Unroll the vectorized loop by a constant factor # Also parallelize with num_workers threads -fn matmul_unrolled[mode: Int](inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_unrolled[mode: Int](mut C: Matrix, A: Matrix, B: Matrix): var num_workers: Int if mode == 1: num_workers = info.num_physical_cores() @@ -232,7 +232,7 @@ fn tile_parallel[ # a global memory location, which can thrash the cache. # Also partially unroll the loop over the reduction dimension (K) # and reorder the reduction inner loop with the row iteration inner loop -fn matmul_reordered(inout C: Matrix, A: Matrix, B: Matrix): +fn matmul_reordered(mut C: Matrix, A: Matrix, B: Matrix): alias tile_m = 32 alias tile_n = 32 alias tile_k = max(4, K // 256) @@ -282,7 +282,7 @@ fn matmul_reordered(inout C: Matrix, A: Matrix, B: Matrix): @always_inline fn bench[ - func: fn (inout Matrix, Matrix, Matrix) -> None, name: StringLiteral + func: fn (mut Matrix, Matrix, Matrix) -> None, name: StringLiteral ](base_gflops: Float64, np_gflops: Float64) raises: var A = Matrix[M, K].rand() var B = Matrix[K, N].rand() @@ -313,7 +313,7 @@ fn bench[ @always_inline fn test_matrix_equal[ - func: fn (inout Matrix, Matrix, Matrix) -> None + func: fn (mut Matrix, Matrix, Matrix) -> None ](C: Matrix, A: Matrix, B: Matrix) raises -> Bool: """Runs a matmul function on A and B and tests the result for equality with C on every element. diff --git a/examples/nbody.mojo b/examples/nbody.mojo index 694f81be68..eedb4150fb 100644 --- a/examples/nbody.mojo +++ b/examples/nbody.mojo @@ -35,7 +35,7 @@ struct Planet: var mass: Float64 fn __init__( - inout self, + mut self, pos: SIMD[DType.float64, 4], velocity: SIMD[DType.float64, 4], mass: Float64, @@ -119,7 +119,7 @@ alias INITIAL_SYSTEM = List[Planet](Sun, Jupiter, Saturn, Uranus, Neptune) @always_inline -fn offset_momentum(inout bodies: List[Planet]): +fn offset_momentum(mut bodies: List[Planet]): var p = SIMD[DType.float64, 4]() for body in bodies: @@ -132,7 +132,7 @@ fn offset_momentum(inout bodies: List[Planet]): @always_inline -fn advance(inout bodies: List[Planet], dt: Float64): +fn advance(mut bodies: List[Planet], dt: Float64): for i in range(len(INITIAL_SYSTEM)): for j in range(len(INITIAL_SYSTEM) - i - 1): var body_i = bodies[i] diff --git a/examples/notebooks/RayTracing.ipynb b/examples/notebooks/RayTracing.ipynb index 1ce972b6b4..66a768da6e 100644 --- a/examples/notebooks/RayTracing.ipynb +++ b/examples/notebooks/RayTracing.ipynb @@ -422,7 +422,7 @@ " var material: Material\n", "\n", " @always_inline\n", - " fn intersects(self, orig: Vec3f, dir: Vec3f, inout dist: Float32) -> Bool:\n", + " fn intersects(self, orig: Vec3f, dir: Vec3f, mut dist: Float32) -> Bool:\n", " \"\"\"This method returns True if a given ray intersects this sphere.\n", " And if it does, it writes in the `dist` parameter the distance to the\n", " origin of the ray.\n", @@ -698,9 +698,9 @@ " orig: Vec3f,\n", " dir: Vec3f,\n", " spheres: List[Sphere],\n", - " inout material: Material,\n", - " inout hit: Vec3f,\n", - " inout N: Vec3f,\n", + " mut material: Material,\n", + " mut hit: Vec3f,\n", + " mut N: Vec3f,\n", ") -> Bool:\n", " var spheres_dist = inf[DType.float32]()\n", "\n", diff --git a/examples/operators/my_complex.mojo b/examples/operators/my_complex.mojo index f13462dc26..bd4d03f275 100644 --- a/examples/operators/my_complex.mojo +++ b/examples/operators/my_complex.mojo @@ -55,7 +55,7 @@ struct Complex( fn __str__(self) -> String: return String.write(self) - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write("(", self.re) if self.im < 0: writer.write(" - ", -self.im) @@ -78,7 +78,7 @@ struct Complex( else: raise "index out of bounds" - fn __setitem__(inout self, idx: Int, value: Float64) raises: + fn __setitem__(mut self, idx: Int, value: Float64) raises: if idx == 0: self.re = value elif idx == 1: @@ -109,11 +109,11 @@ struct Complex( def __radd__(self, lhs: Float64) -> Self: return Self(self.re + lhs, self.im) - def __iadd__(inout self, rhs: Self): + def __iadd__(mut self, rhs: Self): self.re += rhs.re self.im += rhs.im - def __iadd__(inout self, rhs: Float64): + def __iadd__(mut self, rhs: Float64): self.re += rhs def __sub__(self, rhs: Self) -> Self: @@ -125,11 +125,11 @@ struct Complex( def __rsub__(self, lhs: Float64) -> Self: return Self(lhs - self.re, -self.im) - def __isub__(inout self, rhs: Self): + def __isub__(mut self, rhs: Self): self.re -= rhs.re self.im -= rhs.im - def __isub__(inout self, rhs: Float64): + def __isub__(mut self, rhs: Float64): self.re -= rhs def __mul__(self, rhs: Self) -> Self: @@ -144,13 +144,13 @@ struct Complex( def __rmul__(self, lhs: Float64) -> Self: return Self(lhs * self.re, lhs * self.im) - def __imul__(inout self, rhs: Self): + def __imul__(mut self, rhs: Self): new_re = self.re * rhs.re - self.im * rhs.im new_im = self.re * rhs.im + self.im * rhs.re self.re = new_re self.im = new_im - def __imul__(inout self, rhs: Float64): + def __imul__(mut self, rhs: Float64): self.re *= rhs self.im *= rhs @@ -168,14 +168,14 @@ struct Complex( denom = self.squared_norm() return Self((lhs * self.re) / denom, (-lhs * self.im) / denom) - def __itruediv__(inout self, rhs: Self): + def __itruediv__(mut self, rhs: Self): denom = rhs.squared_norm() new_re = (self.re * rhs.re + self.im * rhs.im) / denom new_im = (self.im * rhs.re - self.re * rhs.im) / denom self.re = new_re self.im = new_im - def __itruediv__(inout self, rhs: Float64): + def __itruediv__(mut self, rhs: Float64): self.re /= rhs self.im /= rhs diff --git a/stdlib/benchmarks/algorithm/bench_elementwise.mojo b/stdlib/benchmarks/algorithm/bench_elementwise.mojo index 34130a2c37..322b66ad9c 100644 --- a/stdlib/benchmarks/algorithm/bench_elementwise.mojo +++ b/stdlib/benchmarks/algorithm/bench_elementwise.mojo @@ -27,7 +27,7 @@ from utils.index import Index, IndexList # Benchmark elementwise # ===----------------------------------------------------------------------===# @parameter -fn bench_elementwise[n: Int](inout b: Bencher) raises: +fn bench_elementwise[n: Int](mut b: Bencher) raises: var vector = Buffer[DType.index, n].stack_allocation() for i in range(len(vector)): diff --git a/stdlib/benchmarks/builtin/bench_int.mojo b/stdlib/benchmarks/builtin/bench_int.mojo index 5a469936f8..b65cd5abaf 100644 --- a/stdlib/benchmarks/builtin/bench_int.mojo +++ b/stdlib/benchmarks/builtin/bench_int.mojo @@ -21,7 +21,7 @@ from benchmark import Bench, BenchConfig, Bencher, BenchId # Benchmarks # ===----------------------------------------------------------------------===# @parameter -fn bench_stringify_small_integers(inout b: Bencher) raises: +fn bench_stringify_small_integers(mut b: Bencher) raises: @always_inline @parameter fn call_fn(): diff --git a/stdlib/benchmarks/builtin/bench_sort.mojo b/stdlib/benchmarks/builtin/bench_sort.mojo index 0d482a72cf..0872012f78 100644 --- a/stdlib/benchmarks/builtin/bench_sort.mojo +++ b/stdlib/benchmarks/builtin/bench_sort.mojo @@ -34,7 +34,7 @@ from stdlib.builtin.sort import ( @always_inline fn randomize_list[ dt: DType -](inout list: List[Scalar[dt]], size: Int, max: Scalar[dt] = Scalar[dt].MAX): +](mut list: List[Scalar[dt]], size: Int, max: Scalar[dt] = Scalar[dt].MAX): @parameter if dt.is_integral(): randint(list.data, size, 0, int(max)) @@ -46,7 +46,7 @@ fn randomize_list[ @always_inline -fn insertion_sort[type: DType](inout list: List[Scalar[type]]): +fn insertion_sort[type: DType](mut list: List[Scalar[type]]): @parameter fn _less_than( lhs: _SortWrapper[Scalar[type]], rhs: _SortWrapper[Scalar[type]] @@ -57,7 +57,7 @@ fn insertion_sort[type: DType](inout list: List[Scalar[type]]): @always_inline -fn small_sort[size: Int, type: DType](inout list: List[Scalar[type]]): +fn small_sort[size: Int, type: DType](mut list: List[Scalar[type]]): @parameter fn _less_than( lhs: _SortWrapper[Scalar[type]], rhs: _SortWrapper[Scalar[type]] @@ -68,7 +68,7 @@ fn small_sort[size: Int, type: DType](inout list: List[Scalar[type]]): @always_inline -fn heap_sort[type: DType](inout list: List[Scalar[type]]): +fn heap_sort[type: DType](mut list: List[Scalar[type]]): @parameter fn _less_than( lhs: _SortWrapper[Scalar[type]], rhs: _SortWrapper[Scalar[type]] @@ -83,14 +83,14 @@ fn heap_sort[type: DType](inout list: List[Scalar[type]]): # ===----------------------------------------------------------------------===# -fn bench_tiny_list_sort[type: DType](inout m: Bench) raises: +fn bench_tiny_list_sort[type: DType](mut m: Bench) raises: alias small_list_size = 5 @parameter for count in range(2, small_list_size + 1): @parameter - fn bench_sort_list(inout b: Bencher) raises: + fn bench_sort_list(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -109,7 +109,7 @@ fn bench_tiny_list_sort[type: DType](inout m: Bench) raises: _ = list^ @parameter - fn bench_small_sort(inout b: Bencher) raises: + fn bench_small_sort(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -128,7 +128,7 @@ fn bench_tiny_list_sort[type: DType](inout m: Bench) raises: _ = list^ @parameter - fn bench_insertion_sort(inout b: Bencher) raises: + fn bench_insertion_sort(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -162,9 +162,9 @@ fn bench_tiny_list_sort[type: DType](inout m: Bench) raises: # ===----------------------------------------------------------------------===# -fn bench_small_list_sort[type: DType](inout m: Bench, count: Int) raises: +fn bench_small_list_sort[type: DType](mut m: Bench, count: Int) raises: @parameter - fn bench_sort_list(inout b: Bencher) raises: + fn bench_sort_list(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -183,7 +183,7 @@ fn bench_small_list_sort[type: DType](inout m: Bench, count: Int) raises: _ = list^ @parameter - fn bench_insertion_sort(inout b: Bencher) raises: + fn bench_insertion_sort(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -214,9 +214,9 @@ fn bench_small_list_sort[type: DType](inout m: Bench, count: Int) raises: # ===----------------------------------------------------------------------===# -fn bench_large_list_sort[type: DType](inout m: Bench, count: Int) raises: +fn bench_large_list_sort[type: DType](mut m: Bench, count: Int) raises: @parameter - fn bench_sort_list(inout b: Bencher) raises: + fn bench_sort_list(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -235,7 +235,7 @@ fn bench_large_list_sort[type: DType](inout m: Bench, count: Int) raises: _ = list^ @parameter - fn bench_heap_sort(inout b: Bencher) raises: + fn bench_heap_sort(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[Scalar[type]].alloc(count) var list = List[Scalar[type]](ptr=ptr, length=count, capacity=count) @@ -267,11 +267,9 @@ fn bench_large_list_sort[type: DType](inout m: Bench, count: Int) raises: # ===----------------------------------------------------------------------===# -fn bench_low_cardinality_list_sort( - inout m: Bench, count: Int, delta: Int -) raises: +fn bench_low_cardinality_list_sort(mut m: Bench, count: Int, delta: Int) raises: @parameter - fn bench_sort_list(inout b: Bencher) raises: + fn bench_sort_list(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[UInt8].alloc(count) var list = List[UInt8](ptr=ptr, length=count, capacity=count) @@ -290,7 +288,7 @@ fn bench_low_cardinality_list_sort( _ = list^ @parameter - fn bench_heap_sort(inout b: Bencher) raises: + fn bench_heap_sort(mut b: Bencher) raises: seed(1) var ptr = UnsafePointer[UInt8].alloc(count) var list = List[UInt8](ptr=ptr, length=count, capacity=count) diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/stdlib/benchmarks/collections/bench_dict.mojo index c88c633579..b50d97a98d 100644 --- a/stdlib/benchmarks/collections/bench_dict.mojo +++ b/stdlib/benchmarks/collections/bench_dict.mojo @@ -38,7 +38,7 @@ fn make_dict[size: Int]() -> Dict[Int, Int]: # Benchmark Dict init # ===----------------------------------------------------------------------===# @parameter -fn bench_dict_init(inout b: Bencher) raises: +fn bench_dict_init(mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -54,7 +54,7 @@ fn bench_dict_init(inout b: Bencher) raises: # Benchmark Dict Insert # ===----------------------------------------------------------------------===# @parameter -fn bench_dict_insert[size: Int](inout b: Bencher) raises: +fn bench_dict_insert[size: Int](mut b: Bencher) raises: """Insert 100 new items.""" var items = make_dict[size]() @@ -72,7 +72,7 @@ fn bench_dict_insert[size: Int](inout b: Bencher) raises: # Benchmark Dict Lookup # ===----------------------------------------------------------------------===# @parameter -fn bench_dict_lookup[size: Int](inout b: Bencher) raises: +fn bench_dict_lookup[size: Int](mut b: Bencher) raises: """Lookup 100 items.""" var items = make_dict[size]() var closest_divisor = ceil(100 / size) diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/stdlib/benchmarks/collections/bench_string.mojo index 7a46242714..85ee5050ee 100644 --- a/stdlib/benchmarks/collections/bench_string.mojo +++ b/stdlib/benchmarks/collections/bench_string.mojo @@ -65,7 +65,7 @@ fn make_string[ # Benchmark string init # ===----------------------------------------------------------------------===# @parameter -fn bench_string_init(inout b: Bencher) raises: +fn bench_string_init(mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -84,7 +84,7 @@ fn bench_string_count[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN", sequence: StringLiteral = "a", -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -105,7 +105,7 @@ fn bench_string_split[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN", sequence: Optional[StringLiteral] = None, -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -130,7 +130,7 @@ fn bench_string_split[ @parameter fn bench_string_splitlines[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -149,7 +149,7 @@ fn bench_string_splitlines[ @parameter fn bench_string_lower[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -168,7 +168,7 @@ fn bench_string_lower[ @parameter fn bench_string_upper[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -190,7 +190,7 @@ fn bench_string_replace[ filename: StringLiteral = "UN_charter_EN", old: StringLiteral = "a", new: StringLiteral = "A", -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".txt") @always_inline @@ -209,7 +209,7 @@ fn bench_string_replace[ @parameter fn bench_string_is_valid_utf8[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" -](inout b: Bencher) raises: +](mut b: Bencher) raises: var items = make_string[length](filename + ".html") @always_inline diff --git a/stdlib/benchmarks/hashlib/bench_hash.mojo b/stdlib/benchmarks/hashlib/bench_hash.mojo index 6ac5e62013..0c6873f109 100644 --- a/stdlib/benchmarks/hashlib/bench_hash.mojo +++ b/stdlib/benchmarks/hashlib/bench_hash.mojo @@ -599,7 +599,7 @@ fn gen_word_pairs[words: String = words_en]() -> List[String]: # Benchmarks # ===----------------------------------------------------------------------===# @parameter -fn bench_small_keys[s: String](inout b: Bencher) raises: +fn bench_small_keys[s: String](mut b: Bencher) raises: var words = gen_word_pairs[s]() @always_inline @@ -613,7 +613,7 @@ fn bench_small_keys[s: String](inout b: Bencher) raises: @parameter -fn bench_small_keys_new_hash_function[s: String](inout b: Bencher) raises: +fn bench_small_keys_new_hash_function[s: String](mut b: Bencher) raises: var words = gen_word_pairs[s]() @always_inline @@ -627,7 +627,7 @@ fn bench_small_keys_new_hash_function[s: String](inout b: Bencher) raises: @parameter -fn bench_long_key[s: String](inout b: Bencher) raises: +fn bench_long_key[s: String](mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -638,7 +638,7 @@ fn bench_long_key[s: String](inout b: Bencher) raises: @parameter -fn bench_long_key_new_hash_function[s: String](inout b: Bencher) raises: +fn bench_long_key_new_hash_function[s: String](mut b: Bencher) raises: @always_inline @parameter fn call_fn(): diff --git a/stdlib/benchmarks/math/bench_math.mojo b/stdlib/benchmarks/math/bench_math.mojo index 1ba4175a74..b7d4c1ae43 100644 --- a/stdlib/benchmarks/math/bench_math.mojo +++ b/stdlib/benchmarks/math/bench_math.mojo @@ -62,7 +62,7 @@ var int_inputs = make_int_inputs(0, 10_000_000, 1_000_000) @parameter fn bench_math[ math_f1p: fn[type: DType, size: Int] (SIMD[type, size]) -> SIMD[type, size] -](inout b: Bencher) raises: +](mut b: Bencher) raises: @always_inline @parameter fn call_fn() raises: @@ -81,7 +81,7 @@ fn bench_math3[ math_f3p: fn[type: DType, size: Int] ( SIMD[type, size], SIMD[type, size], SIMD[type, size] ) -> SIMD[type, size] -](inout b: Bencher) raises: +](mut b: Bencher) raises: @always_inline @parameter fn call_fn() raises: @@ -96,7 +96,7 @@ fn bench_math3[ # Benchmark lcm/gcd # ===----------------------------------------------------------------------===# @parameter -fn bench_math2[math_f2p: fn (Int, Int, /) -> Int](inout b: Bencher) raises: +fn bench_math2[math_f2p: fn (Int, Int, /) -> Int](mut b: Bencher) raises: @always_inline @parameter fn call_fn() raises: diff --git a/stdlib/benchmarks/utils/bench_formatter.mojo b/stdlib/benchmarks/utils/bench_formatter.mojo index 3d22aa92a8..818a0a2cff 100644 --- a/stdlib/benchmarks/utils/bench_formatter.mojo +++ b/stdlib/benchmarks/utils/bench_formatter.mojo @@ -31,7 +31,7 @@ from utils.stringref import _align_down, _memchr, _memmem # Benchmarks # ===----------------------------------------------------------------------===# @parameter -fn bench_writer_int[n: Int](inout b: Bencher) raises: +fn bench_writer_int[n: Int](mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -43,7 +43,7 @@ fn bench_writer_int[n: Int](inout b: Bencher) raises: @parameter -fn bench_writer_simd[n: Int](inout b: Bencher) raises: +fn bench_writer_simd[n: Int](mut b: Bencher) raises: @always_inline @parameter fn call_fn(): diff --git a/stdlib/benchmarks/utils/bench_memmem.mojo b/stdlib/benchmarks/utils/bench_memmem.mojo index 9cca51fc83..97925b2884 100644 --- a/stdlib/benchmarks/utils/bench_memmem.mojo +++ b/stdlib/benchmarks/utils/bench_memmem.mojo @@ -189,7 +189,7 @@ fn _memmem_baseline[ # Benchmarks # ===----------------------------------------------------------------------===# @parameter -fn bench_find_baseline(inout b: Bencher) raises: +fn bench_find_baseline(mut b: Bencher) raises: @always_inline @parameter fn call_fn(): @@ -204,7 +204,7 @@ fn bench_find_baseline(inout b: Bencher) raises: @parameter -fn bench_find_optimized(inout b: Bencher) raises: +fn bench_find_optimized(mut b: Bencher) raises: @always_inline @parameter fn call_fn(): diff --git a/stdlib/src/base64/_b64encode.mojo b/stdlib/src/base64/_b64encode.mojo index f2179b88d0..74b8c31501 100644 --- a/stdlib/src/base64/_b64encode.mojo +++ b/stdlib/src/base64/_b64encode.mojo @@ -213,7 +213,7 @@ fn store_incomplete_simd[ # TODO: Use Span instead of List as input when Span is easier to use @no_inline fn b64encode_with_buffers( - input_bytes: List[UInt8, _], inout result: List[UInt8, _] + input_bytes: List[UInt8, _], mut result: List[UInt8, _] ): alias simd_width = sys.simdbytewidth() alias input_simd_width = simd_width * 3 // 4 diff --git a/stdlib/src/base64/base64.mojo b/stdlib/src/base64/base64.mojo index 0787b01ff2..d9a3f7f71b 100644 --- a/stdlib/src/base64/base64.mojo +++ b/stdlib/src/base64/base64.mojo @@ -65,7 +65,7 @@ fn _ascii_to_value(char: String) -> Int: # TODO: Use Span instead of List as input when Span is easier to use -fn b64encode(input_bytes: List[UInt8, _], inout result: List[UInt8, _]): +fn b64encode(input_bytes: List[UInt8, _], mut result: List[UInt8, _]): """Performs base64 encoding on the input string. Args: diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index 7101144eca..b46e9ce306 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -40,7 +40,7 @@ struct _UInt128: var high: UInt64 var low: UInt64 - fn __iadd__(inout self, n: UInt64): + fn __iadd__(mut self, n: UInt64): var sum = (self.low + n) & UInt64.MAX self.high += 1 if sum < self.low else 0 self.low = sum @@ -89,9 +89,7 @@ struct FP[type: DType, CarrierDType: DType = FPUtils[type].uint_type]: alias small_divisor = pow(10, Self.kappa) -fn _write_float[ - W: Writer, type: DType, // -](inout writer: W, value: Scalar[type]): +fn _write_float[W: Writer, type: DType, //](mut writer: W, value: Scalar[type]): """Write a SIMD float type into a Writer, using the dragonbox algorithm for perfect roundtrip, shortest representable format, and high performance. Paper: https://github.com/jk-jeon/dragonbox/blob/master/other_files/Dragonbox.pdf @@ -228,7 +226,7 @@ fn _write_float[ fn _to_decimal[ CarrierDType: DType, //, type: DType -](inout sig: Scalar[CarrierDType], inout exp: Int): +](mut sig: Scalar[CarrierDType], mut exp: Int): """Transform the raw binary significand to decimal significand, and biased binary exponent into a decimal power of 10 exponent. """ @@ -500,7 +498,7 @@ fn _umul128[ fn _remove_trailing_zeros[ CarrierDType: DType -](inout sig: Scalar[CarrierDType], inout exp: Int): +](mut sig: Scalar[CarrierDType], mut exp: Int): """Fastest alg for removing trailing zeroes: https://github.com/jk-jeon/rtz_benchmark. """ @@ -629,7 +627,7 @@ fn _check_divisibility_and_divide_by_pow10[ CarrierDType: DType, //, carrier_bits: Int, divide_magic_number: StaticTuple[UInt32, 2], -](inout n: Scalar[CarrierDType], N: Int) -> Bool: +](mut n: Scalar[CarrierDType], N: Int) -> Bool: # Make sure the computation for max_n does not overflow. debug_assert(N + 1 <= _floor_log10_pow2(carrier_bits)) diff --git a/stdlib/src/builtin/_location.mojo b/stdlib/src/builtin/_location.mojo index 2816204b62..463cba7b08 100644 --- a/stdlib/src/builtin/_location.mojo +++ b/stdlib/src/builtin/_location.mojo @@ -42,7 +42,7 @@ struct _SourceLocation(Writable, Stringable): """ return "At " + str(self) + ": " + str(msg) - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats the source location to the provided Writer. diff --git a/stdlib/src/builtin/_pybind.mojo b/stdlib/src/builtin/_pybind.mojo index fd2613961f..24b0fdc619 100644 --- a/stdlib/src/builtin/_pybind.mojo +++ b/stdlib/src/builtin/_pybind.mojo @@ -76,7 +76,7 @@ fn pointer_bitcast[ fn gen_pytype_wrapper[ T: Pythonable, name: StringLiteral, -](inout module: PythonObject) raises: +](mut module: PythonObject) raises: # TODO(MOCO-1301): Add support for member method generation. # TODO(MOCO-1302): Add support for generating member field as computed properties. # TODO(MOCO-1307): Add support for constructor generation. @@ -99,7 +99,7 @@ fn add_wrapper_to_module[ PythonObject, TypedPythonObject["Tuple"] ) raises -> PythonObject, func_name: StringLiteral, -](inout module_obj: PythonObject) raises: +](mut module_obj: PythonObject) raises: var module = TypedPythonObject["Module"](unsafe_unchecked_from=module_obj) Python.add_functions( module, diff --git a/stdlib/src/builtin/_stubs.mojo b/stdlib/src/builtin/_stubs.mojo index 92e661dc00..c116d52408 100644 --- a/stdlib/src/builtin/_stubs.mojo +++ b/stdlib/src/builtin/_stubs.mojo @@ -29,12 +29,12 @@ struct __MLIRType[T: AnyTrivialRegType](Movable, Copyable): trait _IntNext(Copyable): - fn __next__(inout self) -> Int: + fn __next__(mut self) -> Int: ... trait _UIntNext(Copyable): - fn __next__(inout self) -> UInt: + fn __next__(mut self) -> UInt: ... diff --git a/stdlib/src/builtin/bool.mojo b/stdlib/src/builtin/bool.mojo index a877d384ac..e48f1c9f5a 100644 --- a/stdlib/src/builtin/bool.mojo +++ b/stdlib/src/builtin/bool.mojo @@ -155,7 +155,7 @@ struct Bool( @always_inline("nodebug") @implicit - fn __init__[T: ImplicitlyBoolable, //](inout self, value: T): + fn __init__[T: ImplicitlyBoolable, //](mut self, value: T): """Convert an ImplicitlyBoolable value to a Bool. Parameters: @@ -226,7 +226,7 @@ struct Bool( return String.write(self) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this boolean to the provided Writer. @@ -404,7 +404,7 @@ struct Bool( return __mlir_op.`pop.and`(self.value, rhs.value) @always_inline("nodebug") - fn __iand__(inout self, rhs: Bool): + fn __iand__(mut self, rhs: Bool): """Computes `self & rhs` and store the result in `self`. Args: @@ -440,7 +440,7 @@ struct Bool( return __mlir_op.`pop.or`(self.value, rhs.value) @always_inline("nodebug") - fn __ior__(inout self, rhs: Bool): + fn __ior__(mut self, rhs: Bool): """Computes `self | rhs` and store the result in `self`. Args: @@ -476,7 +476,7 @@ struct Bool( return __mlir_op.`pop.xor`(self.value, rhs.value) @always_inline("nodebug") - fn __ixor__(inout self, rhs: Bool): + fn __ixor__(mut self, rhs: Bool): """Computes `self ^ rhs` and stores the result in `self`. Args: diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index c50a2006a5..0272fbc2d6 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -135,7 +135,7 @@ struct _VariadicListIter[type: AnyTrivialRegType]: var index: Int var src: VariadicList[type] - fn __next__(inout self) -> type: + fn __next__(mut self) -> type: self.index += 1 return self.src[self.index - 1] @@ -239,12 +239,12 @@ struct _VariadicListMemIter[ var src: Pointer[Self.variadic_list_type, list_origin] fn __init__( - inout self, index: Int, ref [list_origin]list: Self.variadic_list_type + mut self, index: Int, ref [list_origin]list: Self.variadic_list_type ): self.index = index self.src = Pointer.address_of(list) - fn __next__(inout self) -> Self.variadic_list_type.reference_type: + fn __next__(mut self) -> Self.variadic_list_type.reference_type: self.index += 1 # TODO: Need to make this return a dereferenced reference, not a # reference that must be deref'd by the user. @@ -303,7 +303,7 @@ struct VariadicListMem[ Parameters: elt_is_mutable: True if the elements of the list are mutable for an - inout or owned argument. + mut or owned argument. element_type: The type of the elements in the list. origin: The reference origin of the underlying elements. """ @@ -326,7 +326,7 @@ struct VariadicListMem[ # Life cycle methods # ===-------------------------------------------------------------------===# - # Provide support for borrowed variadic arguments. + # Provide support for read-only variadic arguments. @doc_private @always_inline @implicit @@ -339,9 +339,9 @@ struct VariadicListMem[ self.value = value self._is_owned = False - # Provide support for variadics of *inout* arguments. The reference will + # Provide support for variadics of *mut* arguments. The reference will # automatically be inferred to be mutable, and the !kgen.variadic will have - # convention=inout. + # convention=mut. alias _inout_variadic_type = __mlir_type[ `!kgen.variadic<`, Self._mlir_ref_type, `, inout>` ] @@ -489,7 +489,7 @@ struct VariadicPack[ Parameters: elt_is_mutable: True if the elements of the list are mutable for an - inout or owned argument pack. + mut or owned argument pack. origin: The reference origin of the underlying elements. element_trait: The trait that each element of the pack conforms to. element_types: The list of types held by the argument pack. @@ -519,7 +519,7 @@ struct VariadicPack[ Args: value: The argument to construct the pack with. - is_owned: Whether this is an 'owned' pack or 'inout'/'borrowed'. + is_owned: Whether this is an 'owned' pack or 'mut'/'read-only'. """ self._value = value self._is_owned = is_owned @@ -602,7 +602,7 @@ struct VariadicPack[ """Apply a function to each element of the pack in order. This applies the specified function (which must be parametric on the element type) to each element of the pack, from the first element to the last, passing - in each element as a borrowed argument. + in each element as a read-only argument. Parameters: func: The function to apply to each element. @@ -619,7 +619,7 @@ struct VariadicPack[ """Apply a function to each element of the pack in order. This applies the specified function (which must be parametric on the element type) to each element of the pack, from the first element to the last, passing - in each element as a borrowed argument. + in each element as a read-only argument. Parameters: func: The function to apply to each element. diff --git a/stdlib/src/builtin/builtin_slice.mojo b/stdlib/src/builtin/builtin_slice.mojo index cc5a6d2f1a..0d0fe96750 100644 --- a/stdlib/src/builtin/builtin_slice.mojo +++ b/stdlib/src/builtin/builtin_slice.mojo @@ -66,7 +66,7 @@ struct Slice( @always_inline fn __init__( - inout self, + mut self, start: Optional[Int], end: Optional[Int], step: Optional[Int], @@ -115,7 +115,7 @@ struct Slice( return self.__str__() @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Write Slice string representation to a `Writer`. Parameters: diff --git a/stdlib/src/builtin/debug_assert.mojo b/stdlib/src/builtin/debug_assert.mojo index 25d3d8b4e5..4d0f1bb23a 100644 --- a/stdlib/src/builtin/debug_assert.mojo +++ b/stdlib/src/builtin/debug_assert.mojo @@ -308,7 +308,7 @@ struct _ThreadContext(Writable): self.thread_y = _get_id["thread", "y"]() self.thread_z = _get_id["thread", "z"]() - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write( "block: [", self.block_x, diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index acdd3eba30..1d1c37d16f 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -176,7 +176,7 @@ struct DType( return String.write(self) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this dtype to the provided Writer. @@ -327,7 +327,7 @@ struct DType( """ return hash(UInt8(self._as_i8())) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with this `DType` value. Parameters: diff --git a/stdlib/src/builtin/error.mojo b/stdlib/src/builtin/error.mojo index c319e708ea..1d19b5d201 100644 --- a/stdlib/src/builtin/error.mojo +++ b/stdlib/src/builtin/error.mojo @@ -162,7 +162,7 @@ struct Error( return String.write(self) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this error to the provided Writer. diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index 3185adc6b9..823cbf9348 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -112,7 +112,7 @@ struct FileHandle: except: pass - fn close(inout self) raises: + fn close(mut self) raises: """Closes the file handle.""" if not self.handle: return @@ -405,7 +405,7 @@ struct FileHandle: return pos @always_inline - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """ Write a span of bytes to the file. @@ -423,7 +423,7 @@ struct FileHandle: if err_msg: abort(err_msg^.consume_as_error()) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: diff --git a/stdlib/src/builtin/file_descriptor.mojo b/stdlib/src/builtin/file_descriptor.mojo index 2843c9dcbf..8f7709d027 100644 --- a/stdlib/src/builtin/file_descriptor.mojo +++ b/stdlib/src/builtin/file_descriptor.mojo @@ -59,7 +59,7 @@ struct FileDescriptor(Writer): self.value = f._get_raw_fd() @always_inline - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """ Write a span of bytes to the file. @@ -83,7 +83,7 @@ struct FileDescriptor(Writer): written, ) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index 81308401b5..906e8d40dc 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -466,7 +466,7 @@ struct FloatLiteral( # ===------------------------------------------------------------------===# @always_inline("nodebug") - fn __iadd__(inout self, rhs: FloatLiteral): + fn __iadd__(mut self, rhs: FloatLiteral): """In-place addition operator. Args: @@ -475,7 +475,7 @@ struct FloatLiteral( self = self + rhs @always_inline("nodebug") - fn __isub__(inout self, rhs: FloatLiteral): + fn __isub__(mut self, rhs: FloatLiteral): """In-place subtraction operator. Args: @@ -484,7 +484,7 @@ struct FloatLiteral( self = self - rhs @always_inline("nodebug") - fn __imul__(inout self, rhs: FloatLiteral): + fn __imul__(mut self, rhs: FloatLiteral): """In-place multiplication operator. Args: @@ -493,7 +493,7 @@ struct FloatLiteral( self = self * rhs @always_inline("nodebug") - fn __itruediv__(inout self, rhs: FloatLiteral): + fn __itruediv__(mut self, rhs: FloatLiteral): """In-place division. Args: diff --git a/stdlib/src/builtin/format_int.mojo b/stdlib/src/builtin/format_int.mojo index efdc0015c5..0239369fbe 100644 --- a/stdlib/src/builtin/format_int.mojo +++ b/stdlib/src/builtin/format_int.mojo @@ -249,7 +249,7 @@ fn _write_int[ type: DType, W: Writer, ]( - inout writer: W, + mut writer: W, value: Scalar[type], /, radix: Int = 10, @@ -268,7 +268,7 @@ fn _try_write_int[ type: DType, W: Writer, ]( - inout writer: W, + mut writer: W, value: Scalar[type], /, radix: Int = 10, diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 4d7e18dbac..61a74df2dc 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -418,7 +418,7 @@ struct Int( @always_inline("nodebug") @implicit - fn __init__[IndexerTy: Indexer](inout self, value: IndexerTy): + fn __init__[IndexerTy: Indexer](mut self, value: IndexerTy): """Construct Int from the given Indexer value. Parameters: @@ -765,7 +765,7 @@ struct Int( # ===----------------------------------------------------------------------===# @always_inline("nodebug") - fn __iadd__(inout self, rhs: Int): + fn __iadd__(mut self, rhs: Int): """Compute `self + rhs` and save the result in self. Args: @@ -774,7 +774,7 @@ struct Int( self = self + rhs @always_inline("nodebug") - fn __isub__(inout self, rhs: Int): + fn __isub__(mut self, rhs: Int): """Compute `self - rhs` and save the result in self. Args: @@ -783,7 +783,7 @@ struct Int( self = self - rhs @always_inline("nodebug") - fn __imul__(inout self, rhs: Int): + fn __imul__(mut self, rhs: Int): """Compute self*rhs and save the result in self. Args: @@ -791,7 +791,7 @@ struct Int( """ self = self * rhs - fn __itruediv__(inout self, rhs: Int): + fn __itruediv__(mut self, rhs: Int): """Compute `self / rhs`, convert to int, and save the result in self. Since `floor(self / rhs)` is equivalent to `self // rhs`, this yields @@ -803,7 +803,7 @@ struct Int( self = self // rhs @always_inline("nodebug") - fn __ifloordiv__(inout self, rhs: Int): + fn __ifloordiv__(mut self, rhs: Int): """Compute `self // rhs` and save the result in self. Args: @@ -811,7 +811,7 @@ struct Int( """ self = self // rhs - fn __imod__(inout self, rhs: Int): + fn __imod__(mut self, rhs: Int): """Compute `self % rhs` and save the result in self. Args: @@ -820,7 +820,7 @@ struct Int( self = self % rhs @always_inline("nodebug") - fn __ipow__(inout self, rhs: Int): + fn __ipow__(mut self, rhs: Int): """Compute `pow(self, rhs)` and save the result in self. Args: @@ -829,7 +829,7 @@ struct Int( self = self**rhs @always_inline("nodebug") - fn __ilshift__(inout self, rhs: Int): + fn __ilshift__(mut self, rhs: Int): """Compute `self << rhs` and save the result in self. Args: @@ -838,7 +838,7 @@ struct Int( self = self << rhs @always_inline("nodebug") - fn __irshift__(inout self, rhs: Int): + fn __irshift__(mut self, rhs: Int): """Compute `self >> rhs` and save the result in self. Args: @@ -847,7 +847,7 @@ struct Int( self = self >> rhs @always_inline("nodebug") - fn __iand__(inout self, rhs: Int): + fn __iand__(mut self, rhs: Int): """Compute `self & rhs` and save the result in self. Args: @@ -856,7 +856,7 @@ struct Int( self = self & rhs @always_inline("nodebug") - fn __ixor__(inout self, rhs: Int): + fn __ixor__(mut self, rhs: Int): """Compute `self ^ rhs` and save the result in self. Args: @@ -865,7 +865,7 @@ struct Int( self = self ^ rhs @always_inline("nodebug") - fn __ior__(inout self, rhs: Int): + fn __ior__(mut self, rhs: Int): """Compute self|rhs and save the result in self. Args: @@ -1141,7 +1141,7 @@ struct Int( # TODO(MOCO-636): switch to DType.index return _hash_simd(Scalar[DType.int64](self)) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with this int value. Parameters: @@ -1180,7 +1180,7 @@ struct Int( # Methods # ===-------------------------------------------------------------------===# - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this integer to the provided Writer. @@ -1193,7 +1193,7 @@ struct Int( writer.write(Int64(self)) - fn write_padded[W: Writer](self, inout writer: W, width: Int): + fn write_padded[W: Writer](self, mut writer: W, width: Int): """Write the int right-aligned to a set padding. Parameters: diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index 0432c933d3..360ed0e9a6 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -378,7 +378,7 @@ struct IntLiteral( # ===----------------------------------------------------------------------===# @always_inline("nodebug") - fn __iadd__(inout self, rhs: Self): + fn __iadd__(mut self, rhs: Self): """Compute `self + rhs` and save the result in self. Args: @@ -387,7 +387,7 @@ struct IntLiteral( self = self + rhs @always_inline("nodebug") - fn __isub__(inout self, rhs: Self): + fn __isub__(mut self, rhs: Self): """Compute `self - rhs` and save the result in self. Args: @@ -396,7 +396,7 @@ struct IntLiteral( self = self - rhs @always_inline("nodebug") - fn __imul__(inout self, rhs: Self): + fn __imul__(mut self, rhs: Self): """Compute self*rhs and save the result in self. Args: @@ -405,7 +405,7 @@ struct IntLiteral( self = self * rhs @always_inline("nodebug") - fn __ifloordiv__(inout self, rhs: Self): + fn __ifloordiv__(mut self, rhs: Self): """Compute self//rhs and save the result in self. Args: @@ -414,7 +414,7 @@ struct IntLiteral( self = self // rhs @always_inline("nodebug") - fn __ilshift__(inout self, rhs: Self): + fn __ilshift__(mut self, rhs: Self): """Compute `self << rhs` and save the result in self. Args: @@ -423,7 +423,7 @@ struct IntLiteral( self = self << rhs @always_inline("nodebug") - fn __irshift__(inout self, rhs: Self): + fn __irshift__(mut self, rhs: Self): """Compute `self >> rhs` and save the result in self. Args: @@ -432,7 +432,7 @@ struct IntLiteral( self = self >> rhs @always_inline("nodebug") - fn __iand__(inout self, rhs: Self): + fn __iand__(mut self, rhs: Self): """Compute `self & rhs` and save the result in self. Args: @@ -441,7 +441,7 @@ struct IntLiteral( self = self & rhs @always_inline("nodebug") - fn __ixor__(inout self, rhs: Self): + fn __ixor__(mut self, rhs: Self): """Compute `self ^ rhs` and save the result in self. Args: @@ -450,7 +450,7 @@ struct IntLiteral( self = self ^ rhs @always_inline("nodebug") - fn __ior__(inout self, rhs: Self): + fn __ior__(mut self, rhs: Self): """Compute self|rhs and save the result in self. Args: diff --git a/stdlib/src/builtin/none.mojo b/stdlib/src/builtin/none.mojo index 3cfc856b32..2e5dc6ef35 100644 --- a/stdlib/src/builtin/none.mojo +++ b/stdlib/src/builtin/none.mojo @@ -75,7 +75,7 @@ struct NoneType( return "None" @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Write `None` to a writer stream. Parameters: diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index 1eb57a4acb..21b345b89d 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -124,7 +124,7 @@ struct _RefCountedAttrsDict: ) @always_inline - fn set(inout self, key: StringLiteral, value: _ObjectImpl) raises: + fn set(mut self, key: StringLiteral, value: _ObjectImpl) raises: if key in self.impl[]: self.impl[][key].destroy() self.impl[][key] = value @@ -210,7 +210,7 @@ struct _Function(CollectionElement, CollectionElementNew): """The function pointer.""" @always_inline - fn __init__[FnT: AnyTrivialRegType](inout self, value: FnT): + fn __init__[FnT: AnyTrivialRegType](mut self, value: FnT): # FIXME: No "pointer bitcast" for signature function pointers. var f = UnsafePointer[Int16]() UnsafePointer.address_of(f).bitcast[FnT]()[] = value @@ -320,7 +320,7 @@ struct _ObjectImpl( self.value = Self.type(value) @always_inline - fn __init__[dt: DType](inout self, value: SIMD[dt, 1]): + fn __init__[dt: DType](mut self, value: SIMD[dt, 1]): @parameter if dt.is_integral(): self.value = Self.type(value) @@ -517,7 +517,7 @@ struct _ObjectImpl( return self.get_as_int().cast[DType.float64]() @staticmethod - fn coerce_comparison_type(inout lhs: _ObjectImpl, inout rhs: _ObjectImpl): + fn coerce_comparison_type(mut lhs: _ObjectImpl, mut rhs: _ObjectImpl): """Coerces two values of arithmetic type to the appropriate lowest-common denominator type for performing comparisons, in order of increasing priority: bool, int, and then float. @@ -528,7 +528,7 @@ struct _ObjectImpl( return @parameter - fn convert(inout value: _ObjectImpl, id: Int, to: Int): + fn convert(mut value: _ObjectImpl, id: Int, to: Int): if to == Self.int: value = value.convert_bool_to_int() else: @@ -543,7 +543,7 @@ struct _ObjectImpl( convert(lhs, lhsId, rhsId) @staticmethod - fn coerce_arithmetic_type(inout lhs: _ObjectImpl, inout rhs: _ObjectImpl): + fn coerce_arithmetic_type(mut lhs: _ObjectImpl, mut rhs: _ObjectImpl): """Coerces two values of arithmetic type to the appropriate lowest-common denominator type for performing arithmetic operations. Bools are always converted to integers, to match Python's behavior. @@ -560,7 +560,7 @@ struct _ObjectImpl( lhs = lhs.convert_int_to_float() @staticmethod - fn coerce_integral_type(inout lhs: _ObjectImpl, inout rhs: _ObjectImpl): + fn coerce_integral_type(mut lhs: _ObjectImpl, mut rhs: _ObjectImpl): """Coerces two values of integral type to the appropriate lowest-common denominator type for performing bitwise operations. """ @@ -571,7 +571,7 @@ struct _ObjectImpl( else: lhs = lhs.convert_bool_to_int() - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Performs conversion to string according to Python semantics. """ @@ -785,7 +785,7 @@ struct object( self._value = value @always_inline - fn __init__[dt: DType](inout self, value: SIMD[dt, 1]): + fn __init__[dt: DType](mut self, value: SIMD[dt, 1]): """Initializes the object with a generic scalar value. If the scalar value type is bool, it is converted to a boolean. Otherwise, it is converted to the appropriate integer or floating point type. @@ -842,7 +842,7 @@ struct object( self._value = impl @always_inline - fn __init__[*Ts: CollectionElement](inout self, value: ListLiteral[*Ts]): + fn __init__[*Ts: CollectionElement](mut self, value: ListLiteral[*Ts]): """Initializes the object from a list literal. Parameters: @@ -1003,7 +1003,7 @@ struct object( """ return self.__bool__() - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Performs conversion to string according to Python semantics. @@ -1537,7 +1537,7 @@ struct object( # ===------------------------------------------------------------------=== # @always_inline - fn __iadd__(inout self, rhs: object) raises: + fn __iadd__(mut self, rhs: object) raises: """In-place addition or concatenation operator. Args: @@ -1546,7 +1546,7 @@ struct object( self = self + rhs @always_inline - fn __isub__(inout self, rhs: object) raises: + fn __isub__(mut self, rhs: object) raises: """In-place subtraction operator. Args: @@ -1555,7 +1555,7 @@ struct object( self = self - rhs @always_inline - fn __imul__(inout self, rhs: object) raises: + fn __imul__(mut self, rhs: object) raises: """In-place multiplication operator. Args: @@ -1564,7 +1564,7 @@ struct object( self = self * rhs @always_inline - fn __ipow__(inout self, rhs: object) raises: + fn __ipow__(mut self, rhs: object) raises: """In-place exponentiation operator. Args: @@ -1573,7 +1573,7 @@ struct object( self = self**rhs @always_inline - fn __imod__(inout self, rhs: object) raises: + fn __imod__(mut self, rhs: object) raises: """In-place modulo operator. Args: @@ -1582,7 +1582,7 @@ struct object( self = self % rhs @always_inline - fn __itruediv__(inout self, rhs: object) raises: + fn __itruediv__(mut self, rhs: object) raises: """In-place true division operator. Args: @@ -1591,7 +1591,7 @@ struct object( self = self / rhs @always_inline - fn __ifloordiv__(inout self, rhs: object) raises: + fn __ifloordiv__(mut self, rhs: object) raises: """In-place floor division operator. Args: @@ -1600,7 +1600,7 @@ struct object( self = self // rhs @always_inline - fn __ilshift__(inout self, rhs: object) raises: + fn __ilshift__(mut self, rhs: object) raises: """In-place left shift operator. Args: @@ -1609,7 +1609,7 @@ struct object( self = self << rhs @always_inline - fn __irshift__(inout self, rhs: object) raises: + fn __irshift__(mut self, rhs: object) raises: """In-place right shift operator. Args: @@ -1618,7 +1618,7 @@ struct object( self = self >> rhs @always_inline - fn __iand__(inout self, rhs: object) raises: + fn __iand__(mut self, rhs: object) raises: """In-place AND operator. Args: @@ -1627,7 +1627,7 @@ struct object( self = self & rhs @always_inline - fn __ior__(inout self, rhs: object) raises: + fn __ior__(mut self, rhs: object) raises: """In-place OR operator. Args: @@ -1636,7 +1636,7 @@ struct object( self = self | rhs @always_inline - fn __ixor__(inout self, rhs: object) raises: + fn __ixor__(mut self, rhs: object) raises: """In-place XOR operator. Args: @@ -1936,7 +1936,7 @@ struct object( return self._value.get_obj_attr(key) @always_inline - fn __setattr__(inout self, key: StringLiteral, value: object) raises: + fn __setattr__(mut self, key: StringLiteral, value: object) raises: """Sets the named attribute. Args: diff --git a/stdlib/src/builtin/range.mojo b/stdlib/src/builtin/range.mojo index 587b859e16..2af6fb942d 100644 --- a/stdlib/src/builtin/range.mojo +++ b/stdlib/src/builtin/range.mojo @@ -60,7 +60,7 @@ struct _ZeroStartingRange(Sized, ReversibleRange, _IntIterable): return self @always_inline - fn __next__(inout self) -> Int: + fn __next__(mut self) -> Int: var curr = self.curr self.curr -= 1 return self.end - curr @@ -94,7 +94,7 @@ struct _SequentialRange(Sized, ReversibleRange, _IntIterable): return self @always_inline - fn __next__(inout self) -> Int: + fn __next__(mut self) -> Int: var start = self.start self.start += 1 return start @@ -134,7 +134,7 @@ struct _StridedRangeIterator(Sized): return 0 @always_inline - fn __next__(inout self) -> Int: + fn __next__(mut self) -> Int: var result = self.start self.start += self.step return result @@ -162,7 +162,7 @@ struct _StridedRange(Sized, ReversibleRange, _StridedIterable): return _StridedRangeIterator(self.start, self.end, self.step) @always_inline - fn __next__(inout self) -> Int: + fn __next__(mut self) -> Int: var result = self.start self.start += self.step return result @@ -337,7 +337,7 @@ struct _UIntZeroStartingRange(UIntSized): return self @always_inline - fn __next__(inout self) -> UInt: + fn __next__(mut self) -> UInt: var curr = self.curr self.curr -= 1 return self.end - curr @@ -368,7 +368,7 @@ struct _UIntStridedRangeIterator(UIntSized): return select(self.start < self.end, self.end - self.start, 0) @always_inline - fn __next__(inout self) -> UInt: + fn __next__(mut self) -> UInt: var result = self.start self.start += self.step return result @@ -406,7 +406,7 @@ struct _UIntStridedRange(UIntSized, _UIntStridedIterable): return _UIntStridedRangeIterator(self.start, self.end, self.step) @always_inline - fn __next__(inout self) -> UInt: + fn __next__(mut self) -> UInt: if self.start >= self.end: return self.end var result = self.start @@ -478,7 +478,7 @@ struct _ZeroStartingScalarRange[type: DType]: return self @always_inline - fn __next__(inout self) -> Scalar[type]: + fn __next__(mut self) -> Scalar[type]: var curr = self.curr self.curr -= 1 return self.end - curr @@ -515,7 +515,7 @@ struct _SequentialScalarRange[type: DType]: return self @always_inline - fn __next__(inout self) -> Scalar[type]: + fn __next__(mut self) -> Scalar[type]: var start = self.start self.start += 1 return start @@ -557,7 +557,7 @@ struct _StridedScalarRangeIterator[type: DType]: return self.end < self.start @always_inline - fn __next__(inout self) -> Scalar[type]: + fn __next__(mut self) -> Scalar[type]: var result = self.start self.start += self.step return result diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 332220f11f..a70d660217 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -354,7 +354,7 @@ struct SIMD[type: DType, size: Int]( @always_inline("nodebug") @implicit fn __init__( - inout self, + mut self, value: __mlir_type[`!pop.simd<`, size.value, `, `, type.value, `>`], ): """Initializes the SIMD vector with the underlying mlir value. @@ -588,7 +588,7 @@ struct SIMD[type: DType, size: Int]( fn __init__[ int_type: DType, // - ](inout self, *, from_bits: SIMD[int_type, size]): + ](mut self, *, from_bits: SIMD[int_type, size]): """Initializes the SIMD vector from the bits of an integral SIMD vector. Parameters: @@ -619,7 +619,7 @@ struct SIMD[type: DType, size: Int]( ](self.value, index(idx).value) @always_inline("nodebug") - fn __setitem__(inout self, idx: Int, val: Scalar[type]): + fn __setitem__(mut self, idx: Int, val: Scalar[type]): """Sets an element in the vector. Args: @@ -1076,7 +1076,7 @@ struct SIMD[type: DType, size: Int]( # ===------------------------------------------------------------------=== # @always_inline("nodebug") - fn __iadd__(inout self, rhs: Self): + fn __iadd__(mut self, rhs: Self): """Performs in-place addition. The vector is mutated where each element at position `i` is computed as @@ -1089,7 +1089,7 @@ struct SIMD[type: DType, size: Int]( self = self + rhs @always_inline("nodebug") - fn __isub__(inout self, rhs: Self): + fn __isub__(mut self, rhs: Self): """Performs in-place subtraction. The vector is mutated where each element at position `i` is computed as @@ -1102,7 +1102,7 @@ struct SIMD[type: DType, size: Int]( self = self - rhs @always_inline("nodebug") - fn __imul__(inout self, rhs: Self): + fn __imul__(mut self, rhs: Self): """Performs in-place multiplication. The vector is mutated where each element at position `i` is computed as @@ -1115,7 +1115,7 @@ struct SIMD[type: DType, size: Int]( self = self * rhs @always_inline("nodebug") - fn __itruediv__(inout self, rhs: Self): + fn __itruediv__(mut self, rhs: Self): """In-place true divide operator. The vector is mutated where each element at position `i` is computed as @@ -1128,7 +1128,7 @@ struct SIMD[type: DType, size: Int]( self = self / rhs @always_inline("nodebug") - fn __ifloordiv__(inout self, rhs: Self): + fn __ifloordiv__(mut self, rhs: Self): """In-place flood div operator. The vector is mutated where each element at position `i` is computed as @@ -1141,7 +1141,7 @@ struct SIMD[type: DType, size: Int]( self = self // rhs @always_inline("nodebug") - fn __imod__(inout self, rhs: Self): + fn __imod__(mut self, rhs: Self): """In-place mod operator. The vector is mutated where each element at position `i` is computed as @@ -1154,7 +1154,7 @@ struct SIMD[type: DType, size: Int]( self = self.__mod__(rhs) @always_inline("nodebug") - fn __ipow__(inout self, rhs: Int): + fn __ipow__(mut self, rhs: Int): """In-place pow operator. The vector is mutated where each element at position `i` is computed as @@ -1167,7 +1167,7 @@ struct SIMD[type: DType, size: Int]( self = self.__pow__(rhs) @always_inline("nodebug") - fn __iand__(inout self, rhs: Self): + fn __iand__(mut self, rhs: Self): """Computes `self & rhs` and save the result in `self`. Constraints: @@ -1183,7 +1183,7 @@ struct SIMD[type: DType, size: Int]( self = self & rhs @always_inline("nodebug") - fn __ixor__(inout self, rhs: Self): + fn __ixor__(mut self, rhs: Self): """Computes `self ^ rhs` and save the result in `self`. Constraints: @@ -1199,7 +1199,7 @@ struct SIMD[type: DType, size: Int]( self = self ^ rhs @always_inline("nodebug") - fn __ior__(inout self, rhs: Self): + fn __ior__(mut self, rhs: Self): """Computes `self | rhs` and save the result in `self`. Constraints: @@ -1215,7 +1215,7 @@ struct SIMD[type: DType, size: Int]( self = self | rhs @always_inline("nodebug") - fn __ilshift__(inout self, rhs: Self): + fn __ilshift__(mut self, rhs: Self): """Computes `self << rhs` and save the result in `self`. Constraints: @@ -1228,7 +1228,7 @@ struct SIMD[type: DType, size: Int]( self = self << rhs @always_inline("nodebug") - fn __irshift__(inout self, rhs: Self): + fn __irshift__(mut self, rhs: Self): """Computes `self >> rhs` and save the result in `self`. Constraints: @@ -1643,7 +1643,7 @@ struct SIMD[type: DType, size: Int]( """ return _hash_simd(self) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with this SIMD value. Parameters: @@ -1782,7 +1782,7 @@ struct SIMD[type: DType, size: Int]( ](self.value) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this SIMD value to the provided Writer. @@ -3422,7 +3422,7 @@ fn _floor(x: SIMD) -> __type_of(x): fn _write_scalar[ dtype: DType, W: Writer, //, -](inout writer: W, value: Scalar[dtype]): +](mut writer: W, value: Scalar[dtype]): @parameter if dtype == DType.bool: if value: diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 367047a85c..554ddeddfd 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -123,7 +123,7 @@ struct StringLiteral( return __mlir_op.`pop.string.concat`(self.value, rhs.value) @always_inline("nodebug") - fn __iadd__(inout self, rhs: StringLiteral): + fn __iadd__(mut self, rhs: StringLiteral): """Concatenate a string literal to an existing one. Can only be evaluated at compile time using the `alias` keyword, which will write the result into the binary. @@ -388,7 +388,7 @@ struct StringLiteral( """ return hash(self.unsafe_ptr(), len(self)) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with the underlying bytes. Parameters: @@ -551,7 +551,7 @@ struct StringLiteral( """ return _FormatCurlyEntry.format(self, args) - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this string literal to the provided Writer. diff --git a/stdlib/src/builtin/swap.mojo b/stdlib/src/builtin/swap.mojo index fed7502fd1..549e71e28b 100644 --- a/stdlib/src/builtin/swap.mojo +++ b/stdlib/src/builtin/swap.mojo @@ -17,7 +17,7 @@ These are Mojo built-ins, so you don't need to import them. @always_inline -fn swap[T: Movable](inout lhs: T, inout rhs: T): +fn swap[T: Movable](mut lhs: T, mut rhs: T): """Swaps the two given arguments. Parameters: diff --git a/stdlib/src/builtin/tuple.mojo b/stdlib/src/builtin/tuple.mojo index 6d7f45a029..50fdf9f708 100644 --- a/stdlib/src/builtin/tuple.mojo +++ b/stdlib/src/builtin/tuple.mojo @@ -59,7 +59,7 @@ struct Tuple[*element_types: CollectionElement](Sized, CollectionElement): @always_inline("nodebug") fn __init__( - inout self, + mut self, *, owned storage: VariadicPack[_, CollectionElement, *element_types], ): diff --git a/stdlib/src/builtin/uint.mojo b/stdlib/src/builtin/uint.mojo index cb3de1bcb5..dad8ed6167 100644 --- a/stdlib/src/builtin/uint.mojo +++ b/stdlib/src/builtin/uint.mojo @@ -130,7 +130,7 @@ struct UInt(IntLike, _HashableWithHasher): return String.write(self) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats this integer to the provided Writer. Parameters: @@ -168,7 +168,7 @@ struct UInt(IntLike, _HashableWithHasher): # TODO(MOCO-636): switch to DType.index return _hash_simd(Scalar[DType.uint64](self)) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with this uint value. Parameters: @@ -403,7 +403,7 @@ struct UInt(IntLike, _HashableWithHasher): # ===----------------------------------------------------------------------===# @always_inline("nodebug") - fn __iadd__(inout self, rhs: UInt): + fn __iadd__(mut self, rhs: UInt): """Compute `self + rhs` and save the result in self. Args: @@ -412,7 +412,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self + rhs @always_inline("nodebug") - fn __isub__(inout self, rhs: UInt): + fn __isub__(mut self, rhs: UInt): """Compute `self - rhs` and save the result in self. Args: @@ -421,7 +421,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self - rhs @always_inline("nodebug") - fn __imul__(inout self, rhs: UInt): + fn __imul__(mut self, rhs: UInt): """Compute self*rhs and save the result in self. Args: @@ -429,7 +429,7 @@ struct UInt(IntLike, _HashableWithHasher): """ self = self * rhs - fn __itruediv__(inout self, rhs: UInt): + fn __itruediv__(mut self, rhs: UInt): """Compute `self / rhs`, convert to int, and save the result in self. Since `floor(self / rhs)` is equivalent to `self // rhs`, this yields @@ -441,7 +441,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self // rhs @always_inline("nodebug") - fn __ifloordiv__(inout self, rhs: UInt): + fn __ifloordiv__(mut self, rhs: UInt): """Compute `self // rhs` and save the result in self. Args: @@ -449,7 +449,7 @@ struct UInt(IntLike, _HashableWithHasher): """ self = self // rhs - fn __imod__(inout self, rhs: UInt): + fn __imod__(mut self, rhs: UInt): """Compute `self % rhs` and save the result in self. Args: @@ -458,7 +458,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self % rhs @always_inline("nodebug") - fn __ipow__(inout self, rhs: UInt): + fn __ipow__(mut self, rhs: UInt): """Compute `pow(self, rhs)` and save the result in self. Args: @@ -467,7 +467,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self**rhs @always_inline("nodebug") - fn __ilshift__(inout self, rhs: UInt): + fn __ilshift__(mut self, rhs: UInt): """Compute `self << rhs` and save the result in self. Args: @@ -476,7 +476,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self << rhs @always_inline("nodebug") - fn __irshift__(inout self, rhs: UInt): + fn __irshift__(mut self, rhs: UInt): """Compute `self >> rhs` and save the result in self. Args: @@ -485,7 +485,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self >> rhs @always_inline("nodebug") - fn __iand__(inout self, rhs: UInt): + fn __iand__(mut self, rhs: UInt): """Compute `self & rhs` and save the result in self. Args: @@ -494,7 +494,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self & rhs @always_inline("nodebug") - fn __ixor__(inout self, rhs: UInt): + fn __ixor__(mut self, rhs: UInt): """Compute `self ^ rhs` and save the result in self. Args: @@ -503,7 +503,7 @@ struct UInt(IntLike, _HashableWithHasher): self = self ^ rhs @always_inline("nodebug") - fn __ior__(inout self, rhs: UInt): + fn __ior__(mut self, rhs: UInt): """Compute self|rhs and save the result in self. Args: diff --git a/stdlib/src/builtin/value.mojo b/stdlib/src/builtin/value.mojo index fab16a7b44..3dc291c522 100644 --- a/stdlib/src/builtin/value.mojo +++ b/stdlib/src/builtin/value.mojo @@ -109,7 +109,7 @@ trait ExplicitlyCopyable: initializer is called intentionally by the programmer. An explicit copy initializer is just a normal `__init__` method that takes - a `borrowed` argument of `Self`. + a `read-only` argument of `Self`. Example implementing the `ExplicitlyCopyable` trait on `Foo` which requires the `__init__(.., Self)` method: diff --git a/stdlib/src/collections/counter.mojo b/stdlib/src/collections/counter.mojo index a4a2ac1df3..55baedf606 100644 --- a/stdlib/src/collections/counter.mojo +++ b/stdlib/src/collections/counter.mojo @@ -114,7 +114,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): """ return self.get(key, 0) - fn __setitem__(inout self, value: V, count: Int): + fn __setitem__(mut self, value: V, count: Int): """Set a value in the keyword Counter by key. Args: @@ -276,7 +276,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): return +result^ # Remove zero and negative counts - fn __iadd__(inout self, other: Self): + fn __iadd__(mut self, other: Self): """Add counts from another Counter to this Counter. Args: @@ -301,7 +301,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): return +result^ # Remove zero and negative counts - fn __isub__(inout self, other: Self): + fn __isub__(mut self, other: Self): """Subtract counts from another Counter from this Counter. Args: @@ -329,7 +329,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): return result^ - fn __iand__(inout self, other: Self): + fn __iand__(mut self, other: Self): """Intersection: keep common elements with the minimum count. Args: @@ -370,7 +370,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): return result^ - fn __ior__(inout self, other: Self): + fn __ior__(mut self, other: Self): """Union: keep all elements with the maximum count. Args: @@ -382,7 +382,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): if newcount > 0: self[key] = newcount - fn _keep_positive(inout self): + fn _keep_positive(mut self): """Remove zero and negative counts from the Counter.""" for key_ref in self.keys(): var key = key_ref[] @@ -451,7 +451,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): """ return self._data.get(value, default) - fn pop(inout self, value: V) raises -> Int: + fn pop(mut self, value: V) raises -> Int: """Remove a value from the Counter by value. Args: @@ -465,7 +465,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): """ return self._data.pop(value) - fn pop(inout self, value: V, owned default: Int) raises -> Int: + fn pop(mut self, value: V, owned default: Int) raises -> Int: """Remove a value from the Counter by value. Args: @@ -507,11 +507,11 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): """ return self._data.items() - fn clear(inout self): + fn clear(mut self): """Remove all elements from the Counter.""" self._data.clear() - fn popitem(inout self) raises -> CountTuple[V]: + fn popitem(mut self) raises -> CountTuple[V]: """Remove and return an arbitrary (key, value) pair from the Counter. Returns: @@ -573,7 +573,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): elements.append(item.key) return elements - fn update(inout self, other: Self): + fn update(mut self, other: Self): """Update the Counter, like `dict.update()` but add counts instead of replacing them. @@ -584,7 +584,7 @@ struct Counter[V: KeyElement](Sized, CollectionElement, Boolable): var item = item_ref[] self._data[item.key] = self._data.get(item.key, 0) + item.value - fn subtract(inout self, other: Self): + fn subtract(mut self, other: Self): """Subtract count. Both inputs and outputs may be zero or negative. Args: diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index 37ec9d97bf..cdaf52332d 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -142,7 +142,7 @@ struct Deque[ElementType: CollectionElement]( self = Self(variadic_list=values^) fn __init__( - inout self, *, owned variadic_list: VariadicListMem[ElementType, _] + mut self, *, owned variadic_list: VariadicListMem[ElementType, _] ): """Constructs a deque from the given values. @@ -226,7 +226,7 @@ struct Deque[ElementType: CollectionElement]( new.append(element[]) return new^ - fn __iadd__(inout self, other: Self): + fn __iadd__(mut self, other: Self): """Appends the elements of other deque into self. Args: @@ -257,7 +257,7 @@ struct Deque[ElementType: CollectionElement]( new.append(element[]) return new^ - fn __imul__(inout self, n: Int): + fn __imul__(mut self, n: Int): """Concatenates self `n` times in place. Args: @@ -410,7 +410,7 @@ struct Deque[ElementType: CollectionElement]( fn write_to[ RepresentableElementType: RepresentableCollectionElement, WriterType: Writer, //, - ](self: Deque[RepresentableElementType], inout writer: WriterType): + ](self: Deque[RepresentableElementType], mut writer: WriterType): """Writes `my_deque.__str__()` to a `Writer`. Parameters: @@ -491,7 +491,7 @@ struct Deque[ElementType: CollectionElement]( # Methods # ===-------------------------------------------------------------------===# - fn append(inout self, owned value: ElementType): + fn append(mut self, owned value: ElementType): """Appends a value to the right side of the deque. Args: @@ -508,7 +508,7 @@ struct Deque[ElementType: CollectionElement]( if self._head == self._tail: self._realloc(self._capacity << 1) - fn appendleft(inout self, owned value: ElementType): + fn appendleft(mut self, owned value: ElementType): """Appends a value to the left side of the deque. Args: @@ -525,7 +525,7 @@ struct Deque[ElementType: CollectionElement]( if self._head == self._tail: self._realloc(self._capacity << 1) - fn clear(inout self): + fn clear(mut self): """Removes all elements from the deque leaving it with length 0. Resets the underlying storage capacity to `_min_capacity`. @@ -561,7 +561,7 @@ struct Deque[ElementType: CollectionElement]( count += 1 return count - fn extend(inout self, owned values: List[ElementType]): + fn extend(mut self, owned values: List[ElementType]): """Extends the right side of the deque by consuming elements of the list argument. Args: @@ -593,7 +593,7 @@ struct Deque[ElementType: CollectionElement]( (src + i).move_pointee_into(self._data + self._tail) self._tail = self._physical_index(self._tail + 1) - fn extendleft(inout self, owned values: List[ElementType]): + fn extendleft(mut self, owned values: List[ElementType]): """Extends the left side of the deque by consuming elements from the list argument. Acts as series of left appends resulting in reversed order of elements in the list argument. @@ -676,7 +676,7 @@ struct Deque[ElementType: CollectionElement]( return idx raise "ValueError: Given element is not in deque" - fn insert(inout self, idx: Int, owned value: ElementType) raises: + fn insert(mut self, idx: Int, owned value: ElementType) raises: """Inserts the `value` into the deque at position `idx`. Args: @@ -723,10 +723,7 @@ struct Deque[ElementType: CollectionElement]( fn remove[ EqualityElementType: EqualityComparableCollectionElement, // - ]( - inout self: Deque[EqualityElementType], - value: EqualityElementType, - ) raises: + ](mut self: Deque[EqualityElementType], value: EqualityElementType,) raises: """Removes the first occurrence of the `value`. Parameters: @@ -797,7 +794,7 @@ struct Deque[ElementType: CollectionElement]( return (self._data + self._head)[] - fn pop(inout self) raises -> ElementType as element: + fn pop(mut self) raises -> ElementType as element: """Removes and returns the element from the right side of the deque. Returns: @@ -821,7 +818,7 @@ struct Deque[ElementType: CollectionElement]( return - fn popleft(inout self) raises -> ElementType as element: + fn popleft(mut self) raises -> ElementType as element: """Removes and returns the element from the left side of the deque. Returns: @@ -845,7 +842,7 @@ struct Deque[ElementType: CollectionElement]( return - fn reverse(inout self): + fn reverse(mut self): """Reverses the elements of the deque in-place.""" last = self._head + len(self) - 1 for i in range(len(self) // 2): @@ -855,7 +852,7 @@ struct Deque[ElementType: CollectionElement]( (self._data + src).move_pointee_into(self._data + dst) (self._data + src).init_pointee_move(tmp^) - fn rotate(inout self, n: Int = 1): + fn rotate(mut self, n: Int = 1): """Rotates the deque by `n` steps. If `n` is positive, rotates to the right. @@ -932,7 +929,7 @@ struct Deque[ElementType: CollectionElement]( """ return logical_index & (self._capacity - 1) - fn _prepare_for_new_elements(inout self, n_total: Int, n_retain: Int): + fn _prepare_for_new_elements(mut self, n_total: Int, n_retain: Int): """Prepares the deque’s internal buffer for adding new elements by reallocating memory and retaining the specified number of existing elements. @@ -958,7 +955,7 @@ struct Deque[ElementType: CollectionElement]( self._head = 0 self._tail = n_retain - fn _realloc(inout self, new_capacity: Int): + fn _realloc(mut self, new_capacity: Int): """Relocates data to a new storage buffer. Args: @@ -1018,7 +1015,7 @@ struct _DequeIter[ fn __iter__(self) -> Self: return self - fn __next__(inout self) -> Pointer[ElementType, deque_lifetime]: + fn __next__(mut self) -> Pointer[ElementType, deque_lifetime]: @parameter if forward: self.index += 1 diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index 0e545e8a87..d35229a17e 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -79,7 +79,7 @@ struct _DictEntryIter[ var src: Pointer[Dict[K, V], dict_origin] fn __init__( - inout self, index: Int, seen: Int, ref [dict_origin]dict: Dict[K, V] + mut self, index: Int, seen: Int, ref [dict_origin]dict: Dict[K, V] ): self.index = index self.seen = seen @@ -90,7 +90,7 @@ struct _DictEntryIter[ @always_inline fn __next__( - inout self, + mut self, ) -> Pointer[DictEntry[K, V], __origin_of(self.src[]._entries[0].value())]: while True: var opt_entry_ref = Pointer.address_of( @@ -141,7 +141,7 @@ struct _DictKeyIter[ return self fn __next__( - inout self, + mut self, ) -> Pointer[K, __origin_of(self.iter.__next__()[].key)]: return Pointer.address_of(self.iter.__next__()[].key) @@ -187,7 +187,7 @@ struct _DictValueIter[ ) ) - fn __next__(inout self) -> Self.ref_type: + fn __next__(mut self) -> Self.ref_type: var entry_ref = self.iter.__next__() # Cast through a pointer to grant additional mutability because # _DictEntryIter.next erases it. @@ -331,7 +331,7 @@ struct _DictIndex: var data = self.data.bitcast[Int64]() return int(data.load(slot & (reserved - 1))) - fn set_index(inout self, reserved: Int, slot: Int, value: Int): + fn set_index(mut self, reserved: Int, slot: Int, value: Int): if reserved <= 128: var data = self.data.bitcast[Int8]() return data.store(slot & (reserved - 1), value) @@ -599,7 +599,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( """ return self._find_ref(key) - fn __setitem__(inout self, owned key: K, owned value: V): + fn __setitem__(mut self, owned key: K, owned value: V): """Set a value in the dictionary by key. Args: @@ -650,7 +650,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( result.update(other) return result^ - fn __ior__(inout self, other: Self): + fn __ior__(mut self, other: Self): """Merge self with other in place. Args: @@ -805,7 +805,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( """ return self.find(key).or_else(default) - fn pop(inout self, key: K, owned default: V) -> V: + fn pop(mut self, key: K, owned default: V) -> V: """Remove a value from the dictionary by key. Args: @@ -822,7 +822,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( except: return default - fn pop(inout self, key: K) raises -> V: + fn pop(mut self, key: K) raises -> V: """Remove a value from the dictionary by key. Args: @@ -850,7 +850,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( return entry_value^.reap_value() raise "KeyError" - fn popitem(inout self) raises -> DictEntry[K, V]: + fn popitem(mut self) raises -> DictEntry[K, V]: """Remove and return a (key, value) pair from the dictionary. Pairs are returned in LIFO order. popitem() is useful to destructively iterate over a dictionary, as often used in set algorithms. If the dictionary is empty, calling popitem() raises a KeyError. @@ -916,7 +916,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( """ return _DictEntryIter(0, 0, self) - fn update(inout self, other: Self, /): + fn update(mut self, other: Self, /): """Update the dictionary with the key/value pairs from other, overwriting existing keys. The argument must be positional only. @@ -926,7 +926,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( for entry in other.items(): self[entry[].key] = entry[].value - fn clear(inout self): + fn clear(mut self): """Remove all elements from the dictionary.""" self.size = 0 self._n_entries = 0 @@ -934,7 +934,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( self._index = _DictIndex(self._reserved()) fn setdefault( - inout self, key: K, owned default: V + mut self, key: K, owned default: V ) raises -> ref [self._find_ref(key)] V: """Get a value from the dictionary by key, or set it to a default if it doesn't exist. @@ -960,12 +960,12 @@ struct Dict[K: KeyElement, V: CollectionElement]( entries.append(None) return entries - fn _insert(inout self, owned key: K, owned value: V): + fn _insert(mut self, owned key: K, owned value: V): self._insert(DictEntry[K, V](key^, value^)) fn _insert[ safe_context: Bool = False - ](inout self, owned entry: DictEntry[K, V]): + ](mut self, owned entry: DictEntry[K, V]): @parameter if not safe_context: self._maybe_resize() @@ -983,10 +983,10 @@ struct Dict[K: KeyElement, V: CollectionElement]( fn _get_index(self, slot: Int) -> Int: return self._index.get_index(self._reserved(), slot) - fn _set_index(inout self, slot: Int, index: Int): + fn _set_index(mut self, slot: Int, index: Int): return self._index.set_index(self._reserved(), slot, index) - fn _next_index_slot(self, inout slot: Int, inout perturb: UInt64): + fn _next_index_slot(self, mut slot: Int, mut perturb: UInt64): alias PERTURB_SHIFT = 5 perturb >>= PERTURB_SHIFT slot = ((5 * slot) + int(perturb + 1)) & (self._reserved() - 1) @@ -1023,7 +1023,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( fn _over_compact_factor(self) -> Bool: return 4 * self._n_entries > 3 * self._reserved() - fn _maybe_resize(inout self): + fn _maybe_resize(mut self): if not self._over_load_factor(): if self._over_compact_factor(): self._compact() @@ -1040,7 +1040,7 @@ struct Dict[K: KeyElement, V: CollectionElement]( if entry: self._insert[safe_context=True](entry.unsafe_take()) - fn _compact(inout self): + fn _compact(mut self): self._index = _DictIndex(self._reserved()) var right = 0 for left in range(self.size): @@ -1129,7 +1129,7 @@ struct OwnedKwargsDict[V: CollectionElement]( return self._dict[key] @always_inline - fn __setitem__(inout self, key: Self.key_type, value: V): + fn __setitem__(mut self, key: Self.key_type, value: V): """Set a value in the keyword dictionary by key. Args: @@ -1182,7 +1182,7 @@ struct OwnedKwargsDict[V: CollectionElement]( return self._dict.find(key) @always_inline - fn pop(inout self, key: self.key_type, owned default: V) -> V: + fn pop(mut self, key: self.key_type, owned default: V) -> V: """Remove a value from the dictionary by key. Args: @@ -1197,7 +1197,7 @@ struct OwnedKwargsDict[V: CollectionElement]( return self._dict.pop(key, default^) @always_inline - fn pop(inout self, key: self.key_type) raises -> V: + fn pop(mut self, key: self.key_type) raises -> V: """Remove a value from the dictionary by key. Args: @@ -1270,9 +1270,9 @@ struct OwnedKwargsDict[V: CollectionElement]( return _DictEntryIter(0, 0, self._dict) @always_inline - fn _insert(inout self, owned key: Self.key_type, owned value: V): + fn _insert(mut self, owned key: Self.key_type, owned value: V): self._dict._insert(key^, value^) @always_inline - fn _insert(inout self, key: StringLiteral, owned value: V): + fn _insert(mut self, key: StringLiteral, owned value: V): self._insert(String(key), value^) diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index 9112e51818..bb8809612d 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -112,7 +112,7 @@ struct InlineArray[ ]() fn __init__( - inout self, + mut self, *, owned unsafe_assume_initialized: InlineArray[ UnsafeMaybeUninitialized[Self.ElementType], Self.size @@ -171,7 +171,7 @@ struct InlineArray[ @always_inline fn __init__( - inout self, + mut self, *, owned storage: VariadicListMem[Self.ElementType, _], ): diff --git a/stdlib/src/collections/inline_list.mojo b/stdlib/src/collections/inline_list.mojo index 01486e07ed..516be41287 100644 --- a/stdlib/src/collections/inline_list.mojo +++ b/stdlib/src/collections/inline_list.mojo @@ -54,7 +54,7 @@ struct _InlineListIter[ return self fn __next__( - inout self, + mut self, ) -> Pointer[T, __origin_of(self.src[][0])]: @parameter if forward: @@ -243,7 +243,7 @@ struct InlineList[ElementType: CollectionElementNew, capacity: Int = 16](Sized): count += int(rebind[C](e[]) == value) return count - fn append(inout self, owned value: ElementType): + fn append(mut self, owned value: ElementType): """Appends a value to the list. Args: diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index b3442b1228..19b477a47e 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -63,7 +63,7 @@ struct _ListIter[ return self fn __next__( - inout self, + mut self, ) -> Pointer[T, list_origin]: @parameter if forward: @@ -178,9 +178,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( for value in span: self.append(value[]) - fn __init__( - inout self, *, ptr: UnsafePointer[T], length: Int, capacity: Int - ): + fn __init__(mut self, *, ptr: UnsafePointer[T], length: Int, capacity: Int): """Constructs a list from a pointer, its length, and its capacity. Args: @@ -320,7 +318,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( result.__mul(x) return result^ - fn __imul__(inout self, x: Int): + fn __imul__(mut self, x: Int): """Multiplies the list by x in place. Args: @@ -341,7 +339,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( result.extend(other^) return result^ - fn __iadd__(inout self, owned other: Self): + fn __iadd__(mut self, owned other: Self): """Appends the elements of other into self. Args: @@ -420,7 +418,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( @no_inline fn write_to[ W: Writer, U: RepresentableCollectionElement, // - ](self: List[U, *_], inout writer: W): + ](self: List[U, *_], mut writer: W): """Write `my_list.__str__()` to a `Writer`. Parameters: @@ -477,7 +475,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( """ return len(self) * sizeof[T]() - fn _realloc(inout self, new_capacity: Int): + fn _realloc(mut self, new_capacity: Int): var new_data = UnsafePointer[T].alloc(new_capacity) _move_pointee_into_many_elements[hint_trivial_type]( @@ -491,7 +489,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( self.data = new_data self.capacity = new_capacity - fn append(inout self, owned value: T): + fn append(mut self, owned value: T): """Appends a value to this list. Args: @@ -502,7 +500,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( (self.data + self.size).init_pointee_move(value^) self.size += 1 - fn insert(inout self, i: Int, owned value: T): + fn insert(mut self, i: Int, owned value: T): """Inserts a value to the list at the given index. `a.insert(len(a), value)` is equivalent to `a.append(value)`. @@ -531,7 +529,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( earlier_idx -= 1 later_idx -= 1 - fn __mul(inout self, x: Int): + fn __mul(mut self, x: Int): """Appends the original elements of this list x-1 times. ```mojo @@ -550,7 +548,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( for i in range(x - 1): self.extend(orig) - fn extend(inout self, owned other: List[T, *_]): + fn extend(mut self, owned other: List[T, *_]): """Extends this list by consuming the elements of `other`. Args: @@ -590,7 +588,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # list. self.size = final_size - fn pop(inout self, i: Int = -1) -> T: + fn pop(mut self, i: Int = -1) -> T: """Pops a value from the list at the given index. Args: @@ -614,7 +612,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( self._realloc(self.capacity // 2) return ret_val^ - fn reserve(inout self, new_capacity: Int): + fn reserve(mut self, new_capacity: Int): """Reserves the requested capacity. If the current capacity is greater or equal, this is a no-op. @@ -627,7 +625,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( return self._realloc(new_capacity) - fn resize(inout self, new_size: Int, value: T): + fn resize(mut self, new_size: Int, value: T): """Resizes the list to the given new size. If the new size is smaller than the current one, elements at the end @@ -646,7 +644,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( (self.data + i).init_pointee_copy(value) self.size = new_size - fn resize(inout self, new_size: Int): + fn resize(mut self, new_size: Int): """Resizes the list to the given new size. With no new value provided, the new size must be smaller than or equal @@ -667,7 +665,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( self.size = new_size self.reserve(new_size) - fn reverse(inout self): + fn reverse(mut self): """Reverses the elements of the list.""" var earlier_idx = 0 @@ -744,13 +742,13 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( return i raise "ValueError: Given element is not in list" - fn clear(inout self): + fn clear(mut self): """Clears the elements in the list.""" for i in range(self.size): (self.data + i).destroy_pointee() self.size = 0 - fn steal_data(inout self) -> UnsafePointer[T]: + fn steal_data(mut self) -> UnsafePointer[T]: """Take ownership of the underlying pointer from the list. Returns: @@ -840,7 +838,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( return (self.data + idx)[] @always_inline - fn unsafe_set(inout self, idx: Int, owned value: T): + fn unsafe_set(mut self, idx: Int, owned value: T): """Write a value to a given location without checking index bounds. Users should consider using `my_list[idx] = value` instead of this method as it @@ -897,7 +895,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( count += 1 return count - fn swap_elements(inout self, elt_idx_1: Int, elt_idx_2: Int): + fn swap_elements(mut self, elt_idx_1: Int, elt_idx_2: Int): """Swaps elements at the specified indexes if they are different. ```mojo diff --git a/stdlib/src/collections/optional.mojo b/stdlib/src/collections/optional.mojo index eb019dd463..95c78a9706 100644 --- a/stdlib/src/collections/optional.mojo +++ b/stdlib/src/collections/optional.mojo @@ -281,7 +281,7 @@ struct Optional[T: CollectionElement]( fn write_to[ W: Writer, U: RepresentableCollectionElement, // - ](self: Optional[U], inout writer: W): + ](self: Optional[U], mut writer: W): """Write Optional string representation to a `Writer`. Parameters: @@ -333,7 +333,7 @@ struct Optional[T: CollectionElement]( debug_assert(self.__bool__(), ".value() on empty Optional") return self._value.unsafe_get[T]() - fn take(inout self) -> T: + fn take(mut self) -> T: """Move the value out of the Optional. The caller takes ownership over the new value, which is moved @@ -351,7 +351,7 @@ struct Optional[T: CollectionElement]( abort(".take() on empty Optional") return self.unsafe_take() - fn unsafe_take(inout self) -> T: + fn unsafe_take(mut self) -> T: """Unsafely move the value out of the Optional. The caller takes ownership over the new value, which is moved diff --git a/stdlib/src/collections/set.mojo b/stdlib/src/collections/set.mojo index 500e4c73b2..9c017dbfe8 100644 --- a/stdlib/src/collections/set.mojo +++ b/stdlib/src/collections/set.mojo @@ -149,7 +149,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ return self.intersection(other) - fn __iand__(inout self, other: Self): + fn __iand__(mut self, other: Self): """In-place set intersection. Updates the set to contain only the elements which are already in @@ -172,7 +172,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ return self.union(other) - fn __ior__(inout self, other: Self): + fn __ior__(mut self, other: Self): """In-place set union. Updates the set to contain all elements in the `other` set @@ -195,7 +195,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ return self.difference(other) - fn __isub__(inout self, other: Self): + fn __isub__(mut self, other: Self): """In-place set subtraction. Updates the set to remove any elements from the `other` set. @@ -260,7 +260,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ return self.symmetric_difference(other) - fn __ixor__(inout self, other: Self): + fn __ixor__(mut self, other: Self): """Overloads the ^= operator. Works like as `symmetric_difference_update` method. Updates the set with the symmetric difference of itself and another set. @@ -334,7 +334,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): fn write_to[ W: Writer, U: RepresentableKeyElement, - ](self: Set[U], inout writer: W): + ](self: Set[U], mut writer: W): """Write Set string representation to a `Writer`. Parameters: @@ -366,7 +366,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): # here we rely on Set being a trivial wrapper of a Dict return _DictKeyIter(_DictEntryIter(0, 0, self._data)) - fn add(inout self, t: T): + fn add(mut self, t: T): """Add an element to the set. Args: @@ -374,7 +374,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ self._data[t] = None - fn remove(inout self, t: T) raises: + fn remove(mut self, t: T) raises: """Remove an element from the set. Args: @@ -385,7 +385,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ self._data.pop(t) - fn pop(inout self) raises -> T: + fn pop(mut self) raises -> T: """Remove any one item from the set, and return it. As an implementation detail this will remove the first item @@ -454,7 +454,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): result.add(e[]) return result^ - fn update(inout self, other: Self): + fn update(mut self, other: Self): """In-place set update. Updates the set to contain all elements in the `other` set @@ -466,7 +466,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): for e in other: self.add(e[]) - fn intersection_update(inout self, other: Self): + fn intersection_update(mut self, other: Self): """In-place set intersection update. Updates the set by retaining only elements found in both this set and the `other` set, @@ -479,7 +479,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): # careful about concurrent iteration + mutation self.difference_update(self - other) - fn difference_update(inout self, other: Self): + fn difference_update(mut self, other: Self): """In-place set subtraction. Updates the set by removing all elements found in the `other` set, @@ -566,7 +566,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): return result^ - fn symmetric_difference_update(inout self, other: Self): + fn symmetric_difference_update(mut self, other: Self): """Updates the set with the symmetric difference of itself and another set. Args: @@ -574,7 +574,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): """ self = self.symmetric_difference(other) - fn discard(inout self, value: T): + fn discard(mut self, value: T): """Remove a value from the set if it exists. Pass otherwise. Args: @@ -585,7 +585,7 @@ struct Set[T: KeyElement](Sized, Comparable, Hashable, Boolable): except: pass - fn clear(inout self): + fn clear(mut self): """Removes all elements from the set. This method modifies the set in-place, removing all of its elements. diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index 1b38236b10..d75d2098cd 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -904,7 +904,7 @@ struct String( # Factory dunders # ===------------------------------------------------------------------=== # - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """Write a byte span to this String. Args: @@ -913,7 +913,7 @@ struct String( """ self._iadd[False](bytes) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: @@ -1267,7 +1267,7 @@ struct String( """ return Self._add[True](other.as_bytes(), self.as_bytes()) - fn _iadd[has_null: Bool](inout self, other: Span[Byte]): + fn _iadd[has_null: Bool](mut self, other: Span[Byte]): var s_len = self.byte_length() var o_len = len(other) var o_ptr = other.unsafe_ptr() @@ -1288,7 +1288,7 @@ struct String( s_ptr[sum_len] = 0 @always_inline - fn __iadd__(inout self, other: String): + fn __iadd__(mut self, other: String): """Appends another string to this string. Args: @@ -1297,7 +1297,7 @@ struct String( self._iadd[True](other.as_bytes()) @always_inline - fn __iadd__(inout self, other: StringLiteral): + fn __iadd__(mut self, other: StringLiteral): """Appends another string literal to this string. Args: @@ -1306,7 +1306,7 @@ struct String( self._iadd[False](other.as_bytes()) @always_inline - fn __iadd__(inout self, other: StringSlice): + fn __iadd__(mut self, other: StringSlice): """Appends another string slice to this string. Args: @@ -1423,7 +1423,7 @@ struct String( # Methods # ===------------------------------------------------------------------=== # - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this string to the provided Writer. @@ -1622,7 +1622,7 @@ struct String( var length = len(self._buffer) return length - int(length > 0) - fn _steal_ptr(inout self) -> UnsafePointer[UInt8]: + fn _steal_ptr(mut self) -> UnsafePointer[UInt8]: """Transfer ownership of pointer to the underlying memory. The caller is responsible for freeing up the memory. @@ -2014,7 +2014,7 @@ struct String( """ return hash(self.as_string_slice()) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with the underlying bytes. Parameters: @@ -2309,7 +2309,7 @@ struct String( var result = String(buffer) return result^ - fn reserve(inout self, new_capacity: Int): + fn reserve(mut self, new_capacity: Int): """Reserves the requested capacity. Args: diff --git a/stdlib/src/collections/vector.mojo b/stdlib/src/collections/vector.mojo index 1dc60fcc76..1c9385c528 100644 --- a/stdlib/src/collections/vector.mojo +++ b/stdlib/src/collections/vector.mojo @@ -42,7 +42,7 @@ struct _VecIter[ var size: Int var vec: UnsafePointer[vec_type] - fn __next__(inout self) -> type: + fn __next__(mut self) -> type: self.i += 1 return deref(self.vec, self.i - 1) @@ -175,7 +175,7 @@ struct InlinedFixedVector[ self.dynamic_data = UnsafePointer[type]() @always_inline - fn append(inout self, value: type): + fn append(mut self, value: type): """Appends a value to this vector. Args: @@ -225,7 +225,7 @@ struct InlinedFixedVector[ return self.dynamic_data[normalized_idx - Self.static_size] @always_inline - fn __setitem__(inout self, idx: Int, value: type): + fn __setitem__(mut self, idx: Int, value: type): """Sets a vector element at the given index. Args: @@ -245,7 +245,7 @@ struct InlinedFixedVector[ else: self.dynamic_data[normalized_idx - Self.static_size] = value - fn clear(inout self): + fn clear(mut self): """Clears the elements in the vector.""" self.current_size = 0 @@ -255,7 +255,7 @@ struct InlinedFixedVector[ alias _iterator = _VecIter[type, Self, Self._deref_iter_impl] - fn __iter__(inout self) -> Self._iterator: + fn __iter__(mut self) -> Self._iterator: """Iterate over the vector. Returns: diff --git a/stdlib/src/hashlib/_ahash.mojo b/stdlib/src/hashlib/_ahash.mojo index 9adb7d08e0..56488c9a8d 100644 --- a/stdlib/src/hashlib/_ahash.mojo +++ b/stdlib/src/hashlib/_ahash.mojo @@ -110,7 +110,7 @@ struct AHasher[key: U256](_Hasher): self.extra_keys = U128(pi_key[2], pi_key[3]) @always_inline - fn _update(inout self, new_data: UInt64): + fn _update(mut self, new_data: UInt64): """Update the buffer value with new data. Args: @@ -119,7 +119,7 @@ struct AHasher[key: U256](_Hasher): self.buffer = _folded_multiply(new_data ^ self.buffer, MULTIPLE) @always_inline - fn _large_update(inout self, new_data: U128): + fn _large_update(mut self, new_data: U128): """Update the buffer value with new data. Args: @@ -129,7 +129,7 @@ struct AHasher[key: U256](_Hasher): var combined = _folded_multiply(xored[0], xored[1]) self.buffer = rotate_bits_left[ROT]((self.buffer + self.pad) ^ combined) - fn _update_with_bytes(inout self, data: UnsafePointer[UInt8], length: Int): + fn _update_with_bytes(mut self, data: UnsafePointer[UInt8], length: Int): """Consume provided data to update the internal buffer. Args: @@ -160,7 +160,7 @@ struct AHasher[key: U256](_Hasher): var value = _read_small(data, length) self._large_update(value) - fn _update_with_simd(inout self, new_data: SIMD[_, _]): + fn _update_with_simd(mut self, new_data: SIMD[_, _]): """Update the buffer value with new data. Args: @@ -182,7 +182,7 @@ struct AHasher[key: U256](_Hasher): for i in range(0, v64.size, 2): self._large_update(U128(v64[i], v64[i + 1])) - fn update[T: _HashableWithHasher](inout self, value: T): + fn update[T: _HashableWithHasher](mut self, value: T): """Update the buffer value with new hashable value. Args: diff --git a/stdlib/src/hashlib/_hasher.mojo b/stdlib/src/hashlib/_hasher.mojo index e29257a9e0..f30e4de21a 100644 --- a/stdlib/src/hashlib/_hasher.mojo +++ b/stdlib/src/hashlib/_hasher.mojo @@ -17,7 +17,7 @@ from ._ahash import AHasher trait _HashableWithHasher: - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): ... @@ -25,13 +25,13 @@ trait _Hasher: fn __init__(out self): ... - fn _update_with_bytes(inout self, data: UnsafePointer[UInt8], length: Int): + fn _update_with_bytes(mut self, data: UnsafePointer[UInt8], length: Int): ... - fn _update_with_simd(inout self, value: SIMD[_, _]): + fn _update_with_simd(mut self, value: SIMD[_, _]): ... - fn update[T: _HashableWithHasher](inout self, value: T): + fn update[T: _HashableWithHasher](mut self, value: T): ... fn finish(owned self) -> UInt64: diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 98ff2cca07..0c06a6b00a 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -1108,7 +1108,7 @@ fn iota[ buff.store(i, i + offset) -fn iota[type: DType, //](inout v: List[Scalar[type], *_], offset: Int = 0): +fn iota[type: DType, //](mut v: List[Scalar[type], *_], offset: Int = 0): """Fill a list with consecutive numbers starting from the specified offset. Parameters: @@ -1121,7 +1121,7 @@ fn iota[type: DType, //](inout v: List[Scalar[type], *_], offset: Int = 0): iota(v.data, len(v), offset) -fn iota(inout v: List[Int, *_], offset: Int = 0): +fn iota(mut v: List[Int, *_], offset: Int = 0): """Fill a list with consecutive numbers starting from the specified offset. Args: diff --git a/stdlib/src/memory/arc.mojo b/stdlib/src/memory/arc.mojo index 37c03786f7..d7b236af72 100644 --- a/stdlib/src/memory/arc.mojo +++ b/stdlib/src/memory/arc.mojo @@ -60,11 +60,11 @@ struct _ArcPointerInner[T: Movable]: self.refcount = Scalar[DType.uint64](1) self.payload = value^ - fn add_ref(inout self): + fn add_ref(mut self): """Atomically increment the refcount.""" _ = self.refcount.fetch_add(1) - fn drop_ref(inout self) -> Bool: + fn drop_ref(mut self) -> Bool: """Atomically decrement the refcount and return true if the result hits zero.""" return self.refcount.fetch_sub(1) == 1 diff --git a/stdlib/src/memory/maybe_uninitialized.mojo b/stdlib/src/memory/maybe_uninitialized.mojo index 20901a6fff..8d224bdd88 100644 --- a/stdlib/src/memory/maybe_uninitialized.mojo +++ b/stdlib/src/memory/maybe_uninitialized.mojo @@ -62,7 +62,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): fn __init__[ MovableType: Movable ]( - inout self: UnsafeMaybeUninitialized[MovableType], + mut self: UnsafeMaybeUninitialized[MovableType], owned value: MovableType, ): """The memory is now considered initialized. @@ -98,7 +98,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): fn copy_from[ CopyableType: ExplicitlyCopyable ]( - inout self: UnsafeMaybeUninitialized[CopyableType], + mut self: UnsafeMaybeUninitialized[CopyableType], other: UnsafeMaybeUninitialized[CopyableType], ): """Copy another object. @@ -117,7 +117,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): @always_inline fn copy_from[ CopyableType: ExplicitlyCopyable - ](inout self: UnsafeMaybeUninitialized[CopyableType], other: CopyableType): + ](mut self: UnsafeMaybeUninitialized[CopyableType], other: CopyableType): """Copy another object. This function assumes that the current memory is uninitialized. @@ -152,8 +152,8 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): fn move_from[ MovableType: Movable ]( - inout self: UnsafeMaybeUninitialized[MovableType], - inout other: UnsafeMaybeUninitialized[MovableType], + mut self: UnsafeMaybeUninitialized[MovableType], + mut other: UnsafeMaybeUninitialized[MovableType], ): """Move another object. @@ -174,7 +174,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): fn move_from[ MovableType: Movable ]( - inout self: UnsafeMaybeUninitialized[MovableType], + mut self: UnsafeMaybeUninitialized[MovableType], other: UnsafePointer[MovableType], ): """Move another object. @@ -196,7 +196,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): fn write[ MovableType: Movable ]( - inout self: UnsafeMaybeUninitialized[MovableType], + mut self: UnsafeMaybeUninitialized[MovableType], owned value: MovableType, ): """Write a value into an uninitialized memory location. @@ -235,7 +235,7 @@ struct UnsafeMaybeUninitialized[ElementType: AnyType](CollectionElementNew): return UnsafePointer.address_of(self._array).bitcast[Self.ElementType]() @always_inline - fn assume_initialized_destroy(inout self): + fn assume_initialized_destroy(mut self): """Runs the destructor of the internal value. Calling this method assumes that the memory is initialized. diff --git a/stdlib/src/memory/owned_pointer.mojo b/stdlib/src/memory/owned_pointer.mojo index 4b22f14066..3974daa99f 100644 --- a/stdlib/src/memory/owned_pointer.mojo +++ b/stdlib/src/memory/owned_pointer.mojo @@ -31,7 +31,7 @@ struct OwnedPointer[T: AnyType]: # Life cycle methods # ===-------------------------------------------------------------------===# - fn __init__[T: Movable](inout self: OwnedPointer[T], owned value: T): + fn __init__[T: Movable](mut self: OwnedPointer[T], owned value: T): """Construct a new OwnedPointer[] by moving the passed value into a new backing allocation. Parameters: @@ -45,7 +45,7 @@ struct OwnedPointer[T: AnyType]: fn __init__[ T: ExplicitlyCopyable - ](inout self: OwnedPointer[T], *, copy_value: T): + ](mut self: OwnedPointer[T], *, copy_value: T): """Construct a new OwnedPointer[] by explicitly copying the passed value into a new backing allocation. Parameters: @@ -59,7 +59,7 @@ struct OwnedPointer[T: AnyType]: fn __init__[ T: Copyable, U: NoneType = None - ](inout self: OwnedPointer[T], value: T): + ](mut self: OwnedPointer[T], value: T): """Construct a new OwnedPointer[] by copying the passed value into a new backing allocation. Parameters: @@ -74,7 +74,7 @@ struct OwnedPointer[T: AnyType]: fn __init__[ T: ExplicitlyCopyable - ](inout self: OwnedPointer[T], *, other: OwnedPointer[T],): + ](mut self: OwnedPointer[T], *, other: OwnedPointer[T],): """Construct a new OwnedPointer[] by explicitly copying the value from another OwnedPointer[]. Parameters: diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index d95a8c1141..4fa37a6e61 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -274,7 +274,7 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): return String.write(self) @always_inline("nodebug") - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats the address space to the provided Writer. diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index 9c1a6eac92..3f8db596af 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -272,7 +272,7 @@ struct UnsafePointer[ return self + (-1 * Int(offset.__mlir_index__())) @always_inline - fn __iadd__[T: IntLike, //](inout self, offset: T): + fn __iadd__[T: IntLike, //](mut self, offset: T): """Add an offset to this pointer. Parameters: @@ -284,7 +284,7 @@ struct UnsafePointer[ self = self + offset @always_inline - fn __isub__[T: IntLike, //](inout self, offset: T): + fn __isub__[T: IntLike, //](mut self, offset: T): """Subtract an offset from this pointer. Parameters: @@ -420,7 +420,7 @@ struct UnsafePointer[ return hex(int(self)) @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this pointer address to the provided Writer. diff --git a/stdlib/src/os/atomic.mojo b/stdlib/src/os/atomic.mojo index 28980d33e9..e2b8f1c65e 100644 --- a/stdlib/src/os/atomic.mojo +++ b/stdlib/src/os/atomic.mojo @@ -53,7 +53,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: self.value = value @always_inline - fn load(inout self) -> Scalar[type]: + fn load(mut self) -> Scalar[type]: """Loads the current value from the atomic. Returns: @@ -92,7 +92,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: ) @always_inline - fn fetch_add(inout self, rhs: Scalar[type]) -> Scalar[type]: + fn fetch_add(mut self, rhs: Scalar[type]) -> Scalar[type]: """Performs atomic in-place add. Atomically replaces the current value with the result of arithmetic @@ -111,7 +111,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: return Self._fetch_add(value_addr, rhs) @always_inline - fn __iadd__(inout self, rhs: Scalar[type]): + fn __iadd__(mut self, rhs: Scalar[type]): """Performs atomic in-place add. Atomically replaces the current value with the result of arithmetic @@ -126,7 +126,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: _ = self.fetch_add(rhs) @always_inline - fn fetch_sub(inout self, rhs: Scalar[type]) -> Scalar[type]: + fn fetch_sub(mut self, rhs: Scalar[type]) -> Scalar[type]: """Performs atomic in-place sub. Atomically replaces the current value with the result of arithmetic @@ -150,7 +150,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: ](value_addr.address, rhs.value) @always_inline - fn __isub__(inout self, rhs: Scalar[type]): + fn __isub__(mut self, rhs: Scalar[type]): """Performs atomic in-place sub. Atomically replaces the current value with the result of arithmetic @@ -166,7 +166,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: @always_inline fn compare_exchange_weak( - inout self, inout expected: Scalar[type], desired: Scalar[type] + mut self, mut expected: Scalar[type], desired: Scalar[type] ) -> Bool: """Atomically compares the self value with that of the expected value. If the values are equal, then the self value is replaced with the @@ -224,7 +224,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: _max_impl[scope=scope](ptr, rhs) @always_inline - fn max(inout self, rhs: Scalar[type]): + fn max(mut self, rhs: Scalar[type]): """Performs atomic in-place max. Atomically replaces the current value with the result of max of the @@ -264,7 +264,7 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: _min_impl[scope=scope](ptr, rhs) @always_inline - fn min(inout self, rhs: Scalar[type]): + fn min(mut self, rhs: Scalar[type]): """Performs atomic in-place min. Atomically replaces the current value with the result of min of the @@ -294,7 +294,7 @@ fn _compare_exchange_weak_integral_impl[ type: DType, //, *, scope: StringLiteral ]( value_addr: UnsafePointer[Scalar[type], **_], - inout expected: Scalar[type], + mut expected: Scalar[type], desired: Scalar[type], ) -> Bool: constrained[type.is_integral(), "the input type must be integral"]() diff --git a/stdlib/src/os/fstat.mojo b/stdlib/src/os/fstat.mojo index ba298916d4..83e493bc7a 100644 --- a/stdlib/src/os/fstat.mojo +++ b/stdlib/src/os/fstat.mojo @@ -96,7 +96,7 @@ struct stat_result(Stringable, Writable): """User defined flags for file.""" fn __init__( - inout self, + mut self, /, *, st_mode: Int, @@ -151,7 +151,7 @@ struct stat_result(Stringable, Writable): self.st_flags = st_flags @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this path to the provided Writer. diff --git a/stdlib/src/pathlib/path.mojo b/stdlib/src/pathlib/path.mojo index 5e47d0d846..c6e9016b5e 100644 --- a/stdlib/src/pathlib/path.mojo +++ b/stdlib/src/pathlib/path.mojo @@ -124,7 +124,7 @@ struct Path( res /= suffix return res - fn __itruediv__(inout self, suffix: String): + fn __itruediv__(mut self, suffix: String): """Joins two paths using the system-defined path separator. Args: @@ -153,7 +153,7 @@ struct Path( """ return self.path.byte_length() > 0 - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this path to the provided Writer. @@ -225,7 +225,7 @@ struct Path( return hash(self.path) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with the path string value. Parameters: diff --git a/stdlib/src/pwd/pwd.mojo b/stdlib/src/pwd/pwd.mojo index a6342d42b4..105b26e7f2 100644 --- a/stdlib/src/pwd/pwd.mojo +++ b/stdlib/src/pwd/pwd.mojo @@ -40,7 +40,7 @@ struct Passwd(Stringable): var pw_shell: String """Shell program.""" - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats this string to the provided Writer. Parameters: diff --git a/stdlib/src/python/_bindings.mojo b/stdlib/src/python/_bindings.mojo index 2921ebb3bd..f5e14cd329 100644 --- a/stdlib/src/python/_bindings.mojo +++ b/stdlib/src/python/_bindings.mojo @@ -33,13 +33,13 @@ from python.python import _get_global_python_itf trait ConvertibleFromPython(CollectionElement): - """Denotes a type that can attempt construction from a borrowed Python + """Denotes a type that can attempt construction from a read-only Python object. """ @staticmethod fn try_from_python(obj: PythonObject) raises -> Self: - """Attempt to construct an instance of this object from a borrowed + """Attempt to construct an instance of this object from a read-only Python value. Args: @@ -113,7 +113,7 @@ fn python_type_object[ basicsize: sizeof[PyMojoObject[T]](), itemsize: 0, flags: Py_TPFLAGS_DEFAULT, - # Note: This pointer is only "borrowed" by PyType_FromSpec. + # Note: This pointer is only "read-only" by PyType_FromSpec. slots: slots.unsafe_ptr(), } @@ -138,7 +138,7 @@ fn python_type_object[ # # The latter is the C function signature that the CPython API expects a # PyObject initializer function to have. The former is an unsafe form of the -# `fn(inout self)` signature that Mojo types with default constructors provide. +# `fn(mut self)` signature that Mojo types with default constructors provide. # # To support CPython calling a Mojo types default constructor, we need to # provide a wrapper function (around the Mojo constructor) that has the @@ -221,22 +221,22 @@ fn py_c_function_wrapper[ # > When a C function is called from Python, it borrows references to its # > arguments from the caller. The caller owns a reference to the object, - # > so the borrowed reference’s lifetime is guaranteed until the function - # > returns. Only when such a borrowed reference must be stored or passed + # > so the read-only reference’s lifetime is guaranteed until the function + # > returns. Only when such a read-only reference must be stored or passed # > on, it must be turned into an owned reference by calling Py_INCREF(). # > # > -- https://docs.python.org/3/extending/extending.html#ownership-rules # SAFETY: # Here we illegally (but carefully) construct _owned_ `PythonObject` - # values from the borrowed object reference arguments. We are careful + # values from the read-only object reference arguments. We are careful # down below to prevent the destructor for these objects from running # so that we do not illegally decrement the reference count of these # objects we do not own. # - # This is valid to do, because these are passed using the `borrowed` + # This is valid to do, because these are passed using the `read-only` # argument convention to `user_func`, so logically they are treated - # as Python borrowed references. + # as Python read-only references. var py_self = PythonObject(py_self_ptr) var args = TypedPythonObject["Tuple"]( unsafe_unchecked_from=PythonObject(args_ptr) diff --git a/stdlib/src/python/_cpython.mojo b/stdlib/src/python/_cpython.mojo index defbd9d4b9..4a28b2d117 100644 --- a/stdlib/src/python/_cpython.mojo +++ b/stdlib/src/python/_cpython.mojo @@ -492,7 +492,7 @@ struct PyObject(Stringable, Representable, Writable): # Methods # ===-------------------------------------------------------------------===# - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats to the provided Writer. Parameters: @@ -580,7 +580,7 @@ struct PyModuleDef_Base(Stringable, Representable, Writable): # Methods # ===-------------------------------------------------------------------===# - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats to the provided Writer. Parameters: @@ -700,7 +700,7 @@ struct PyModuleDef(Stringable, Representable, Writable): # Methods # ===-------------------------------------------------------------------===# - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats to the provided Writer. Parameters: @@ -797,7 +797,7 @@ struct CPython: pass @staticmethod - fn destroy(inout existing: CPython): + fn destroy(mut existing: CPython): if existing.logging_enabled: print("CPython destroy") var remaining_refs = existing.total_ref_count.take_pointee() @@ -861,15 +861,15 @@ struct CPython: # Reference count management # ===-------------------------------------------------------------------===# - fn _inc_total_rc(inout self): + fn _inc_total_rc(mut self): var v = self.total_ref_count.take_pointee() self.total_ref_count.init_pointee_move(v + 1) - fn _dec_total_rc(inout self): + fn _dec_total_rc(mut self): var v = self.total_ref_count.take_pointee() self.total_ref_count.init_pointee_move(v - 1) - fn Py_IncRef(inout self, ptr: PyObjectPtr): + fn Py_IncRef(mut self, ptr: PyObjectPtr): """[Reference]( https://docs.python.org/3/c-api/refcounting.html#c.Py_IncRef). """ @@ -879,7 +879,7 @@ struct CPython: self.lib.call["Py_IncRef"](ptr) self._inc_total_rc() - fn Py_DecRef(inout self, ptr: PyObjectPtr): + fn Py_DecRef(mut self, ptr: PyObjectPtr): """[Reference]( https://docs.python.org/3/c-api/refcounting.html#c.Py_DecRef). """ @@ -893,7 +893,7 @@ struct CPython: # have to always be the case - but often it is and it's convenient for # debugging. We shouldn't rely on this function anywhere - its only purpose # is debugging. - fn _Py_REFCNT(inout self, ptr: PyObjectPtr) -> Int: + fn _Py_REFCNT(mut self, ptr: PyObjectPtr) -> Int: if ptr._get_ptr_as_int() == 0: return -1 # NOTE: @@ -915,19 +915,19 @@ struct CPython: # Python GIL and threading # ===-------------------------------------------------------------------===# - fn PyGILState_Ensure(inout self) -> PyGILState_STATE: + fn PyGILState_Ensure(mut self) -> PyGILState_STATE: """[Reference]( https://docs.python.org/3/c-api/init.html#c.PyGILState_Ensure). """ return self.lib.call["PyGILState_Ensure", PyGILState_STATE]() - fn PyGILState_Release(inout self, state: PyGILState_STATE): + fn PyGILState_Release(mut self, state: PyGILState_STATE): """[Reference]( https://docs.python.org/3/c-api/init.html#c.PyGILState_Release). """ self.lib.call["PyGILState_Release"](state) - fn PyEval_SaveThread(inout self) -> UnsafePointer[PyThreadState]: + fn PyEval_SaveThread(mut self) -> UnsafePointer[PyThreadState]: """[Reference]( https://docs.python.org/3/c-api/init.html#c.PyEval_SaveThread). """ @@ -936,7 +936,7 @@ struct CPython: "PyEval_SaveThread", UnsafePointer[PyThreadState] ]() - fn PyEval_RestoreThread(inout self, state: UnsafePointer[PyThreadState]): + fn PyEval_RestoreThread(mut self, state: UnsafePointer[PyThreadState]): """[Reference]( https://docs.python.org/3/c-api/init.html#c.PyEval_RestoreThread). """ @@ -946,7 +946,7 @@ struct CPython: # Python Dict operations # ===-------------------------------------------------------------------===# - fn PyDict_New(inout self) -> PyObjectPtr: + fn PyDict_New(mut self) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_New). """ @@ -964,7 +964,7 @@ struct CPython: # int PyDict_SetItem(PyObject *p, PyObject *key, PyObject *val) fn PyDict_SetItem( - inout self, dict_obj: PyObjectPtr, key: PyObjectPtr, value: PyObjectPtr + mut self, dict_obj: PyObjectPtr, key: PyObjectPtr, value: PyObjectPtr ) -> c_int: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_SetItem). @@ -982,7 +982,7 @@ struct CPython: return r fn PyDict_GetItemWithError( - inout self, dict_obj: PyObjectPtr, key: PyObjectPtr + mut self, dict_obj: PyObjectPtr, key: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_GetItemWithError). @@ -994,7 +994,7 @@ struct CPython: self.log("PyDict_GetItemWithError, key: ", key._get_ptr_as_int()) return r - fn PyDict_Check(inout self, maybe_dict: PyObjectPtr) -> Bool: + fn PyDict_Check(mut self, maybe_dict: PyObjectPtr) -> Bool: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_Check). """ @@ -1006,7 +1006,7 @@ struct CPython: self.Py_DecRef(my_type) return result - fn PyDict_Type(inout self) -> PyObjectPtr: + fn PyDict_Type(mut self) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_Type). """ @@ -1016,7 +1016,7 @@ struct CPython: # int PyDict_Next(PyObject *p, Py_ssize_t *ppos, PyObject **pkey, PyObject **pvalue) fn PyDict_Next( - inout self, dictionary: PyObjectPtr, p: Int + mut self, dictionary: PyObjectPtr, p: Int ) -> PyKeysValuePair: """[Reference]( https://docs.python.org/3/c-api/dict.html#c.PyDict_Next). @@ -1061,7 +1061,7 @@ struct CPython: # ===-------------------------------------------------------------------===# fn PyImport_ImportModule( - inout self, + mut self, name: StringRef, ) -> PyObjectPtr: """[Reference]( @@ -1081,7 +1081,7 @@ struct CPython: self._inc_total_rc() return r - fn PyImport_AddModule(inout self, name: StringRef) -> PyObjectPtr: + fn PyImport_AddModule(mut self, name: StringRef) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/import.html#c.PyImport_AddModule). """ @@ -1090,7 +1090,7 @@ struct CPython: ) fn PyModule_Create( - inout self, + mut self, name: String, ) -> PyObjectPtr: """[Reference]( @@ -1118,7 +1118,7 @@ struct CPython: ) fn PyModule_AddFunctions( - inout self, + mut self, mod: PyObjectPtr, functions: UnsafePointer[PyMethodDef], ) -> c_int: @@ -1128,7 +1128,7 @@ struct CPython: return self.lib.call["PyModule_AddFunctions", c_int](mod, functions) fn PyModule_AddObjectRef( - inout self, + mut self, module: PyObjectPtr, name: UnsafePointer[c_char], value: PyObjectPtr, @@ -1141,7 +1141,7 @@ struct CPython: module, name, value ) - fn PyModule_GetDict(inout self, name: PyObjectPtr) -> PyObjectPtr: + fn PyModule_GetDict(mut self, name: PyObjectPtr) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/module.html#c.PyModule_GetDict). """ @@ -1151,7 +1151,7 @@ struct CPython: # Python Type operations # ===-------------------------------------------------------------------===# - fn Py_TYPE(inout self, ob_raw: PyObjectPtr) -> UnsafePointer[PyTypeObject]: + fn Py_TYPE(mut self, ob_raw: PyObjectPtr) -> UnsafePointer[PyTypeObject]: """Get the PyTypeObject field of a Python object.""" # Note: @@ -1165,12 +1165,12 @@ struct CPython: return ob_raw.unsized_obj_ptr[].object_type fn PyType_GetName( - inout self, type: UnsafePointer[PyTypeObject] + mut self, type: UnsafePointer[PyTypeObject] ) -> PyObjectPtr: return self.lib.call["PyType_GetName", PyObjectPtr](type) fn PyType_FromSpec( - inout self, spec: UnsafePointer[PyType_Spec] + mut self, spec: UnsafePointer[PyType_Spec] ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/type.html#c.PyType_FromSpec). @@ -1178,7 +1178,7 @@ struct CPython: return self.lib.call["PyType_FromSpec", PyObjectPtr](spec) fn PyType_GenericAlloc( - inout self, + mut self, type: UnsafePointer[PyTypeObject], nitems: Py_ssize_t, ) -> PyObjectPtr: @@ -1188,7 +1188,7 @@ struct CPython: # Python Evaluation # ===-------------------------------------------------------------------===# - fn PyRun_SimpleString(inout self, strref: StringRef) -> Bool: + fn PyRun_SimpleString(mut self, strref: StringRef) -> Bool: """Executes the given Python code. Args: @@ -1207,7 +1207,7 @@ struct CPython: ) fn PyRun_String( - inout self, + mut self, strref: StringRef, globals: PyObjectPtr, locals: PyObjectPtr, @@ -1234,7 +1234,7 @@ struct CPython: return result fn PyEval_EvalCode( - inout self, + mut self, co: PyObjectPtr, globals: PyObjectPtr, locals: PyObjectPtr, @@ -1248,14 +1248,14 @@ struct CPython: self._inc_total_rc() return result - fn PyEval_GetBuiltins(inout self) -> PyObjectPtr: + fn PyEval_GetBuiltins(mut self) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/reflection.html#c.PyEval_GetBuiltins). """ return self.lib.call["PyEval_GetBuiltins", PyObjectPtr]() fn Py_CompileString( - inout self, + mut self, strref: StringRef, filename: StringRef, compile_mode: Int, @@ -1275,7 +1275,7 @@ struct CPython: # ===-------------------------------------------------------------------===# fn Py_Is( - inout self, + mut self, rhs: PyObjectPtr, lhs: PyObjectPtr, ) -> Bool: @@ -1289,7 +1289,7 @@ struct CPython: else: return rhs == lhs - fn PyObject_Type(inout self, obj: PyObjectPtr) -> PyObjectPtr: + fn PyObject_Type(mut self, obj: PyObjectPtr) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_Type). """ @@ -1298,7 +1298,7 @@ struct CPython: self._inc_total_rc() return p - fn PyObject_Str(inout self, obj: PyObjectPtr) -> PyObjectPtr: + fn PyObject_Str(mut self, obj: PyObjectPtr) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_Str). """ @@ -1308,7 +1308,7 @@ struct CPython: return p fn PyObject_GetItem( - inout self, obj: PyObjectPtr, key: PyObjectPtr + mut self, obj: PyObjectPtr, key: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_GetItem). @@ -1330,7 +1330,7 @@ struct CPython: return r fn PyObject_SetItem( - inout self, obj: PyObjectPtr, key: PyObjectPtr, value: PyObjectPtr + mut self, obj: PyObjectPtr, key: PyObjectPtr, value: PyObjectPtr ) -> c_int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_SetItem). @@ -1352,7 +1352,7 @@ struct CPython: return r fn PyObject_GetAttrString( - inout self, + mut self, obj: PyObjectPtr, name: StringRef, ) -> PyObjectPtr: @@ -1378,7 +1378,7 @@ struct CPython: return r fn PyObject_SetAttrString( - inout self, obj: PyObjectPtr, name: StringRef, new_value: PyObjectPtr + mut self, obj: PyObjectPtr, name: StringRef, new_value: PyObjectPtr ) -> c_int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_SetAttrString). @@ -1402,7 +1402,7 @@ struct CPython: return r fn PyObject_CallObject( - inout self, + mut self, callable_obj: PyObjectPtr, args: PyObjectPtr, ) -> PyObjectPtr: @@ -1426,7 +1426,7 @@ struct CPython: return r fn PyObject_Call( - inout self, + mut self, callable_obj: PyObjectPtr, args: PyObjectPtr, kwargs: PyObjectPtr, @@ -1450,26 +1450,26 @@ struct CPython: self._inc_total_rc() return r - fn PyObject_IsTrue(inout self, obj: PyObjectPtr) -> c_int: + fn PyObject_IsTrue(mut self, obj: PyObjectPtr) -> c_int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_IsTrue). """ return self.lib.call["PyObject_IsTrue", c_int](obj) - fn PyObject_Length(inout self, obj: PyObjectPtr) -> Int: + fn PyObject_Length(mut self, obj: PyObjectPtr) -> Int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_Length). """ return int(self.lib.call["PyObject_Length", Int](obj)) - fn PyObject_Hash(inout self, obj: PyObjectPtr) -> Int: + fn PyObject_Hash(mut self, obj: PyObjectPtr) -> Int: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_Hash). """ return int(self.lib.call["PyObject_Hash", Int](obj)) fn PyObject_GetIter( - inout self, traversablePyObject: PyObjectPtr + mut self, traversablePyObject: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/object.html#c.PyObject_GetIter). @@ -1496,7 +1496,7 @@ struct CPython: # Python Tuple operations # ===-------------------------------------------------------------------===# - fn PyTuple_New(inout self, count: Int) -> PyObjectPtr: + fn PyTuple_New(mut self, count: Int) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/tuple.html#c.PyTuple_New). """ @@ -1515,7 +1515,7 @@ struct CPython: return r fn PyTuple_GetItem( - inout self, tuple: PyObjectPtr, pos: Py_ssize_t + mut self, tuple: PyObjectPtr, pos: Py_ssize_t ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/tuple.html#c.PyTuple_GetItem). @@ -1523,7 +1523,7 @@ struct CPython: return self.lib.call["PyTuple_GetItem", PyObjectPtr](tuple, pos) fn PyTuple_SetItem( - inout self, tuple_obj: PyObjectPtr, index: Int, element: PyObjectPtr + mut self, tuple_obj: PyObjectPtr, index: Int, element: PyObjectPtr ) -> c_int: """[Reference]( https://docs.python.org/3/c-api/tuple.html#c.PyTuple_SetItem). @@ -1540,7 +1540,7 @@ struct CPython: # Python List operations # ===-------------------------------------------------------------------===# - fn PyList_New(inout self, length: Int) -> PyObjectPtr: + fn PyList_New(mut self, length: Int) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/list.html#c.PyList_New). """ @@ -1559,7 +1559,7 @@ struct CPython: return r fn PyList_SetItem( - inout self, list_obj: PyObjectPtr, index: Int, value: PyObjectPtr + mut self, list_obj: PyObjectPtr, index: Int, value: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/list.html#c.PyList_SetItem). @@ -1573,7 +1573,7 @@ struct CPython: ) fn PyList_GetItem( - inout self, list_obj: PyObjectPtr, index: Int + mut self, list_obj: PyObjectPtr, index: Int ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/list.html#c.PyList_GetItem). @@ -1585,7 +1585,7 @@ struct CPython: # ref: https://docs.python.org/3/c-api/concrete.html # ===-------------------------------------------------------------------===# - fn Py_None(inout self) -> PyObjectPtr: + fn Py_None(mut self) -> PyObjectPtr: """Get a None value, of type NoneType. [Reference]( https://docs.python.org/3/c-api/none.html#c.Py_None).""" @@ -1607,7 +1607,7 @@ struct CPython: # Boolean Objects # ===-------------------------------------------------------------------===# - fn PyBool_FromLong(inout self, value: c_long) -> PyObjectPtr: + fn PyBool_FromLong(mut self, value: c_long) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/bool.html#c.PyBool_FromLong). """ @@ -1629,7 +1629,7 @@ struct CPython: # Integer Objects # ===-------------------------------------------------------------------===# - fn PyLong_FromSsize_t(inout self, value: c_ssize_t) -> PyObjectPtr: + fn PyLong_FromSsize_t(mut self, value: c_ssize_t) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/long.html#c.PyLong_FromSsize_t). """ @@ -1647,7 +1647,7 @@ struct CPython: self._inc_total_rc() return r - fn PyLong_FromSize_t(inout self, value: c_size_t) -> PyObjectPtr: + fn PyLong_FromSize_t(mut self, value: c_size_t) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/long.html#c.PyLong_FromSize_t). """ @@ -1665,7 +1665,7 @@ struct CPython: self._inc_total_rc() return r - fn PyLong_AsSsize_t(inout self, py_object: PyObjectPtr) -> c_ssize_t: + fn PyLong_AsSsize_t(mut self, py_object: PyObjectPtr) -> c_ssize_t: """[Reference]( https://docs.python.org/3/c-api/long.html#c.PyLong_AsSsize_t). """ @@ -1675,7 +1675,7 @@ struct CPython: # Floating-Point Objects # ===-------------------------------------------------------------------===# - fn PyFloat_FromDouble(inout self, value: Float64) -> PyObjectPtr: + fn PyFloat_FromDouble(mut self, value: Float64) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/float.html#c.PyFloat_FromDouble). """ @@ -1693,7 +1693,7 @@ struct CPython: self._inc_total_rc() return r - fn PyFloat_AsDouble(inout self, py_object: PyObjectPtr) -> Float64: + fn PyFloat_AsDouble(mut self, py_object: PyObjectPtr) -> Float64: """[Reference]( https://docs.python.org/3/c-api/float.html#c.PyFloat_AsDouble). """ @@ -1703,7 +1703,7 @@ struct CPython: # Unicode Objects # ===-------------------------------------------------------------------===# - fn PyUnicode_DecodeUTF8(inout self, strref: StringRef) -> PyObjectPtr: + fn PyUnicode_DecodeUTF8(mut self, strref: StringRef) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8). """ @@ -1725,7 +1725,7 @@ struct CPython: self._inc_total_rc() return r - fn PyUnicode_DecodeUTF8(inout self, strslice: StringSlice) -> PyObjectPtr: + fn PyUnicode_DecodeUTF8(mut self, strslice: StringSlice) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_DecodeUTF8). """ @@ -1746,7 +1746,7 @@ struct CPython: self._inc_total_rc() return r - fn PySlice_FromSlice(inout self, slice: Slice) -> PyObjectPtr: + fn PySlice_FromSlice(mut self, slice: Slice) -> PyObjectPtr: # Convert Mojo Slice to Python slice parameters # Note: Deliberately avoid using `span.indices()` here and instead pass # the Slice parameters directly to Python. Python's C implementation @@ -1773,7 +1773,7 @@ struct CPython: return py_slice - fn PyUnicode_AsUTF8AndSize(inout self, py_object: PyObjectPtr) -> StringRef: + fn PyUnicode_AsUTF8AndSize(mut self, py_object: PyObjectPtr) -> StringRef: """[Reference]( https://docs.python.org/3/c-api/unicode.html#c.PyUnicode_AsUTF8AndSize). """ @@ -1788,19 +1788,19 @@ struct CPython: # Python Error operations # ===-------------------------------------------------------------------===# - fn PyErr_Clear(inout self): + fn PyErr_Clear(mut self): """[Reference]( https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Clear). """ self.lib.call["PyErr_Clear"]() - fn PyErr_Occurred(inout self) -> Bool: + fn PyErr_Occurred(mut self) -> Bool: """[Reference]( https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Occurred). """ return not self.lib.call["PyErr_Occurred", PyObjectPtr]().is_null() - fn PyErr_Fetch(inout self) -> PyObjectPtr: + fn PyErr_Fetch(mut self) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/exceptions.html#c.PyErr_Fetch). """ @@ -1827,14 +1827,14 @@ struct CPython: _ = traceback return r - fn PyErr_SetNone(inout self, type: PyObjectPtr): + fn PyErr_SetNone(mut self, type: PyObjectPtr): """[Reference]( https://docs.python.org/3/c-api/exceptions.html#c.PyErr_SetNone). """ self.lib.call["PyErr_SetNone"](type) fn PyErr_SetString( - inout self, + mut self, type: PyObjectPtr, message: UnsafePointer[c_char], ): @@ -1848,10 +1848,10 @@ struct CPython: # ===-------------------------------------------------------------------===# fn get_error_global( - inout self, + mut self, global_name: StringLiteral, ) -> PyObjectPtr: - """Get a Python borrowed reference to the specified global exception + """Get a Python read-only reference to the specified global exception object. """ @@ -1872,7 +1872,7 @@ struct CPython: # Python Iterator operations # ===-------------------------------------------------------------------===# - fn PyIter_Next(inout self, iterator: PyObjectPtr) -> PyObjectPtr: + fn PyIter_Next(mut self, iterator: PyObjectPtr) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/iter.html#c.PyIter_Next). """ @@ -1893,13 +1893,13 @@ struct CPython: self._inc_total_rc() return next_obj - fn PyIter_Check(inout self, obj: PyObjectPtr) -> Bool: + fn PyIter_Check(mut self, obj: PyObjectPtr) -> Bool: """[Reference]( https://docs.python.org/3/c-api/iter.html#c.PyIter_Check). """ return self.lib.call["PyIter_Check", c_int](obj) != 0 - fn PySequence_Check(inout self, obj: PyObjectPtr) -> Bool: + fn PySequence_Check(mut self, obj: PyObjectPtr) -> Bool: """[Reference]( https://docs.python.org/3/c-api/sequence.html#c.PySequence_Check). """ @@ -1910,7 +1910,7 @@ struct CPython: # ===-------------------------------------------------------------------===# fn PySlice_New( - inout self, start: PyObjectPtr, stop: PyObjectPtr, step: PyObjectPtr + mut self, start: PyObjectPtr, stop: PyObjectPtr, step: PyObjectPtr ) -> PyObjectPtr: """[Reference]( https://docs.python.org/3/c-api/slice.html#c.PySlice_New). diff --git a/stdlib/src/python/python.mojo b/stdlib/src/python/python.mojo index 80437fc9e2..8771e54c6f 100644 --- a/stdlib/src/python/python.mojo +++ b/stdlib/src/python/python.mojo @@ -47,10 +47,10 @@ fn _init_python_global() -> _PythonGlobal: struct _PythonGlobal: var cpython: CPython - fn __moveinit__(inout self, owned other: Self): + fn __moveinit__(mut self, owned other: Self): self.cpython = other.cpython^ - fn __init__(inout self): + fn __init__(mut self): self.cpython = CPython() fn __del__(owned self): @@ -99,7 +99,7 @@ struct Python: """ self.impl = existing.impl - fn eval(inout self, code: StringRef) -> Bool: + fn eval(mut self, code: StringRef) -> Bool: """Executes the given Python code. Args: @@ -127,7 +127,7 @@ struct Python: `PythonObject` containing the result of the evaluation. """ var cpython = _get_global_python_itf().cpython() - # PyImport_AddModule returns a borrowed reference. + # PyImport_AddModule returns a read-only reference. var module = PythonObject.from_borrowed_ptr( cpython.PyImport_AddModule(name) ) @@ -265,7 +265,7 @@ struct Python: @staticmethod fn add_functions( - inout module: TypedPythonObject["Module"], + mut module: TypedPythonObject["Module"], owned functions: List[PyMethodDef], ) raises: """Adds functions to a PyModule object. @@ -287,7 +287,7 @@ struct Python: @staticmethod fn unsafe_add_methods( - inout module: TypedPythonObject["Module"], + mut module: TypedPythonObject["Module"], functions: UnsafePointer[PyMethodDef], ) raises: """Adds methods to a PyModule object. @@ -314,7 +314,7 @@ struct Python: @staticmethod fn add_object( - inout module: TypedPythonObject["Module"], + mut module: TypedPythonObject["Module"], name: StringLiteral, value: PythonObject, ) raises: @@ -366,7 +366,7 @@ struct Python: return PythonObject([]) @no_inline - fn __str__(inout self, str_obj: PythonObject) -> StringRef: + fn __str__(mut self, str_obj: PythonObject) -> StringRef: """Return a string representing the given Python object. Args: @@ -379,7 +379,7 @@ struct Python: return cpython.PyUnicode_AsUTF8AndSize(str_obj.py_object) @staticmethod - fn throw_python_exception_if_error_state(inout cpython: CPython) raises: + fn throw_python_exception_if_error_state(mut cpython: CPython) raises: """Raise an exception if CPython interpreter is in an error state. Args: @@ -389,7 +389,7 @@ struct Python: raise Python.unsafe_get_python_exception(cpython) @staticmethod - fn unsafe_get_python_exception(inout cpython: CPython) -> Error: + fn unsafe_get_python_exception(mut cpython: CPython) -> Error: """Get the `Error` object corresponding to the current CPython interpreter error state. diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index a579696179..4566b11501 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -87,7 +87,7 @@ struct _PyIter(Sized): # Trait implementations # ===-------------------------------------------------------------------===# - fn __next__(inout self: _PyIter) -> PythonObject: + fn __next__(mut self: _PyIter) -> PythonObject: """Return the next item and update to point to subsequent item. Returns: @@ -222,7 +222,7 @@ struct TypedPythonObject[type_hint: StringLiteral]( raise Python.unsafe_get_python_exception(cpython) # TODO(MSTDL-911): Avoid unnecessary owned reference counts when - # returning borrowed PythonObject values. + # returning read-only PythonObject values. return PythonObject.from_borrowed_ptr(item) @@ -276,7 +276,7 @@ struct PythonObject( @staticmethod fn from_borrowed_ptr(borrowed_ptr: PyObjectPtr) -> Self: - """Initialize this object from a borrowed reference-counted Python + """Initialize this object from a read-only reference-counted Python object pointer. The reference count of the pointee object will be incremented, and @@ -294,7 +294,7 @@ struct PythonObject( pointer returned by 'Borrowed reference'-type objects. Args: - borrowed_ptr: A borrowed reference counted pointer to a Python + borrowed_ptr: A read-only reference counted pointer to a Python object. Returns: @@ -303,7 +303,7 @@ struct PythonObject( var cpython = _get_global_python_itf().cpython() # SAFETY: - # We were passed a Python 'borrowed reference', so for it to be + # We were passed a Python 'read-only reference', so for it to be # safe to store this reference, we must increment the reference # count to convert this to a 'strong reference'. cpython.Py_IncRef(borrowed_ptr) @@ -374,7 +374,7 @@ struct PythonObject( self.py_object = cpython.PyLong_FromSsize_t(integer) @implicit - fn __init__[dt: DType](inout self, value: SIMD[dt, 1]): + fn __init__[dt: DType](mut self, value: SIMD[dt, 1]): """Initialize the object with a generic scalar value. If the scalar value type is bool, it is converted to a boolean. Otherwise, it is converted to the appropriate integer or floating point type. @@ -427,7 +427,7 @@ struct PythonObject( self.py_object = cpython.PyUnicode_DecodeUTF8(string.as_string_slice()) @implicit - fn __init__[*Ts: CollectionElement](inout self, value: ListLiteral[*Ts]): + fn __init__[*Ts: CollectionElement](mut self, value: ListLiteral[*Ts]): """Initialize the object from a list literal. Parameters: @@ -470,7 +470,7 @@ struct PythonObject( _ = cpython.PyList_SetItem(self.py_object, i, obj.py_object) @implicit - fn __init__[*Ts: CollectionElement](inout self, value: Tuple[*Ts]): + fn __init__[*Ts: CollectionElement](mut self, value: Tuple[*Ts]): """Initialize the object from a tuple literal. Parameters: @@ -715,7 +715,7 @@ struct PythonObject( Python.throw_python_exception_if_error_state(cpython) return PythonObject(result) - fn __setitem__(inout self, *args: PythonObject, value: PythonObject) raises: + fn __setitem__(mut self, *args: PythonObject, value: PythonObject) raises: """Set the value with the given key or keys. Args: @@ -782,7 +782,7 @@ struct PythonObject( return PythonObject(result_obj) fn _call_single_arg_inplace_method( - inout self, method_name: StringRef, rhs: PythonObject + mut self, method_name: StringRef, rhs: PythonObject ) raises: var cpython = _get_global_python_itf().cpython() var tuple_obj = cpython.PyTuple_New(1) @@ -831,7 +831,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rmul__", lhs) - fn __imul__(inout self, rhs: PythonObject) raises: + fn __imul__(mut self, rhs: PythonObject) raises: """In-place multiplication. Calls the underlying object's `__imul__` method. @@ -868,7 +868,7 @@ struct PythonObject( """ return self._call_single_arg_method("__radd__", lhs) - fn __iadd__(inout self, rhs: PythonObject) raises: + fn __iadd__(mut self, rhs: PythonObject) raises: """Immediate addition and concatenation. Args: @@ -902,7 +902,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rsub__", lhs) - fn __isub__(inout self, rhs: PythonObject) raises: + fn __isub__(mut self, rhs: PythonObject) raises: """Immediate subtraction. Args: @@ -939,7 +939,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rfloordiv__", lhs) - fn __ifloordiv__(inout self, rhs: PythonObject) raises: + fn __ifloordiv__(mut self, rhs: PythonObject) raises: """Immediate floor division. Args: @@ -973,7 +973,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rtruediv__", lhs) - fn __itruediv__(inout self, rhs: PythonObject) raises: + fn __itruediv__(mut self, rhs: PythonObject) raises: """Immediate division. Args: @@ -1007,7 +1007,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rmod__", lhs) - fn __imod__(inout self, rhs: PythonObject) raises: + fn __imod__(mut self, rhs: PythonObject) raises: """Immediate modulo. Args: @@ -1039,7 +1039,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rxor__", lhs) - fn __ixor__(inout self, rhs: PythonObject) raises: + fn __ixor__(mut self, rhs: PythonObject) raises: """Immediate exclusive OR. Args: @@ -1072,7 +1072,7 @@ struct PythonObject( """ return self._call_single_arg_method("__ror__", lhs) - fn __ior__(inout self, rhs: PythonObject) raises: + fn __ior__(mut self, rhs: PythonObject) raises: """Immediate bitwise OR. Args: @@ -1105,7 +1105,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rand__", lhs) - fn __iand__(inout self, rhs: PythonObject) raises: + fn __iand__(mut self, rhs: PythonObject) raises: """Immediate bitwise AND. Args: @@ -1138,7 +1138,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rrshift__", lhs) - fn __irshift__(inout self, rhs: PythonObject) raises: + fn __irshift__(mut self, rhs: PythonObject) raises: """Immediate bitwise right shift. Args: @@ -1171,7 +1171,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rlshift__", lhs) - fn __ilshift__(inout self, rhs: PythonObject) raises: + fn __ilshift__(mut self, rhs: PythonObject) raises: """Immediate bitwise left shift. Args: @@ -1202,7 +1202,7 @@ struct PythonObject( """ return self._call_single_arg_method("__rpow__", lhs) - fn __ipow__(inout self, rhs: PythonObject) raises: + fn __ipow__(mut self, rhs: PythonObject) raises: """Immediate power of. Args: @@ -1412,7 +1412,7 @@ struct PythonObject( debug_assert(result != -1, "object is not hashable") return result - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with this python object hash value. Parameters: @@ -1480,7 +1480,7 @@ struct PythonObject( _ = python_str return mojo_str - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this Python object to the provided Writer. diff --git a/stdlib/src/random/random.mojo b/stdlib/src/random/random.mojo index e536c6f533..8ac75d5a8f 100644 --- a/stdlib/src/random/random.mojo +++ b/stdlib/src/random/random.mojo @@ -224,7 +224,7 @@ fn randn[ return -fn shuffle[T: CollectionElement, //](inout list: List[T]): +fn shuffle[T: CollectionElement, //](mut list: List[T]): """Shuffles the elements of the list randomly. Performs an in-place Fisher-Yates shuffle on the provided list. diff --git a/stdlib/src/sys/ffi.mojo b/stdlib/src/sys/ffi.mojo index fea193e75b..6d65ab7447 100644 --- a/stdlib/src/sys/ffi.mojo +++ b/stdlib/src/sys/ffi.mojo @@ -176,7 +176,7 @@ struct DLHandle(CollectionElement, CollectionElementNew, Boolable): # TODO(#15590): Implement support for windows and remove the always_inline. @always_inline - fn close(inout self): + fn close(mut self): """Delete the DLHandle object unloading the associated dynamic library. """ diff --git a/stdlib/src/tempfile/tempfile.mojo b/stdlib/src/tempfile/tempfile.mojo index 55c3ca42d2..509c234ac9 100644 --- a/stdlib/src/tempfile/tempfile.mojo +++ b/stdlib/src/tempfile/tempfile.mojo @@ -212,7 +212,7 @@ struct TemporaryDirectory: """Whether to ignore cleanup errors.""" fn __init__( - inout self, + mut self, suffix: String = "", prefix: String = "tmp", dir: Optional[String] = None, @@ -290,7 +290,7 @@ struct NamedTemporaryFile: """Name of the file.""" fn __init__( - inout self, + mut self, mode: String = "w", name: Optional[String] = None, suffix: String = "", @@ -345,7 +345,7 @@ struct NamedTemporaryFile: except: pass - fn close(inout self) raises: + fn close(mut self) raises: """Closes the file handle.""" self._file_handle.close() if self._delete: @@ -403,7 +403,7 @@ struct NamedTemporaryFile: """ return self._file_handle.seek(offset, whence) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: @@ -416,7 +416,7 @@ struct NamedTemporaryFile: write_buffered[buffer_size=4096](file, args) @always_inline - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """ Write a span of bytes to the file. diff --git a/stdlib/src/testing/testing.mojo b/stdlib/src/testing/testing.mojo index 38423c9aa4..20173be736 100644 --- a/stdlib/src/testing/testing.mojo +++ b/stdlib/src/testing/testing.mojo @@ -536,7 +536,7 @@ struct assert_raises: @always_inline fn __init__( - inout self, + mut self, *, contains: String, location: Optional[_SourceLocation] = None, diff --git a/stdlib/src/utils/format.mojo b/stdlib/src/utils/format.mojo index eab8549b19..af4bbc8d7c 100644 --- a/stdlib/src/utils/format.mojo +++ b/stdlib/src/utils/format.mojo @@ -80,7 +80,7 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): self.format_spec = other.format_spec fn __init__( - inout self, + mut self, first_curly: Int, last_curly: Int, field: Self._FieldVariantType, @@ -267,17 +267,17 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): fn _handle_field_and_break[ T: Stringlike ]( - inout self, + mut self, fmt_src: T, len_pos_args: Int, i: Int, start_value: Int, - inout automatic_indexing_count: Int, - inout raised_automatic_index: Optional[Int], - inout manual_indexing_count: Int, - inout raised_manual_index: Optional[Int], - inout raised_kwarg_field: Optional[String], - inout total_estimated_entry_byte_width: Int, + mut automatic_indexing_count: Int, + mut raised_automatic_index: Optional[Int], + mut manual_indexing_count: Int, + mut raised_manual_index: Optional[Int], + mut raised_kwarg_field: Optional[String], + mut total_estimated_entry_byte_width: Int, ) raises -> Bool: alias S = StringSlice[StaticConstantOrigin] @@ -350,7 +350,7 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): fn _format_entry[ len_pos_args: Int - ](self, inout res: String, args: Self._args_t, inout auto_idx: Int) raises: + ](self, mut res: String, args: Self._args_t, mut auto_idx: Int) raises: # TODO(#3403 and/or #3252): this function should be able to use # Writer syntax when the type implements it, since it will give great # performance benefits. This also needs to be able to check if the given @@ -603,7 +603,7 @@ struct _FormatSpec: """ fn __init__( - inout self, + mut self, fill: UInt8 = ord(" "), align: UInt8 = 0, sign: UInt8 = ord("-"), @@ -680,7 +680,7 @@ struct _FormatSpec: return None # TODO: this should be in StringSlice.__format__(self, spec: FormatSpec, *, writer: Writer): - fn format(self, inout res: String, item: StringSlice) raises: + fn format(self, mut res: String, item: StringSlice) raises: """Transform a String according to its format specification. Args: @@ -691,9 +691,7 @@ struct _FormatSpec: # TODO: align, fill, etc. res += item - fn format[ - T: _CurlyEntryFormattable - ](self, inout res: String, item: T) raises: + fn format[T: _CurlyEntryFormattable](self, mut res: String, item: T) raises: """Stringify a type according to its format specification. Args: diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index 174cde61a9..0ea645ee88 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -404,7 +404,7 @@ struct IndexList[ return int(self.data[idx]) @always_inline("nodebug") - fn __setitem__[index: Int](inout self, val: Int): + fn __setitem__[index: Int](mut self, val: Int): """Sets an element in the tuple at the given static index. Parameters: @@ -416,7 +416,7 @@ struct IndexList[ self.data.__setitem__[index](val) @always_inline("nodebug") - fn __setitem__[index: Int](inout self, val: Self._int_type): + fn __setitem__[index: Int](mut self, val: Self._int_type): """Sets an element in the tuple at the given static index. Parameters: @@ -428,7 +428,7 @@ struct IndexList[ self.data.__setitem__[index](val) @always_inline("nodebug") - fn __setitem__(inout self, idx: Int, val: Int): + fn __setitem__(mut self, idx: Int, val: Int): """Sets an element in the tuple at the given index. Args: @@ -755,7 +755,7 @@ struct IndexList[ return buf^ @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this int tuple to the provided Writer. diff --git a/stdlib/src/utils/inline_string.mojo b/stdlib/src/utils/inline_string.mojo index 055ad748a8..cf8caafc31 100644 --- a/stdlib/src/utils/inline_string.mojo +++ b/stdlib/src/utils/inline_string.mojo @@ -103,7 +103,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): # Operator dunders # ===------------------------------------------------------------------=== # - fn __iadd__(inout self, literal: StringLiteral): + fn __iadd__(mut self, literal: StringLiteral): """Appends another string to this string. Args: @@ -111,7 +111,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): """ self.__iadd__(StringRef(literal)) - fn __iadd__(inout self, string: String): + fn __iadd__(mut self, string: String): """Appends another string to this string. Args: @@ -119,7 +119,7 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): """ self.__iadd__(string.as_string_slice()) - fn __iadd__(inout self, str_slice: StringSlice[_]): + fn __iadd__(mut self, str_slice: StringSlice[_]): """Appends another string to this string. Args: @@ -395,7 +395,7 @@ struct _FixedString[CAP: Int]( # Operator dunders # ===------------------------------------------------------------------=== # - fn __iadd__(inout self, literal: StringLiteral) raises: + fn __iadd__(mut self, literal: StringLiteral) raises: """Appends another string to this string. Args: @@ -403,7 +403,7 @@ struct _FixedString[CAP: Int]( """ self.__iadd__(literal.as_string_slice()) - fn __iadd__(inout self, string: String) raises: + fn __iadd__(mut self, string: String) raises: """Appends another string to this string. Args: @@ -412,7 +412,7 @@ struct _FixedString[CAP: Int]( self.__iadd__(string.as_string_slice()) @always_inline - fn __iadd__(inout self, str_slice: StringSlice[_]) raises: + fn __iadd__(mut self, str_slice: StringSlice[_]) raises: """Appends another string to this string. Args: @@ -438,7 +438,7 @@ struct _FixedString[CAP: Int]( # ===------------------------------------------------------------------=== # fn _iadd_non_raising( - inout self, + mut self, bytes: Span[Byte, _], ) -> Optional[Error]: var total_len = len(self) + len(bytes) @@ -467,11 +467,11 @@ struct _FixedString[CAP: Int]( return None - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write_bytes(self.as_bytes()) @always_inline - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """ Write a byte span to this String. @@ -481,7 +481,7 @@ struct _FixedString[CAP: Int]( """ _ = self._iadd_non_raising(bytes) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: diff --git a/stdlib/src/utils/lock.mojo b/stdlib/src/utils/lock.mojo index dbae8c0d63..3916cd92cc 100644 --- a/stdlib/src/utils/lock.mojo +++ b/stdlib/src/utils/lock.mojo @@ -65,7 +65,7 @@ struct BlockingSpinLock: self.counter = Atomic[DType.int64](Self.UNLOCKED) - fn lock(inout self, owner: Int): + fn lock(mut self, owner: Int): """Acquires the lock. Args: @@ -79,7 +79,7 @@ struct BlockingSpinLock: waiter.wait() expected = Self.UNLOCKED - fn unlock(inout self, owner: Int) -> Bool: + fn unlock(mut self, owner: Int) -> Bool: """Releases the lock. Args: @@ -108,7 +108,7 @@ struct BlockingScopedLock: """The underlying lock instance.""" fn __init__( - inout self, + mut self, lock: UnsafePointer[Self.LockType], ): """Primary constructor. @@ -120,8 +120,8 @@ struct BlockingScopedLock: self.lock = lock fn __init__( - inout self, - inout lock: Self.LockType, + mut self, + mut lock: Self.LockType, ): """Secondary constructor. @@ -132,14 +132,14 @@ struct BlockingScopedLock: self.lock = UnsafePointer.address_of(lock) @no_inline - fn __enter__(inout self): + fn __enter__(mut self): """Acquire the lock on entry. This is done by setting the owner of the lock to own address.""" var address = UnsafePointer[Self].address_of(self) self.lock[].lock(int(address)) @no_inline - fn __exit__(inout self): + fn __exit__(mut self): """Release the lock on exit. Reset the address on the underlying lock.""" var address = UnsafePointer[Self].address_of(self) diff --git a/stdlib/src/utils/span.mojo b/stdlib/src/utils/span.mojo index 5a9588d107..3ec2b3030c 100644 --- a/stdlib/src/utils/span.mojo +++ b/stdlib/src/utils/span.mojo @@ -69,7 +69,7 @@ struct _SpanIter[ @always_inline fn __next__( - inout self, + mut self, ) -> Pointer[T, origin]: @parameter if forward: @@ -150,7 +150,7 @@ struct Span[ @always_inline fn __init__[ size: Int, // - ](inout self, ref [origin]array: InlineArray[T, size]): + ](mut self, ref [origin]array: InlineArray[T, size]): """Construct a Span from an InlineArray. Parameters: diff --git a/stdlib/src/utils/static_tuple.mojo b/stdlib/src/utils/static_tuple.mojo index 9a14c36e24..7a907b7ed0 100644 --- a/stdlib/src/utils/static_tuple.mojo +++ b/stdlib/src/utils/static_tuple.mojo @@ -231,7 +231,7 @@ struct StaticTuple[element_type: AnyTrivialRegType, size: Int](Sized): @always_inline("nodebug") fn __setitem__[ IntLike: IntLike, // - ](inout self, idx: IntLike, val: Self.element_type): + ](mut self, idx: IntLike, val: Self.element_type): """Stores a single value into the tuple at the specified dynamic index. Parameters: @@ -252,7 +252,7 @@ struct StaticTuple[element_type: AnyTrivialRegType, size: Int](Sized): self = tmp @always_inline("nodebug") - fn __setitem__[index: Int](inout self, val: Self.element_type): + fn __setitem__[index: Int](mut self, val: Self.element_type): """Stores a single value into the tuple at the specified index. Parameters: diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 96f6aaeada..48be446549 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -190,9 +190,7 @@ struct _StringSliceIter[ var ptr: UnsafePointer[UInt8] var length: Int - fn __init__( - inout self, *, unsafe_pointer: UnsafePointer[UInt8], length: Int - ): + fn __init__(mut self, *, unsafe_pointer: UnsafePointer[UInt8], length: Int): self.index = 0 if forward else length self.ptr = unsafe_pointer self.length = length @@ -203,7 +201,7 @@ struct _StringSliceIter[ fn __iter__(self) -> Self: return self - fn __next__(inout self) -> StringSlice[origin]: + fn __next__(mut self) -> StringSlice[origin]: @parameter if forward: var byte_len = 1 @@ -356,7 +354,7 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable].type,]( @implicit fn __init__[ O: ImmutableOrigin, // - ](inout self: StringSlice[O], ref [O]value: String): + ](mut self: StringSlice[O], ref [O]value: String): """Construct an immutable StringSlice. Parameters: @@ -395,7 +393,7 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable].type,]( var s = S(ptr=self.unsafe_ptr(), length=b_len) return b_len - _count_utf8_continuation_bytes(s) - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """Formats this string slice to the provided `Writer`. Parameters: diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index 1a19e5788b..e2a0303100 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -357,7 +357,7 @@ struct StringRef( """ return hash(self.data, self.length) - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): """Updates hasher with the underlying bytes. Parameters: @@ -411,7 +411,7 @@ struct StringRef( return String.write("StringRef(", repr(str(self)), ")") @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats this StringRef to the provided Writer. diff --git a/stdlib/src/utils/variant.mojo b/stdlib/src/utils/variant.mojo index 07dc22da63..6936a3a003 100644 --- a/stdlib/src/utils/variant.mojo +++ b/stdlib/src/utils/variant.mojo @@ -18,7 +18,7 @@ You can use this type to implement variant/sum types. For example: from utils import Variant alias IntOrString = Variant[Int, String] -fn to_string(inout x: IntOrString) -> String: +fn to_string(mut x: IntOrString) -> String: if x.isa[String](): return x[String] # x.isa[Int]() @@ -81,7 +81,7 @@ struct Variant[*Ts: CollectionElement]( ```mojo from utils import Variant alias IntOrString = Variant[Int, String] - fn to_string(inout x: IntOrString) -> String: + fn to_string(mut x: IntOrString) -> String: if x.isa[String](): return x[String] # x.isa[Int]() @@ -124,7 +124,7 @@ struct Variant[*Ts: CollectionElement]( self._impl = __mlir_attr[`#kgen.unknown : `, Self._mlir_type] @implicit - fn __init__[T: CollectionElement](inout self, owned value: T): + fn __init__[T: CollectionElement](mut self, owned value: T): """Create a variant with one of the types. Parameters: @@ -239,7 +239,7 @@ struct Variant[*Ts: CollectionElement]( return UnsafePointer(discr_ptr).bitcast[UInt8]()[] @always_inline - fn take[T: CollectionElement](inout self) -> T: + fn take[T: CollectionElement](mut self) -> T: """Take the current value of the variant with the provided type. The caller takes ownership of the underlying value. @@ -260,7 +260,7 @@ struct Variant[*Ts: CollectionElement]( return self.unsafe_take[T]() @always_inline - fn unsafe_take[T: CollectionElement](inout self) -> T: + fn unsafe_take[T: CollectionElement](mut self) -> T: """Unsafely take the current value of the variant with the provided type. The caller takes ownership of the underlying value. @@ -284,7 +284,7 @@ struct Variant[*Ts: CollectionElement]( @always_inline fn replace[ Tin: CollectionElement, Tout: CollectionElement - ](inout self, owned value: Tin) -> Tout: + ](mut self, owned value: Tin) -> Tout: """Replace the current value of the variant with the provided type. The caller takes ownership of the underlying value. @@ -311,7 +311,7 @@ struct Variant[*Ts: CollectionElement]( @always_inline fn unsafe_replace[ Tin: CollectionElement, Tout: CollectionElement - ](inout self, owned value: Tin) -> Tout: + ](mut self, owned value: Tin) -> Tout: """Unsafely replace the current value of the variant with the provided type. The caller takes ownership of the underlying value. @@ -337,7 +337,7 @@ struct Variant[*Ts: CollectionElement]( self.set[Tin](value^) return x^ - fn set[T: CollectionElement](inout self, owned value: T): + fn set[T: CollectionElement](mut self, owned value: T): """Set the variant value. This will call the destructor on the old value, and update the variant's diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index bbb574670b..2d9351036f 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -43,11 +43,11 @@ trait Writer: var s: String # Writer requirement to write a Span of Bytes - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): self.s._iadd[False](bytes) # Writer requirement to take multiple args - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): @parameter fn write_arg[T: Writable](arg: T): arg.write_to(self) @@ -55,7 +55,7 @@ trait Writer: args.each[write_arg]() # Also make it Writable to allow `print` to write the inner String - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write(self.s) @@ -66,7 +66,7 @@ trait Writer: # Pass multiple args to the Writer. The Int and StringLiteral types # call `writer.write_bytes` in their own `write_to` implementations. - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write("Point(", self.x, ", ", self.y, ")") # Enable conversion to a String using `str(point)` @@ -90,7 +90,7 @@ trait Writer: """ @always_inline - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): """ Write a `Span[Byte]` to this `Writer`. @@ -100,7 +100,7 @@ trait Writer: """ ... - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. Parameters: @@ -135,7 +135,7 @@ trait Writable: var x: Float64 var y: Float64 - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): var string = "Point" # Write a single `Span[Byte]`: writer.write_bytes(string.as_bytes()) @@ -144,7 +144,7 @@ trait Writable: ``` """ - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): """ Formats the string representation of this type to the provided Writer. @@ -165,7 +165,7 @@ trait Writable: fn write_args[ W: Writer, *Ts: Writable ]( - inout writer: W, + mut writer: W, args: VariadicPack[_, Writable, *Ts], *, sep: StaticString = "", @@ -238,7 +238,7 @@ struct _WriteBufferHeap(Writer): self.data.free() @always_inline - fn write_bytes(inout self, bytes: Span[UInt8, _]): + fn write_bytes(mut self, bytes: Span[UInt8, _]): len_bytes = len(bytes) # If empty then return if len_bytes == 0: @@ -248,7 +248,7 @@ struct _WriteBufferHeap(Writer): self.data[i + self.pos] = ptr[i] self.pos += len_bytes - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): @parameter fn write_arg[T: Writable](arg: T): arg.write_to(self) @@ -262,10 +262,10 @@ struct _ArgBytes(Writer): fn __init__(out self): self.size = 0 - fn write_bytes(inout self, bytes: Span[UInt8, _]): + fn write_bytes(mut self, bytes: Span[UInt8, _]): self.size += len(bytes) - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): @parameter fn write_arg[T: Writable](arg: T): arg.write_to(self) @@ -284,7 +284,7 @@ struct _WriteBufferStack[W: MovableWriter, //, capacity: Int](Writer): self.pos = 0 self.writer = writer^ - fn flush(inout self): + fn flush(mut self): self.writer.write_bytes( Span[Byte, ImmutableAnyOrigin]( ptr=self.data.unsafe_ptr(), length=self.pos @@ -292,7 +292,7 @@ struct _WriteBufferStack[W: MovableWriter, //, capacity: Int](Writer): ) self.pos = 0 - fn write_bytes(inout self, bytes: Span[Byte, _]): + fn write_bytes(mut self, bytes: Span[Byte, _]): len_bytes = len(bytes) # If empty then return if len_bytes == 0: @@ -309,7 +309,7 @@ struct _WriteBufferStack[W: MovableWriter, //, capacity: Int](Writer): memcpy(self.data.unsafe_ptr() + self.pos, bytes.unsafe_ptr(), len_bytes) self.pos += len_bytes - fn write[*Ts: Writable](inout self, *args: *Ts): + fn write[*Ts: Writable](mut self, *args: *Ts): @parameter fn write_arg[T: Writable](arg: T): arg.write_to(self) diff --git a/stdlib/test/builtin/test_debug_assert.mojo b/stdlib/test/builtin/test_debug_assert.mojo index 9df1b1e1f3..6d8ceb57f3 100644 --- a/stdlib/test/builtin/test_debug_assert.mojo +++ b/stdlib/test/builtin/test_debug_assert.mojo @@ -52,5 +52,5 @@ def test_debug_assert_writable(): struct WritableOnly: var message: String - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write(self.message) diff --git a/stdlib/test/builtin/test_object.mojo b/stdlib/test/builtin/test_object.mojo index 65c118665a..899c75da17 100644 --- a/stdlib/test/builtin/test_object.mojo +++ b/stdlib/test/builtin/test_object.mojo @@ -183,7 +183,7 @@ def test_function(lhs, rhs) -> object: return lhs + rhs -# These are all marked borrowed because 'object' doesn't support function +# These are all marked read-only because 'object' doesn't support function # types with owned arguments. def test_function_raises(a) -> object: raise Error("Error from function type") diff --git a/stdlib/test/builtin/test_print.mojo b/stdlib/test/builtin/test_print.mojo index a18b7366ff..4ace3a30c1 100644 --- a/stdlib/test/builtin/test_print.mojo +++ b/stdlib/test/builtin/test_print.mojo @@ -63,7 +63,7 @@ struct PrintChecker: fn stream(self) -> FileDescriptor: return self.tmp._file_handle._get_raw_fd() - fn check_line(inout self, expected: String, msg: String = "") raises: + fn check_line(mut self, expected: String, msg: String = "") raises: print(end="", file=self.stream(), flush=True) _ = self.tmp.seek(self.cursor) var result = self.tmp.read()[:-1] @@ -72,7 +72,7 @@ struct PrintChecker: self.cursor += len(result) + 1 fn check_line_starts_with( - inout self, prefix: String, msg: String = "" + mut self, prefix: String, msg: String = "" ) raises: print(end="", file=self.stream(), flush=True) _ = self.tmp.seek(self.cursor) diff --git a/stdlib/test/builtin/test_range.mojo b/stdlib/test/builtin/test_range.mojo index b3a1f62be6..051656d27d 100644 --- a/stdlib/test/builtin/test_range.mojo +++ b/stdlib/test/builtin/test_range.mojo @@ -193,7 +193,7 @@ def test_scalar_range(): assert_equal(r.end, 16) assert_equal(r.step, 4) - fn append_many(inout list: List, *values: list.T): + fn append_many(mut list: List, *values: list.T): for value in values: list.append(value[]) diff --git a/stdlib/test/builtin/test_sort.mojo b/stdlib/test/builtin/test_sort.mojo index 7ff2834d46..3c98be083f 100644 --- a/stdlib/test/builtin/test_sort.mojo +++ b/stdlib/test/builtin/test_sort.mojo @@ -45,7 +45,7 @@ fn random_numbers[ return result -# fn assert_sorted[dtype: DType](inout list: List[Scalar[dtype]]) raises: +# fn assert_sorted[dtype: DType](mut list: List[Scalar[dtype]]) raises: # sort[dtype](list) # for i in range(1, len(list)): # assert_true( @@ -53,7 +53,7 @@ fn random_numbers[ # ) -fn assert_sorted_string(inout list: List[String]) raises: +fn assert_sorted_string(mut list: List[String]) raises: for i in range(1, len(list)): assert_true( list[i] >= list[i - 1], str(list[i - 1]) + " > " + str(list[i]) @@ -62,7 +62,7 @@ fn assert_sorted_string(inout list: List[String]) raises: fn assert_sorted[ type: ComparableCollectionElement -](inout list: List[type]) raises: +](mut list: List[type]) raises: for i in range(1, len(list)): assert_true(list[i] >= list[i - 1], "error at index: " + str(i)) diff --git a/stdlib/test/hashlib/test_hasher.mojo b/stdlib/test/hashlib/test_hasher.mojo index 809d494c7e..4c10ac50a5 100644 --- a/stdlib/test/hashlib/test_hasher.mojo +++ b/stdlib/test/hashlib/test_hasher.mojo @@ -30,14 +30,14 @@ struct DummyHasher(_Hasher): fn __init__(out self): self._dummy_value = 0 - fn _update_with_bytes(inout self, data: UnsafePointer[UInt8], length: Int): + fn _update_with_bytes(mut self, data: UnsafePointer[UInt8], length: Int): for i in range(length): self._dummy_value += data[i].cast[DType.uint64]() - fn _update_with_simd(inout self, value: SIMD[_, _]): + fn _update_with_simd(mut self, value: SIMD[_, _]): self._dummy_value += value.cast[DType.uint64]().reduce_add() - fn update[T: _HashableWithHasher](inout self, value: T): + fn update[T: _HashableWithHasher](mut self, value: T): value.__hash__(self) fn finish(owned self) -> UInt64: @@ -48,7 +48,7 @@ struct DummyHasher(_Hasher): struct SomeHashableStruct(_HashableWithHasher): var _value: Int64 - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): hasher._update_with_simd(self._value) @@ -69,7 +69,7 @@ struct ComplexeHashableStruct(_HashableWithHasher): var _value1: SomeHashableStruct var _value2: SomeHashableStruct - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): hasher.update(self._value1) hasher.update(self._value2) @@ -96,10 +96,10 @@ struct ComplexHashableStructWithList(_HashableWithHasher): var _value2: SomeHashableStruct var _value3: List[UInt8] - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): hasher.update(self._value1) hasher.update(self._value2) - # This is okay because self is passed as borrowed so the pointer will + # This is okay because self is passed as read-only so the pointer will # be valid until at least the end of the function hasher._update_with_bytes( data=self._value3.unsafe_ptr(), @@ -115,10 +115,10 @@ struct ComplexHashableStructWithListAndWideSIMD(_HashableWithHasher): var _value3: List[UInt8] var _value4: SIMD[DType.uint32, 4] - fn __hash__[H: _Hasher](self, inout hasher: H): + fn __hash__[H: _Hasher](self, mut hasher: H): hasher.update(self._value1) hasher.update(self._value2) - # This is okay because self is passed as borrowed so the pointer will + # This is okay because self is passed as read-only so the pointer will # be valid until at least the end of the function hasher._update_with_bytes( data=self._value3.unsafe_ptr(), diff --git a/stdlib/test/python/test_ownership.mojo b/stdlib/test/python/test_ownership.mojo index b2f1203332..ec7a71d89e 100644 --- a/stdlib/test/python/test_ownership.mojo +++ b/stdlib/test/python/test_ownership.mojo @@ -17,42 +17,42 @@ from python import Python, PythonObject from testing import assert_equal -fn test_import(inout python: Python) raises: +fn test_import(mut python: Python) raises: var my_module: PythonObject = Python.import_module("my_module") var py_string = my_module.my_function("Hello") var str = String(python.__str__(py_string)) assert_equal(str, "Formatting the string from Lit with Python: Hello") -fn test_list(inout python: Python) raises: +fn test_list(mut python: Python) raises: var b: PythonObject = Python.import_module("builtins") var my_list = PythonObject([1, 2.34, "False"]) var py_string = str(my_list) assert_equal(py_string, "[1, 2.34, 'False']") -fn test_tuple(inout python: Python) raises: +fn test_tuple(mut python: Python) raises: var b: PythonObject = Python.import_module("builtins") var my_tuple = PythonObject((1, 2.34, "False")) var py_string = str(my_tuple) assert_equal(py_string, "(1, 2.34, 'False')") -fn test_call_ownership(inout python: Python) raises: +fn test_call_ownership(mut python: Python) raises: var obj: PythonObject = [1, "5"] var py_string = str(obj) var string = python.__str__(py_string) assert_equal(string, "[1, '5']") -fn test_getitem_ownership(inout python: Python) raises: +fn test_getitem_ownership(mut python: Python) raises: var obj: PythonObject = [1, "5"] var py_string = str(obj[1]) var string = python.__str__(py_string) assert_equal(string, "5") -fn test_getattr_ownership(inout python: Python) raises: +fn test_getattr_ownership(mut python: Python) raises: var my_module: PythonObject = Python.import_module("my_module") var obj = my_module.Foo(4) var py_string = str(obj.bar) diff --git a/stdlib/test/python/test_python_info.mojo b/stdlib/test/python/test_python_info.mojo index 1728a10c24..b1b7eb29e7 100644 --- a/stdlib/test/python/test_python_info.mojo +++ b/stdlib/test/python/test_python_info.mojo @@ -19,7 +19,7 @@ from python._cpython import PythonVersion from testing import assert_equal -fn test_python_version(inout python: Python) raises: +fn test_python_version(mut python: Python) raises: var version = "3.10.8 (main, Nov 24 2022, 08:08:27) [Clang 14.0.6 ]" var pythonVersion = PythonVersion(version) assert_equal(pythonVersion.major, 3) diff --git a/stdlib/test/python/test_python_interop.mojo b/stdlib/test/python/test_python_interop.mojo index be71cfd2dc..3e1a465628 100644 --- a/stdlib/test/python/test_python_interop.mojo +++ b/stdlib/test/python/test_python_interop.mojo @@ -17,7 +17,7 @@ from python.python import Python, PythonObject, _get_global_python_itf from testing import assert_equal -fn test_execute_python_string(inout python: Python) -> String: +fn test_execute_python_string(mut python: Python) -> String: try: _ = Python.evaluate("print('evaluated by PyRunString')") return str(Python.evaluate("'a' + 'b'")) @@ -25,7 +25,7 @@ fn test_execute_python_string(inout python: Python) -> String: return str(e) -fn test_local_import(inout python: Python) -> String: +fn test_local_import(mut python: Python) -> String: try: var my_module: PythonObject = Python.import_module("my_module") if my_module: @@ -37,7 +37,7 @@ fn test_local_import(inout python: Python) -> String: return str(e) -fn test_dynamic_import(inout python: Python, times: Int = 1) -> String: +fn test_dynamic_import(mut python: Python, times: Int = 1) -> String: alias INLINE_MODULE = """ called_already = False def hello(name): @@ -56,7 +56,7 @@ def hello(name): return str(e) -fn test_call(inout python: Python) -> String: +fn test_call(mut python: Python) -> String: try: var my_module: PythonObject = Python.import_module("my_module") return str( diff --git a/stdlib/test/python/test_python_object.mojo b/stdlib/test/python/test_python_object.mojo index eed042c564..92180fb8d0 100644 --- a/stdlib/test/python/test_python_object.mojo +++ b/stdlib/test/python/test_python_object.mojo @@ -21,7 +21,7 @@ from testing import assert_equal, assert_false, assert_raises, assert_true from utils import StringRef -def test_dunder_methods(inout python: Python): +def test_dunder_methods(mut python: Python): var a = PythonObject(34) var b = PythonObject(10) diff --git a/stdlib/test/python/test_python_to_mojo.mojo b/stdlib/test/python/test_python_to_mojo.mojo index 0fbf502b7a..d621943f9c 100644 --- a/stdlib/test/python/test_python_to_mojo.mojo +++ b/stdlib/test/python/test_python_to_mojo.mojo @@ -17,7 +17,7 @@ from python import Python, PythonObject from testing import assert_equal, assert_false, assert_true -fn test_string_to_python_to_mojo(inout python: Python) raises: +fn test_string_to_python_to_mojo(mut python: Python) raises: var py_string = PythonObject("mojo") var py_string_capitalized = py_string.capitalize() diff --git a/stdlib/test/tempfile/test_tempfile.mojo b/stdlib/test/tempfile/test_tempfile.mojo index c186776e6e..d84ac25554 100644 --- a/stdlib/test/tempfile/test_tempfile.mojo +++ b/stdlib/test/tempfile/test_tempfile.mojo @@ -55,7 +55,7 @@ struct TempEnvWithCleanup: """Function called after the context manager exits if an error occurs.""" fn __init__( - inout self, + mut self, vars_to_set: Dict[String, String], clean_up_function: fn () raises -> None, ): @@ -63,20 +63,20 @@ struct TempEnvWithCleanup: self._vars_back = Dict[String, String]() self.clean_up_function = clean_up_function - def __enter__(inout self): + def __enter__(mut self): for key_value in self.vars_to_set.items(): var key = key_value[].key var value = key_value[].value self._vars_back[key] = os.getenv(key) _ = os.setenv(key, value, overwrite=True) - fn __exit__(inout self): + fn __exit__(mut self): for key_value in self.vars_to_set.items(): var key = key_value[].key var value = key_value[].value _ = os.setenv(key, value, overwrite=True) - def __exit__(inout self, error: Error) -> Bool: + def __exit__(mut self, error: Error) -> Bool: self.__exit__() self.clean_up_function() return False diff --git a/stdlib/test/utils/test_format.mojo b/stdlib/test/utils/test_format.mojo index e15d744a88..975d26464b 100644 --- a/stdlib/test/utils/test_format.mojo +++ b/stdlib/test/utils/test_format.mojo @@ -34,7 +34,7 @@ struct Point(Writable, Stringable): var y: Int @no_inline - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write("Point(", self.x, ", ", self.y, ")") @no_inline diff --git a/stdlib/test/utils/test_format_to_stdout.mojo b/stdlib/test/utils/test_format_to_stdout.mojo index c487ea14db..fed40ec33c 100644 --- a/stdlib/test/utils/test_format_to_stdout.mojo +++ b/stdlib/test/utils/test_format_to_stdout.mojo @@ -26,7 +26,7 @@ struct Point(Writable): var x: Int var y: Int - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write("Point(", self.x, ", ", self.y, ")") From 8c671cb9f6a17bac7b88732a185829043456cada Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sun, 1 Dec 2024 07:46:06 -0800 Subject: [PATCH 059/119] [******][GPU Enhance FPUtils to support fnuz float types MODULAR_ORIG_COMMIT_REV_ID: 8a2976ab0b99ec2d63ac2c0136bd89b40782b5ac --- stdlib/src/utils/numerics.mojo | 97 ++++++++++++++++++++++++++-------- 1 file changed, 76 insertions(+), 21 deletions(-) diff --git a/stdlib/src/utils/numerics.mojo b/stdlib/src/utils/numerics.mojo index f9a52a9972..f7d99244fe 100644 --- a/stdlib/src/utils/numerics.mojo +++ b/stdlib/src/utils/numerics.mojo @@ -67,9 +67,9 @@ struct FPUtils[ """ @parameter - if type is DType.float8e4m3: + if type in (DType.float8e4m3, DType.float8e4m3fnuz): return 3 - elif type is DType.float8e5m2: + elif type in (DType.float8e5m2, DType.float8e5m2fnuz): return 2 elif type is DType.float16: return 10 @@ -94,8 +94,12 @@ struct FPUtils[ @parameter if type is DType.float8e4m3: return 7 + elif type is DType.float8e4m3fnuz: + return 8 elif type is DType.float8e5m2: return 15 + elif type is DType.float8e5m2fnuz: + return 16 elif type is DType.float16: return 15 elif type is DType.float32 or type is DType.bfloat16: @@ -114,18 +118,7 @@ struct FPUtils[ The min exponent. """ - @parameter - if type is DType.float8e4m3: - return -6 - elif type is DType.float8e5m2: - return -14 - elif type is DType.float16: - return -14 - elif type is DType.float32 or type is DType.bfloat16: - return -126 - else: - constrained[type is DType.float64, "unsupported float type"]() - return -1022 + return -Self.max_exponent() + 1 @staticmethod @always_inline("nodebug") @@ -137,9 +130,9 @@ struct FPUtils[ """ @parameter - if type is DType.float8e4m3: + if type in (DType.float8e4m3, DType.float8e4m3fnuz): return 4 - elif type is DType.float8e5m2: + elif type in (DType.float8e5m2, DType.float8e5m2fnuz): return 5 elif type is DType.float16: return 5 @@ -537,6 +530,15 @@ fn nan[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"nan"> : !pop.scalar`], ]() ) + elif type is DType.float8e5m2fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"nan"> : !pop.scalar` + ], + ]() + ) elif type is DType.float8e4m3: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -544,6 +546,15 @@ fn nan[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"nan"> : !pop.scalar`], ]() ) + elif type is DType.float8e4m3fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"nan"> : !pop.scalar` + ], + ]() + ) elif type is DType.float16: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -600,7 +611,10 @@ fn isnan[ """ @parameter - if not type.is_floating_point(): + if not type.is_floating_point() or type in ( + DType.float8e4m3fnuz, + DType.float8e5m2fnuz, + ): return False alias int_dtype = _integral_type_of[type]() @@ -654,6 +668,15 @@ fn inf[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"inf"> : !pop.scalar`], ]() ) + elif type is DType.float8e5m2fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"inf"> : !pop.scalar` + ], + ]() + ) elif type is DType.float8e4m3: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -661,6 +684,15 @@ fn inf[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"inf"> : !pop.scalar`], ]() ) + elif type is DType.float8e4m3fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"inf"> : !pop.scalar` + ], + ]() + ) elif type is DType.float16: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -721,6 +753,15 @@ fn neg_inf[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"-inf"> : !pop.scalar`], ]() ) + elif type is DType.float8e5m2fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"-inf"> : !pop.scalar` + ], + ]() + ) elif type is DType.float8e4m3: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -728,6 +769,15 @@ fn neg_inf[type: DType]() -> Scalar[type]: value = __mlir_attr[`#pop.simd<"-inf"> : !pop.scalar`], ]() ) + elif type is DType.float8e4m3fnuz: + return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( + __mlir_op.`kgen.param.constant`[ + _type = __mlir_type[`!pop.scalar`], + value = __mlir_attr[ + `#pop.simd<"-inf"> : !pop.scalar` + ], + ]() + ) elif type is DType.float16: return rebind[__mlir_type[`!pop.scalar<`, type.value, `>`]]( __mlir_op.`kgen.param.constant`[ @@ -801,7 +851,9 @@ fn max_finite[type: DType]() -> Scalar[type]: return 18446744073709551615 elif type is DType.float8e4m3: return 448 - elif type is DType.float8e5m2: + elif type is DType.float8e4m3fnuz: + return 240 + elif type in (DType.float8e5m2, DType.float8e5m2fnuz): return 57344 elif type is DType.float16: return 65504 @@ -932,9 +984,11 @@ fn isinf[ """ @parameter - if not type.is_floating_point(): + if not type.is_floating_point() or type in ( + DType.float8e4m3fnuz, + DType.float8e5m2fnuz, + ): return False - elif type is DType.float8e5m2: # For the float8e5m2 both 7C and FC are infinity. alias int_dtype = _integral_type_of[type]() @@ -1087,10 +1141,11 @@ fn ulp[ constrained[type.is_floating_point(), "the type must be floating point"]() + alias inf_val = SIMD[type, simd_width](inf[type]()) + var nan_mask = isnan(x) var xabs = abs(x) var inf_mask = isinf(xabs) - alias inf_val = SIMD[type, simd_width](inf[type]()) var x2 = nextafter(xabs, inf_val) var x2_inf_mask = isinf(x2) From 782a277e6b94fcc8006ceb949198fdd705dc1377 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sun, 1 Dec 2024 08:16:34 -0800 Subject: [PATCH 060/119] [Stdlib] Simplify the code for powf function, NFC MODULAR_ORIG_COMMIT_REV_ID: 60447a21c51b70796fbc62aa27c2760259703809 --- stdlib/src/builtin/simd.mojo | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index a70d660217..bacee6e4bf 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -802,7 +802,7 @@ struct SIMD[type: DType, size: Int]( specified exponent value. """ constrained[type.is_numeric(), "the SIMD type must be numeric"]() - return _pow[type, size, DType.index](self, exp) + return _pow(self, SIMD[DType.index, size](exp)) # TODO(#22771): remove this overload. @always_inline("nodebug") @@ -2952,17 +2952,13 @@ fn _tbl1( @always_inline fn _pow[ - BaseTy: DType, simd_width: Int, ExpTy: DType -](base: SIMD[BaseTy, simd_width], exp: SIMD[ExpTy, simd_width]) -> __type_of( - base -): + simd_width: Int +](base: SIMD[_, simd_width], exp: SIMD[_, simd_width]) -> __type_of(base): """Computes the power of the elements of a SIMD vector raised to the corresponding elements of another SIMD vector. Parameters: - BaseTy: The `dtype` of the `base` SIMD vector. simd_width: The width of the input and output SIMD vectors. - ExpTy: The `dtype` of the `exp` SIMD vector. Args: base: Base of the power operation. @@ -2973,9 +2969,9 @@ fn _pow[ """ @parameter - if ExpTy.is_floating_point() and BaseTy == ExpTy: + if exp.type.is_floating_point() and base.type is exp.type: return _powf(base, exp) - elif ExpTy.is_integral(): + elif exp.type.is_integral(): # Common cases if all(exp == 2): return base * base @@ -3030,12 +3026,15 @@ fn _powf[ @always_inline -fn _powi[type: DType](base: Scalar[type], exp: Int32) -> __type_of(base): +fn _powi(base: Scalar, exp: Int32) -> __type_of(base): + alias type = base.type + if type.is_integral() and exp < 0: # Not defined for Integers, this should raise an # exception. debug_assert(False, "exponent < 0 is undefined for integers") return 0 + var a = base var b = abs(exp) if type.is_floating_point() else exp var res: Scalar[type] = 1 From d84ee3223f1a753672f82722502f623bbcce5904 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 1 Dec 2024 09:22:56 -0800 Subject: [PATCH 061/119] [mojo-docs] Update the documentation to new keywords This does a big migration of the documentation over to the new argument convention spellings, and also catches some uses of `inout` in inits that moved to `out`. MODULAR_ORIG_COMMIT_REV_ID: b5562aa2bbcd3260a83e354ee97964c3d58920b0 --- docs/manual/basics.mdx | 2 +- docs/manual/errors.mdx | 14 +++--- docs/manual/functions.mdx | 14 +++--- docs/manual/lifecycle/death.mdx | 2 +- docs/manual/lifecycle/life.mdx | 14 +++--- docs/manual/operators.mdx | 28 +++++------ docs/manual/packages.md | 2 +- docs/manual/parameters/index.mdx | 4 +- docs/manual/pointers.mdx | 2 +- docs/manual/structs.mdx | 6 +-- docs/manual/traits.mdx | 2 +- docs/manual/values/lifetimes.mdx | 6 +-- docs/manual/values/ownership.mdx | 64 +++++++++++++------------- docs/manual/values/value-semantics.mdx | 4 +- stdlib/docs/bencher/Bench.md | 18 ++++---- stdlib/docs/bencher/BenchConfig.md | 2 +- stdlib/docs/bencher/BenchId.md | 4 +- stdlib/docs/bencher/Bencher.md | 10 ++-- stdlib/docs/bencher/BenchmarkInfo.md | 2 +- stdlib/docs/style-guide.md | 2 +- 20 files changed, 101 insertions(+), 101 deletions(-) diff --git a/docs/manual/basics.mdx b/docs/manual/basics.mdx index 2253f8c7c9..938701d322 100644 --- a/docs/manual/basics.mdx +++ b/docs/manual/basics.mdx @@ -95,7 +95,7 @@ passed by reference, the short answer is: `def` functions receive arguments The longer short answer is that Mojo allows you to specify for each argument whether it should be passed by value (as `owned`), or whether it should be -passed by reference (as `borrowed` for an immutable reference, or as `inout` +passed by reference (as `read` for an immutable reference, or as `mut` for a mutable reference). This feature is entwined with Mojo's value ownership model, which protects you diff --git a/docs/manual/errors.mdx b/docs/manual/errors.mdx index c87fab7777..47e1a23711 100644 --- a/docs/manual/errors.mdx +++ b/docs/manual/errors.mdx @@ -298,14 +298,14 @@ import time struct Timer: var start_time: Int - fn __init__(inout self): + fn __init__(out self): self.start_time = 0 - fn __enter__(inout self) -> Self: + fn __enter__(mut self) -> Self: self.start_time = time.perf_counter_ns() return self - fn __exit__(inout self): + fn __exit__(mut self): end_time = time.perf_counter_ns() elapsed_time_ms = round(((end_time - self.start_time) / 1e6), 3) print("Elapsed time:", elapsed_time_ms, "milliseconds") @@ -371,19 +371,19 @@ import time struct ConditionalTimer: var start_time: Int - fn __init__(inout self): + fn __init__(out self): self.start_time = 0 - fn __enter__(inout self) -> Self: + fn __enter__(mut self) -> Self: self.start_time = time.perf_counter_ns() return self - fn __exit__(inout self): + fn __exit__(mut self): end_time = time.perf_counter_ns() elapsed_time_ms = round(((end_time - self.start_time) / 1e6), 3) print("Elapsed time:", elapsed_time_ms, "milliseconds") - fn __exit__(inout self, e: Error) raises -> Bool: + fn __exit__(mut self, e: Error) raises -> Bool: if str(e) == "just a warning": print("Suppressing error:", e) self.__exit__() diff --git a/docs/manual/functions.mdx b/docs/manual/functions.mdx index d35c3cad30..19d4c2e067 100644 --- a/docs/manual/functions.mdx +++ b/docs/manual/functions.mdx @@ -51,7 +51,7 @@ Here's everything to know about `fn`: value). * By default, arguments are received as an immutable reference (values are - read-only, using the `borrowed` [argument + read-only, using the `read` [argument convention](/mojo/manual/values/ownership#argument-conventions)). This prevents accidental mutations, and permits the use of non-copyable types @@ -59,7 +59,7 @@ Here's everything to know about `fn`: If you want a local copy, you can simply assign the value to a local variable. Or, you can get a mutable reference to the value by declaring the - `inout` [argument + `mut` [argument convention](/mojo/manual/values/ownership#argument-conventions)). * If the function raises an exception, it must be explicitly declared with the @@ -106,7 +106,7 @@ Here's everything to know about `def`: `def` function doesn't declare a return type of `None`, it's considered to return an `object` by default.) -* Arguments are mutable. Arguments default to using the `borrowed` +* Arguments are mutable. Arguments default to using the `read` [argument convention](/mojo/manual/values/ownership#argument-conventions) like an `fn` function, with a special addition: if the function mutates the argument, it makes a mutable copy. @@ -179,7 +179,7 @@ fn use_defaults(): ``` However, you cannot define a default value for an argument that's declared as -[`inout`](/mojo/manual/values/ownership#mutable-arguments-inout). +[`mut`](/mojo/manual/values/ownership#mutable-arguments-mut). Any optional arguments must appear after any required arguments. [Keyword-only arguments](#positional-only-and-keyword-only-arguments), discussed later, can @@ -280,7 +280,7 @@ of the value itself. You must add an empty subscript operator `[]` to dereference the reference and retrieve the value: ```mojo -def make_worldly(inout *strs: String): +def make_worldly(mut *strs: String): # Requires extra [] to dereference the reference for now. for i in strs: i[] += " world" @@ -291,7 +291,7 @@ Alternately, subscripting into a `VariadicListMem` returns the argument value, and doesn't require any dereferencing: ```mojo -fn make_worldly(inout *strs: String): +fn make_worldly(mut *strs: String): # This "just works" as you'd expect! for i in range(len(strs)): strs[i] += " world" @@ -415,7 +415,7 @@ There are currently a few limitations: ```mojo # Not supported yet. - fn borrowed_var_kwargs(borrowed **kwargs: Int): ... + fn read_var_kwargs(read **kwargs: Int): ... ``` * All the variadic keyword arguments must have the same type, and this diff --git a/docs/manual/lifecycle/death.mdx b/docs/manual/lifecycle/death.mdx index 4494e8b446..2f7ee808f7 100644 --- a/docs/manual/lifecycle/death.mdx +++ b/docs/manual/lifecycle/death.mdx @@ -353,7 +353,7 @@ struct TwoStrings: # self.str1 has been transferred so it is also destroyed now; # `self.__del__()` is not called (avoiding an infinite loop). - fn dump(inout self): + fn dump(mut self): print('str1:', self.str1) print('str2:', self.str2) diff --git a/docs/manual/lifecycle/life.mdx b/docs/manual/lifecycle/life.mdx index 800a81163d..91646caa5f 100644 --- a/docs/manual/lifecycle/life.mdx +++ b/docs/manual/lifecycle/life.mdx @@ -71,7 +71,7 @@ var mine = MyPet("Loki", 4) ``` An instance of `MyPet` can also be -[borrowed](/mojo/manual/values/ownership#borrowed-arguments-borrowed) +[read](/mojo/manual/values/ownership#read-arguments-read) and destroyed, but it currently can't be copied or moved. We believe this is a good default starting point, because there are no built-in @@ -99,8 +99,8 @@ example, you might want a default constructor that sets some default values and takes no arguments, and then additional constructors that accept more arguments. Just be aware that, in order to modify any fields, each constructor must -declare the `self` argument with the [`inout` -convention](/mojo/manual/values/ownership#mutable-arguments-inout). If you +declare the `self` argument with the [`out` +convention](/mojo/manual/values/ownership#mutable-arguments-mut). If you want to call one constructor from another, you simply call upon that constructor as you would externally (you don't need to pass `self`). @@ -287,7 +287,7 @@ mistakes when referring to the current struct name. Also, notice that the `existing` argument in `__copyinit__()` is immutable because the default [argument convention](/mojo/manual/values/ownership#argument-conventions) is -`borrowed`—this is a good thing because this function should not modify the +`read`—this is a good thing because this function should not modify the contents of the value being copied. ::: @@ -337,7 +337,7 @@ struct HeapArray: (self.data + i).destroy_pointee() self.data.free() - fn append(inout self, val: Int): + fn append(mut self, val: Int): # Update the array for demo purposes if self.size < self.cap: (self.data + self.size).init_pointee_copy(val) @@ -478,7 +478,7 @@ struct HeapArray: (self.data + i).destroy_pointee() self.data.free() - fn append(inout self, val: Int): + fn append(mut self, val: Int): # Update the array for demo purposes if self.size < self.cap: (self.data + self.size).init_pointee_copy(val) @@ -529,7 +529,7 @@ values that are expensive to copy. To go further and ensure your type can never be copied, you can make it "move-only" by implementing `__moveinit__()` and *excluding* `__copyinit__()`. A move-only type can be passed to other variables and passed into functions -with any argument convention (`borrowed`, `inout`, and `owned`)—the only catch +with any argument convention (`read`, `mut`, and `owned`)—the only catch is that you must use the `^` transfer sigil to end the lifetime of a move-only type when assigning it to a new variable or when passing it as an `owned` argument. diff --git a/docs/manual/operators.mdx b/docs/manual/operators.mdx index e8a72e4a8c..a11cbd2cd8 100644 --- a/docs/manual/operators.mdx +++ b/docs/manual/operators.mdx @@ -849,10 +849,10 @@ struct MyInt: def __radd__(self, lhs: Int) -> Self: return MyInt(self.value + lhs) - def __iadd__(inout self, rhs: MyInt) -> None: + def __iadd__(mut self, rhs: MyInt) -> None: self.value += rhs.value - def __iadd__(inout self, rhs: Int) -> None: + def __iadd__(mut self, rhs: Int) -> None: self.value += rhs ``` @@ -953,7 +953,7 @@ struct MySeq[type: CollectionElement]: fn __getitem__(self, idx: Int) -> type: # Return element at the given index ... - fn __setitem__(inout self, idx: Int, value: type): + fn __setitem__(mut self, idx: Int, value: type): # Assign the element at the given index the provided value ``` @@ -1116,7 +1116,7 @@ struct Complex( fn __str__(self) -> String: return String.write(self) - fn write_to[W: Writer](self, inout writer: W): + fn write_to[W: Writer](self, mut writer: W): writer.write("(", self.re) if self.im < 0: writer.write(" - ", -self.im) @@ -1169,7 +1169,7 @@ this example. else: raise "index out of bounds" - def __setitem__(inout self, idx: Int, value: Float64) -> None: + def __setitem__(mut self, idx: Int, value: Float64) -> None: if idx == 0: self.re = value elif idx == 1: @@ -1372,44 +1372,44 @@ f1 / c1 = (-0.068665598535133904 - 0.37193865873197529i) Now let's implement support for the in-place assignment operators: `+=`, `-=`, `*=`, and `/=`. These modify the original value, so we need to mark `self` as -being an `inout` argument and update the `re` and `im` fields instead of +being an `mut` argument and update the `re` and `im` fields instead of returning a new `Complex` instance. And once again, we'll overload the definitions to support both a `Complex` and a `Float64` operand. ```mojo # ... - def __iadd__(inout self, rhs: Self) -> None: + def __iadd__(mut self, rhs: Self) -> None: self.re += rhs.re self.im += rhs.im - def __iadd__(inout self, rhs: Float64) -> None: + def __iadd__(mut self, rhs: Float64) -> None: self.re += rhs - def __isub__(inout self, rhs: Self) -> None: + def __isub__(mut self, rhs: Self) -> None: self.re -= rhs.re self.im -= rhs.im - def __isub__(inout self, rhs: Float64) -> None: + def __isub__(mut self, rhs: Float64) -> None: self.re -= rhs - def __imul__(inout self, rhs: Self) -> None: + def __imul__(mut self, rhs: Self) -> None: new_re = self.re * rhs.re - self.im * rhs.im new_im = self.re * rhs.im + self.im * rhs.re self.re = new_re self.im = new_im - def __imul__(inout self, rhs: Float64) -> None: + def __imul__(mut self, rhs: Float64) -> None: self.re *= rhs self.im *= rhs - def __itruediv__(inout self, rhs: Self) -> None: + def __itruediv__(mut self, rhs: Self) -> None: denom = rhs.squared_norm() new_re = (self.re * rhs.re + self.im * rhs.im) / denom new_im = (self.im * rhs.re - self.re * rhs.im) / denom self.re = new_re self.im = new_im - def __itruediv__(inout self, rhs: Float64) -> None: + def __itruediv__(mut self, rhs: Float64) -> None: self.re /= rhs self.im /= rhs ``` diff --git a/docs/manual/packages.md b/docs/manual/packages.md index ec7f1b55ea..1b1b6927e0 100644 --- a/docs/manual/packages.md +++ b/docs/manual/packages.md @@ -23,7 +23,7 @@ struct MyPair: var first: Int var second: Int - fn __init__(inout self, first: Int, second: Int): + fn __init__(out self, first: Int, second: Int): self.first = first self.second = second diff --git a/docs/manual/parameters/index.mdx b/docs/manual/parameters/index.mdx index 788c87977a..be9066c974 100644 --- a/docs/manual/parameters/index.mdx +++ b/docs/manual/parameters/index.mdx @@ -402,7 +402,7 @@ struct MyStruct: fn __init__(out self): pass - fn foo(inout self): + fn foo(mut self): print("calling instance method") @staticmethod @@ -411,7 +411,7 @@ struct MyStruct: fn test_static_overload(): var a = MyStruct() - # `foo(inout self)` takes precedence over a static method. + # `foo(mut self)` takes precedence over a static method. a.foo() ``` diff --git a/docs/manual/pointers.mdx b/docs/manual/pointers.mdx index 37f0a84977..57482a3781 100644 --- a/docs/manual/pointers.mdx +++ b/docs/manual/pointers.mdx @@ -525,6 +525,6 @@ differences from `UnsafePointer` which make it safer: while the pointer exists. The `Pointer` type shouldn't be confused with the immutable and mutable -references used with the `borrowed` and `inout` argument conventions. Those +references used with the `read` and `mut` argument conventions. Those references do not require explicit dereferencing, unlike a `Pointer` or `UnsafePointer`. diff --git a/docs/manual/structs.mdx b/docs/manual/structs.mdx index 59acf95f66..92f0fdc1c0 100644 --- a/docs/manual/structs.mdx +++ b/docs/manual/structs.mdx @@ -50,8 +50,8 @@ struct MyPair: self.second = second ``` -Notice that the first argument in the `__init__()` method is `inout self`. For -now, ignore `inout` (it's an [argument +Notice that the first argument in the `__init__()` method is `out self`. For +now, ignore `out` (it's an [argument convention](/mojo/manual/values/ownership#argument-conventions) that declares `self` as a mutable reference); all you need to know right now is that `self` must be the first argument. It references the current struct instance @@ -310,7 +310,7 @@ When you add the `@value` decorator, Mojo synthesizes each special method above only if it doesn't exist already. That is, you can still implement a custom version of each method. -In addition to the `inout` argument convention you already saw with +In addition to the `out` argument convention you already saw with `__init__()`, this code also introduces `owned`, which is another argument convention that ensures the argument has unique ownership of the value. For more detail, see the section about [value diff --git a/docs/manual/traits.mdx b/docs/manual/traits.mdx index 4e1ae7b321..99da582c4b 100644 --- a/docs/manual/traits.mdx +++ b/docs/manual/traits.mdx @@ -441,7 +441,7 @@ struct Dog(Stringable, Representable, Writable): fn __str__(self) -> String: return String.write(self) - fn write_to[W: Writer](self, inout writer: W) -> None: + fn write_to[W: Writer](self, mut writer: W) -> None: writer.write("Dog(", self.name, ", ", self.age, ")") var dog = Dog("Rex", 5) diff --git a/docs/manual/values/lifetimes.mdx b/docs/manual/values/lifetimes.mdx index 24ff2b7982..39c2402f43 100644 --- a/docs/manual/values/lifetimes.mdx +++ b/docs/manual/values/lifetimes.mdx @@ -205,8 +205,8 @@ You can use the `ref` keyword with arguments and return values to specify a reference with parametric mutability. That is, they can be either mutable or immutable. -From inside the called function, a `ref` argument looks like a `borrowed` or -`inout` argument. +From inside the called function, a `ref` argument looks like a `read` or +`mut` argument. A `ref` return value looks like any other return value to the calling function, but it is a *reference* to an existing value, not a copy. @@ -282,7 +282,7 @@ Mutable: Goodbye ### `ref` return values Like `ref` arguments, `ref` return values allow a function to return a mutable -or immutable reference to a value. Like a `borrowed` or `inout` argument, these +or immutable reference to a value. Like a `read` or `mut` argument, these references don't need to be dereferenced. `ref` return values can be an efficient way to handle updating items in a diff --git a/docs/manual/values/ownership.mdx b/docs/manual/values/ownership.mdx index 5748afe073..d45ecc7c70 100644 --- a/docs/manual/values/ownership.mdx +++ b/docs/manual/values/ownership.mdx @@ -65,11 +65,11 @@ An argument convention specifies whether an argument is mutable or immutable, and whether the function owns the value. Each convention is defined by a keyword at the beginning of an argument declaration: -* `borrowed`: The function receives an **immutable reference**. This means the +* `read`: The function receives an **immutable reference**. This means the function can read the original value (it is *not* a copy), but it cannot mutate (modify) it. `def` functions treat this differently, as described below. -* `inout`: The function receives a **mutable reference**. This means the +* `mut`: The function receives a **mutable reference**. This means the function can read and mutate the original value (it is *not* a copy). * `owned`: The function takes **ownership** of a value. This means the function @@ -80,7 +80,7 @@ keyword at the beginning of an argument declaration: * `ref`: The function gets a reference with an parametric mutability: that is, the reference can be either mutable or immutable. You can think of `ref` - arguments as a generalization of the `borrowed` and `inout` conventions. + arguments as a generalization of the `read` and `mut` conventions. `ref` arguments are an advanced topic, and they're described in more detail in [Lifetimes and references](/mojo/manual/values/lifetimes). @@ -88,7 +88,7 @@ For example, this function has one argument that's a mutable reference and one that's immutable: ```mojo -fn add(inout x: Int, borrowed y: Int): +fn add(mut x: Int, read y: Int): x += y fn main(): @@ -99,14 +99,14 @@ fn main(): ``` You've probably already seen some function arguments that don't declare a -convention. by default, all arguments are `borrowed`. +convention. by default, all arguments are `read`. In the following sections, we'll explain each of these argument conventions in more detail. -## Borrowed arguments (`borrowed`) +## Borrowed arguments (`read`) -The `borrowed` convention is the default for all arguments. But `def` and `fn` -functions treat `borrowed` arguments somewhat differently: +The `read` convention is the default for all arguments. But `def` and `fn` +functions treat `read` arguments somewhat differently: * In a [`def` function](/mojo/manual/functions#def-functions), if you mutate the value in the body of the function, the function receives a mutable copy of @@ -119,7 +119,7 @@ functions treat `borrowed` arguments somewhat differently: assign it to a local variable: ```mojo - var my_copy = borrowed_arg + var my_copy = read_arg ``` In both cases, the original value on the caller side can't be changed by the @@ -142,7 +142,7 @@ print_list(list) [1, 2, 3, 4] ``` -Here the `list` argument to `print_list()` is borrowed and not mutated, so the +Here the `list` argument to `print_list()` is read and not mutated, so the `print_list()` function gets an immutable reference to the original `List`, and doesn't do any copying. @@ -152,9 +152,9 @@ and destructor are not invoked for a borrow. ### Compared to C++ and Rust -Mojo's borrowed argument convention is similar in some ways to passing an +Mojo's read argument convention is similar in some ways to passing an argument by `const&` in C++, which also avoids a copy of the value and disables -mutability in the callee. However, the borrowed convention differs from +mutability in the callee. However, the read convention differs from `const&` in C++ in two important ways: * The Mojo compiler implements a lifetime checker that ensures that values are @@ -174,10 +174,10 @@ passing small values, and Rust defaults to moving values instead of passing them around by borrow. These policy and syntax decisions allow Mojo to provide an easier-to-use programming model. -## Mutable arguments (`inout`) +## Mutable arguments (`mut`) -If you'd like your function to receive a **mutable reference**, add the `inout` -keyword in front of the argument name. You can think of `inout` like this: it +If you'd like your function to receive a **mutable reference**, add the `mut` +keyword in front of the argument name. You can think of `mut` like this: it means any changes to the value *in*side the function are visible *out*side the function. @@ -186,7 +186,7 @@ For example, this `mutate()` function updates the original `list` value: ```mojo from collections import List -def mutate(inout l: List[Int]): +def mutate(mut l: List[Int]): l.append(5) var list = List(1, 2, 3, 4) @@ -217,18 +217,18 @@ print_list(list) [1, 2, 3, 4, 5] ``` -Although the code using `inout` isn't that much shorter, it's more memory +Although the code using `mut` isn't that much shorter, it's more memory efficient because it does not make a copy of the value. -However, remember that the values passed as `inout` must already be mutable. -For example, if you try to take a `borrowed` value and pass it to another -function as `inout`, you'll get a compiler error because Mojo can't form a +However, remember that the values passed as `mut` must already be mutable. +For example, if you try to take a `read` value and pass it to another +function as `mut`, you'll get a compiler error because Mojo can't form a mutable reference from an immutable reference. :::note You cannot define [default -values](/mojo/manual/functions#optional-arguments) for `inout` +values](/mojo/manual/functions#optional-arguments) for `mut` arguments. ::: @@ -236,14 +236,14 @@ arguments. ### Argument exclusivity Mojo enforces *argument exclusivity* for mutable references. This means that if -a function receives a mutable reference to a value (such as an `inout` argument), +a function receives a mutable reference to a value (such as an `mut` argument), it can't receive any other references to the same value—mutable or immutable. That is, a mutable reference can't have any other references that *alias* it. For example, consider the following code example: ```mojo -fn append_twice(inout s: String, other: String): +fn append_twice(mut s: String, other: String): # Mojo knows 's' and 'other' cannot be the same string. s += other s += other @@ -251,8 +251,8 @@ fn append_twice(inout s: String, other: String): fn invalid_access(): var my_string = str("o") - # error: passing `my_string` inout is invalid since it is also passed - # borrowed. + # error: passing `my_string` mut is invalid since it is also passed + # read. append_twice(my_string, my_string) print(my_string) ``` @@ -374,7 +374,7 @@ destroyed at the end of the function. ```mojo from collections import List -def add_to_list(owned name: String, inout list: List[String]): +def add_to_list(owned name: String, mut list: List[String]): list.append(name^) # name is uninitialized, nothing to destroy @@ -429,16 +429,16 @@ function is essentially just sugaring for the `fn` function: [`object`](/mojo/stdlib/builtin/object/object) type (whereas as `fn` requires all types be explicitly declared). -* A `def` function can treat a `borrowed` argument as mutable (in which case it +* A `def` function can treat a `read` argument as mutable (in which case it receives a mutable copy). An `fn` function must make this copy explicitly. For example, these two functions have the exact same behavior. ```mojo -def def_example(a: Int, inout b: Int, owned c): +def def_example(a: Int, mut b: Int, owned c): pass -fn fn_example(a_in: Int, inout b: Int, owned c: object): +fn fn_example(a_in: Int, mut b: Int, owned c: object): var a = a_in pass ``` @@ -450,12 +450,12 @@ copying large numbers of strings.) ### Borrowed versus owned in `def` functions -The difference between `borrowed` and `owned` in a `def` function may be a +The difference between `read` and `owned` in a `def` function may be a little subtle. In both cases, you can end up with a uniquely-owned value that's a copy of the original value. -* The `borrowed` argument always gets an immutable reference or a local copy. - You can't transfer a value into a `borrowed` argument. +* The `read` argument always gets an immutable reference or a local copy. + You can't transfer a value into a `read` argument. * The `owned` argument always gets a uniquely owned value, which may have been copied or transferred from the callee. Using `owned` arguments without the diff --git a/docs/manual/values/value-semantics.mdx b/docs/manual/values/value-semantics.mdx index 403db993b6..58b1896f2c 100644 --- a/docs/manual/values/value-semantics.mdx +++ b/docs/manual/values/value-semantics.mdx @@ -120,9 +120,9 @@ and only make a copy when it's explicitly requested. The arguments above are mutable because a [`def` function](/mojo/manual/functions#def-functions) has special treatment for the default -[`borrowed` argument convention](/mojo/manual/values/ownership#argument-conventions). +[`read` argument convention](/mojo/manual/values/ownership#argument-conventions). -Whereas, `fn` functions always receive `borrowed` arguments as immutable +Whereas, `fn` functions always receive `read` arguments as immutable references. This is a memory optimization to avoid making unnecessary copies. diff --git a/stdlib/docs/bencher/Bench.md b/stdlib/docs/bencher/Bench.md index 1e71a29c53..19133b572f 100644 --- a/stdlib/docs/bencher/Bench.md +++ b/stdlib/docs/bencher/Bench.md @@ -33,7 +33,7 @@ Defines the main Benchmark struct which executes a Benchmark and print result.
```mojo -__init__(inout self: Self, config: Optional[BenchConfig] = #kgen.none, mode: Mode = 0) +__init__(out self: Self, config: Optional[BenchConfig] = #kgen.none, mode: Mode = 0) ```
@@ -56,7 +56,7 @@ Constructs a Benchmark object based on specific configuration and mode.
```mojo -bench_with_input[T: AnyType, bench_fn: fn(inout Bencher, $0) capturing -> None](inout self: Self, bench_id: BenchId, input: T, throughput_elems: Optional[Int] = #kgen.none) +bench_with_input[T: AnyType, bench_fn: fn(mut Bencher, $0) capturing -> None](mut self: Self, bench_id: BenchId, input: T, throughput_elems: Optional[Int] = #kgen.none) ```
@@ -66,7 +66,7 @@ Benchmarks an input function with input args of type AnyType. **Parameters:** - ​T (`AnyType`): Benchmark function input type. -- ​bench_fn (`fn(inout Bencher, $0) capturing -> None`): The function to +- ​bench_fn (`fn(mut Bencher, $0) capturing -> None`): The function to be benchmarked. **Args:** @@ -83,7 +83,7 @@ Benchmarks an input function with input args of type AnyType.
```mojo -bench_with_input[T: AnyTrivialRegType, bench_fn: fn(inout Bencher, $0) capturing -> None](inout self: Self, bench_id: BenchId, input: T, throughput_elems: Optional[Int] = #kgen.none) +bench_with_input[T: AnyTrivialRegType, bench_fn: fn(mut Bencher, $0) capturing -> None](mut self: Self, bench_id: BenchId, input: T, throughput_elems: Optional[Int] = #kgen.none) ```
@@ -93,7 +93,7 @@ Benchmarks an input function with input args of type AnyTrivialRegType. **Parameters:** - ​T (`AnyTrivialRegType`): Benchmark function input type. -- ​bench_fn (`fn(inout Bencher, $0) capturing -> None`): The function to +- ​bench_fn (`fn(mut Bencher, $0) capturing -> None`): The function to be benchmarked. **Args:** @@ -112,7 +112,7 @@ Benchmarks an input function with input args of type AnyTrivialRegType.
```mojo -bench_function[bench_fn: fn(inout Bencher) capturing -> None](inout self: Self, bench_id: BenchId, throughput_elems: Optional[Int] = #kgen.none) +bench_function[bench_fn: fn(mut Bencher) capturing -> None](mut self: Self, bench_id: BenchId, throughput_elems: Optional[Int] = #kgen.none) ```
@@ -121,7 +121,7 @@ Benchmarks or Tests an input function. **Parameters:** -- ​bench_fn (`fn(inout Bencher) capturing -> None`): The function to be +- ​bench_fn (`fn(mut Bencher) capturing -> None`): The function to be benchmarked. **Args:** @@ -137,7 +137,7 @@ Benchmarks or Tests an input function.
```mojo -bench_function[bench_fn: fn(inout Bencher) raises capturing -> None](inout self: Self, bench_id: BenchId, throughput_elems: Optional[Int] = #kgen.none) +bench_function[bench_fn: fn(mut Bencher) raises capturing -> None](mut self: Self, bench_id: BenchId, throughput_elems: Optional[Int] = #kgen.none) ```
@@ -146,7 +146,7 @@ Benchmarks or Tests an input function. **Parameters:** -- ​bench_fn (`fn(inout Bencher) raises capturing -> None`): The function +- ​bench_fn (`fn(mut Bencher) raises capturing -> None`): The function to be benchmarked. **Args:** diff --git a/stdlib/docs/bencher/BenchConfig.md b/stdlib/docs/bencher/BenchConfig.md index cebb46f13f..8a83984d5e 100644 --- a/stdlib/docs/bencher/BenchConfig.md +++ b/stdlib/docs/bencher/BenchConfig.md @@ -48,7 +48,7 @@ frequency.
```mojo -__init__(inout self: out_file: Optional[Path] = None, min_runtime_secs: SIMD[float64, 1] = 1.0, max_runtime_secs: SIMD[float64, 1] = 2.0, min_warmuptime_secs: SIMD[float64, 1] = 1.0, max_batch_size: Int = 0, max_iters: Int = 1000000000, num_repetitions: Int = 1, flush_denormals: Bool = True) +__init__(out self: out_file: Optional[Path] = None, min_runtime_secs: SIMD[float64, 1] = 1.0, max_runtime_secs: SIMD[float64, 1] = 2.0, min_warmuptime_secs: SIMD[float64, 1] = 1.0, max_batch_size: Int = 0, max_iters: Int = 1000000000, num_repetitions: Int = 1, flush_denormals: Bool = True) ```
diff --git a/stdlib/docs/bencher/BenchId.md b/stdlib/docs/bencher/BenchId.md index e305f890fe..0d215bd972 100644 --- a/stdlib/docs/bencher/BenchId.md +++ b/stdlib/docs/bencher/BenchId.md @@ -30,7 +30,7 @@ execution.
-`__init__(inout self: Self, func_name: String, input_id: String)` +`__init__(out self: Self, func_name: String, input_id: String)`
@@ -47,7 +47,7 @@ Constructs a Benchmark Id object from input function name and Id phrase.
-`__init__(inout self: Self, func_name: String)` +`__init__(out self: Self, func_name: String)`
diff --git a/stdlib/docs/bencher/Bencher.md b/stdlib/docs/bencher/Bencher.md index 4270a7a714..91d68e80d8 100644 --- a/stdlib/docs/bencher/Bencher.md +++ b/stdlib/docs/bencher/Bencher.md @@ -30,7 +30,7 @@ Defines a Bencher struct which facilitates the timing of a target function.
-`__init__(inout self: Self, num_iters: Int)` +`__init__(out self: Self, num_iters: Int)`
@@ -48,7 +48,7 @@ Constructs a Bencher object to run and time a function.
-`iter[iter_fn: fn() capturing -> None](inout self: Self)` +`iter[iter_fn: fn() capturing -> None](mut self: Self)`
@@ -65,7 +65,7 @@ of times.
-`iter[iter_fn: fn() raises capturing -> None](inout self: Self)` +`iter[iter_fn: fn() raises capturing -> None](mut self: Self)`
@@ -85,7 +85,7 @@ of times.
-`iter_custom[iter_fn: fn(Int) capturing -> Int](inout self: Self)` +`iter_custom[iter_fn: fn(Int) capturing -> Int](mut self: Self)`
@@ -101,7 +101,7 @@ Times a target function with custom number of iterations.
-`iter_custom[iter_fn: fn(Int) raises capturing -> Int](inout self: Self)` +`iter_custom[iter_fn: fn(Int) raises capturing -> Int](mut self: Self)`
diff --git a/stdlib/docs/bencher/BenchmarkInfo.md b/stdlib/docs/bencher/BenchmarkInfo.md index 88eafec487..52b2922fa0 100644 --- a/stdlib/docs/bencher/BenchmarkInfo.md +++ b/stdlib/docs/bencher/BenchmarkInfo.md @@ -33,7 +33,7 @@ Defines a Benchmark Info struct to record execution Statistics.
-`__init__(inout self: Self, name: String, result: Report, elems: Optional[Int])` +`__init__(out self: Self, name: String, result: Report, elems: Optional[Int])`
diff --git a/stdlib/docs/style-guide.md b/stdlib/docs/style-guide.md index f1c135cf4f..dc07d62088 100644 --- a/stdlib/docs/style-guide.md +++ b/stdlib/docs/style-guide.md @@ -283,7 +283,7 @@ the same type: ```mojo struct MyStruct: # Invoked as `MyStruct(other)` - fn __init__(inout self, other: Self): + fn __init__(out self, other: Self): # do a deep copy of MyStruct ``` From 1341e18488fe0b49a2dc8dca031fe501d0f38393 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 1 Dec 2024 09:29:25 -0800 Subject: [PATCH 062/119] [mojo-lang][KGEN] Rename argument convention enums This renames the ArgConvention enums over to follow the new naming in the Mojo source. This also makes a variety of changes to improve consistency in the codebase, cleaning up old remnants of 'inout' etc. MODULAR_ORIG_COMMIT_REV_ID: 117874f7161ed1df3aa1db967cd42678c6e358a2 --- proposals/improved-hash-module.md | 44 ++++++++++++------------- proposals/opt-in-implicit-conversion.md | 2 +- proposals/remove-let-decls.md | 2 +- stdlib/src/builtin/builtin_list.mojo | 4 +-- 4 files changed, 26 insertions(+), 26 deletions(-) diff --git a/proposals/improved-hash-module.md b/proposals/improved-hash-module.md index c2f9c460fb..ee2bd138f5 100644 --- a/proposals/improved-hash-module.md +++ b/proposals/improved-hash-module.md @@ -62,16 +62,16 @@ of the `Hashable` trait. ```mojo trait Hasher: """Trait which every hash function implementer needs to implement.""" - fn __init__(inout self): + fn __init__(out self): """Expects a no argument instantiation.""" ... - fn _update_with_bytes(inout self, bytes: DTypePointer[DType.uint8], n: Int): + fn _update_with_bytes(mut self, bytes: DTypePointer[DType.uint8], n: Int): """Conribute to the hash value based on a sequence of bytes. Use only for complex types which are not just a composition of Hashable types.""" ... - fn _update_with_simd[dt: DType, size: Int](inout self, value: SIMD[dt, size]): + fn _update_with_simd[dt: DType, size: Int](mut self, value: SIMD[dt, size]): """Contribute to the hash value with a compile time know fix size value. Used inside of std lib to avoid runtime branching.""" ... - fn update[T: Hashable](inout self, value: T): + fn update[T: Hashable](mut self, value: T): """Contribute to the hash value with a Hashable value. Should be used by implementors of Hashable types which are a composition of Hashable types.""" ... fn _finish[dt: DType = DType.uint64](owned self) -> Scalar[dt]: @@ -93,13 +93,13 @@ Below you can see a dummy implementation of a `DefaultHasher` struct DefaultHasher(Hasher): var hash: UInt64 - fn __init__(inout self): + fn __init__(out self): self.hash = 42 - fn _update_with_bytes(inout self, bytes: DTypePointer[DType.uint8], n: Int): + fn _update_with_bytes(mut self, bytes: DTypePointer[DType.uint8], n: Int): ... - fn _update_with_simd[dt: DType, size: Int](inout self, value: SIMD[dt, size]): + fn _update_with_simd[dt: DType, size: Int](mut self, value: SIMD[dt, size]): ... - fn update[T: Hashable](inout self, value: T): + fn update[T: Hashable](mut self, value: T): ... fn _finish[dt: DType = DType.uint64](owned self) -> Scalar[dt]: return self.hash.cast[dt]() @@ -112,7 +112,7 @@ data flow paradigm instead of call return. ```mojo trait Hashable: - fn hash_with[H: Hasher](self, inout hasher: H): + fn hash_with[H: Hasher](self, mut hasher: H): ... ``` @@ -128,7 +128,7 @@ struct Person(Hashable): var name: String var age: Int - fn __hash__[H: Hasher](self, inout hasher: H): + fn __hash__[H: Hasher](self, mut hasher: H): hasher.update(self.name) hasher.update(self.age) ``` @@ -155,21 +155,21 @@ from random import random_si64 trait Hashable: """Trait which every hashable type needs to implement.""" - fn __hash__[H: Hasher](self, inout hasher: H): + fn __hash__[H: Hasher](self, mut hasher: H): ... trait Hasher: """Trait which every hash function implementer needs to implement.""" - fn __init__(inout self): + fn __init__(out self): """Expects a no argument instantiation.""" ... - fn _update_with_bytes(inout self, bytes: DTypePointer[DType.uint8], n: Int): + fn _update_with_bytes(mut self, bytes: DTypePointer[DType.uint8], n: Int): """Conribute to the hash value based on a sequence of bytes. Use only for complex types which are not just a composition of Hashable types.""" ... - fn _update_with_simd[dt: DType, size: Int](inout self, value: SIMD[dt, size]): + fn _update_with_simd[dt: DType, size: Int](mut self, value: SIMD[dt, size]): """Contribute to the hash value with a compile time know fix size value. Used inside of std lib to avoid runtime branching.""" ... - fn update[T: Hashable](inout self, value: T): + fn update[T: Hashable](mut self, value: T): """Contribute to the hash value with a Hashable value. Should be used by implementors of Hashable types which are a composition of Hashable types.""" ... fn _finish[dt: DType = DType.uint64](owned self) -> Scalar[dt]: @@ -184,7 +184,7 @@ struct MyInt(Hashable): var value: Int @always_inline - fn __hash__[H: Hasher](self, inout hasher: H): + fn __hash__[H: Hasher](self, mut hasher: H): hasher._update_with_simd(Int64(self.value)) @value @@ -193,7 +193,7 @@ struct MyString(Hashable): var value: StringLiteral @always_inline - fn __hash__[H: Hasher](self, inout hasher: H): + fn __hash__[H: Hasher](self, mut hasher: H): hasher.update(MyInt(len(self.value))) hasher._update_with_bytes(self.value.data().bitcast[DType.uint8](), len(self.value)) @@ -203,7 +203,7 @@ struct Person(Hashable): var name: MyString var age: MyInt - fn __hash__[H: Hasher](self, inout hasher: H): + fn __hash__[H: Hasher](self, mut hasher: H): hasher.update(self.name) hasher.update(self.age) @@ -235,7 +235,7 @@ struct DJBX33A_Hasher[custom_secret: UInt64 = 0](Hasher): var secret: UInt64 @always_inline - fn __init__(inout self): + fn __init__(out self): self.hash_data = 5361 @parameter if custom_secret != 0: @@ -244,13 +244,13 @@ struct DJBX33A_Hasher[custom_secret: UInt64 = 0](Hasher): self.secret = _DJBX33A_SECRET() @always_inline - fn _update_with_bytes(inout self, bytes: DTypePointer[DType.uint8], n: Int): + fn _update_with_bytes(mut self, bytes: DTypePointer[DType.uint8], n: Int): """The algorithm is not optimal.""" for i in range(n): self.hash_data = self.hash_data * 33 + bytes.load(i).cast[DType.uint64]() @always_inline - fn _update_with_simd[dt: DType, size: Int](inout self, value: SIMD[dt, size]): + fn _update_with_simd[dt: DType, size: Int](mut self, value: SIMD[dt, size]): """The algorithm is not optimal.""" alias size_in_bytes = size * dt.sizeof() var bytes = bitcast[DType.uint8, size_in_bytes](value) @@ -259,7 +259,7 @@ struct DJBX33A_Hasher[custom_secret: UInt64 = 0](Hasher): self.hash_data = self.hash_data * 33 + bytes[i].cast[DType.uint64]() @always_inline - fn update[T: Hashable](inout self, value: T): + fn update[T: Hashable](mut self, value: T): value.__hash__(self) @always_inline diff --git a/proposals/opt-in-implicit-conversion.md b/proposals/opt-in-implicit-conversion.md index ea3858da06..e2d7dc7e81 100644 --- a/proposals/opt-in-implicit-conversion.md +++ b/proposals/opt-in-implicit-conversion.md @@ -69,7 +69,7 @@ let foo: Foo = 10 ```python struct Foo: @implicit_conversion - fn __init__(inout self, i: Int): + fn __init__(out self, i: Int): pass var foo: Foo = 10 diff --git a/proposals/remove-let-decls.md b/proposals/remove-let-decls.md index ec09b19359..34f8eb3b7c 100644 --- a/proposals/remove-let-decls.md +++ b/proposals/remove-let-decls.md @@ -68,7 +68,7 @@ a great way to define defaulted field values, e.g.: struct Thing: # This is not actually supported right now, but imagine it were. let field = 42 - fn __init__(inout self): + fn __init__(out self): self.field = 17 # shouldn't be able to overwrite field? ``` diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 0272fbc2d6..be5ddaaa05 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -311,7 +311,7 @@ struct VariadicListMem[ alias reference_type = Pointer[element_type, origin] alias _mlir_ref_type = Self.reference_type._mlir_type alias _mlir_type = __mlir_type[ - `!kgen.variadic<`, Self._mlir_ref_type, `, borrow_in_mem>` + `!kgen.variadic<`, Self._mlir_ref_type, `, read_mem>` ] var value: Self._mlir_type @@ -343,7 +343,7 @@ struct VariadicListMem[ # automatically be inferred to be mutable, and the !kgen.variadic will have # convention=mut. alias _inout_variadic_type = __mlir_type[ - `!kgen.variadic<`, Self._mlir_ref_type, `, inout>` + `!kgen.variadic<`, Self._mlir_ref_type, `, mut>` ] @always_inline From 86bc06d463c0724007a79d8c3cead51c5da00e96 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sun, 1 Dec 2024 15:05:58 -0800 Subject: [PATCH 063/119] [******][GPU] Introduce a new GridIdx operation MODULAR_ORIG_COMMIT_REV_ID: 5ffe1df491c0c3f092ed645ffbe0756ebceeec04 --- stdlib/src/math/math.mojo | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 0c06a6b00a..2c7ee78a5d 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -1154,6 +1154,23 @@ fn fma(a: Int, b: Int, c: Int) -> Int: return a * b + c +@always_inline +fn fma(a: UInt, b: UInt, c: UInt) -> UInt: + """Performs `fma` (fused multiply-add) on the inputs. + + The result is `(a * b) + c`. + + Args: + a: The first input. + b: The second input. + c: The third input. + + Returns: + `(a * b) + c`. + """ + return a * b + c + + @always_inline("nodebug") fn fma[ type: DType, simd_width: Int From d02bb01500d7d022610e28bbcd65e7c61224daec Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Mon, 2 Dec 2024 13:00:47 -0700 Subject: [PATCH 064/119] [stdlib] Simplify `String.split` with isspace Now that `StringSlice.isspace()` exists, use it in `String.split` to avoid the `str(...)` calls. MODULAR_ORIG_COMMIT_REV_ID: 9cdd0d76aa059456be6bcdf79301e09bcf2730ec --- stdlib/src/collections/string.mojo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index d75d2098cd..a6051bbb81 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -1816,7 +1816,7 @@ struct String( # Python adds all "whitespace chars" as one separator # if no separator was specified for s in self[lhs:]: - if not str(s).isspace(): # TODO: with StringSlice.isspace() + if not s.isspace(): break lhs += s.byte_length() # if it went until the end of the String, then @@ -1830,7 +1830,7 @@ struct String( break rhs = lhs + num_bytes(self.unsafe_ptr()[lhs]) for s in self[lhs + num_bytes(self.unsafe_ptr()[lhs]) :]: - if str(s).isspace(): # TODO: with StringSlice.isspace() + if s.isspace(): break rhs += s.byte_length() From 57f4962e2eb730b6b3a59b18c061fad0e7c1a698 Mon Sep 17 00:00:00 2001 From: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Date: Mon, 2 Dec 2024 12:39:52 -0800 Subject: [PATCH 065/119] [External] [stdlib] Optimize `_StringSliceIter` to not have branching in forward iteration (#51441) [External] [stdlib] Optimize `_StringSliceIter` to not have branching in forward iteration Optimize `_StringSliceIter` to not have branching in forward iteration. This also fixes an error in the iterator's `__len__` logic which assumed it would be called only at the beginning of the iteration Co-authored-by: martinvuyk <110240700+martinvuyk@users.noreply.github.com> Closes modularml/mojo#3546 MODULAR_ORIG_COMMIT_REV_ID: 0919af33312b082a4bac7d1547a193fba378e56f --- stdlib/src/utils/string_slice.mojo | 58 ++++++++++-------------- stdlib/test/collections/test_string.mojo | 30 ++++++------ 2 files changed, 42 insertions(+), 46 deletions(-) diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 48be446549..666a25c45c 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -80,13 +80,9 @@ fn _utf8_first_byte_sequence_length(b: Byte) -> Int: debug_assert( (b & 0b1100_0000) != 0b1000_0000, - ( - "Function `_utf8_first_byte_sequence_length()` does not work" - " correctly if given a continuation byte." - ), + "Function does not work correctly if given a continuation byte.", ) - var flipped = ~b - return int(count_leading_zeros(flipped) + (flipped >> 7)) + return int(count_leading_zeros(~b)) + int(b < 0b1000_0000) fn _shift_unicode_to_utf8(ptr: UnsafePointer[UInt8], c: Int, num_bytes: Int): @@ -186,17 +182,13 @@ struct _StringSliceIter[ """ var index: Int - var continuation_bytes: Int - var ptr: UnsafePointer[UInt8] + var ptr: UnsafePointer[Byte] var length: Int - fn __init__(mut self, *, unsafe_pointer: UnsafePointer[UInt8], length: Int): + fn __init__(mut self, *, unsafe_pointer: UnsafePointer[Byte], length: Int): self.index = 0 if forward else length self.ptr = unsafe_pointer self.length = length - alias S = Span[Byte, StaticConstantOrigin] - var s = S(ptr=self.ptr, length=self.length) - self.continuation_bytes = _count_utf8_continuation_bytes(s) fn __iter__(self) -> Self: return self @@ -204,26 +196,14 @@ struct _StringSliceIter[ fn __next__(mut self) -> StringSlice[origin]: @parameter if forward: - var byte_len = 1 - if self.continuation_bytes > 0: - var byte_type = _utf8_byte_type(self.ptr[self.index]) - if byte_type != 0: - byte_len = int(byte_type) - self.continuation_bytes -= byte_len - 1 + byte_len = _utf8_first_byte_sequence_length(self.ptr[self.index]) + i = self.index self.index += byte_len - return StringSlice[origin]( - ptr=self.ptr + (self.index - byte_len), length=byte_len - ) + return StringSlice[origin](ptr=self.ptr + i, length=byte_len) else: - var byte_len = 1 - if self.continuation_bytes > 0: - var byte_type = _utf8_byte_type(self.ptr[self.index - 1]) - if byte_type != 0: - while byte_type == 1: - byte_len += 1 - var b = self.ptr[self.index - byte_len] - byte_type = _utf8_byte_type(b) - self.continuation_bytes -= byte_len - 1 + byte_len = 1 + while _utf8_byte_type(self.ptr[self.index - byte_len]) == 1: + byte_len += 1 self.index -= byte_len return StringSlice[origin]( ptr=self.ptr + self.index, length=byte_len @@ -231,14 +211,26 @@ struct _StringSliceIter[ @always_inline fn __has_next__(self) -> Bool: - return self.__len__() > 0 + @parameter + if forward: + return self.index < self.length + else: + return self.index > 0 fn __len__(self) -> Int: @parameter if forward: - return self.length - self.index - self.continuation_bytes + remaining = self.length - self.index + cont = _count_utf8_continuation_bytes( + Span[Byte, ImmutableAnyOrigin]( + ptr=self.ptr + self.index, length=remaining + ) + ) + return remaining - cont else: - return self.index - self.continuation_bytes + return self.index - _count_utf8_continuation_bytes( + Span[Byte, ImmutableAnyOrigin](ptr=self.ptr, length=self.index) + ) @value diff --git a/stdlib/test/collections/test_string.mojo b/stdlib/test/collections/test_string.mojo index c70ff3a50c..da23f5d9c7 100644 --- a/stdlib/test/collections/test_string.mojo +++ b/stdlib/test/collections/test_string.mojo @@ -1273,19 +1273,23 @@ def test_string_iter(): var idx = -1 vs = String("mojo🔥") - for item in vs: - idx += 1 - if idx == 0: - assert_equal("m", item) - elif idx == 1: - assert_equal("o", item) - elif idx == 2: - assert_equal("j", item) - elif idx == 3: - assert_equal("o", item) - elif idx == 4: - assert_equal("🔥", item) - assert_equal(4, idx) + var iterator = vs.__iter__() + assert_equal(5, len(iterator)) + var item = iterator.__next__() + assert_equal("m", item) + assert_equal(4, len(iterator)) + item = iterator.__next__() + assert_equal("o", item) + assert_equal(3, len(iterator)) + item = iterator.__next__() + assert_equal("j", item) + assert_equal(2, len(iterator)) + item = iterator.__next__() + assert_equal("o", item) + assert_equal(1, len(iterator)) + item = iterator.__next__() + assert_equal("🔥", item) + assert_equal(0, len(iterator)) var items = List[String]( "mojo🔥", From 4a01dbb17438c851a8d2cc9887a72e611768d28e Mon Sep 17 00:00:00 2001 From: modularbot Date: Tue, 3 Dec 2024 02:01:11 +0000 Subject: [PATCH 066/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024120221 --- examples/life/magic.lock | 427 ++++++++++++++------------- examples/magic.lock | 427 ++++++++++++++------------- examples/notebooks/magic.lock | 528 +++++++++++++++++----------------- examples/operators/magic.lock | 427 ++++++++++++++------------- magic.lock | 427 ++++++++++++++------------- 5 files changed, 1151 insertions(+), 1085 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 57221ff76d..8325a74676 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -8,8 +8,8 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda @@ -26,10 +26,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -84,7 +84,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -173,12 +173,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda @@ -228,7 +228,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -264,8 +264,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -293,8 +293,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda @@ -311,10 +311,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -369,7 +369,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -458,12 +458,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda @@ -513,7 +513,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -549,8 +549,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -577,8 +577,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -593,10 +593,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -649,7 +649,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -723,12 +723,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda @@ -777,7 +777,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -812,8 +812,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -882,27 +882,27 @@ packages: timestamp: 1650670790230 - kind: conda name: aiohappyeyeballs - version: 2.4.3 + version: 2.4.4 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac - md5: ec763b0a58960558ca0ad7255a51a237 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 + md5: 8d6f8a679aa0272ba8d6092ce4824870 depends: - - python >=3.8.0 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 19271 - timestamp: 1727779893392 + size: 19310 + timestamp: 1733135584059 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda - sha256: 5a51cfa8c17a1c545f07c8a9bae637b233c803f92f922ce3badb7a81f6e7eba8 - md5: 63eb2bd555d446218c7bbdec2dd746c5 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 + md5: eeaf9831f262132fb12ce3921de09651 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -917,16 +917,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 912229 - timestamp: 1732780345490 + size: 912186 + timestamp: 1733125914520 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda - sha256: 991fccd7387b08127a8398cdd499ebb9be7a16a612b024f7f82d0ecbae456b00 - md5: 8caf80b1f8510c2c626831f463fac611 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b + md5: 0bb2657d1215a89fb586d387ce9c4daa depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -941,16 +941,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 873606 - timestamp: 1732780440642 + size: 873089 + timestamp: 1733125044394 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda - sha256: 04dc698f291a0580101baa4df07cc12ed99f025c4aab23e184cfe12cf692fa12 - md5: dc9d21c22f3a000083437b0e99e99f31 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 + md5: 06400e4f6428e6c2ea2b59df702b5b39 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -965,8 +965,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900671 - timestamp: 1732780496954 + size: 900828 + timestamp: 1733124971238 - kind: conda name: aiosignal version: 1.3.1 @@ -1588,12 +1588,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - sha256: 387e4df97529d1849a774082b1fed78c7870effc02ed4c2b45961615a0516b64 - md5: fbf4af2c93ae67f175583c9185be4133 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 + md5: e09cd76e50ce09ec14c17109da5c6502 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1605,16 +1605,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117212 - timestamp: 1732679211893 + size: 117467 + timestamp: 1733098782199 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - sha256: c0ae38eb1f878157323afdd002229e9eeb739f622e028447330805c030c50a9f - md5: a5f883ce16928e898856b5bd8d1bee57 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d + md5: 171850b890600458ae6c990e78f1fa23 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1627,16 +1627,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113549 - timestamp: 1732679091663 + size: 113536 + timestamp: 1733098705479 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - sha256: 30e4bed9d008fb79f5e84ecbea0f21030ad5d60cb5c55a962df90721aa98fc42 - md5: 63100ff62fdff4a6afcea38841036027 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff + md5: 893e668d99fa4b31eef9dc5b19c21b9a depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1647,8 +1647,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97042 - timestamp: 1732679268030 + size: 97145 + timestamp: 1733098874599 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1750,13 +1750,13 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h0e61686_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda - sha256: b821d0125f8fcb589b880bf3a5e0e1667e285b3006ceb19d96e6d92d049ab787 - md5: 651a6500e5fded51bb7572f4eebcfd7b + build: h7939e66_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d + md5: 5e573a52a1cd20f81d7fdf1db4f4583a depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1764,23 +1764,25 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 355169 - timestamp: 1732769507038 + size: 283670 + timestamp: 1733150929992 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h6068a22_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda - sha256: 45b15e8ecad820f9f80bace92cbb29f81b30e0ba31e25b936a13bdb0360a0637 - md5: 7f8ecd32e9afbbf87438367b551c3a8b + build: ha226bf8_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 + md5: 81da0b5f65ab08e3919d6eadf08b5776 depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1788,24 +1790,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 283440 - timestamp: 1732769529667 + size: 236505 + timestamp: 1733151090562 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h8bcca62_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda - sha256: b6d2ff238a712137afd9b46842235b32a04cac580734873bf86876da6e71dd03 - md5: 8e49f5e86a3e39699b24035fa6d1ad40 + build: hdec8b0f_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd + md5: 40647232fad98f92be8c6050a7e0c2bd depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1813,13 +1815,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236490 - timestamp: 1732769764315 + size: 354710 + timestamp: 1733150818238 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -3659,13 +3662,13 @@ packages: timestamp: 1732831049776 - kind: conda name: huggingface_hub - version: 0.26.2 - build: pyh0610db2_0 + version: 0.26.3 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - sha256: fad5da1b0a0899dfb4d59bb4a4e4b58bade677ad44332beb608020e55f1bea53 - md5: a7344f1612e61d1e1dcc90c758f71f8f + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 + md5: 997fc223fbc616c262f2a32a22d433a4 depends: - filelock - fsspec >=2023.5.0 @@ -3677,9 +3680,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274216 - timestamp: 1730211995421 + size: 274858 + timestamp: 1733170279930 - kind: conda name: hyperframe version: 6.0.1 @@ -4210,6 +4212,7 @@ packages: - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 5475725 timestamp: 1732947802614 - kind: conda @@ -4252,6 +4255,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 8026783 timestamp: 1732950110265 - kind: conda @@ -4330,6 +4334,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 577510 timestamp: 1732950190684 - kind: conda @@ -4346,6 +4351,7 @@ packages: - libarrow 18.1.0 h654e1bb_2_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 483362 timestamp: 1732948000606 - kind: conda @@ -4384,6 +4390,7 @@ packages: - libparquet 18.1.0 h23a96eb_2_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 559143 timestamp: 1732950272727 - kind: conda @@ -4402,6 +4409,7 @@ packages: - libcxx >=18 - libparquet 18.1.0 h5168bdf_2_cpu license: Apache-2.0 + license_family: APACHE size: 489769 timestamp: 1732949732423 - kind: conda @@ -4423,6 +4431,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 515352 timestamp: 1732950311471 - kind: conda @@ -4467,6 +4476,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 451127 timestamp: 1732950194322 - kind: conda @@ -6578,6 +6588,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1115906 timestamp: 1732950250848 - kind: conda @@ -6596,6 +6607,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 872333 timestamp: 1732949558028 - kind: conda @@ -7727,76 +7739,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - sha256: 7b3ef233f35d3c9d2b2a756b85339f3271f2cac8d4433712fce9dbdc83a56ce3 - md5: 066b95823e3c9cd160c5cbe3a530e658 - depends: - - max-core ==24.6.0.dev2024120105 release - - max-python >=24.6.0.dev2024120105,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120105 release - - mblack ==24.6.0.dev2024120105 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e + md5: fa3d1a799da8e216b9448fd2246655f3 + depends: + - max-core ==24.6.0.dev2024120221 release + - max-python >=24.6.0.dev2024120221,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120221 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733030528874 + size: 9927 + timestamp: 1733176232456 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - sha256: cc9c4b332e39efa40ead3e55c67438b82b4f0f74cb64702636168d92da5f986c - md5: c4876829ff25302ed7aaac7e800f9faa + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb + md5: 646d3f60af8b7d77a29ea74c80b73abe depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254727332 - timestamp: 1733030528873 + size: 254782923 + timestamp: 1733176189897 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - sha256: d733b0b57191ae17abe55bd5c3cf7fe02e77038c4cf9eb98b3a539d283698f98 - md5: 2f1eb5e1b2e077b3877c4ca7f5670a6c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 + md5: 762d1a967090c478c15e8182ee077eac depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258393349 - timestamp: 1733030529884 + size: 258409140 + timestamp: 1733176232454 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - sha256: 625afbae07f7ef017c037f8b81c2de82d344ca1d14becad14d4d804326046204 - md5: 17df9e0840ae14e6f3c9a840e8237f8a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c + md5: 0b95fc4831992260253ee5e3c83f3382 depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220268454 - timestamp: 1733030465063 + size: 220306895 + timestamp: 1733176012956 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 9f9139e62349d97472d5a7b87575de7669ce099e1f2d4090c22b1d6a7a9b246e - md5: c933f4a6c589fad077ce030b33236724 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 + md5: d11c807bdfab1a9ec1d8d60ae4966f6f depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -7818,18 +7830,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128563671 - timestamp: 1733030528881 + size: 128533716 + timestamp: 1733176189912 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: a5e03fa2abd8453c813a13225e84df4a9781c6b25a05c1b976cfe6f4671d4bbd - md5: 13bbc313863bd5c560a9768165d63be1 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 + md5: f7e5f66871aa60909394a02ab2344f64 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -7851,18 +7863,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132240712 - timestamp: 1733030529893 + size: 132227870 + timestamp: 1733176232462 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 47b8fb6184f15795d78d408ce2e7f702208af3863adbea9c8a0b1011ac551411 - md5: 5c145a15e58ef93719afa6cc2b472ccf + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a + md5: 10517bdbac80736a742077a261e535b6 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -7884,17 +7896,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119119907 - timestamp: 1733030465067 + size: 119173532 + timestamp: 1733176012959 - kind: conda name: mblack - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - sha256: 8b4fdcc9c031e2b16fd48c64767919c6c82b0347d02a606770589b58e659721b - md5: af6b9bb6fed204e9e4ed73c334d24647 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 + md5: a4660d8dd8037b8c090b028271d18e14 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7904,8 +7916,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130609 - timestamp: 1733030528877 + size: 130643 + timestamp: 1733176232459 - kind: conda name: mdurl version: 0.1.2 @@ -7923,21 +7935,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - sha256: 131b9545efd1c967f7fc0ee3b23c5000fc5481ab5ce1a3117624f70b9db7e9e3 - md5: 2c6472e319310564fa809d3e06b25ba5 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a + md5: 9f4dbbf9e29a9fc89154906e388c037b depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1733030528878 + size: 22931 + timestamp: 1733176232460 - kind: conda name: mpg123 version: 1.32.9 @@ -9781,20 +9793,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.18 - build: pyhff2d567_1 - build_number: 1 + version: 0.0.19 + build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - sha256: 464e546b789b8e881e1dc6b4995a11007d1e7c3ef2a533b9fb970146e85f7af8 - md5: 8057e4cf29236ea2094cc20fe9ef451e + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda + sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 + md5: fe524346d3a9aa0aaf353dc39f7d1715 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27683 - timestamp: 1732988029649 + size: 27780 + timestamp: 1733062326577 - kind: conda name: python-tzdata version: '2024.2' @@ -11055,33 +11066,35 @@ packages: - kind: conda name: typing-extensions version: 4.12.2 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 depends: - - typing_extensions 4.12.2 pyha770c72_0 + - typing_extensions 4.12.2 pyha770c72_1 license: PSF-2.0 license_family: PSF - size: 10097 - timestamp: 1717802659025 + size: 10075 + timestamp: 1733188758872 - kind: conda name: typing_extensions version: 4.12.2 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 depends: - - python >=3.8 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 39888 - timestamp: 1717802653893 + size: 39637 + timestamp: 1733188758212 - kind: conda name: tzdata version: 2024b diff --git a/examples/magic.lock b/examples/magic.lock index 59942a7dac..bf0e02fb64 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -8,8 +8,8 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py311h2dc5d0c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -23,10 +23,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -65,7 +65,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -178,7 +178,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda @@ -208,8 +208,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -230,8 +230,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py311h58d527c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py311h58d527c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -245,10 +245,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -287,7 +287,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -401,7 +401,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py311h5487e9b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda @@ -431,8 +431,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -452,8 +452,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py311h4921393_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py311h4921393_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -467,10 +467,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -509,7 +509,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -614,7 +614,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda @@ -643,8 +643,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -712,27 +712,27 @@ packages: timestamp: 1650670790230 - kind: conda name: aiohappyeyeballs - version: 2.4.3 + version: 2.4.4 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac - md5: ec763b0a58960558ca0ad7255a51a237 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 + md5: 8d6f8a679aa0272ba8d6092ce4824870 depends: - - python >=3.8.0 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 19271 - timestamp: 1727779893392 + size: 19310 + timestamp: 1733135584059 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py311h2dc5d0c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py311h2dc5d0c_0.conda - sha256: 754ba9e0286a4daa5b9339e79e55f026f37c40500b382cf9b616bca4e22084cc - md5: c3f865299ddb7f52b7f85bc65ba5df29 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py311h2dc5d0c_0.conda + sha256: 7ad0ca5ba77e058b442f0c39c708c88f2dac53b8769737701ee57964d51bdc46 + md5: 2665cc7da1c554be586963d50d1ad612 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -747,16 +747,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 920889 - timestamp: 1732780337315 + size: 920988 + timestamp: 1733124865570 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py311h4921393_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py311h4921393_0.conda - sha256: f2ac631e80fd55d6ab5e4a7624c4174e74b2b39c73b6e0f131453bf1431ec555 - md5: 6b0f861eaa6c8279b7131e0f7e9627c2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py311h4921393_0.conda + sha256: 4e57bf5250304eec98769921788c7be76d146f21edf85ed890318991a8d9e2e7 + md5: b7e219c251ece66ccd7058af6d6fda10 depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -771,16 +771,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 881546 - timestamp: 1732780521684 + size: 880101 + timestamp: 1733124988232 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py311h58d527c_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py311h58d527c_0.conda - sha256: a27c895653dda4f1571f52bc062a6138a069f6d9cdadc900fd72c30c70b9ae8f - md5: f512010b07013ca24f2aa4c47e087a1f + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py311h58d527c_0.conda + sha256: 67df99e0e0e300f0ae86306f25275bd4728af2e6f852e16f6cc1b7cdb83352ae + md5: 6419796f7b0964c80dd78f523e4deae0 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -795,8 +795,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 912113 - timestamp: 1732780432515 + size: 911710 + timestamp: 1733124981752 - kind: conda name: aiosignal version: 1.3.1 @@ -1314,12 +1314,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - sha256: 387e4df97529d1849a774082b1fed78c7870effc02ed4c2b45961615a0516b64 - md5: fbf4af2c93ae67f175583c9185be4133 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 + md5: e09cd76e50ce09ec14c17109da5c6502 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1331,16 +1331,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117212 - timestamp: 1732679211893 + size: 117467 + timestamp: 1733098782199 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - sha256: c0ae38eb1f878157323afdd002229e9eeb739f622e028447330805c030c50a9f - md5: a5f883ce16928e898856b5bd8d1bee57 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d + md5: 171850b890600458ae6c990e78f1fa23 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1353,16 +1353,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113549 - timestamp: 1732679091663 + size: 113536 + timestamp: 1733098705479 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - sha256: 30e4bed9d008fb79f5e84ecbea0f21030ad5d60cb5c55a962df90721aa98fc42 - md5: 63100ff62fdff4a6afcea38841036027 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff + md5: 893e668d99fa4b31eef9dc5b19c21b9a depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1373,8 +1373,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97042 - timestamp: 1732679268030 + size: 97145 + timestamp: 1733098874599 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1476,13 +1476,13 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h0e61686_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda - sha256: b821d0125f8fcb589b880bf3a5e0e1667e285b3006ceb19d96e6d92d049ab787 - md5: 651a6500e5fded51bb7572f4eebcfd7b + build: h7939e66_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d + md5: 5e573a52a1cd20f81d7fdf1db4f4583a depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1490,23 +1490,25 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 355169 - timestamp: 1732769507038 + size: 283670 + timestamp: 1733150929992 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h6068a22_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda - sha256: 45b15e8ecad820f9f80bace92cbb29f81b30e0ba31e25b936a13bdb0360a0637 - md5: 7f8ecd32e9afbbf87438367b551c3a8b + build: ha226bf8_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 + md5: 81da0b5f65ab08e3919d6eadf08b5776 depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1514,24 +1516,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 283440 - timestamp: 1732769529667 + size: 236505 + timestamp: 1733151090562 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h8bcca62_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda - sha256: b6d2ff238a712137afd9b46842235b32a04cac580734873bf86876da6e71dd03 - md5: 8e49f5e86a3e39699b24035fa6d1ad40 + build: hdec8b0f_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd + md5: 40647232fad98f92be8c6050a7e0c2bd depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1539,13 +1541,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236490 - timestamp: 1732769764315 + size: 354710 + timestamp: 1733150818238 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2762,13 +2765,13 @@ packages: timestamp: 1732831049776 - kind: conda name: huggingface_hub - version: 0.26.2 - build: pyh0610db2_0 + version: 0.26.3 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - sha256: fad5da1b0a0899dfb4d59bb4a4e4b58bade677ad44332beb608020e55f1bea53 - md5: a7344f1612e61d1e1dcc90c758f71f8f + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 + md5: 997fc223fbc616c262f2a32a22d433a4 depends: - filelock - fsspec >=2023.5.0 @@ -2780,9 +2783,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274216 - timestamp: 1730211995421 + size: 274858 + timestamp: 1733170279930 - kind: conda name: hyperframe version: 6.0.1 @@ -3202,6 +3204,7 @@ packages: - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 5475725 timestamp: 1732947802614 - kind: conda @@ -3244,6 +3247,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 8026783 timestamp: 1732950110265 - kind: conda @@ -3322,6 +3326,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 577510 timestamp: 1732950190684 - kind: conda @@ -3338,6 +3343,7 @@ packages: - libarrow 18.1.0 h654e1bb_2_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 483362 timestamp: 1732948000606 - kind: conda @@ -3376,6 +3382,7 @@ packages: - libparquet 18.1.0 h23a96eb_2_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 559143 timestamp: 1732950272727 - kind: conda @@ -3394,6 +3401,7 @@ packages: - libcxx >=18 - libparquet 18.1.0 h5168bdf_2_cpu license: Apache-2.0 + license_family: APACHE size: 489769 timestamp: 1732949732423 - kind: conda @@ -3415,6 +3423,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 515352 timestamp: 1732950311471 - kind: conda @@ -3459,6 +3468,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 451127 timestamp: 1732950194322 - kind: conda @@ -4828,6 +4838,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1115906 timestamp: 1732950250848 - kind: conda @@ -4846,6 +4857,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 872333 timestamp: 1732949558028 - kind: conda @@ -5828,76 +5840,76 @@ packages: timestamp: 1729352296161 - kind: conda name: max - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - sha256: 7b3ef233f35d3c9d2b2a756b85339f3271f2cac8d4433712fce9dbdc83a56ce3 - md5: 066b95823e3c9cd160c5cbe3a530e658 - depends: - - max-core ==24.6.0.dev2024120105 release - - max-python >=24.6.0.dev2024120105,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120105 release - - mblack ==24.6.0.dev2024120105 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e + md5: fa3d1a799da8e216b9448fd2246655f3 + depends: + - max-core ==24.6.0.dev2024120221 release + - max-python >=24.6.0.dev2024120221,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120221 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733030528874 + size: 9927 + timestamp: 1733176232456 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - sha256: cc9c4b332e39efa40ead3e55c67438b82b4f0f74cb64702636168d92da5f986c - md5: c4876829ff25302ed7aaac7e800f9faa + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb + md5: 646d3f60af8b7d77a29ea74c80b73abe depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254727332 - timestamp: 1733030528873 + size: 254782923 + timestamp: 1733176189897 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - sha256: d733b0b57191ae17abe55bd5c3cf7fe02e77038c4cf9eb98b3a539d283698f98 - md5: 2f1eb5e1b2e077b3877c4ca7f5670a6c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 + md5: 762d1a967090c478c15e8182ee077eac depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258393349 - timestamp: 1733030529884 + size: 258409140 + timestamp: 1733176232454 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - sha256: 625afbae07f7ef017c037f8b81c2de82d344ca1d14becad14d4d804326046204 - md5: 17df9e0840ae14e6f3c9a840e8237f8a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c + md5: 0b95fc4831992260253ee5e3c83f3382 depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220268454 - timestamp: 1733030465063 + size: 220306895 + timestamp: 1733176012956 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.11release.conda - sha256: 7c8631400afb9efb03d005e1ec0276d76bb155b20f5e35a35e1d5d9a2fefd32b - md5: 3a34e5ca2af57200fabe603a6ba0090f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.11release.conda + sha256: 4db5c6b7fa0c54df758b803ddcdabd352bde9a207c6a2747adcd921202637c0b + md5: fd512401071a16a8c24f6c4a4aa01a39 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.11.* - pillow - fastapi @@ -5919,18 +5931,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128532038 - timestamp: 1733030528878 + size: 128540502 + timestamp: 1733176189908 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.11release.conda - sha256: af999f8f930d5cd4bb6e3de241e8ae9e1789943f2d34b9712952fa64fed6d885 - md5: 1eb9952e5ab3ee82d3a6b8dd73faf3ad + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.11release.conda + sha256: 94e7c54833fe42f2c3b2992b3231e1d4bbfeb1d5705da5bd544bad51881f448d + md5: da44758bc2124cab1e00d67ba6c23235 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.11.* - pillow - fastapi @@ -5952,18 +5964,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132257898 - timestamp: 1733030529890 + size: 132240625 + timestamp: 1733176232460 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.11release.conda - sha256: 22e4097971fc3deda331baa08b589a37d3c9c838e2eae6d71864d9f5d925505b - md5: 4b0d0ab11c949e5caba2269794b9b3a5 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.11release.conda + sha256: fe72ff98e438f7b8d6d6331821de8eab4cc6a97cdb89db0bd68001ba69d1e6ad + md5: c453413d6473cab3e8153f7503ab43f2 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.11.* - pillow - fastapi @@ -5985,17 +5997,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119120379 - timestamp: 1733030465066 + size: 119198780 + timestamp: 1733176012958 - kind: conda name: mblack - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - sha256: 8b4fdcc9c031e2b16fd48c64767919c6c82b0347d02a606770589b58e659721b - md5: af6b9bb6fed204e9e4ed73c334d24647 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 + md5: a4660d8dd8037b8c090b028271d18e14 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6005,8 +6017,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130609 - timestamp: 1733030528877 + size: 130643 + timestamp: 1733176232459 - kind: conda name: mdurl version: 0.1.2 @@ -6024,21 +6036,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - sha256: 131b9545efd1c967f7fc0ee3b23c5000fc5481ab5ce1a3117624f70b9db7e9e3 - md5: 2c6472e319310564fa809d3e06b25ba5 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a + md5: 9f4dbbf9e29a9fc89154906e388c037b depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1733030528878 + size: 22931 + timestamp: 1733176232460 - kind: conda name: multidict version: 6.1.0 @@ -7468,20 +7480,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.18 - build: pyhff2d567_1 - build_number: 1 + version: 0.0.19 + build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - sha256: 464e546b789b8e881e1dc6b4995a11007d1e7c3ef2a533b9fb970146e85f7af8 - md5: 8057e4cf29236ea2094cc20fe9ef451e + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda + sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 + md5: fe524346d3a9aa0aaf353dc39f7d1715 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27683 - timestamp: 1732988029649 + size: 27780 + timestamp: 1733062326577 - kind: conda name: python-tzdata version: '2024.2' @@ -8417,33 +8428,35 @@ packages: - kind: conda name: typing-extensions version: 4.12.2 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 depends: - - typing_extensions 4.12.2 pyha770c72_0 + - typing_extensions 4.12.2 pyha770c72_1 license: PSF-2.0 license_family: PSF - size: 10097 - timestamp: 1717802659025 + size: 10075 + timestamp: 1733188758872 - kind: conda name: typing_extensions version: 4.12.2 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 depends: - - python >=3.8 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 39888 - timestamp: 1717802653893 + size: 39637 + timestamp: 1733188758212 - kind: conda name: tzdata version: 2024b diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 7e0ec393ea..b3eba37aed 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -8,8 +8,8 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -17,7 +17,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda @@ -28,10 +28,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -82,7 +82,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -166,13 +166,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -231,7 +231,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -272,8 +272,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda @@ -285,9 +285,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda @@ -301,8 +301,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -310,7 +310,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda @@ -321,10 +321,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -375,7 +375,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -460,13 +460,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -525,7 +525,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -566,8 +566,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda @@ -579,9 +579,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda @@ -594,8 +594,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -604,7 +604,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda @@ -615,10 +615,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -669,7 +669,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -745,13 +745,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -804,15 +804,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -852,8 +852,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda @@ -865,9 +865,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda @@ -928,27 +928,27 @@ packages: timestamp: 1650670790230 - kind: conda name: aiohappyeyeballs - version: 2.4.3 + version: 2.4.4 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac - md5: ec763b0a58960558ca0ad7255a51a237 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 + md5: 8d6f8a679aa0272ba8d6092ce4824870 depends: - - python >=3.8.0 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 19271 - timestamp: 1727779893392 + size: 19310 + timestamp: 1733135584059 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda - sha256: 5a51cfa8c17a1c545f07c8a9bae637b233c803f92f922ce3badb7a81f6e7eba8 - md5: 63eb2bd555d446218c7bbdec2dd746c5 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 + md5: eeaf9831f262132fb12ce3921de09651 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -963,16 +963,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 912229 - timestamp: 1732780345490 + size: 912186 + timestamp: 1733125914520 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda - sha256: 991fccd7387b08127a8398cdd499ebb9be7a16a612b024f7f82d0ecbae456b00 - md5: 8caf80b1f8510c2c626831f463fac611 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b + md5: 0bb2657d1215a89fb586d387ce9c4daa depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -987,16 +987,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 873606 - timestamp: 1732780440642 + size: 873089 + timestamp: 1733125044394 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda - sha256: 04dc698f291a0580101baa4df07cc12ed99f025c4aab23e184cfe12cf692fa12 - md5: dc9d21c22f3a000083437b0e99e99f31 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 + md5: 06400e4f6428e6c2ea2b59df702b5b39 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -1011,8 +1011,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900671 - timestamp: 1732780496954 + size: 900828 + timestamp: 1733124971238 - kind: conda name: aiosignal version: 1.3.1 @@ -1193,20 +1193,21 @@ packages: timestamp: 1711269034814 - kind: conda name: asttokens - version: 2.4.1 + version: 3.0.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda - sha256: 708168f026df19a0344983754d27d1f7b28bb21afc7b97a82f02c4798a3d2111 - md5: 5f25798dcefd8252ce5f9dc494d5f571 + url: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda + sha256: 92072fde775e62c427d05a76784404f6a2d7ccf232aa05a95a33d86c943614b5 + md5: 454950e9fa3a0c59880de0ac7a6bc8c4 depends: - - python >=3.5 - - six >=1.12.0 + - python >=3.8 + constrains: + - astroid >=2,<4 license: Apache-2.0 license_family: Apache - size: 28922 - timestamp: 1698341257884 + size: 28137 + timestamp: 1733175735190 - kind: conda name: async-lru version: 2.0.4 @@ -1670,12 +1671,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - sha256: 387e4df97529d1849a774082b1fed78c7870effc02ed4c2b45961615a0516b64 - md5: fbf4af2c93ae67f175583c9185be4133 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 + md5: e09cd76e50ce09ec14c17109da5c6502 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1687,16 +1688,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117212 - timestamp: 1732679211893 + size: 117467 + timestamp: 1733098782199 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - sha256: c0ae38eb1f878157323afdd002229e9eeb739f622e028447330805c030c50a9f - md5: a5f883ce16928e898856b5bd8d1bee57 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d + md5: 171850b890600458ae6c990e78f1fa23 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1709,16 +1710,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113549 - timestamp: 1732679091663 + size: 113536 + timestamp: 1733098705479 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - sha256: 30e4bed9d008fb79f5e84ecbea0f21030ad5d60cb5c55a962df90721aa98fc42 - md5: 63100ff62fdff4a6afcea38841036027 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff + md5: 893e668d99fa4b31eef9dc5b19c21b9a depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1729,8 +1730,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97042 - timestamp: 1732679268030 + size: 97145 + timestamp: 1733098874599 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1832,13 +1833,13 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h0e61686_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda - sha256: b821d0125f8fcb589b880bf3a5e0e1667e285b3006ceb19d96e6d92d049ab787 - md5: 651a6500e5fded51bb7572f4eebcfd7b + build: h7939e66_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d + md5: 5e573a52a1cd20f81d7fdf1db4f4583a depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1846,23 +1847,25 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 355169 - timestamp: 1732769507038 + size: 283670 + timestamp: 1733150929992 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h6068a22_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda - sha256: 45b15e8ecad820f9f80bace92cbb29f81b30e0ba31e25b936a13bdb0360a0637 - md5: 7f8ecd32e9afbbf87438367b551c3a8b + build: ha226bf8_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 + md5: 81da0b5f65ab08e3919d6eadf08b5776 depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1870,24 +1873,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 283440 - timestamp: 1732769529667 + size: 236505 + timestamp: 1733151090562 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h8bcca62_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda - sha256: b6d2ff238a712137afd9b46842235b32a04cac580734873bf86876da6e71dd03 - md5: 8e49f5e86a3e39699b24035fa6d1ad40 + build: hdec8b0f_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd + md5: 40647232fad98f92be8c6050a7e0c2bd depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1895,13 +1898,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236490 - timestamp: 1732769764315 + size: 354710 + timestamp: 1733150818238 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -3344,13 +3348,13 @@ packages: timestamp: 1732831049776 - kind: conda name: huggingface_hub - version: 0.26.2 - build: pyh0610db2_0 + version: 0.26.3 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - sha256: fad5da1b0a0899dfb4d59bb4a4e4b58bade677ad44332beb608020e55f1bea53 - md5: a7344f1612e61d1e1dcc90c758f71f8f + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 + md5: 997fc223fbc616c262f2a32a22d433a4 depends: - filelock - fsspec >=2023.5.0 @@ -3362,9 +3366,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274216 - timestamp: 1730211995421 + size: 274858 + timestamp: 1733170279930 - kind: conda name: hyperframe version: 6.0.1 @@ -4204,6 +4207,7 @@ packages: - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 5475725 timestamp: 1732947802614 - kind: conda @@ -4246,6 +4250,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 8026783 timestamp: 1732950110265 - kind: conda @@ -4324,6 +4329,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 577510 timestamp: 1732950190684 - kind: conda @@ -4340,6 +4346,7 @@ packages: - libarrow 18.1.0 h654e1bb_2_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 483362 timestamp: 1732948000606 - kind: conda @@ -4378,6 +4385,7 @@ packages: - libparquet 18.1.0 h23a96eb_2_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 559143 timestamp: 1732950272727 - kind: conda @@ -4396,6 +4404,7 @@ packages: - libcxx >=18 - libparquet 18.1.0 h5168bdf_2_cpu license: Apache-2.0 + license_family: APACHE size: 489769 timestamp: 1732949732423 - kind: conda @@ -4417,6 +4426,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 515352 timestamp: 1732950311471 - kind: conda @@ -4461,6 +4471,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 451127 timestamp: 1732950194322 - kind: conda @@ -5830,6 +5841,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1115906 timestamp: 1732950250848 - kind: conda @@ -5848,6 +5860,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 872333 timestamp: 1732949558028 - kind: conda @@ -6846,76 +6859,76 @@ packages: timestamp: 1713250613726 - kind: conda name: max - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - sha256: 7b3ef233f35d3c9d2b2a756b85339f3271f2cac8d4433712fce9dbdc83a56ce3 - md5: 066b95823e3c9cd160c5cbe3a530e658 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e + md5: fa3d1a799da8e216b9448fd2246655f3 depends: - - max-core ==24.6.0.dev2024120105 release - - max-python >=24.6.0.dev2024120105,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120105 release - - mblack ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release + - max-python >=24.6.0.dev2024120221,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120221 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733030528874 + size: 9927 + timestamp: 1733176232456 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - sha256: cc9c4b332e39efa40ead3e55c67438b82b4f0f74cb64702636168d92da5f986c - md5: c4876829ff25302ed7aaac7e800f9faa + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb + md5: 646d3f60af8b7d77a29ea74c80b73abe depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254727332 - timestamp: 1733030528873 + size: 254782923 + timestamp: 1733176189897 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - sha256: d733b0b57191ae17abe55bd5c3cf7fe02e77038c4cf9eb98b3a539d283698f98 - md5: 2f1eb5e1b2e077b3877c4ca7f5670a6c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 + md5: 762d1a967090c478c15e8182ee077eac depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258393349 - timestamp: 1733030529884 + size: 258409140 + timestamp: 1733176232454 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - sha256: 625afbae07f7ef017c037f8b81c2de82d344ca1d14becad14d4d804326046204 - md5: 17df9e0840ae14e6f3c9a840e8237f8a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c + md5: 0b95fc4831992260253ee5e3c83f3382 depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220268454 - timestamp: 1733030465063 + size: 220306895 + timestamp: 1733176012956 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 9f9139e62349d97472d5a7b87575de7669ce099e1f2d4090c22b1d6a7a9b246e - md5: c933f4a6c589fad077ce030b33236724 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 + md5: d11c807bdfab1a9ec1d8d60ae4966f6f depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -6937,18 +6950,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128563671 - timestamp: 1733030528881 + size: 128533716 + timestamp: 1733176189912 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: a5e03fa2abd8453c813a13225e84df4a9781c6b25a05c1b976cfe6f4671d4bbd - md5: 13bbc313863bd5c560a9768165d63be1 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 + md5: f7e5f66871aa60909394a02ab2344f64 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -6970,18 +6983,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132240712 - timestamp: 1733030529893 + size: 132227870 + timestamp: 1733176232462 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 47b8fb6184f15795d78d408ce2e7f702208af3863adbea9c8a0b1011ac551411 - md5: 5c145a15e58ef93719afa6cc2b472ccf + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a + md5: 10517bdbac80736a742077a261e535b6 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -7003,17 +7016,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119119907 - timestamp: 1733030465067 + size: 119173532 + timestamp: 1733176012959 - kind: conda name: mblack - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - sha256: 8b4fdcc9c031e2b16fd48c64767919c6c82b0347d02a606770589b58e659721b - md5: af6b9bb6fed204e9e4ed73c334d24647 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 + md5: a4660d8dd8037b8c090b028271d18e14 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7023,8 +7036,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130609 - timestamp: 1733030528877 + size: 130643 + timestamp: 1733176232459 - kind: conda name: mdurl version: 0.1.2 @@ -7057,21 +7070,21 @@ packages: timestamp: 1698947249750 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - sha256: 131b9545efd1c967f7fc0ee3b23c5000fc5481ab5ce1a3117624f70b9db7e9e3 - md5: 2c6472e319310564fa809d3e06b25ba5 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a + md5: 9f4dbbf9e29a9fc89154906e388c037b depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1733030528878 + size: 22931 + timestamp: 1733176232460 - kind: conda name: multidict version: 6.1.0 @@ -8655,13 +8668,12 @@ packages: timestamp: 1728714267954 - kind: conda name: pyobjc-core - version: 10.3.1 - build: py312hd24fc31_1 - build_number: 1 + version: 10.3.2 + build: py312hb9d441b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.1-py312hd24fc31_1.conda - sha256: e3311a9b7e843e3fb2b814bf0a0a901db8d2c21d72bacf246a95867c2628ca25 - md5: 1533727287f098e669d75f9c54dc1601 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda + sha256: 6c110c64e7cc0a28416414446698ab310a9261525a6aa630b2c4f50891867719 + md5: 663e894deb5a24c8931fd8224f19a1fd depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 @@ -8671,28 +8683,26 @@ packages: - setuptools license: MIT license_family: MIT - size: 490928 - timestamp: 1725739760349 + size: 484571 + timestamp: 1732987487536 - kind: conda name: pyobjc-framework-cocoa - version: 10.3.1 - build: py312hd24fc31_1 - build_number: 1 + version: 10.3.2 + build: py312hb9d441b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.1-py312hd24fc31_1.conda - sha256: 799aa68d1d9abe00f3574d7763e91f86007a938ab8f5dff63ae3e1f22d0d634d - md5: b1c63f8abafc9530a9259e0d6a70e984 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda + sha256: 5a78f97cb7414cb4b78b777dcfcffb08da42ced866e8ef6455a57c2230908bfe + md5: 41e4f28d545565e48f1f819cf8dac5c7 depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 - - pyobjc-core 10.3.1.* + - pyobjc-core 10.3.2.* - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT - license_family: MIT - size: 381079 - timestamp: 1725875188776 + size: 380414 + timestamp: 1733168930888 - kind: conda name: pysocks version: 1.7.1 @@ -8860,20 +8870,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.18 - build: pyhff2d567_1 - build_number: 1 + version: 0.0.19 + build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - sha256: 464e546b789b8e881e1dc6b4995a11007d1e7c3ef2a533b9fb970146e85f7af8 - md5: 8057e4cf29236ea2094cc20fe9ef451e + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda + sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 + md5: fe524346d3a9aa0aaf353dc39f7d1715 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27683 - timestamp: 1732988029649 + size: 27780 + timestamp: 1733062326577 - kind: conda name: python-tzdata version: '2024.2' @@ -9881,6 +9890,7 @@ packages: depends: - python >=3.9 license: MIT + license_family: MIT size: 19129 timestamp: 1732988289555 - kind: conda @@ -10060,33 +10070,35 @@ packages: - kind: conda name: typing-extensions version: 4.12.2 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 depends: - - typing_extensions 4.12.2 pyha770c72_0 + - typing_extensions 4.12.2 pyha770c72_1 license: PSF-2.0 license_family: PSF - size: 10097 - timestamp: 1717802659025 + size: 10075 + timestamp: 1733188758872 - kind: conda name: typing_extensions version: 4.12.2 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 depends: - - python >=3.8 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 39888 - timestamp: 1717802653893 + size: 39637 + timestamp: 1733188758212 - kind: conda name: typing_utils version: 0.1.0 @@ -10352,18 +10364,19 @@ packages: - kind: conda name: websocket-client version: 1.8.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_0.conda - sha256: 44a5e3b97feef24cd719f7851cca9af9799dc9c17d3e0298d5856baab2d682f5 - md5: f372c576b8774922da83cda2b12f9d29 + url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + sha256: 1dd84764424ffc82030c19ad70607e6f9e3b9cb8e633970766d697185652053e + md5: 84f8f77f0a9c6ef401ee96611745da8f depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 47066 - timestamp: 1713923494501 + size: 46718 + timestamp: 1733157432924 - kind: conda name: websockets version: '14.1' @@ -10418,18 +10431,19 @@ packages: - kind: conda name: wheel version: 0.45.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_0.conda - sha256: 24f6851a336a50c53d6b50b142c1654872494a62528d57c3ff40240cbd8b13be - md5: bdb2f437ce62fd2f1fef9119a37a12d9 + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + sha256: 1b34021e815ff89a4d902d879c3bd2040bc1bd6169b32e9427497fa05c55f1ce + md5: 75cb7132eb58d97896e173ef12ac9986 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 62998 - timestamp: 1732339880578 + size: 62931 + timestamp: 1733130309598 - kind: conda name: wrapt version: 1.17.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index febf0ced33..326d51789b 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -8,8 +8,8 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -23,10 +23,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -65,7 +65,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -178,7 +178,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -208,8 +208,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -230,8 +230,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -245,10 +245,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -287,7 +287,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -354,12 +354,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -401,7 +401,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -431,8 +431,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -452,8 +452,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -467,10 +467,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -509,7 +509,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -567,12 +567,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -614,7 +614,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -643,8 +643,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -712,27 +712,27 @@ packages: timestamp: 1650670790230 - kind: conda name: aiohappyeyeballs - version: 2.4.3 + version: 2.4.4 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac - md5: ec763b0a58960558ca0ad7255a51a237 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 + md5: 8d6f8a679aa0272ba8d6092ce4824870 depends: - - python >=3.8.0 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 19271 - timestamp: 1727779893392 + size: 19310 + timestamp: 1733135584059 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda - sha256: 5a51cfa8c17a1c545f07c8a9bae637b233c803f92f922ce3badb7a81f6e7eba8 - md5: 63eb2bd555d446218c7bbdec2dd746c5 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 + md5: eeaf9831f262132fb12ce3921de09651 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -747,16 +747,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 912229 - timestamp: 1732780345490 + size: 912186 + timestamp: 1733125914520 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda - sha256: 991fccd7387b08127a8398cdd499ebb9be7a16a612b024f7f82d0ecbae456b00 - md5: 8caf80b1f8510c2c626831f463fac611 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b + md5: 0bb2657d1215a89fb586d387ce9c4daa depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -771,16 +771,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 873606 - timestamp: 1732780440642 + size: 873089 + timestamp: 1733125044394 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda - sha256: 04dc698f291a0580101baa4df07cc12ed99f025c4aab23e184cfe12cf692fa12 - md5: dc9d21c22f3a000083437b0e99e99f31 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 + md5: 06400e4f6428e6c2ea2b59df702b5b39 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -795,8 +795,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900671 - timestamp: 1732780496954 + size: 900828 + timestamp: 1733124971238 - kind: conda name: aiosignal version: 1.3.1 @@ -1314,12 +1314,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - sha256: 387e4df97529d1849a774082b1fed78c7870effc02ed4c2b45961615a0516b64 - md5: fbf4af2c93ae67f175583c9185be4133 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 + md5: e09cd76e50ce09ec14c17109da5c6502 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1331,16 +1331,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117212 - timestamp: 1732679211893 + size: 117467 + timestamp: 1733098782199 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - sha256: c0ae38eb1f878157323afdd002229e9eeb739f622e028447330805c030c50a9f - md5: a5f883ce16928e898856b5bd8d1bee57 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d + md5: 171850b890600458ae6c990e78f1fa23 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1353,16 +1353,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113549 - timestamp: 1732679091663 + size: 113536 + timestamp: 1733098705479 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - sha256: 30e4bed9d008fb79f5e84ecbea0f21030ad5d60cb5c55a962df90721aa98fc42 - md5: 63100ff62fdff4a6afcea38841036027 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff + md5: 893e668d99fa4b31eef9dc5b19c21b9a depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1373,8 +1373,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97042 - timestamp: 1732679268030 + size: 97145 + timestamp: 1733098874599 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1476,13 +1476,13 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h0e61686_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda - sha256: b821d0125f8fcb589b880bf3a5e0e1667e285b3006ceb19d96e6d92d049ab787 - md5: 651a6500e5fded51bb7572f4eebcfd7b + build: h7939e66_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d + md5: 5e573a52a1cd20f81d7fdf1db4f4583a depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1490,23 +1490,25 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 355169 - timestamp: 1732769507038 + size: 283670 + timestamp: 1733150929992 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h6068a22_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda - sha256: 45b15e8ecad820f9f80bace92cbb29f81b30e0ba31e25b936a13bdb0360a0637 - md5: 7f8ecd32e9afbbf87438367b551c3a8b + build: ha226bf8_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 + md5: 81da0b5f65ab08e3919d6eadf08b5776 depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1514,24 +1516,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 283440 - timestamp: 1732769529667 + size: 236505 + timestamp: 1733151090562 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h8bcca62_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda - sha256: b6d2ff238a712137afd9b46842235b32a04cac580734873bf86876da6e71dd03 - md5: 8e49f5e86a3e39699b24035fa6d1ad40 + build: hdec8b0f_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd + md5: 40647232fad98f92be8c6050a7e0c2bd depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1539,13 +1541,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236490 - timestamp: 1732769764315 + size: 354710 + timestamp: 1733150818238 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2762,13 +2765,13 @@ packages: timestamp: 1732831049776 - kind: conda name: huggingface_hub - version: 0.26.2 - build: pyh0610db2_0 + version: 0.26.3 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - sha256: fad5da1b0a0899dfb4d59bb4a4e4b58bade677ad44332beb608020e55f1bea53 - md5: a7344f1612e61d1e1dcc90c758f71f8f + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 + md5: 997fc223fbc616c262f2a32a22d433a4 depends: - filelock - fsspec >=2023.5.0 @@ -2780,9 +2783,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274216 - timestamp: 1730211995421 + size: 274858 + timestamp: 1733170279930 - kind: conda name: hyperframe version: 6.0.1 @@ -3202,6 +3204,7 @@ packages: - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 5475725 timestamp: 1732947802614 - kind: conda @@ -3244,6 +3247,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 8026783 timestamp: 1732950110265 - kind: conda @@ -3322,6 +3326,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 577510 timestamp: 1732950190684 - kind: conda @@ -3338,6 +3343,7 @@ packages: - libarrow 18.1.0 h654e1bb_2_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 483362 timestamp: 1732948000606 - kind: conda @@ -3376,6 +3382,7 @@ packages: - libparquet 18.1.0 h23a96eb_2_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 559143 timestamp: 1732950272727 - kind: conda @@ -3394,6 +3401,7 @@ packages: - libcxx >=18 - libparquet 18.1.0 h5168bdf_2_cpu license: Apache-2.0 + license_family: APACHE size: 489769 timestamp: 1732949732423 - kind: conda @@ -3415,6 +3423,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 515352 timestamp: 1732950311471 - kind: conda @@ -3459,6 +3468,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 451127 timestamp: 1732950194322 - kind: conda @@ -4828,6 +4838,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1115906 timestamp: 1732950250848 - kind: conda @@ -4846,6 +4857,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 872333 timestamp: 1732949558028 - kind: conda @@ -5828,76 +5840,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - sha256: 7b3ef233f35d3c9d2b2a756b85339f3271f2cac8d4433712fce9dbdc83a56ce3 - md5: 066b95823e3c9cd160c5cbe3a530e658 - depends: - - max-core ==24.6.0.dev2024120105 release - - max-python >=24.6.0.dev2024120105,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120105 release - - mblack ==24.6.0.dev2024120105 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e + md5: fa3d1a799da8e216b9448fd2246655f3 + depends: + - max-core ==24.6.0.dev2024120221 release + - max-python >=24.6.0.dev2024120221,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120221 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733030528874 + size: 9927 + timestamp: 1733176232456 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - sha256: cc9c4b332e39efa40ead3e55c67438b82b4f0f74cb64702636168d92da5f986c - md5: c4876829ff25302ed7aaac7e800f9faa + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb + md5: 646d3f60af8b7d77a29ea74c80b73abe depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254727332 - timestamp: 1733030528873 + size: 254782923 + timestamp: 1733176189897 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - sha256: d733b0b57191ae17abe55bd5c3cf7fe02e77038c4cf9eb98b3a539d283698f98 - md5: 2f1eb5e1b2e077b3877c4ca7f5670a6c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 + md5: 762d1a967090c478c15e8182ee077eac depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258393349 - timestamp: 1733030529884 + size: 258409140 + timestamp: 1733176232454 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - sha256: 625afbae07f7ef017c037f8b81c2de82d344ca1d14becad14d4d804326046204 - md5: 17df9e0840ae14e6f3c9a840e8237f8a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c + md5: 0b95fc4831992260253ee5e3c83f3382 depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220268454 - timestamp: 1733030465063 + size: 220306895 + timestamp: 1733176012956 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 9f9139e62349d97472d5a7b87575de7669ce099e1f2d4090c22b1d6a7a9b246e - md5: c933f4a6c589fad077ce030b33236724 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 + md5: d11c807bdfab1a9ec1d8d60ae4966f6f depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -5919,18 +5931,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128563671 - timestamp: 1733030528881 + size: 128533716 + timestamp: 1733176189912 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: a5e03fa2abd8453c813a13225e84df4a9781c6b25a05c1b976cfe6f4671d4bbd - md5: 13bbc313863bd5c560a9768165d63be1 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 + md5: f7e5f66871aa60909394a02ab2344f64 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -5952,18 +5964,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132240712 - timestamp: 1733030529893 + size: 132227870 + timestamp: 1733176232462 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 47b8fb6184f15795d78d408ce2e7f702208af3863adbea9c8a0b1011ac551411 - md5: 5c145a15e58ef93719afa6cc2b472ccf + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a + md5: 10517bdbac80736a742077a261e535b6 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -5985,17 +5997,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119119907 - timestamp: 1733030465067 + size: 119173532 + timestamp: 1733176012959 - kind: conda name: mblack - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - sha256: 8b4fdcc9c031e2b16fd48c64767919c6c82b0347d02a606770589b58e659721b - md5: af6b9bb6fed204e9e4ed73c334d24647 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 + md5: a4660d8dd8037b8c090b028271d18e14 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6005,8 +6017,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130609 - timestamp: 1733030528877 + size: 130643 + timestamp: 1733176232459 - kind: conda name: mdurl version: 0.1.2 @@ -6024,21 +6036,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - sha256: 131b9545efd1c967f7fc0ee3b23c5000fc5481ab5ce1a3117624f70b9db7e9e3 - md5: 2c6472e319310564fa809d3e06b25ba5 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a + md5: 9f4dbbf9e29a9fc89154906e388c037b depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1733030528878 + size: 22931 + timestamp: 1733176232460 - kind: conda name: multidict version: 6.1.0 @@ -7465,20 +7477,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.18 - build: pyhff2d567_1 - build_number: 1 + version: 0.0.19 + build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - sha256: 464e546b789b8e881e1dc6b4995a11007d1e7c3ef2a533b9fb970146e85f7af8 - md5: 8057e4cf29236ea2094cc20fe9ef451e + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda + sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 + md5: fe524346d3a9aa0aaf353dc39f7d1715 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27683 - timestamp: 1732988029649 + size: 27780 + timestamp: 1733062326577 - kind: conda name: python-tzdata version: '2024.2' @@ -8414,33 +8425,35 @@ packages: - kind: conda name: typing-extensions version: 4.12.2 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 depends: - - typing_extensions 4.12.2 pyha770c72_0 + - typing_extensions 4.12.2 pyha770c72_1 license: PSF-2.0 license_family: PSF - size: 10097 - timestamp: 1717802659025 + size: 10075 + timestamp: 1733188758872 - kind: conda name: typing_extensions version: 4.12.2 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 depends: - - python >=3.8 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 39888 - timestamp: 1717802653893 + size: 39637 + timestamp: 1733188758212 - kind: conda name: tzdata version: 2024b diff --git a/magic.lock b/magic.lock index 49204fdacf..db809b41a1 100644 --- a/magic.lock +++ b/magic.lock @@ -8,8 +8,8 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -23,10 +23,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -65,7 +65,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -132,12 +132,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -179,7 +179,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda @@ -209,8 +209,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -231,8 +231,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -246,10 +246,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -288,7 +288,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda @@ -356,12 +356,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -403,7 +403,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda @@ -433,8 +433,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -454,8 +454,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda @@ -469,10 +469,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -511,7 +511,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -570,12 +570,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda @@ -617,7 +617,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda @@ -646,8 +646,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda @@ -715,27 +715,27 @@ packages: timestamp: 1650670790230 - kind: conda name: aiohappyeyeballs - version: 2.4.3 + version: 2.4.4 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.3-pyhd8ed1ab_0.conda - sha256: cfa5bed6ad8d00c2bc2c6ccf115e91ef1a9981b73c68537b247f1a964a841cac - md5: ec763b0a58960558ca0ad7255a51a237 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 + md5: 8d6f8a679aa0272ba8d6092ce4824870 depends: - - python >=3.8.0 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 19271 - timestamp: 1727779893392 + size: 19310 + timestamp: 1733135584059 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h178313f_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.8-py312h178313f_0.conda - sha256: 5a51cfa8c17a1c545f07c8a9bae637b233c803f92f922ce3badb7a81f6e7eba8 - md5: 63eb2bd555d446218c7bbdec2dd746c5 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda + sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 + md5: eeaf9831f262132fb12ce3921de09651 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -750,16 +750,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 912229 - timestamp: 1732780345490 + size: 912186 + timestamp: 1733125914520 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312h998013c_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.8-py312h998013c_0.conda - sha256: 991fccd7387b08127a8398cdd499ebb9be7a16a612b024f7f82d0ecbae456b00 - md5: 8caf80b1f8510c2c626831f463fac611 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda + sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b + md5: 0bb2657d1215a89fb586d387ce9c4daa depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -774,16 +774,16 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 873606 - timestamp: 1732780440642 + size: 873089 + timestamp: 1733125044394 - kind: conda name: aiohttp - version: 3.11.8 + version: 3.11.9 build: py312hcc812fe_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.8-py312hcc812fe_0.conda - sha256: 04dc698f291a0580101baa4df07cc12ed99f025c4aab23e184cfe12cf692fa12 - md5: dc9d21c22f3a000083437b0e99e99f31 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda + sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 + md5: 06400e4f6428e6c2ea2b59df702b5b39 depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 @@ -798,8 +798,8 @@ packages: - yarl >=1.17.0,<2.0 license: MIT AND Apache-2.0 license_family: Apache - size: 900671 - timestamp: 1732780496954 + size: 900828 + timestamp: 1733124971238 - kind: conda name: aiosignal version: 1.3.1 @@ -1317,12 +1317,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.2-h29aef15_0.conda - sha256: 387e4df97529d1849a774082b1fed78c7870effc02ed4c2b45961615a0516b64 - md5: fbf4af2c93ae67f175583c9185be4133 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 + md5: e09cd76e50ce09ec14c17109da5c6502 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1334,16 +1334,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117212 - timestamp: 1732679211893 + size: 117467 + timestamp: 1733098782199 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.2-h3a84f74_0.conda - sha256: c0ae38eb1f878157323afdd002229e9eeb739f622e028447330805c030c50a9f - md5: a5f883ce16928e898856b5bd8d1bee57 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d + md5: 171850b890600458ae6c990e78f1fa23 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1356,16 +1356,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113549 - timestamp: 1732679091663 + size: 113536 + timestamp: 1733098705479 - kind: conda name: aws-c-s3 - version: 0.7.2 + version: 0.7.3 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.2-h840aca7_0.conda - sha256: 30e4bed9d008fb79f5e84ecbea0f21030ad5d60cb5c55a962df90721aa98fc42 - md5: 63100ff62fdff4a6afcea38841036027 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff + md5: 893e668d99fa4b31eef9dc5b19c21b9a depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1376,8 +1376,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97042 - timestamp: 1732679268030 + size: 97145 + timestamp: 1733098874599 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1479,13 +1479,13 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h0e61686_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h0e61686_0.conda - sha256: b821d0125f8fcb589b880bf3a5e0e1667e285b3006ceb19d96e6d92d049ab787 - md5: 651a6500e5fded51bb7572f4eebcfd7b + build: h7939e66_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d + md5: 5e573a52a1cd20f81d7fdf1db4f4583a depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1493,23 +1493,25 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 355169 - timestamp: 1732769507038 + size: 283670 + timestamp: 1733150929992 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h6068a22_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h6068a22_0.conda - sha256: 45b15e8ecad820f9f80bace92cbb29f81b30e0ba31e25b936a13bdb0360a0637 - md5: 7f8ecd32e9afbbf87438367b551c3a8b + build: ha226bf8_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 + md5: 81da0b5f65ab08e3919d6eadf08b5776 depends: + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1517,24 +1519,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 283440 - timestamp: 1732769529667 + size: 236505 + timestamp: 1733151090562 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h8bcca62_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8bcca62_0.conda - sha256: b6d2ff238a712137afd9b46842235b32a04cac580734873bf86876da6e71dd03 - md5: 8e49f5e86a3e39699b24035fa6d1ad40 + build: hdec8b0f_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd + md5: 40647232fad98f92be8c6050a7e0c2bd depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1542,13 +1544,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.2,<0.7.3.0a0 + - aws-c-s3 >=0.7.3,<0.7.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236490 - timestamp: 1732769764315 + size: 354710 + timestamp: 1733150818238 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2765,13 +2768,13 @@ packages: timestamp: 1732831049776 - kind: conda name: huggingface_hub - version: 0.26.2 - build: pyh0610db2_0 + version: 0.26.3 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.2-pyh0610db2_0.conda - sha256: fad5da1b0a0899dfb4d59bb4a4e4b58bade677ad44332beb608020e55f1bea53 - md5: a7344f1612e61d1e1dcc90c758f71f8f + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 + md5: 997fc223fbc616c262f2a32a22d433a4 depends: - filelock - fsspec >=2023.5.0 @@ -2783,9 +2786,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274216 - timestamp: 1730211995421 + size: 274858 + timestamp: 1733170279930 - kind: conda name: hyperframe version: 6.0.1 @@ -3205,6 +3207,7 @@ packages: - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu license: Apache-2.0 + license_family: APACHE size: 5475725 timestamp: 1732947802614 - kind: conda @@ -3247,6 +3250,7 @@ packages: - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 license: Apache-2.0 + license_family: APACHE size: 8026783 timestamp: 1732950110265 - kind: conda @@ -3325,6 +3329,7 @@ packages: - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 577510 timestamp: 1732950190684 - kind: conda @@ -3341,6 +3346,7 @@ packages: - libarrow 18.1.0 h654e1bb_2_cpu - libcxx >=18 license: Apache-2.0 + license_family: APACHE size: 483362 timestamp: 1732948000606 - kind: conda @@ -3379,6 +3385,7 @@ packages: - libparquet 18.1.0 h23a96eb_2_cpu - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 559143 timestamp: 1732950272727 - kind: conda @@ -3397,6 +3404,7 @@ packages: - libcxx >=18 - libparquet 18.1.0 h5168bdf_2_cpu license: Apache-2.0 + license_family: APACHE size: 489769 timestamp: 1732949732423 - kind: conda @@ -3418,6 +3426,7 @@ packages: - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 + license_family: APACHE size: 515352 timestamp: 1732950311471 - kind: conda @@ -3462,6 +3471,7 @@ packages: - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 license: Apache-2.0 + license_family: APACHE size: 451127 timestamp: 1732950194322 - kind: conda @@ -4831,6 +4841,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 1115906 timestamp: 1732950250848 - kind: conda @@ -4849,6 +4860,7 @@ packages: - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 + license_family: APACHE size: 872333 timestamp: 1732949558028 - kind: conda @@ -5847,76 +5859,76 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120105-release.conda - sha256: 7b3ef233f35d3c9d2b2a756b85339f3271f2cac8d4433712fce9dbdc83a56ce3 - md5: 066b95823e3c9cd160c5cbe3a530e658 - depends: - - max-core ==24.6.0.dev2024120105 release - - max-python >=24.6.0.dev2024120105,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120105 release - - mblack ==24.6.0.dev2024120105 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda + sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e + md5: fa3d1a799da8e216b9448fd2246655f3 + depends: + - max-core ==24.6.0.dev2024120221 release + - max-python >=24.6.0.dev2024120221,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120221 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733030528874 + size: 9927 + timestamp: 1733176232456 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120105-release.conda - sha256: cc9c4b332e39efa40ead3e55c67438b82b4f0f74cb64702636168d92da5f986c - md5: c4876829ff25302ed7aaac7e800f9faa + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda + sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb + md5: 646d3f60af8b7d77a29ea74c80b73abe depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254727332 - timestamp: 1733030528873 + size: 254782923 + timestamp: 1733176189897 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120105-release.conda - sha256: d733b0b57191ae17abe55bd5c3cf7fe02e77038c4cf9eb98b3a539d283698f98 - md5: 2f1eb5e1b2e077b3877c4ca7f5670a6c + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda + sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 + md5: 762d1a967090c478c15e8182ee077eac depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258393349 - timestamp: 1733030529884 + size: 258409140 + timestamp: 1733176232454 - kind: conda name: max-core - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120105-release.conda - sha256: 625afbae07f7ef017c037f8b81c2de82d344ca1d14becad14d4d804326046204 - md5: 17df9e0840ae14e6f3c9a840e8237f8a + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda + sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c + md5: 0b95fc4831992260253ee5e3c83f3382 depends: - - mblack ==24.6.0.dev2024120105 release + - mblack ==24.6.0.dev2024120221 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220268454 - timestamp: 1733030465063 + size: 220306895 + timestamp: 1733176012956 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 9f9139e62349d97472d5a7b87575de7669ce099e1f2d4090c22b1d6a7a9b246e - md5: c933f4a6c589fad077ce030b33236724 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 + md5: d11c807bdfab1a9ec1d8d60ae4966f6f depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -5938,18 +5950,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128563671 - timestamp: 1733030528881 + size: 128533716 + timestamp: 1733176189912 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: a5e03fa2abd8453c813a13225e84df4a9781c6b25a05c1b976cfe6f4671d4bbd - md5: 13bbc313863bd5c560a9768165d63be1 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 + md5: f7e5f66871aa60909394a02ab2344f64 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -5971,18 +5983,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132240712 - timestamp: 1733030529893 + size: 132227870 + timestamp: 1733176232462 - kind: conda name: max-python - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120105-3.12release.conda - sha256: 47b8fb6184f15795d78d408ce2e7f702208af3863adbea9c8a0b1011ac551411 - md5: 5c145a15e58ef93719afa6cc2b472ccf + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda + sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a + md5: 10517bdbac80736a742077a261e535b6 depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python 3.12.* - pillow - fastapi @@ -6004,17 +6016,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119119907 - timestamp: 1733030465067 + size: 119173532 + timestamp: 1733176012959 - kind: conda name: mblack - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120105-release.conda - sha256: 8b4fdcc9c031e2b16fd48c64767919c6c82b0347d02a606770589b58e659721b - md5: af6b9bb6fed204e9e4ed73c334d24647 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 + md5: a4660d8dd8037b8c090b028271d18e14 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6024,8 +6036,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130609 - timestamp: 1733030528877 + size: 130643 + timestamp: 1733176232459 - kind: conda name: mdurl version: 0.1.2 @@ -6043,21 +6055,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120105 + version: 24.6.0.dev2024120221 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120105-release.conda - sha256: 131b9545efd1c967f7fc0ee3b23c5000fc5481ab5ce1a3117624f70b9db7e9e3 - md5: 2c6472e319310564fa809d3e06b25ba5 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a + md5: 9f4dbbf9e29a9fc89154906e388c037b depends: - - max-core ==24.6.0.dev2024120105 release + - max-core ==24.6.0.dev2024120221 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22941 - timestamp: 1733030528878 + size: 22931 + timestamp: 1733176232460 - kind: conda name: multidict version: 6.1.0 @@ -7484,20 +7496,19 @@ packages: timestamp: 1677079727691 - kind: conda name: python-multipart - version: 0.0.18 - build: pyhff2d567_1 - build_number: 1 + version: 0.0.19 + build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.18-pyhff2d567_1.conda - sha256: 464e546b789b8e881e1dc6b4995a11007d1e7c3ef2a533b9fb970146e85f7af8 - md5: 8057e4cf29236ea2094cc20fe9ef451e + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda + sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 + md5: fe524346d3a9aa0aaf353dc39f7d1715 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27683 - timestamp: 1732988029649 + size: 27780 + timestamp: 1733062326577 - kind: conda name: python-tzdata version: '2024.2' @@ -8433,33 +8444,35 @@ packages: - kind: conda name: typing-extensions version: 4.12.2 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda - sha256: d3b9a8ed6da7c9f9553c5fd8a4fca9c3e0ab712fa5f497859f82337d67533b73 - md5: 52d648bd608f5737b123f510bb5514b5 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 depends: - - typing_extensions 4.12.2 pyha770c72_0 + - typing_extensions 4.12.2 pyha770c72_1 license: PSF-2.0 license_family: PSF - size: 10097 - timestamp: 1717802659025 + size: 10075 + timestamp: 1733188758872 - kind: conda name: typing_extensions version: 4.12.2 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_0.conda - sha256: 0fce54f8ec3e59f5ef3bb7641863be4e1bf1279623e5af3d3fa726e8f7628ddb - md5: ebe6952715e1d5eb567eeebf25250fa7 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 depends: - - python >=3.8 + - python >=3.9 license: PSF-2.0 license_family: PSF - size: 39888 - timestamp: 1717802653893 + size: 39637 + timestamp: 1733188758212 - kind: conda name: tzdata version: 2024b From 30fa4c3a3dce868617a3f74bff1f81909563338f Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Mon, 2 Dec 2024 14:15:19 -0800 Subject: [PATCH 067/119] [******][GPU] Disable print functionality on AMD GPUs MODULAR_ORIG_COMMIT_REV_ID: c167530a4bb665c5176661e38257dcd419203882 --- stdlib/src/builtin/io.mojo | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index 259f065987..c0b55f993e 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -266,6 +266,12 @@ fn print[ flush: If set to true, then the stream is forcibly flushed. file: The output stream. """ + + # TODO(MSTDL-1027): Print on AMD GPUs is not implemented yet. + @parameter + if is_amd_gpu(): + return + write_buffered[buffer_size=4096](file, values, sep=sep, end=end) @parameter From a4f67f16b8f334d7d2a9cd6722f2655a5d9d85e8 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 2 Dec 2024 18:33:08 -0800 Subject: [PATCH 068/119] [mojo-stdlib] Minor cleanups for `Tuple`, NFC. These are just minor improvements to `Tuple` from a walkthrough with @VerdagonModular. MODULAR_ORIG_COMMIT_REV_ID: 352c9d3bc6494f4696a405bf3d992cfced5dce89 --- stdlib/src/builtin/tuple.mojo | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/stdlib/src/builtin/tuple.mojo b/stdlib/src/builtin/tuple.mojo index 50fdf9f708..00bede563f 100644 --- a/stdlib/src/builtin/tuple.mojo +++ b/stdlib/src/builtin/tuple.mojo @@ -81,8 +81,10 @@ struct Tuple[*element_types: CollectionElement](Sized, CollectionElement): UnsafePointer.address_of(self[i]) ) - # Mark the elements as destroyed. - storage._is_owned = False + # Do not destroy the elements when 'storage' goes away. + __mlir_op.`lit.ownership.mark_destroyed`( + __get_mvalue_as_litref(storage) + ) fn __del__(owned self): """Destructor that destroys all of the elements.""" @@ -126,6 +128,7 @@ struct Tuple[*element_types: CollectionElement](Sized, CollectionElement): UnsafePointer.address_of(existing[i]).move_pointee_into( UnsafePointer.address_of(self[i]) ) + # Note: The destructor on `existing` is auto-disabled in a moveinit. @always_inline @staticmethod From 9702f27ca6f7ae5d80b702ad22ff2effc8728dfb Mon Sep 17 00:00:00 2001 From: modularbot Date: Tue, 3 Dec 2024 09:38:54 +0000 Subject: [PATCH 069/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024120306 --- examples/life/magic.lock | 499 ++++++++++++++++---------------- examples/magic.lock | 497 ++++++++++++++++---------------- examples/notebooks/magic.lock | 520 +++++++++++++++++----------------- examples/operators/magic.lock | 499 ++++++++++++++++---------------- magic.lock | 499 ++++++++++++++++---------------- 5 files changed, 1280 insertions(+), 1234 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 8325a74676..9c78b39352 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -15,7 +15,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda @@ -47,15 +47,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda @@ -70,7 +70,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda @@ -87,7 +87,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda @@ -173,15 +173,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -200,7 +200,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda @@ -216,7 +216,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -225,7 +225,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -239,7 +239,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda @@ -249,7 +249,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h08b1b5d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -267,7 +267,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda @@ -300,7 +300,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda @@ -332,15 +332,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda @@ -355,7 +355,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda @@ -372,7 +372,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda @@ -458,15 +458,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -485,7 +485,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda @@ -501,7 +501,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -510,7 +510,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -524,7 +524,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda @@ -534,7 +534,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-h680d130_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -552,7 +552,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda @@ -583,7 +583,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -614,14 +614,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda @@ -635,7 +635,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda @@ -652,7 +652,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -723,15 +723,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -750,7 +750,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda @@ -765,7 +765,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -774,7 +774,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -788,7 +788,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.7-hf9b8971_0.conda @@ -797,7 +797,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-hda0f12e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -815,7 +815,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda @@ -1098,19 +1098,20 @@ packages: - kind: conda name: asgiref version: 3.8.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - sha256: 85fc8f54361b922d744c8728a7a711cab390b78941e18a3570dabfac8169e5f9 - md5: b5c2e1034ccc76fb14031637924880eb + url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda + sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 + md5: 21187c8276f87b6aedfe63c267a6eed7 depends: - - python >=3.8 + - python >=3.9 - typing_extensions >=4 license: BSD-3-Clause license_family: BSD - size: 26347 - timestamp: 1711269034814 + size: 26436 + timestamp: 1733215704904 - kind: conda name: attr version: 2.5.1 @@ -2574,33 +2575,33 @@ packages: timestamp: 1666700778190 - kind: conda name: datasets - version: 3.1.0 - build: pyhff2d567_0 + version: 2.14.4 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - sha256: c3329f96a797fcec28a0bc42372bb253ce6434cbd6d9b5dc8e8417a247c43027 - md5: cd6278d231cd340f2f0c600037df5a98 + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: - aiohttp - - dill >=0.3.0,<0.3.9 - - filelock - - fsspec >=2023.1.0,<=2024.9.0 - - huggingface_hub >=0.23.0 - - multiprocess <0.70.17 + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess - numpy >=1.17 - packaging - pandas - - pyarrow >=15.0.0 - - python >=3.9 + - pyarrow >=8.0.0 + - python >=3.8.0 - python-xxhash - pyyaml >=5.1 - - requests >=2.32.2 - - tqdm >=4.66.3 + - requests >=2.19.0 + - tqdm >=4.62.1 license: Apache-2.0 license_family: Apache - size: 332680 - timestamp: 1731706749584 + size: 347303 + timestamp: 1691593908658 - kind: conda name: dav1d version: 1.2.1 @@ -2693,19 +2694,19 @@ packages: timestamp: 1731836933516 - kind: conda name: dill - version: 0.3.8 + version: 0.3.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 - md5: 78745f157d56877a2c6e7b386f66f3e2 + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd depends: - python >=3.7 license: BSD-3-Clause license_family: BSD - size: 88169 - timestamp: 1706434833883 + size: 87553 + timestamp: 1690101185422 - kind: conda name: dnspython version: 2.7.0 @@ -2764,17 +2765,18 @@ packages: - kind: conda name: exceptiongroup version: 1.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - python >=3.7 + - python >=3.9 license: MIT and PSF-2.0 - size: 20418 - timestamp: 1720869435725 + size: 20486 + timestamp: 1733208916977 - kind: conda name: expat version: 2.6.4 @@ -3172,19 +3174,19 @@ packages: timestamp: 1729699642726 - kind: conda name: fsspec - version: 2024.9.0 + version: 2024.10.0 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc - md5: ace4329fbff4c69ab0309db6da182987 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 + md5: 816dbc4679a64e4417cd1385d661bb31 depends: - python >=3.8 license: BSD-3-Clause license_family: BSD - size: 134378 - timestamp: 1725543368393 + size: 134745 + timestamp: 1729608972363 - kind: conda name: gettext version: 0.22.5 @@ -3680,6 +3682,7 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 + license_family: APACHE size: 274858 timestamp: 1733170279930 - kind: conda @@ -3745,18 +3748,19 @@ packages: - kind: conda name: idna version: '3.10' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - python >=3.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 49837 - timestamp: 1726459583613 + size: 49765 + timestamp: 1733211921194 - kind: conda name: importlib-metadata version: 7.0.2 @@ -7739,81 +7743,82 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e - md5: fa3d1a799da8e216b9448fd2246655f3 - depends: - - max-core ==24.6.0.dev2024120221 release - - max-python >=24.6.0.dev2024120221,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120221 release - - mblack ==24.6.0.dev2024120221 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e + md5: 9c25081ace6ad2c13675cf0123109cb9 + depends: + - max-core ==24.6.0.dev2024120306 release + - max-python >=24.6.0.dev2024120306,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120306 release license: LicenseRef-Modular-Proprietary - size: 9927 - timestamp: 1733176232456 + size: 9929 + timestamp: 1733209293577 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb - md5: 646d3f60af8b7d77a29ea74c80b73abe + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 + md5: c249d77d8e5885dd0eacd9028131413f depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254782923 - timestamp: 1733176189897 + size: 254711372 + timestamp: 1733209193854 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 - md5: 762d1a967090c478c15e8182ee077eac + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea + md5: e5b6ae7316dc2b08a52cee8f27b4f484 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258409140 - timestamp: 1733176232454 + size: 258488596 + timestamp: 1733209293575 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c - md5: 0b95fc4831992260253ee5e3c83f3382 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 + md5: 05acbd2d9cf25aa913a979aa9802c194 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220306895 - timestamp: 1733176012956 + size: 220248523 + timestamp: 1733209020078 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 - md5: d11c807bdfab1a9ec1d8d60ae4966f6f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 + md5: 4bdce0c1dd562e22566551d578103d2f depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -7830,23 +7835,24 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128533716 - timestamp: 1733176189912 + size: 128537272 + timestamp: 1733209193862 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 - md5: f7e5f66871aa60909394a02ab2344f64 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e + md5: e7d3ebeaaeb2bd99167fda861a7e7aba depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -7863,23 +7869,24 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132227870 - timestamp: 1733176232462 + size: 132223349 + timestamp: 1733209293584 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a - md5: 10517bdbac80736a742077a261e535b6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 + md5: 9859f8c88c81c18baaddd15be03d259c depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -7896,17 +7903,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119173532 - timestamp: 1733176012959 + size: 119113363 + timestamp: 1733209020082 - kind: conda name: mblack - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 - md5: a4660d8dd8037b8c090b028271d18e14 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda + sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac + md5: f77eafd932de3ae309643ea716ba3c3a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7916,8 +7923,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130643 - timestamp: 1733176232459 + size: 130649 + timestamp: 1733209293580 - kind: conda name: mdurl version: 0.1.2 @@ -7935,21 +7942,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a - md5: 9f4dbbf9e29a9fc89154906e388c037b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc + md5: 8bb40dfabe84757d93d3053fdf4b0a58 depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22931 - timestamp: 1733176232460 + size: 22940 + timestamp: 1733209293581 - kind: conda name: mpg123 version: 1.32.9 @@ -8052,61 +8059,59 @@ packages: timestamp: 1729065664275 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h024a12e_1 + version: 0.70.15 + build: py312h02f2b3b_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 - md5: fd83a478d686df79aa394b9db1ad20b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 depends: - - __osx >=11.0 - - dill >=0.3.8 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 342831 - timestamp: 1724954807776 + size: 335147 + timestamp: 1695459275360 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h66e93f0_1 + version: 0.70.15 + build: py312h98912ed_1 build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 - md5: efe4a3f62320156f68579362314009f3 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d depends: - - __glibc >=2.17,<3.0.a0 - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 340540 - timestamp: 1724954755987 + size: 335666 + timestamp: 1695459025249 - kind: conda name: multiprocess - version: 0.70.16 - build: py312hb2c0f52_1 + version: 0.70.15 + build: py312hdd3e373_1 build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 - md5: 642c63b684ce5614f157572b04816983 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 depends: - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 341428 - timestamp: 1724954862644 + size: 336110 + timestamp: 1695459137796 - kind: conda name: mypy_extensions version: 1.0.0 @@ -8653,19 +8658,19 @@ packages: - kind: conda name: packaging version: '24.2' - build: pyhff2d567_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 license_family: APACHE - size: 60380 - timestamp: 1731802602808 + size: 60164 + timestamp: 1733203368787 - kind: conda name: pandas version: 2.2.3 @@ -9383,18 +9388,20 @@ packages: - kind: conda name: pycparser version: '2.22' - build: pyhd8ed1ab_0 + build: pyh29332c3_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - python >=3.8 + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD - size: 105098 - timestamp: 1711811634025 + size: 110100 + timestamp: 1733195786147 - kind: conda name: pydantic version: 2.10.2 @@ -9748,19 +9755,19 @@ packages: - kind: conda name: python-dateutil version: 2.9.0.post0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 license: Apache-2.0 - license_family: APACHE - size: 221925 - timestamp: 1731919374686 + size: 222505 + timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 @@ -10245,24 +10252,24 @@ packages: - kind: conda name: requests version: 2.32.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.8 + - python >=3.9 - urllib3 >=1.21.1,<3 constrains: - chardet >=3.0.2,<6 license: Apache-2.0 - license_family: APACHE - size: 58810 - timestamp: 1717057174842 + size: 58723 + timestamp: 1733217126197 - kind: conda name: rich version: 13.9.4 @@ -10639,18 +10646,19 @@ packages: - kind: conda name: six version: 1.16.0 - build: pyh6c4a22f_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda + sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c + md5: a516da6cfe1ec0a55e49737f017b4965 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 14259 - timestamp: 1620240338595 + size: 16385 + timestamp: 1733216901349 - kind: conda name: snappy version: 1.2.1 @@ -11110,22 +11118,23 @@ packages: - kind: conda name: urllib3 version: 2.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 + md5: 4a2d8ef7c37b8808c5b9b750501fffce depends: - brotli-python >=1.0.9 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98076 - timestamp: 1726496531769 + size: 98077 + timestamp: 1733206968917 - kind: conda name: uvicorn version: 0.32.1 diff --git a/examples/magic.lock b/examples/magic.lock index bf0e02fb64..2e04f1ffa4 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -13,7 +13,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda @@ -43,19 +43,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -67,7 +67,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -131,14 +131,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py311h459d7ec_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -156,7 +156,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py311h49e9ac3_0.conda @@ -167,7 +167,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py311h4854187_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -175,7 +175,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.10-hc5c86c4_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -188,13 +188,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -211,7 +211,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda @@ -235,7 +235,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda @@ -265,19 +265,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -290,7 +290,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -354,14 +354,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py311hcd402e7_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -379,7 +379,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py311hb2a0dd2_0.conda @@ -390,7 +390,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py311ha6d2531_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -398,7 +398,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.10-h5d932e8_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -411,13 +411,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -434,7 +434,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda @@ -457,7 +457,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -487,19 +487,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py311hae2e1ce_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -511,7 +511,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -567,14 +567,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py311h460d6c5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py311heffc1b2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -592,7 +592,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py311h3894ae9_0.conda @@ -603,7 +603,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py311he04fa90_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -611,7 +611,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.10-hc51fdd5_3_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -624,12 +624,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py311h481aa64_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -646,7 +646,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda @@ -854,19 +854,20 @@ packages: - kind: conda name: asgiref version: 3.8.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - sha256: 85fc8f54361b922d744c8728a7a711cab390b78941e18a3570dabfac8169e5f9 - md5: b5c2e1034ccc76fb14031637924880eb + url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda + sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 + md5: 21187c8276f87b6aedfe63c267a6eed7 depends: - - python >=3.8 + - python >=3.9 - typing_extensions >=4 license: BSD-3-Clause license_family: BSD - size: 26347 - timestamp: 1711269034814 + size: 26436 + timestamp: 1733215704904 - kind: conda name: attrs version: 24.2.0 @@ -2215,33 +2216,33 @@ packages: timestamp: 1666700778190 - kind: conda name: datasets - version: 3.1.0 - build: pyhff2d567_0 + version: 2.14.4 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - sha256: c3329f96a797fcec28a0bc42372bb253ce6434cbd6d9b5dc8e8417a247c43027 - md5: cd6278d231cd340f2f0c600037df5a98 + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: - aiohttp - - dill >=0.3.0,<0.3.9 - - filelock - - fsspec >=2023.1.0,<=2024.9.0 - - huggingface_hub >=0.23.0 - - multiprocess <0.70.17 + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess - numpy >=1.17 - packaging - pandas - - pyarrow >=15.0.0 - - python >=3.9 + - pyarrow >=8.0.0 + - python >=3.8.0 - python-xxhash - pyyaml >=5.1 - - requests >=2.32.2 - - tqdm >=4.66.3 + - requests >=2.19.0 + - tqdm >=4.62.1 license: Apache-2.0 license_family: Apache - size: 332680 - timestamp: 1731706749584 + size: 347303 + timestamp: 1691593908658 - kind: conda name: deprecated version: 1.2.15 @@ -2260,19 +2261,19 @@ packages: timestamp: 1731836933516 - kind: conda name: dill - version: 0.3.8 + version: 0.3.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 - md5: 78745f157d56877a2c6e7b386f66f3e2 + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd depends: - python >=3.7 license: BSD-3-Clause license_family: BSD - size: 88169 - timestamp: 1706434833883 + size: 87553 + timestamp: 1690101185422 - kind: conda name: dnspython version: 2.7.0 @@ -2331,17 +2332,18 @@ packages: - kind: conda name: exceptiongroup version: 1.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - python >=3.7 + - python >=3.9 license: MIT and PSF-2.0 - size: 20418 - timestamp: 1720869435725 + size: 20486 + timestamp: 1733208916977 - kind: conda name: fastapi version: 0.115.5 @@ -2498,19 +2500,19 @@ packages: timestamp: 1729699703032 - kind: conda name: fsspec - version: 2024.9.0 + version: 2024.10.0 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc - md5: ace4329fbff4c69ab0309db6da182987 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 + md5: 816dbc4679a64e4417cd1385d661bb31 depends: - python >=3.8 license: BSD-3-Clause license_family: BSD - size: 134378 - timestamp: 1725543368393 + size: 134745 + timestamp: 1729608972363 - kind: conda name: gflags version: 2.2.2 @@ -2783,6 +2785,7 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 + license_family: APACHE size: 274858 timestamp: 1733170279930 - kind: conda @@ -2818,18 +2821,19 @@ packages: - kind: conda name: idna version: '3.10' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - python >=3.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 49837 - timestamp: 1726459583613 + size: 49765 + timestamp: 1733211921194 - kind: conda name: importlib-metadata version: 7.0.2 @@ -5840,81 +5844,82 @@ packages: timestamp: 1729352296161 - kind: conda name: max - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e - md5: fa3d1a799da8e216b9448fd2246655f3 - depends: - - max-core ==24.6.0.dev2024120221 release - - max-python >=24.6.0.dev2024120221,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120221 release - - mblack ==24.6.0.dev2024120221 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e + md5: 9c25081ace6ad2c13675cf0123109cb9 + depends: + - max-core ==24.6.0.dev2024120306 release + - max-python >=24.6.0.dev2024120306,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120306 release license: LicenseRef-Modular-Proprietary - size: 9927 - timestamp: 1733176232456 + size: 9929 + timestamp: 1733209293577 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb - md5: 646d3f60af8b7d77a29ea74c80b73abe + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 + md5: c249d77d8e5885dd0eacd9028131413f depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254782923 - timestamp: 1733176189897 + size: 254711372 + timestamp: 1733209193854 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 - md5: 762d1a967090c478c15e8182ee077eac + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea + md5: e5b6ae7316dc2b08a52cee8f27b4f484 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258409140 - timestamp: 1733176232454 + size: 258488596 + timestamp: 1733209293575 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c - md5: 0b95fc4831992260253ee5e3c83f3382 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 + md5: 05acbd2d9cf25aa913a979aa9802c194 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220306895 - timestamp: 1733176012956 + size: 220248523 + timestamp: 1733209020078 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.11release.conda - sha256: 4db5c6b7fa0c54df758b803ddcdabd352bde9a207c6a2747adcd921202637c0b - md5: fd512401071a16a8c24f6c4a4aa01a39 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.11release.conda + sha256: fe78fef13dabb20d1a64aa0a0f1abb668a28ba18221f39a659b73236dbae9a60 + md5: 86e43abaa5b98cfd229e964be3a614ce depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.11.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5931,23 +5936,24 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128540502 - timestamp: 1733176189908 + size: 128574125 + timestamp: 1733209193860 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.11release.conda - sha256: 94e7c54833fe42f2c3b2992b3231e1d4bbfeb1d5705da5bd544bad51881f448d - md5: da44758bc2124cab1e00d67ba6c23235 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.11release.conda + sha256: ba069825f4ef3ee3eb8079b652666d0a4d80ddf76e0cfe12782bb88f630d181a + md5: d6beb27837f451771445062607b45f38 depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.11.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5964,23 +5970,24 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132240625 - timestamp: 1733176232460 + size: 132245621 + timestamp: 1733209293581 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.11release.conda - sha256: fe72ff98e438f7b8d6d6331821de8eab4cc6a97cdb89db0bd68001ba69d1e6ad - md5: c453413d6473cab3e8153f7503ab43f2 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.11release.conda + sha256: e9ca73474ecae1d88742e3f38067741ad532bea307d92ef8bbc4b03434e71502 + md5: 7cfbd7cb82332bc7e992f1297d0fb9a3 depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.11.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5997,17 +6004,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119198780 - timestamp: 1733176012958 + size: 119124363 + timestamp: 1733209020081 - kind: conda name: mblack - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 - md5: a4660d8dd8037b8c090b028271d18e14 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda + sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac + md5: f77eafd932de3ae309643ea716ba3c3a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6017,8 +6024,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130643 - timestamp: 1733176232459 + size: 130649 + timestamp: 1733209293580 - kind: conda name: mdurl version: 0.1.2 @@ -6036,21 +6043,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a - md5: 9f4dbbf9e29a9fc89154906e388c037b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc + md5: 8bb40dfabe84757d93d3053fdf4b0a58 depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22931 - timestamp: 1733176232460 + size: 22940 + timestamp: 1733209293581 - kind: conda name: multidict version: 6.1.0 @@ -6107,61 +6114,59 @@ packages: timestamp: 1729065776220 - kind: conda name: multiprocess - version: 0.70.16 - build: py311h460d6c5_1 + version: 0.70.15 + build: py311h459d7ec_1 build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py311h460d6c5_1.conda - sha256: 8cf03e51901ed44f143f1ad380968a547651790e2dbb678a90bc2f49fd5cd405 - md5: 7851a81d1c0c85a4336fcdb886ed0651 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py311h459d7ec_1.conda + sha256: eca27e6fb5fb4ee73f04ae030bce29f5daa46fea3d6abdabb91740646f0d188e + md5: cebd02a02b199549a57e0d70aed7e2dc depends: - - __osx >=11.0 - - dill >=0.3.8 + - dill >=0.3.6 + - libgcc-ng >=12 - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-3-Clause license_family: BSD - size: 347445 - timestamp: 1724954943593 + size: 339543 + timestamp: 1695459055911 - kind: conda name: multiprocess - version: 0.70.16 - build: py311h9ecbd09_1 + version: 0.70.15 + build: py311hcd402e7_1 build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py311h9ecbd09_1.conda - sha256: 54120261b227080f1eee580e7e48aba2951769f8a1735592df9e427cd5c99df0 - md5: 335ef38862ce33e7cd4547c8d698c7ae + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py311hcd402e7_1.conda + sha256: 126190f2f981ea84cbf891a2ff6ff52e1bdd681c48392db40b79da0e9e786af8 + md5: bd07035dd460220466bcab62cefced4d depends: - - __glibc >=2.17,<3.0.a0 - - dill >=0.3.8 - - libgcc >=13 + - dill >=0.3.6 + - libgcc-ng >=12 - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-3-Clause license_family: BSD - size: 348294 - timestamp: 1724954751583 + size: 339518 + timestamp: 1695459050286 - kind: conda name: multiprocess - version: 0.70.16 - build: py311ha879c10_1 + version: 0.70.15 + build: py311heffc1b2_1 build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py311ha879c10_1.conda - sha256: 5ae2f030001fc628a80f8fa0d3229e98e771074d57035307735ae2228f22f8bc - md5: 660b134f348dcc4cc18268b26751a65a + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py311heffc1b2_1.conda + sha256: 1bf6f7bd6b3515f26fbd977ad26bfb7012516fb3854fe9f2d715a6fbbf28a5de + md5: 68b2ed99d42d6eea3cecd25b6a151cc9 depends: - - dill >=0.3.8 - - libgcc >=13 + - dill >=0.3.6 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: BSD-3-Clause license_family: BSD - size: 349109 - timestamp: 1724954811644 + size: 339630 + timestamp: 1695459263809 - kind: conda name: mypy_extensions version: 1.0.0 @@ -6655,19 +6660,19 @@ packages: - kind: conda name: packaging version: '24.2' - build: pyhff2d567_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 license_family: APACHE - size: 60380 - timestamp: 1731802602808 + size: 60164 + timestamp: 1733203368787 - kind: conda name: pandas version: 2.2.3 @@ -7151,18 +7156,20 @@ packages: - kind: conda name: pycparser version: '2.22' - build: pyhd8ed1ab_0 + build: pyh29332c3_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - python >=3.8 + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD - size: 105098 - timestamp: 1711811634025 + size: 110100 + timestamp: 1733195786147 - kind: conda name: pydantic version: 2.10.2 @@ -7435,19 +7442,19 @@ packages: - kind: conda name: python-dateutil version: 2.9.0.post0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 license: Apache-2.0 - license_family: APACHE - size: 221925 - timestamp: 1731919374686 + size: 222505 + timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 @@ -7889,24 +7896,24 @@ packages: - kind: conda name: requests version: 2.32.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.8 + - python >=3.9 - urllib3 >=1.21.1,<3 constrains: - chardet >=3.0.2,<6 license: Apache-2.0 - license_family: APACHE - size: 58810 - timestamp: 1717057174842 + size: 58723 + timestamp: 1733217126197 - kind: conda name: rich version: 13.9.4 @@ -8047,18 +8054,19 @@ packages: - kind: conda name: six version: 1.16.0 - build: pyh6c4a22f_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda + sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c + md5: a516da6cfe1ec0a55e49737f017b4965 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 14259 - timestamp: 1620240338595 + size: 16385 + timestamp: 1733216901349 - kind: conda name: snappy version: 1.2.1 @@ -8472,22 +8480,23 @@ packages: - kind: conda name: urllib3 version: 2.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 + md5: 4a2d8ef7c37b8808c5b9b750501fffce depends: - brotli-python >=1.0.9 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98076 - timestamp: 1726496531769 + size: 98077 + timestamp: 1733206968917 - kind: conda name: uvicorn version: 0.32.1 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index b3eba37aed..5d068575a5 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -16,7 +16,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda @@ -54,17 +54,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda @@ -72,7 +72,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -84,7 +84,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda @@ -166,15 +166,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda @@ -198,7 +198,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda @@ -219,7 +219,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -227,7 +227,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -235,14 +235,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda @@ -252,7 +252,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda @@ -277,7 +277,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda @@ -309,7 +309,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda @@ -347,17 +347,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda @@ -365,7 +365,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -378,7 +378,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda @@ -460,15 +460,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda @@ -492,7 +492,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py312h14eacfc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda @@ -513,7 +513,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -521,7 +521,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -529,14 +529,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda @@ -546,7 +546,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda @@ -571,7 +571,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda @@ -603,7 +603,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda @@ -641,17 +641,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda @@ -659,7 +659,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -671,7 +671,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda @@ -745,15 +745,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda @@ -777,7 +777,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda @@ -798,7 +798,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -808,7 +808,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -816,14 +816,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda @@ -832,7 +832,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda @@ -857,7 +857,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda @@ -1178,19 +1178,20 @@ packages: - kind: conda name: asgiref version: 3.8.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - sha256: 85fc8f54361b922d744c8728a7a711cab390b78941e18a3570dabfac8169e5f9 - md5: b5c2e1034ccc76fb14031637924880eb + url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda + sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 + md5: 21187c8276f87b6aedfe63c267a6eed7 depends: - - python >=3.8 + - python >=3.9 - typing_extensions >=4 license: BSD-3-Clause license_family: BSD - size: 26347 - timestamp: 1711269034814 + size: 26436 + timestamp: 1733215704904 - kind: conda name: asttokens version: 3.0.0 @@ -2668,33 +2669,33 @@ packages: timestamp: 1710320435158 - kind: conda name: datasets - version: 3.1.0 - build: pyhff2d567_0 + version: 2.14.4 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - sha256: c3329f96a797fcec28a0bc42372bb253ce6434cbd6d9b5dc8e8417a247c43027 - md5: cd6278d231cd340f2f0c600037df5a98 + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: - aiohttp - - dill >=0.3.0,<0.3.9 - - filelock - - fsspec >=2023.1.0,<=2024.9.0 - - huggingface_hub >=0.23.0 - - multiprocess <0.70.17 + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess - numpy >=1.17 - packaging - pandas - - pyarrow >=15.0.0 - - python >=3.9 + - pyarrow >=8.0.0 + - python >=3.8.0 - python-xxhash - pyyaml >=5.1 - - requests >=2.32.2 - - tqdm >=4.66.3 + - requests >=2.19.0 + - tqdm >=4.62.1 license: Apache-2.0 license_family: Apache - size: 332680 - timestamp: 1731706749584 + size: 347303 + timestamp: 1691593908658 - kind: conda name: debugpy version: 1.8.9 @@ -2797,19 +2798,19 @@ packages: timestamp: 1731836933516 - kind: conda name: dill - version: 0.3.8 + version: 0.3.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 - md5: 78745f157d56877a2c6e7b386f66f3e2 + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd depends: - python >=3.7 license: BSD-3-Clause license_family: BSD - size: 88169 - timestamp: 1706434833883 + size: 87553 + timestamp: 1690101185422 - kind: conda name: dnspython version: 2.7.0 @@ -2883,17 +2884,18 @@ packages: - kind: conda name: exceptiongroup version: 1.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - python >=3.7 + - python >=3.9 license: MIT and PSF-2.0 - size: 20418 - timestamp: 1720869435725 + size: 20486 + timestamp: 1733208916977 - kind: conda name: executing version: 2.1.0 @@ -3081,19 +3083,19 @@ packages: timestamp: 1729699642726 - kind: conda name: fsspec - version: 2024.9.0 + version: 2024.10.0 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc - md5: ace4329fbff4c69ab0309db6da182987 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 + md5: 816dbc4679a64e4417cd1385d661bb31 depends: - python >=3.8 license: BSD-3-Clause license_family: BSD - size: 134378 - timestamp: 1725543368393 + size: 134745 + timestamp: 1729608972363 - kind: conda name: gflags version: 2.2.2 @@ -3366,6 +3368,7 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 + license_family: APACHE size: 274858 timestamp: 1733170279930 - kind: conda @@ -3401,18 +3404,19 @@ packages: - kind: conda name: idna version: '3.10' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - python >=3.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 49837 - timestamp: 1726459583613 + size: 49765 + timestamp: 1733211921194 - kind: conda name: importlib-metadata version: 7.0.2 @@ -6859,81 +6863,82 @@ packages: timestamp: 1713250613726 - kind: conda name: max - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e - md5: fa3d1a799da8e216b9448fd2246655f3 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e + md5: 9c25081ace6ad2c13675cf0123109cb9 depends: - - max-core ==24.6.0.dev2024120221 release - - max-python >=24.6.0.dev2024120221,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120221 release - - mblack ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release + - max-python >=24.6.0.dev2024120306,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120306 release license: LicenseRef-Modular-Proprietary - size: 9927 - timestamp: 1733176232456 + size: 9929 + timestamp: 1733209293577 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb - md5: 646d3f60af8b7d77a29ea74c80b73abe + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 + md5: c249d77d8e5885dd0eacd9028131413f depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254782923 - timestamp: 1733176189897 + size: 254711372 + timestamp: 1733209193854 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 - md5: 762d1a967090c478c15e8182ee077eac + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea + md5: e5b6ae7316dc2b08a52cee8f27b4f484 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258409140 - timestamp: 1733176232454 + size: 258488596 + timestamp: 1733209293575 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c - md5: 0b95fc4831992260253ee5e3c83f3382 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 + md5: 05acbd2d9cf25aa913a979aa9802c194 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220306895 - timestamp: 1733176012956 + size: 220248523 + timestamp: 1733209020078 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 - md5: d11c807bdfab1a9ec1d8d60ae4966f6f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 + md5: 4bdce0c1dd562e22566551d578103d2f depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -6950,23 +6955,24 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128533716 - timestamp: 1733176189912 + size: 128537272 + timestamp: 1733209193862 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 - md5: f7e5f66871aa60909394a02ab2344f64 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e + md5: e7d3ebeaaeb2bd99167fda861a7e7aba depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -6983,23 +6989,24 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132227870 - timestamp: 1733176232462 + size: 132223349 + timestamp: 1733209293584 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a - md5: 10517bdbac80736a742077a261e535b6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 + md5: 9859f8c88c81c18baaddd15be03d259c depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -7016,17 +7023,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119173532 - timestamp: 1733176012959 + size: 119113363 + timestamp: 1733209020082 - kind: conda name: mblack - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 - md5: a4660d8dd8037b8c090b028271d18e14 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda + sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac + md5: f77eafd932de3ae309643ea716ba3c3a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7036,8 +7043,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130643 - timestamp: 1733176232459 + size: 130649 + timestamp: 1733209293580 - kind: conda name: mdurl version: 0.1.2 @@ -7070,21 +7077,21 @@ packages: timestamp: 1698947249750 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a - md5: 9f4dbbf9e29a9fc89154906e388c037b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc + md5: 8bb40dfabe84757d93d3053fdf4b0a58 depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22931 - timestamp: 1733176232460 + size: 22940 + timestamp: 1733209293581 - kind: conda name: multidict version: 6.1.0 @@ -7141,61 +7148,59 @@ packages: timestamp: 1729065664275 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h024a12e_1 + version: 0.70.15 + build: py312h02f2b3b_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 - md5: fd83a478d686df79aa394b9db1ad20b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 depends: - - __osx >=11.0 - - dill >=0.3.8 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 342831 - timestamp: 1724954807776 + size: 335147 + timestamp: 1695459275360 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h66e93f0_1 + version: 0.70.15 + build: py312h98912ed_1 build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 - md5: efe4a3f62320156f68579362314009f3 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d depends: - - __glibc >=2.17,<3.0.a0 - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 340540 - timestamp: 1724954755987 + size: 335666 + timestamp: 1695459025249 - kind: conda name: multiprocess - version: 0.70.16 - build: py312hb2c0f52_1 + version: 0.70.15 + build: py312hdd3e373_1 build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 - md5: 642c63b684ce5614f157572b04816983 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 depends: - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 341428 - timestamp: 1724954862644 + size: 336110 + timestamp: 1695459137796 - kind: conda name: mypy_extensions version: 1.0.0 @@ -7809,19 +7814,19 @@ packages: - kind: conda name: packaging version: '24.2' - build: pyhff2d567_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 license_family: APACHE - size: 60380 - timestamp: 1731802602808 + size: 60164 + timestamp: 1733203368787 - kind: conda name: pandas version: 2.2.2 @@ -8492,18 +8497,20 @@ packages: - kind: conda name: pycparser version: '2.22' - build: pyhd8ed1ab_0 + build: pyh29332c3_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - python >=3.8 + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD - size: 105098 - timestamp: 1711811634025 + size: 110100 + timestamp: 1733195786147 - kind: conda name: pydantic version: 2.10.2 @@ -8701,6 +8708,7 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: MIT + license_family: MIT size: 380414 timestamp: 1733168930888 - kind: conda @@ -8810,19 +8818,19 @@ packages: - kind: conda name: python-dateutil version: 2.9.0.post0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 license: Apache-2.0 - license_family: APACHE - size: 221925 - timestamp: 1731919374686 + size: 222505 + timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 @@ -9002,18 +9010,18 @@ packages: - kind: conda name: pytz version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_0.conda - sha256: 81c16d9183bb4a6780366ce874e567ee5fc903722f85b2f8d1d9479ef1dafcc9 - md5: 260009d03c9d5c0f111904d851f053dc + url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda + sha256: 0a7c706b2eb13f7da5692d9ddf1567209964875710b471de6f2743b33d1ba960 + md5: f26ec986456c30f6dff154b670ae140f depends: - - python >=3.7 + - python >=3.9 license: MIT - license_family: MIT - size: 186995 - timestamp: 1726055625738 + size: 185890 + timestamp: 1733215766006 - kind: conda name: pyyaml version: 6.0.2 @@ -9296,24 +9304,24 @@ packages: - kind: conda name: requests version: 2.32.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.8 + - python >=3.9 - urllib3 >=1.21.1,<3 constrains: - chardet >=3.0.2,<6 license: Apache-2.0 - license_family: APACHE - size: 58810 - timestamp: 1717057174842 + size: 58723 + timestamp: 1733217126197 - kind: conda name: rfc3339-validator version: 0.1.4 @@ -9574,18 +9582,19 @@ packages: - kind: conda name: six version: 1.16.0 - build: pyh6c4a22f_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda + sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c + md5: a516da6cfe1ec0a55e49737f017b4965 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 14259 - timestamp: 1620240338595 + size: 16385 + timestamp: 1733216901349 - kind: conda name: snappy version: 1.2.1 @@ -10144,22 +10153,23 @@ packages: - kind: conda name: urllib3 version: 2.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 + md5: 4a2d8ef7c37b8808c5b9b750501fffce depends: - brotli-python >=1.0.9 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98076 - timestamp: 1726496531769 + size: 98077 + timestamp: 1733206968917 - kind: conda name: uvicorn version: 0.32.1 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 326d51789b..cdc8aa7faf 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -13,7 +13,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda @@ -43,19 +43,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -67,7 +67,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -131,14 +131,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -156,7 +156,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda @@ -167,7 +167,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -175,7 +175,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -188,13 +188,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -211,7 +211,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda @@ -235,7 +235,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda @@ -265,19 +265,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -290,7 +290,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -354,14 +354,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -379,7 +379,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda @@ -390,7 +390,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -398,7 +398,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -411,13 +411,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -434,7 +434,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda @@ -457,7 +457,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -487,19 +487,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -511,7 +511,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -567,14 +567,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -592,7 +592,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda @@ -603,7 +603,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -611,7 +611,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -624,12 +624,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -646,7 +646,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda @@ -854,19 +854,20 @@ packages: - kind: conda name: asgiref version: 3.8.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - sha256: 85fc8f54361b922d744c8728a7a711cab390b78941e18a3570dabfac8169e5f9 - md5: b5c2e1034ccc76fb14031637924880eb + url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda + sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 + md5: 21187c8276f87b6aedfe63c267a6eed7 depends: - - python >=3.8 + - python >=3.9 - typing_extensions >=4 license: BSD-3-Clause license_family: BSD - size: 26347 - timestamp: 1711269034814 + size: 26436 + timestamp: 1733215704904 - kind: conda name: attrs version: 24.2.0 @@ -2215,33 +2216,33 @@ packages: timestamp: 1666700778190 - kind: conda name: datasets - version: 3.1.0 - build: pyhff2d567_0 + version: 2.14.4 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - sha256: c3329f96a797fcec28a0bc42372bb253ce6434cbd6d9b5dc8e8417a247c43027 - md5: cd6278d231cd340f2f0c600037df5a98 + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: - aiohttp - - dill >=0.3.0,<0.3.9 - - filelock - - fsspec >=2023.1.0,<=2024.9.0 - - huggingface_hub >=0.23.0 - - multiprocess <0.70.17 + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess - numpy >=1.17 - packaging - pandas - - pyarrow >=15.0.0 - - python >=3.9 + - pyarrow >=8.0.0 + - python >=3.8.0 - python-xxhash - pyyaml >=5.1 - - requests >=2.32.2 - - tqdm >=4.66.3 + - requests >=2.19.0 + - tqdm >=4.62.1 license: Apache-2.0 license_family: Apache - size: 332680 - timestamp: 1731706749584 + size: 347303 + timestamp: 1691593908658 - kind: conda name: deprecated version: 1.2.15 @@ -2260,19 +2261,19 @@ packages: timestamp: 1731836933516 - kind: conda name: dill - version: 0.3.8 + version: 0.3.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 - md5: 78745f157d56877a2c6e7b386f66f3e2 + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd depends: - python >=3.7 license: BSD-3-Clause license_family: BSD - size: 88169 - timestamp: 1706434833883 + size: 87553 + timestamp: 1690101185422 - kind: conda name: dnspython version: 2.7.0 @@ -2331,17 +2332,18 @@ packages: - kind: conda name: exceptiongroup version: 1.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - python >=3.7 + - python >=3.9 license: MIT and PSF-2.0 - size: 20418 - timestamp: 1720869435725 + size: 20486 + timestamp: 1733208916977 - kind: conda name: fastapi version: 0.115.5 @@ -2498,19 +2500,19 @@ packages: timestamp: 1729699642726 - kind: conda name: fsspec - version: 2024.9.0 + version: 2024.10.0 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc - md5: ace4329fbff4c69ab0309db6da182987 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 + md5: 816dbc4679a64e4417cd1385d661bb31 depends: - python >=3.8 license: BSD-3-Clause license_family: BSD - size: 134378 - timestamp: 1725543368393 + size: 134745 + timestamp: 1729608972363 - kind: conda name: gflags version: 2.2.2 @@ -2783,6 +2785,7 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 + license_family: APACHE size: 274858 timestamp: 1733170279930 - kind: conda @@ -2818,18 +2821,19 @@ packages: - kind: conda name: idna version: '3.10' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - python >=3.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 49837 - timestamp: 1726459583613 + size: 49765 + timestamp: 1733211921194 - kind: conda name: importlib-metadata version: 7.0.2 @@ -5840,81 +5844,82 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e - md5: fa3d1a799da8e216b9448fd2246655f3 - depends: - - max-core ==24.6.0.dev2024120221 release - - max-python >=24.6.0.dev2024120221,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120221 release - - mblack ==24.6.0.dev2024120221 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e + md5: 9c25081ace6ad2c13675cf0123109cb9 + depends: + - max-core ==24.6.0.dev2024120306 release + - max-python >=24.6.0.dev2024120306,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120306 release license: LicenseRef-Modular-Proprietary - size: 9927 - timestamp: 1733176232456 + size: 9929 + timestamp: 1733209293577 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb - md5: 646d3f60af8b7d77a29ea74c80b73abe + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 + md5: c249d77d8e5885dd0eacd9028131413f depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254782923 - timestamp: 1733176189897 + size: 254711372 + timestamp: 1733209193854 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 - md5: 762d1a967090c478c15e8182ee077eac + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea + md5: e5b6ae7316dc2b08a52cee8f27b4f484 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258409140 - timestamp: 1733176232454 + size: 258488596 + timestamp: 1733209293575 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c - md5: 0b95fc4831992260253ee5e3c83f3382 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 + md5: 05acbd2d9cf25aa913a979aa9802c194 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220306895 - timestamp: 1733176012956 + size: 220248523 + timestamp: 1733209020078 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 - md5: d11c807bdfab1a9ec1d8d60ae4966f6f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 + md5: 4bdce0c1dd562e22566551d578103d2f depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5931,23 +5936,24 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128533716 - timestamp: 1733176189912 + size: 128537272 + timestamp: 1733209193862 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 - md5: f7e5f66871aa60909394a02ab2344f64 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e + md5: e7d3ebeaaeb2bd99167fda861a7e7aba depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5964,23 +5970,24 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132227870 - timestamp: 1733176232462 + size: 132223349 + timestamp: 1733209293584 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a - md5: 10517bdbac80736a742077a261e535b6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 + md5: 9859f8c88c81c18baaddd15be03d259c depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5997,17 +6004,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119173532 - timestamp: 1733176012959 + size: 119113363 + timestamp: 1733209020082 - kind: conda name: mblack - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 - md5: a4660d8dd8037b8c090b028271d18e14 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda + sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac + md5: f77eafd932de3ae309643ea716ba3c3a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6017,8 +6024,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130643 - timestamp: 1733176232459 + size: 130649 + timestamp: 1733209293580 - kind: conda name: mdurl version: 0.1.2 @@ -6036,21 +6043,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a - md5: 9f4dbbf9e29a9fc89154906e388c037b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc + md5: 8bb40dfabe84757d93d3053fdf4b0a58 depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22931 - timestamp: 1733176232460 + size: 22940 + timestamp: 1733209293581 - kind: conda name: multidict version: 6.1.0 @@ -6107,61 +6114,59 @@ packages: timestamp: 1729065664275 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h024a12e_1 + version: 0.70.15 + build: py312h02f2b3b_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 - md5: fd83a478d686df79aa394b9db1ad20b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 depends: - - __osx >=11.0 - - dill >=0.3.8 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 342831 - timestamp: 1724954807776 + size: 335147 + timestamp: 1695459275360 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h66e93f0_1 + version: 0.70.15 + build: py312h98912ed_1 build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 - md5: efe4a3f62320156f68579362314009f3 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d depends: - - __glibc >=2.17,<3.0.a0 - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 340540 - timestamp: 1724954755987 + size: 335666 + timestamp: 1695459025249 - kind: conda name: multiprocess - version: 0.70.16 - build: py312hb2c0f52_1 + version: 0.70.15 + build: py312hdd3e373_1 build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 - md5: 642c63b684ce5614f157572b04816983 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 depends: - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 341428 - timestamp: 1724954862644 + size: 336110 + timestamp: 1695459137796 - kind: conda name: mypy_extensions version: 1.0.0 @@ -6655,19 +6660,19 @@ packages: - kind: conda name: packaging version: '24.2' - build: pyhff2d567_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 license_family: APACHE - size: 60380 - timestamp: 1731802602808 + size: 60164 + timestamp: 1733203368787 - kind: conda name: pandas version: 2.2.3 @@ -7151,18 +7156,20 @@ packages: - kind: conda name: pycparser version: '2.22' - build: pyhd8ed1ab_0 + build: pyh29332c3_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - python >=3.8 + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD - size: 105098 - timestamp: 1711811634025 + size: 110100 + timestamp: 1733195786147 - kind: conda name: pydantic version: 2.10.2 @@ -7432,19 +7439,19 @@ packages: - kind: conda name: python-dateutil version: 2.9.0.post0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 license: Apache-2.0 - license_family: APACHE - size: 221925 - timestamp: 1731919374686 + size: 222505 + timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 @@ -7886,24 +7893,24 @@ packages: - kind: conda name: requests version: 2.32.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.8 + - python >=3.9 - urllib3 >=1.21.1,<3 constrains: - chardet >=3.0.2,<6 license: Apache-2.0 - license_family: APACHE - size: 58810 - timestamp: 1717057174842 + size: 58723 + timestamp: 1733217126197 - kind: conda name: rich version: 13.9.4 @@ -8044,18 +8051,19 @@ packages: - kind: conda name: six version: 1.16.0 - build: pyh6c4a22f_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda + sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c + md5: a516da6cfe1ec0a55e49737f017b4965 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 14259 - timestamp: 1620240338595 + size: 16385 + timestamp: 1733216901349 - kind: conda name: snappy version: 1.2.1 @@ -8469,22 +8477,23 @@ packages: - kind: conda name: urllib3 version: 2.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 + md5: 4a2d8ef7c37b8808c5b9b750501fffce depends: - brotli-python >=1.0.9 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98076 - timestamp: 1726496531769 + size: 98077 + timestamp: 1733206968917 - kind: conda name: uvicorn version: 0.32.1 diff --git a/magic.lock b/magic.lock index db809b41a1..818c254d76 100644 --- a/magic.lock +++ b/magic.lock @@ -13,7 +13,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda @@ -43,19 +43,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -67,7 +67,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -132,14 +132,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -157,7 +157,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda @@ -168,7 +168,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -176,7 +176,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -189,13 +189,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -212,7 +212,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda @@ -236,7 +236,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda @@ -266,19 +266,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -291,7 +291,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -356,14 +356,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -381,7 +381,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda @@ -392,7 +392,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -400,7 +400,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -413,13 +413,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -436,7 +436,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda @@ -459,7 +459,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -489,19 +489,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -513,7 +513,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda @@ -570,14 +570,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -595,7 +595,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda @@ -606,7 +606,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda @@ -614,7 +614,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda @@ -627,12 +627,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda @@ -649,7 +649,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda @@ -857,19 +857,20 @@ packages: - kind: conda name: asgiref version: 3.8.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_0.conda - sha256: 85fc8f54361b922d744c8728a7a711cab390b78941e18a3570dabfac8169e5f9 - md5: b5c2e1034ccc76fb14031637924880eb + url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda + sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 + md5: 21187c8276f87b6aedfe63c267a6eed7 depends: - - python >=3.8 + - python >=3.9 - typing_extensions >=4 license: BSD-3-Clause license_family: BSD - size: 26347 - timestamp: 1711269034814 + size: 26436 + timestamp: 1733215704904 - kind: conda name: attrs version: 24.2.0 @@ -2218,33 +2219,33 @@ packages: timestamp: 1666700778190 - kind: conda name: datasets - version: 3.1.0 - build: pyhff2d567_0 + version: 2.14.4 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/datasets-3.1.0-pyhff2d567_0.conda - sha256: c3329f96a797fcec28a0bc42372bb253ce6434cbd6d9b5dc8e8417a247c43027 - md5: cd6278d231cd340f2f0c600037df5a98 + url: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f depends: - aiohttp - - dill >=0.3.0,<0.3.9 - - filelock - - fsspec >=2023.1.0,<=2024.9.0 - - huggingface_hub >=0.23.0 - - multiprocess <0.70.17 + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess - numpy >=1.17 - packaging - pandas - - pyarrow >=15.0.0 - - python >=3.9 + - pyarrow >=8.0.0 + - python >=3.8.0 - python-xxhash - pyyaml >=5.1 - - requests >=2.32.2 - - tqdm >=4.66.3 + - requests >=2.19.0 + - tqdm >=4.62.1 license: Apache-2.0 license_family: Apache - size: 332680 - timestamp: 1731706749584 + size: 347303 + timestamp: 1691593908658 - kind: conda name: deprecated version: 1.2.15 @@ -2263,19 +2264,19 @@ packages: timestamp: 1731836933516 - kind: conda name: dill - version: 0.3.8 + version: 0.3.7 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda - sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 - md5: 78745f157d56877a2c6e7b386f66f3e2 + url: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd depends: - python >=3.7 license: BSD-3-Clause license_family: BSD - size: 88169 - timestamp: 1706434833883 + size: 87553 + timestamp: 1690101185422 - kind: conda name: dnspython version: 2.7.0 @@ -2334,17 +2335,18 @@ packages: - kind: conda name: exceptiongroup version: 1.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda - sha256: e0edd30c4b7144406bb4da975e6bb97d6bc9c0e999aa4efe66ae108cada5d5b5 - md5: d02ae936e42063ca46af6cdad2dbd1e0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - python >=3.7 + - python >=3.9 license: MIT and PSF-2.0 - size: 20418 - timestamp: 1720869435725 + size: 20486 + timestamp: 1733208916977 - kind: conda name: fastapi version: 0.115.5 @@ -2501,19 +2503,19 @@ packages: timestamp: 1729699642726 - kind: conda name: fsspec - version: 2024.9.0 + version: 2024.10.0 build: pyhff2d567_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.9.0-pyhff2d567_0.conda - sha256: 8f4e9805b4ec223dea0d99f9e7e57c391d9026455eb9f0d6e0784c5d1a1200dc - md5: ace4329fbff4c69ab0309db6da182987 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 + md5: 816dbc4679a64e4417cd1385d661bb31 depends: - python >=3.8 license: BSD-3-Clause license_family: BSD - size: 134378 - timestamp: 1725543368393 + size: 134745 + timestamp: 1729608972363 - kind: conda name: gflags version: 2.2.2 @@ -2786,6 +2788,7 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 + license_family: APACHE size: 274858 timestamp: 1733170279930 - kind: conda @@ -2821,18 +2824,19 @@ packages: - kind: conda name: idna version: '3.10' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - python >=3.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 49837 - timestamp: 1726459583613 + size: 49765 + timestamp: 1733211921194 - kind: conda name: importlib-metadata version: 7.0.2 @@ -5859,81 +5863,82 @@ packages: timestamp: 1729351534830 - kind: conda name: max - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120221-release.conda - sha256: 71b02d0afbd2dfa49633f0dff4cdc1a94392abc344668636b90656060117384e - md5: fa3d1a799da8e216b9448fd2246655f3 - depends: - - max-core ==24.6.0.dev2024120221 release - - max-python >=24.6.0.dev2024120221,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120221 release - - mblack ==24.6.0.dev2024120221 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda + sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e + md5: 9c25081ace6ad2c13675cf0123109cb9 + depends: + - max-core ==24.6.0.dev2024120306 release + - max-python >=24.6.0.dev2024120306,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120306 release license: LicenseRef-Modular-Proprietary - size: 9927 - timestamp: 1733176232456 + size: 9929 + timestamp: 1733209293577 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120221-release.conda - sha256: e7362f447478b8f8a4ce9f6e4a38c7b519c4fdd81cbcb6cd0bfded3cfb3399eb - md5: 646d3f60af8b7d77a29ea74c80b73abe + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda + sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 + md5: c249d77d8e5885dd0eacd9028131413f depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254782923 - timestamp: 1733176189897 + size: 254711372 + timestamp: 1733209193854 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120221-release.conda - sha256: 38a17e51fc0bc077d19e9829a0d901dfef581c13a4b3b5238fbc509c5e495119 - md5: 762d1a967090c478c15e8182ee077eac + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda + sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea + md5: e5b6ae7316dc2b08a52cee8f27b4f484 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258409140 - timestamp: 1733176232454 + size: 258488596 + timestamp: 1733209293575 - kind: conda name: max-core - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120221-release.conda - sha256: 81d2491a6299f97cb6f9847169f71eb344e5deec11755819e4124b054ec69c4c - md5: 0b95fc4831992260253ee5e3c83f3382 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda + sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 + md5: 05acbd2d9cf25aa913a979aa9802c194 depends: - - mblack ==24.6.0.dev2024120221 release + - mblack ==24.6.0.dev2024120306 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220306895 - timestamp: 1733176012956 + size: 220248523 + timestamp: 1733209020078 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: eff8e0d757d2ff4398c11357f2f6018cd32bfe01b7f7b9a40eb6848b7150eee5 - md5: d11c807bdfab1a9ec1d8d60ae4966f6f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 + md5: 4bdce0c1dd562e22566551d578103d2f depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5950,23 +5955,24 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128533716 - timestamp: 1733176189912 + size: 128537272 + timestamp: 1733209193862 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: c9314e3c7be3e6913345141b05beb7868e6a35dad199472c64a0b9137bc89aa2 - md5: f7e5f66871aa60909394a02ab2344f64 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e + md5: e7d3ebeaaeb2bd99167fda861a7e7aba depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -5983,23 +5989,24 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132227870 - timestamp: 1733176232462 + size: 132223349 + timestamp: 1733209293584 - kind: conda name: max-python - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120221-3.12release.conda - sha256: 781843479c4ff561f1963df894c76fbc4e623e16dba02ca90a9facdfa2f5d20a - md5: 10517bdbac80736a742077a261e535b6 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda + sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 + md5: 9859f8c88c81c18baaddd15be03d259c depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python 3.12.* - pillow - fastapi - httpx - numpy >=1.18,<2.0 + - huggingface_hub - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 @@ -6016,17 +6023,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119173532 - timestamp: 1733176012959 + size: 119113363 + timestamp: 1733209020082 - kind: conda name: mblack - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120221-release.conda - sha256: 5d3b01c8332faf96e9d95f5ea2bf7ac1f528279326717103d9e3cf0a53a0dd58 - md5: a4660d8dd8037b8c090b028271d18e14 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda + sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac + md5: f77eafd932de3ae309643ea716ba3c3a depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6036,8 +6043,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130643 - timestamp: 1733176232459 + size: 130649 + timestamp: 1733209293580 - kind: conda name: mdurl version: 0.1.2 @@ -6055,21 +6062,21 @@ packages: timestamp: 1704317789138 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120221 + version: 24.6.0.dev2024120306 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120221-release.conda - sha256: 93bb896b09ee00dd8aaeb842dc73939e8c990bb14ba71e8c952fca318c235b0a - md5: 9f4dbbf9e29a9fc89154906e388c037b + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc + md5: 8bb40dfabe84757d93d3053fdf4b0a58 depends: - - max-core ==24.6.0.dev2024120221 release + - max-core ==24.6.0.dev2024120306 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22931 - timestamp: 1733176232460 + size: 22940 + timestamp: 1733209293581 - kind: conda name: multidict version: 6.1.0 @@ -6126,61 +6133,59 @@ packages: timestamp: 1729065664275 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h024a12e_1 + version: 0.70.15 + build: py312h02f2b3b_1 build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda - sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 - md5: fd83a478d686df79aa394b9db1ad20b5 + url: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 depends: - - __osx >=11.0 - - dill >=0.3.8 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 342831 - timestamp: 1724954807776 + size: 335147 + timestamp: 1695459275360 - kind: conda name: multiprocess - version: 0.70.16 - build: py312h66e93f0_1 + version: 0.70.15 + build: py312h98912ed_1 build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda - sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 - md5: efe4a3f62320156f68579362314009f3 + url: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d depends: - - __glibc >=2.17,<3.0.a0 - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 340540 - timestamp: 1724954755987 + size: 335666 + timestamp: 1695459025249 - kind: conda name: multiprocess - version: 0.70.16 - build: py312hb2c0f52_1 + version: 0.70.15 + build: py312hdd3e373_1 build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda - sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 - md5: 642c63b684ce5614f157572b04816983 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 depends: - - dill >=0.3.8 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 341428 - timestamp: 1724954862644 + size: 336110 + timestamp: 1695459137796 - kind: conda name: mypy_extensions version: 1.0.0 @@ -6674,19 +6679,19 @@ packages: - kind: conda name: packaging version: '24.2' - build: pyhff2d567_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhff2d567_1.conda - sha256: 74843f871e5cd8a1baf5ed8c406c571139c287141efe532f8ffbdafa3664d244 - md5: 8508b703977f4c4ada34d657d051972c + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 license_family: APACHE - size: 60380 - timestamp: 1731802602808 + size: 60164 + timestamp: 1733203368787 - kind: conda name: pandas version: 2.2.3 @@ -7170,18 +7175,20 @@ packages: - kind: conda name: pycparser version: '2.22' - build: pyhd8ed1ab_0 + build: pyh29332c3_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyhd8ed1ab_0.conda - sha256: 406001ebf017688b1a1554b49127ca3a4ac4626ec0fd51dc75ffa4415b720b64 - md5: 844d9eb3b43095b031874477f7d70088 + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef depends: - - python >=3.8 + - python >=3.9 + - python license: BSD-3-Clause license_family: BSD - size: 105098 - timestamp: 1711811634025 + size: 110100 + timestamp: 1733195786147 - kind: conda name: pydantic version: 2.10.2 @@ -7451,19 +7458,19 @@ packages: - kind: conda name: python-dateutil version: 2.9.0.post0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 license: Apache-2.0 - license_family: APACHE - size: 221925 - timestamp: 1731919374686 + size: 222505 + timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 @@ -7905,24 +7912,24 @@ packages: - kind: conda name: requests version: 2.32.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 depends: - certifi >=2017.4.17 - charset-normalizer >=2,<4 - idna >=2.5,<4 - - python >=3.8 + - python >=3.9 - urllib3 >=1.21.1,<3 constrains: - chardet >=3.0.2,<6 license: Apache-2.0 - license_family: APACHE - size: 58810 - timestamp: 1717057174842 + size: 58723 + timestamp: 1733217126197 - kind: conda name: rich version: 13.9.4 @@ -8063,18 +8070,19 @@ packages: - kind: conda name: six version: 1.16.0 - build: pyh6c4a22f_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda + sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c + md5: a516da6cfe1ec0a55e49737f017b4965 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 14259 - timestamp: 1620240338595 + size: 16385 + timestamp: 1733216901349 - kind: conda name: snappy version: 1.2.1 @@ -8488,22 +8496,23 @@ packages: - kind: conda name: urllib3 version: 2.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_0.conda - sha256: b6bb34ce41cd93956ad6eeee275ed52390fb3788d6c75e753172ea7ac60b66e5 - md5: 6b55867f385dd762ed99ea687af32a69 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 + md5: 4a2d8ef7c37b8808c5b9b750501fffce depends: - brotli-python >=1.0.9 - h2 >=4,<5 - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.8 + - python >=3.9 - zstandard >=0.18.0 license: MIT license_family: MIT - size: 98076 - timestamp: 1726496531769 + size: 98077 + timestamp: 1733206968917 - kind: conda name: uvicorn version: 0.32.1 From afa3873ace056f5cb9324f6d4973e99e19ca9d72 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Mon, 2 Dec 2024 23:15:51 -0800 Subject: [PATCH 070/119] [******][GPU] Simplify definition of sleep function, NFC MODULAR_ORIG_COMMIT_REV_ID: 9f1a40a5d1c09bcaf5a9dade8491f28052905d42 --- stdlib/src/time/time.mojo | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index 7b68624fdf..71eb1e80c2 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -25,6 +25,7 @@ from sys import ( external_call, is_amd_gpu, is_nvidia_gpu, + is_gpu, llvm_intrinsic, os_is_linux, os_is_windows, @@ -383,7 +384,7 @@ fn sleep(sec: Int): """ @parameter - if is_nvidia_gpu() or is_amd_gpu(): + if is_gpu(): return sleep(Float64(sec)) @parameter From 74607e6cc2b290faacab6878c28f58599e5c1151 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Tue, 3 Dec 2024 01:16:17 -0800 Subject: [PATCH 071/119] [******] Adjust the section comments MODULAR_ORIG_COMMIT_REV_ID: d1ddd74230122ada93e1237fa6e6e5a495964b16 --- .../algorithm/bench_elementwise.mojo | 4 +- stdlib/benchmarks/builtin/bench_int.mojo | 8 +- stdlib/benchmarks/builtin/bench_sort.mojo | 24 +- stdlib/benchmarks/collections/bench_dict.mojo | 24 +- .../benchmarks/collections/bench_string.mojo | 40 +- stdlib/benchmarks/hashlib/bench_hash.mojo | 600 +++++++++--------- stdlib/benchmarks/math/bench_math.mojo | 20 +- stdlib/benchmarks/utils/bench_formatter.mojo | 12 +- stdlib/benchmarks/utils/bench_memmem.mojo | 16 +- stdlib/docs/style-guide.md | 4 +- stdlib/src/base64/base64.mojo | 20 +- stdlib/src/bit/bit.mojo | 48 +- stdlib/src/builtin/_stubs.mojo | 8 +- stdlib/src/builtin/builtin_list.mojo | 12 +- stdlib/src/builtin/dtype.mojo | 12 +- stdlib/src/builtin/error.mojo | 4 +- stdlib/src/builtin/float_literal.mojo | 4 +- stdlib/src/builtin/format_int.mojo | 16 +- stdlib/src/builtin/int.mojo | 8 +- stdlib/src/builtin/int_literal.mojo | 12 +- stdlib/src/builtin/sort.mojo | 20 +- stdlib/src/builtin/string_literal.mojo | 4 +- stdlib/src/builtin/tuple.mojo | 4 +- stdlib/src/builtin/uint.mojo | 8 +- stdlib/src/collections/deque.mojo | 4 +- stdlib/src/collections/inline_array.mojo | 4 +- stdlib/src/collections/inline_list.mojo | 4 +- stdlib/src/collections/list.mojo | 4 +- stdlib/src/collections/optional.mojo | 8 +- stdlib/src/collections/vector.mojo | 8 +- stdlib/src/math/polynomial.mojo | 8 +- stdlib/src/memory/memory.mojo | 28 +- stdlib/src/memory/pointer.mojo | 8 +- stdlib/src/memory/unsafe.mojo | 4 +- stdlib/src/os/atomic.mojo | 4 +- stdlib/src/sys/_assembly.mojo | 4 +- stdlib/src/sys/_libc.mojo | 16 +- stdlib/src/sys/ffi.mojo | 12 +- stdlib/src/sys/info.mojo | 4 +- stdlib/src/sys/intrinsics.mojo | 36 +- stdlib/src/time/time.mojo | 28 +- stdlib/src/utils/format.mojo | 12 +- stdlib/src/utils/index.mojo | 20 +- stdlib/src/utils/inline_string.mojo | 8 +- stdlib/src/utils/lock.mojo | 4 +- stdlib/src/utils/loop.mojo | 20 +- stdlib/src/utils/static_tuple.mojo | 8 +- stdlib/src/utils/string_slice.mojo | 4 +- stdlib/src/utils/stringref.mojo | 8 +- stdlib/src/utils/write.mojo | 10 +- stdlib/test/collections/test_deque.mojo | 8 +- 51 files changed, 609 insertions(+), 609 deletions(-) diff --git a/stdlib/benchmarks/algorithm/bench_elementwise.mojo b/stdlib/benchmarks/algorithm/bench_elementwise.mojo index 322b66ad9c..2a302ec80f 100644 --- a/stdlib/benchmarks/algorithm/bench_elementwise.mojo +++ b/stdlib/benchmarks/algorithm/bench_elementwise.mojo @@ -23,9 +23,9 @@ from buffer import Buffer from utils.index import Index, IndexList -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark elementwise -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_elementwise[n: Int](mut b: Bencher) raises: var vector = Buffer[DType.index, n].stack_allocation() diff --git a/stdlib/benchmarks/builtin/bench_int.mojo b/stdlib/benchmarks/builtin/bench_int.mojo index b65cd5abaf..2d65c690c3 100644 --- a/stdlib/benchmarks/builtin/bench_int.mojo +++ b/stdlib/benchmarks/builtin/bench_int.mojo @@ -17,9 +17,9 @@ from benchmark import Bench, BenchConfig, Bencher, BenchId -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmarks -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_stringify_small_integers(mut b: Bencher) raises: @always_inline @@ -32,9 +32,9 @@ fn bench_stringify_small_integers(mut b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): var m = Bench(BenchConfig(num_repetitions=1)) m.bench_function[bench_stringify_small_integers]( diff --git a/stdlib/benchmarks/builtin/bench_sort.mojo b/stdlib/benchmarks/builtin/bench_sort.mojo index 0872012f78..a44fc3a150 100644 --- a/stdlib/benchmarks/builtin/bench_sort.mojo +++ b/stdlib/benchmarks/builtin/bench_sort.mojo @@ -26,9 +26,9 @@ from stdlib.builtin.sort import ( sort, ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Utils -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -78,9 +78,9 @@ fn heap_sort[type: DType](mut list: List[Scalar[type]]): _heap_sort[_less_than](list) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark sort functions with a tiny list size -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn bench_tiny_list_sort[type: DType](mut m: Bench) raises: @@ -157,9 +157,9 @@ fn bench_tiny_list_sort[type: DType](mut m: Bench) raises: ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark sort functions with a small list size -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn bench_small_list_sort[type: DType](mut m: Bench, count: Int) raises: @@ -209,9 +209,9 @@ fn bench_small_list_sort[type: DType](mut m: Bench, count: Int) raises: ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark sort functions with a large list size -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn bench_large_list_sort[type: DType](mut m: Bench, count: Int) raises: @@ -262,9 +262,9 @@ fn bench_large_list_sort[type: DType](mut m: Bench, count: Int) raises: ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark sort functions with low delta lists -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn bench_low_cardinality_list_sort(mut m: Bench, count: Int, delta: Int) raises: @@ -314,9 +314,9 @@ fn bench_low_cardinality_list_sort(mut m: Bench, count: Int, delta: Int) raises: ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/stdlib/benchmarks/collections/bench_dict.mojo index b50d97a98d..e93406f837 100644 --- a/stdlib/benchmarks/collections/bench_dict.mojo +++ b/stdlib/benchmarks/collections/bench_dict.mojo @@ -24,9 +24,9 @@ from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run from bit import bit_ceil -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn make_dict[size: Int]() -> Dict[Int, Int]: var d = Dict[Int, Int]() for i in range(0, size): @@ -34,9 +34,9 @@ fn make_dict[size: Int]() -> Dict[Int, Int]: return d -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Dict init -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_dict_init(mut b: Bencher) raises: @always_inline @@ -50,9 +50,9 @@ fn bench_dict_init(mut b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Dict Insert -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_dict_insert[size: Int](mut b: Bencher) raises: """Insert 100 new items.""" @@ -68,9 +68,9 @@ fn bench_dict_insert[size: Int](mut b: Bencher) raises: keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Dict Lookup -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_dict_lookup[size: Int](mut b: Bencher) raises: """Lookup 100 items.""" @@ -96,9 +96,9 @@ fn bench_dict_lookup[size: Int](mut b: Bencher) raises: keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Dict Memory Footprint -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn total_bytes_used(items: Dict[Int, Int]) -> Int: @@ -121,9 +121,9 @@ fn total_bytes_used(items: Dict[Int, Int]) -> Int: return amnt_bytes -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): seed() var m = Bench(BenchConfig(num_repetitions=1)) diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/stdlib/benchmarks/collections/bench_string.mojo index 85ee5050ee..3cee895b73 100644 --- a/stdlib/benchmarks/collections/bench_string.mojo +++ b/stdlib/benchmarks/collections/bench_string.mojo @@ -25,9 +25,9 @@ from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run from utils._utf8_validation import _is_valid_utf8 -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn make_string[ length: UInt = 0 ](filename: StringLiteral = "UN_charter_EN.txt") -> String: @@ -61,9 +61,9 @@ fn make_string[ return abort[String]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string init -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_init(mut b: Bencher) raises: @always_inline @@ -76,9 +76,9 @@ fn bench_string_init(mut b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string count -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_count[ length: UInt = 0, @@ -97,9 +97,9 @@ fn bench_string_count[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string split -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_split[ length: UInt = 0, @@ -124,9 +124,9 @@ fn bench_string_split[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string splitlines -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_splitlines[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" @@ -143,9 +143,9 @@ fn bench_string_splitlines[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string lower -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_lower[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" @@ -162,9 +162,9 @@ fn bench_string_lower[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string upper -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_upper[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" @@ -181,9 +181,9 @@ fn bench_string_upper[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string replace -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_replace[ length: UInt = 0, @@ -203,9 +203,9 @@ fn bench_string_replace[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark string _is_valid_utf8 -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_string_is_valid_utf8[ length: UInt = 0, filename: StringLiteral = "UN_charter_EN" @@ -222,9 +222,9 @@ fn bench_string_is_valid_utf8[ keep(bool(items)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): seed() var m = Bench(BenchConfig(num_repetitions=5)) diff --git a/stdlib/benchmarks/hashlib/bench_hash.mojo b/stdlib/benchmarks/hashlib/bench_hash.mojo index 0c6873f109..291701710d 100644 --- a/stdlib/benchmarks/hashlib/bench_hash.mojo +++ b/stdlib/benchmarks/hashlib/bench_hash.mojo @@ -49,7 +49,7 @@ alias words_ar = """ تحت, الأشياء, معه, يريد, أننا, أنظر, لما, اعرف, إلي, ثلاثة, انتظر, الرجال, الذين, حصلت, أني, سعيد, لابد, عزيزتي, الشيء, فكرة, انهم, الله, الباب, سيدى, دائما, رأيت, مشكلة, استطيع, تكن, تذهب, ليلة, شيئ, أظن, طوال, - جميل, وهو, الشرطة, او, دولار, السيارة, وهذا, كبير, مني, بسرعة, النار, الأمور, سمعت, أشعر, يعرف, + جميل, وهو, الشرطة, او, دولار, السيارة, وهذا, كبير, مني, بسرعة, النار, الأمور, سمعت, أشعر, يعرف, أعني, لدى, بهذه, أحب, سنوات, بأس, الأفضل, بالنسبة, أنتم, عظيم, يقول, جميلة, جون, جاك, بسبب, الوحيد, أمر, بل, بالفعل, الشخص, الي, دعني, خارج, اجل, الخير, ــ, حالك, للغاية, فحسب, كانوا, أردت, فتاة, بشأن, يعني, كبيرة, ترى, آسفة, دقيقة, أنهم, يستطيع, احد, بأنك, تعمل, @@ -80,7 +80,7 @@ alias words_ar = """ غدا, ظننت, ولن, المرأة, لهذه, تحرك, يهم, تبقى, الطبيب, اسم, انظري, تبا, أتذكر, فترة, ساعات, تفكر, تحصل, بأي, النقود, لعبة, زوجتي, الكلام, ستفعل, أسف, فهو, الملك, مدينة, بكم, الوحيدة, أمام, عدد, اخرج, بول, سأعود, جئت, لأني, تحدث, السلامة, الماضية, أمك, اعتقدت, مره, مساء, بطريقة, الرب, ابدا, أهذا, وفي, وكل, أتيت, منكم, - انتهى, بوب, بعيدا, ضع, وجود, تعود, زلت, اللعينة, نقوم, كلنا, أحصل, يريدون, تأخذ, المحتمل, الشمس, بدأ, + انتهى, بوب, بعيدا, ضع, وجود, تعود, زلت, اللعينة, نقوم, كلنا, أحصل, يريدون, تأخذ, المحتمل, الشمس, بدأ, ارجوك, المسيح, جاء, كهذا, سنذهب, تعالى, إثنان, فعلا, حتي, سيحدث, الجيد, وشك, القادم, معرفة, صورة, أعود, اسمي, طلب, آنسة, الثانية, فقدت, حفلة, تنظر, مثير, اننى, وصلت, أنتظر, السماء, يقولون, الهراء, معهم, ابي, وعندما, مجموعة, العاهرة, ماري, حسن, الزواج, نحو, دعيني, الجديدة, مهم, أمس, اتصل, ابتعد, هراء, ستة, @@ -91,7 +91,7 @@ alias words_ar = """ الدخول, جين, امرأة, متأكدة, هيه, تخبرني, مدى, إلهى, احب, عما, نرى, بيننا, تعيش, قتلت, الأحمق, تشارلي, بيل, عليكم, سؤال, طلبت, الهواء, وهذه, صوت, انتم, ميلاد, ماكس, - تعتقدين, الحديث, الجانب, صديقك, ذا, خطر, أطلق, الشارع, عملية, ببعض, تتكلم, مختلف, تحمل, مساعدة, + تعتقدين, الحديث, الجانب, صديقك, ذا, خطر, أطلق, الشارع, عملية, ببعض, تتكلم, مختلف, تحمل, مساعدة, بضعة, المناسب, المنطقة, قم, بالداخل, البداية, لأجل, زوجتك, مقابل, يحب, هاري, ممتاز, قريبا, سنكون, فعلته, بتلك, التفكير, أسفل, للعمل, العجوز, امي, الكلب, انتظري, مازال, إننا, اشعر, الجيش, شرطة """ @@ -256,13 +256,13 @@ alias words_he = """ לגרום, המשחק, שרה, לעצמך, במיוחד, המשטרה, צוות, אחזור, שאמרתי, גברים, קורא, בראש, רחוק, למקום, לשלם, להפסיק, מיוחד, הז, שמו, שמחה, כיף, אגיד, למי, ניתן, מאחורי, תמשיך, כיצד, להוציא, מתים, כולכם, אצל, חבל, האישה, לעצמי, גברתי, תוכלי, רואים, דוד, להציל, שצריך, - בעלי, דוקטור, חג, לעבודה, בוודאי, תעשי, הוד, מילה, ברצינות, הארץ, עשינו, לאנשים, רצה, + בעלי, דוקטור, חג, לעבודה, בוודאי, תעשי, הוד, מילה, ברצינות, הארץ, עשינו, לאנשים, רצה, עזוב, יצא, נתן, שניות, בעיר, סי, חשבת, שאלות, אלינו, ידע, תנו, לשים, שאולי, בכך, יכולת, אן, היד, שאוכל, מין, דקה, לדאוג, שמה, תרצה, ראה, הצילו, נוסף, החרא, אופן, כשהוא, צעיר, הפה, עולה, עובדת, שמך, לתפוס, נמצאת, כלבה, האקדח, עדיף, הטלפון, טום, פול, חכו, קר, תלך, במקרה, יעשה, שניכם, הארי, זוז, יקירתי, בהצלחה, לשבת, אנא, דין, מכיוון, יד, הקטנה, לבן, בנו, בעצמי, יין, תוריד, - למישהו, מייק, מול, נזוז, ככל, הלוואי, בעצמך, לרגע, קשור, בשקט, האל, ישנה, מעמד, כזאת, + למישהו, מייק, מול, נזוז, ככל, הלוואי, בעצמך, לרגע, קשור, בשקט, האל, ישנה, מעמד, כזאת, רד, אחורה, איכפת, איתם, ממנה, חם, מבקש, שש, מידע, השנה, אכן, אהבתי, בשעה, בסוף, שקרה, לכו, אליה, לבחור, תחשוב, ספק, המים, הפנים, לכולם, תדאגי, קחי, שתוק, לברוח, מתוק, ארלי, התיק, שים, מישהי, לקרות, לטפל, לחפש, הידיים, ח, במצב, ואל @@ -270,313 +270,313 @@ alias words_he = """ # Source: https://www.101languages.net/latvian/most-common-latvian-words/ alias words_lv = """ - ir, es, un, tu, tas, ka, man, to, vai, ko, ar, kas, par, tā, kā, viņš, uz, no, tev, - mēs, nav, jūs, bet, labi, jā, lai, nē, mani, ja, bija, viņa, esmu, viņu, tevi, esi, - mums, tad, tikai, ne, viņi, kad, jums, arī, viss, nu, kur, pie, jau, tik, tur, te, vēl, - būs, visu, šeit, tagad, kaut, ļoti, pēc, viņam, taču, savu, gan, paldies, būtu, mūsu, - šo, lūdzu, mans, kāpēc, kungs, kāds, varbūt, tās, jūsu, cik, ak, daudz, jo, esam, - zinu, mana, zini, visi, būt, tam, šī, var, līdz, viens, pa, pat, esat, nekad, domāju, - nezinu, vairs, tiešām, tie, vien, kurš, varētu, dievs, neesmu, prom, tieši, kādu, aiziet, - šis, manu, protams, vajag, neko, vienkārši, tāpēc, gribu, varu, nāc, atpakaļ, mūs, - kārtībā, iet, kopā, viņiem, pats, pirms, domā, vienmēr, gribi, nekas, bez, tava, - vienu, ej, viņai, vairāk, notiek, nevaru, pret, tavs, teica, tavu, biju, dēļ, viņas, - laiku, neviens, kādēļ, vari, labāk, patīk, dari, mājās, nebija, cilvēki, ārā, viņus, - ejam, kāda, piedod, laikam, atkal, šķiet, trīs, sevi, ser, laiks, laika, nekā, manis, - iekšā, labs, tāds, darīt, harij, nevar, viena, lieliski, kuru, šīs, sauc, šurp, teicu, - laikā, tos, pagaidi, neesi, tevis, draugs, pārāk, tēvs, šodien, teikt, dienu, visiem, - tātad, notika, hei, zināt, bijis, sveiks, atvainojiet, tika, naudu, varam, savas, citu, - tādu, manas, redzi, šajā, kam, tajā, jābūt, vecīt, tiem, runā, cilvēku, taisnība, saka, - visus, mīlu, lietas, grib, tēt, izskatās, tiek, noteikti, nozīmē, kamēr, divi, it, tāpat, - tāda, ilgi, katru, dēls, noticis, jauki, redzēt, pareizi, lūk, kundze, aiz, iespējams, - pateikt, nebūtu, gandrīz, vīrs, cilvēks, ātri, žēl, pasaules, rokas, liekas, palīdzēt, - līdzi, visas, saki, negribu, vietā, gadus, starp, skaties, tomēr, tūlīt, džek, nevajag, - sev, vajadzētu, būšu, dzīvi, droši, gadu, priekšu, skaidrs, gribēju, nāk, paskaties, mazliet, - tikko, nebūs, augšā, ceru, joprojām, nevis, ātrāk, ļauj, gribētu, liels, zina, vārdu, reizi, - pasaulē, savā, sveiki, dienas, miris, dod, priekšā, galā, klau, cilvēkiem, tavas, patiesībā, - visa, vārds, gatavs, durvis, velns, nedaudz, naudas, redzēju, velna, manā, drīz, pāri, dzīve, - vēlies, nemaz, priekš, bērni, vieta, pāris, darbu, vajadzīgs, tālāk, rīt, roku, klāt, grūti, - beidz, laba, klausies, dara, varat, sveika, biji, vismaz, kopš, redzu, saproti, kura, draugi, - zemes, šovakar, patiešām, kaa, vietu, dieva, vajadzēja, mašīnu, lejā, saku, ceļu, gada, tādēļ, - cauri, runāt, ņem, oh, divas, lieta, tikt, šie, teici, vēlāk, vaļā, nogalināt, redzējis, jāiet, - nespēju, savus, atceries, ūdens, šejienes, labu, diena, mīļā, atvaino, doties, atrast, saprotu, - abi, reiz, jādara, nesaprotu, meitene, darbs, nevari, tai, nedomāju, pilnīgi, nakti, nekādu, - pati, gadiem, vēlos, taa, kādas, cits, ejiet, pirmais, a, būsi, mamma, lietu, slikti, pašu, - acis, diezgan, pasaki, gadā, puiši, asv, sava, nost, cilvēkus, džeks, manuprāt, mājas, o, - bērns, leo, otru, nopietni, vecais, laukā, caur, dzīves, izdarīt, sieviete, vienalga, - nogalināja, dzīvo, kādreiz, čau, sirds, paliec, gribat, vēlreiz, kuras, mazais, vietas, - piedodiet, laipni, palikt, brauc, ei, the, paliek, apkārt, sievietes, tālu, garām, pirmo, - dzīvot, nāciet, runāju, kuri, tiks, jüs, ceļā, nauda, nevienam, māja, vienīgais, īsti, - sapratu, gluži, svarīgi, atvainojos, i, sen, iespēja, tavā, pavisam, nāves, māte, citi, - viegli, zem, notiks, darba, nepatīk, daži, galvu, dienā, hallo, bērnu, neesam, kungi, beidzot, - nedrīkst, vajadzēs, māju, sieva, kādam, puika, kļūst, prieks, esot, iesim, daļa, pasaule, - pietiek, visā, saviem, rīta, pagaidiet, tētis, mājā, mieru, vīru, palīdzību, dzirdēju, - tādas, dzīvs, strādā, tām, vēlas, nakts, īpaši, jūtos, nolādēts, meitenes, pusi, mammu, mees, - aizveries, vispār, dzīvību, kurā, kādā, vārdā, mašīna, būsim, vispirms, vinji, nevienu, šos, - tiksimies, džeik, vinjsh, vaina, turpini, kādi, jaunu, tuvu, atradu, vēlu, varēja, citādi, šim, - satikt, neuztraucies, pārliecināts, liec, diez, liela, doktor, nevaram, palīdzi, uzmanīgi, dažas, - šiem, atgriezies, gribēja, priecājos, parasti, valsts, asinis, tēti, you, mierā, piemēram, - jautājums, atā, bijām, zemē, pasauli, spēlē, blakus, izskaties, pirmā, nomira, paši, šobrīd, - daru, gaida, tādi, iešu, labākais, jauks, maz, pieder, jauns, nezināju, uzmanību, skaista, - prātā, brālis, patiesību, mierīgi, šai, dr, patiesi, jēzus, mārtij, zināju, suns, juus, sievu, - dzirdi, tepat, mamm, tēvu, tēva, frodo, sasodīts, desmit, stundas, tavi, mazā, džon, cita, - vajadzīga, forši, minūtes, mīlestība, nebiju, saprast, izbeidz, šoreiz, labā, dāmas, kurienes, - problēma, šādi, spēj, gadījumā, tiesa, kuģi, pēdējā, tici, esiet, atceros, katrs, nee, palīgā, - mister, liek, likās, domāt, vīri, pēdējo, traks, reizes, vienīgā, tiesības, skolā, turies, beigas, - karš, pīter, uguni, pietiks, vienam, vienā, pakaļ, jauna, zemi, puisis, ziniet, negribi, labrīt, - ap, cilvēka, draugu, atver, nezini, sāra, vēlaties, gadi, dažreiz, rokās, dabūt, nomierinies, - istabā, agrāk, ieroci, savām, meiteni, paņem, meklē, pār, seju, ziņu, dzirdējis, zinām, gatavi, - braukt, sāka, sāk, dievam, neesat, dzirdēt, spēle, bērniem, izdarīja, muļķības, doma, pēdējais, - dīvaini, atdod, ziņas, bankas, darāt, vakar, ceļš, neviena, brāli, otrā, atgriezties, galvas, - pietiekami, gulēt, uzreiz, iespēju, bijusi, karalis, bobij, šrek, tikpat, palīdziet, durvīm, - vecāki, atrodas, smieklīgi, kuģa, bail, godīgi, pēkšņi, nedēļas, māsa, skrien, ceļa, džeims, gars, - lielu, mašīnā, bojā, kurieni, ļaudis, dārgais, vecs, ūdeni, kūper, eju, mašīnas, ideja, kājas, - spēles, galvenais, citiem, jātiek, skaisti, nāvi, vinju, problēmas, vērts, drīkstu, domājat, visur, - bieži, manai, citas, apsolu, zelta, strādāju, dzimšanas, jūtu, naktī, dārgā, atbildi, noticēt, - klājas, izdevās, dok, redzat, gana, divus, ģimene, runa, stāsts, braucam, brīnišķīgi, ģimenes, - kuģis, čārlij, hey, kä, sheit, ved, atrada, mirusi, meita, paklau, nevēlos, bērnus, boss, kaptein, - nekāda, roze, nespēj, vīrietis, brīdi, īsts, dzīvē, tādā, manī, jūras, jaunkundz, iemesls, sakot, - manam, daudzi, varēsi, pateicos, jaunais, policija, pilnībā, nekur, jauka, nedari, kurus, zināms, - jautājumu, seko, re, padomā, pusē, visām, mīļais, dolāru, gadžet, katram, izdarīji, šīm, vienīgi, - mirt, apmēram, spēku, jauno, mr, celies, iepriekš, prātu, vēlētos, četri, lietām, redzēji, nevajadzētu, - donna, jaa, ticu, minūtēm, sievieti, nāve, jūties, nezina, parādi, malā, redz, uh, gredzenu, uzmanies, - kara, drošībā, sapnis, bijāt, grāmatu, slepkava, vinja, paga, pieci, pilsētā, drošs, pateikšu, gāja, - spēli, beigās, hanna, princese, jebkad, dakter, veids, palīdzība, stāstu, izmantot, spēlēt, gaisā, - darīšu, došos, dodas, kreisi, negribēju, mazāk, pastāsti, tak, devās, sirdi, misis, vis, patiesība, - veidā, harijs, cenšos, tuvāk, kurp, klausieties, sāp, ļaujiet, neticami, kungu, sīkais, iedomāties, - daļu, mazs, iedod, mazo, meklēju, parunāt, jādodas, sevis, pārējie, veicas, otra, mīlestību, zēns, - dodies, galam, sem, bīstami, zvēru, iespējas, maza, ellē, virs, nekādas, maniem, skatieties, šonakt, - svēto, kapteinis, iepazīties, pazīstu, turp, gredzens, nepareizi, lieliska, īstais, pagaidām, kājām, - mirklīti, pašlaik, d, poter, saprati, aprunāties, paša, šejieni, interesanti, nevarētu, pašā, paskat, - bailes, skolas, vārdus, aizmirsti, gaismas, kāp, zēni, darīsim, pašam, beidzies, sauca, māti, akmens, + ir, es, un, tu, tas, ka, man, to, vai, ko, ar, kas, par, tā, kā, viņš, uz, no, tev, + mēs, nav, jūs, bet, labi, jā, lai, nē, mani, ja, bija, viņa, esmu, viņu, tevi, esi, + mums, tad, tikai, ne, viņi, kad, jums, arī, viss, nu, kur, pie, jau, tik, tur, te, vēl, + būs, visu, šeit, tagad, kaut, ļoti, pēc, viņam, taču, savu, gan, paldies, būtu, mūsu, + šo, lūdzu, mans, kāpēc, kungs, kāds, varbūt, tās, jūsu, cik, ak, daudz, jo, esam, + zinu, mana, zini, visi, būt, tam, šī, var, līdz, viens, pa, pat, esat, nekad, domāju, + nezinu, vairs, tiešām, tie, vien, kurš, varētu, dievs, neesmu, prom, tieši, kādu, aiziet, + šis, manu, protams, vajag, neko, vienkārši, tāpēc, gribu, varu, nāc, atpakaļ, mūs, + kārtībā, iet, kopā, viņiem, pats, pirms, domā, vienmēr, gribi, nekas, bez, tava, + vienu, ej, viņai, vairāk, notiek, nevaru, pret, tavs, teica, tavu, biju, dēļ, viņas, + laiku, neviens, kādēļ, vari, labāk, patīk, dari, mājās, nebija, cilvēki, ārā, viņus, + ejam, kāda, piedod, laikam, atkal, šķiet, trīs, sevi, ser, laiks, laika, nekā, manis, + iekšā, labs, tāds, darīt, harij, nevar, viena, lieliski, kuru, šīs, sauc, šurp, teicu, + laikā, tos, pagaidi, neesi, tevis, draugs, pārāk, tēvs, šodien, teikt, dienu, visiem, + tātad, notika, hei, zināt, bijis, sveiks, atvainojiet, tika, naudu, varam, savas, citu, + tādu, manas, redzi, šajā, kam, tajā, jābūt, vecīt, tiem, runā, cilvēku, taisnība, saka, + visus, mīlu, lietas, grib, tēt, izskatās, tiek, noteikti, nozīmē, kamēr, divi, it, tāpat, + tāda, ilgi, katru, dēls, noticis, jauki, redzēt, pareizi, lūk, kundze, aiz, iespējams, + pateikt, nebūtu, gandrīz, vīrs, cilvēks, ātri, žēl, pasaules, rokas, liekas, palīdzēt, + līdzi, visas, saki, negribu, vietā, gadus, starp, skaties, tomēr, tūlīt, džek, nevajag, + sev, vajadzētu, būšu, dzīvi, droši, gadu, priekšu, skaidrs, gribēju, nāk, paskaties, mazliet, + tikko, nebūs, augšā, ceru, joprojām, nevis, ātrāk, ļauj, gribētu, liels, zina, vārdu, reizi, + pasaulē, savā, sveiki, dienas, miris, dod, priekšā, galā, klau, cilvēkiem, tavas, patiesībā, + visa, vārds, gatavs, durvis, velns, nedaudz, naudas, redzēju, velna, manā, drīz, pāri, dzīve, + vēlies, nemaz, priekš, bērni, vieta, pāris, darbu, vajadzīgs, tālāk, rīt, roku, klāt, grūti, + beidz, laba, klausies, dara, varat, sveika, biji, vismaz, kopš, redzu, saproti, kura, draugi, + zemes, šovakar, patiešām, kaa, vietu, dieva, vajadzēja, mašīnu, lejā, saku, ceļu, gada, tādēļ, + cauri, runāt, ņem, oh, divas, lieta, tikt, šie, teici, vēlāk, vaļā, nogalināt, redzējis, jāiet, + nespēju, savus, atceries, ūdens, šejienes, labu, diena, mīļā, atvaino, doties, atrast, saprotu, + abi, reiz, jādara, nesaprotu, meitene, darbs, nevari, tai, nedomāju, pilnīgi, nakti, nekādu, + pati, gadiem, vēlos, taa, kādas, cits, ejiet, pirmais, a, būsi, mamma, lietu, slikti, pašu, + acis, diezgan, pasaki, gadā, puiši, asv, sava, nost, cilvēkus, džeks, manuprāt, mājas, o, + bērns, leo, otru, nopietni, vecais, laukā, caur, dzīves, izdarīt, sieviete, vienalga, + nogalināja, dzīvo, kādreiz, čau, sirds, paliec, gribat, vēlreiz, kuras, mazais, vietas, + piedodiet, laipni, palikt, brauc, ei, the, paliek, apkārt, sievietes, tālu, garām, pirmo, + dzīvot, nāciet, runāju, kuri, tiks, jüs, ceļā, nauda, nevienam, māja, vienīgais, īsti, + sapratu, gluži, svarīgi, atvainojos, i, sen, iespēja, tavā, pavisam, nāves, māte, citi, + viegli, zem, notiks, darba, nepatīk, daži, galvu, dienā, hallo, bērnu, neesam, kungi, beidzot, + nedrīkst, vajadzēs, māju, sieva, kādam, puika, kļūst, prieks, esot, iesim, daļa, pasaule, + pietiek, visā, saviem, rīta, pagaidiet, tētis, mājā, mieru, vīru, palīdzību, dzirdēju, + tādas, dzīvs, strādā, tām, vēlas, nakts, īpaši, jūtos, nolādēts, meitenes, pusi, mammu, mees, + aizveries, vispār, dzīvību, kurā, kādā, vārdā, mašīna, būsim, vispirms, vinji, nevienu, šos, + tiksimies, džeik, vinjsh, vaina, turpini, kādi, jaunu, tuvu, atradu, vēlu, varēja, citādi, šim, + satikt, neuztraucies, pārliecināts, liec, diez, liela, doktor, nevaram, palīdzi, uzmanīgi, dažas, + šiem, atgriezies, gribēja, priecājos, parasti, valsts, asinis, tēti, you, mierā, piemēram, + jautājums, atā, bijām, zemē, pasauli, spēlē, blakus, izskaties, pirmā, nomira, paši, šobrīd, + daru, gaida, tādi, iešu, labākais, jauks, maz, pieder, jauns, nezināju, uzmanību, skaista, + prātā, brālis, patiesību, mierīgi, šai, dr, patiesi, jēzus, mārtij, zināju, suns, juus, sievu, + dzirdi, tepat, mamm, tēvu, tēva, frodo, sasodīts, desmit, stundas, tavi, mazā, džon, cita, + vajadzīga, forši, minūtes, mīlestība, nebiju, saprast, izbeidz, šoreiz, labā, dāmas, kurienes, + problēma, šādi, spēj, gadījumā, tiesa, kuģi, pēdējā, tici, esiet, atceros, katrs, nee, palīgā, + mister, liek, likās, domāt, vīri, pēdējo, traks, reizes, vienīgā, tiesības, skolā, turies, beigas, + karš, pīter, uguni, pietiks, vienam, vienā, pakaļ, jauna, zemi, puisis, ziniet, negribi, labrīt, + ap, cilvēka, draugu, atver, nezini, sāra, vēlaties, gadi, dažreiz, rokās, dabūt, nomierinies, + istabā, agrāk, ieroci, savām, meiteni, paņem, meklē, pār, seju, ziņu, dzirdējis, zinām, gatavi, + braukt, sāka, sāk, dievam, neesat, dzirdēt, spēle, bērniem, izdarīja, muļķības, doma, pēdējais, + dīvaini, atdod, ziņas, bankas, darāt, vakar, ceļš, neviena, brāli, otrā, atgriezties, galvas, + pietiekami, gulēt, uzreiz, iespēju, bijusi, karalis, bobij, šrek, tikpat, palīdziet, durvīm, + vecāki, atrodas, smieklīgi, kuģa, bail, godīgi, pēkšņi, nedēļas, māsa, skrien, ceļa, džeims, gars, + lielu, mašīnā, bojā, kurieni, ļaudis, dārgais, vecs, ūdeni, kūper, eju, mašīnas, ideja, kājas, + spēles, galvenais, citiem, jātiek, skaisti, nāvi, vinju, problēmas, vērts, drīkstu, domājat, visur, + bieži, manai, citas, apsolu, zelta, strādāju, dzimšanas, jūtu, naktī, dārgā, atbildi, noticēt, + klājas, izdevās, dok, redzat, gana, divus, ģimene, runa, stāsts, braucam, brīnišķīgi, ģimenes, + kuģis, čārlij, hey, kä, sheit, ved, atrada, mirusi, meita, paklau, nevēlos, bērnus, boss, kaptein, + nekāda, roze, nespēj, vīrietis, brīdi, īsts, dzīvē, tādā, manī, jūras, jaunkundz, iemesls, sakot, + manam, daudzi, varēsi, pateicos, jaunais, policija, pilnībā, nekur, jauka, nedari, kurus, zināms, + jautājumu, seko, re, padomā, pusē, visām, mīļais, dolāru, gadžet, katram, izdarīji, šīm, vienīgi, + mirt, apmēram, spēku, jauno, mr, celies, iepriekš, prātu, vēlētos, četri, lietām, redzēji, nevajadzētu, + donna, jaa, ticu, minūtēm, sievieti, nāve, jūties, nezina, parādi, malā, redz, uh, gredzenu, uzmanies, + kara, drošībā, sapnis, bijāt, grāmatu, slepkava, vinja, paga, pieci, pilsētā, drošs, pateikšu, gāja, + spēli, beigās, hanna, princese, jebkad, dakter, veids, palīdzība, stāstu, izmantot, spēlēt, gaisā, + darīšu, došos, dodas, kreisi, negribēju, mazāk, pastāsti, tak, devās, sirdi, misis, vis, patiesība, + veidā, harijs, cenšos, tuvāk, kurp, klausieties, sāp, ļaujiet, neticami, kungu, sīkais, iedomāties, + daļu, mazs, iedod, mazo, meklēju, parunāt, jādodas, sevis, pārējie, veicas, otra, mīlestību, zēns, + dodies, galam, sem, bīstami, zvēru, iespējas, maza, ellē, virs, nekādas, maniem, skatieties, šonakt, + svēto, kapteinis, iepazīties, pazīstu, turp, gredzens, nepareizi, lieliska, īstais, pagaidām, kājām, + mirklīti, pašlaik, d, poter, saprati, aprunāties, paša, šejieni, interesanti, nevarētu, pašā, paskat, + bailes, skolas, vārdus, aizmirsti, gaismas, kāp, zēni, darīsim, pašam, beidzies, sauca, māti, akmens, grāmatas, diemžēl, tevī, kļūt, endij, patika, nabaga, tuvojas, tēvoci, dienām, plāns """ # Source: https://www.101languages.net/polish/most-common-polish-words/ alias words_pl = """ -nie, to, się, w, na, i, z, co, jest, że, do, tak, jak, o, mnie, a, ale, mi, za, ja, ci, tu, ty, czy, -tym, go, tego, tylko, jestem, po, cię, ma, już, mam, jesteś, może, pan, dla, coś, dobrze, wiem, jeśli, -teraz, proszę, od, wszystko, tam, więc, masz, nic, on, być, gdzie, będzie, są, ten, mogę, ciebie, -bardzo, sobie, kiedy, ze, wiesz, no, jej, jeszcze, pani, był, mój, chcę, było, dlaczego, by, przez, -nas, tutaj, chcesz, jego, ją, ich, nigdy, żeby, też, kto, naprawdę, przepraszam, bo, mamy, porządku, -możesz, dobra, mu, dziękuję, ona, domu, panie, muszę, nawet, chyba, hej, właśnie, prawda, zrobić, te, -zawsze, będę, moja, gdy, je, trochę, nam, moje, cześć, bez, nim, była, tej, jesteśmy, dalej, pana, -dzięki, wszyscy, musisz, twój, lat, tobą, więcej, ktoś, czas, ta, który, chce, powiedzieć, chodź, dobry, -mną, niech, sam, razem, chodzi, czego, boże, stało, musimy, raz, albo, prostu, będziesz, dzień, możemy, -was, myślę, czym, daj, lepiej, czemu, ludzie, ok, przed, życie, ludzi, robisz, my, niż, tych, kim, rzeczy, -myślisz, powiedz, przy, twoja, oni, oczywiście, nikt, siebie, stąd, niego, twoje, miał, jeden, mówi, -powiedział, moim, czasu, u, dziś, im, które, musi, wtedy, taki, aby, pod, dwa, temu, pewnie, takie, cóż, -wszystkie, mojego, dużo, cholera, kurwa, wie, znaczy, wygląda, dzieje, mieć, ile, iść, potem, będziemy, -dzieci, dlatego, cały, byłem, moją, skąd, szybko, jako, kochanie, stary, trzeba, miejsce, myśli, można, -sie, jasne, mojej, wam, swoje, zaraz, wiele, nią, rozumiem, nich, wszystkich, jakieś, jakiś, kocham, idź, -tę, mają, mówię, mówisz, dzisiaj, nad, pomóc, takiego, przestań, tobie, jutro, robić, jaki, mamo, kilka, -przykro, wiedzieć, ojciec, widzisz, zbyt, zobaczyć, która, ani, tyle, trzy, tą, sposób, miałem, tato, niej, -później, pieniądze, robi, kogoś, kiedyś, zanim, widzę, pracy, świetnie, pewno, myślałem, będą, bardziej, -życia, długo, och, sir, ponieważ, aż, dni, nocy, każdy, dnia, znowu, oh, chciałem, taka, swoją, twoim, -widziałem, stanie, powiem, imię, wy, żebyś, nadzieję, twojej, panu, spokój, słuchaj, rację, spójrz, razie, -znam, pierwszy, koniec, chciałbym, we, nami, jakie, posłuchaj, problem, przecież, dobre, nasz, dziecko, drzwi, -nasze, miło, czuję, mógł, żyje, jeżeli, człowiek, powiedziałem, gdyby, roku, dom, sama, potrzebuję, -wszystkim, zostać, wciąż, dokładnie, mama, którzy, mówić, zamknij, mów, twoją, chwilę, zrobił, samo, idziemy, -nadal, jesteście, zabić, były, sobą, kogo, lub, lubię, the, podoba, minut, bym, chciał, bądź, czegoś, gdzieś, -mówiłem, chodźmy, znaleźć, poza, spokojnie, wcześniej, został, rozumiesz, mogą, prawie, wydaje, miała, mały, -byłeś, facet, zrobię, macie, żadnych, razy, noc, ciągle, broń, moich, twojego, końcu, pomocy, czekaj, znasz, -oczy, weź, idę, halo, dość, innego, pomysł, jakby, trzymaj, jedno, ojca, porozmawiać, pamiętasz, lata, -powinieneś, którą, powodu, takim, niczego, powinniśmy, oto, napisy, jednak, świat, pokoju, żebym, sprawy, -dwie, samochód, swój, wystarczy, pewien, źle, pozwól, numer, jedną, miejscu, you, drogi, byłam, dokąd, miłość, -panowie, pieniędzy, którego, matka, rano, dwóch, całe, patrz, rzecz, nowy, idzie, wyglądasz, bóg, byś, życiu, -nimi, nikogo, całą, swojego, świecie, sprawa, dziewczyna, prawo, byli, zostaw, wiedziałem, jedna, widzieć, -swoim, kobiety, uważaj, najpierw, właściwie, dam, również, diabła, chcą, którym, zrób, da, jednego, dać, -musiał, ręce, powinienem, których, znów, powiedziała, wczoraj, czujesz, zaczekaj, sądzę, śmierć, mówił, -podczas, której, całkiem, pracę, żona, pójdę, pamiętam, powiedziałeś, mówią, wiemy, jezu, witam, cholery, -swoich, telefon, wielu, także, poważnie, skoro, miejsca, robię, śmierci, słyszałem, wina, zrobiłem, dobranoc, -parę, prawdę, swojej, serce, inaczej, dziewczyny, kobieta, powiesz, martw, rób, pytanie, pięć, innych, one, -gra, natychmiast, wrócić, szybciej, jednym, cokolwiek, wierzę, wcale, wieczór, ważne, człowieka, wielki, nowa, -dopiero, ziemi, gdybym, tata, poznać, stać, jack, myślałam, witaj, słowa, zrobiłeś, gówno, john, dolarów, -sprawę, inne, idziesz, miałam, wiecie, chciałam, zobaczenia, widziałeś, żyć, każdym, nasza, panią, wspaniale, -chwili, każdego, nowego, nieźle, takich, między, dostać, powinien, dawaj, dopóki, naszych, naszej, świata, -chłopaki, chcemy, poczekaj, jaką, człowieku, czasem, żadnego, inny, przynajmniej, nazywa, super, naszego, -szczęście, potrzebuje, godziny, zabrać, powrotem, syn, lecz, słucham, twoich, udało, boga, pokój, działa, -ogóle, naszym, szkoły, możliwe, wiedział, wyjść, wszystkiego, byłoby, daleko, wieczorem, skarbie, jaka, -mógłbym, ostatni, możecie, cztery, doktorze, zrobimy, mąż, przeciwko, zgadza, zrobisz, czasie, czasami, -brzmi, raczej, ciało, należy, miasta, miałeś, taką, brat, cieszę, rozmawiać, cała, czymś, wybacz, twarz, -mała, chcecie, dr, pojęcia, lubisz, głowę, najbardziej, dziwne, głowy, wody, pół, wiadomość, policja, -strony, l, pl, mogłem, mieli, widzenia, pewna, ruszaj, wracaj, ode, popatrz, końca, plan, kiedykolwiek, -wejść, została, rok, syna, uda, wrócę, zewnątrz, droga, uwierzyć, późno, zostało, zostanie, zły, kapitanie, -potrzebujemy, byliśmy, zobaczymy, gotowy, obchodzi, jechać, rodziny, widziałam, drodze, czeka, środku, film, -spać, człowiekiem, zupełnie, taa, pomóż, mieliśmy, pomoc, słowo, innym, ostatnio, and, zna, mogła, pójść, -chłopcy, wziąć, mógłbyś, tłumaczenie, potrzebujesz, słyszysz, blisko, godzin, miłości, góry, zabił, piękna, -napisów, pokaż, moi, lubi, robota, prawa, ciężko, kimś, dół, rękę, nazywam, wielkie, część, wkrótce, naszą, -jedziemy, zapomnij, prosto, radę, robimy, powinnaś, gdybyś, chociaż, zależy, stronie, wypadek, tydzień, byłaś, -nowe, małe, praca, drogę, chłopak, zrobi, widział, mieście, synu, oznacza, krew, mógłby, krwi, górę, joe, wasza, -robią, tędy, wszędzie, temat, pierwsze, zobacz, ponad, kraju, mało, racja, tymi, cicho, chciała, powiedziałam, -leci, powinno, mówiąc, serca, chciałabym, miasto, george, spotkać, mniej, e, przyjaciel, mówiłeś, kłopoty, -miesięcy, jakąś, żaden, zostań, roboty, zatrzymać, frank, nieważne, głupi, pa, koleś, sprawie, spotkanie, ojcze, -pewnego, spróbuj, drugi, znalazłem, pracować, całym, zostały, złe, niemożliwe, jakoś, zdjęcia, stronę, wiedzą, it, -dziewczynę, zaczyna, mogli, samego, sądzisz, rodzina, razu, trudno, samochodu, okay, boję, szkoda, wami, charlie, -dał, środka, ojcem, piękne, dawno, choć, panem, przykład, nagle, bracie, żadnej, drugiej, przyjaciół, otwórz, -myśleć, doktor, chwileczkę, pracuje, najlepszy, brata, czyż, często, http, powinnam, odejść, trzech, chodźcie, -nazwisko, szansę, ciała, policji, szkole, prawdopodobnie, serio, matki, org, wolno, sami, muszą, zabierz, -słyszałeś, siostra, uspokój, wystarczająco, początku, faceta, problemy, szefie, broni, me, zostawić, czuje, -będziecie, przyszedł, wiedziałam, kilku, inni, b, głowie, historia, według, www, wezmę, nowym, czekać, stój, -mężczyzna, mówiłam, pokazać, około, wracam, wieku, jakaś, pierwsza, niczym, zabiję, zdjęcie, zabawne, rodzice, -musiałem, całkowicie, sprawdzić, mike, przyjdzie, sześć, kupić, dobrym, żonę, dasz, pomoże, nogi, obok, ruszać, -trzymać, zadzwonić, panno, godzinę, boli, oraz, spokoju, walczyć, wróci, tom, wspólnego, zmienić, ostatnie, uwagę, -znać, jednej, dłużej, powie, pogadać, łatwo, większość, nikomu, michael, córka, niedługo, powodzenia, tygodniu, -włosy, niestety, górze, kochasz, prawdziwy, historii, ulicy, musicie, gotowi, chwila, samym, grać, zadzwonię, -strasznie, mieszka, kocha, rady, tyłu, jakim, obiecuję, tysięcy, pomyślałem, pracuję, jedynie, pozwolić, uwaga, +nie, to, się, w, na, i, z, co, jest, że, do, tak, jak, o, mnie, a, ale, mi, za, ja, ci, tu, ty, czy, +tym, go, tego, tylko, jestem, po, cię, ma, już, mam, jesteś, może, pan, dla, coś, dobrze, wiem, jeśli, +teraz, proszę, od, wszystko, tam, więc, masz, nic, on, być, gdzie, będzie, są, ten, mogę, ciebie, +bardzo, sobie, kiedy, ze, wiesz, no, jej, jeszcze, pani, był, mój, chcę, było, dlaczego, by, przez, +nas, tutaj, chcesz, jego, ją, ich, nigdy, żeby, też, kto, naprawdę, przepraszam, bo, mamy, porządku, +możesz, dobra, mu, dziękuję, ona, domu, panie, muszę, nawet, chyba, hej, właśnie, prawda, zrobić, te, +zawsze, będę, moja, gdy, je, trochę, nam, moje, cześć, bez, nim, była, tej, jesteśmy, dalej, pana, +dzięki, wszyscy, musisz, twój, lat, tobą, więcej, ktoś, czas, ta, który, chce, powiedzieć, chodź, dobry, +mną, niech, sam, razem, chodzi, czego, boże, stało, musimy, raz, albo, prostu, będziesz, dzień, możemy, +was, myślę, czym, daj, lepiej, czemu, ludzie, ok, przed, życie, ludzi, robisz, my, niż, tych, kim, rzeczy, +myślisz, powiedz, przy, twoja, oni, oczywiście, nikt, siebie, stąd, niego, twoje, miał, jeden, mówi, +powiedział, moim, czasu, u, dziś, im, które, musi, wtedy, taki, aby, pod, dwa, temu, pewnie, takie, cóż, +wszystkie, mojego, dużo, cholera, kurwa, wie, znaczy, wygląda, dzieje, mieć, ile, iść, potem, będziemy, +dzieci, dlatego, cały, byłem, moją, skąd, szybko, jako, kochanie, stary, trzeba, miejsce, myśli, można, +sie, jasne, mojej, wam, swoje, zaraz, wiele, nią, rozumiem, nich, wszystkich, jakieś, jakiś, kocham, idź, +tę, mają, mówię, mówisz, dzisiaj, nad, pomóc, takiego, przestań, tobie, jutro, robić, jaki, mamo, kilka, +przykro, wiedzieć, ojciec, widzisz, zbyt, zobaczyć, która, ani, tyle, trzy, tą, sposób, miałem, tato, niej, +później, pieniądze, robi, kogoś, kiedyś, zanim, widzę, pracy, świetnie, pewno, myślałem, będą, bardziej, +życia, długo, och, sir, ponieważ, aż, dni, nocy, każdy, dnia, znowu, oh, chciałem, taka, swoją, twoim, +widziałem, stanie, powiem, imię, wy, żebyś, nadzieję, twojej, panu, spokój, słuchaj, rację, spójrz, razie, +znam, pierwszy, koniec, chciałbym, we, nami, jakie, posłuchaj, problem, przecież, dobre, nasz, dziecko, drzwi, +nasze, miło, czuję, mógł, żyje, jeżeli, człowiek, powiedziałem, gdyby, roku, dom, sama, potrzebuję, +wszystkim, zostać, wciąż, dokładnie, mama, którzy, mówić, zamknij, mów, twoją, chwilę, zrobił, samo, idziemy, +nadal, jesteście, zabić, były, sobą, kogo, lub, lubię, the, podoba, minut, bym, chciał, bądź, czegoś, gdzieś, +mówiłem, chodźmy, znaleźć, poza, spokojnie, wcześniej, został, rozumiesz, mogą, prawie, wydaje, miała, mały, +byłeś, facet, zrobię, macie, żadnych, razy, noc, ciągle, broń, moich, twojego, końcu, pomocy, czekaj, znasz, +oczy, weź, idę, halo, dość, innego, pomysł, jakby, trzymaj, jedno, ojca, porozmawiać, pamiętasz, lata, +powinieneś, którą, powodu, takim, niczego, powinniśmy, oto, napisy, jednak, świat, pokoju, żebym, sprawy, +dwie, samochód, swój, wystarczy, pewien, źle, pozwól, numer, jedną, miejscu, you, drogi, byłam, dokąd, miłość, +panowie, pieniędzy, którego, matka, rano, dwóch, całe, patrz, rzecz, nowy, idzie, wyglądasz, bóg, byś, życiu, +nimi, nikogo, całą, swojego, świecie, sprawa, dziewczyna, prawo, byli, zostaw, wiedziałem, jedna, widzieć, +swoim, kobiety, uważaj, najpierw, właściwie, dam, również, diabła, chcą, którym, zrób, da, jednego, dać, +musiał, ręce, powinienem, których, znów, powiedziała, wczoraj, czujesz, zaczekaj, sądzę, śmierć, mówił, +podczas, której, całkiem, pracę, żona, pójdę, pamiętam, powiedziałeś, mówią, wiemy, jezu, witam, cholery, +swoich, telefon, wielu, także, poważnie, skoro, miejsca, robię, śmierci, słyszałem, wina, zrobiłem, dobranoc, +parę, prawdę, swojej, serce, inaczej, dziewczyny, kobieta, powiesz, martw, rób, pytanie, pięć, innych, one, +gra, natychmiast, wrócić, szybciej, jednym, cokolwiek, wierzę, wcale, wieczór, ważne, człowieka, wielki, nowa, +dopiero, ziemi, gdybym, tata, poznać, stać, jack, myślałam, witaj, słowa, zrobiłeś, gówno, john, dolarów, +sprawę, inne, idziesz, miałam, wiecie, chciałam, zobaczenia, widziałeś, żyć, każdym, nasza, panią, wspaniale, +chwili, każdego, nowego, nieźle, takich, między, dostać, powinien, dawaj, dopóki, naszych, naszej, świata, +chłopaki, chcemy, poczekaj, jaką, człowieku, czasem, żadnego, inny, przynajmniej, nazywa, super, naszego, +szczęście, potrzebuje, godziny, zabrać, powrotem, syn, lecz, słucham, twoich, udało, boga, pokój, działa, +ogóle, naszym, szkoły, możliwe, wiedział, wyjść, wszystkiego, byłoby, daleko, wieczorem, skarbie, jaka, +mógłbym, ostatni, możecie, cztery, doktorze, zrobimy, mąż, przeciwko, zgadza, zrobisz, czasie, czasami, +brzmi, raczej, ciało, należy, miasta, miałeś, taką, brat, cieszę, rozmawiać, cała, czymś, wybacz, twarz, +mała, chcecie, dr, pojęcia, lubisz, głowę, najbardziej, dziwne, głowy, wody, pół, wiadomość, policja, +strony, l, pl, mogłem, mieli, widzenia, pewna, ruszaj, wracaj, ode, popatrz, końca, plan, kiedykolwiek, +wejść, została, rok, syna, uda, wrócę, zewnątrz, droga, uwierzyć, późno, zostało, zostanie, zły, kapitanie, +potrzebujemy, byliśmy, zobaczymy, gotowy, obchodzi, jechać, rodziny, widziałam, drodze, czeka, środku, film, +spać, człowiekiem, zupełnie, taa, pomóż, mieliśmy, pomoc, słowo, innym, ostatnio, and, zna, mogła, pójść, +chłopcy, wziąć, mógłbyś, tłumaczenie, potrzebujesz, słyszysz, blisko, godzin, miłości, góry, zabił, piękna, +napisów, pokaż, moi, lubi, robota, prawa, ciężko, kimś, dół, rękę, nazywam, wielkie, część, wkrótce, naszą, +jedziemy, zapomnij, prosto, radę, robimy, powinnaś, gdybyś, chociaż, zależy, stronie, wypadek, tydzień, byłaś, +nowe, małe, praca, drogę, chłopak, zrobi, widział, mieście, synu, oznacza, krew, mógłby, krwi, górę, joe, wasza, +robią, tędy, wszędzie, temat, pierwsze, zobacz, ponad, kraju, mało, racja, tymi, cicho, chciała, powiedziałam, +leci, powinno, mówiąc, serca, chciałabym, miasto, george, spotkać, mniej, e, przyjaciel, mówiłeś, kłopoty, +miesięcy, jakąś, żaden, zostań, roboty, zatrzymać, frank, nieważne, głupi, pa, koleś, sprawie, spotkanie, ojcze, +pewnego, spróbuj, drugi, znalazłem, pracować, całym, zostały, złe, niemożliwe, jakoś, zdjęcia, stronę, wiedzą, it, +dziewczynę, zaczyna, mogli, samego, sądzisz, rodzina, razu, trudno, samochodu, okay, boję, szkoda, wami, charlie, +dał, środka, ojcem, piękne, dawno, choć, panem, przykład, nagle, bracie, żadnej, drugiej, przyjaciół, otwórz, +myśleć, doktor, chwileczkę, pracuje, najlepszy, brata, czyż, często, http, powinnam, odejść, trzech, chodźcie, +nazwisko, szansę, ciała, policji, szkole, prawdopodobnie, serio, matki, org, wolno, sami, muszą, zabierz, +słyszałeś, siostra, uspokój, wystarczająco, początku, faceta, problemy, szefie, broni, me, zostawić, czuje, +będziecie, przyszedł, wiedziałam, kilku, inni, b, głowie, historia, według, www, wezmę, nowym, czekać, stój, +mężczyzna, mówiłam, pokazać, około, wracam, wieku, jakaś, pierwsza, niczym, zabiję, zdjęcie, zabawne, rodzice, +musiałem, całkowicie, sprawdzić, mike, przyjdzie, sześć, kupić, dobrym, żonę, dasz, pomoże, nogi, obok, ruszać, +trzymać, zadzwonić, panno, godzinę, boli, oraz, spokoju, walczyć, wróci, tom, wspólnego, zmienić, ostatnie, uwagę, +znać, jednej, dłużej, powie, pogadać, łatwo, większość, nikomu, michael, córka, niedługo, powodzenia, tygodniu, +włosy, niestety, górze, kochasz, prawdziwy, historii, ulicy, musicie, gotowi, chwila, samym, grać, zadzwonię, +strasznie, mieszka, kocha, rady, tyłu, jakim, obiecuję, tysięcy, pomyślałem, pracuję, jedynie, pozwolić, uwaga, proste, zacząć, myśl, wstawaj, rany, prawdziwe, takiej, jakiegoś, umrzeć, złego, okazji """ # Source: https://www.101languages.net/greek/most-common-greek-words/ alias words_el = """ - να, το, δεν, θα, είναι, και, μου, με, ο, για, την, σου, τα, τον, η, τι, σε, που, του, αυτό, στο, ότι, - από, τη, της, ναι, σας, ένα, εδώ, τους, αν, όχι, μια, μας, είσαι, αλλά, κι, οι, πρέπει, είμαι, ήταν, - πολύ, στην, δε, γιατί, εγώ, τώρα, πως, εντάξει, τις, κάτι, ξέρω, μην, έχει, έχω, εσύ, θέλω, καλά, - έτσι, στη, στον, αυτή, ξέρεις, κάνεις, εκεί, σαν, μόνο, μπορώ, όταν, έχεις, μαζί, πώς, τίποτα, - ευχαριστώ, όλα, κάνω, πάμε, ή, ποτέ, τόσο, πού, αυτά, έλα, στα, μέσα, κάνει, των, μπορεί, κύριε, πιο, - σπίτι, παρακαλώ, λοιπόν, μπορείς, αυτός, υπάρχει, ακόμα, πίσω, λίγο, πάντα, είμαστε, γεια, τότε, - ειναι, μετά, πω, έχουμε, μη, ένας, ποιος, νομίζω, πριν, απλά, δω, δουλειά, παιδιά, οχι, αλήθεια, - όλοι, ίσως, λες, όπως, ας, θέλεις, μα, άλλο, είπε, ζωή, πάω, δύο, ωραία, έναν, καλό, απο, κάνουμε, - έξω, κοίτα, είχε, στις, πάνω, είπα, πες, χρόνια, ούτε, κάτω, είστε, ώρα, θες, σένα, έχουν, γυναίκα, - μένα, μέρα, καλή, φορά, όμως, κανείς, κάθε, ε, οτι, αρέσει, ήμουν, μέχρι, δυο, είχα, μαμά, χωρίς, - καλύτερα, πας, πράγματα, πάει, σήμερα, κάποιος, ήθελα, θέλει, θεέ, έπρεπε, λέει, μία, σωστά, αυτόν, - μπορούμε, συμβαίνει, ακριβώς, έγινε, πόσο, επειδή, λεφτά, πολλά, μόλις, εμένα, λένε, πεις, συγγνώμη, - γρήγορα, ω, έκανε, λυπάμαι, γίνει, παιδί, περίμενε, έκανα, φίλε, βλέπω, μέρος, στιγμή, φαίνεται, + να, το, δεν, θα, είναι, και, μου, με, ο, για, την, σου, τα, τον, η, τι, σε, που, του, αυτό, στο, ότι, + από, τη, της, ναι, σας, ένα, εδώ, τους, αν, όχι, μια, μας, είσαι, αλλά, κι, οι, πρέπει, είμαι, ήταν, + πολύ, στην, δε, γιατί, εγώ, τώρα, πως, εντάξει, τις, κάτι, ξέρω, μην, έχει, έχω, εσύ, θέλω, καλά, + έτσι, στη, στον, αυτή, ξέρεις, κάνεις, εκεί, σαν, μόνο, μπορώ, όταν, έχεις, μαζί, πώς, τίποτα, + ευχαριστώ, όλα, κάνω, πάμε, ή, ποτέ, τόσο, πού, αυτά, έλα, στα, μέσα, κάνει, των, μπορεί, κύριε, πιο, + σπίτι, παρακαλώ, λοιπόν, μπορείς, αυτός, υπάρχει, ακόμα, πίσω, λίγο, πάντα, είμαστε, γεια, τότε, + ειναι, μετά, πω, έχουμε, μη, ένας, ποιος, νομίζω, πριν, απλά, δω, δουλειά, παιδιά, οχι, αλήθεια, + όλοι, ίσως, λες, όπως, ας, θέλεις, μα, άλλο, είπε, ζωή, πάω, δύο, ωραία, έναν, καλό, απο, κάνουμε, + έξω, κοίτα, είχε, στις, πάνω, είπα, πες, χρόνια, ούτε, κάτω, είστε, ώρα, θες, σένα, έχουν, γυναίκα, + μένα, μέρα, καλή, φορά, όμως, κανείς, κάθε, ε, οτι, αρέσει, ήμουν, μέχρι, δυο, είχα, μαμά, χωρίς, + καλύτερα, πας, πράγματα, πάει, σήμερα, κάποιος, ήθελα, θέλει, θεέ, έπρεπε, λέει, μία, σωστά, αυτόν, + μπορούμε, συμβαίνει, ακριβώς, έγινε, πόσο, επειδή, λεφτά, πολλά, μόλις, εμένα, λένε, πεις, συγγνώμη, + γρήγορα, ω, έκανε, λυπάμαι, γίνει, παιδί, περίμενε, έκανα, φίλε, βλέπω, μέρος, στιγμή, φαίνεται, πρόβλημα, άλλη, είπες, φυσικά, κάποιον, όσο, πήγαινε, πάλι, λάθος, ως, έχετε, εσένα, πράγμα, κυρία, - χρόνο, στους, πάρω, μπαμπά, δικό, απ, γίνεται, εσείς, λέω, συγνώμη, όλο, μητέρα, έκανες, πιστεύω, - ήσουν, κάποια, σίγουρα, υπάρχουν, όλη, ενα, αυτο, ξέρει, μωρό, ιδέα, δει, μάλλον, ίδιο, πάρε, είδα, - αύριο, βλέπεις, νέα, κόσμο, νομίζεις, τί, εμείς, σταμάτα, πάρει, αγάπη, πατέρας, όλους, αρκετά, - χρειάζεται, καιρό, φορές, κάνουν, ακόμη, α, πατέρα, προς, αμέσως, πια, ηταν, χαρά, απόψε, όνομα, - μάλιστα, μόνος, μεγάλη, κανένα, ελα, πραγματικά, αυτοί, πει, πότε, εχω, βράδυ, αυτές, θέλετε, κάνετε, - σημαίνει, πρώτη, ποιο, πόλη, μπορούσα, ποια, γαμώτο, ήδη, τελευταία, άνθρωποι, τέλος, απλώς, νόμιζα, - ξέρετε, μέρες, δεις, θέση, αυτούς, καταλαβαίνω, φύγε, χέρια, εκτός, ήξερα, οπότε, λεπτά, μακριά, - κάνε, αμάξι, δική, λεπτό, μεγάλο, μήπως, κορίτσι, μάτια, ελάτε, πρόκειται, πόρτα, δίκιο, βοήθεια, - ήρθε, μιλήσω, δρόμο, εαυτό, καθόλου, ορίστε, βρω, πειράζει, μπορείτε, καλός, πέρα, κοντά, εννοώ, - τέτοιο, μπροστά, έρθει, χρειάζομαι, χέρι, ελπίζω, δώσε, διάολο, φύγω, ιστορία, όπλο, αφού, πρωί, - νύχτα, ωραίο, τύπος, ξανά, θυμάσαι, δούμε, κατά, εννοείς, αγαπώ, κακό, θέμα, εδω, αυτήν, τρόπο, - κεφάλι, είχες, μερικές, μιλάς, φίλος, άνθρωπος, φύγουμε, όλες, σκατά, ανθρώπους, βέβαια, άντρας, - κάποιο, πάνε, αστυνομία, αλλιώς, συνέβη, χαίρομαι, άλλα, περισσότερο, καλύτερο, εκείνη, πάρεις, τo, - νερό, ώρες, σίγουρος, vα, τρεις, εχεις, πρώτα, μπορούσε, σ, οταν, δρ, πιστεύεις, μόνη, ποιός, καμιά, - κανέναν, πέθανε, εχει, ετσι, αγόρι, ανησυχείς, άντρες, δωμάτιο, ομάδα, ίδια, εμπρός, βρούμε, βοηθήσω, - τέτοια, πήρε, τρία, λόγο, μικρό, αντίο, o, πέντε, πήγε, καν, ευκαιρία, είδες, έρχεται, δηλαδή, - αργότερα, ήθελε, πούμε, λέμε, όπου, αλλα, κόρη, κόσμος, γυναίκες, τηλέφωνο, εάν, δώσω, καρδιά, βρήκα, - γραφείο, επίσης, νιώθω, σχέση, θέλουν, ισως, τέλεια, είχαμε, κάπου, μυαλό, ώστε, καλημέρα, σχολείο, - θεός, μικρή, τρέχει, ψέματα, ξέρουμε, οικογένεια, εισαι, θυμάμαι, κ, ενός, φίλοι, πρόσεχε, - καταλαβαίνεις, αργά, ντε, θέλουμε, σύντομα, πήρα, σχεδόν, παιχνίδι, κύριοι, γειά, μήνες, μπαμπάς, - σοβαρά, δολάρια, τουλάχιστον, χρήματα, πείτε, πόδια, αίμα, κοπέλα, φαγητό, ειμαι, ποιον, μερικά, - δύσκολο, μπορούν, βρεις, όμορφη, φύγεις, τύχη, πλάκα, έρθεις, άντρα, κορίτσια, μείνε, αστείο, καμία, - είχαν, χάρη, άλλος, πρεπει, σημασία, φυλακή, νεκρός, συγχωρείτε, φοβάμαι, μπράβο, γύρω, κανένας, μεταξύ, - τ, χθες, πολλές, όνομά, τζακ, ρε, καληνύχτα, πολυ, φύγει, αφήσω, ήθελες, tι, ήρθες, ακούς, πρώτο, γιατι, - ηρέμησε, γι, πάρουμε, πάρα, άλλους, κατάλαβα, έρθω, συνέχεια, έλεγα, γλυκιά, νοιάζει, χριστέ, βιβλίο, - κύριος, μ, χώρα, αρχή, ήρθα, πεθάνει, γη, έτοιμος, εγω, άσχημα, συμβεί, αυτοκίνητο, ζωής, τελικά, φέρω, - τρόπος, κατάσταση, www, περιμένω, σημαντικό, όσα, σκέφτηκα, μιλήσουμε, αφήστε, τωρα, ακούω, γιος, σκοτώσω, - δύναμη, κα, κε, εκείνο, γονείς, μιλάω, σκοτώσει, ολα, μείνει, μείνω, αρέσουν, δεv, υπόθεση, φίλους, όπλα, - υποθέτω, εμάς, ενώ, έξι, σχέδιο, άρεσε, καφέ, σκότωσε, χρειαζόμαστε, φίλο, σωστό, προσπαθώ, κάναμε, - κοιτάξτε, μoυ, κου, ποτό, εσάς, έι, έφυγε, ταινία, μοιάζει, κρεβάτι, εχουμε, περιμένει, νέο, μπορούσες, - μάθω, αφήσεις, περιμένετε, χρειάζεσαι, υπήρχε, μισό, δέκα, αφεντικό, περίπου, άλλοι, λόγος, ξέρουν, κάποτε, - βρήκες, καλύτερη, υπέροχο, τζον, δίπλα, σκάσε, θεού, άκουσα, φύγετε, λέξη, παρά, επόμενη, λέτε, περάσει, - πόσα, γίνεις, σώμα, ν, πήρες, τελείωσε, γιο, ρούχα, σκέφτομαι, εσυ, άλλες, γυρίσω, βάλω, μουσική, ραντεβού, - φωτιά, έδωσε, πάτε, φοβάσαι, βρει, δείξω, γίνω, βοηθήσει, τύπο, σειρά, αξίζει, μείνεις, είπαν, άλλον, - κυρίες, λίγη, πέρασε, κάτσε, πήγα, δείτε, μιας, βδομάδα, έρχομαι, προσοχή, εύκολο, ερώτηση, υπέροχα, - σίγουρη, νοσοκομείο, τρελός, ενας, βάλε, πόλεμο, φέρε, δικά, τιμή, κατάλαβες, ταξίδι, οποίο, δουλεύει, θεό, - μικρέ, μάθεις, βρίσκεται, πολλοί, δες, πάρτε, παντού, πρόσωπο, μήνυμα, αδερφή, μιλάει, παλιά, πουθενά, - κράτα, περίπτωση, φως, επάνω, έλεγε, συμφωνία, οπως, ολοι, πρώτος, δεσποινίς, γιατρός, γνωρίζω, σαμ, - σκέφτεσαι, ει, φίλη, σεξ, έκαναν, προβλήματα, κάπως, ό, τελευταίο, ακούσει, τζο, καλώς, επιλογή, - σταματήστε, τόσα, οτιδήποτε, περισσότερα, άδεια, πάρτι, περίμενα, ακούγεται, gmteam, ήξερες, καιρός, - μαλλιά, καλύτερος, κανεις, φρανκ, μέση, συνέχισε, τίποτε, φωτογραφία, κατι, μεγάλος, περιοχή, άσε, καθώς, - είδε, λόγια, μήνα, μαλακίες, όμορφο, δώρο, στόμα, χάλια, εντελώς, μακάρι, τελειώσει, γνώμη, γιατρέ, ξερω, - πλευρά, μέλλον, θάνατο, νιώθεις, έτοιμοι, κομμάτι, μάθει, μιλάμε, ψηλά, αέρα, ερωτήσεις, αυτού, δώσει, - φεύγω, σημείο, τηλεόραση, κυριε, πραγματικότητα, ανάγκη, βοηθήσεις, προσπάθησε, γύρνα, άφησε, λίγα, κάντε, - είvαι, βλέπετε, αυτη, δείπνο, επιτέλους, κέντρο, περίεργο, ακούστε, πλοίο, κάποιες, δικός, σoυ, οικογένειά, - μιλήσει, πλέον, υπόσχομαι, περιμένεις, ήξερε, σκοτώσεις, ενταξει, δώσεις, εκει, ήμασταν, έρχονται, κώλο, - ρωτήσω, παίρνει, σιγά, σήκω, στοιχεία, αδελφή, βασικά, μένει, άκρη, πηγαίνετε, παίρνεις, tο, περιμένουμε, - συγχωρείς, μικρός, πόδι, δίνει, εκατομμύρια, ξενοδοχείο, αποστολή, ενδιαφέρον, χάρηκα, αεροπλάνο, γάμο, - χιλιάδες, υόρκη, οκ, ευχαριστούμε, καλα, κοιτάς, σα, π, χρόνος, ησυχία, ασφάλεια, εκείνος, a, βρήκε, - τέσσερα, βγάλω, μπες, συχνά, ημέρα, μάνα, εν, αγαπάς, άνθρωπο, γραμμή, φωτογραφίες, προσέχεις, ύπνο, - μυστικό, σχετικά, είδους, σκέψου, χριστούγεννα, κόσμου, τομ, μισώ, σύστημα, δουλειές, τελείως, πεθάνω, - αλλάξει, δεξιά, συνήθως, δουλεύω, μάικλ, εβδομάδα, νούμερο, λείπει, έτοιμη, τμήμα, βγει, ψυχή, έπεσε, - κάθαρμα, ματιά, οποία, πληροφορίες, μονο, κρίμα, τραγούδι, μαγαζί, δουλεύεις, μαζι, τέλειο, κύριο, - λέγεται, τσάρλι, πεθάνεις, σκεφτόμουν, καλησπέρα, συγχαρητήρια, φωνή, εκ, άτομο, παίζεις, σκάφος, - φαίνεσαι, ξαφνικά, παραπάνω, ατύχημα, θελω, ξέχνα, ήρθατε, εναντίον, τραπέζι, γράμμα, μείνετε, αμερική, - βασιλιάς, υπό, μπάνιο, ποτε, ίδιος, προφανώς, μαλάκα, αδερφός, άνδρες, nαι, χρονών, ναί, κλειδί, δις, - γιαγιά, παράξενο, πτώμα, βρήκαμε, μιλήσεις, υποτίθεται, ορκίζομαι, δυνατά, ποιό, θάλασσα, παίρνω, άκουσες, - παρέα, αριστερά, έμαθα, μάχη, μηχανή, σάρα, ζωντανός, όνειρο, παλιό, μπορούσαμε, πάντως, ανάμεσα, έχασα, - νωρίς, κάποιοι, άκου, παίζει, φτάνει, δίνω, βγες, υπέροχη, νόημα, έλεγχο, μέτρα, ξερεις, ζει, δείχνει, + χρόνο, στους, πάρω, μπαμπά, δικό, απ, γίνεται, εσείς, λέω, συγνώμη, όλο, μητέρα, έκανες, πιστεύω, + ήσουν, κάποια, σίγουρα, υπάρχουν, όλη, ενα, αυτο, ξέρει, μωρό, ιδέα, δει, μάλλον, ίδιο, πάρε, είδα, + αύριο, βλέπεις, νέα, κόσμο, νομίζεις, τί, εμείς, σταμάτα, πάρει, αγάπη, πατέρας, όλους, αρκετά, + χρειάζεται, καιρό, φορές, κάνουν, ακόμη, α, πατέρα, προς, αμέσως, πια, ηταν, χαρά, απόψε, όνομα, + μάλιστα, μόνος, μεγάλη, κανένα, ελα, πραγματικά, αυτοί, πει, πότε, εχω, βράδυ, αυτές, θέλετε, κάνετε, + σημαίνει, πρώτη, ποιο, πόλη, μπορούσα, ποια, γαμώτο, ήδη, τελευταία, άνθρωποι, τέλος, απλώς, νόμιζα, + ξέρετε, μέρες, δεις, θέση, αυτούς, καταλαβαίνω, φύγε, χέρια, εκτός, ήξερα, οπότε, λεπτά, μακριά, + κάνε, αμάξι, δική, λεπτό, μεγάλο, μήπως, κορίτσι, μάτια, ελάτε, πρόκειται, πόρτα, δίκιο, βοήθεια, + ήρθε, μιλήσω, δρόμο, εαυτό, καθόλου, ορίστε, βρω, πειράζει, μπορείτε, καλός, πέρα, κοντά, εννοώ, + τέτοιο, μπροστά, έρθει, χρειάζομαι, χέρι, ελπίζω, δώσε, διάολο, φύγω, ιστορία, όπλο, αφού, πρωί, + νύχτα, ωραίο, τύπος, ξανά, θυμάσαι, δούμε, κατά, εννοείς, αγαπώ, κακό, θέμα, εδω, αυτήν, τρόπο, + κεφάλι, είχες, μερικές, μιλάς, φίλος, άνθρωπος, φύγουμε, όλες, σκατά, ανθρώπους, βέβαια, άντρας, + κάποιο, πάνε, αστυνομία, αλλιώς, συνέβη, χαίρομαι, άλλα, περισσότερο, καλύτερο, εκείνη, πάρεις, τo, + νερό, ώρες, σίγουρος, vα, τρεις, εχεις, πρώτα, μπορούσε, σ, οταν, δρ, πιστεύεις, μόνη, ποιός, καμιά, + κανέναν, πέθανε, εχει, ετσι, αγόρι, ανησυχείς, άντρες, δωμάτιο, ομάδα, ίδια, εμπρός, βρούμε, βοηθήσω, + τέτοια, πήρε, τρία, λόγο, μικρό, αντίο, o, πέντε, πήγε, καν, ευκαιρία, είδες, έρχεται, δηλαδή, + αργότερα, ήθελε, πούμε, λέμε, όπου, αλλα, κόρη, κόσμος, γυναίκες, τηλέφωνο, εάν, δώσω, καρδιά, βρήκα, + γραφείο, επίσης, νιώθω, σχέση, θέλουν, ισως, τέλεια, είχαμε, κάπου, μυαλό, ώστε, καλημέρα, σχολείο, + θεός, μικρή, τρέχει, ψέματα, ξέρουμε, οικογένεια, εισαι, θυμάμαι, κ, ενός, φίλοι, πρόσεχε, + καταλαβαίνεις, αργά, ντε, θέλουμε, σύντομα, πήρα, σχεδόν, παιχνίδι, κύριοι, γειά, μήνες, μπαμπάς, + σοβαρά, δολάρια, τουλάχιστον, χρήματα, πείτε, πόδια, αίμα, κοπέλα, φαγητό, ειμαι, ποιον, μερικά, + δύσκολο, μπορούν, βρεις, όμορφη, φύγεις, τύχη, πλάκα, έρθεις, άντρα, κορίτσια, μείνε, αστείο, καμία, + είχαν, χάρη, άλλος, πρεπει, σημασία, φυλακή, νεκρός, συγχωρείτε, φοβάμαι, μπράβο, γύρω, κανένας, μεταξύ, + τ, χθες, πολλές, όνομά, τζακ, ρε, καληνύχτα, πολυ, φύγει, αφήσω, ήθελες, tι, ήρθες, ακούς, πρώτο, γιατι, + ηρέμησε, γι, πάρουμε, πάρα, άλλους, κατάλαβα, έρθω, συνέχεια, έλεγα, γλυκιά, νοιάζει, χριστέ, βιβλίο, + κύριος, μ, χώρα, αρχή, ήρθα, πεθάνει, γη, έτοιμος, εγω, άσχημα, συμβεί, αυτοκίνητο, ζωής, τελικά, φέρω, + τρόπος, κατάσταση, www, περιμένω, σημαντικό, όσα, σκέφτηκα, μιλήσουμε, αφήστε, τωρα, ακούω, γιος, σκοτώσω, + δύναμη, κα, κε, εκείνο, γονείς, μιλάω, σκοτώσει, ολα, μείνει, μείνω, αρέσουν, δεv, υπόθεση, φίλους, όπλα, + υποθέτω, εμάς, ενώ, έξι, σχέδιο, άρεσε, καφέ, σκότωσε, χρειαζόμαστε, φίλο, σωστό, προσπαθώ, κάναμε, + κοιτάξτε, μoυ, κου, ποτό, εσάς, έι, έφυγε, ταινία, μοιάζει, κρεβάτι, εχουμε, περιμένει, νέο, μπορούσες, + μάθω, αφήσεις, περιμένετε, χρειάζεσαι, υπήρχε, μισό, δέκα, αφεντικό, περίπου, άλλοι, λόγος, ξέρουν, κάποτε, + βρήκες, καλύτερη, υπέροχο, τζον, δίπλα, σκάσε, θεού, άκουσα, φύγετε, λέξη, παρά, επόμενη, λέτε, περάσει, + πόσα, γίνεις, σώμα, ν, πήρες, τελείωσε, γιο, ρούχα, σκέφτομαι, εσυ, άλλες, γυρίσω, βάλω, μουσική, ραντεβού, + φωτιά, έδωσε, πάτε, φοβάσαι, βρει, δείξω, γίνω, βοηθήσει, τύπο, σειρά, αξίζει, μείνεις, είπαν, άλλον, + κυρίες, λίγη, πέρασε, κάτσε, πήγα, δείτε, μιας, βδομάδα, έρχομαι, προσοχή, εύκολο, ερώτηση, υπέροχα, + σίγουρη, νοσοκομείο, τρελός, ενας, βάλε, πόλεμο, φέρε, δικά, τιμή, κατάλαβες, ταξίδι, οποίο, δουλεύει, θεό, + μικρέ, μάθεις, βρίσκεται, πολλοί, δες, πάρτε, παντού, πρόσωπο, μήνυμα, αδερφή, μιλάει, παλιά, πουθενά, + κράτα, περίπτωση, φως, επάνω, έλεγε, συμφωνία, οπως, ολοι, πρώτος, δεσποινίς, γιατρός, γνωρίζω, σαμ, + σκέφτεσαι, ει, φίλη, σεξ, έκαναν, προβλήματα, κάπως, ό, τελευταίο, ακούσει, τζο, καλώς, επιλογή, + σταματήστε, τόσα, οτιδήποτε, περισσότερα, άδεια, πάρτι, περίμενα, ακούγεται, gmteam, ήξερες, καιρός, + μαλλιά, καλύτερος, κανεις, φρανκ, μέση, συνέχισε, τίποτε, φωτογραφία, κατι, μεγάλος, περιοχή, άσε, καθώς, + είδε, λόγια, μήνα, μαλακίες, όμορφο, δώρο, στόμα, χάλια, εντελώς, μακάρι, τελειώσει, γνώμη, γιατρέ, ξερω, + πλευρά, μέλλον, θάνατο, νιώθεις, έτοιμοι, κομμάτι, μάθει, μιλάμε, ψηλά, αέρα, ερωτήσεις, αυτού, δώσει, + φεύγω, σημείο, τηλεόραση, κυριε, πραγματικότητα, ανάγκη, βοηθήσεις, προσπάθησε, γύρνα, άφησε, λίγα, κάντε, + είvαι, βλέπετε, αυτη, δείπνο, επιτέλους, κέντρο, περίεργο, ακούστε, πλοίο, κάποιες, δικός, σoυ, οικογένειά, + μιλήσει, πλέον, υπόσχομαι, περιμένεις, ήξερε, σκοτώσεις, ενταξει, δώσεις, εκει, ήμασταν, έρχονται, κώλο, + ρωτήσω, παίρνει, σιγά, σήκω, στοιχεία, αδελφή, βασικά, μένει, άκρη, πηγαίνετε, παίρνεις, tο, περιμένουμε, + συγχωρείς, μικρός, πόδι, δίνει, εκατομμύρια, ξενοδοχείο, αποστολή, ενδιαφέρον, χάρηκα, αεροπλάνο, γάμο, + χιλιάδες, υόρκη, οκ, ευχαριστούμε, καλα, κοιτάς, σα, π, χρόνος, ησυχία, ασφάλεια, εκείνος, a, βρήκε, + τέσσερα, βγάλω, μπες, συχνά, ημέρα, μάνα, εν, αγαπάς, άνθρωπο, γραμμή, φωτογραφίες, προσέχεις, ύπνο, + μυστικό, σχετικά, είδους, σκέψου, χριστούγεννα, κόσμου, τομ, μισώ, σύστημα, δουλειές, τελείως, πεθάνω, + αλλάξει, δεξιά, συνήθως, δουλεύω, μάικλ, εβδομάδα, νούμερο, λείπει, έτοιμη, τμήμα, βγει, ψυχή, έπεσε, + κάθαρμα, ματιά, οποία, πληροφορίες, μονο, κρίμα, τραγούδι, μαγαζί, δουλεύεις, μαζι, τέλειο, κύριο, + λέγεται, τσάρλι, πεθάνεις, σκεφτόμουν, καλησπέρα, συγχαρητήρια, φωνή, εκ, άτομο, παίζεις, σκάφος, + φαίνεσαι, ξαφνικά, παραπάνω, ατύχημα, θελω, ξέχνα, ήρθατε, εναντίον, τραπέζι, γράμμα, μείνετε, αμερική, + βασιλιάς, υπό, μπάνιο, ποτε, ίδιος, προφανώς, μαλάκα, αδερφός, άνδρες, nαι, χρονών, ναί, κλειδί, δις, + γιαγιά, παράξενο, πτώμα, βρήκαμε, μιλήσεις, υποτίθεται, ορκίζομαι, δυνατά, ποιό, θάλασσα, παίρνω, άκουσες, + παρέα, αριστερά, έμαθα, μάχη, μηχανή, σάρα, ζωντανός, όνειρο, παλιό, μπορούσαμε, πάντως, ανάμεσα, έχασα, + νωρίς, κάποιοι, άκου, παίζει, φτάνει, δίνω, βγες, υπέροχη, νόημα, έλεγχο, μέτρα, ξερεις, ζει, δείχνει, βρες, τού """ # Source: https://www.101languages.net/russian/most-common-russian-words/ alias words_ru = """ -я, не, что, в, и, ты, это, на, с, он, вы, как, мы, да, а, мне, меня, у, нет, так, но, то, все, тебя, его, -за, о, она, тебе, если, они, бы, же, ну, здесь, к, из, есть, чтобы, для, хорошо, когда, вас, только, по, -вот, просто, был, знаю, нас, всё, было, от, может, кто, вам, очень, их, там, будет, уже, почему, еще, -быть, где, спасибо, ничего, сейчас, или, могу, хочу, нам, чем, мой, до, надо, этого, ее, теперь, давай, -знаешь, нужно, больше, этом, нибудь, раз, со, была, этот, ему, ладно, эй, время, тоже, даже, хочешь, -сказал, ли, себя, думаю, пока, должен, потому, никогда, ни, тут, ещё, её, пожалуйста, сюда, привет, -тогда, конечно, моя, него, сегодня, один, тобой, правда, лучше, об, были, того, можно, мной, всегда, -сказать, день, сэр, без, можешь, чего, эти, дело, значит, лет, много, во, делать, буду, порядке, должны, -такой, ведь, ним, всего, сделать, хотел, твой, жизнь, ей, мистер, потом, через, себе, них, всех, такое, -им, куда, том, мама, после, человек, люди, слишком, иди, зачем, этим, немного, сколько, этой, знаете, -боже, ней, эту, который, отец, свою, деньги, два, под, твоя, мои, никто, моей, думаешь, друг, жизни, -эта, назад, видел, кажется, точно, вместе, люблю, мог, случилось, сам, нравится, черт, какой, людей, -папа, домой, тот, скажи, которые, должна, три, всем, сделал, возможно, прошу, будем, дома, парень, -снова, говорит, место, отсюда, можем, будешь, пошли, делаешь, совсем, говорил, понимаю, завтра, хочет, -простите, разве, давайте, хотите, отлично, сказала, туда, прямо, времени, вами, лишь, своей, хватит, -думал, можете, дом, дела, знать, дай, понял, помочь, говорить, слушай, свои, поэтому, прости, знает, -именно, знал, тем, кого, смотри, каждый, ваш, похоже, найти, моего, наш, мать, одна, имя, про, говорю, -будут, оно, свой, нельзя, извините, стоит, действительно, зовут, поговорить, доктор, перед, несколько, -нужен, происходит, ко, господи, возьми, мою, тех, нами, вижу, должно, наверное, откуда, понимаешь, верно, -скоро, уж, деле, твои, пусть, всю, хотела, при, более, ребята, нее, быстро, подожди, идти, надеюсь, чём, -работу, видеть, такая, этих, уверен, нужна, года, раньше, такие, руки, видишь, какая, посмотри, сын, -самом, ваша, послушай, равно, наши, другой, ага, мир, извини, минут, против, твоей, пор, жить, ж, жаль, -вообще, могли, хотя, человека, пора, ради, говорят, почти, твою, могут, над, весь, первый, чёрт, слышал, -собой, брат, вещи, дня, скажу, говоришь, нормально, своего, мое, ваше, итак, будь, ночь, хоть, ясно, -плохо, дверь, вопрос, господин, давно, денег, ваши, ка, мисс, одну, глаза, пять, будто, между, пойду, -опять, работа, самое, иногда, детей, этому, рад, здорово, бог, одного, ночи, готов, номер, которая, -машину, любовь, дорогая, виду, одно, прекрасно, вон, своих, быстрее, отца, женщина, достаточно, рядом, -убить, таким, пойдем, смерти, дети, такого, правильно, месте, никаких, сказали, здравствуйте, пару, две, -видела, долго, хороший, ах, кроме, алло, нашей, прав, вчера, вечером, жена, миссис, чтоб, друга, нужны, -кем, какие, те, увидеть, утро, смогу, неё, сама, моему, большой, сразу, работать, сердце, стал, своим, -сначала, могла, вроде, ними, говори, голову, дальше, помнишь, либо, ума, одной, вечер, случае, взять, -проблемы, помощь, добрый, год, думала, делает, скорее, слова, капитан, последний, важно, дней, помню, -ночью, утром, моих, произошло, которую, боюсь, также, вашей, ой, стой, твоего, никого, дорогой, убил, -насчет, друзья, самый, проблема, видели, вперед, дерьмо, понятно, чувствую, наша, будете, тому, имею, -вернуться, придется, пришел, спать, стать, столько, говорила, пойти, иначе, работает, девушка, час, -момент, моим, умер, думаете, доброе, слово, новый, часов, мире, знаем, твое, мальчик, однажды, интересно, -конец, играть, a, заткнись, сделали, посмотреть, идет, узнать, свое, права, хорошая, город, джон, -долларов, парни, идем, говорите, уйти, понять, знала, поздно, нашли, работы, скажите, сделаю, увидимся, -какого, другие, идея, пошел, доме, дочь, имеет, приятно, лицо, наших, обо, понимаете, руку, часть, -смотрите, вся, собираюсь, четыре, прежде, хотят, скажешь, чувак, дайте, сделала, кофе, джек, верю, -ждать, затем, большое, сами, неужели, моё, любит, мужчина, дать, господа, таких, осталось, которой, -далеко, вернусь, сильно, ох, сможешь, кому, вашего, посмотрим, машина, подождите, свет, чуть, серьезно, -пришли, оружие, решил, смысле, видите, тихо, нашел, свидания, путь, той, совершенно, следующий, которого, -места, парня, вдруг, пути, мадам, какое, шанс, сестра, нашего, ужасно, минуту, вокруг, другом, иду, -других, хотели, нем, смерть, подумал, фильм, оставь, делаете, уверена, кровь, говорили, внимание, -помогите, идите, держи, получить, оба, взял, спокойно, обычно, мало, забыл, странно, смотреть, поехали, -дал, часа, прекрати, посмотрите, готовы, вернулся, поверить, позже, милая, женщины, любишь, довольно, -обратно, остаться, думать, та, стороны, полиция, тело, тысяч, делал, машины, угодно, муж, году, неплохо, -бога, некоторые, конце, милый, the, рождения, трудно, добро, любви, больно, невозможно, спокойной, -слышишь, типа, получил, которое, приятель, хуже, никому, честь, успокойся, вашу, маленький, выглядит, -чарли, сына, неделю, i, девочка, делаю, шесть, ноги, история, рассказать, послушайте, часто, кстати, -двух, забудь, которых, следует, знают, пришла, семья, станет, матери, ребенок, план, проблем, например, -сделай, воды, немедленно, мира, сэм, телефон, перестань, правду, второй, прощения, ту, наше, уходи, твоих, -помоги, пол, внутри, нему, смог, десять, нашу, около, бывает, самого, большая, леди, сможем, вниз, легко, -делай, единственный, рада, меньше, волнуйся, хотим, полагаю, мам, иметь, своими, мере, наконец, начала, -минутку, работе, пожаловать, другого, двое, никакого, честно, школе, лучший, умереть, дам, насколько, -всей, малыш, оставить, безопасности, ненавижу, школу, осторожно, сынок, джо, таки, пытался, другое, б, -клянусь, машине, недели, стало, истории, пришлось, выглядишь, чему, сможет, купить, слышала, знали, -настоящий, сих, выйти, людям, замечательно, полиции, огонь, пойдём, спросить, дядя, детка, среди, особенно, -твоим, комнате, шоу, выпить, постоянно, делают, позвольте, родители, письмо, городе, случай, месяцев, мужик, -благодарю, o, ребенка, смешно, ответ, города, образом, любой, полностью, увидел, еду, имени, вместо, -абсолютно, обязательно, улице, твоё, убили, ваших, ехать, крови, решение, вина, поможет, своё, секунду, -обещаю, начать, голос, вещь, друзей, показать, нечего, э, месяц, подарок, приехал, самая, молодец, сделаем, -крайней, женщин, собираешься, конца, страшно, новости, идиот, потерял, спасти, вернуть, узнал, слушайте, -хотелось, сон, поняла, прошло, комнату, семь, погоди, главное, рано, корабль, пытаюсь, игра, умерла, -повезло, всему, возьму, таком, моем, глаз, настолько, идём, удачи, готова, семьи, садись, гарри, держись, -звучит, мило, война, человеком, право, такую, вопросы, представить, работаю, имеешь, красивая, идёт, никакой, -профессор, думает, войны, стала, стали, оттуда, известно, слышу, начал, подумать, позвонить, старый, придётся, -историю, вести, твоему, последнее, хочется, миллионов, нашла, способ, отношения, земле, фрэнк, получится, -говоря, связи, многие, пошёл, пистолет, убью, руках, получилось, президент, остановить, тьi, оставил, одним, -you, утра, боль, хорошие, пришёл, открой, брось, вставай, находится, поговорим, кино, людьми, полицию, покажу, +я, не, что, в, и, ты, это, на, с, он, вы, как, мы, да, а, мне, меня, у, нет, так, но, то, все, тебя, его, +за, о, она, тебе, если, они, бы, же, ну, здесь, к, из, есть, чтобы, для, хорошо, когда, вас, только, по, +вот, просто, был, знаю, нас, всё, было, от, может, кто, вам, очень, их, там, будет, уже, почему, еще, +быть, где, спасибо, ничего, сейчас, или, могу, хочу, нам, чем, мой, до, надо, этого, ее, теперь, давай, +знаешь, нужно, больше, этом, нибудь, раз, со, была, этот, ему, ладно, эй, время, тоже, даже, хочешь, +сказал, ли, себя, думаю, пока, должен, потому, никогда, ни, тут, ещё, её, пожалуйста, сюда, привет, +тогда, конечно, моя, него, сегодня, один, тобой, правда, лучше, об, были, того, можно, мной, всегда, +сказать, день, сэр, без, можешь, чего, эти, дело, значит, лет, много, во, делать, буду, порядке, должны, +такой, ведь, ним, всего, сделать, хотел, твой, жизнь, ей, мистер, потом, через, себе, них, всех, такое, +им, куда, том, мама, после, человек, люди, слишком, иди, зачем, этим, немного, сколько, этой, знаете, +боже, ней, эту, который, отец, свою, деньги, два, под, твоя, мои, никто, моей, думаешь, друг, жизни, +эта, назад, видел, кажется, точно, вместе, люблю, мог, случилось, сам, нравится, черт, какой, людей, +папа, домой, тот, скажи, которые, должна, три, всем, сделал, возможно, прошу, будем, дома, парень, +снова, говорит, место, отсюда, можем, будешь, пошли, делаешь, совсем, говорил, понимаю, завтра, хочет, +простите, разве, давайте, хотите, отлично, сказала, туда, прямо, времени, вами, лишь, своей, хватит, +думал, можете, дом, дела, знать, дай, понял, помочь, говорить, слушай, свои, поэтому, прости, знает, +именно, знал, тем, кого, смотри, каждый, ваш, похоже, найти, моего, наш, мать, одна, имя, про, говорю, +будут, оно, свой, нельзя, извините, стоит, действительно, зовут, поговорить, доктор, перед, несколько, +нужен, происходит, ко, господи, возьми, мою, тех, нами, вижу, должно, наверное, откуда, понимаешь, верно, +скоро, уж, деле, твои, пусть, всю, хотела, при, более, ребята, нее, быстро, подожди, идти, надеюсь, чём, +работу, видеть, такая, этих, уверен, нужна, года, раньше, такие, руки, видишь, какая, посмотри, сын, +самом, ваша, послушай, равно, наши, другой, ага, мир, извини, минут, против, твоей, пор, жить, ж, жаль, +вообще, могли, хотя, человека, пора, ради, говорят, почти, твою, могут, над, весь, первый, чёрт, слышал, +собой, брат, вещи, дня, скажу, говоришь, нормально, своего, мое, ваше, итак, будь, ночь, хоть, ясно, +плохо, дверь, вопрос, господин, давно, денег, ваши, ка, мисс, одну, глаза, пять, будто, между, пойду, +опять, работа, самое, иногда, детей, этому, рад, здорово, бог, одного, ночи, готов, номер, которая, +машину, любовь, дорогая, виду, одно, прекрасно, вон, своих, быстрее, отца, женщина, достаточно, рядом, +убить, таким, пойдем, смерти, дети, такого, правильно, месте, никаких, сказали, здравствуйте, пару, две, +видела, долго, хороший, ах, кроме, алло, нашей, прав, вчера, вечером, жена, миссис, чтоб, друга, нужны, +кем, какие, те, увидеть, утро, смогу, неё, сама, моему, большой, сразу, работать, сердце, стал, своим, +сначала, могла, вроде, ними, говори, голову, дальше, помнишь, либо, ума, одной, вечер, случае, взять, +проблемы, помощь, добрый, год, думала, делает, скорее, слова, капитан, последний, важно, дней, помню, +ночью, утром, моих, произошло, которую, боюсь, также, вашей, ой, стой, твоего, никого, дорогой, убил, +насчет, друзья, самый, проблема, видели, вперед, дерьмо, понятно, чувствую, наша, будете, тому, имею, +вернуться, придется, пришел, спать, стать, столько, говорила, пойти, иначе, работает, девушка, час, +момент, моим, умер, думаете, доброе, слово, новый, часов, мире, знаем, твое, мальчик, однажды, интересно, +конец, играть, a, заткнись, сделали, посмотреть, идет, узнать, свое, права, хорошая, город, джон, +долларов, парни, идем, говорите, уйти, понять, знала, поздно, нашли, работы, скажите, сделаю, увидимся, +какого, другие, идея, пошел, доме, дочь, имеет, приятно, лицо, наших, обо, понимаете, руку, часть, +смотрите, вся, собираюсь, четыре, прежде, хотят, скажешь, чувак, дайте, сделала, кофе, джек, верю, +ждать, затем, большое, сами, неужели, моё, любит, мужчина, дать, господа, таких, осталось, которой, +далеко, вернусь, сильно, ох, сможешь, кому, вашего, посмотрим, машина, подождите, свет, чуть, серьезно, +пришли, оружие, решил, смысле, видите, тихо, нашел, свидания, путь, той, совершенно, следующий, которого, +места, парня, вдруг, пути, мадам, какое, шанс, сестра, нашего, ужасно, минуту, вокруг, другом, иду, +других, хотели, нем, смерть, подумал, фильм, оставь, делаете, уверена, кровь, говорили, внимание, +помогите, идите, держи, получить, оба, взял, спокойно, обычно, мало, забыл, странно, смотреть, поехали, +дал, часа, прекрати, посмотрите, готовы, вернулся, поверить, позже, милая, женщины, любишь, довольно, +обратно, остаться, думать, та, стороны, полиция, тело, тысяч, делал, машины, угодно, муж, году, неплохо, +бога, некоторые, конце, милый, the, рождения, трудно, добро, любви, больно, невозможно, спокойной, +слышишь, типа, получил, которое, приятель, хуже, никому, честь, успокойся, вашу, маленький, выглядит, +чарли, сына, неделю, i, девочка, делаю, шесть, ноги, история, рассказать, послушайте, часто, кстати, +двух, забудь, которых, следует, знают, пришла, семья, станет, матери, ребенок, план, проблем, например, +сделай, воды, немедленно, мира, сэм, телефон, перестань, правду, второй, прощения, ту, наше, уходи, твоих, +помоги, пол, внутри, нему, смог, десять, нашу, около, бывает, самого, большая, леди, сможем, вниз, легко, +делай, единственный, рада, меньше, волнуйся, хотим, полагаю, мам, иметь, своими, мере, наконец, начала, +минутку, работе, пожаловать, другого, двое, никакого, честно, школе, лучший, умереть, дам, насколько, +всей, малыш, оставить, безопасности, ненавижу, школу, осторожно, сынок, джо, таки, пытался, другое, б, +клянусь, машине, недели, стало, истории, пришлось, выглядишь, чему, сможет, купить, слышала, знали, +настоящий, сих, выйти, людям, замечательно, полиции, огонь, пойдём, спросить, дядя, детка, среди, особенно, +твоим, комнате, шоу, выпить, постоянно, делают, позвольте, родители, письмо, городе, случай, месяцев, мужик, +благодарю, o, ребенка, смешно, ответ, города, образом, любой, полностью, увидел, еду, имени, вместо, +абсолютно, обязательно, улице, твоё, убили, ваших, ехать, крови, решение, вина, поможет, своё, секунду, +обещаю, начать, голос, вещь, друзей, показать, нечего, э, месяц, подарок, приехал, самая, молодец, сделаем, +крайней, женщин, собираешься, конца, страшно, новости, идиот, потерял, спасти, вернуть, узнал, слушайте, +хотелось, сон, поняла, прошло, комнату, семь, погоди, главное, рано, корабль, пытаюсь, игра, умерла, +повезло, всему, возьму, таком, моем, глаз, настолько, идём, удачи, готова, семьи, садись, гарри, держись, +звучит, мило, война, человеком, право, такую, вопросы, представить, работаю, имеешь, красивая, идёт, никакой, +профессор, думает, войны, стала, стали, оттуда, известно, слышу, начал, подумать, позвонить, старый, придётся, +историю, вести, твоему, последнее, хочется, миллионов, нашла, способ, отношения, земле, фрэнк, получится, +говоря, связи, многие, пошёл, пистолет, убью, руках, получилось, президент, остановить, тьi, оставил, одним, +you, утра, боль, хорошие, пришёл, открой, брось, вставай, находится, поговорим, кино, людьми, полицию, покажу, волосы, последние, брата, месяца """ @@ -595,9 +595,9 @@ fn gen_word_pairs[words: String = words_en]() -> List[String]: return result -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmarks -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_small_keys[s: String](mut b: Bencher) raises: var words = gen_word_pairs[s]() @@ -648,9 +648,9 @@ fn bench_long_key_new_hash_function[s: String](mut b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): var m = Bench(BenchConfig(num_repetitions=1)) m.bench_function[bench_small_keys[words_ar]](BenchId("bench_small_keys_ar")) diff --git a/stdlib/benchmarks/math/bench_math.mojo b/stdlib/benchmarks/math/bench_math.mojo index b7d4c1ae43..3e17eaf282 100644 --- a/stdlib/benchmarks/math/bench_math.mojo +++ b/stdlib/benchmarks/math/bench_math.mojo @@ -19,9 +19,9 @@ from random import * from benchmark import Bench, BenchConfig, Bencher, BenchId, Unit, keep, run -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# alias input_type = Float32 @@ -54,9 +54,9 @@ fn make_int_inputs(begin: Int, end: Int, num: Int) -> List[Int]: var inputs = make_inputs(0, 10_000, 1_000_000) var int_inputs = make_int_inputs(0, 10_000_000, 1_000_000) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark math_func -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter @@ -73,9 +73,9 @@ fn bench_math[ b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark fma -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_math3[ math_f3p: fn[type: DType, size: Int] ( @@ -92,9 +92,9 @@ fn bench_math3[ b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark lcm/gcd -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_math2[math_f2p: fn (Int, Int, /) -> Int](mut b: Bencher) raises: @always_inline @@ -107,9 +107,9 @@ fn bench_math2[math_f2p: fn (Int, Int, /) -> Int](mut b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): seed() var m = Bench(BenchConfig(num_repetitions=1)) diff --git a/stdlib/benchmarks/utils/bench_formatter.mojo b/stdlib/benchmarks/utils/bench_formatter.mojo index 818a0a2cff..12896f3c91 100644 --- a/stdlib/benchmarks/utils/bench_formatter.mojo +++ b/stdlib/benchmarks/utils/bench_formatter.mojo @@ -22,14 +22,14 @@ from builtin.dtype import _uint_type_of_width from utils.stringref import _align_down, _memchr, _memmem -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmarks -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_writer_int[n: Int](mut b: Bencher) raises: @always_inline @@ -54,9 +54,9 @@ fn bench_writer_simd[n: Int](mut b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): var m = Bench(BenchConfig(num_repetitions=1)) m.bench_function[bench_writer_int[42]](BenchId("bench_writer_int_42")) diff --git a/stdlib/benchmarks/utils/bench_memmem.mojo b/stdlib/benchmarks/utils/bench_memmem.mojo index 97925b2884..777557784e 100644 --- a/stdlib/benchmarks/utils/bench_memmem.mojo +++ b/stdlib/benchmarks/utils/bench_memmem.mojo @@ -23,9 +23,9 @@ from memory import UnsafePointer, bitcast, memcmp, pack_bits from utils.stringref import _align_down, _memchr, _memmem -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# var haystack = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer sed dictum est, et finibus ipsum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam tincidunt vel lacus vitae pulvinar. Donec ac ligula elementum, mollis purus a, lacinia quam. Maecenas vulputate mauris quis sem euismod sollicitudin. Proin accumsan nulla vel nisl congue varius. Morbi a erat dui. Aliquam maximus interdum orci, vitae pretium lorem bibendum non. Vestibulum eu lacus ullamcorper, egestas dui vel, pharetra ipsum. Pellentesque sagittis, urna a tincidunt sodales, leo sem placerat eros, vitae molestie felis diam at dolor. Donec viverra sem sit amet facilisis laoreet. Morbi semper convallis nisi, vitae congue velit tincidunt vel. Fusce ultrices, libero vel venenatis placerat, justo tellus porttitor massa, at volutpat tortor nunc id dui. Morbi eu ex quis odio porttitor ultricies vel eget massa. Aenean quis luctus nulla. Fusce sit amet leo at quam hendrerit mattis. Morbi sed quam nisl. Quisque purus enim, iaculis sed laoreet vel, pellentesque ut orci. Vivamus risus orci, varius eu pharetra quis, tincidunt non enim. Suspendisse bibendum lacus ex, quis blandit lectus malesuada a. Maecenas iaculis porta lacus, sit amet tristique ante scelerisque non. Proin auctor elit in lacus dictum egestas. Pellentesque tincidunt justo sed vehicula blandit. Pellentesque vehicula facilisis tellus in viverra. @@ -143,9 +143,9 @@ Curabitur auctor volutpat diam vitae vehicula. Vivamus est arcu, efficitur nec i var needle = "school" # a word intentionally not in the test data -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Baseline `_memmem` implementation -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn _memmem_baseline[ type: DType @@ -185,9 +185,9 @@ fn _memmem_baseline[ return UnsafePointer[Scalar[type]]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmarks -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @parameter fn bench_find_baseline(mut b: Bencher) raises: @always_inline @@ -218,9 +218,9 @@ fn bench_find_optimized(mut b: Bencher) raises: b.iter[call_fn]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Benchmark Main -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# def main(): var m = Bench(BenchConfig(num_repetitions=1)) m.bench_function[bench_find_baseline](BenchId("find_baseline")) diff --git a/stdlib/docs/style-guide.md b/stdlib/docs/style-guide.md index dc07d62088..82002c152c 100644 --- a/stdlib/docs/style-guide.md +++ b/stdlib/docs/style-guide.md @@ -111,9 +111,9 @@ structure of header comments separating the various kinds of methods that can be defined on structs. ```mojo -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # MyStruct -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# struct MyStruct(Sized, Stringable): diff --git a/stdlib/src/base64/base64.mojo b/stdlib/src/base64/base64.mojo index d9a3f7f71b..6a9d585fb5 100644 --- a/stdlib/src/base64/base64.mojo +++ b/stdlib/src/base64/base64.mojo @@ -26,9 +26,9 @@ import bit from ._b64encode import b64encode_with_buffers as _b64encode_with_buffers -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -59,9 +59,9 @@ fn _ascii_to_value(char: String) -> Int: return -1 -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # b64encode -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # TODO: Use Span instead of List as input when Span is easier to use @@ -106,9 +106,9 @@ fn b64encode(input_bytes: List[UInt8, _]) -> String: return String(result^) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # b64decode -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -153,9 +153,9 @@ fn b64decode(str: String) -> String: return p -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # b16encode -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn b16encode(str: String) -> String: @@ -190,9 +190,9 @@ fn b16encode(str: String) -> String: return String(out^) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # b16decode -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/bit/bit.mojo b/stdlib/src/bit/bit.mojo index 5405411ab1..74a428d3df 100644 --- a/stdlib/src/bit/bit.mojo +++ b/stdlib/src/bit/bit.mojo @@ -22,9 +22,9 @@ from bit import count_leading_zeros from sys import llvm_intrinsic, sizeof from sys.info import bitwidthof -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # count_leading_zeros -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -66,9 +66,9 @@ fn count_leading_zeros[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # count_trailing_zeros -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -110,9 +110,9 @@ fn count_trailing_zeros[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bit_reverse -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -154,9 +154,9 @@ fn bit_reverse[ ](val) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # byte_swap -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -212,9 +212,9 @@ fn byte_swap[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # pop_count -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -256,9 +256,9 @@ fn pop_count[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bit_not -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -286,9 +286,9 @@ fn bit_not[ return __mlir_op.`pop.simd.xor`(val.value, neg_one.value) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bit_width -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -343,9 +343,9 @@ fn bit_width[ return bitwidth - leading_zero -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # is_power_of_two -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # reference: https://en.cppreference.com/w/cpp/numeric/has_single_bit @@ -391,9 +391,9 @@ fn is_power_of_two[ return (val > 0) & (val & (val - 1) == 0) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bit_ceil -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # reference: https://en.cppreference.com/w/cpp/numeric/bit_ceil @@ -447,9 +447,9 @@ fn bit_ceil[ return (val > 1).select(1 << bit_width(val - ones), ones) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bit_floor -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # reference: https://en.cppreference.com/w/cpp/numeric/bit_floor @@ -500,9 +500,9 @@ fn bit_floor[ return (val > 0).select(1 << (bit_width(val) - 1), zeros) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # rotate_bits_left -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -578,9 +578,9 @@ fn rotate_bits_left[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # rotate_bits_right -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/builtin/_stubs.mojo b/stdlib/src/builtin/_stubs.mojo index c116d52408..3b5a12fdac 100644 --- a/stdlib/src/builtin/_stubs.mojo +++ b/stdlib/src/builtin/_stubs.mojo @@ -13,9 +13,9 @@ from builtin.range import _StridedRangeIterator, _UIntStridedRangeIterator -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # __MLIRType -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @register_passable("trivial") @@ -23,9 +23,9 @@ struct __MLIRType[T: AnyTrivialRegType](Movable, Copyable): var value: T -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # parameter_for -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# trait _IntNext(Copyable): diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index be5ddaaa05..1e44efe5b4 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -17,9 +17,9 @@ These are Mojo built-ins, so you don't need to import them. from memory import Pointer, UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # ListLiteral -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# struct ListLiteral[*Ts: CollectionElement](Sized, CollectionElement): @@ -119,9 +119,9 @@ struct ListLiteral[*Ts: CollectionElement](Sized, CollectionElement): return value in self.storage -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # VariadicList / VariadicListMem -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -469,9 +469,9 @@ struct VariadicListMem[ ](0, self) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # VariadicPack -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# alias _AnyTypeMetaType = __mlir_type[`!lit.anytrait<`, AnyType, `>`] diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index 1d1c37d16f..4ac807acd6 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -511,9 +511,9 @@ struct DType( """ return 8 * self.sizeof() - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # dispatch_integral - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline fn dispatch_integral[ @@ -548,9 +548,9 @@ struct DType( else: raise Error("only integral types are supported") - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # dispatch_floating - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline fn dispatch_floating[ @@ -626,9 +626,9 @@ struct DType( "dispatch_custom: dynamic_type does not match any dtype parameters" ) - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # dispatch_arithmetic - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline fn dispatch_arithmetic[ diff --git a/stdlib/src/builtin/error.mojo b/stdlib/src/builtin/error.mojo index 1d19b5d201..e282d56ba0 100644 --- a/stdlib/src/builtin/error.mojo +++ b/stdlib/src/builtin/error.mojo @@ -23,9 +23,9 @@ from memory.memory import _free from utils import StringRef -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Error -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @register_passable diff --git a/stdlib/src/builtin/float_literal.mojo b/stdlib/src/builtin/float_literal.mojo index 906e8d40dc..6cee98bafa 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/stdlib/src/builtin/float_literal.mojo @@ -17,9 +17,9 @@ These are Mojo built-ins, so you don't need to import them. from math import Ceilable, CeilDivable, Floorable, Truncable -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # FloatLiteral -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value diff --git a/stdlib/src/builtin/format_int.mojo b/stdlib/src/builtin/format_int.mojo index 0239369fbe..0598bb816a 100644 --- a/stdlib/src/builtin/format_int.mojo +++ b/stdlib/src/builtin/format_int.mojo @@ -24,9 +24,9 @@ from utils import StaticString, StringSlice alias _DEFAULT_DIGIT_CHARS = "0123456789abcdefghijklmnopqrstuvwxyz" -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bin -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn bin(num: Scalar, /, *, prefix: StaticString = "0b") -> String: @@ -82,9 +82,9 @@ fn bin[T: Indexer, //](num: T, /, *, prefix: StaticString = "0b") -> String: return bin(Scalar[DType.index](index(num)), prefix=prefix) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # hex -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn hex(value: Scalar, /, *, prefix: StaticString = "0x") -> String: @@ -144,9 +144,9 @@ fn hex(value: Scalar[DType.bool], /, *, prefix: StaticString = "0x") -> String: return hex(value.cast[DType.int8](), prefix=prefix) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # oct -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn oct(value: Scalar, /, *, prefix: StaticString = "0o") -> String: @@ -206,9 +206,9 @@ fn oct(value: Scalar[DType.bool], /, *, prefix: StaticString = "0o") -> String: return oct(value.cast[DType.int8](), prefix=prefix) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Integer formatting utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn _try_format_int( diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 61a74df2dc..2c9a13234b 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -760,9 +760,9 @@ struct Int( """ return __mlir_op.`index.or`(self.value, rhs.value) - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # In place operations. - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn __iadd__(mut self, rhs: Int): @@ -873,9 +873,9 @@ struct Int( """ self = self | rhs - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # Reversed operations - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn __radd__(self, value: Int) -> Int: diff --git a/stdlib/src/builtin/int_literal.mojo b/stdlib/src/builtin/int_literal.mojo index 360ed0e9a6..3d50918458 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/stdlib/src/builtin/int_literal.mojo @@ -373,9 +373,9 @@ struct IntLiteral( ](self.value, rhs.value) ) - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # In place operations. - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn __iadd__(mut self, rhs: Self): @@ -458,9 +458,9 @@ struct IntLiteral( """ self = self | rhs - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # Reversed operations - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn __radd__(self, value: Self) -> Self: @@ -717,9 +717,9 @@ struct IntLiteral( """ return -(self // -denominator) - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # Methods - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn _bit_width(self) -> IntLiteral: diff --git a/stdlib/src/builtin/sort.mojo b/stdlib/src/builtin/sort.mojo index 093cc41914..78447a82fb 100644 --- a/stdlib/src/builtin/sort.mojo +++ b/stdlib/src/builtin/sort.mojo @@ -24,9 +24,9 @@ from memory import UnsafePointer from utils import Span -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # sort -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# alias insertion_sort_threshold = 32 @@ -260,9 +260,9 @@ fn _quicksort[ stack.append(ImmSpan(ptr=ptr, length=pivot)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # stable sort -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn _merge[ @@ -366,9 +366,9 @@ fn _stable_sort[ temp_buff.free() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # partition -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -501,9 +501,9 @@ fn partition[ _partition[_cmp_fn](span, k) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # sort -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Junction from public to private API @@ -686,9 +686,9 @@ fn sort[ sort[_cmp_fn, stable=stable](span) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # sort networks -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 554ddeddfd..3e889e760a 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -26,9 +26,9 @@ from utils._visualizers import lldb_formatter_wrapping_type from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry from utils.string_slice import _StringSliceIter, _to_string_list -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # StringLiteral -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @lldb_formatter_wrapping_type diff --git a/stdlib/src/builtin/tuple.mojo b/stdlib/src/builtin/tuple.mojo index 00bede563f..b18221e3b3 100644 --- a/stdlib/src/builtin/tuple.mojo +++ b/stdlib/src/builtin/tuple.mojo @@ -21,9 +21,9 @@ from memory import UnsafePointer from utils._visualizers import lldb_formatter_wrapping_type -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Tuple -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @lldb_formatter_wrapping_type diff --git a/stdlib/src/builtin/uint.mojo b/stdlib/src/builtin/uint.mojo index dad8ed6167..9c3feb155f 100644 --- a/stdlib/src/builtin/uint.mojo +++ b/stdlib/src/builtin/uint.mojo @@ -398,9 +398,9 @@ struct UInt(IntLike, _HashableWithHasher): """ return __mlir_op.`index.ceildivu`(self.value, denominator.value) - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # In place operations. - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn __iadd__(mut self, rhs: UInt): @@ -511,9 +511,9 @@ struct UInt(IntLike, _HashableWithHasher): """ self = self | rhs - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# # Reversed operations - # ===----------------------------------------------------------------------===# + # ===-------------------------------------------------------------------===# @always_inline("nodebug") fn __radd__(self, value: Self) -> Self: diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index cdaf52332d..c79efe4a30 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -26,9 +26,9 @@ from collections import Optional from bit import bit_ceil from memory import UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Deque -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# struct Deque[ElementType: CollectionElement]( diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index bb8809612d..93064e0220 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -25,9 +25,9 @@ from sys.intrinsics import _type_is_eq from memory import UnsafePointer from memory.maybe_uninitialized import UnsafeMaybeUninitialized -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Array -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn _inline_array_construction_checks[size: Int](): diff --git a/stdlib/src/collections/inline_list.mojo b/stdlib/src/collections/inline_list.mojo index 516be41287..4e2e90349f 100644 --- a/stdlib/src/collections/inline_list.mojo +++ b/stdlib/src/collections/inline_list.mojo @@ -24,9 +24,9 @@ from sys.intrinsics import _type_is_eq from memory.maybe_uninitialized import UnsafeMaybeUninitialized -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # InlineList -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value struct _InlineListIter[ list_mutability: Bool, //, diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 19b477a47e..b470023659 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -30,9 +30,9 @@ from utils import Span from .optional import Optional -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # List -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value diff --git a/stdlib/src/collections/optional.mojo b/stdlib/src/collections/optional.mojo index 95c78a9706..73518b55a5 100644 --- a/stdlib/src/collections/optional.mojo +++ b/stdlib/src/collections/optional.mojo @@ -43,9 +43,9 @@ struct _NoneType(CollectionElement, CollectionElementNew): pass -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Optional -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -383,9 +383,9 @@ struct Optional[T: CollectionElement]( return default -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # OptionalReg -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @register_passable("trivial") diff --git a/stdlib/src/collections/vector.mojo b/stdlib/src/collections/vector.mojo index 1c9385c528..62196e6a15 100644 --- a/stdlib/src/collections/vector.mojo +++ b/stdlib/src/collections/vector.mojo @@ -25,9 +25,9 @@ from memory import Pointer, UnsafePointer, memcpy from utils import StaticTuple -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # _VecIter -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -54,9 +54,9 @@ struct _VecIter[ return self.size - self.i -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # InlinedFixedVector -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/math/polynomial.mojo b/stdlib/src/math/polynomial.mojo index 8397218380..35384d33c1 100644 --- a/stdlib/src/math/polynomial.mojo +++ b/stdlib/src/math/polynomial.mojo @@ -21,9 +21,9 @@ from math.polynomial import polynomial_evaluate from collections import List -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # polynomial_evaluate -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -49,9 +49,9 @@ fn polynomial_evaluate[ return _horner_evaluate[coefficients](x) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Horner Method -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/memory/memory.mojo b/stdlib/src/memory/memory.mojo index 1cbf5c43d3..8d3a525cb4 100644 --- a/stdlib/src/memory/memory.mojo +++ b/stdlib/src/memory/memory.mojo @@ -44,9 +44,9 @@ fn _align_down(value: Int, alignment: Int) -> Int: return value._positive_div(alignment) * alignment -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # memcmp -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -146,9 +146,9 @@ fn memcmp[ return _memcmp_impl(s1.bitcast[Byte](), s2.bitcast[Byte](), byte_count) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # memcpy -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -259,9 +259,9 @@ fn memcpy[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # memset -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -304,9 +304,9 @@ fn memset[ _memset_impl(ptr.bitcast[Byte](), value, count * sizeof[type]()) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # memset_zero -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -356,9 +356,9 @@ fn memset_zero[ ptr.store(i, 0) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # stack_allocation -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -447,9 +447,9 @@ fn stack_allocation[ ]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # malloc -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -475,9 +475,9 @@ fn _malloc[ ](alignment.value, size.value) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # aligned_free -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index 4fa37a6e61..db7b78bc18 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -20,9 +20,9 @@ from memory import Pointer """ -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # AddressSpace -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -290,9 +290,9 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): writer.write("AddressSpace(", self.value(), ")") -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Pointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value diff --git a/stdlib/src/memory/unsafe.mojo b/stdlib/src/memory/unsafe.mojo index 82e995de53..450c18d199 100644 --- a/stdlib/src/memory/unsafe.mojo +++ b/stdlib/src/memory/unsafe.mojo @@ -21,9 +21,9 @@ from memory import bitcast from sys import bitwidthof -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # bitcast -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") diff --git a/stdlib/src/os/atomic.mojo b/stdlib/src/os/atomic.mojo index e2b8f1c65e..5eaac49644 100644 --- a/stdlib/src/os/atomic.mojo +++ b/stdlib/src/os/atomic.mojo @@ -284,9 +284,9 @@ struct Atomic[type: DType, *, scope: StringLiteral = ""]: Self.min(UnsafePointer.address_of(self.value), rhs) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/sys/_assembly.mojo b/stdlib/src/sys/_assembly.mojo index 6cb2123393..2074afde29 100644 --- a/stdlib/src/sys/_assembly.mojo +++ b/stdlib/src/sys/_assembly.mojo @@ -14,9 +14,9 @@ from sys.intrinsics import _mlirtype_is_eq -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # 0-arg -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") diff --git a/stdlib/src/sys/_libc.mojo b/stdlib/src/sys/_libc.mojo index 6751a60e62..ca0104d19c 100644 --- a/stdlib/src/sys/_libc.mojo +++ b/stdlib/src/sys/_libc.mojo @@ -22,9 +22,9 @@ from sys.ffi import OpaquePointer, c_char, c_int from memory import UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # stdlib.h — core C standard library operations -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -37,9 +37,9 @@ fn exit(status: c_int): external_call["exit", NoneType](status) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # stdio.h — input/output operations -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# alias FILE_ptr = OpaquePointer @@ -74,9 +74,9 @@ fn pclose(stream: FILE_ptr) -> c_int: return external_call["pclose", c_int](stream) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unistd.h -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -86,9 +86,9 @@ fn dup(oldfd: c_int) -> c_int: return external_call[name, c_int](oldfd) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # dlfcn.h — dynamic library operations -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/sys/ffi.mojo b/stdlib/src/sys/ffi.mojo index 6d65ab7447..2d6926568d 100644 --- a/stdlib/src/sys/ffi.mojo +++ b/stdlib/src/sys/ffi.mojo @@ -404,9 +404,9 @@ fn _get_dylib_function[ return new_func -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Globals -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# struct _Global[ @@ -462,9 +462,9 @@ fn _get_global_or_null[name: StringLiteral]() -> OpaquePointer: ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # external_call -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -502,9 +502,9 @@ fn external_call[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # _external_call_const -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") diff --git a/stdlib/src/sys/info.mojo b/stdlib/src/sys/info.mojo index 2fe91f3b99..ccd39c7ee2 100644 --- a/stdlib/src/sys/info.mojo +++ b/stdlib/src/sys/info.mojo @@ -864,9 +864,9 @@ fn _macos_version() raises -> Tuple[Int, Int, Int]: return (major, minor, patch) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Detect GPU on host side -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") diff --git a/stdlib/src/sys/intrinsics.mojo b/stdlib/src/sys/intrinsics.mojo index dbc833dcc8..3eb81a505a 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/stdlib/src/sys/intrinsics.mojo @@ -26,9 +26,9 @@ from memory import AddressSpace, UnsafePointer from ._assembly import inlined_assembly from .info import is_nvidia_gpu, sizeof -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # llvm_intrinsic -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -90,9 +90,9 @@ fn llvm_intrinsic[ ](loaded_pack) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # _gather -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # NOTE: Converting from a scalar to a pointer is unsafe! The resulting pointer @@ -176,9 +176,9 @@ fn gather[ return result -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # _scatter -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -254,9 +254,9 @@ fn scatter[ _ = base -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # prefetch -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @register_passable("trivial") @@ -500,9 +500,9 @@ fn prefetch[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # masked load -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -546,9 +546,9 @@ fn masked_load[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # masked store -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -588,9 +588,9 @@ fn masked_store[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # compressed store -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -628,9 +628,9 @@ fn compressed_store[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # strided load -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") @@ -668,9 +668,9 @@ fn strided_load[ return gather(offset, mask, passthrough) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # strided store -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline("nodebug") diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index 71eb1e80c2..853c6d2d56 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -34,9 +34,9 @@ from sys._assembly import inlined_assembly from memory import UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Enums used in time.h 's glibc alias _CLOCK_REALTIME = 0 @@ -169,9 +169,9 @@ fn _thread_cputime_nanoseconds() -> Int: return _gettime_as_nsec_unix(_CLOCK_THREAD_CPUTIME_ID) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # perf_counter -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -188,9 +188,9 @@ fn perf_counter() -> Float64: return Float64(_monotonic_nanoseconds()) / _NSEC_PER_SEC -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # perf_counter_ns -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -215,9 +215,9 @@ fn perf_counter_ns() -> Int: return _monotonic_nanoseconds() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # now -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -235,9 +235,9 @@ fn now() -> Int: return perf_counter_ns() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # monotonic -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -254,9 +254,9 @@ fn monotonic() -> Int: return perf_counter_ns() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # time_function -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -336,9 +336,9 @@ fn time_function[func: fn () capturing [_] -> None]() -> Int: return abort[Int](err) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # sleep -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn sleep(sec: Float64): diff --git a/stdlib/src/utils/format.mojo b/stdlib/src/utils/format.mojo index af4bbc8d7c..5c1dc2cf8b 100644 --- a/stdlib/src/utils/format.mojo +++ b/stdlib/src/utils/format.mojo @@ -22,9 +22,9 @@ from utils.string_slice import Stringlike # people who want to write their own templating engines. This is not yet done # because the implementation is incomplete and we are missing crucial features. -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Formatter -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # NOTE(#3765): an interesting idea would be to allow custom start and end @@ -417,9 +417,9 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): auto_idx += 1 -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Format Specification -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# trait _CurlyEntryFormattable(Stringable, Representable): @@ -714,6 +714,6 @@ struct _FormatSpec: res += str(item) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utils -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index 0ea645ee88..b526aa84ff 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -29,9 +29,9 @@ from builtin.io import _get_dtype_printf_format, _snprintf from . import unroll from .static_tuple import StaticTuple -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -48,10 +48,10 @@ fn _reduce_and_fn(a: Bool, b: Bool) -> Bool: return a and b -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Integer and Bool Tuple Utilities: # Utilities to operate on tuples of integers or tuples of bools. -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -147,9 +147,9 @@ fn _bool_tuple_reduce[ return c -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # IndexList: -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn _type_of_width[bitwidth: Int, unsigned: Bool]() -> DType: @@ -828,9 +828,9 @@ struct IndexList[ ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Factory functions for creating index. -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn Index[ T0: Intable, //, @@ -1029,9 +1029,9 @@ fn Index[ return __type_of(result)(int(x), int(y), int(z), int(w), int(v)) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utils -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/utils/inline_string.mojo b/stdlib/src/utils/inline_string.mojo index cf8caafc31..add0e6c7cc 100644 --- a/stdlib/src/utils/inline_string.mojo +++ b/stdlib/src/utils/inline_string.mojo @@ -23,9 +23,9 @@ from memory import UnsafePointer, memcpy from utils import StringSlice, Variant -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # InlineString -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -296,9 +296,9 @@ struct InlineString(Sized, Stringable, CollectionElement, CollectionElementNew): ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # __FixedString -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value diff --git a/stdlib/src/utils/lock.mojo b/stdlib/src/utils/lock.mojo index 3916cd92cc..6459952b4e 100644 --- a/stdlib/src/utils/lock.mojo +++ b/stdlib/src/utils/lock.mojo @@ -18,9 +18,9 @@ from time import sleep from memory import UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # SpinWaiter -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# struct SpinWaiter: diff --git a/stdlib/src/utils/loop.mojo b/stdlib/src/utils/loop.mojo index c0a6aa3f5e..1d61112379 100644 --- a/stdlib/src/utils/loop.mojo +++ b/stdlib/src/utils/loop.mojo @@ -23,9 +23,9 @@ from utils import unroll """ -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unroll -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -51,9 +51,9 @@ fn unroll[ func[i, j]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unroll -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -84,9 +84,9 @@ fn unroll[ func[i, j, k]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unroll _ZeroStartingRange -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -125,9 +125,9 @@ fn unroll[ func[i]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unroll _SequentialRange -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn unroll[ func: fn[idx: Int] () capturing [_] -> None, @@ -164,9 +164,9 @@ fn unroll[ func[i]() -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # unroll _StridedRange -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline fn unroll[ func: fn[idx: Int] () capturing [_] -> None, diff --git a/stdlib/src/utils/static_tuple.mojo b/stdlib/src/utils/static_tuple.mojo index 7a907b7ed0..6904888e65 100644 --- a/stdlib/src/utils/static_tuple.mojo +++ b/stdlib/src/utils/static_tuple.mojo @@ -21,9 +21,9 @@ from utils import StaticTuple from memory import UnsafePointer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline @@ -93,9 +93,9 @@ fn _create_array[ return array -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # StaticTuple -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn _static_tuple_construction_checks[size: Int](): diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 666a25c45c..34a33eb3e6 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -1010,9 +1010,9 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable].type,]( return output^ -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utils -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# trait Stringlike: diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index e2a0303100..eaf6a285e3 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -35,9 +35,9 @@ fn _align_down(value: Int, alignment: Int) -> Int: return value._positive_div(alignment) * alignment -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # StringRef -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @value @@ -691,9 +691,9 @@ struct StringRef( ) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utilities -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# @always_inline diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index 2d9351036f..4d53f23afd 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -20,7 +20,7 @@ from memory import UnsafePointer, memcpy from utils import Span, StaticString -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# trait Writer: @@ -119,9 +119,9 @@ trait Writer: # To only have to implement `write_bytes` to make a type a valid Writer -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Writable -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# trait Writable: @@ -157,9 +157,9 @@ trait Writable: ... -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Utils -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn write_args[ diff --git a/stdlib/test/collections/test_deque.mojo b/stdlib/test/collections/test_deque.mojo index 84b759eb91..fd2db54440 100644 --- a/stdlib/test/collections/test_deque.mojo +++ b/stdlib/test/collections/test_deque.mojo @@ -16,9 +16,9 @@ from collections import Deque from testing import assert_equal, assert_false, assert_raises, assert_true -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # Implementation tests -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn test_impl_init_default() raises: @@ -666,9 +666,9 @@ fn test_impl_imul() raises: assert_equal((q._data + 0)[], 3) -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# # API Interface tests -# ===----------------------------------------------------------------------===# +# ===-----------------------------------------------------------------------===# fn test_init_variadic_list() raises: From fcb15eac9353bd0e7ce8cea78f8a8302a5a6348c Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Tue, 3 Dec 2024 02:00:57 -0800 Subject: [PATCH 072/119] [Stdlib] Extend StringLiteral import support to work on Stringable MODULAR_ORIG_COMMIT_REV_ID: b4843f75d8d57376b45716189e89a2f0c41b1315 --- docs/changelog.md | 4 +-- stdlib/src/builtin/constrained.mojo | 2 +- stdlib/src/builtin/string_literal.mojo | 27 +++++++++++--------- stdlib/test/builtin/test_string_literal.mojo | 10 ++++++++ stdlib/test/utils/test_string_slice.mojo | 2 +- 5 files changed, 29 insertions(+), 16 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 640824629c..664fe17057 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -288,9 +288,9 @@ what we publish. memory allocation and performance. These options allow for optimized memory usage and reduced buffer reallocations, providing flexibility based on application requirements. -- A new `StringLiteral.from_string[someString]()` method is available. It +- A new `StringLiteral.get[some_stringable]()` method is available. It allows forming a runtime-constant StringLiteral from a compile-time-dynamic - `String` value. + `Stringable` value. ### 🦋 Changed diff --git a/stdlib/src/builtin/constrained.mojo b/stdlib/src/builtin/constrained.mojo index 09d934ff1c..b50ca11e71 100644 --- a/stdlib/src/builtin/constrained.mojo +++ b/stdlib/src/builtin/constrained.mojo @@ -88,4 +88,4 @@ fn constrained[cond: Bool, msg: String](): "at least two cores are required" ]() """ - constrained[cond, StringLiteral.from_string[msg]()]() + constrained[cond, StringLiteral.get[msg]()]() diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 3e889e760a..dc7d05d49a 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -89,7 +89,7 @@ struct StringLiteral( # for now. @always_inline("nodebug") @staticmethod - fn from_string[value: String]() -> StringLiteral: + fn _from_string[value: String]() -> StringLiteral: """Form a string literal from an arbitrary compile-time String value. Parameters: @@ -106,6 +106,20 @@ struct StringLiteral( `> : !kgen.string`, ] + @always_inline("nodebug") + @staticmethod + fn get[type: Stringable, //, value: type]() -> StringLiteral: + """Form a string literal from an arbitrary compile-time stringable value. + + Parameters: + type: The type of the value. + value: The value to serialize. + + Returns: + The string value as a StringLiteral. + """ + return Self._from_string[str(value)]() + # ===-------------------------------------------------------------------===# # Operator dunders # ===-------------------------------------------------------------------===# @@ -920,14 +934,3 @@ struct StringLiteral( A copy of the string with no leading whitespaces. """ return str(self).lstrip() - - -fn _to_string_literal[val: Int]() -> StringLiteral: - alias s = StringLiteral.from_string[str(val)]() - return s - - -fn _to_string_literal[val: SIMD]() -> StringLiteral: - constrained[val.type.is_integral(), "input type must be integral"]() - alias s = StringLiteral.from_string[str(val)]() - return s diff --git a/stdlib/test/builtin/test_string_literal.mojo b/stdlib/test/builtin/test_string_literal.mojo index 2aaa26e063..28ca91a1af 100644 --- a/stdlib/test/builtin/test_string_literal.mojo +++ b/stdlib/test/builtin/test_string_literal.mojo @@ -474,6 +474,15 @@ def test_float_conversion(): _ = ("not a float").__float__() +def test_string_literal_from_stringable(): + assert_equal(StringLiteral.get["hello"](), "hello") + assert_equal(StringLiteral.get[String("hello")](), "hello") + assert_equal(StringLiteral.get[42](), "42") + assert_equal( + StringLiteral.get[SIMD[DType.int64, 4](1, 2, 3, 4)](), "[1, 2, 3, 4]" + ) + + def main(): test_add() test_iadd() @@ -506,3 +515,4 @@ def main(): test_split() test_splitlines() test_float_conversion() + test_string_literal_from_stringable() diff --git a/stdlib/test/utils/test_string_slice.mojo b/stdlib/test/utils/test_string_slice.mojo index 191d98a7d6..057601c270 100644 --- a/stdlib/test/utils/test_string_slice.mojo +++ b/stdlib/test/utils/test_string_slice.mojo @@ -487,7 +487,7 @@ def test_splitlines(): _assert_equal(s.splitlines(keepends=True), items) -fn main() raises: +def main(): test_string_literal_byte_span() test_string_byte_span() test_heap_string_from_string_slice() From 312784ca3c229069248f4a581c0e244fead2779d Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 3 Dec 2024 17:07:28 -0600 Subject: [PATCH 073/119] [DRAFT] feat: Use `Origin[..]` instead of `Origin[..].type` in `Span` and `StringSlice` * Change `ImmutableOrigin` and `MutableOrigin` to be aliases for `Origin[False]` and `Origin[True]`, respectively, instead of raw `!lit.origin` MLIR types. MODULAR_ORIG_COMMIT_REV_ID: 62c5102b8ded23f6a5507021f2863d1c1080a383 --- stdlib/src/builtin/builtin_list.mojo | 5 ++++- stdlib/src/builtin/type_aliases.mojo | 4 ++-- stdlib/src/memory/arc.mojo | 2 +- stdlib/src/utils/span.mojo | 16 +++++++++------- stdlib/src/utils/string_slice.mojo | 4 ++-- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 1e44efe5b4..80047f0343 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -236,7 +236,10 @@ struct _VariadicListMemIter[ alias variadic_list_type = VariadicListMem[elt_type, elt_origin] var index: Int - var src: Pointer[Self.variadic_list_type, list_origin] + var src: Pointer[ + Self.variadic_list_type, + list_origin._mlir_origin, + ] fn __init__( mut self, index: Int, ref [list_origin]list: Self.variadic_list_type diff --git a/stdlib/src/builtin/type_aliases.mojo b/stdlib/src/builtin/type_aliases.mojo index 5bbee8d763..7c7c6ff25b 100644 --- a/stdlib/src/builtin/type_aliases.mojo +++ b/stdlib/src/builtin/type_aliases.mojo @@ -18,10 +18,10 @@ These are Mojo built-ins, so you don't need to import them. alias AnyTrivialRegType = __mlir_type.`!kgen.type` """Represents any register passable Mojo data type.""" -alias ImmutableOrigin = __mlir_type.`!lit.origin<0>` +alias ImmutableOrigin = Origin[False] """Immutable origin reference type.""" -alias MutableOrigin = __mlir_type.`!lit.origin<1>` +alias MutableOrigin = Origin[True] """Mutable origin reference type.""" alias ImmutableAnyOrigin = __mlir_attr.`#lit.any.origin : !lit.origin<0>` diff --git a/stdlib/src/memory/arc.mojo b/stdlib/src/memory/arc.mojo index d7b236af72..ecabe6c9d4 100644 --- a/stdlib/src/memory/arc.mojo +++ b/stdlib/src/memory/arc.mojo @@ -146,7 +146,7 @@ struct ArcPointer[T: Movable]( ]( ref [self_life]self, ) -> ref [ - _lit_mut_cast[self_life, result_mutable=True].result + _lit_mut_cast[self_life._mlir_origin, result_mutable=True].result ] T: """Returns a mutable reference to the managed value. diff --git a/stdlib/src/utils/span.mojo b/stdlib/src/utils/span.mojo index 3ec2b3030c..396744aa4e 100644 --- a/stdlib/src/utils/span.mojo +++ b/stdlib/src/utils/span.mojo @@ -48,7 +48,7 @@ trait AsBytes: struct _SpanIter[ is_mutable: Bool, //, T: CollectionElement, - origin: Origin[is_mutable].type, + origin: Origin[is_mutable], forward: Bool = True, ]: """Iterator for Span. @@ -70,7 +70,7 @@ struct _SpanIter[ @always_inline fn __next__( mut self, - ) -> Pointer[T, origin]: + ) -> Pointer[T, origin._mlir_origin]: @parameter if forward: self.index += 1 @@ -97,7 +97,7 @@ struct _SpanIter[ struct Span[ is_mutable: Bool, //, T: CollectionElement, - origin: Origin[is_mutable].type, + origin: Origin[is_mutable], ](CollectionElementNew): """A non owning view of contiguous data. @@ -259,7 +259,7 @@ struct Span[ return self._data - fn as_ref(self) -> Pointer[T, origin]: + fn as_ref(self) -> Pointer[T, origin._mlir_origin]: """ Gets a Pointer to the first element of this slice. @@ -267,7 +267,7 @@ struct Span[ A Pointer pointing at the first element of this slice. """ - return Pointer[T, origin].address_of(self._data[0]) + return Pointer[T, origin._mlir_origin].address_of(self._data[0]) @always_inline fn copy_from[ @@ -358,13 +358,15 @@ struct Span[ for element in self: element[] = value - fn get_immutable(self) -> Span[T, _lit_mut_cast[origin, False].result]: + fn get_immutable( + self, + ) -> Span[T, _lit_mut_cast[origin._mlir_origin, False].result]: """ Return an immutable version of this span. Returns: A span covering the same elements, but without mutability. """ - return Span[T, _lit_mut_cast[origin, False].result]( + return Span[T, _lit_mut_cast[origin._mlir_origin, False].result]( ptr=self._data, length=self._len ) diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 34a33eb3e6..394dccf89c 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -170,7 +170,7 @@ fn _memrmem[ @value struct _StringSliceIter[ is_mutable: Bool, //, - origin: Origin[is_mutable].type, + origin: Origin[is_mutable], forward: Bool = True, ]: """Iterator for `StringSlice` over unicode characters. @@ -235,7 +235,7 @@ struct _StringSliceIter[ @value @register_passable("trivial") -struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable].type,]( +struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( Stringable, Sized, Writable, From ecb608453e302b4b5e8a579edad8cf824437a949 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 3 Dec 2024 17:39:50 -0600 Subject: [PATCH 074/119] [stdlib] feat: Use `Origin[..]` in `UnsafePointer` parameter MODULAR_ORIG_COMMIT_REV_ID: 229c6c76108284ab19aaa2e3fef02c288a1706ec --- stdlib/src/memory/unsafe_pointer.mojo | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index 3f8db596af..cc760f1c01 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -53,7 +53,7 @@ struct UnsafePointer[ *, address_space: AddressSpace = AddressSpace.GENERIC, alignment: Int = _default_alignment[type](), - origin: Origin[True].type = MutableAnyOrigin, + origin: Origin[True] = MutableAnyOrigin, ]( ImplicitlyBoolable, CollectionElement, @@ -197,7 +197,7 @@ struct UnsafePointer[ """ # We're unsafe, so we can have unsafe things. - alias _ref_type = Pointer[type, origin, address_space] + alias _ref_type = Pointer[type, origin._mlir_origin, address_space] return __get_litref_as_mvalue( __mlir_op.`lit.ref.from_pointer`[_type = _ref_type._mlir_type]( UnsafePointer[ @@ -961,7 +961,7 @@ struct UnsafePointer[ /, address_space: AddressSpace = Self.address_space, alignment: Int = Self.alignment, - origin: Origin[True].type = Self.origin, + origin: Origin[True] = Self.origin, ](self) -> UnsafePointer[ T, address_space=address_space, alignment=alignment, origin=origin ]: From 58891453d6f93c786e2647b297a8e5cad8f62b0a Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 3 Dec 2024 18:13:10 -0600 Subject: [PATCH 075/119] [stdlib] feat: Use `Origin[..]` in `Pointer` and iterator type parameter (Part 3/X) Also changes `_lit_mut_cast[]` to take an `Origin` as well. MODULAR_ORIG_COMMIT_REV_ID: 1b9b88f28acc46ed2c02b368892c1cddbdf98b7e --- stdlib/src/builtin/builtin_list.mojo | 6 +++--- stdlib/src/collections/deque.mojo | 2 +- stdlib/src/collections/inline_list.mojo | 2 +- stdlib/src/collections/list.mojo | 2 +- stdlib/src/memory/arc.mojo | 2 +- stdlib/src/memory/pointer.mojo | 4 ++-- stdlib/src/memory/unsafe_pointer.mojo | 2 +- stdlib/src/utils/span.mojo | 10 +++++----- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 80047f0343..fa24d3c55c 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -238,7 +238,7 @@ struct _VariadicListMemIter[ var index: Int var src: Pointer[ Self.variadic_list_type, - list_origin._mlir_origin, + list_origin, ] fn __init__( @@ -283,12 +283,12 @@ struct _lit_origin_union[ struct _lit_mut_cast[ is_mutable: Bool, //, - operand: Origin[is_mutable].type, + operand: Origin[is_mutable], result_mutable: Bool, ]: alias result = __mlir_attr[ `#lit.origin.mutcast<`, - operand, + operand._mlir_origin, `> : !lit.origin<`, +result_mutable.value, `>`, diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index c79efe4a30..6d45725350 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -995,7 +995,7 @@ struct Deque[ElementType: CollectionElement]( struct _DequeIter[ deque_mutability: Bool, //, ElementType: CollectionElement, - deque_lifetime: Origin[deque_mutability].type, + deque_lifetime: Origin[deque_mutability], forward: Bool = True, ]: """Iterator for Deque. diff --git a/stdlib/src/collections/inline_list.mojo b/stdlib/src/collections/inline_list.mojo index 4e2e90349f..f98e307940 100644 --- a/stdlib/src/collections/inline_list.mojo +++ b/stdlib/src/collections/inline_list.mojo @@ -32,7 +32,7 @@ struct _InlineListIter[ list_mutability: Bool, //, T: CollectionElementNew, capacity: Int, - list_origin: Origin[list_mutability].type, + list_origin: Origin[list_mutability], forward: Bool = True, ]: """Iterator for InlineList. diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index b470023659..d4791dd79e 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -40,7 +40,7 @@ struct _ListIter[ list_mutability: Bool, //, T: CollectionElement, hint_trivial_type: Bool, - list_origin: Origin[list_mutability].type, + list_origin: Origin[list_mutability], forward: Bool = True, ]: """Iterator for List. diff --git a/stdlib/src/memory/arc.mojo b/stdlib/src/memory/arc.mojo index ecabe6c9d4..d7b236af72 100644 --- a/stdlib/src/memory/arc.mojo +++ b/stdlib/src/memory/arc.mojo @@ -146,7 +146,7 @@ struct ArcPointer[T: Movable]( ]( ref [self_life]self, ) -> ref [ - _lit_mut_cast[self_life._mlir_origin, result_mutable=True].result + _lit_mut_cast[self_life, result_mutable=True].result ] T: """Returns a mutable reference to the managed value. diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index db7b78bc18..925707a0ea 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -300,7 +300,7 @@ struct AddressSpace(EqualityComparable, Stringable, Writable): struct Pointer[ is_mutable: Bool, //, type: AnyType, - origin: Origin[is_mutable].type, + origin: Origin[is_mutable], address_space: AddressSpace = AddressSpace.GENERIC, ](CollectionElementNew, Stringable): """Defines a non-nullable safe pointer. @@ -316,7 +316,7 @@ struct Pointer[ `!lit.ref<`, type, `, `, - origin, + origin._mlir_origin, `, `, address_space._value.value, `>`, diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index cc760f1c01..0d12a44a78 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -197,7 +197,7 @@ struct UnsafePointer[ """ # We're unsafe, so we can have unsafe things. - alias _ref_type = Pointer[type, origin._mlir_origin, address_space] + alias _ref_type = Pointer[type, origin, address_space] return __get_litref_as_mvalue( __mlir_op.`lit.ref.from_pointer`[_type = _ref_type._mlir_type]( UnsafePointer[ diff --git a/stdlib/src/utils/span.mojo b/stdlib/src/utils/span.mojo index 396744aa4e..38bb86cbe5 100644 --- a/stdlib/src/utils/span.mojo +++ b/stdlib/src/utils/span.mojo @@ -70,7 +70,7 @@ struct _SpanIter[ @always_inline fn __next__( mut self, - ) -> Pointer[T, origin._mlir_origin]: + ) -> Pointer[T, origin]: @parameter if forward: self.index += 1 @@ -259,7 +259,7 @@ struct Span[ return self._data - fn as_ref(self) -> Pointer[T, origin._mlir_origin]: + fn as_ref(self) -> Pointer[T, origin]: """ Gets a Pointer to the first element of this slice. @@ -267,7 +267,7 @@ struct Span[ A Pointer pointing at the first element of this slice. """ - return Pointer[T, origin._mlir_origin].address_of(self._data[0]) + return Pointer[T, origin].address_of(self._data[0]) @always_inline fn copy_from[ @@ -360,13 +360,13 @@ struct Span[ fn get_immutable( self, - ) -> Span[T, _lit_mut_cast[origin._mlir_origin, False].result]: + ) -> Span[T, _lit_mut_cast[origin, False].result]: """ Return an immutable version of this span. Returns: A span covering the same elements, but without mutability. """ - return Span[T, _lit_mut_cast[origin._mlir_origin, False].result]( + return Span[T, _lit_mut_cast[origin, False].result]( ptr=self._data, length=self._len ) From 40c6a2339d4ad36d2801155e6d84bf77ad6bc075 Mon Sep 17 00:00:00 2001 From: Owen Hilyard Date: Tue, 3 Dec 2024 16:21:57 -0800 Subject: [PATCH 076/119] [External] [docs] Stdlib insider documentation (#51673) [External] [docs] Stdlib insider documentation People working on the standard library need to have some more information about the API contracts and behavior of the runtime and compiler builtins in order to be able to write correct and performant code in the stdlib. This is not intended to be high effort documentation or acknowledgement that a feature is stable, but simply communication of enough information for those of us without access to the compiler source and autogenerated mlir documentation to work with them correctly. Co-authored-by: Owen Hilyard Closes modularml/mojo#3793 MODULAR_ORIG_COMMIT_REV_ID: 9f09d235fd6ec0dae76897a38621e779e460fc23 --- proposals/stdlib-insider-docs.md | 136 +++++++++++++++++++++++++++++++ stdlib/docs/internal/README.md | 16 ++++ stdlib/docs/internal/mlir.md | 10 +++ stdlib/docs/internal/runtime.md | 10 +++ 4 files changed, 172 insertions(+) create mode 100644 proposals/stdlib-insider-docs.md create mode 100644 stdlib/docs/internal/README.md create mode 100644 stdlib/docs/internal/mlir.md create mode 100644 stdlib/docs/internal/runtime.md diff --git a/proposals/stdlib-insider-docs.md b/proposals/stdlib-insider-docs.md new file mode 100644 index 0000000000..1bf0abfef2 --- /dev/null +++ b/proposals/stdlib-insider-docs.md @@ -0,0 +1,136 @@ +# Stdlib Insider Docs + +Owen Hilyard, Created November 17, 2024 + +**Status**: Initial Proposal + +## Motivation + +For most languages, people who work on the standard library have the ability +to look inside of the compiler to clarify questions they have about the +semantics of particular operations or compiler builtins. For Mojo, that is +not the case for many people working on the standard library. As a result, +the exact semantics of some important compiler builtins, such as +`lit.ownership.mark_destroyed`, are not fully known to a large number of +people working on the standard library. For example, the fact that +`lit.ownership.mark_destroyed` still runs the destructors of fields was a +surprise to many at the stdlib meeting. This creates issues where Modular +employees have to catch misuses. These language-internal dialects are, like +Mojo itself, subject to enhancements, breaking changes, and even complete +removal. This presents a problem since the stdlib is correctness-critical code, +and when people who don't understand the API contract of a construct use it +in correctness-critical code, issues are bound to happen. + +## Proposal + +In order to help address this, I propose the creation of a "stdlib insider" +document, which contains information on MLIR operations/types, WIP features and +other parts of the language which are either intended to only be used in the +standard library/MAX drivers or language features which are still subject to +change and evolution. This can be substantially less polished than the Mojo +manual, including "X is like Y in C++ but ...", links to academic +papers, links to LLVM docs, pseudocode, and other ways one might explain a +concept to a colleague. This document, likely maintained as a markdown file in +/docs, is intended to be internally facing to core Mojo developers. This means +that a large "everything in here is subject to being totally rewritten in a +bugfix release or security update, do not use outside of the standard library +or MAX" warning, which will hopefully dissuade people from using what is +documented there in ways that will get them stuck on old Mojo versions. + +For MLIR operations, I'd like the following information documented +for each operation used in the standard library; Operation name, +arguments (potentially as Mojo function syntax), a description of the +operation, pre-conditions, post-conditions, and clear hazards. Clear hazards +would ways in which the operation can cause UB (ex: is what happens with a +null pointer well defined?), conditions under which the operation will force +the program to abort or other like "`lit.ownership.mark_destroyed` +still runs the destructors of fields" which may be surprising behavior. + +For MLIR types, information about what a type is intended to do, what +parameters the type has (and their types), the size of the instantiated type +(for alignment), and any non-trivialities in the type (is it ok to copy/move +it?). MLIR attributes should have similar information. + +For features, a short description of what the feature is intended for, and +then syntax examples that show the capabilities of the feature. Ideally, some +differentiation between the design and the current implementation should be +present, slowly moving parts of the documentation over as they are available +on nightly. Documenting known sharp edges or limitations is also helpful, for +instance if trait objects could only represent a single trait (ex: no Movable +\+ Copyable + Formattable trait) or if some part of the implementation has a +high time or space complexity (ex: O(N^2) compile time overhead in the number +of traits in a trait object). + +## Current State + +At present, the majority of MLIR operations are things which I think +are reasonable to explain with a link to LLVM or C++ docs. For example, `pop.max` +is mostly self-explanatory, so unless there are extra semantics I don't +think it really needs more of an explanation than "see C++ std::max". + +What I consider the important things to document: + +### `pop.external_call` + +Lots of people want to call into OpenSSL to get basic HTTPS working, and that +needs to be done correctly. There's also a lot of ABI issues around this, +for instance whether Mojo structs are C layout (for now) or whether we need +a mechanism to force that behavior. + +### `co.*` + +This area is WIP, but some community discussion around the direction would be +helpful. Information about the API of each of the types would also be nice +since it looks like we would need to use MLIR to implement future combinators +like Rust's `FuturesUnordered`. Documentation around synchronization +requirements is also important for correctness as people move towards async io. + +### `#kgen.param.expr LLVM type conversions, +Documenting limitations is also helpful, for instance, can is `@call` ok to +use? Can I directly write phi nodes? I had a lot of difficulty interacting +with anything that returns a `!llvm.struct` or `!llvm.vec`. + +### `pop.inline_asm` + +A lot of CPU functionality doesn't have LLVM intrinsics and we'll need to use +assembly (CPU time stamp counters, poking MSRs for runtime capability +discovery, etc). I personally ran into difficulties doing multiple return +(ex: x86 `cpuid` returns results in 4 registers). Information on the asm +dialect, how to create clobbers and scratch registers, and rules for control +flow (ex: can I implement computed gotos, jump into the middle of a function or +return from the current function?). + +### `!lit.origin.set` + +This is used in Coroutines (presumably to store capture origins), but it looks +like it may be useful for storing collections of references. + +### The backing allocator(s) for `pop.aligned_alloc` and `pop.global_alloc` + +Time spent in GDB has led me to believe this is tcmalloc, but knowing for +sure means we have information like the minimum alignment the allocator will +provide (storing information in the lower bits), what kind of caching it does, +information about how it handles memory overcommit being off (db servers), and +what kind of instrumentation we might have access to. diff --git a/stdlib/docs/internal/README.md b/stdlib/docs/internal/README.md new file mode 100644 index 0000000000..b80fd03dca --- /dev/null +++ b/stdlib/docs/internal/README.md @@ -0,0 +1,16 @@ +## WARNING + +Everything in this file/directory is subject to revision on any bugfix or security +update. We (the stdlib team and contributors), reserve the right to remove, +change the API contracts of, rename, or cause to instantly crash the program, +any operation described in here. These are **PRIVATE** APIs and implementation +details for the Mojo stdlib and for MAX to use. **WE WILL CHANGE IT WHENEVER +WE FIND IT CONVENIENT TO DO SO WITHOUT WARNING OR NOTICE**. + +## Purpose + +This directory contains internal documentation for the implementation details +of the Mojo compiler, runtime, and stdlib. You must always reference the +current version of this documentation on the branch nightly before using the +operations or behavior documented within. Any new files should contain the +above warning. diff --git a/stdlib/docs/internal/mlir.md b/stdlib/docs/internal/mlir.md new file mode 100644 index 0000000000..ca0c174c4b --- /dev/null +++ b/stdlib/docs/internal/mlir.md @@ -0,0 +1,10 @@ +## WARNING + +Everything in this file is subject to revision on any bugfix or security +update. We (the stdlib team and contributors), reserve the right to remove, +change the API contracts of, rename, or cause to instantly crash the program, +any operation described in here. These are **PRIVATE** APIs and implementation +details for the Mojo stdlib and for MAX to use. **WE WILL CHANGE IT WHENEVER +WE FIND IT CONVENIENT TO DO SO WITHOUT WARNING OR NOTICE**. + +## MLIR Documentation diff --git a/stdlib/docs/internal/runtime.md b/stdlib/docs/internal/runtime.md new file mode 100644 index 0000000000..6d4921138b --- /dev/null +++ b/stdlib/docs/internal/runtime.md @@ -0,0 +1,10 @@ +## WARNING + +Everything in this file is subject to revision on any bugfix or security +update. We (the stdlib team and contributors), reserve the right to remove, +change the API contracts of, rename, or cause to instantly crash the program, +any operation described in here. These are **PRIVATE** APIs and implementation +details for the Mojo stdlib and for MAX to use. **WE WILL CHANGE IT WHENEVER +WE FIND IT CONVENIENT TO DO SO WITHOUT WARNING OR NOTICE**. + +## Runtime Documentation From 792299899de4867e5fe2e0bfb45090c6298aae0e Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Tue, 3 Dec 2024 18:48:05 -0600 Subject: [PATCH 077/119] [stdlib] feat: Rename `Origin.type` to `Origin._mlir_type` + migrate ~remaining `.type uses (Part 4/X) * Use Origin in dict.mojo and builtin_list.mojo types This does *not* update `VariadicPack` and `VariadicListMem` yet, which will require more improvements to parameter inference. MODULAR_ORIG_COMMIT_REV_ID: c4d20f6842ce361d124ee2e246431af0b3efcd6a --- stdlib/src/builtin/builtin_list.mojo | 18 ++++++++++-------- stdlib/src/builtin/reversed.mojo | 4 ++-- stdlib/src/builtin/type_aliases.mojo | 6 +++--- stdlib/src/collections/dict.mojo | 6 +++--- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index fa24d3c55c..9e6b5972ea 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -221,7 +221,7 @@ struct VariadicList[type: AnyTrivialRegType](Sized): struct _VariadicListMemIter[ elt_is_mutable: Bool, //, elt_type: AnyType, - elt_origin: Origin[elt_is_mutable].type, + elt_origin: Origin[elt_is_mutable], list_origin: ImmutableOrigin, ]: """Iterator for VariadicListMem. @@ -233,7 +233,9 @@ struct _VariadicListMemIter[ list_origin: The origin of the VariadicListMem. """ - alias variadic_list_type = VariadicListMem[elt_type, elt_origin] + alias variadic_list_type = VariadicListMem[ + elt_type, elt_origin._mlir_origin + ] var index: Int var src: Pointer[ @@ -267,14 +269,14 @@ struct _VariadicListMemIter[ # TODO: parametric aliases would be nice. struct _lit_origin_union[ is_mutable: Bool, //, - a: Origin[is_mutable].type, - b: Origin[is_mutable].type, + a: Origin[is_mutable], + b: Origin[is_mutable], ]: alias result = __mlir_attr[ `#lit.origin.union<`, - a, + a._mlir_origin, `,`, - b, + b._mlir_origin, `> : !lit.origin<`, is_mutable.value, `>`, @@ -298,7 +300,7 @@ struct _lit_mut_cast[ struct VariadicListMem[ elt_is_mutable: Bool, //, element_type: AnyType, - origin: Origin[elt_is_mutable].type, + origin: Origin[elt_is_mutable]._mlir_type, ](Sized): """A utility class to access variadic function arguments of memory-only types that may have ownership. It exposes references to the elements in a @@ -483,7 +485,7 @@ alias _AnyTypeMetaType = __mlir_type[`!lit.anytrait<`, AnyType, `>`] @register_passable struct VariadicPack[ elt_is_mutable: Bool, //, - origin: Origin[elt_is_mutable].type, + origin: Origin[elt_is_mutable]._mlir_type, element_trait: _AnyTypeMetaType, *element_types: element_trait, ](Sized): diff --git a/stdlib/src/builtin/reversed.mojo b/stdlib/src/builtin/reversed.mojo index 352f6d10b4..a1c984e81f 100644 --- a/stdlib/src/builtin/reversed.mojo +++ b/stdlib/src/builtin/reversed.mojo @@ -142,7 +142,7 @@ fn reversed[ K: KeyElement, V: CollectionElement, dict_mutability: Bool, - dict_origin: Origin[dict_mutability].type, + dict_origin: Origin[dict_mutability], ](ref value: _DictValueIter[K, V, dict_origin]) -> _DictValueIter[ K, V, dict_origin, False ]: @@ -169,7 +169,7 @@ fn reversed[ K: KeyElement, V: CollectionElement, dict_mutability: Bool, - dict_origin: Origin[dict_mutability].type, + dict_origin: Origin[dict_mutability], ](ref value: _DictEntryIter[K, V, dict_origin]) -> _DictEntryIter[ K, V, dict_origin, False ]: diff --git a/stdlib/src/builtin/type_aliases.mojo b/stdlib/src/builtin/type_aliases.mojo index 7c7c6ff25b..4139618270 100644 --- a/stdlib/src/builtin/type_aliases.mojo +++ b/stdlib/src/builtin/type_aliases.mojo @@ -51,7 +51,7 @@ struct Origin[is_mutable: Bool]: is_mutable: Whether the origin is mutable. """ - alias type = __mlir_type[ + alias _mlir_type = __mlir_type[ `!lit.origin<`, is_mutable.value, `>`, @@ -61,7 +61,7 @@ struct Origin[is_mutable: Bool]: # Fields # ===-------------------------------------------------------------------===# - var _mlir_origin: Self.type + var _mlir_origin: Self._mlir_type # ===-------------------------------------------------------------------===# # Life cycle methods @@ -73,7 +73,7 @@ struct Origin[is_mutable: Bool]: # Span[Byte, __origin_of(self)] @implicit @always_inline("nodebug") - fn __init__(out self, mlir_origin: Self.type): + fn __init__(out self, mlir_origin: Self._mlir_type): """Initialize an Origin from a raw MLIR `!lit.origin` value. Args: diff --git a/stdlib/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index d35229a17e..99aa18c45f 100644 --- a/stdlib/src/collections/dict.mojo +++ b/stdlib/src/collections/dict.mojo @@ -61,7 +61,7 @@ struct _DictEntryIter[ dict_mutability: Bool, //, K: KeyElement, V: CollectionElement, - dict_origin: Origin[dict_mutability].type, + dict_origin: Origin[dict_mutability], forward: Bool = True, ]: """Iterator over immutable DictEntry references. @@ -120,7 +120,7 @@ struct _DictKeyIter[ dict_mutability: Bool, //, K: KeyElement, V: CollectionElement, - dict_origin: Origin[dict_mutability].type, + dict_origin: Origin[dict_mutability], forward: Bool = True, ]: """Iterator over immutable Dict key references. @@ -158,7 +158,7 @@ struct _DictValueIter[ dict_mutability: Bool, //, K: KeyElement, V: CollectionElement, - dict_origin: Origin[dict_mutability].type, + dict_origin: Origin[dict_mutability], forward: Bool = True, ]: """Iterator over Dict value references. These are mutable if the dict From 5d690ca5ae8bf436495b092a2736fd50786c5105 Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Tue, 3 Dec 2024 15:48:15 -1000 Subject: [PATCH 078/119] [stdlib] Align max_exponent with C/Python and clarify terms - Move back to setting the FPUtils.max_exponent() to return the max value disregarding `-inf` and `inf` bitpatterns. The actual max exponent is -1, but this is for consistency with pythons `sys.float_info.max_exp` and C++ constants such as FLT_MAX_EXP. `frexp` returns the real exponent + 1 and normalizes from [1..2] to [0.5..1] so these values align with that function that is shared between C/Python/Mojo, put clarification in the docstring. - Remove FPUtils.min_exponent(), this could mean various things i.e. `min_subnormal_exponent`, `min_normal_exponent`, does it follow `max_exponent` by adding 1 to align with `frexp`? This was only used in _format_float. - Put the correct exponent_bias in for the fnuz types. - Clarify some variable names to say what they actually are. MODULAR_ORIG_COMMIT_REV_ID: 1c72346acc7e5290dc5d76f4d6efa5e2a42faf1a --- stdlib/src/builtin/_format_float.mojo | 11 +++--- stdlib/src/math/math.mojo | 7 +++- stdlib/src/utils/numerics.mojo | 54 +++++++++++---------------- 3 files changed, 31 insertions(+), 41 deletions(-) diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index b46e9ce306..4c5fc6797e 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -71,9 +71,8 @@ struct FP[type: DType, CarrierDType: DType = FPUtils[type].uint_type]: alias carrier_bits = sizeof[Self.CarrierDType]() * 8 alias sig_bits = FPUtils[type].mantissa_width() alias exp_bits = FPUtils[type].exponent_width() - alias min_exponent = FPUtils[type].min_exponent() - alias max_exponent = FPUtils[type].max_exponent() - alias exp_bias = -Self.max_exponent + alias neg_exp_bias = -FPUtils[type].exponent_bias() + alias min_normal_exp = Self.neg_exp_bias + 1 alias cache_bits = 64 if Self.CarrierDType == DType.uint32 else 128 alias min_k = -31 if Self.CarrierDType == DType.uint32 else -292 alias max_k = 46 if Self.CarrierDType == DType.uint32 else 326 @@ -129,7 +128,7 @@ fn _write_float[W: Writer, type: DType, //](mut writer: W, value: Scalar[type]): # - The significand (sig) is the raw binary fraction # - The exponent (exp) is still in biased form var sig = FPUtils.get_mantissa_uint(casted) - var exp = FPUtils.get_exponent_without_bias(casted) + var exp = FPUtils.get_exponent_biased(casted) var sign = FPUtils.get_sign(casted) if isinf(value): @@ -235,7 +234,7 @@ fn _to_decimal[ # For normal numbers if binary_exp != 0: - binary_exp += FP[type].exp_bias - FP[type].sig_bits + binary_exp += FP[type].neg_exp_bias - FP[type].sig_bits if two_fc == 0: var minus_k = (binary_exp * 631305 - 261663) >> 21 var beta = binary_exp + _floor_log2_pow10(-minus_k) @@ -293,7 +292,7 @@ fn _to_decimal[ two_fc |= Scalar[CarrierDType](1) << (FP[type].sig_bits + 1) else: # For subnormal numbers - binary_exp = FP[type].min_exponent - FP[type].sig_bits + binary_exp = FP[type].min_normal_exp - FP[type].sig_bits ########################################## # Step 1: Schubfach multiplier calculation diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 2c7ee78a5d..7b998c7220 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -645,6 +645,8 @@ fn frexp[ type: DType, simd_width: Int, // ](x: SIMD[type, simd_width]) -> StaticTuple[SIMD[type, simd_width], 2]: """Breaks floating point values into a fractional part and an exponent part. + This follows C and Python in increasing the exponent by 1 and normalizing the + fraction from 0.5 to 1.0 instead of 1.0 to 2.0. Constraints: The input must be a floating-point type. @@ -664,14 +666,15 @@ fn frexp[ constrained[type.is_floating_point(), "must be a floating point value"]() alias T = SIMD[type, simd_width] alias zero = T(0) - alias max_exponent = FPUtils[type].max_exponent() - 1 + # Add one to the resulting exponent up by subtracting 1 from the bias + alias exponent_bias = FPUtils[type].exponent_bias() - 1 alias mantissa_width = FPUtils[type].mantissa_width() var mask1 = _frexp_mask1[simd_width, type]() var mask2 = _frexp_mask2[simd_width, type]() var x_int = x.to_bits() var selector = x != zero var exp = selector.select( - (((mask1 & x_int) >> mantissa_width) - max_exponent).cast[type](), + (((mask1 & x_int) >> mantissa_width) - exponent_bias).cast[type](), zero, ) var frac = selector.select(T(from_bits=x_int & ~mask1 | mask2), zero) diff --git a/stdlib/src/utils/numerics.mojo b/stdlib/src/utils/numerics.mojo index f7d99244fe..e1ec498345 100644 --- a/stdlib/src/utils/numerics.mojo +++ b/stdlib/src/utils/numerics.mojo @@ -84,41 +84,25 @@ struct FPUtils[ @staticmethod @always_inline("nodebug") fn max_exponent() -> IntLiteral: - """Returns the max exponent of a floating point type, taking into - account special reserved cases such infinity and nan. + """Returns the max exponent of a floating point type without accounting + for inf representations. This is not + the maximum representable exponent, which is generally equal to + the exponent_bias. Returns: The max exponent. """ @parameter - if type is DType.float8e4m3: - return 7 - elif type is DType.float8e4m3fnuz: + if type in (DType.float8e4m3, DType.float8e4m3fnuz): return 8 - elif type is DType.float8e5m2: - return 15 - elif type is DType.float8e5m2fnuz: + elif type in (DType.float8e5m2, DType.float8e5m2fnuz, DType.float16): return 16 - elif type is DType.float16: - return 15 - elif type is DType.float32 or type is DType.bfloat16: - return 127 + elif type in (DType.bfloat16, DType.float32): + return 128 else: constrained[type is DType.float64, "unsupported float type"]() - return 1023 - - @staticmethod - @always_inline("nodebug") - fn min_exponent() -> IntLiteral: - """Returns the min exponent of a floating point type, taking into - account special reserved cases such as infinity and nan. - - Returns: - The min exponent. - """ - - return -Self.max_exponent() + 1 + return 1024 @staticmethod @always_inline("nodebug") @@ -132,11 +116,9 @@ struct FPUtils[ @parameter if type in (DType.float8e4m3, DType.float8e4m3fnuz): return 4 - elif type in (DType.float8e5m2, DType.float8e5m2fnuz): + elif type in (DType.float8e5m2, DType.float8e5m2fnuz, DType.float16): return 5 - elif type is DType.float16: - return 5 - elif type is DType.float32 or type is DType.bfloat16: + elif type in (DType.float32, DType.bfloat16): return 8 else: constrained[type is DType.float64, "unsupported float type"]() @@ -160,7 +142,12 @@ struct FPUtils[ Returns: The exponent bias. """ - return Self.max_exponent() + + @parameter + if type in (DType.float8e4m3fnuz, DType.float8e5m2fnuz): + return Self.max_exponent() + else: + return Self.max_exponent() - 1 @staticmethod @always_inline @@ -306,14 +293,15 @@ struct FPUtils[ @staticmethod @always_inline - fn get_exponent_without_bias(value: Scalar[type]) -> Int: - """Returns the exponent bits of the floating-point value. + fn get_exponent_biased(value: Scalar[type]) -> Int: + """Returns the biased exponent of the floating-point value as an Int, + this is how the value is stored before subtracting the exponent bias. Args: value: The floating-point value. Returns: - Returns the exponent bits. + The biased exponent as an Int. """ return int( Self.bitcast_to_uint(value) >> Self.mantissa_width() From 6f26bd84abc73a293d0f86221befde07e615e85c Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Tue, 3 Dec 2024 18:39:38 -1000 Subject: [PATCH 079/119] [stdlib] Clarify the differences for the float8 types These types have confusing differences, clarify the naming and exactly how they're different in the doc strings. MODULAR_ORIG_COMMIT_REV_ID: 80525ac525b1538664a33ae6d053addc0f95fcac --- stdlib/src/builtin/dtype.mojo | 58 ++++++++++++++++++++++++++++++----- stdlib/src/builtin/simd.mojo | 58 ++++++++++++++++++++++++++++++----- 2 files changed, 100 insertions(+), 16 deletions(-) diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index 4ac807acd6..1ed5dd09c6 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -66,23 +66,65 @@ struct DType( alias float8e5m2 = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) - """Represents a FP8E5M2 floating point format whose bitwidth is 8.""" + """Represents a FP8E5M2 floating point format from the [OFP8 + standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). + + The 8 bits are encoded as `seeeeemm`: + - (s)ign: 1 bit + - (e)xponent: 5 bits + - (m)antissa: 2 bits + - exponent bias: 15 + - nan: {0,1}11111{01,10,11} + - inf: 01111100 + - -inf: 11111100 + - -0: 10000000 + """ alias float8e5m2fnuz = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) - """Represents a FP8E5M2FNUZ floating point format for AMD GPU whose bitwdith is 8. - This dtype only supports finite and NaN values. NaN is when sign bit is - set and all other exponent and mantissa bits are 0.""" + """Represents a FP8E5M2FNUZ floating point format. + + The 8 bits are encoded as `seeeeemm`: + - (s)ign: 1 bit + - (e)xponent: 5 bits + - (m)antissa: 2 bits + - exponent bias: 16 + - nan: 10000000 + - fn: finite (no inf or -inf encodings) + - uz: unsigned zero (no -0 encoding) + """ alias float8e4m3 = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) - """Represents a FP8E4M3 floating point format whose bitwidth is 8.""" + """Represents a FP8E4M3 floating point format from the [OFP8 + standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). + + This type is named `float8_e4m3fn` (the "fn" stands for "finite") in some + frameworks, as it does not encode -inf or inf. + + The 8 bits are encoded as `seeeemmm`: + - (s)ign: 1 bit + - (e)xponent: 4 bits + - (m)antissa: 3 bits + - exponent bias: 7 + - nan: 01111111, 11111111 + - -0: 10000000 + - fn: finite (no inf or -inf encodings) + """ alias float8e4m3fnuz = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) - """Represents a FP8E4M3FNUZ floating point format for AMD GPU whose bitwdith is 8. - This dtype only supports finite and NaN values. NaN is when sign bit is - set and all other exponent and mantissa bits are 0.""" + """Represents a FP8E4M3FNUZ floating point format. + + The 8 bits are encoded as `seeeemmm`: + - (s)ign: 1 bit + - (e)xponent: 4 bits + - (m)antissa: 3 bits + - exponent bias: 8 + - nan: 10000000 + - fn: finite (no inf or -inf encodings) + - uz: unsigned zero (no -0 encoding) + """ alias bfloat16 = DType( __mlir_attr.`#kgen.dtype.constant : !kgen.dtype` ) diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index bacee6e4bf..350eda13d0 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -94,17 +94,59 @@ alias UInt64 = Scalar[DType.uint64] """Represents a 64-bit unsigned scalar integer.""" alias Float8e5m2 = Scalar[DType.float8e5m2] -"""Represents a FP8E5M2 floating point format whose bitwidth is 8.""" +"""Represents a FP8E5M2 floating point format from the [OFP8 +standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). + +The 8 bits are encoded as `seeeeemm`: +- (s)ign: 1 bit +- (e)xponent: 5 bits +- (m)antissa: 2 bits +- exponent bias: 15 +- nan: {0,1}11111{01,10,11} +- inf: 01111100 +- -inf: 11111100 +- -0: 10000000 +""" alias Float8e5m2fnuz = Scalar[DType.float8e5m2fnuz] -"""Represents a FP8E5M2FNUZ floating point format for AMD GPU whose bitwdith is 8. - This dtype only supports finite and NaN values. NaN is when sign bit is set and - all other exponent and mantissa bits are 0.""" +"""Represents a FP8E5M2FNUZ floating point format. + +The 8 bits are encoded as `seeeeemm`: +- (s)ign: 1 bit +- (e)xponent: 5 bits +- (m)antissa: 2 bits +- exponent bias: 16 +- nan: 10000000 +- fn: finite (no inf or -inf encodings) +- uz: unsigned zero (no -0 encoding) +""" alias Float8e4m3 = Scalar[DType.float8e4m3] -"""Represents a FP8E4M3 floating point format whose bitwidth is 8.""" +"""Represents a FP8E4M3 floating point format from the [OFP8 +standard](https://www.opencompute.org/documents/ocp-8-bit-floating-point-specification-ofp8-revision-1-0-2023-12-01-pdf-1). + +This type is named `float8_e4m3fn` (the "fn" stands for "finite") in some +frameworks, as it does not encode -inf or inf. + +The 8 bits are encoded as `seeeemmm`: +- (s)ign: 1 bit +- (e)xponent: 4 bits +- (m)antissa: 3 bits +- exponent bias: 7 +- nan: 01111111, 11111111 +- -0: 10000000 +- fn: finite (no inf or -inf encodings) +""" alias Float8e4m3fnuz = Scalar[DType.float8e4m3fnuz] -"""Represents a FP8E4M3FNUZ floating point format for AMD GPU whose bitwdith is 8. - This dtype only supports finite and NaN values. NaN is when sign bit is set and - all other exponent and mantissa bits are 0.""" +"""Represents a FP8E4M3FNUZ floating point format. + +The 8 bits are encoded as `seeeemmm`: +- (s)ign: 1 bit +- (e)xponent: 4 bits +- (m)antissa: 3 bits +- exponent bias: 8 +- nan: 10000000 +- fn: finite (no inf or -inf encodings) +- uz: unsigned zero (no -0 encoding) +""" alias BFloat16 = Scalar[DType.bfloat16] """Represents a 16-bit brain floating point value.""" alias Float16 = Scalar[DType.float16] From 43a2506183a91ef657faeeb0b1273af255d55032 Mon Sep 17 00:00:00 2001 From: Gustas <37534529+PunkPun@users.noreply.github.com> Date: Tue, 3 Dec 2024 21:00:08 -0800 Subject: [PATCH 080/119] [External] [Docs] Update the notebook tutorial (#52029) [External] [Docs] Update the notebook tutorial And add more clarification to end users not familiar with conda .yml files #3803 --------- Co-authored-by: Gustas <37534529+PunkPun@users.noreply.github.com> Co-authored-by: Arthur Evans Closes modularml/mojo#3834 MODULAR_ORIG_COMMIT_REV_ID: db24078163bb662924f5bf0ae744c1c41cd008c0 --- examples/notebooks/README.md | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/examples/notebooks/README.md b/examples/notebooks/README.md index 4ee3854595..d94bb7bf4b 100644 --- a/examples/notebooks/README.md +++ b/examples/notebooks/README.md @@ -4,9 +4,7 @@ Mojo supports programming in [Jupyter notebooks](https://jupyter.org/), just like Python. This page explains how to get started with Mojo notebooks, and this repo -directory contains notebooks that demonstrate some of Mojo's features -(most of which we originally published on the [Mojo -Playground](https://playground.modular.com/)). +directory contains notebooks that demonstrate some of Mojo's features. If you're not familiar with Jupyter notebooks, they're files that allow you to create documents with live code, equations, visualizations, and explanatory @@ -67,6 +65,7 @@ If you have [`magic`](https://docs.modular.com/magic) you can run the following command to launch JupyterLab from this directory: ```sh +# Run from an active conda or magic shell environment magic run jupyter lab ``` @@ -74,7 +73,20 @@ After a moment, it will open a browser window with JupterLab running. #### Using conda -Create a Conda environment, activate that enviroment, and install JupyterLab. +Conda allows you to export environments in `.yml` format. (For more +information, see +[Managing environments](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html) +in the Conda documentation.) + +If you already have a working Jupyter environment on a different computer and +server you can export it using the following command. + +```sh +# Example of exporting environment.yml from a conda environment named `your-env` +conda env export --name your_env > environment.yml +``` + +To create a Conda environment, activate that environment, and install JupyterLab. ``` sh # Create a Conda environment if you don't have one @@ -87,6 +99,19 @@ conda run -n mojo-repo jupyter lab After a moment, it will open a browser window with JupterLab running. +#### Using more magic + +Magic allows you to create an environment from a Conda `environment.yml`. + +```sh +# Create a magic environment if you don't have one +magic init mojo-repo --import environment.yml +# Activate the environment +cd mojo-repo && magic shell +# run JupyterLab +magic run jupyter lab +``` + ### 2. Run the .ipynb notebooks The left nav bar should show all the notebooks in this directory. From ec3dad7a2768396a509482d04c566f505be8deef Mon Sep 17 00:00:00 2001 From: modularbot Date: Wed, 4 Dec 2024 19:15:26 +0000 Subject: [PATCH 081/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024120416 --- examples/life/magic.lock | 1627 +++++++++++++------------- examples/magic.lock | 1403 ++++++++++++---------- examples/notebooks/magic.lock | 2079 ++++++++++++++++++--------------- examples/operators/magic.lock | 1403 ++++++++++++---------- magic.lock | 1424 +++++++++++----------- 5 files changed, 4220 insertions(+), 3716 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 9c78b39352..c962798beb 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -8,14 +8,13 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda @@ -26,10 +25,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -44,22 +43,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -77,20 +76,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -111,7 +110,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda @@ -125,10 +124,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-ha770c72_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-devel-1.11.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-tools-1.11.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda @@ -142,6 +138,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -158,7 +156,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.7-h2774228_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.9-h2774228_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda @@ -171,18 +169,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda @@ -191,25 +189,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda @@ -217,19 +211,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -248,10 +242,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h08b1b5d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda @@ -261,29 +255,31 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda @@ -293,14 +289,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda @@ -311,10 +306,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -329,22 +324,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.0-hdb1a16f_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fluidsynth-2.3.7-h4f58cef_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -362,20 +357,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-9.0.0-hbf49d6b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 @@ -396,7 +391,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.69-h883460d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda @@ -410,10 +405,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-1.11.0-h8af1aa0_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-devel-1.11.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-lib-1.11.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-tools-1.11.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda @@ -427,6 +419,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -443,7 +437,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.7-hd54d049_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.9-hd54d049_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda @@ -456,18 +450,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda @@ -476,25 +470,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.43.4-h2f0025b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda @@ -502,19 +492,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -533,10 +523,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-h680d130_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda @@ -546,29 +536,31 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.1-h57736b2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.4-hbac51e1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.9-he755bbd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.10-hca56bd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h57736b2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2024.1-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda @@ -577,13 +569,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -593,10 +584,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -611,20 +602,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fluidsynth-2.3.7-h80fea77_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -642,19 +633,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda @@ -676,7 +667,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -697,6 +688,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda @@ -721,18 +714,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda @@ -741,44 +734,40 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -796,10 +785,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-hda0f12e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda @@ -809,15 +798,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda @@ -825,7 +814,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda @@ -883,18 +874,18 @@ packages: - kind: conda name: aiohappyeyeballs version: 2.4.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 - md5: 8d6f8a679aa0272ba8d6092ce4824870 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 depends: - python >=3.9 license: PSF-2.0 - license_family: PSF - size: 19310 - timestamp: 1733135584059 + size: 19351 + timestamp: 1733332029649 - kind: conda name: aiohttp version: 3.11.9 @@ -970,19 +961,19 @@ packages: - kind: conda name: aiosignal version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 - md5: d1e1eb7e21a9e2c74279d87dafb68156 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db + md5: d736bd1b8904d7593dce4893e58a7881 depends: - frozenlist >=1.1.0 - - python >=3.7 + - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 12730 - timestamp: 1667935912504 + size: 13157 + timestamp: 1733332198143 - kind: conda name: alsa-lib version: 1.2.13 @@ -1015,19 +1006,20 @@ packages: - kind: conda name: annotated-types version: 0.7.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f - md5: 7e9f4612544c8edbfd6afad17f1bd045 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: - - python >=3.7 + - python >=3.9 - typing-extensions >=4.0.0 license: MIT license_family: MIT - size: 18235 - timestamp: 1716290348421 + size: 18074 + timestamp: 1733247158254 - kind: conda name: anyio version: 4.6.2.post1 @@ -1095,23 +1087,6 @@ packages: license_family: BSD size: 3250813 timestamp: 1718551360260 -- kind: conda - name: asgiref - version: 3.8.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 - md5: 21187c8276f87b6aedfe63c267a6eed7 - depends: - - python >=3.9 - - typing_extensions >=4 - license: BSD-3-Clause - license_family: BSD - size: 26436 - timestamp: 1733215704904 - kind: conda name: attr version: 2.5.1 @@ -1589,12 +1564,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 - md5: e09cd76e50ce09ec14c17109da5c6502 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a + md5: 1046cf15a47f06a0af07f674e477d807 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1606,16 +1581,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117467 - timestamp: 1733098782199 + size: 117398 + timestamp: 1733299233564 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d - md5: 171850b890600458ae6c990e78f1fa23 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 + md5: 7d029b9aa9decf4c0fb8a9a8940c9906 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1628,16 +1603,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113536 - timestamp: 1733098705479 + size: 113660 + timestamp: 1733299194447 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff - md5: 893e668d99fa4b31eef9dc5b19c21b9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 + md5: 02f78a084e101dee30c794f963549de4 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1648,8 +1623,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97145 - timestamp: 1733098874599 + size: 97136 + timestamp: 1733299356527 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1751,13 +1726,14 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h7939e66_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d - md5: 5e573a52a1cd20f81d7fdf1db4f4583a + build: h159bff8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda + sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 + md5: c498e6490834aacf7835c96403862881 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1765,23 +1741,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283670 - timestamp: 1733150929992 + size: 354822 + timestamp: 1733333950713 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: ha226bf8_1 - build_number: 1 + build: h8474b10_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 - md5: 81da0b5f65ab08e3919d6eadf08b5776 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda + sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba + md5: 54c898f166bcfbe06c2b7ac36360f371 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1791,24 +1767,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236505 - timestamp: 1733151090562 + size: 235829 + timestamp: 1733334077172 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: hdec8b0f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd - md5: 40647232fad98f92be8c6050a7e0c2bd + build: hffbb33f_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda + sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 + md5: fb8be2af168b63e0b77076a1dc6baa85 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1816,14 +1791,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354710 - timestamp: 1733150818238 + size: 284031 + timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2530,49 +2505,52 @@ packages: - kind: conda name: charset-normalizer version: 3.4.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e + md5: 6581a17bba6b948bb60130026404a9d6 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 47314 - timestamp: 1728479405343 + size: 47533 + timestamp: 1733218182393 - kind: conda name: click version: 8.1.7 - build: unix_pyh707e725_0 + build: unix_pyh707e725_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec - md5: f3ad426304898027fc619827ff428eca + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b + md5: cb8e52f28f5e592598190c562e7b5bf1 depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84437 - timestamp: 1692311973840 + size: 84513 + timestamp: 1733221925078 - kind: conda name: colorama version: 0.4.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 25170 - timestamp: 1666700778190 + size: 27011 + timestamp: 1733218222191 - kind: conda name: datasets version: 2.14.4 @@ -2710,58 +2688,61 @@ packages: - kind: conda name: dnspython version: 2.7.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 - md5: 0adf8f63d500d20418656289249533f9 + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: - - python >=3.9.0,<4.0.0 + - python >=3.9,<4.0.0 - sniffio constrains: - - cryptography >=43 + - aioquic >=1.0.0 - wmi >=1.5.1 - - h2 >=4.1.0 + - httpx >=0.26.0 - trio >=0.23 + - cryptography >=43 - httpcore >=1.0.0 - - aioquic >=1.0.0 - - httpx >=0.26.0 - idna >=3.7 + - h2 >=4.1.0 license: ISC license_family: OTHER - size: 172740 - timestamp: 1728178868478 + size: 172172 + timestamp: 1733256829961 - kind: conda name: email-validator version: 2.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 - md5: 3067adf57ee658ddf5bfad47b0041ce4 + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 depends: - dnspython >=2.0.0 - idna >=2.0.0 - - python >=3.7 + - python >=3.9 license: Unlicense - size: 44157 - timestamp: 1718984716782 + size: 44401 + timestamp: 1733300827551 - kind: conda name: email_validator version: 2.2.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 - md5: 0214a004f7cf5ac28fc10a390dfc47ee + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: - email-validator >=2.2.0,<2.2.1.0a0 license: Unlicense - size: 6690 - timestamp: 1718984720419 + size: 6552 + timestamp: 1733300828176 - kind: conda name: exceptiongroup version: 1.2.2 @@ -2853,17 +2834,18 @@ packages: - kind: conda name: filelock version: 3.16.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c depends: - - python >=3.7 + - python >=3.9 license: Unlicense - size: 17357 - timestamp: 1726613593584 + size: 17441 + timestamp: 1733240909987 - kind: conda name: fluidsynth version: 2.3.7 @@ -3462,36 +3444,38 @@ packages: - kind: conda name: h11 version: 0.14.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 - md5: b21ed0883505ba1910994f1df031a428 + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - python >=3 + - python >=3.9 - typing_extensions license: MIT license_family: MIT - size: 48251 - timestamp: 1664132995560 + size: 51846 + timestamp: 1733327599467 - kind: conda name: h2 version: 4.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: - hpack >=4.0,<5 - hyperframe >=6.0,<7 - - python >=3.6.1 + - python >=3.9 license: MIT license_family: MIT - size: 46754 - timestamp: 1634280590080 + size: 52000 + timestamp: 1733298867359 - kind: conda name: harfbuzz version: 9.0.0 @@ -3559,18 +3543,19 @@ packages: - kind: conda name: hpack version: 4.0.0 - build: pyh9f0ad1d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 25341 - timestamp: 1598856368685 + size: 29412 + timestamp: 1733299296857 - kind: conda name: httpcore version: 1.0.7 @@ -3688,18 +3673,19 @@ packages: - kind: conda name: hyperframe version: 6.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14646 - timestamp: 1619110249723 + size: 17239 + timestamp: 1733298862681 - kind: conda name: icu version: '75.1' @@ -3818,19 +3804,20 @@ packages: - kind: conda name: jinja2 version: 3.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a + md5: 08cce3151bde4ecad7885bd9fb647532 depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 111565 - timestamp: 1715127275924 + size: 110963 + timestamp: 1733217424408 - kind: conda name: jupyter_client version: 8.6.3 @@ -4842,34 +4829,35 @@ packages: timestamp: 1725268003553 - kind: conda name: libcap - version: '2.69' - build: h0f662aa_0 + version: '2.71' + build: h39aace5_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.69-h0f662aa_0.conda - sha256: 942f9564b4228609f017b6617425d29a74c43b8a030e12239fa4458e5cb6323c - md5: 25cb5999faa414e5ccb2c1388f62d3d5 + url: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda + sha256: 2bbefac94f4ab8ff7c64dc843238b6c8edcc9ff1f2b5a0a48407a904dc7ccfb2 + md5: dd19e4e3043f6948bd7454b946ee0983 depends: + - __glibc >=2.17,<3.0.a0 - attr >=2.5.1,<2.6.0a0 - - libgcc-ng >=12 + - libgcc >=13 license: BSD-3-Clause license_family: BSD - size: 100582 - timestamp: 1684162447012 + size: 102268 + timestamp: 1729940917945 - kind: conda name: libcap - version: '2.69' - build: h883460d_0 + version: '2.71' + build: h51d75a7_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.69-h883460d_0.conda - sha256: c0944a372d2d2d961cb86726fad17950219f10837bed281ac22127cb3889b06d - md5: fd395b538afc08d28c0db275a42c8078 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda + sha256: 2b66e66e6a0768e833e7edc764649679881ec0a6b37d9bf254b1ceb3b8b434ef + md5: 29f6092b6e938516ca0b042837e64fa5 depends: - attr >=2.5.1,<2.6.0a0 - - libgcc-ng >=12 + - libgcc >=13 license: BSD-3-Clause license_family: BSD - size: 103105 - timestamp: 1684162437148 + size: 106877 + timestamp: 1729940936697 - kind: conda name: libcblas version: 3.9.0 @@ -5034,18 +5022,18 @@ packages: timestamp: 1726659794676 - kind: conda name: libcxx - version: 19.1.4 + version: 19.1.5 build: ha82da77_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 + md5: 3c7be0df28ccda1d193ea6de56dcb5ff depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520678 - timestamp: 1732060258949 + size: 519819 + timestamp: 1733291654212 - kind: conda name: libdb version: 6.2.32 @@ -5468,69 +5456,6 @@ packages: license_family: GPL size: 54104 timestamp: 1729089444587 -- kind: conda - name: libgcrypt - version: 1.11.0 - build: h8af1aa0_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-1.11.0-h8af1aa0_2.conda - sha256: 21bfc7b12d374f613929f639c481bb7320470bc32210aaff0d7608c251777e90 - md5: 024bf127a7fd791500446d7a70296d00 - depends: - - libgcrypt-devel 1.11.0 h86ecc28_2 - - libgcrypt-lib 1.11.0 h86ecc28_2 - - libgcrypt-tools 1.11.0 h86ecc28_2 - license: LGPL-2.1-or-later AND GPL-2.0-or-later - size: 6233 - timestamp: 1732523338946 -- kind: conda - name: libgcrypt - version: 1.11.0 - build: ha770c72_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-1.11.0-ha770c72_2.conda - sha256: 2a6e2416db13816609541fd3fa680f1ff41dccb968ef22de2b0168e32e5902f2 - md5: 92aaf7c067a5e63ac7f035bbd8864415 - depends: - - libgcrypt-devel 1.11.0 hb9d3cd8_2 - - libgcrypt-lib 1.11.0 hb9d3cd8_2 - - libgcrypt-tools 1.11.0 hb9d3cd8_2 - license: LGPL-2.1-or-later AND GPL-2.0-or-later - size: 6177 - timestamp: 1732523212730 -- kind: conda - name: libgcrypt-devel - version: 1.11.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-devel-1.11.0-h86ecc28_2.conda - sha256: cee9c75b3b25b4fddc8fc62089285109d90a8ecc7198f1fce437051a224c0642 - md5: 2b22f46eedf64d42060359f4c9c635bf - depends: - - libgcc >=13 - - libgcrypt-lib 1.11.0 h86ecc28_2 - license: LGPL-2.1-or-later - size: 106573 - timestamp: 1732523326670 -- kind: conda - name: libgcrypt-devel - version: 1.11.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-devel-1.11.0-hb9d3cd8_2.conda - sha256: 5e066ca7a3dc6b44ecfee25b92a6941e38393f5ee82528b76ff299963f16c66a - md5: bf888b6a37286e9ae3749a114f878a6e - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libgcrypt-lib 1.11.0 hb9d3cd8_2 - license: LGPL-2.1-or-later - size: 106099 - timestamp: 1732523199857 - kind: conda name: libgcrypt-lib version: 1.11.0 @@ -5562,41 +5487,6 @@ packages: license: LGPL-2.1-or-later size: 586185 timestamp: 1732523190369 -- kind: conda - name: libgcrypt-tools - version: 1.11.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-tools-1.11.0-h86ecc28_2.conda - sha256: 4c9af6dade7b1216d5765fbe368b67963e88c60e05a56a43e3ebcae69cbc47f5 - md5: 9db2cfeedb9eff8f1ff1bae1cd014ba2 - depends: - - libgcc >=13 - - libgcrypt-lib 1.11.0 h86ecc28_2 - - libgpg-error >=1.51,<2.0a0 - license: GPL-2.0-or-later - license_family: GPL - size: 35981 - timestamp: 1732523336202 -- kind: conda - name: libgcrypt-tools - version: 1.11.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-tools-1.11.0-hb9d3cd8_2.conda - sha256: 6adba58f3f4eb3f2ba07d5f309748499989f71f55ba46acdf7f643f8da18ed9d - md5: 342389a8c9eef45fd8bb144b7522e28d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libgcrypt-lib 1.11.0 hb9d3cd8_2 - - libgpg-error >=1.51,<2.0a0 - license: GPL-2.0-or-later - license_family: GPL - size: 33257 - timestamp: 1732523208992 - kind: conda name: libgettextpo version: 0.22.5 @@ -6300,6 +6190,89 @@ packages: license_family: BSD size: 15823 timestamp: 1729643275943 +- kind: conda + name: liblzma + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 + md5: faa0ab222b9d12a52a8ebc655c9236f3 + depends: + - __osx >=11.0 + license: 0BSD + size: 98836 + timestamp: 1733321533638 +- kind: conda + name: liblzma + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f + md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + depends: + - libgcc >=13 + license: 0BSD + size: 124115 + timestamp: 1733323693681 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 + md5: 137c535dddd880f844f33ed91b8abdba + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111223 + timestamp: 1733321312512 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 + md5: 89955d2470cbacea3d5e069d67c94f44 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD + size: 112941 + timestamp: 1733321552604 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 + md5: 27995ae8bc93eeb949315655daa19d3c + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD + size: 376767 + timestamp: 1733323860026 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a + md5: 7069f4de645461447f1ab7736c94db26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD + size: 375452 + timestamp: 1733321322415 - kind: conda name: libmad version: 0.15.1b @@ -7053,43 +7026,41 @@ packages: timestamp: 1729089498541 - kind: conda name: libsystemd0 - version: '256.7' - build: h2774228_1 - build_number: 1 + version: '256.9' + build: h2774228_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.7-h2774228_1.conda - sha256: fa9cfbacaa2f14072b07ff9c832a8750627755346a1472f116a94aecea28f08e - md5: ad328c530a12a8798776e5f03942090f + url: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.9-h2774228_0.conda + sha256: a93e45c12c2954942a994ff3ffc8b9a144261288032da834ed80a6210708ad49 + md5: 7b283ff97a87409a884bc11283855c17 depends: - __glibc >=2.17,<3.0.a0 - - libcap >=2.69,<2.70.0a0 + - libcap >=2.71,<2.72.0a0 - libgcc >=13 - - libgcrypt >=1.11.0,<2.0a0 + - libgcrypt-lib >=1.11.0,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: LGPL-2.1-or-later - size: 411535 - timestamp: 1729786797378 + size: 410424 + timestamp: 1733312416327 - kind: conda name: libsystemd0 - version: '256.7' - build: hd54d049_1 - build_number: 1 + version: '256.9' + build: hd54d049_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.7-hd54d049_1.conda - sha256: 6deceabf4a4109293aacba77a61a83d5bdef028b879b29d3b819937c80de8909 - md5: c44e82f6be3d65cf0589f1182e162ce8 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.9-hd54d049_0.conda + sha256: d04ea4fa1b3282029039ec28054f53b0c5b3ef044303450e5684e2a690e7aa52 + md5: 9ee06ecb3e342bf03e163af5080acd9f depends: - - libcap >=2.69,<2.70.0a0 + - libcap >=2.71,<2.72.0a0 - libgcc >=13 - - libgcrypt >=1.11.0,<2.0a0 + - libgcrypt-lib >=1.11.0,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: LGPL-2.1-or-later - size: 430774 - timestamp: 1729786916983 + size: 430930 + timestamp: 1733311785480 - kind: conda name: libthrift version: 0.21.0 @@ -7672,27 +7643,29 @@ packages: - kind: conda name: markdown-it-py version: 3.0.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 - md5: 93a8e71256479c62074356ef6ebf501b + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: - mdurl >=0.1,<1 - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 64356 - timestamp: 1686175179621 + size: 64430 + timestamp: 1733250550053 - kind: conda name: markupsafe version: 3.0.2 - build: py312h178313f_0 + build: py312h178313f_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 - md5: a755704ea0e2503f8c227d84829a8e81 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -7702,16 +7675,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24878 - timestamp: 1729351558563 + size: 24604 + timestamp: 1733219911494 - kind: conda name: markupsafe version: 3.0.2 - build: py312h74ce7d3_0 + build: py312h74ce7d3_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - sha256: 997baf7f46bce112f6e0390efaa7fbb892b8f31567d3c554f08ac636774d74f7 - md5: 8992b90e8374193d53118f7651db0b73 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -7720,16 +7694,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25013 - timestamp: 1729352489213 + size: 25079 + timestamp: 1733220639175 - kind: conda name: markupsafe version: 3.0.2 - build: py312ha0ccf2a_0 + build: py312h998013c_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d - md5: c6ff9f291d011c9d4f0b840f49435c64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -7739,80 +7714,80 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24495 - timestamp: 1729351534830 + size: 24048 + timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e - md5: 9c25081ace6ad2c13675cf0123109cb9 - depends: - - max-core ==24.6.0.dev2024120306 release - - max-python >=24.6.0.dev2024120306,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120306 release - - mblack ==24.6.0.dev2024120306 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f + md5: 09947b7aa3a3c35b413b7c0d118126e3 + depends: + - max-core ==24.6.0.dev2024120416 release + - max-python >=24.6.0.dev2024120416,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120416 release license: LicenseRef-Modular-Proprietary - size: 9929 - timestamp: 1733209293577 + size: 9925 + timestamp: 1733332193356 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 - md5: c249d77d8e5885dd0eacd9028131413f + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef + md5: 43a976936171480fe7dbc2fed1224312 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254711372 - timestamp: 1733209193854 + size: 245904359 + timestamp: 1733332193354 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea - md5: e5b6ae7316dc2b08a52cee8f27b4f484 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 + md5: 15cac805514c6a381a9a50ee3a86de25 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258488596 - timestamp: 1733209293575 + size: 249618446 + timestamp: 1733332472125 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 - md5: 05acbd2d9cf25aa913a979aa9802c194 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 + md5: c27c6f67be3abffbf559bfd50852b493 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220248523 - timestamp: 1733209020078 + size: 210212276 + timestamp: 1733332258535 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 - md5: 4bdce0c1dd562e22566551d578103d2f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 + md5: 78af7733b4858c1bd882279a45e98795 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -7822,7 +7797,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -7835,18 +7809,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128537272 - timestamp: 1733209193862 + size: 122878721 + timestamp: 1733332193368 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e - md5: e7d3ebeaaeb2bd99167fda861a7e7aba + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 + md5: 55ff43da6401cdd96073ae044b428afd depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -7856,7 +7830,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -7869,18 +7842,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132223349 - timestamp: 1733209293584 + size: 126526187 + timestamp: 1733332472138 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 - md5: 9859f8c88c81c18baaddd15be03d259c + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 + md5: b84b205dbce4660cdea5b0e3cda227e9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -7890,7 +7863,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -7903,17 +7875,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119113363 - timestamp: 1733209020082 + size: 111629688 + timestamp: 1733332258538 - kind: conda name: mblack - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac - md5: f77eafd932de3ae309643ea716ba3c3a + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 + md5: 85c700946ce4a5ce8d11f5ee66b477cf depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7923,40 +7895,41 @@ packages: - platformdirs >=2 - python license: MIT - size: 130649 - timestamp: 1733209293580 + size: 130641 + timestamp: 1733332193362 - kind: conda name: mdurl version: 0.1.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 - md5: 776a8dd9e824f77abac30e6ef43a8f7a + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14680 - timestamp: 1704317789138 + size: 14465 + timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc - md5: 8bb40dfabe84757d93d3053fdf4b0a58 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 + md5: 411a1d159867c56043991824d1ee88d9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22940 - timestamp: 1733209293581 + size: 22946 + timestamp: 1733332193363 - kind: conda name: mpg123 version: 1.32.9 @@ -8115,18 +8088,19 @@ packages: - kind: conda name: mypy_extensions version: 1.0.0 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 - md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 10492 - timestamp: 1675543414256 + size: 10854 + timestamp: 1733230986902 - kind: conda name: ncurses version: '6.5' @@ -8411,66 +8385,6 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-instrumentation - version: 0.49b2 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - sha256: ee20ad159bc040642fcbce1b25f8a9fc1d788b53c6bf593a0891bf7887ec7c5f - md5: 13d714acd504cd0141688c908521c0b9 - depends: - - opentelemetry-api ~=1.4 - - opentelemetry-semantic-conventions 0.49b2 - - packaging >=18.0 - - python >=3.9 - - setuptools >=16.0 - - wrapt <2.0.0,>=1.0.0 - license: Apache-2.0 - license_family: APACHE - size: 31616 - timestamp: 1732070359772 -- kind: conda - name: opentelemetry-instrumentation-asgi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - sha256: 7b2b4da037baa506a82c5e3e711905f34448441e069a6e3affb0e4917b3ee5e0 - md5: 482ad6cdc507689d5c33eb22aa16d83e - depends: - - asgiref ~=3.0 - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 23749 - timestamp: 1732086813641 -- kind: conda - name: opentelemetry-instrumentation-fastapi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - sha256: e853f62b4c56e308f349a3f360cf4d6aa814a9dc926e727c25effcf4121af68c - md5: 59c01fcead989ba58c5dc79e3ac3aab3 - depends: - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-instrumentation-asgi 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 20288 - timestamp: 1732093785486 - kind: conda name: opentelemetry-proto version: 1.28.2 @@ -8523,21 +8437,6 @@ packages: license_family: APACHE size: 81534 timestamp: 1732067304518 -- kind: conda - name: opentelemetry-util-http - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - sha256: 73bb1cbb640b0732c1a04764a9704bb048ab77d6cb9c6439eb50ec0ecf926ede - md5: f267c60fc629a9bd1aa388f6ed8ea0ab - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - size: 19241 - timestamp: 1732081026829 - kind: conda name: opusfile version: '0.12' @@ -8746,18 +8645,19 @@ packages: - kind: conda name: pathspec version: 0.12.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d - md5: 17064acba08d3686f1135b5ec1b32b12 + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 depends: - - python >=3.7 + - python >=3.9 license: MPL-2.0 license_family: MOZILLA - size: 41173 - timestamp: 1702250135032 + size: 41075 + timestamp: 1733233471940 - kind: conda name: pcre2 version: '10.44' @@ -8931,18 +8831,19 @@ packages: - kind: conda name: platformdirs version: 4.3.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 20625 - timestamp: 1726613611845 + size: 20448 + timestamp: 1733232756001 - kind: conda name: portaudio version: 19.6.0 @@ -9043,19 +8944,19 @@ packages: timestamp: 1693881734349 - kind: conda name: prometheus_client - version: 0.21.0 + version: 0.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 - md5: 07e9550ddff45150bfc7da146268e165 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 49024 - timestamp: 1726902073034 + size: 49002 + timestamp: 1733327434163 - kind: conda name: propcache version: 0.2.0 @@ -9404,13 +9305,13 @@ packages: timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.10.2 + version: 2.10.3 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 - md5: e661b732b4d7514ace55a01873f03201 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 + md5: 194ef7f91286978521350f171b117f01 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.1 @@ -9419,8 +9320,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 316818 - timestamp: 1732689481710 + size: 317037 + timestamp: 1733316963547 - kind: conda name: pydantic-core version: 2.27.1 @@ -9585,18 +9486,19 @@ packages: - kind: conda name: pygments version: 2.18.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a depends: - - python >=3.8 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 879295 - timestamp: 1714846885370 + size: 876700 + timestamp: 1733221731178 - kind: conda name: pyinstrument version: 5.0.0 @@ -9651,20 +9553,20 @@ packages: - kind: conda name: pysocks version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 + build: pyha55dd90_7 + build_number: 7 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18981 - timestamp: 1661604969727 + size: 21085 + timestamp: 1733217331982 - kind: conda name: python version: 3.12.7 @@ -9766,23 +9668,25 @@ packages: - python >=3.9 - six >=1.5 license: Apache-2.0 + license_family: APACHE size: 222505 timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c - md5: c2997ea9360ac4e015658804a7a84f94 + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 24278 - timestamp: 1706018281544 + size: 24215 + timestamp: 1733243277223 - kind: conda name: python-json-logger version: 2.0.7 @@ -9801,33 +9705,35 @@ packages: - kind: conda name: python-multipart version: 0.0.19 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 - md5: fe524346d3a9aa0aaf353dc39f7d1715 + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f + md5: c74333aa447ed2b94d49e5db23da5de6 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27780 - timestamp: 1733062326577 + size: 27768 + timestamp: 1733323160772 - kind: conda name: python-tzdata version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 - md5: 986287f89929b2d629bd6ef6497dc307 + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 142527 - timestamp: 1727140688093 + size: 142235 + timestamp: 1733235414217 - kind: conda name: python-xxhash version: 3.5.0 @@ -10268,6 +10174,7 @@ packages: constrains: - chardet >=3.0.2,<6 license: Apache-2.0 + license_family: APACHE size: 58723 timestamp: 1733217126197 - kind: conda @@ -10631,18 +10538,19 @@ packages: - kind: conda name: shellingham version: 1.5.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb - md5: d08db09a552699ee9e7eec56b4eb3899 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 14568 - timestamp: 1698144516278 + size: 14462 + timestamp: 1733301007770 - kind: conda name: six version: 1.16.0 @@ -10707,18 +10615,19 @@ packages: - kind: conda name: sniffio version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b - md5: 490730480d76cf9c8f8f2849719c6e2b + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 depends: - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 15064 - timestamp: 1708953086199 + size: 15019 + timestamp: 1733244175724 - kind: conda name: sse-starlette version: 2.1.3 @@ -11019,58 +10928,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - sha256: 4d7f1c77b928a66ae3b0089e288e7fdeb826bf0dabba9799488017e6a9b84f38 - md5: 9eb8a3f5d36ca3e7f686e7a5d85aff72 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 + md5: cf9393f5733c7277b1a5f79145f8485b depends: - python >=3.9 - - typer-slim-standard 0.14.0 hd8ed1ab_0 + - typer-slim-standard 0.15.0 hd8ed1ab_0 license: MIT license_family: MIT - size: 54637 - timestamp: 1732848384457 + size: 56455 + timestamp: 1733279871129 - kind: conda name: typer-slim - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - sha256: 883969c10b9837bb18a340ffb01a984ef6b4655fc72ff05aeb7bc659c9a1229d - md5: 3674a4cd7fd8e8a7277af2b30965925d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc + md5: 629fef89115de5a907fb9765cdd45b26 depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: + - typer >=0.15.0,<0.15.1.0a0 - shellingham >=1.3.0 - rich >=10.11.0 - - typer >=0.14.0,<0.14.1.0a0 license: MIT license_family: MIT - size: 43504 - timestamp: 1732848371202 + size: 43480 + timestamp: 1733279858535 - kind: conda name: typer-slim-standard - version: 0.14.0 + version: 0.15.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - sha256: 0e09e393e75028a0e827c7177e0fb1a070c87756e47b5ae6418423e22b10dfac - md5: 9e1e1f9c84add9637ca715f8fb71a83f + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 + md5: a4746fc9efbff02c1a288d8fcd8ffba9 depends: - rich - shellingham - - typer-slim 0.14.0 pyhd8ed1ab_0 + - typer-slim 0.15.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 49180 - timestamp: 1732848371718 + size: 50259 + timestamp: 1733279859017 - kind: conda name: typing-extensions version: 4.12.2 @@ -11138,44 +11047,46 @@ packages: - kind: conda name: uvicorn version: 0.32.1 - build: pyh31011fe_0 + build: pyh31011fe_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - sha256: a310c494c817a9f6c985fc6d2772acb953a20170d03b0eabfae0e9d8c76c97ee - md5: fa77fc8110207b3bfc5ccc9d316744f4 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 + md5: 7832640e5e302059e844d56f410487a6 depends: - __unix - click >=7.0 - h11 >=0.8 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49393 - timestamp: 1732185242260 + size: 49340 + timestamp: 1733332048141 - kind: conda name: uvicorn-standard version: 0.32.1 - build: h31011fe_0 + build: h31011fe_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - sha256: 52545f7c88a7c779376900de5f9d81ce36738cd8770b543e89592ad7d1003c40 - md5: 49c2820e0f39cb710becd856ff14d683 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe + md5: 0c233d5c71d398cf01d0281e72194005 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.1 pyh31011fe_0 + - uvicorn 0.32.1 pyh31011fe_1 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7136 - timestamp: 1732185243035 + size: 7094 + timestamp: 1733332049165 - kind: conda name: uvloop version: 0.21.0 @@ -11460,38 +11371,37 @@ packages: timestamp: 1727634669421 - kind: conda name: xorg-libx11 - version: 1.8.9 - build: he755bbd_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.9-he755bbd_2.conda - sha256: bcd9ebdd7ca25d8ab1eb4f3f919113e264a8ad84fa713c48e737e9167a82fb4b - md5: 7acc45f80415e6ec352b729105dc0375 + version: 1.8.10 + build: h4f16b4b_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_1.conda + sha256: f53994d54f0604df881c4e984279b3cf6a1648a22d4b2113e2c89829968784c9 + md5: 125f34a17d7b4bea418a83904ea82ea6 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libxcb >=1.17.0,<2.0a0 - - xorg-xorgproto license: MIT license_family: MIT - size: 863528 - timestamp: 1727352755656 + size: 837524 + timestamp: 1733324962639 - kind: conda name: xorg-libx11 version: 1.8.10 - build: h4f16b4b_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda - sha256: c4650634607864630fb03696474a0535f6fce5fda7d81a6462346e071b53dfa7 - md5: 0b666058a179b744a622d0a4a0c56353 + build: hca56bd8_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.10-hca56bd8_1.conda + sha256: 5604f295906dfc496a4590e8ec19f775ccb40c5d503e6dfbac0781b5446b5391 + md5: 6e3e980940b26a060e553266ae0181a9 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libxcb >=1.17.0,<2.0a0 - - xorg-xorgproto license: MIT license_family: MIT - size: 838308 - timestamp: 1727356837875 + size: 858427 + timestamp: 1733325062374 - kind: conda name: xorg-libxau version: 1.0.11 @@ -11720,41 +11630,142 @@ packages: timestamp: 1689951608120 - kind: conda name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 + version: 5.6.3 + build: h2dbfc1b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec + md5: da081cb850e57b0a0a242bab9087fbeb depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 418368 - timestamp: 1660346797927 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + - liblzma-devel 5.6.3 h86ecc28_0 + - xz-gpl-tools 5.6.3 h2dbfc1b_0 + - xz-tools 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23448 + timestamp: 1733324353894 - kind: conda name: xz - version: 5.2.6 - build: h57fd34a_0 + version: 5.6.3 + build: h9a6d368_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - size: 235693 - timestamp: 1660346961024 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 + md5: 86674fa432df20be6feea4bd8fec0668 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + - liblzma-devel 5.6.3 h39f12f2_0 + - xz-gpl-tools 5.6.3 h9a6d368_0 + - xz-tools 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23570 + timestamp: 1733321627935 - kind: conda name: xz - version: 5.2.6 - build: h9cdd2b7_0 + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 + md5: 504333561007fbf0af129f0cee4f5652 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + - liblzma-devel 5.6.3 hb9d3cd8_0 + - xz-gpl-tools 5.6.3 hbcc6ac9_0 + - xz-tools 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23435 + timestamp: 1733321352996 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h2dbfc1b_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 - md5: 83baad393a31d59c20b63ba4da6592df + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca + md5: b0245c3aad4592510bb0c19212c1bded depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 440555 - timestamp: 1660348056328 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33355 + timestamp: 1733324193303 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h9a6d368_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd + md5: 9e4519aef300966683764ccbbaa89da4 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33343 + timestamp: 1733321610703 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db + md5: e4f1e59ca2971e8d0fdde0928c3f7b7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33299 + timestamp: 1733321343126 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda + sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 + md5: 10855380caa384c8388b93ef29c7bd04 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later + size: 81129 + timestamp: 1733321582233 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda + sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 + md5: 0136c7aa78b4d887c9fb6dbf39749778 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later + size: 95353 + timestamp: 1733324033407 +- kind: conda + name: xz-tools + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda + sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 + md5: 40270c1e058fd1d31caee8bf2c68fc3a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later + size: 89832 + timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 diff --git a/examples/magic.lock b/examples/magic.lock index 2e04f1ffa4..ed40f02b5d 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -8,12 +8,11 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py311h2dc5d0c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda @@ -23,10 +22,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -40,36 +39,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py311hf29c0ef_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -106,6 +105,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -129,17 +130,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py311h459d7ec_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda @@ -148,38 +149,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py311h49e9ac3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py311h9ecbd09_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py311hfdbb021_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py311h4854187_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.10-hc5c86c4_3_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -193,10 +190,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -205,15 +202,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py311h9ecbd09_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py311h9ecbd09_0.conda @@ -221,7 +218,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda @@ -230,12 +229,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py311h58d527c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda @@ -245,10 +243,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -262,37 +260,37 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py311h14e8bb7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 @@ -329,6 +327,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -352,17 +352,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py311hcd402e7_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda @@ -371,38 +371,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py311hb2a0dd2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py311ha879c10_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py311h89d996e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py311ha6d2531_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.10-h5d932e8_3_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py311h5487e9b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -416,10 +412,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda @@ -428,15 +424,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py311ha879c10_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py311ha879c10_0.conda @@ -444,7 +440,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda @@ -452,12 +450,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py311h4921393_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -467,10 +464,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -484,36 +481,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py311h3a79f62_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py311hae2e1ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda @@ -531,7 +528,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -546,6 +543,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda @@ -565,17 +564,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py311heffc1b2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda @@ -584,38 +583,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py311h3894ae9_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py311h460d6c5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py311h6885ffc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py311he04fa90_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.10-hc51fdd5_3_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py311h460d6c5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -628,10 +623,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py311h481aa64_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -640,15 +635,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py311hae2e1ce_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py311h3ff9189_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py311h917b07b_0.conda @@ -656,7 +651,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda @@ -713,18 +710,18 @@ packages: - kind: conda name: aiohappyeyeballs version: 2.4.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 - md5: 8d6f8a679aa0272ba8d6092ce4824870 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 depends: - python >=3.9 license: PSF-2.0 - license_family: PSF - size: 19310 - timestamp: 1733135584059 + size: 19351 + timestamp: 1733332029649 - kind: conda name: aiohttp version: 3.11.9 @@ -800,35 +797,36 @@ packages: - kind: conda name: aiosignal version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 - md5: d1e1eb7e21a9e2c74279d87dafb68156 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db + md5: d736bd1b8904d7593dce4893e58a7881 depends: - frozenlist >=1.1.0 - - python >=3.7 + - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 12730 - timestamp: 1667935912504 + size: 13157 + timestamp: 1733332198143 - kind: conda name: annotated-types version: 0.7.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f - md5: 7e9f4612544c8edbfd6afad17f1bd045 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: - - python >=3.7 + - python >=3.9 - typing-extensions >=4.0.0 license: MIT license_family: MIT - size: 18235 - timestamp: 1716290348421 + size: 18074 + timestamp: 1733247158254 - kind: conda name: anyio version: 4.6.2.post1 @@ -851,23 +849,6 @@ packages: license_family: MIT size: 109864 timestamp: 1728935803440 -- kind: conda - name: asgiref - version: 3.8.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 - md5: 21187c8276f87b6aedfe63c267a6eed7 - depends: - - python >=3.9 - - typing_extensions >=4 - license: BSD-3-Clause - license_family: BSD - size: 26436 - timestamp: 1733215704904 - kind: conda name: attrs version: 24.2.0 @@ -1315,12 +1296,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 - md5: e09cd76e50ce09ec14c17109da5c6502 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a + md5: 1046cf15a47f06a0af07f674e477d807 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1332,16 +1313,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117467 - timestamp: 1733098782199 + size: 117398 + timestamp: 1733299233564 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d - md5: 171850b890600458ae6c990e78f1fa23 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 + md5: 7d029b9aa9decf4c0fb8a9a8940c9906 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1354,16 +1335,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113536 - timestamp: 1733098705479 + size: 113660 + timestamp: 1733299194447 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff - md5: 893e668d99fa4b31eef9dc5b19c21b9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 + md5: 02f78a084e101dee30c794f963549de4 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1374,8 +1355,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97145 - timestamp: 1733098874599 + size: 97136 + timestamp: 1733299356527 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1477,13 +1458,14 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h7939e66_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d - md5: 5e573a52a1cd20f81d7fdf1db4f4583a + build: h159bff8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda + sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 + md5: c498e6490834aacf7835c96403862881 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1491,23 +1473,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283670 - timestamp: 1733150929992 + size: 354822 + timestamp: 1733333950713 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: ha226bf8_1 - build_number: 1 + build: h8474b10_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 - md5: 81da0b5f65ab08e3919d6eadf08b5776 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda + sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba + md5: 54c898f166bcfbe06c2b7ac36360f371 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1517,24 +1499,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236505 - timestamp: 1733151090562 + size: 235829 + timestamp: 1733334077172 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: hdec8b0f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd - md5: 40647232fad98f92be8c6050a7e0c2bd + build: hffbb33f_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda + sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 + md5: fb8be2af168b63e0b77076a1dc6baa85 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1542,14 +1523,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354710 - timestamp: 1733150818238 + size: 284031 + timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2171,49 +2152,52 @@ packages: - kind: conda name: charset-normalizer version: 3.4.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e + md5: 6581a17bba6b948bb60130026404a9d6 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 47314 - timestamp: 1728479405343 + size: 47533 + timestamp: 1733218182393 - kind: conda name: click version: 8.1.7 - build: unix_pyh707e725_0 + build: unix_pyh707e725_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec - md5: f3ad426304898027fc619827ff428eca + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b + md5: cb8e52f28f5e592598190c562e7b5bf1 depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84437 - timestamp: 1692311973840 + size: 84513 + timestamp: 1733221925078 - kind: conda name: colorama version: 0.4.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 25170 - timestamp: 1666700778190 + size: 27011 + timestamp: 1733218222191 - kind: conda name: datasets version: 2.14.4 @@ -2277,58 +2261,61 @@ packages: - kind: conda name: dnspython version: 2.7.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 - md5: 0adf8f63d500d20418656289249533f9 + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: - - python >=3.9.0,<4.0.0 + - python >=3.9,<4.0.0 - sniffio constrains: - - cryptography >=43 + - aioquic >=1.0.0 - wmi >=1.5.1 - - h2 >=4.1.0 + - httpx >=0.26.0 - trio >=0.23 + - cryptography >=43 - httpcore >=1.0.0 - - aioquic >=1.0.0 - - httpx >=0.26.0 - idna >=3.7 + - h2 >=4.1.0 license: ISC license_family: OTHER - size: 172740 - timestamp: 1728178868478 + size: 172172 + timestamp: 1733256829961 - kind: conda name: email-validator version: 2.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 - md5: 3067adf57ee658ddf5bfad47b0041ce4 + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 depends: - dnspython >=2.0.0 - idna >=2.0.0 - - python >=3.7 + - python >=3.9 license: Unlicense - size: 44157 - timestamp: 1718984716782 + size: 44401 + timestamp: 1733300827551 - kind: conda name: email_validator version: 2.2.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 - md5: 0214a004f7cf5ac28fc10a390dfc47ee + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: - email-validator >=2.2.0,<2.2.1.0a0 license: Unlicense - size: 6690 - timestamp: 1718984720419 + size: 6552 + timestamp: 1733300828176 - kind: conda name: exceptiongroup version: 1.2.2 @@ -2389,17 +2376,18 @@ packages: - kind: conda name: filelock version: 3.16.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c depends: - - python >=3.7 + - python >=3.9 license: Unlicense - size: 17357 - timestamp: 1726613593584 + size: 17441 + timestamp: 1733240909987 - kind: conda name: freetype version: 2.12.1 @@ -2629,51 +2617,54 @@ packages: - kind: conda name: h11 version: 0.14.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 - md5: b21ed0883505ba1910994f1df031a428 + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - python >=3 + - python >=3.9 - typing_extensions license: MIT license_family: MIT - size: 48251 - timestamp: 1664132995560 + size: 51846 + timestamp: 1733327599467 - kind: conda name: h2 version: 4.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: - hpack >=4.0,<5 - hyperframe >=6.0,<7 - - python >=3.6.1 + - python >=3.9 license: MIT license_family: MIT - size: 46754 - timestamp: 1634280590080 + size: 52000 + timestamp: 1733298867359 - kind: conda name: hpack version: 4.0.0 - build: pyh9f0ad1d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 25341 - timestamp: 1598856368685 + size: 29412 + timestamp: 1733299296857 - kind: conda name: httpcore version: 1.0.7 @@ -2791,18 +2782,19 @@ packages: - kind: conda name: hyperframe version: 6.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14646 - timestamp: 1619110249723 + size: 17239 + timestamp: 1733298862681 - kind: conda name: icu version: '75.1' @@ -2853,19 +2845,20 @@ packages: - kind: conda name: jinja2 version: 3.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a + md5: 08cce3151bde4ecad7885bd9fb647532 depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 111565 - timestamp: 1715127275924 + size: 110963 + timestamp: 1733217424408 - kind: conda name: jupyter_client version: 8.6.3 @@ -3846,18 +3839,18 @@ packages: timestamp: 1726659794676 - kind: conda name: libcxx - version: 19.1.4 + version: 19.1.5 build: ha82da77_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 + md5: 3c7be0df28ccda1d193ea6de56dcb5ff depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520678 - timestamp: 1732060258949 + size: 519819 + timestamp: 1733291654212 - kind: conda name: libdeflate version: '1.22' @@ -4678,6 +4671,89 @@ packages: license_family: BSD size: 15823 timestamp: 1729643275943 +- kind: conda + name: liblzma + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 + md5: faa0ab222b9d12a52a8ebc655c9236f3 + depends: + - __osx >=11.0 + license: 0BSD + size: 98836 + timestamp: 1733321533638 +- kind: conda + name: liblzma + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f + md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + depends: + - libgcc >=13 + license: 0BSD + size: 124115 + timestamp: 1733323693681 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 + md5: 137c535dddd880f844f33ed91b8abdba + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111223 + timestamp: 1733321312512 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 + md5: 89955d2470cbacea3d5e069d67c94f44 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD + size: 112941 + timestamp: 1733321552604 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 + md5: 27995ae8bc93eeb949315655daa19d3c + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD + size: 376767 + timestamp: 1733323860026 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a + md5: 7069f4de645461447f1ab7736c94db26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD + size: 375452 + timestamp: 1733321322415 - kind: conda name: libnghttp2 version: 1.64.0 @@ -5773,27 +5849,29 @@ packages: - kind: conda name: markdown-it-py version: 3.0.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 - md5: 93a8e71256479c62074356ef6ebf501b + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: - mdurl >=0.1,<1 - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 64356 - timestamp: 1686175179621 + size: 64430 + timestamp: 1733250550053 - kind: conda name: markupsafe version: 3.0.2 - build: py311h2dc5d0c_0 + build: py311h2dc5d0c_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_0.conda - sha256: 364a0d55abc4c60bc575c81a4acc9e98ea27565147d4d4dc672bad4b2d069710 - md5: 15e4dadd59e93baad7275249f10b9472 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda + sha256: 0291d90706ac6d3eea73e66cd290ef6d805da3fad388d1d476b8536ec92ca9a8 + md5: 6565a715337ae279e351d0abd8ffe88a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5803,16 +5881,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25591 - timestamp: 1729351519326 + size: 25354 + timestamp: 1733219879408 - kind: conda name: markupsafe version: 3.0.2 - build: py311h56c23cb_0 + build: py311h4921393_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h56c23cb_0.conda - sha256: 74bbdf6dbfe561026fed5c7d5c1a123e6dff0fedc5bc7ed0c6e9037c95ca96d7 - md5: be48a4cc178a91af3b1ccd58c14efde2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda + sha256: 4f738a7c80e34e5e5d558e946b06d08e7c40e3cc4bdf08140bf782c359845501 + md5: 249e2f6f5393bb6b36b3d3a3eebdcdf9 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -5822,16 +5901,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25180 - timestamp: 1729351536390 + size: 24976 + timestamp: 1733219849253 - kind: conda name: markupsafe version: 3.0.2 - build: py311ha09ea12_0 + build: py311ha09ea12_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_0.conda - sha256: 8714908e7190f362bc04636e6ff28ae8a3c008bbc92b126839ce7130c0c975f5 - md5: f40833364f9c3e847cc35a94c055f5c2 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_1.conda + sha256: 0af0d9357e309876adf6ca61fa574afee74741fb1628755ce1f36028d294e854 + md5: eb3611be0cc15845bf6e5075adc520ee depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -5840,80 +5920,80 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25805 - timestamp: 1729352296161 + size: 25787 + timestamp: 1733220925299 - kind: conda name: max - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e - md5: 9c25081ace6ad2c13675cf0123109cb9 - depends: - - max-core ==24.6.0.dev2024120306 release - - max-python >=24.6.0.dev2024120306,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120306 release - - mblack ==24.6.0.dev2024120306 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f + md5: 09947b7aa3a3c35b413b7c0d118126e3 + depends: + - max-core ==24.6.0.dev2024120416 release + - max-python >=24.6.0.dev2024120416,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120416 release license: LicenseRef-Modular-Proprietary - size: 9929 - timestamp: 1733209293577 + size: 9925 + timestamp: 1733332193356 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 - md5: c249d77d8e5885dd0eacd9028131413f + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef + md5: 43a976936171480fe7dbc2fed1224312 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254711372 - timestamp: 1733209193854 + size: 245904359 + timestamp: 1733332193354 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea - md5: e5b6ae7316dc2b08a52cee8f27b4f484 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 + md5: 15cac805514c6a381a9a50ee3a86de25 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258488596 - timestamp: 1733209293575 + size: 249618446 + timestamp: 1733332472125 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 - md5: 05acbd2d9cf25aa913a979aa9802c194 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 + md5: c27c6f67be3abffbf559bfd50852b493 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220248523 - timestamp: 1733209020078 + size: 210212276 + timestamp: 1733332258535 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.11release.conda - sha256: fe78fef13dabb20d1a64aa0a0f1abb668a28ba18221f39a659b73236dbae9a60 - md5: 86e43abaa5b98cfd229e964be3a614ce + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.11release.conda + sha256: 0f547380f5fba946ea66d441a4ff39914e3795922b9c13c0258c18667ecfd67e + md5: 6279cbb54248de909cc3056f610bf086 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.11.* - pillow - fastapi @@ -5923,7 +6003,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5936,18 +6015,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128574125 - timestamp: 1733209193860 + size: 122937776 + timestamp: 1733332193364 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.11release.conda - sha256: ba069825f4ef3ee3eb8079b652666d0a4d80ddf76e0cfe12782bb88f630d181a - md5: d6beb27837f451771445062607b45f38 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.11release.conda + sha256: efc9949779b7999d5245f8de5759efcb8beaef95f36fcf9ab3d91562dffc7584 + md5: bb9bf7a056bc2d8e72a8d060c01f93f7 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.11.* - pillow - fastapi @@ -5957,7 +6036,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5970,18 +6048,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132245621 - timestamp: 1733209293581 + size: 126566383 + timestamp: 1733332472134 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.11release.conda - sha256: e9ca73474ecae1d88742e3f38067741ad532bea307d92ef8bbc4b03434e71502 - md5: 7cfbd7cb82332bc7e992f1297d0fb9a3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.11release.conda + sha256: 572567eda8da043e5de45a0cbbe778f13f5fc441eece20a0ff60a7a4638fee21 + md5: 809b87bc94c23925ee4c36636ce5bdce depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.11.* - pillow - fastapi @@ -5991,7 +6069,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -6004,17 +6081,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119124363 - timestamp: 1733209020081 + size: 111633050 + timestamp: 1733332258537 - kind: conda name: mblack - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac - md5: f77eafd932de3ae309643ea716ba3c3a + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 + md5: 85c700946ce4a5ce8d11f5ee66b477cf depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6024,40 +6101,41 @@ packages: - platformdirs >=2 - python license: MIT - size: 130649 - timestamp: 1733209293580 + size: 130641 + timestamp: 1733332193362 - kind: conda name: mdurl version: 0.1.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 - md5: 776a8dd9e824f77abac30e6ef43a8f7a + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14680 - timestamp: 1704317789138 + size: 14465 + timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc - md5: 8bb40dfabe84757d93d3053fdf4b0a58 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 + md5: 411a1d159867c56043991824d1ee88d9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22940 - timestamp: 1733209293581 + size: 22946 + timestamp: 1733332193363 - kind: conda name: multidict version: 6.1.0 @@ -6170,18 +6248,19 @@ packages: - kind: conda name: mypy_extensions version: 1.0.0 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 - md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 10492 - timestamp: 1675543414256 + size: 10854 + timestamp: 1733230986902 - kind: conda name: ncurses version: '6.5' @@ -6466,66 +6545,6 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-instrumentation - version: 0.49b2 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - sha256: ee20ad159bc040642fcbce1b25f8a9fc1d788b53c6bf593a0891bf7887ec7c5f - md5: 13d714acd504cd0141688c908521c0b9 - depends: - - opentelemetry-api ~=1.4 - - opentelemetry-semantic-conventions 0.49b2 - - packaging >=18.0 - - python >=3.9 - - setuptools >=16.0 - - wrapt <2.0.0,>=1.0.0 - license: Apache-2.0 - license_family: APACHE - size: 31616 - timestamp: 1732070359772 -- kind: conda - name: opentelemetry-instrumentation-asgi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - sha256: 7b2b4da037baa506a82c5e3e711905f34448441e069a6e3affb0e4917b3ee5e0 - md5: 482ad6cdc507689d5c33eb22aa16d83e - depends: - - asgiref ~=3.0 - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 23749 - timestamp: 1732086813641 -- kind: conda - name: opentelemetry-instrumentation-fastapi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - sha256: e853f62b4c56e308f349a3f360cf4d6aa814a9dc926e727c25effcf4121af68c - md5: 59c01fcead989ba58c5dc79e3ac3aab3 - depends: - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-instrumentation-asgi 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 20288 - timestamp: 1732093785486 - kind: conda name: opentelemetry-proto version: 1.28.2 @@ -6578,21 +6597,6 @@ packages: license_family: APACHE size: 81534 timestamp: 1732067304518 -- kind: conda - name: opentelemetry-util-http - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - sha256: 73bb1cbb640b0732c1a04764a9704bb048ab77d6cb9c6439eb50ec0ecf926ede - md5: f267c60fc629a9bd1aa388f6ed8ea0ab - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - size: 19241 - timestamp: 1732081026829 - kind: conda name: orc version: 2.0.3 @@ -6748,18 +6752,19 @@ packages: - kind: conda name: pathspec version: 0.12.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d - md5: 17064acba08d3686f1135b5ec1b32b12 + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 depends: - - python >=3.7 + - python >=3.9 license: MPL-2.0 license_family: MOZILLA - size: 41173 - timestamp: 1702250135032 + size: 41075 + timestamp: 1733233471940 - kind: conda name: pillow version: 11.0.0 @@ -6837,33 +6842,34 @@ packages: - kind: conda name: platformdirs version: 4.3.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 20625 - timestamp: 1726613611845 + size: 20448 + timestamp: 1733232756001 - kind: conda name: prometheus_client - version: 0.21.0 + version: 0.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 - md5: 07e9550ddff45150bfc7da146268e165 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 49024 - timestamp: 1726902073034 + size: 49002 + timestamp: 1733327434163 - kind: conda name: propcache version: 0.2.0 @@ -7172,13 +7178,13 @@ packages: timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.10.2 + version: 2.10.3 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 - md5: e661b732b4d7514ace55a01873f03201 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 + md5: 194ef7f91286978521350f171b117f01 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.1 @@ -7187,8 +7193,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 316818 - timestamp: 1732689481710 + size: 317037 + timestamp: 1733316963547 - kind: conda name: pydantic-core version: 2.27.1 @@ -7269,18 +7275,19 @@ packages: - kind: conda name: pygments version: 2.18.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a depends: - - python >=3.8 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 879295 - timestamp: 1714846885370 + size: 876700 + timestamp: 1733221731178 - kind: conda name: pyinstrument version: 5.0.0 @@ -7335,20 +7342,20 @@ packages: - kind: conda name: pysocks version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 + build: pyha55dd90_7 + build_number: 7 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18981 - timestamp: 1661604969727 + size: 21085 + timestamp: 1733217331982 - kind: conda name: python version: 3.11.10 @@ -7453,23 +7460,25 @@ packages: - python >=3.9 - six >=1.5 license: Apache-2.0 + license_family: APACHE size: 222505 timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c - md5: c2997ea9360ac4e015658804a7a84f94 + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 24278 - timestamp: 1706018281544 + size: 24215 + timestamp: 1733243277223 - kind: conda name: python-json-logger version: 2.0.7 @@ -7488,33 +7497,35 @@ packages: - kind: conda name: python-multipart version: 0.0.19 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 - md5: fe524346d3a9aa0aaf353dc39f7d1715 + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f + md5: c74333aa447ed2b94d49e5db23da5de6 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27780 - timestamp: 1733062326577 + size: 27768 + timestamp: 1733323160772 - kind: conda name: python-tzdata version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 - md5: 986287f89929b2d629bd6ef6497dc307 + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 142527 - timestamp: 1727140688093 + size: 142235 + timestamp: 1733235414217 - kind: conda name: python-xxhash version: 3.5.0 @@ -7912,6 +7923,7 @@ packages: constrains: - chardet >=3.0.2,<6 license: Apache-2.0 + license_family: APACHE size: 58723 timestamp: 1733217126197 - kind: conda @@ -8039,18 +8051,19 @@ packages: - kind: conda name: shellingham version: 1.5.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb - md5: d08db09a552699ee9e7eec56b4eb3899 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 14568 - timestamp: 1698144516278 + size: 14462 + timestamp: 1733301007770 - kind: conda name: six version: 1.16.0 @@ -8115,18 +8128,19 @@ packages: - kind: conda name: sniffio version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b - md5: 490730480d76cf9c8f8f2849719c6e2b + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 depends: - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 15064 - timestamp: 1708953086199 + size: 15019 + timestamp: 1733244175724 - kind: conda name: sse-starlette version: 2.1.3 @@ -8381,58 +8395,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - sha256: 4d7f1c77b928a66ae3b0089e288e7fdeb826bf0dabba9799488017e6a9b84f38 - md5: 9eb8a3f5d36ca3e7f686e7a5d85aff72 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 + md5: cf9393f5733c7277b1a5f79145f8485b depends: - python >=3.9 - - typer-slim-standard 0.14.0 hd8ed1ab_0 + - typer-slim-standard 0.15.0 hd8ed1ab_0 license: MIT license_family: MIT - size: 54637 - timestamp: 1732848384457 + size: 56455 + timestamp: 1733279871129 - kind: conda name: typer-slim - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - sha256: 883969c10b9837bb18a340ffb01a984ef6b4655fc72ff05aeb7bc659c9a1229d - md5: 3674a4cd7fd8e8a7277af2b30965925d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc + md5: 629fef89115de5a907fb9765cdd45b26 depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: + - typer >=0.15.0,<0.15.1.0a0 - shellingham >=1.3.0 - rich >=10.11.0 - - typer >=0.14.0,<0.14.1.0a0 license: MIT license_family: MIT - size: 43504 - timestamp: 1732848371202 + size: 43480 + timestamp: 1733279858535 - kind: conda name: typer-slim-standard - version: 0.14.0 + version: 0.15.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - sha256: 0e09e393e75028a0e827c7177e0fb1a070c87756e47b5ae6418423e22b10dfac - md5: 9e1e1f9c84add9637ca715f8fb71a83f + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 + md5: a4746fc9efbff02c1a288d8fcd8ffba9 depends: - rich - shellingham - - typer-slim 0.14.0 pyhd8ed1ab_0 + - typer-slim 0.15.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 49180 - timestamp: 1732848371718 + size: 50259 + timestamp: 1733279859017 - kind: conda name: typing-extensions version: 4.12.2 @@ -8500,44 +8514,46 @@ packages: - kind: conda name: uvicorn version: 0.32.1 - build: pyh31011fe_0 + build: pyh31011fe_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - sha256: a310c494c817a9f6c985fc6d2772acb953a20170d03b0eabfae0e9d8c76c97ee - md5: fa77fc8110207b3bfc5ccc9d316744f4 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 + md5: 7832640e5e302059e844d56f410487a6 depends: - __unix - click >=7.0 - h11 >=0.8 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49393 - timestamp: 1732185242260 + size: 49340 + timestamp: 1733332048141 - kind: conda name: uvicorn-standard version: 0.32.1 - build: h31011fe_0 + build: h31011fe_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - sha256: 52545f7c88a7c779376900de5f9d81ce36738cd8770b543e89592ad7d1003c40 - md5: 49c2820e0f39cb710becd856ff14d683 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe + md5: 0c233d5c71d398cf01d0281e72194005 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.1 pyh31011fe_0 + - uvicorn 0.32.1 pyh31011fe_1 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7136 - timestamp: 1732185243035 + size: 7094 + timestamp: 1733332049165 - kind: conda name: uvloop version: 0.21.0 @@ -8885,41 +8901,142 @@ packages: timestamp: 1689951608120 - kind: conda name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 + version: 5.6.3 + build: h2dbfc1b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec + md5: da081cb850e57b0a0a242bab9087fbeb depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 418368 - timestamp: 1660346797927 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + - liblzma-devel 5.6.3 h86ecc28_0 + - xz-gpl-tools 5.6.3 h2dbfc1b_0 + - xz-tools 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23448 + timestamp: 1733324353894 - kind: conda name: xz - version: 5.2.6 - build: h57fd34a_0 + version: 5.6.3 + build: h9a6d368_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - size: 235693 - timestamp: 1660346961024 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 + md5: 86674fa432df20be6feea4bd8fec0668 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + - liblzma-devel 5.6.3 h39f12f2_0 + - xz-gpl-tools 5.6.3 h9a6d368_0 + - xz-tools 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23570 + timestamp: 1733321627935 - kind: conda name: xz - version: 5.2.6 - build: h9cdd2b7_0 + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 + md5: 504333561007fbf0af129f0cee4f5652 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + - liblzma-devel 5.6.3 hb9d3cd8_0 + - xz-gpl-tools 5.6.3 hbcc6ac9_0 + - xz-tools 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23435 + timestamp: 1733321352996 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h2dbfc1b_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 - md5: 83baad393a31d59c20b63ba4da6592df + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca + md5: b0245c3aad4592510bb0c19212c1bded depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 440555 - timestamp: 1660348056328 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33355 + timestamp: 1733324193303 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h9a6d368_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd + md5: 9e4519aef300966683764ccbbaa89da4 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33343 + timestamp: 1733321610703 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db + md5: e4f1e59ca2971e8d0fdde0928c3f7b7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33299 + timestamp: 1733321343126 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda + sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 + md5: 10855380caa384c8388b93ef29c7bd04 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later + size: 81129 + timestamp: 1733321582233 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda + sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 + md5: 0136c7aa78b4d887c9fb6dbf39749778 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later + size: 95353 + timestamp: 1733324033407 +- kind: conda + name: xz-tools + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda + sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 + md5: 40270c1e058fd1d31caee8bf2c68fc3a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later + size: 89832 + timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 5d068575a5..acfb589cf2 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -8,16 +8,15 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda @@ -28,20 +27,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda @@ -50,49 +49,49 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -103,8 +102,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -140,6 +139,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -163,24 +164,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda @@ -189,50 +190,46 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda @@ -246,15 +243,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda @@ -263,28 +260,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda @@ -292,7 +289,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda @@ -301,16 +300,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda @@ -321,20 +319,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda @@ -343,50 +341,50 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -397,8 +395,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda @@ -434,6 +432,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -457,24 +457,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda @@ -483,50 +483,46 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py312h14eacfc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda @@ -540,15 +536,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.21.0-py312ha4e36d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.1-py312ha4e36d7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda @@ -557,28 +553,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda @@ -586,7 +582,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda @@ -594,17 +592,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda @@ -615,20 +612,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda @@ -637,49 +634,49 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda @@ -690,8 +687,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda @@ -708,7 +705,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -723,6 +720,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda @@ -742,24 +741,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda @@ -768,52 +767,48 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.2-pyhd8ed1ab_1.conda @@ -827,14 +822,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda @@ -843,28 +838,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda @@ -872,7 +867,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda @@ -929,18 +926,18 @@ packages: - kind: conda name: aiohappyeyeballs version: 2.4.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 - md5: 8d6f8a679aa0272ba8d6092ce4824870 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 depends: - python >=3.9 license: PSF-2.0 - license_family: PSF - size: 19310 - timestamp: 1733135584059 + size: 19351 + timestamp: 1733332029649 - kind: conda name: aiohttp version: 3.11.9 @@ -1016,35 +1013,36 @@ packages: - kind: conda name: aiosignal version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 - md5: d1e1eb7e21a9e2c74279d87dafb68156 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db + md5: d736bd1b8904d7593dce4893e58a7881 depends: - frozenlist >=1.1.0 - - python >=3.7 + - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 12730 - timestamp: 1667935912504 + size: 13157 + timestamp: 1733332198143 - kind: conda name: annotated-types version: 0.7.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f - md5: 7e9f4612544c8edbfd6afad17f1bd045 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: - - python >=3.7 + - python >=3.9 - typing-extensions >=4.0.0 license: MIT license_family: MIT - size: 18235 - timestamp: 1716290348421 + size: 18074 + timestamp: 1733247158254 - kind: conda name: anyio version: 4.6.2.post1 @@ -1070,37 +1068,39 @@ packages: - kind: conda name: appnope version: 0.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_0.conda - sha256: 45ae2d41f4a4dcf8707633d3d7ae376fc62f0c09b1d063c3049c3f6f8c911670 - md5: cc4834a9ee7cc49ce8d25177c47b10d8 + url: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + sha256: 8f032b140ea4159806e4969a68b4a3c0a7cab1ad936eb958a2b5ffe5335e19bf + md5: 54898d0f524c9dee622d44bbb081a8ab depends: - - python >=3.7 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 10241 - timestamp: 1707233195627 + size: 10076 + timestamp: 1733332433806 - kind: conda name: argon2-cffi version: 23.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_0.conda - sha256: 130766446f5507bd44df957b6b5c898a8bd98f024bb426ed6cb9ff1ad67fc677 - md5: 3afef1f55a1366b4d3b6a0d92e2235e4 + url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + sha256: 7af62339394986bc470a7a231c7f37ad0173ffb41f6bc0e8e31b0be9e3b9d20f + md5: a7ee488b71c30ada51c48468337b85ba depends: - argon2-cffi-bindings - - python >=3.7 + - python >=3.9 - typing-extensions constrains: - argon2_cffi ==999 license: MIT license_family: MIT - size: 18602 - timestamp: 1692818472638 + size: 18594 + timestamp: 1733311166338 - kind: conda name: argon2-cffi-bindings version: 21.2.0 @@ -1176,39 +1176,23 @@ packages: size: 100096 timestamp: 1696129131844 - kind: conda - name: asgiref - version: 3.8.1 + name: asttokens + version: 3.0.0 build: pyhd8ed1ab_1 build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 - md5: 21187c8276f87b6aedfe63c267a6eed7 + url: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + sha256: 93b14414b3b3ed91e286e1cbe4e7a60c4e1b1c730b0814d1e452a8ac4b9af593 + md5: 8f587de4bcf981e26228f268df374a9b depends: - python >=3.9 - - typing_extensions >=4 - license: BSD-3-Clause - license_family: BSD - size: 26436 - timestamp: 1733215704904 -- kind: conda - name: asttokens - version: 3.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_0.conda - sha256: 92072fde775e62c427d05a76784404f6a2d7ccf232aa05a95a33d86c943614b5 - md5: 454950e9fa3a0c59880de0ac7a6bc8c4 - depends: - - python >=3.8 constrains: - astroid >=2,<4 license: Apache-2.0 license_family: Apache - size: 28137 - timestamp: 1733175735190 + size: 28206 + timestamp: 1733250564754 - kind: conda name: async-lru version: 2.0.4 @@ -1672,12 +1656,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 - md5: e09cd76e50ce09ec14c17109da5c6502 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a + md5: 1046cf15a47f06a0af07f674e477d807 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1689,16 +1673,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117467 - timestamp: 1733098782199 + size: 117398 + timestamp: 1733299233564 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d - md5: 171850b890600458ae6c990e78f1fa23 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 + md5: 7d029b9aa9decf4c0fb8a9a8940c9906 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1711,16 +1695,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113536 - timestamp: 1733098705479 + size: 113660 + timestamp: 1733299194447 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff - md5: 893e668d99fa4b31eef9dc5b19c21b9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 + md5: 02f78a084e101dee30c794f963549de4 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1731,8 +1715,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97145 - timestamp: 1733098874599 + size: 97136 + timestamp: 1733299356527 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1834,13 +1818,14 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h7939e66_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d - md5: 5e573a52a1cd20f81d7fdf1db4f4583a + build: h159bff8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda + sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 + md5: c498e6490834aacf7835c96403862881 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1848,23 +1833,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283670 - timestamp: 1733150929992 + size: 354822 + timestamp: 1733333950713 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: ha226bf8_1 - build_number: 1 + build: h8474b10_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 - md5: 81da0b5f65ab08e3919d6eadf08b5776 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda + sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba + md5: 54c898f166bcfbe06c2b7ac36360f371 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1874,24 +1859,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236505 - timestamp: 1733151090562 + size: 235829 + timestamp: 1733334077172 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: hdec8b0f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd - md5: 40647232fad98f92be8c6050a7e0c2bd + build: hffbb33f_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda + sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 + md5: fb8be2af168b63e0b77076a1dc6baa85 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1899,14 +1883,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354710 - timestamp: 1733150818238 + size: 284031 + timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2255,19 +2239,20 @@ packages: - kind: conda name: babel version: 2.16.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_0.conda - sha256: fce1d78e42665bb26d3f2b45ce9cacf0d9dbe4c1b2db3879a384eadee53c6231 - md5: 6d4e9ecca8d88977147e109fc7053184 + url: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda + sha256: f6205d3a62e87447e06e98d911559be0208d824976d77ab092796c9176611fcb + md5: 3e23f7db93ec14c80525257d8affac28 depends: - - python >=3.8 + - python >=3.9 - pytz >=2015.7 license: BSD-3-Clause license_family: BSD - size: 6525614 - timestamp: 1730878929589 + size: 6551057 + timestamp: 1733236466015 - kind: conda name: backoff version: 2.2.1 @@ -2286,35 +2271,37 @@ packages: - kind: conda name: beautifulsoup4 version: 4.12.3 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda - sha256: 7b05b2d0669029326c623b9df7a29fa49d1982a9e7e31b2fea34b4c9a4a72317 - md5: 332493000404d8411859539a5a630865 + url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + sha256: fca842ab7be052eea1037ebee17ac25cc79c626382dd2187b5c6e007b9d9f65f + md5: d48f7e9fdec44baf6d1da416fe402b04 depends: - - python >=3.6 + - python >=3.9 - soupsieve >=1.2 license: MIT license_family: MIT - size: 118200 - timestamp: 1705564819537 + size: 118042 + timestamp: 1733230951790 - kind: conda name: bleach version: 6.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_0.conda - sha256: 01be7fb5163e7c31356a18c259ddc19a5431b8b974dc65e2427b88c2d30034f3 - md5: 461bcfab8e65c166e297222ae919a2d4 + url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_1.conda + sha256: ffc8e4e53cd92aec0f0ea0bc9e28f5fd1b1e67bde46b0b298170e6fb78eecce1 + md5: 707af59db75b066217403a8f00c1d826 depends: - python >=3.9 - webencodings license: Apache-2.0 AND MIT license_family: Apache - size: 132652 - timestamp: 1730286301829 + size: 132933 + timestamp: 1733302409510 - kind: conda name: brotli-python version: 1.1.0 @@ -2608,49 +2595,52 @@ packages: - kind: conda name: charset-normalizer version: 3.4.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e + md5: 6581a17bba6b948bb60130026404a9d6 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 47314 - timestamp: 1728479405343 + size: 47533 + timestamp: 1733218182393 - kind: conda name: click version: 8.1.7 - build: unix_pyh707e725_0 + build: unix_pyh707e725_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec - md5: f3ad426304898027fc619827ff428eca + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b + md5: cb8e52f28f5e592598190c562e7b5bf1 depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84437 - timestamp: 1692311973840 + size: 84513 + timestamp: 1733221925078 - kind: conda name: colorama version: 0.4.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 25170 - timestamp: 1666700778190 + size: 27011 + timestamp: 1733218222191 - kind: conda name: comm version: 0.2.2 @@ -2753,18 +2743,19 @@ packages: - kind: conda name: decorator version: 5.1.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_0.tar.bz2 - sha256: 328a6a379f9bdfd0230e51de291ce858e6479411ea4b0545fb377c71662ef3e2 - md5: 43afe5ab04e35e17ba28649471dd7364 + url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda + sha256: 84e5120c97502a3785e8c3241c3bf51f64b4d445f13b4d2445db00d9816fe479 + md5: d622d8d7ee8868870f9cbe259f381181 depends: - - python >=3.5 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 12072 - timestamp: 1641555714315 + size: 14068 + timestamp: 1733236549190 - kind: conda name: defusedxml version: 0.7.1 @@ -2814,73 +2805,77 @@ packages: - kind: conda name: dnspython version: 2.7.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 - md5: 0adf8f63d500d20418656289249533f9 + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: - - python >=3.9.0,<4.0.0 + - python >=3.9,<4.0.0 - sniffio constrains: - - cryptography >=43 + - aioquic >=1.0.0 - wmi >=1.5.1 - - h2 >=4.1.0 + - httpx >=0.26.0 - trio >=0.23 + - cryptography >=43 - httpcore >=1.0.0 - - aioquic >=1.0.0 - - httpx >=0.26.0 - idna >=3.7 + - h2 >=4.1.0 license: ISC license_family: OTHER - size: 172740 - timestamp: 1728178868478 + size: 172172 + timestamp: 1733256829961 - kind: conda name: email-validator version: 2.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 - md5: 3067adf57ee658ddf5bfad47b0041ce4 + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 depends: - dnspython >=2.0.0 - idna >=2.0.0 - - python >=3.7 + - python >=3.9 license: Unlicense - size: 44157 - timestamp: 1718984716782 + size: 44401 + timestamp: 1733300827551 - kind: conda name: email_validator version: 2.2.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 - md5: 0214a004f7cf5ac28fc10a390dfc47ee + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: - email-validator >=2.2.0,<2.2.1.0a0 license: Unlicense - size: 6690 - timestamp: 1718984720419 + size: 6552 + timestamp: 1733300828176 - kind: conda name: entrypoints version: '0.4' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2 - sha256: 2ec4a0900a4a9f42615fc04d0fb3286b796abe56590e8e042f6ec25e102dd5af - md5: 3cf04868fee0a029769bd41f4b2fbf2d + url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + sha256: 80f579bfc71b3dab5bef74114b89e26c85cb0df8caf4c27ab5ffc16363d57ee7 + md5: 3366592d3c219f2731721f11bc93755c depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 9199 - timestamp: 1643888357950 + size: 11259 + timestamp: 1733327239578 - kind: conda name: exceptiongroup version: 1.2.2 @@ -2956,33 +2951,35 @@ packages: - kind: conda name: filelock version: 3.16.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c depends: - - python >=3.7 + - python >=3.9 license: Unlicense - size: 17357 - timestamp: 1726613593584 + size: 17441 + timestamp: 1733240909987 - kind: conda name: fqdn version: 1.5.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_0.tar.bz2 - sha256: 6cfd1f9bcd2358a69fb571f4b3af049b630d52647d906822dbedac03e84e4f63 - md5: 642d35437078749ef23a5dca2c9bb1f3 + url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + sha256: 2509992ec2fd38ab27c7cdb42cf6cadc566a1cc0d1021a2673475d9fa87c6276 + md5: d3549fd50d450b6d9e7dddff25dd2110 depends: - cached-property >=1.3.0 - - python >=2.7,<4 + - python >=3.9,<4 license: MPL-2.0 license_family: MOZILLA - size: 14395 - timestamp: 1638810388635 + size: 16705 + timestamp: 1733327494780 - kind: conda name: freetype version: 2.12.1 @@ -3212,51 +3209,54 @@ packages: - kind: conda name: h11 version: 0.14.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 - md5: b21ed0883505ba1910994f1df031a428 + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - python >=3 + - python >=3.9 - typing_extensions license: MIT license_family: MIT - size: 48251 - timestamp: 1664132995560 + size: 51846 + timestamp: 1733327599467 - kind: conda name: h2 version: 4.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: - hpack >=4.0,<5 - hyperframe >=6.0,<7 - - python >=3.6.1 + - python >=3.9 license: MIT license_family: MIT - size: 46754 - timestamp: 1634280590080 + size: 52000 + timestamp: 1733298867359 - kind: conda name: hpack version: 4.0.0 - build: pyh9f0ad1d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 25341 - timestamp: 1598856368685 + size: 29412 + timestamp: 1733299296857 - kind: conda name: httpcore version: 1.0.7 @@ -3374,18 +3374,19 @@ packages: - kind: conda name: hyperframe version: 6.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14646 - timestamp: 1619110249723 + size: 17239 + timestamp: 1733298862681 - kind: conda name: icu version: '75.1' @@ -3436,21 +3437,22 @@ packages: - kind: conda name: importlib_resources version: 6.4.5 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_0.conda - sha256: 2cb9db3e40033c3df72d3defc678a012840378fd55a67e4351363d4b321a0dc1 - md5: c808991d29b9838fb4d96ce8267ec9ec + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + sha256: 461199e429a3db01f0a673f8beaac5e0be75b88895952fb9183f2ab01c5c3c24 + md5: 15798fa69312d433af690c8c42b3fb36 depends: - - python >=3.8 + - python >=3.9 - zipp >=3.1.0 constrains: - importlib-resources >=6.4.5,<6.4.6.0a0 license: Apache-2.0 license_family: APACHE - size: 32725 - timestamp: 1725921462405 + size: 32701 + timestamp: 1733231441973 - kind: conda name: ipykernel version: 6.29.5 @@ -3554,49 +3556,52 @@ packages: - kind: conda name: jedi version: 0.19.2 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhff2d567_0.conda - sha256: d37dad14c00d06d33bfb99c378d0abd7645224a9491c433af5028f24863341ab - md5: 11ead81b00e0f7cc901fceb7ccfb92c1 + url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8 + md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 depends: - parso >=0.8.3,<0.9.0 - python >=3.9 license: Apache-2.0 AND MIT - size: 842916 - timestamp: 1731317305873 + size: 843646 + timestamp: 1733300981994 - kind: conda name: jinja2 version: 3.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a + md5: 08cce3151bde4ecad7885bd9fb647532 depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 111565 - timestamp: 1715127275924 + size: 110963 + timestamp: 1733217424408 - kind: conda name: json5 version: 0.10.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_0.conda - sha256: df01c5253bb5f8c68526c8bad92b8e832ed58a0d4c40d08a65c81c51821bc23d - md5: 165cbd1d80be88dafadeabfaae6fa588 + url: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + sha256: 61bca2dac194c44603446944745566d7b4e55407280f6f6cea8bbe4de26b558f + md5: cd170f82d8e5b355dfdea6adab23e4af depends: - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 32030 - timestamp: 1732666224221 + size: 31573 + timestamp: 1733272196759 - kind: conda name: jsonpointer version: 3.0.0 @@ -3837,16 +3842,16 @@ packages: timestamp: 1710262791393 - kind: conda name: jupyterlab - version: 4.3.1 - build: pyhff2d567_0 + version: 4.3.2 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.1-pyhff2d567_0.conda - sha256: ff1035eb0020dbaf4e332ef4b81a7068b595dfc57dde3313e9c4a37583772644 - md5: b4f3d579fc21a44518d52c52507461b4 + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda + sha256: e806f753fe91faaffbad3d1d3aab7ceee785ae01bf0d758a82f1466164d727d6 + md5: 5f0d3b774cae26dd785e443a0e1623ae depends: - async-lru >=1.0.0 - - httpx >=0.25.0 + - httpx >=0.28.0,<0.29.0 - importlib-metadata >=4.8.3 - ipykernel >=6.5.0 - jinja2 >=3.0.3 @@ -3857,33 +3862,33 @@ packages: - notebook-shim >=0.2 - packaging - python >=3.9 - - setuptools >=40.1.0 + - setuptools >=40.8.0 - tomli >=1.2.2 - tornado >=6.2.0 - traitlets license: BSD-3-Clause license_family: BSD - size: 7101932 - timestamp: 1731776859245 + size: 7396800 + timestamp: 1733261150800 - kind: conda name: jupyterlab_pygments version: 0.3.0 - build: pyhd8ed1ab_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_1.conda - sha256: 4aa622bbcf97e44cd1adf0100b7ff71b7e20268f043bdf6feae4d16152f1f242 - md5: afcd1b53bcac8844540358e33f33d28f + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 + md5: fd312693df06da3578383232528c468d depends: - pygments >=2.4.1,<3 - - python >=3.7 + - python >=3.9 constrains: - jupyterlab >=4.0.8,<5.0.0 license: BSD-3-Clause license_family: BSD - size: 18776 - timestamp: 1707149279640 + size: 18711 + timestamp: 1733328194037 - kind: conda name: jupyterlab_server version: 2.27.3 @@ -4849,18 +4854,18 @@ packages: timestamp: 1726659794676 - kind: conda name: libcxx - version: 19.1.4 + version: 19.1.5 build: ha82da77_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 + md5: 3c7be0df28ccda1d193ea6de56dcb5ff depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520678 - timestamp: 1732060258949 + size: 519819 + timestamp: 1733291654212 - kind: conda name: libdeflate version: '1.22' @@ -5681,6 +5686,89 @@ packages: license_family: BSD size: 15823 timestamp: 1729643275943 +- kind: conda + name: liblzma + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 + md5: faa0ab222b9d12a52a8ebc655c9236f3 + depends: + - __osx >=11.0 + license: 0BSD + size: 98836 + timestamp: 1733321533638 +- kind: conda + name: liblzma + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f + md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + depends: + - libgcc >=13 + license: 0BSD + size: 124115 + timestamp: 1733323693681 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 + md5: 137c535dddd880f844f33ed91b8abdba + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111223 + timestamp: 1733321312512 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 + md5: 89955d2470cbacea3d5e069d67c94f44 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD + size: 112941 + timestamp: 1733321552604 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 + md5: 27995ae8bc93eeb949315655daa19d3c + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD + size: 376767 + timestamp: 1733323860026 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a + md5: 7069f4de645461447f1ab7736c94db26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD + size: 375452 + timestamp: 1733321322415 - kind: conda name: libnghttp2 version: 1.64.0 @@ -6776,27 +6864,29 @@ packages: - kind: conda name: markdown-it-py version: 3.0.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 - md5: 93a8e71256479c62074356ef6ebf501b + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: - mdurl >=0.1,<1 - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 64356 - timestamp: 1686175179621 + size: 64430 + timestamp: 1733250550053 - kind: conda name: markupsafe version: 3.0.2 - build: py312h178313f_0 + build: py312h178313f_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 - md5: a755704ea0e2503f8c227d84829a8e81 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6806,16 +6896,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24878 - timestamp: 1729351558563 + size: 24604 + timestamp: 1733219911494 - kind: conda name: markupsafe version: 3.0.2 - build: py312h74ce7d3_0 + build: py312h74ce7d3_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - sha256: 997baf7f46bce112f6e0390efaa7fbb892b8f31567d3c554f08ac636774d74f7 - md5: 8992b90e8374193d53118f7651db0b73 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6824,16 +6915,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25013 - timestamp: 1729352489213 + size: 25079 + timestamp: 1733220639175 - kind: conda name: markupsafe version: 3.0.2 - build: py312ha0ccf2a_0 + build: py312h998013c_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d - md5: c6ff9f291d011c9d4f0b840f49435c64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6843,8 +6935,8 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24495 - timestamp: 1729351534830 + size: 24048 + timestamp: 1733219945697 - kind: conda name: matplotlib-inline version: 0.1.7 @@ -6863,76 +6955,76 @@ packages: timestamp: 1713250613726 - kind: conda name: max - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e - md5: 9c25081ace6ad2c13675cf0123109cb9 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f + md5: 09947b7aa3a3c35b413b7c0d118126e3 depends: - - max-core ==24.6.0.dev2024120306 release - - max-python >=24.6.0.dev2024120306,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120306 release - - mblack ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release + - max-python >=24.6.0.dev2024120416,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120416 release license: LicenseRef-Modular-Proprietary - size: 9929 - timestamp: 1733209293577 + size: 9925 + timestamp: 1733332193356 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 - md5: c249d77d8e5885dd0eacd9028131413f + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef + md5: 43a976936171480fe7dbc2fed1224312 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254711372 - timestamp: 1733209193854 + size: 245904359 + timestamp: 1733332193354 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea - md5: e5b6ae7316dc2b08a52cee8f27b4f484 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 + md5: 15cac805514c6a381a9a50ee3a86de25 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258488596 - timestamp: 1733209293575 + size: 249618446 + timestamp: 1733332472125 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 - md5: 05acbd2d9cf25aa913a979aa9802c194 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 + md5: c27c6f67be3abffbf559bfd50852b493 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220248523 - timestamp: 1733209020078 + size: 210212276 + timestamp: 1733332258535 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 - md5: 4bdce0c1dd562e22566551d578103d2f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 + md5: 78af7733b4858c1bd882279a45e98795 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -6942,7 +7034,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -6955,18 +7046,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128537272 - timestamp: 1733209193862 + size: 122878721 + timestamp: 1733332193368 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e - md5: e7d3ebeaaeb2bd99167fda861a7e7aba + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 + md5: 55ff43da6401cdd96073ae044b428afd depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -6976,7 +7067,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -6989,18 +7079,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132223349 - timestamp: 1733209293584 + size: 126526187 + timestamp: 1733332472138 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 - md5: 9859f8c88c81c18baaddd15be03d259c + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 + md5: b84b205dbce4660cdea5b0e3cda227e9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -7010,7 +7100,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -7023,17 +7112,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119113363 - timestamp: 1733209020082 + size: 111629688 + timestamp: 1733332258538 - kind: conda name: mblack - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac - md5: f77eafd932de3ae309643ea716ba3c3a + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 + md5: 85c700946ce4a5ce8d11f5ee66b477cf depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7043,55 +7132,57 @@ packages: - platformdirs >=2 - python license: MIT - size: 130649 - timestamp: 1733209293580 + size: 130641 + timestamp: 1733332193362 - kind: conda name: mdurl version: 0.1.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 - md5: 776a8dd9e824f77abac30e6ef43a8f7a + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14680 - timestamp: 1704317789138 + size: 14465 + timestamp: 1733255681319 - kind: conda name: mistune version: 3.0.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_0.conda - sha256: f95cb70007e3cc2ba44e17c29a056b499e6dadf08746706d0c817c8e2f47e05c - md5: 5cbee699846772cc939bef23a0d524ed + url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda + sha256: 0a9faaf1692b74f321cedbd37a44f108a1ec3f5d9638bc5bbf860cb3b6ff6db4 + md5: c46df05cae629e55426773ac1f85d68f depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 66022 - timestamp: 1698947249750 + size: 65901 + timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc - md5: 8bb40dfabe84757d93d3053fdf4b0a58 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 + md5: 411a1d159867c56043991824d1ee88d9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22940 - timestamp: 1733209293581 + size: 22946 + timestamp: 1733332193363 - kind: conda name: multidict version: 6.1.0 @@ -7204,18 +7295,19 @@ packages: - kind: conda name: mypy_extensions version: 1.0.0 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 - md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 10492 - timestamp: 1675543414256 + size: 10854 + timestamp: 1733230986902 - kind: conda name: nbclient version: 0.10.1 @@ -7335,18 +7427,19 @@ packages: - kind: conda name: nest-asyncio version: 1.6.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_0.conda - sha256: 30db21d1f7e59b3408b831a7e0417b83b53ee6223afae56482c5f26da3ceb49a - md5: 6598c056f64dc8800d40add25e4e2c34 + url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + sha256: bb7b21d7fd0445ddc0631f64e66d91a179de4ba920b8381f29b9d006a42788c0 + md5: 598fd7d4d0de2455fb74f56063969a97 depends: - - python >=3.5 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 11638 - timestamp: 1705850780510 + size: 11543 + timestamp: 1733325673691 - kind: conda name: notebook-shim version: 0.2.4 @@ -7604,66 +7697,6 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-instrumentation - version: 0.49b2 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - sha256: ee20ad159bc040642fcbce1b25f8a9fc1d788b53c6bf593a0891bf7887ec7c5f - md5: 13d714acd504cd0141688c908521c0b9 - depends: - - opentelemetry-api ~=1.4 - - opentelemetry-semantic-conventions 0.49b2 - - packaging >=18.0 - - python >=3.9 - - setuptools >=16.0 - - wrapt <2.0.0,>=1.0.0 - license: Apache-2.0 - license_family: APACHE - size: 31616 - timestamp: 1732070359772 -- kind: conda - name: opentelemetry-instrumentation-asgi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - sha256: 7b2b4da037baa506a82c5e3e711905f34448441e069a6e3affb0e4917b3ee5e0 - md5: 482ad6cdc507689d5c33eb22aa16d83e - depends: - - asgiref ~=3.0 - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 23749 - timestamp: 1732086813641 -- kind: conda - name: opentelemetry-instrumentation-fastapi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - sha256: e853f62b4c56e308f349a3f360cf4d6aa814a9dc926e727c25effcf4121af68c - md5: 59c01fcead989ba58c5dc79e3ac3aab3 - depends: - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-instrumentation-asgi 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 20288 - timestamp: 1732093785486 - kind: conda name: opentelemetry-proto version: 1.28.2 @@ -7716,21 +7749,6 @@ packages: license_family: APACHE size: 81534 timestamp: 1732067304518 -- kind: conda - name: opentelemetry-util-http - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - sha256: 73bb1cbb640b0732c1a04764a9704bb048ab77d6cb9c6439eb50ec0ecf926ede - md5: f267c60fc629a9bd1aa388f6ed8ea0ab - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - size: 19241 - timestamp: 1732081026829 - kind: conda name: orc version: 2.0.3 @@ -7913,64 +7931,67 @@ packages: - kind: conda name: parso version: 0.8.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_0.conda - sha256: bfe404eebb930cc41782d34f8fc04c0388ea692eeebe2c5fc28df8ec8d4d61ae - md5: 81534b420deb77da8833f2289b8d47ac + url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + sha256: 17131120c10401a99205fc6fe436e7903c0fa092f1b3e80452927ab377239bcc + md5: 5c092057b6badd30f75b06244ecd01c9 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 75191 - timestamp: 1712320447201 + size: 75295 + timestamp: 1733271352153 - kind: conda name: pathspec version: 0.12.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d - md5: 17064acba08d3686f1135b5ec1b32b12 + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 depends: - - python >=3.7 + - python >=3.9 license: MPL-2.0 license_family: MOZILLA - size: 41173 - timestamp: 1702250135032 + size: 41075 + timestamp: 1733233471940 - kind: conda name: pexpect version: 4.9.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda - sha256: 90a09d134a4a43911b716d4d6eb9d169238aff2349056f7323d9db613812667e - md5: 629f3203c99b32e0988910c93e77f3b6 + url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + sha256: 202af1de83b585d36445dc1fda94266697341994d1a3328fabde4989e1b3d07a + md5: d0d408b1f18883a944376da5cf8101ea depends: - ptyprocess >=0.5 - - python >=3.7 + - python >=3.9 license: ISC - size: 53600 - timestamp: 1706113273252 + size: 53561 + timestamp: 1733302019362 - kind: conda name: pickleshare version: 0.7.5 - build: py_1003 - build_number: 1003 + build: pyhd8ed1ab_1004 + build_number: 1004 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2 - sha256: a1ed1a094dd0d1b94a09ed85c283a0eb28943f2e6f22161fb45e128d35229738 - md5: 415f0ebb6198cc2801c73438a9fb5761 + url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + sha256: e2ac3d66c367dada209fc6da43e645672364b9fd5f9d28b9f016e24b81af475b + md5: 11a9d1d09a3615fc07c3faf79bc0b943 depends: - - python >=3 + - python >=3.9 license: MIT license_family: MIT - size: 9332 - timestamp: 1602536313357 + size: 11748 + timestamp: 1733327448200 - kind: conda name: pillow version: 11.0.0 @@ -8080,51 +8101,53 @@ packages: - kind: conda name: platformdirs version: 4.3.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 20625 - timestamp: 1726613611845 + size: 20448 + timestamp: 1733232756001 - kind: conda name: prometheus_client - version: 0.21.0 + version: 0.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 - md5: 07e9550ddff45150bfc7da146268e165 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 49024 - timestamp: 1726902073034 + size: 49002 + timestamp: 1733327434163 - kind: conda name: prompt-toolkit version: 3.0.48 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_0.conda - sha256: 44e4e6108d425a666856a52d1523e5d70890256a8920bb0dcd3d55cc750f3207 - md5: 4c05134c48b6a74f33bbb9938e4a115e + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda + sha256: 79fb7d1eeb490d4cc1b79f781bb59fe302ae38cf0a30907ecde75a7d399796cc + md5: 368d4aa48358439e07a97ae237491785 depends: - - python >=3.7 + - python >=3.9 - wcwidth constrains: - prompt_toolkit 3.0.48 license: BSD-3-Clause license_family: BSD - size: 270271 - timestamp: 1727341744544 + size: 269848 + timestamp: 1733302634979 - kind: conda name: propcache version: 0.2.0 @@ -8339,17 +8362,18 @@ packages: - kind: conda name: ptyprocess version: 0.7.0 - build: pyhd3deb0d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a - md5: 359eeb6536da0e687af562ed265ec263 + url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + sha256: a7713dfe30faf17508ec359e0bc7e0983f5d94682492469bd462cdaae9c64d83 + md5: 7d9daffbb8d8e0af0f769dbbcd173a54 depends: - - python + - python >=3.9 license: ISC - size: 16546 - timestamp: 1609419417991 + size: 19457 + timestamp: 1733302371990 - kind: conda name: pure_eval version: 0.2.3 @@ -8513,13 +8537,13 @@ packages: timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.10.2 + version: 2.10.3 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 - md5: e661b732b4d7514ace55a01873f03201 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 + md5: 194ef7f91286978521350f171b117f01 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.1 @@ -8528,8 +8552,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 316818 - timestamp: 1732689481710 + size: 317037 + timestamp: 1733316963547 - kind: conda name: pydantic-core version: 2.27.1 @@ -8610,18 +8634,19 @@ packages: - kind: conda name: pygments version: 2.18.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a depends: - - python >=3.8 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 879295 - timestamp: 1714846885370 + size: 876700 + timestamp: 1733221731178 - kind: conda name: pyinstrument version: 5.0.0 @@ -8714,20 +8739,20 @@ packages: - kind: conda name: pysocks version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 + build: pyha55dd90_7 + build_number: 7 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18981 - timestamp: 1661604969727 + size: 21085 + timestamp: 1733217331982 - kind: conda name: python version: 3.12.7 @@ -8829,38 +8854,40 @@ packages: - python >=3.9 - six >=1.5 license: Apache-2.0 + license_family: APACHE size: 222505 timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c - md5: c2997ea9360ac4e015658804a7a84f94 + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 24278 - timestamp: 1706018281544 + size: 24215 + timestamp: 1733243277223 - kind: conda name: python-fastjsonschema - version: 2.21.0 + version: 2.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.0-pyhd8ed1ab_0.conda - sha256: 09ae0acccbfc325b9b65946795c0055e0a40374e4e73b264f3b7e8cd8ae0a95a - md5: 4c849126120d1b3d61cf0eac8120ea70 + url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + sha256: 1b09a28093071c1874862422696429d0d35bd0b8420698003ac004746c5e82a2 + md5: 38e34d2d1d9dca4fb2b9a0a04f604e2c depends: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 225949 - timestamp: 1732805566866 + size: 226259 + timestamp: 1733236073335 - kind: conda name: python-json-logger version: 2.0.7 @@ -8879,33 +8906,35 @@ packages: - kind: conda name: python-multipart version: 0.0.19 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 - md5: fe524346d3a9aa0aaf353dc39f7d1715 + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f + md5: c74333aa447ed2b94d49e5db23da5de6 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27780 - timestamp: 1733062326577 + size: 27768 + timestamp: 1733323160772 - kind: conda name: python-tzdata version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 - md5: 986287f89929b2d629bd6ef6497dc307 + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 142527 - timestamp: 1727140688093 + size: 142235 + timestamp: 1733235414217 - kind: conda name: python-xxhash version: 3.5.0 @@ -9020,6 +9049,7 @@ packages: depends: - python >=3.9 license: MIT + license_family: MIT size: 185890 timestamp: 1733215766006 - kind: conda @@ -9320,6 +9350,7 @@ packages: constrains: - chardet >=3.0.2,<6 license: Apache-2.0 + license_family: APACHE size: 58723 timestamp: 1733217126197 - kind: conda @@ -9373,12 +9404,12 @@ packages: timestamp: 1730592349978 - kind: conda name: rpds-py - version: 0.21.0 + version: 0.22.1 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.21.0-py312h12e396e_0.conda - sha256: 6a2c3808b0922e453b450cc092f5e5da9d2466f48acce224da90432a94146c12 - md5: 37f4ad7cb4214c799f32e5f411c6c69f + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.1-py312h12e396e_0.conda + sha256: 26f29cd937e9a28ea9ac6a32b3669e0cabe815343df43ce19c0ca076861e1c8e + md5: db784e4ddb4c55c95cc15a7572802ef1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -9388,16 +9419,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 336759 - timestamp: 1730922756033 + size: 355539 + timestamp: 1733275174505 - kind: conda name: rpds-py - version: 0.21.0 + version: 0.22.1 build: py312ha4e36d7_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.21.0-py312ha4e36d7_0.conda - sha256: 5573bd19cd90ddb1b446ecd5a3b2c52923d030c91581fe2e63b014d47973a86c - md5: b5758e481b8a8e6f8342836f66fb0bdf + url: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.1-py312ha4e36d7_0.conda + sha256: efa181de72c022ef3c763d69dc6886cf2e7b8dcbd99e4226954a05d08001dcd8 + md5: ed1137158174c5b8f09f05feb7b66313 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -9406,16 +9437,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 340149 - timestamp: 1730924593615 + size: 348239 + timestamp: 1733277204922 - kind: conda name: rpds-py - version: 0.21.0 + version: 0.22.1 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.21.0-py312hcd83bfe_0.conda - sha256: a3d885b49b03259ff7306855466933f9ba06e3f4c327cd0122e9a43b68910555 - md5: 8ea53395d5403ae5ec1adabb1a74719a + url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.1-py312hcd83bfe_0.conda + sha256: bcfa291e5ef9d2015f15d9d0007f5bfbda64de1ae9bf8f3849827be4839949bd + md5: 1db30d93318545c64c4db230cba68f16 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -9425,8 +9456,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 295817 - timestamp: 1730922974629 + size: 318035 + timestamp: 1733275269664 - kind: conda name: s2n version: 1.5.9 @@ -9518,36 +9549,38 @@ packages: - kind: conda name: send2trash version: 1.8.3 - build: pyh0d859eb_0 + build: pyh0d859eb_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_0.conda - sha256: c4401b071e86ddfa0ea4f34b85308db2516b6aeca50053535996864cfdee7b3f - md5: 778594b20097b5a948c59e50ae42482a + url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + sha256: 00926652bbb8924e265caefdb1db100f86a479e8f1066efe395d5552dde54d02 + md5: 938c8de6b9de091997145b3bf25cdbf9 depends: - __linux - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 22868 - timestamp: 1712585140895 + size: 22736 + timestamp: 1733322148326 - kind: conda name: send2trash version: 1.8.3 - build: pyh31c8845_0 + build: pyh31c8845_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_0.conda - sha256: f911307db932c92510da6c3c15b461aef935720776643a1fbf3683f61001068b - md5: c3cb67fc72fb38020fe7923dbbcf69b0 + url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + sha256: 5282eb5b462502c38df8cb37cd1542c5bbe26af2453a18a0a0602d084ca39f53 + md5: e67b1b1fa7a79ff9e8e326d0caf55854 depends: - __osx - pyobjc-framework-cocoa - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 23165 - timestamp: 1712585504123 + size: 23100 + timestamp: 1733322309409 - kind: conda name: setuptools version: 75.6.0 @@ -9567,18 +9600,19 @@ packages: - kind: conda name: shellingham version: 1.5.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb - md5: d08db09a552699ee9e7eec56b4eb3899 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 14568 - timestamp: 1698144516278 + size: 14462 + timestamp: 1733301007770 - kind: conda name: six version: 1.16.0 @@ -9643,18 +9677,19 @@ packages: - kind: conda name: sniffio version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b - md5: 490730480d76cf9c8f8f2849719c6e2b + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 depends: - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 15064 - timestamp: 1708953086199 + size: 15019 + timestamp: 1733244175724 - kind: conda name: soupsieve version: '2.5' @@ -9890,18 +9925,19 @@ packages: - kind: conda name: tomli version: 2.2.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_0.conda - sha256: 706f35327a1b433fb57bb99e9fef878e90317fd6ea8cbcd454fb4af1a2e3f035 - md5: ee8ab0fe4c8dfc5a6319f7f8246022fc + url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e + md5: ac944244f1fed2eb49bae07193ae8215 depends: - python >=3.9 license: MIT license_family: MIT - size: 19129 - timestamp: 1732988289555 + size: 19167 + timestamp: 1733256819729 - kind: conda name: tornado version: 6.4.2 @@ -10010,72 +10046,73 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - sha256: 4d7f1c77b928a66ae3b0089e288e7fdeb826bf0dabba9799488017e6a9b84f38 - md5: 9eb8a3f5d36ca3e7f686e7a5d85aff72 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 + md5: cf9393f5733c7277b1a5f79145f8485b depends: - python >=3.9 - - typer-slim-standard 0.14.0 hd8ed1ab_0 + - typer-slim-standard 0.15.0 hd8ed1ab_0 license: MIT license_family: MIT - size: 54637 - timestamp: 1732848384457 + size: 56455 + timestamp: 1733279871129 - kind: conda name: typer-slim - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - sha256: 883969c10b9837bb18a340ffb01a984ef6b4655fc72ff05aeb7bc659c9a1229d - md5: 3674a4cd7fd8e8a7277af2b30965925d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc + md5: 629fef89115de5a907fb9765cdd45b26 depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: + - typer >=0.15.0,<0.15.1.0a0 - shellingham >=1.3.0 - rich >=10.11.0 - - typer >=0.14.0,<0.14.1.0a0 license: MIT license_family: MIT - size: 43504 - timestamp: 1732848371202 + size: 43480 + timestamp: 1733279858535 - kind: conda name: typer-slim-standard - version: 0.14.0 + version: 0.15.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - sha256: 0e09e393e75028a0e827c7177e0fb1a070c87756e47b5ae6418423e22b10dfac - md5: 9e1e1f9c84add9637ca715f8fb71a83f + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 + md5: a4746fc9efbff02c1a288d8fcd8ffba9 depends: - rich - shellingham - - typer-slim 0.14.0 pyhd8ed1ab_0 + - typer-slim 0.15.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 49180 - timestamp: 1732848371718 + size: 50259 + timestamp: 1733279859017 - kind: conda name: types-python-dateutil version: 2.9.0.20241003 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhff2d567_0.conda - sha256: 8489af986daebfbcd13d3748ba55431259206e37f184ab42a57e107fecd85e02 - md5: 3d326f8a2aa2d14d51d8c513426b5def + url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda + sha256: 78538b566f1f1cd1e309bba8361875523c69db1a25db292a54977603c5ea1421 + md5: cb0e8ce6fe1198a058040619a09bc424 depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 AND MIT - size: 21765 - timestamp: 1727940339297 + size: 21850 + timestamp: 1733279726734 - kind: conda name: typing-extensions version: 4.12.2 @@ -10111,18 +10148,18 @@ packages: - kind: conda name: typing_utils version: 0.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: 9e3758b620397f56fb709f796969de436d63b7117897159619b87938e1f78739 - md5: eb67e3cace64c66233e2d35949e20f92 + url: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c + md5: f6d7aa696c67756a650e91e15e88223c depends: - - python >=3.6.1 + - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 13829 - timestamp: 1622899345711 + size: 15183 + timestamp: 1733331395943 - kind: conda name: tzdata version: 2024b @@ -10138,18 +10175,19 @@ packages: - kind: conda name: uri-template version: 1.3.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_0.conda - sha256: b76904b53721dc88a46352324c79d2b077c2f74a9f7208ad2c4249892669ae94 - md5: 0944dc65cb4a9b5b68522c3bb585d41c + url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + sha256: e0eb6c8daf892b3056f08416a96d68b0a358b7c46b99c8a50481b22631a4dfc0 + md5: e7cb0f5745e4c5035a460248334af7eb depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 23999 - timestamp: 1688655976471 + size: 23990 + timestamp: 1733323714454 - kind: conda name: urllib3 version: 2.2.3 @@ -10173,44 +10211,46 @@ packages: - kind: conda name: uvicorn version: 0.32.1 - build: pyh31011fe_0 + build: pyh31011fe_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - sha256: a310c494c817a9f6c985fc6d2772acb953a20170d03b0eabfae0e9d8c76c97ee - md5: fa77fc8110207b3bfc5ccc9d316744f4 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 + md5: 7832640e5e302059e844d56f410487a6 depends: - __unix - click >=7.0 - h11 >=0.8 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49393 - timestamp: 1732185242260 + size: 49340 + timestamp: 1733332048141 - kind: conda name: uvicorn-standard version: 0.32.1 - build: h31011fe_0 + build: h31011fe_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - sha256: 52545f7c88a7c779376900de5f9d81ce36738cd8770b543e89592ad7d1003c40 - md5: 49c2820e0f39cb710becd856ff14d683 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe + md5: 0c233d5c71d398cf01d0281e72194005 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.1 pyh31011fe_0 + - uvicorn 0.32.1 pyh31011fe_1 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7136 - timestamp: 1732185243035 + size: 7094 + timestamp: 1733332049165 - kind: conda name: uvloop version: 0.21.0 @@ -10328,49 +10368,51 @@ packages: - kind: conda name: wcwidth version: 0.2.13 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_0.conda - sha256: b6cd2fee7e728e620ec736d8dfee29c6c9e2adbd4e695a31f1d8f834a83e57e3 - md5: 68f0738df502a14213624b288c60c9ad + url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + sha256: f21e63e8f7346f9074fd00ca3b079bd3d2fa4d71f1f89d5b6934bf31446dc2a5 + md5: b68980f2495d096e71c7fd9d7ccf63e6 depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 32709 - timestamp: 1704731373922 + size: 32581 + timestamp: 1733231433877 - kind: conda name: webcolors version: 24.8.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_0.conda - sha256: ec71f97c332a7d328ae038990b8090cbfa772f82845b5d2233defd167b7cc5ac - md5: eb48b812eb4fbb9ff238a6651fdbbcae + url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda + sha256: b0f2e15fe5c141d0900e03179f5fc04a20d2e70592d070fd4ce016ae33c7068a + md5: 5bfc9a98cfe3ddbf10624d6a78077639 depends: - - python >=3.5 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18378 - timestamp: 1723294800217 + size: 18514 + timestamp: 1733312181508 - kind: conda name: webencodings version: 0.5.1 - build: pyhd8ed1ab_2 - build_number: 2 + build: pyhd8ed1ab_3 + build_number: 3 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda - sha256: 2adf9bd5482802837bc8814cbe28d7b2a4cbd2e2c52e381329eaa283b3ed1944 - md5: daf5160ff9cde3a468556965329085b9 + url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + sha256: 19ff205e138bb056a46f9e3839935a2e60bd1cf01c8241a5e172a422fed4f9c6 + md5: 2841eb5bfc75ce15e9a0054b98dcd64d depends: - - python >=2.6 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 15600 - timestamp: 1694681458271 + size: 15496 + timestamp: 1733236131358 - kind: conda name: websocket-client version: 1.8.0 @@ -10636,41 +10678,142 @@ packages: timestamp: 1689951608120 - kind: conda name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 + version: 5.6.3 + build: h2dbfc1b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec + md5: da081cb850e57b0a0a242bab9087fbeb depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 418368 - timestamp: 1660346797927 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + - liblzma-devel 5.6.3 h86ecc28_0 + - xz-gpl-tools 5.6.3 h2dbfc1b_0 + - xz-tools 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23448 + timestamp: 1733324353894 - kind: conda name: xz - version: 5.2.6 - build: h57fd34a_0 + version: 5.6.3 + build: h9a6d368_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - size: 235693 - timestamp: 1660346961024 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 + md5: 86674fa432df20be6feea4bd8fec0668 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + - liblzma-devel 5.6.3 h39f12f2_0 + - xz-gpl-tools 5.6.3 h9a6d368_0 + - xz-tools 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23570 + timestamp: 1733321627935 - kind: conda name: xz - version: 5.2.6 - build: h9cdd2b7_0 + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 + md5: 504333561007fbf0af129f0cee4f5652 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + - liblzma-devel 5.6.3 hb9d3cd8_0 + - xz-gpl-tools 5.6.3 hbcc6ac9_0 + - xz-tools 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23435 + timestamp: 1733321352996 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h2dbfc1b_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 - md5: 83baad393a31d59c20b63ba4da6592df + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca + md5: b0245c3aad4592510bb0c19212c1bded depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 440555 - timestamp: 1660348056328 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33355 + timestamp: 1733324193303 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h9a6d368_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd + md5: 9e4519aef300966683764ccbbaa89da4 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33343 + timestamp: 1733321610703 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db + md5: e4f1e59ca2971e8d0fdde0928c3f7b7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33299 + timestamp: 1733321343126 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda + sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 + md5: 10855380caa384c8388b93ef29c7bd04 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later + size: 81129 + timestamp: 1733321582233 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda + sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 + md5: 0136c7aa78b4d887c9fb6dbf39749778 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later + size: 95353 + timestamp: 1733324033407 +- kind: conda + name: xz-tools + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda + sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 + md5: 40270c1e058fd1d31caee8bf2c68fc3a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later + size: 89832 + timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index cdc8aa7faf..ce04d5e3a6 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -8,12 +8,11 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda @@ -23,10 +22,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -40,36 +39,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -106,6 +105,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -129,17 +130,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda @@ -148,38 +149,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -193,10 +190,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -205,15 +202,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda @@ -221,7 +218,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda @@ -230,12 +229,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda @@ -245,10 +243,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -262,37 +260,37 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 @@ -329,6 +327,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -352,17 +352,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda @@ -371,38 +371,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -416,10 +412,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda @@ -428,15 +424,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda @@ -444,7 +440,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda @@ -452,12 +450,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -467,10 +464,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -484,36 +481,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda @@ -531,7 +528,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -546,6 +543,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda @@ -565,17 +564,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda @@ -584,38 +583,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -628,10 +623,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -640,15 +635,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda @@ -656,7 +651,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda @@ -713,18 +710,18 @@ packages: - kind: conda name: aiohappyeyeballs version: 2.4.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 - md5: 8d6f8a679aa0272ba8d6092ce4824870 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 depends: - python >=3.9 license: PSF-2.0 - license_family: PSF - size: 19310 - timestamp: 1733135584059 + size: 19351 + timestamp: 1733332029649 - kind: conda name: aiohttp version: 3.11.9 @@ -800,35 +797,36 @@ packages: - kind: conda name: aiosignal version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 - md5: d1e1eb7e21a9e2c74279d87dafb68156 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db + md5: d736bd1b8904d7593dce4893e58a7881 depends: - frozenlist >=1.1.0 - - python >=3.7 + - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 12730 - timestamp: 1667935912504 + size: 13157 + timestamp: 1733332198143 - kind: conda name: annotated-types version: 0.7.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f - md5: 7e9f4612544c8edbfd6afad17f1bd045 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: - - python >=3.7 + - python >=3.9 - typing-extensions >=4.0.0 license: MIT license_family: MIT - size: 18235 - timestamp: 1716290348421 + size: 18074 + timestamp: 1733247158254 - kind: conda name: anyio version: 4.6.2.post1 @@ -851,23 +849,6 @@ packages: license_family: MIT size: 109864 timestamp: 1728935803440 -- kind: conda - name: asgiref - version: 3.8.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 - md5: 21187c8276f87b6aedfe63c267a6eed7 - depends: - - python >=3.9 - - typing_extensions >=4 - license: BSD-3-Clause - license_family: BSD - size: 26436 - timestamp: 1733215704904 - kind: conda name: attrs version: 24.2.0 @@ -1315,12 +1296,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 - md5: e09cd76e50ce09ec14c17109da5c6502 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a + md5: 1046cf15a47f06a0af07f674e477d807 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1332,16 +1313,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117467 - timestamp: 1733098782199 + size: 117398 + timestamp: 1733299233564 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d - md5: 171850b890600458ae6c990e78f1fa23 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 + md5: 7d029b9aa9decf4c0fb8a9a8940c9906 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1354,16 +1335,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113536 - timestamp: 1733098705479 + size: 113660 + timestamp: 1733299194447 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff - md5: 893e668d99fa4b31eef9dc5b19c21b9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 + md5: 02f78a084e101dee30c794f963549de4 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1374,8 +1355,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97145 - timestamp: 1733098874599 + size: 97136 + timestamp: 1733299356527 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1477,13 +1458,14 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h7939e66_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d - md5: 5e573a52a1cd20f81d7fdf1db4f4583a + build: h159bff8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda + sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 + md5: c498e6490834aacf7835c96403862881 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1491,23 +1473,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283670 - timestamp: 1733150929992 + size: 354822 + timestamp: 1733333950713 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: ha226bf8_1 - build_number: 1 + build: h8474b10_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 - md5: 81da0b5f65ab08e3919d6eadf08b5776 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda + sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba + md5: 54c898f166bcfbe06c2b7ac36360f371 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1517,24 +1499,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236505 - timestamp: 1733151090562 + size: 235829 + timestamp: 1733334077172 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: hdec8b0f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd - md5: 40647232fad98f92be8c6050a7e0c2bd + build: hffbb33f_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda + sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 + md5: fb8be2af168b63e0b77076a1dc6baa85 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1542,14 +1523,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354710 - timestamp: 1733150818238 + size: 284031 + timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2171,49 +2152,52 @@ packages: - kind: conda name: charset-normalizer version: 3.4.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e + md5: 6581a17bba6b948bb60130026404a9d6 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 47314 - timestamp: 1728479405343 + size: 47533 + timestamp: 1733218182393 - kind: conda name: click version: 8.1.7 - build: unix_pyh707e725_0 + build: unix_pyh707e725_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec - md5: f3ad426304898027fc619827ff428eca + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b + md5: cb8e52f28f5e592598190c562e7b5bf1 depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84437 - timestamp: 1692311973840 + size: 84513 + timestamp: 1733221925078 - kind: conda name: colorama version: 0.4.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 25170 - timestamp: 1666700778190 + size: 27011 + timestamp: 1733218222191 - kind: conda name: datasets version: 2.14.4 @@ -2277,58 +2261,61 @@ packages: - kind: conda name: dnspython version: 2.7.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 - md5: 0adf8f63d500d20418656289249533f9 + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: - - python >=3.9.0,<4.0.0 + - python >=3.9,<4.0.0 - sniffio constrains: - - cryptography >=43 + - aioquic >=1.0.0 - wmi >=1.5.1 - - h2 >=4.1.0 + - httpx >=0.26.0 - trio >=0.23 + - cryptography >=43 - httpcore >=1.0.0 - - aioquic >=1.0.0 - - httpx >=0.26.0 - idna >=3.7 + - h2 >=4.1.0 license: ISC license_family: OTHER - size: 172740 - timestamp: 1728178868478 + size: 172172 + timestamp: 1733256829961 - kind: conda name: email-validator version: 2.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 - md5: 3067adf57ee658ddf5bfad47b0041ce4 + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 depends: - dnspython >=2.0.0 - idna >=2.0.0 - - python >=3.7 + - python >=3.9 license: Unlicense - size: 44157 - timestamp: 1718984716782 + size: 44401 + timestamp: 1733300827551 - kind: conda name: email_validator version: 2.2.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 - md5: 0214a004f7cf5ac28fc10a390dfc47ee + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: - email-validator >=2.2.0,<2.2.1.0a0 license: Unlicense - size: 6690 - timestamp: 1718984720419 + size: 6552 + timestamp: 1733300828176 - kind: conda name: exceptiongroup version: 1.2.2 @@ -2389,17 +2376,18 @@ packages: - kind: conda name: filelock version: 3.16.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c depends: - - python >=3.7 + - python >=3.9 license: Unlicense - size: 17357 - timestamp: 1726613593584 + size: 17441 + timestamp: 1733240909987 - kind: conda name: freetype version: 2.12.1 @@ -2629,51 +2617,54 @@ packages: - kind: conda name: h11 version: 0.14.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 - md5: b21ed0883505ba1910994f1df031a428 + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - python >=3 + - python >=3.9 - typing_extensions license: MIT license_family: MIT - size: 48251 - timestamp: 1664132995560 + size: 51846 + timestamp: 1733327599467 - kind: conda name: h2 version: 4.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: - hpack >=4.0,<5 - hyperframe >=6.0,<7 - - python >=3.6.1 + - python >=3.9 license: MIT license_family: MIT - size: 46754 - timestamp: 1634280590080 + size: 52000 + timestamp: 1733298867359 - kind: conda name: hpack version: 4.0.0 - build: pyh9f0ad1d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 25341 - timestamp: 1598856368685 + size: 29412 + timestamp: 1733299296857 - kind: conda name: httpcore version: 1.0.7 @@ -2791,18 +2782,19 @@ packages: - kind: conda name: hyperframe version: 6.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14646 - timestamp: 1619110249723 + size: 17239 + timestamp: 1733298862681 - kind: conda name: icu version: '75.1' @@ -2853,19 +2845,20 @@ packages: - kind: conda name: jinja2 version: 3.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a + md5: 08cce3151bde4ecad7885bd9fb647532 depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 111565 - timestamp: 1715127275924 + size: 110963 + timestamp: 1733217424408 - kind: conda name: jupyter_client version: 8.6.3 @@ -3846,18 +3839,18 @@ packages: timestamp: 1726659794676 - kind: conda name: libcxx - version: 19.1.4 + version: 19.1.5 build: ha82da77_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 + md5: 3c7be0df28ccda1d193ea6de56dcb5ff depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520678 - timestamp: 1732060258949 + size: 519819 + timestamp: 1733291654212 - kind: conda name: libdeflate version: '1.22' @@ -4678,6 +4671,89 @@ packages: license_family: BSD size: 15823 timestamp: 1729643275943 +- kind: conda + name: liblzma + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 + md5: faa0ab222b9d12a52a8ebc655c9236f3 + depends: + - __osx >=11.0 + license: 0BSD + size: 98836 + timestamp: 1733321533638 +- kind: conda + name: liblzma + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f + md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + depends: + - libgcc >=13 + license: 0BSD + size: 124115 + timestamp: 1733323693681 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 + md5: 137c535dddd880f844f33ed91b8abdba + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111223 + timestamp: 1733321312512 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 + md5: 89955d2470cbacea3d5e069d67c94f44 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD + size: 112941 + timestamp: 1733321552604 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 + md5: 27995ae8bc93eeb949315655daa19d3c + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD + size: 376767 + timestamp: 1733323860026 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a + md5: 7069f4de645461447f1ab7736c94db26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD + size: 375452 + timestamp: 1733321322415 - kind: conda name: libnghttp2 version: 1.64.0 @@ -5773,27 +5849,29 @@ packages: - kind: conda name: markdown-it-py version: 3.0.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 - md5: 93a8e71256479c62074356ef6ebf501b + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: - mdurl >=0.1,<1 - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 64356 - timestamp: 1686175179621 + size: 64430 + timestamp: 1733250550053 - kind: conda name: markupsafe version: 3.0.2 - build: py312h178313f_0 + build: py312h178313f_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 - md5: a755704ea0e2503f8c227d84829a8e81 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5803,16 +5881,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24878 - timestamp: 1729351558563 + size: 24604 + timestamp: 1733219911494 - kind: conda name: markupsafe version: 3.0.2 - build: py312h74ce7d3_0 + build: py312h74ce7d3_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - sha256: 997baf7f46bce112f6e0390efaa7fbb892b8f31567d3c554f08ac636774d74f7 - md5: 8992b90e8374193d53118f7651db0b73 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -5821,16 +5900,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25013 - timestamp: 1729352489213 + size: 25079 + timestamp: 1733220639175 - kind: conda name: markupsafe version: 3.0.2 - build: py312ha0ccf2a_0 + build: py312h998013c_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d - md5: c6ff9f291d011c9d4f0b840f49435c64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -5840,80 +5920,80 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24495 - timestamp: 1729351534830 + size: 24048 + timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e - md5: 9c25081ace6ad2c13675cf0123109cb9 - depends: - - max-core ==24.6.0.dev2024120306 release - - max-python >=24.6.0.dev2024120306,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120306 release - - mblack ==24.6.0.dev2024120306 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f + md5: 09947b7aa3a3c35b413b7c0d118126e3 + depends: + - max-core ==24.6.0.dev2024120416 release + - max-python >=24.6.0.dev2024120416,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120416 release license: LicenseRef-Modular-Proprietary - size: 9929 - timestamp: 1733209293577 + size: 9925 + timestamp: 1733332193356 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 - md5: c249d77d8e5885dd0eacd9028131413f + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef + md5: 43a976936171480fe7dbc2fed1224312 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254711372 - timestamp: 1733209193854 + size: 245904359 + timestamp: 1733332193354 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea - md5: e5b6ae7316dc2b08a52cee8f27b4f484 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 + md5: 15cac805514c6a381a9a50ee3a86de25 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258488596 - timestamp: 1733209293575 + size: 249618446 + timestamp: 1733332472125 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 - md5: 05acbd2d9cf25aa913a979aa9802c194 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 + md5: c27c6f67be3abffbf559bfd50852b493 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220248523 - timestamp: 1733209020078 + size: 210212276 + timestamp: 1733332258535 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 - md5: 4bdce0c1dd562e22566551d578103d2f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 + md5: 78af7733b4858c1bd882279a45e98795 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -5923,7 +6003,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5936,18 +6015,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128537272 - timestamp: 1733209193862 + size: 122878721 + timestamp: 1733332193368 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e - md5: e7d3ebeaaeb2bd99167fda861a7e7aba + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 + md5: 55ff43da6401cdd96073ae044b428afd depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -5957,7 +6036,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5970,18 +6048,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132223349 - timestamp: 1733209293584 + size: 126526187 + timestamp: 1733332472138 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 - md5: 9859f8c88c81c18baaddd15be03d259c + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 + md5: b84b205dbce4660cdea5b0e3cda227e9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -5991,7 +6069,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -6004,17 +6081,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119113363 - timestamp: 1733209020082 + size: 111629688 + timestamp: 1733332258538 - kind: conda name: mblack - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac - md5: f77eafd932de3ae309643ea716ba3c3a + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 + md5: 85c700946ce4a5ce8d11f5ee66b477cf depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6024,40 +6101,41 @@ packages: - platformdirs >=2 - python license: MIT - size: 130649 - timestamp: 1733209293580 + size: 130641 + timestamp: 1733332193362 - kind: conda name: mdurl version: 0.1.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 - md5: 776a8dd9e824f77abac30e6ef43a8f7a + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14680 - timestamp: 1704317789138 + size: 14465 + timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc - md5: 8bb40dfabe84757d93d3053fdf4b0a58 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 + md5: 411a1d159867c56043991824d1ee88d9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22940 - timestamp: 1733209293581 + size: 22946 + timestamp: 1733332193363 - kind: conda name: multidict version: 6.1.0 @@ -6170,18 +6248,19 @@ packages: - kind: conda name: mypy_extensions version: 1.0.0 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 - md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 10492 - timestamp: 1675543414256 + size: 10854 + timestamp: 1733230986902 - kind: conda name: ncurses version: '6.5' @@ -6466,66 +6545,6 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-instrumentation - version: 0.49b2 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - sha256: ee20ad159bc040642fcbce1b25f8a9fc1d788b53c6bf593a0891bf7887ec7c5f - md5: 13d714acd504cd0141688c908521c0b9 - depends: - - opentelemetry-api ~=1.4 - - opentelemetry-semantic-conventions 0.49b2 - - packaging >=18.0 - - python >=3.9 - - setuptools >=16.0 - - wrapt <2.0.0,>=1.0.0 - license: Apache-2.0 - license_family: APACHE - size: 31616 - timestamp: 1732070359772 -- kind: conda - name: opentelemetry-instrumentation-asgi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - sha256: 7b2b4da037baa506a82c5e3e711905f34448441e069a6e3affb0e4917b3ee5e0 - md5: 482ad6cdc507689d5c33eb22aa16d83e - depends: - - asgiref ~=3.0 - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 23749 - timestamp: 1732086813641 -- kind: conda - name: opentelemetry-instrumentation-fastapi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - sha256: e853f62b4c56e308f349a3f360cf4d6aa814a9dc926e727c25effcf4121af68c - md5: 59c01fcead989ba58c5dc79e3ac3aab3 - depends: - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-instrumentation-asgi 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 20288 - timestamp: 1732093785486 - kind: conda name: opentelemetry-proto version: 1.28.2 @@ -6578,21 +6597,6 @@ packages: license_family: APACHE size: 81534 timestamp: 1732067304518 -- kind: conda - name: opentelemetry-util-http - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - sha256: 73bb1cbb640b0732c1a04764a9704bb048ab77d6cb9c6439eb50ec0ecf926ede - md5: f267c60fc629a9bd1aa388f6ed8ea0ab - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - size: 19241 - timestamp: 1732081026829 - kind: conda name: orc version: 2.0.3 @@ -6748,18 +6752,19 @@ packages: - kind: conda name: pathspec version: 0.12.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d - md5: 17064acba08d3686f1135b5ec1b32b12 + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 depends: - - python >=3.7 + - python >=3.9 license: MPL-2.0 license_family: MOZILLA - size: 41173 - timestamp: 1702250135032 + size: 41075 + timestamp: 1733233471940 - kind: conda name: pillow version: 11.0.0 @@ -6837,33 +6842,34 @@ packages: - kind: conda name: platformdirs version: 4.3.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 20625 - timestamp: 1726613611845 + size: 20448 + timestamp: 1733232756001 - kind: conda name: prometheus_client - version: 0.21.0 + version: 0.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 - md5: 07e9550ddff45150bfc7da146268e165 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 49024 - timestamp: 1726902073034 + size: 49002 + timestamp: 1733327434163 - kind: conda name: propcache version: 0.2.0 @@ -7172,13 +7178,13 @@ packages: timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.10.2 + version: 2.10.3 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 - md5: e661b732b4d7514ace55a01873f03201 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 + md5: 194ef7f91286978521350f171b117f01 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.1 @@ -7187,8 +7193,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 316818 - timestamp: 1732689481710 + size: 317037 + timestamp: 1733316963547 - kind: conda name: pydantic-core version: 2.27.1 @@ -7269,18 +7275,19 @@ packages: - kind: conda name: pygments version: 2.18.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a depends: - - python >=3.8 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 879295 - timestamp: 1714846885370 + size: 876700 + timestamp: 1733221731178 - kind: conda name: pyinstrument version: 5.0.0 @@ -7335,20 +7342,20 @@ packages: - kind: conda name: pysocks version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 + build: pyha55dd90_7 + build_number: 7 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18981 - timestamp: 1661604969727 + size: 21085 + timestamp: 1733217331982 - kind: conda name: python version: 3.12.7 @@ -7450,23 +7457,25 @@ packages: - python >=3.9 - six >=1.5 license: Apache-2.0 + license_family: APACHE size: 222505 timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c - md5: c2997ea9360ac4e015658804a7a84f94 + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 24278 - timestamp: 1706018281544 + size: 24215 + timestamp: 1733243277223 - kind: conda name: python-json-logger version: 2.0.7 @@ -7485,33 +7494,35 @@ packages: - kind: conda name: python-multipart version: 0.0.19 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 - md5: fe524346d3a9aa0aaf353dc39f7d1715 + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f + md5: c74333aa447ed2b94d49e5db23da5de6 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27780 - timestamp: 1733062326577 + size: 27768 + timestamp: 1733323160772 - kind: conda name: python-tzdata version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 - md5: 986287f89929b2d629bd6ef6497dc307 + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 142527 - timestamp: 1727140688093 + size: 142235 + timestamp: 1733235414217 - kind: conda name: python-xxhash version: 3.5.0 @@ -7909,6 +7920,7 @@ packages: constrains: - chardet >=3.0.2,<6 license: Apache-2.0 + license_family: APACHE size: 58723 timestamp: 1733217126197 - kind: conda @@ -8036,18 +8048,19 @@ packages: - kind: conda name: shellingham version: 1.5.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb - md5: d08db09a552699ee9e7eec56b4eb3899 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 14568 - timestamp: 1698144516278 + size: 14462 + timestamp: 1733301007770 - kind: conda name: six version: 1.16.0 @@ -8112,18 +8125,19 @@ packages: - kind: conda name: sniffio version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b - md5: 490730480d76cf9c8f8f2849719c6e2b + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 depends: - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 15064 - timestamp: 1708953086199 + size: 15019 + timestamp: 1733244175724 - kind: conda name: sse-starlette version: 2.1.3 @@ -8378,58 +8392,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - sha256: 4d7f1c77b928a66ae3b0089e288e7fdeb826bf0dabba9799488017e6a9b84f38 - md5: 9eb8a3f5d36ca3e7f686e7a5d85aff72 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 + md5: cf9393f5733c7277b1a5f79145f8485b depends: - python >=3.9 - - typer-slim-standard 0.14.0 hd8ed1ab_0 + - typer-slim-standard 0.15.0 hd8ed1ab_0 license: MIT license_family: MIT - size: 54637 - timestamp: 1732848384457 + size: 56455 + timestamp: 1733279871129 - kind: conda name: typer-slim - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - sha256: 883969c10b9837bb18a340ffb01a984ef6b4655fc72ff05aeb7bc659c9a1229d - md5: 3674a4cd7fd8e8a7277af2b30965925d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc + md5: 629fef89115de5a907fb9765cdd45b26 depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: + - typer >=0.15.0,<0.15.1.0a0 - shellingham >=1.3.0 - rich >=10.11.0 - - typer >=0.14.0,<0.14.1.0a0 license: MIT license_family: MIT - size: 43504 - timestamp: 1732848371202 + size: 43480 + timestamp: 1733279858535 - kind: conda name: typer-slim-standard - version: 0.14.0 + version: 0.15.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - sha256: 0e09e393e75028a0e827c7177e0fb1a070c87756e47b5ae6418423e22b10dfac - md5: 9e1e1f9c84add9637ca715f8fb71a83f + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 + md5: a4746fc9efbff02c1a288d8fcd8ffba9 depends: - rich - shellingham - - typer-slim 0.14.0 pyhd8ed1ab_0 + - typer-slim 0.15.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 49180 - timestamp: 1732848371718 + size: 50259 + timestamp: 1733279859017 - kind: conda name: typing-extensions version: 4.12.2 @@ -8497,44 +8511,46 @@ packages: - kind: conda name: uvicorn version: 0.32.1 - build: pyh31011fe_0 + build: pyh31011fe_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - sha256: a310c494c817a9f6c985fc6d2772acb953a20170d03b0eabfae0e9d8c76c97ee - md5: fa77fc8110207b3bfc5ccc9d316744f4 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 + md5: 7832640e5e302059e844d56f410487a6 depends: - __unix - click >=7.0 - h11 >=0.8 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49393 - timestamp: 1732185242260 + size: 49340 + timestamp: 1733332048141 - kind: conda name: uvicorn-standard version: 0.32.1 - build: h31011fe_0 + build: h31011fe_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - sha256: 52545f7c88a7c779376900de5f9d81ce36738cd8770b543e89592ad7d1003c40 - md5: 49c2820e0f39cb710becd856ff14d683 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe + md5: 0c233d5c71d398cf01d0281e72194005 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.1 pyh31011fe_0 + - uvicorn 0.32.1 pyh31011fe_1 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7136 - timestamp: 1732185243035 + size: 7094 + timestamp: 1733332049165 - kind: conda name: uvloop version: 0.21.0 @@ -8882,41 +8898,142 @@ packages: timestamp: 1689951608120 - kind: conda name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 + version: 5.6.3 + build: h2dbfc1b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec + md5: da081cb850e57b0a0a242bab9087fbeb depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 418368 - timestamp: 1660346797927 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + - liblzma-devel 5.6.3 h86ecc28_0 + - xz-gpl-tools 5.6.3 h2dbfc1b_0 + - xz-tools 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23448 + timestamp: 1733324353894 - kind: conda name: xz - version: 5.2.6 - build: h57fd34a_0 + version: 5.6.3 + build: h9a6d368_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - size: 235693 - timestamp: 1660346961024 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 + md5: 86674fa432df20be6feea4bd8fec0668 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + - liblzma-devel 5.6.3 h39f12f2_0 + - xz-gpl-tools 5.6.3 h9a6d368_0 + - xz-tools 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23570 + timestamp: 1733321627935 - kind: conda name: xz - version: 5.2.6 - build: h9cdd2b7_0 + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 + md5: 504333561007fbf0af129f0cee4f5652 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + - liblzma-devel 5.6.3 hb9d3cd8_0 + - xz-gpl-tools 5.6.3 hbcc6ac9_0 + - xz-tools 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23435 + timestamp: 1733321352996 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h2dbfc1b_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 - md5: 83baad393a31d59c20b63ba4da6592df + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca + md5: b0245c3aad4592510bb0c19212c1bded depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 440555 - timestamp: 1660348056328 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33355 + timestamp: 1733324193303 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h9a6d368_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd + md5: 9e4519aef300966683764ccbbaa89da4 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33343 + timestamp: 1733321610703 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db + md5: e4f1e59ca2971e8d0fdde0928c3f7b7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33299 + timestamp: 1733321343126 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda + sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 + md5: 10855380caa384c8388b93ef29c7bd04 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later + size: 81129 + timestamp: 1733321582233 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda + sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 + md5: 0136c7aa78b4d887c9fb6dbf39749778 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later + size: 95353 + timestamp: 1733324033407 +- kind: conda + name: xz-tools + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda + sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 + md5: 40270c1e058fd1d31caee8bf2c68fc3a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later + size: 89832 + timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 diff --git a/magic.lock b/magic.lock index 818c254d76..461f5937a3 100644 --- a/magic.lock +++ b/magic.lock @@ -8,12 +8,11 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda @@ -23,10 +22,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -40,36 +39,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 @@ -106,6 +105,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda @@ -128,19 +129,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda @@ -149,38 +150,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.1-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -194,10 +191,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -206,15 +203,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda @@ -222,7 +219,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda @@ -231,12 +230,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda @@ -246,10 +244,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -263,37 +261,37 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 @@ -330,6 +328,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda @@ -352,19 +352,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda @@ -373,38 +373,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.1-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -418,10 +414,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda @@ -430,15 +426,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda @@ -446,7 +442,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda @@ -454,12 +452,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -469,10 +466,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -486,36 +483,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda @@ -533,7 +530,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda @@ -548,6 +545,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda @@ -565,20 +564,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda @@ -587,38 +586,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.1-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.6.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda @@ -631,10 +626,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -643,15 +638,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda @@ -659,7 +654,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda @@ -716,18 +713,18 @@ packages: - kind: conda name: aiohappyeyeballs version: 2.4.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 - md5: 8d6f8a679aa0272ba8d6092ce4824870 + url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 depends: - python >=3.9 license: PSF-2.0 - license_family: PSF - size: 19310 - timestamp: 1733135584059 + size: 19351 + timestamp: 1733332029649 - kind: conda name: aiohttp version: 3.11.9 @@ -803,35 +800,36 @@ packages: - kind: conda name: aiosignal version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 - md5: d1e1eb7e21a9e2c74279d87dafb68156 + url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda + sha256: 9c7b639ea0cc796ef46c57fa104ec1f2ed53cd11c063518869a5a9d7d3b0b2db + md5: d736bd1b8904d7593dce4893e58a7881 depends: - frozenlist >=1.1.0 - - python >=3.7 + - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 12730 - timestamp: 1667935912504 + size: 13157 + timestamp: 1733332198143 - kind: conda name: annotated-types version: 0.7.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_0.conda - sha256: 668f0825b6c18e4012ca24a0070562b6ec801ebc7008228a428eb52b4038873f - md5: 7e9f4612544c8edbfd6afad17f1bd045 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c depends: - - python >=3.7 + - python >=3.9 - typing-extensions >=4.0.0 license: MIT license_family: MIT - size: 18235 - timestamp: 1716290348421 + size: 18074 + timestamp: 1733247158254 - kind: conda name: anyio version: 4.6.2.post1 @@ -854,23 +852,6 @@ packages: license_family: MIT size: 109864 timestamp: 1728935803440 -- kind: conda - name: asgiref - version: 3.8.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/asgiref-3.8.1-pyhd8ed1ab_1.conda - sha256: c8d51a32f3530e3ca176d8f7bf5621c68c7c1c03fe9cc5c3c49d8ba4a1248f43 - md5: 21187c8276f87b6aedfe63c267a6eed7 - depends: - - python >=3.9 - - typing_extensions >=4 - license: BSD-3-Clause - license_family: BSD - size: 26436 - timestamp: 1733215704904 - kind: conda name: attrs version: 24.2.0 @@ -1318,12 +1299,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.3-h29aef15_0.conda - sha256: 57aa8b28890efd82c479e902125ea8a37782b163f13ae0856b259ec527a52879 - md5: e09cd76e50ce09ec14c17109da5c6502 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a + md5: 1046cf15a47f06a0af07f674e477d807 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1335,16 +1316,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117467 - timestamp: 1733098782199 + size: 117398 + timestamp: 1733299233564 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.3-h3a84f74_0.conda - sha256: db17a15e5e01f19700bf9be961e1c4e002ccf8dc4d9caa3a24a0ab54f00f2c2d - md5: 171850b890600458ae6c990e78f1fa23 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 + md5: 7d029b9aa9decf4c0fb8a9a8940c9906 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1357,16 +1338,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113536 - timestamp: 1733098705479 + size: 113660 + timestamp: 1733299194447 - kind: conda name: aws-c-s3 - version: 0.7.3 + version: 0.7.4 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.3-h840aca7_0.conda - sha256: 18972a91f32f6b0edb58eb71cb2f5b56654183fd6ba611b3b0d6cc484017aeff - md5: 893e668d99fa4b31eef9dc5b19c21b9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 + md5: 02f78a084e101dee30c794f963549de4 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1377,8 +1358,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97145 - timestamp: 1733098874599 + size: 97136 + timestamp: 1733299356527 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1480,13 +1461,14 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.6 - build: h7939e66_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-h7939e66_1.conda - sha256: 3d0b1996d28a2647ced83ed8052ee331df70b2c1a68fb6db0fe4e743a88be54d - md5: 5e573a52a1cd20f81d7fdf1db4f4583a + build: h159bff8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda + sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 + md5: c498e6490834aacf7835c96403862881 depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1494,23 +1476,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283670 - timestamp: 1733150929992 + size: 354822 + timestamp: 1733333950713 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: ha226bf8_1 - build_number: 1 + build: h8474b10_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-ha226bf8_1.conda - sha256: f645e2a8015d8e71ed785c81a14a202ebce2f5dcca8982cd7ec5f8000f9be5c3 - md5: 81da0b5f65ab08e3919d6eadf08b5776 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda + sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba + md5: 54c898f166bcfbe06c2b7ac36360f371 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1520,24 +1502,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 236505 - timestamp: 1733151090562 + size: 235829 + timestamp: 1733334077172 - kind: conda name: aws-crt-cpp version: 0.29.6 - build: hdec8b0f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-hdec8b0f_1.conda - sha256: cd09f1d5d854607ce7acafc76c74e864f296d296e60b54054a10f757ecc3d2dd - md5: 40647232fad98f92be8c6050a7e0c2bd + build: hffbb33f_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda + sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 + md5: fb8be2af168b63e0b77076a1dc6baa85 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1545,14 +1526,14 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.3,<0.7.4.0a0 + - aws-c-s3 >=0.7.4,<0.7.5.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354710 - timestamp: 1733150818238 + size: 284031 + timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp version: 1.11.449 @@ -2174,49 +2155,52 @@ packages: - kind: conda name: charset-normalizer version: 3.4.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda + sha256: 63022ee2c6a157a9f980250a66f54bdcdf5abee817348d0f9a74c2441a6fbf0e + md5: 6581a17bba6b948bb60130026404a9d6 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 47314 - timestamp: 1728479405343 + size: 47533 + timestamp: 1733218182393 - kind: conda name: click version: 8.1.7 - build: unix_pyh707e725_0 + build: unix_pyh707e725_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda - sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec - md5: f3ad426304898027fc619827ff428eca + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda + sha256: 1cd5fc6ccdd5141378e51252a7a3810b07fd5a7e6934a5b4a7eccba66566224b + md5: cb8e52f28f5e592598190c562e7b5bf1 depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84437 - timestamp: 1692311973840 + size: 84513 + timestamp: 1733221925078 - kind: conda name: colorama version: 0.4.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 25170 - timestamp: 1666700778190 + size: 27011 + timestamp: 1733218222191 - kind: conda name: datasets version: 2.14.4 @@ -2280,58 +2264,61 @@ packages: - kind: conda name: dnspython version: 2.7.0 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_0.conda - sha256: 3e2ea1bfd90969e0e1f152bb1f969c56661278ad6bfaa3272027b1ff0d9a1a23 - md5: 0adf8f63d500d20418656289249533f9 + url: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 depends: - - python >=3.9.0,<4.0.0 + - python >=3.9,<4.0.0 - sniffio constrains: - - cryptography >=43 + - aioquic >=1.0.0 - wmi >=1.5.1 - - h2 >=4.1.0 + - httpx >=0.26.0 - trio >=0.23 + - cryptography >=43 - httpcore >=1.0.0 - - aioquic >=1.0.0 - - httpx >=0.26.0 - idna >=3.7 + - h2 >=4.1.0 license: ISC license_family: OTHER - size: 172740 - timestamp: 1728178868478 + size: 172172 + timestamp: 1733256829961 - kind: conda name: email-validator version: 2.2.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_0.conda - sha256: ea9e936ed7c49ea6d66fa3554afe31ba311f2a3d5e384d8c38925fda9e37bdb9 - md5: 3067adf57ee658ddf5bfad47b0041ce4 + url: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 depends: - dnspython >=2.0.0 - idna >=2.0.0 - - python >=3.7 + - python >=3.9 license: Unlicense - size: 44157 - timestamp: 1718984716782 + size: 44401 + timestamp: 1733300827551 - kind: conda name: email_validator version: 2.2.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_0.conda - sha256: 2cbbbe9e0f3872214227c27b8b775dd2296a435c90ef50a7cc69934c329b6c65 - md5: 0214a004f7cf5ac28fc10a390dfc47ee + url: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa depends: - email-validator >=2.2.0,<2.2.1.0a0 license: Unlicense - size: 6690 - timestamp: 1718984720419 + size: 6552 + timestamp: 1733300828176 - kind: conda name: exceptiongroup version: 1.2.2 @@ -2392,17 +2379,18 @@ packages: - kind: conda name: filelock version: 3.16.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c depends: - - python >=3.7 + - python >=3.9 license: Unlicense - size: 17357 - timestamp: 1726613593584 + size: 17441 + timestamp: 1733240909987 - kind: conda name: freetype version: 2.12.1 @@ -2632,51 +2620,54 @@ packages: - kind: conda name: h11 version: 0.14.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_0.tar.bz2 - sha256: 817d2c77d53afe3f3d9cf7f6eb8745cdd8ea76c7adaa9d7ced75c455a2c2c085 - md5: b21ed0883505ba1910994f1df031a428 + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - python >=3 + - python >=3.9 - typing_extensions license: MIT license_family: MIT - size: 48251 - timestamp: 1664132995560 + size: 51846 + timestamp: 1733327599467 - kind: conda name: h2 version: 4.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 depends: - hpack >=4.0,<5 - hyperframe >=6.0,<7 - - python >=3.6.1 + - python >=3.9 license: MIT license_family: MIT - size: 46754 - timestamp: 1634280590080 + size: 52000 + timestamp: 1733298867359 - kind: conda name: hpack version: 4.0.0 - build: pyh9f0ad1d_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 25341 - timestamp: 1598856368685 + size: 29412 + timestamp: 1733299296857 - kind: conda name: httpcore version: 1.0.7 @@ -2794,18 +2785,19 @@ packages: - kind: conda name: hyperframe version: 6.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14646 - timestamp: 1619110249723 + size: 17239 + timestamp: 1733298862681 - kind: conda name: icu version: '75.1' @@ -2856,19 +2848,20 @@ packages: - kind: conda name: jinja2 version: 3.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda + sha256: 85a7169c078b8065bd9d121b0e7b99c8b88c42a411314b6ae5fcd81c48c4710a + md5: 08cce3151bde4ecad7885bd9fb647532 depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 111565 - timestamp: 1715127275924 + size: 110963 + timestamp: 1733217424408 - kind: conda name: jupyter_client version: 8.6.3 @@ -3849,18 +3842,18 @@ packages: timestamp: 1726659794676 - kind: conda name: libcxx - version: 19.1.4 + version: 19.1.5 build: ha82da77_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a + url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.5-ha82da77_0.conda + sha256: 7918cc0bb7a6554cdd3eee634c3dc414a1ab8ec49faeca1567367bb92118f9d7 + md5: 3c7be0df28ccda1d193ea6de56dcb5ff depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 520678 - timestamp: 1732060258949 + size: 519819 + timestamp: 1733291654212 - kind: conda name: libdeflate version: '1.22' @@ -4681,6 +4674,89 @@ packages: license_family: BSD size: 15823 timestamp: 1729643275943 +- kind: conda + name: liblzma + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda + sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 + md5: faa0ab222b9d12a52a8ebc655c9236f3 + depends: + - __osx >=11.0 + license: 0BSD + size: 98836 + timestamp: 1733321533638 +- kind: conda + name: liblzma + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda + sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f + md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + depends: + - libgcc >=13 + license: 0BSD + size: 124115 + timestamp: 1733323693681 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda + sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 + md5: 137c535dddd880f844f33ed91b8abdba + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111223 + timestamp: 1733321312512 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 + md5: 89955d2470cbacea3d5e069d67c94f44 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD + size: 112941 + timestamp: 1733321552604 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 + md5: 27995ae8bc93eeb949315655daa19d3c + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD + size: 376767 + timestamp: 1733323860026 +- kind: conda + name: liblzma-devel + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a + md5: 7069f4de645461447f1ab7736c94db26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD + size: 375452 + timestamp: 1733321322415 - kind: conda name: libnghttp2 version: 1.64.0 @@ -5715,20 +5791,19 @@ packages: timestamp: 1727963148474 - kind: conda name: lit - version: 19.1.4 - build: pyhd8ed1ab_1 - build_number: 1 + version: 19.1.5 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.4-pyhd8ed1ab_1.conda - sha256: 52614f2f02b16c07759a69cf7b3f7f0794428b811df28fdc672eed1cc498454c - md5: 2b74a4939cd6f0fe32e61dd9617506b9 + url: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda + sha256: 07854df4ab39a333155b4813338caf8e0f6fe5a9abc84518d9409aa5cd91f94c + md5: ad3f4f4e25b666610c281c6fb92f06f9 depends: - python >=3 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 128390 - timestamp: 1732691055432 + size: 128621 + timestamp: 1733310809397 - kind: conda name: llvm-openmp version: 19.1.4 @@ -5792,27 +5867,29 @@ packages: - kind: conda name: markdown-it-py version: 3.0.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_0.conda - sha256: c041b0eaf7a6af3344d5dd452815cdc148d6284fec25a4fa3f4263b3a021e962 - md5: 93a8e71256479c62074356ef6ebf501b + url: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 depends: - mdurl >=0.1,<1 - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 64356 - timestamp: 1686175179621 + size: 64430 + timestamp: 1733250550053 - kind: conda name: markupsafe version: 3.0.2 - build: py312h178313f_0 + build: py312h178313f_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 - md5: a755704ea0e2503f8c227d84829a8e81 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5822,16 +5899,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24878 - timestamp: 1729351558563 + size: 24604 + timestamp: 1733219911494 - kind: conda name: markupsafe version: 3.0.2 - build: py312h74ce7d3_0 + build: py312h74ce7d3_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - sha256: 997baf7f46bce112f6e0390efaa7fbb892b8f31567d3c554f08ac636774d74f7 - md5: 8992b90e8374193d53118f7651db0b73 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -5840,16 +5918,17 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 25013 - timestamp: 1729352489213 + size: 25079 + timestamp: 1733220639175 - kind: conda name: markupsafe version: 3.0.2 - build: py312ha0ccf2a_0 + build: py312h998013c_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d - md5: c6ff9f291d011c9d4f0b840f49435c64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -5859,80 +5938,80 @@ packages: - jinja2 >=3.0.0 license: BSD-3-Clause license_family: BSD - size: 24495 - timestamp: 1729351534830 + size: 24048 + timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120306-release.conda - sha256: 2aae2a8286dca29453e8cc8cfe13511aa016a521ac0c9201ceb24d1ba6c4138e - md5: 9c25081ace6ad2c13675cf0123109cb9 - depends: - - max-core ==24.6.0.dev2024120306 release - - max-python >=24.6.0.dev2024120306,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120306 release - - mblack ==24.6.0.dev2024120306 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda + sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f + md5: 09947b7aa3a3c35b413b7c0d118126e3 + depends: + - max-core ==24.6.0.dev2024120416 release + - max-python >=24.6.0.dev2024120416,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120416 release license: LicenseRef-Modular-Proprietary - size: 9929 - timestamp: 1733209293577 + size: 9925 + timestamp: 1733332193356 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120306-release.conda - sha256: a82534696c6e078fb4e14b4b0f058336ffd0a647f7404e85aaee18eec25be067 - md5: c249d77d8e5885dd0eacd9028131413f + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda + sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef + md5: 43a976936171480fe7dbc2fed1224312 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 254711372 - timestamp: 1733209193854 + size: 245904359 + timestamp: 1733332193354 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120306-release.conda - sha256: bd0858a3e2069a86cd71370322e7ac26ad3948225e4f0811e4fbf8771d44d0ea - md5: e5b6ae7316dc2b08a52cee8f27b4f484 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda + sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 + md5: 15cac805514c6a381a9a50ee3a86de25 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 258488596 - timestamp: 1733209293575 + size: 249618446 + timestamp: 1733332472125 - kind: conda name: max-core - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120306-release.conda - sha256: 88b5f2cbb2724067d33b10515613ec845f134c3758fd063852ac191a276d7812 - md5: 05acbd2d9cf25aa913a979aa9802c194 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda + sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 + md5: c27c6f67be3abffbf559bfd50852b493 depends: - - mblack ==24.6.0.dev2024120306 release + - mblack ==24.6.0.dev2024120416 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 220248523 - timestamp: 1733209020078 + size: 210212276 + timestamp: 1733332258535 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 78dc00af885799e8c1f92185a505aee022f2ffd7191d24fa94ef428457f53e15 - md5: 4bdce0c1dd562e22566551d578103d2f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 + md5: 78af7733b4858c1bd882279a45e98795 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -5942,7 +6021,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5955,18 +6033,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 128537272 - timestamp: 1733209193862 + size: 122878721 + timestamp: 1733332193368 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: 3910ceb9135f2258df30dd7a5d87b8f80a284645d6da48daa0e9bb145a49744e - md5: e7d3ebeaaeb2bd99167fda861a7e7aba + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 + md5: 55ff43da6401cdd96073ae044b428afd depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -5976,7 +6054,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -5989,18 +6066,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 132223349 - timestamp: 1733209293584 + size: 126526187 + timestamp: 1733332472138 - kind: conda name: max-python - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120306-3.12release.conda - sha256: ddafa4f7201fca06f38e8a0232cdbbb918d6a24c03cb25a0137d4fcc0ca9f354 - md5: 9859f8c88c81c18baaddd15be03d259c + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda + sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 + md5: b84b205dbce4660cdea5b0e3cda227e9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python 3.12.* - pillow - fastapi @@ -6010,7 +6087,6 @@ packages: - opentelemetry-api - opentelemetry-exporter-otlp-proto-http >=1.27.0 - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-instrumentation-fastapi - opentelemetry-sdk >=1.27.0 - pydantic-settings >=2.4.0,<3 - pydantic >=2.4.0,<3 @@ -6023,17 +6099,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 119113363 - timestamp: 1733209020082 + size: 111629688 + timestamp: 1733332258538 - kind: conda name: mblack - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120306-release.conda - sha256: 35b22caab89b65a52b9e7877762a58bba8cd21137ac1383e268b8a2ae45173ac - md5: f77eafd932de3ae309643ea716ba3c3a + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 + md5: 85c700946ce4a5ce8d11f5ee66b477cf depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6043,40 +6119,41 @@ packages: - platformdirs >=2 - python license: MIT - size: 130649 - timestamp: 1733209293580 + size: 130641 + timestamp: 1733332193362 - kind: conda name: mdurl version: 0.1.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_0.conda - sha256: 64073dfb6bb429d52fff30891877b48c7ec0f89625b1bf844905b66a81cce6e1 - md5: 776a8dd9e824f77abac30e6ef43a8f7a + url: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 depends: - - python >=3.6 + - python >=3.9 license: MIT license_family: MIT - size: 14680 - timestamp: 1704317789138 + size: 14465 + timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120306 + version: 24.6.0.dev2024120416 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120306-release.conda - sha256: dd1fcd4298ef08be4507931babe70d6b335dc28d5ead602460747edc4f10c2dc - md5: 8bb40dfabe84757d93d3053fdf4b0a58 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 + md5: 411a1d159867c56043991824d1ee88d9 depends: - - max-core ==24.6.0.dev2024120306 release + - max-core ==24.6.0.dev2024120416 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22940 - timestamp: 1733209293581 + size: 22946 + timestamp: 1733332193363 - kind: conda name: multidict version: 6.1.0 @@ -6189,18 +6266,19 @@ packages: - kind: conda name: mypy_extensions version: 1.0.0 - build: pyha770c72_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_0.conda - sha256: f240217476e148e825420c6bc3a0c0efb08c0718b7042fae960400c02af858a3 - md5: 4eccaeba205f0aed9ac3a9ea58568ca3 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 10492 - timestamp: 1675543414256 + size: 10854 + timestamp: 1733230986902 - kind: conda name: ncurses version: '6.5' @@ -6485,66 +6563,6 @@ packages: license_family: APACHE size: 14721 timestamp: 1695214221489 -- kind: conda - name: opentelemetry-instrumentation - version: 0.49b2 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-0.49b2-pyhff2d567_0.conda - sha256: ee20ad159bc040642fcbce1b25f8a9fc1d788b53c6bf593a0891bf7887ec7c5f - md5: 13d714acd504cd0141688c908521c0b9 - depends: - - opentelemetry-api ~=1.4 - - opentelemetry-semantic-conventions 0.49b2 - - packaging >=18.0 - - python >=3.9 - - setuptools >=16.0 - - wrapt <2.0.0,>=1.0.0 - license: Apache-2.0 - license_family: APACHE - size: 31616 - timestamp: 1732070359772 -- kind: conda - name: opentelemetry-instrumentation-asgi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-asgi-0.49b2-pyhd8ed1ab_0.conda - sha256: 7b2b4da037baa506a82c5e3e711905f34448441e069a6e3affb0e4917b3ee5e0 - md5: 482ad6cdc507689d5c33eb22aa16d83e - depends: - - asgiref ~=3.0 - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 23749 - timestamp: 1732086813641 -- kind: conda - name: opentelemetry-instrumentation-fastapi - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-instrumentation-fastapi-0.49b2-pyhd8ed1ab_0.conda - sha256: e853f62b4c56e308f349a3f360cf4d6aa814a9dc926e727c25effcf4121af68c - md5: 59c01fcead989ba58c5dc79e3ac3aab3 - depends: - - opentelemetry-api ~=1.12 - - opentelemetry-instrumentation 0.49b2 - - opentelemetry-instrumentation-asgi 0.49b2 - - opentelemetry-semantic-conventions 0.49b2 - - opentelemetry-util-http 0.49b2 - - python >=3.7 - license: Apache-2.0 - license_family: APACHE - size: 20288 - timestamp: 1732093785486 - kind: conda name: opentelemetry-proto version: 1.28.2 @@ -6597,21 +6615,6 @@ packages: license_family: APACHE size: 81534 timestamp: 1732067304518 -- kind: conda - name: opentelemetry-util-http - version: 0.49b2 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-util-http-0.49b2-pyhd8ed1ab_0.conda - sha256: 73bb1cbb640b0732c1a04764a9704bb048ab77d6cb9c6439eb50ec0ecf926ede - md5: f267c60fc629a9bd1aa388f6ed8ea0ab - depends: - - python >=3.8 - license: Apache-2.0 - license_family: APACHE - size: 19241 - timestamp: 1732081026829 - kind: conda name: orc version: 2.0.3 @@ -6767,18 +6770,19 @@ packages: - kind: conda name: pathspec version: 0.12.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_0.conda - sha256: 4e534e66bfe8b1e035d2169d0e5b185450546b17e36764272863e22e0370be4d - md5: 17064acba08d3686f1135b5ec1b32b12 + url: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 depends: - - python >=3.7 + - python >=3.9 license: MPL-2.0 license_family: MOZILLA - size: 41173 - timestamp: 1702250135032 + size: 41075 + timestamp: 1733233471940 - kind: conda name: pillow version: 11.0.0 @@ -6856,33 +6860,34 @@ packages: - kind: conda name: platformdirs version: 4.3.6 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 20625 - timestamp: 1726613611845 + size: 20448 + timestamp: 1733232756001 - kind: conda name: prometheus_client - version: 0.21.0 + version: 0.21.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.0-pyhd8ed1ab_0.conda - sha256: 01f0c3dd00081637ed920a922b17bcc8ed49608404ee466ced806856e671f6b9 - md5: 07e9550ddff45150bfc7da146268e165 + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa depends: - - python >=3.8 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 49024 - timestamp: 1726902073034 + size: 49002 + timestamp: 1733327434163 - kind: conda name: propcache version: 0.2.0 @@ -7191,13 +7196,13 @@ packages: timestamp: 1733195786147 - kind: conda name: pydantic - version: 2.10.2 + version: 2.10.3 build: pyh3cfb1c2_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.2-pyh3cfb1c2_0.conda - sha256: 47368f0eeb63b2dd4c9c54ff35b216d01ae1c27b90d3c7a2066ef8e005f32103 - md5: e661b732b4d7514ace55a01873f03201 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.3-pyh3cfb1c2_0.conda + sha256: cac9eebd3d5f8d8a497a9025d756257ddc75b8b3393e6737cb45077bd744d4f8 + md5: 194ef7f91286978521350f171b117f01 depends: - annotated-types >=0.6.0 - pydantic-core 2.27.1 @@ -7206,8 +7211,8 @@ packages: - typing_extensions >=4.12.2 license: MIT license_family: MIT - size: 316818 - timestamp: 1732689481710 + size: 317037 + timestamp: 1733316963547 - kind: conda name: pydantic-core version: 2.27.1 @@ -7288,18 +7293,19 @@ packages: - kind: conda name: pygments version: 2.18.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda - sha256: 78267adf4e76d0d64ea2ffab008c501156c108bb08fecb703816fb63e279780b - md5: b7f5c092b8f9800150d998a71b76d5a1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a depends: - - python >=3.8 + - python >=3.9 license: BSD-2-Clause license_family: BSD - size: 879295 - timestamp: 1714846885370 + size: 876700 + timestamp: 1733221731178 - kind: conda name: pyinstrument version: 5.0.0 @@ -7354,20 +7360,20 @@ packages: - kind: conda name: pysocks version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 + build: pyha55dd90_7 + build_number: 7 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac depends: - __unix - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18981 - timestamp: 1661604969727 + size: 21085 + timestamp: 1733217331982 - kind: conda name: python version: 3.12.7 @@ -7469,23 +7475,25 @@ packages: - python >=3.9 - six >=1.5 license: Apache-2.0 + license_family: APACHE size: 222505 timestamp: 1733215763718 - kind: conda name: python-dotenv version: 1.0.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_0.conda - sha256: 2d4c80364f03315d606a50eddd493dbacc078e21412c2462c0f781eec49b572c - md5: c2997ea9360ac4e015658804a7a84f94 + url: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 24278 - timestamp: 1706018281544 + size: 24215 + timestamp: 1733243277223 - kind: conda name: python-json-logger version: 2.0.7 @@ -7504,33 +7512,35 @@ packages: - kind: conda name: python-multipart version: 0.0.19 - build: pyhff2d567_0 + build: pyhff2d567_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_0.conda - sha256: ff5964cd5eafc118f9d9a15fd31cd88a7ecc756ef83b6095c69b1891a53e2177 - md5: fe524346d3a9aa0aaf353dc39f7d1715 + url: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.19-pyhff2d567_1.conda + sha256: e6f6bc3d2a51f45ca26d556c5a416efdacf49a918fefcd0b7c340121e608aa5f + md5: c74333aa447ed2b94d49e5db23da5de6 depends: - python >=3.9 license: Apache-2.0 license_family: Apache - size: 27780 - timestamp: 1733062326577 + size: 27768 + timestamp: 1733323160772 - kind: conda name: python-tzdata version: '2024.2' - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_0.conda - sha256: fe3f62ce2bc714bdaa222ab3f0344a2815ad9e853c6df38d15c9f25de8a3a6d4 - md5: 986287f89929b2d629bd6ef6497dc307 + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f depends: - - python >=3.6 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 142527 - timestamp: 1727140688093 + size: 142235 + timestamp: 1733235414217 - kind: conda name: python-xxhash version: 3.5.0 @@ -7928,6 +7938,7 @@ packages: constrains: - chardet >=3.0.2,<6 license: Apache-2.0 + license_family: APACHE size: 58723 timestamp: 1733217126197 - kind: conda @@ -8055,18 +8066,19 @@ packages: - kind: conda name: shellingham version: 1.5.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_0.conda - sha256: 3c49a0a101c41b7cf6ac05a1872d7a1f91f1b6d02eecb4a36b605a19517862bb - md5: d08db09a552699ee9e7eec56b4eb3899 + url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 14568 - timestamp: 1698144516278 + size: 14462 + timestamp: 1733301007770 - kind: conda name: six version: 1.16.0 @@ -8131,18 +8143,19 @@ packages: - kind: conda name: sniffio version: 1.3.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_0.conda - sha256: bc12100b2d8836b93c55068b463190505b8064d0fc7d025e89f20ebf22fe6c2b - md5: 490730480d76cf9c8f8f2849719c6e2b + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 depends: - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: Apache - size: 15064 - timestamp: 1708953086199 + size: 15019 + timestamp: 1733244175724 - kind: conda name: sse-starlette version: 2.1.3 @@ -8397,58 +8410,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.14.0-pyhd8ed1ab_0.conda - sha256: 4d7f1c77b928a66ae3b0089e288e7fdeb826bf0dabba9799488017e6a9b84f38 - md5: 9eb8a3f5d36ca3e7f686e7a5d85aff72 + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda + sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 + md5: cf9393f5733c7277b1a5f79145f8485b depends: - python >=3.9 - - typer-slim-standard 0.14.0 hd8ed1ab_0 + - typer-slim-standard 0.15.0 hd8ed1ab_0 license: MIT license_family: MIT - size: 54637 - timestamp: 1732848384457 + size: 56455 + timestamp: 1733279871129 - kind: conda name: typer-slim - version: 0.14.0 + version: 0.15.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.14.0-pyhd8ed1ab_0.conda - sha256: 883969c10b9837bb18a340ffb01a984ef6b4655fc72ff05aeb7bc659c9a1229d - md5: 3674a4cd7fd8e8a7277af2b30965925d + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda + sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc + md5: 629fef89115de5a907fb9765cdd45b26 depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: + - typer >=0.15.0,<0.15.1.0a0 - shellingham >=1.3.0 - rich >=10.11.0 - - typer >=0.14.0,<0.14.1.0a0 license: MIT license_family: MIT - size: 43504 - timestamp: 1732848371202 + size: 43480 + timestamp: 1733279858535 - kind: conda name: typer-slim-standard - version: 0.14.0 + version: 0.15.0 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.14.0-hd8ed1ab_0.conda - sha256: 0e09e393e75028a0e827c7177e0fb1a070c87756e47b5ae6418423e22b10dfac - md5: 9e1e1f9c84add9637ca715f8fb71a83f + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 + md5: a4746fc9efbff02c1a288d8fcd8ffba9 depends: - rich - shellingham - - typer-slim 0.14.0 pyhd8ed1ab_0 + - typer-slim 0.15.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 49180 - timestamp: 1732848371718 + size: 50259 + timestamp: 1733279859017 - kind: conda name: typing-extensions version: 4.12.2 @@ -8516,44 +8529,46 @@ packages: - kind: conda name: uvicorn version: 0.32.1 - build: pyh31011fe_0 + build: pyh31011fe_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_0.conda - sha256: a310c494c817a9f6c985fc6d2772acb953a20170d03b0eabfae0e9d8c76c97ee - md5: fa77fc8110207b3bfc5ccc9d316744f4 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.32.1-pyh31011fe_1.conda + sha256: ad1d8470c629679ea3db52351a522ae44eee0111d8d8b254e8c863c4a292e5c4 + md5: 7832640e5e302059e844d56f410487a6 depends: - __unix - click >=7.0 - h11 >=0.8 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0 license: BSD-3-Clause license_family: BSD - size: 49393 - timestamp: 1732185242260 + size: 49340 + timestamp: 1733332048141 - kind: conda name: uvicorn-standard version: 0.32.1 - build: h31011fe_0 + build: h31011fe_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_0.conda - sha256: 52545f7c88a7c779376900de5f9d81ce36738cd8770b543e89592ad7d1003c40 - md5: 49c2820e0f39cb710becd856ff14d683 + url: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.32.1-h31011fe_1.conda + sha256: 378903c51b2b1136fa48b01c0a2a8dd4634136d038a4a56561c0856fdcbfcabe + md5: 0c233d5c71d398cf01d0281e72194005 depends: - __unix - httptools >=0.5.0 - python-dotenv >=0.13 - pyyaml >=5.1 - - uvicorn 0.32.1 pyh31011fe_0 + - uvicorn 0.32.1 pyh31011fe_1 - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - watchfiles >=0.13 - websockets >=10.4 license: BSD-3-Clause license_family: BSD - size: 7136 - timestamp: 1732185243035 + size: 7094 + timestamp: 1733332049165 - kind: conda name: uvloop version: 0.21.0 @@ -8901,41 +8916,142 @@ packages: timestamp: 1689951608120 - kind: conda name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 + version: 5.6.3 + build: h2dbfc1b_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda + sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec + md5: da081cb850e57b0a0a242bab9087fbeb depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 418368 - timestamp: 1660346797927 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + - liblzma-devel 5.6.3 h86ecc28_0 + - xz-gpl-tools 5.6.3 h2dbfc1b_0 + - xz-tools 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23448 + timestamp: 1733324353894 - kind: conda name: xz - version: 5.2.6 - build: h57fd34a_0 + version: 5.6.3 + build: h9a6d368_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - size: 235693 - timestamp: 1660346961024 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda + sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 + md5: 86674fa432df20be6feea4bd8fec0668 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + - liblzma-devel 5.6.3 h39f12f2_0 + - xz-gpl-tools 5.6.3 h9a6d368_0 + - xz-tools 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23570 + timestamp: 1733321627935 - kind: conda name: xz - version: 5.2.6 - build: h9cdd2b7_0 + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda + sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 + md5: 504333561007fbf0af129f0cee4f5652 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + - liblzma-devel 5.6.3 hb9d3cd8_0 + - xz-gpl-tools 5.6.3 hbcc6ac9_0 + - xz-tools 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23435 + timestamp: 1733321352996 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h2dbfc1b_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 - md5: 83baad393a31d59c20b63ba4da6592df + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda + sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca + md5: b0245c3aad4592510bb0c19212c1bded depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 440555 - timestamp: 1660348056328 + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33355 + timestamp: 1733324193303 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: h9a6d368_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda + sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd + md5: 9e4519aef300966683764ccbbaa89da4 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33343 + timestamp: 1733321610703 +- kind: conda + name: xz-gpl-tools + version: 5.6.3 + build: hbcc6ac9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda + sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db + md5: e4f1e59ca2971e8d0fdde0928c3f7b7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33299 + timestamp: 1733321343126 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h39f12f2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda + sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 + md5: 10855380caa384c8388b93ef29c7bd04 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_0 + license: 0BSD AND LGPL-2.1-or-later + size: 81129 + timestamp: 1733321582233 +- kind: conda + name: xz-tools + version: 5.6.3 + build: h86ecc28_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda + sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 + md5: 0136c7aa78b4d887c9fb6dbf39749778 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_0 + license: 0BSD AND LGPL-2.1-or-later + size: 95353 + timestamp: 1733324033407 +- kind: conda + name: xz-tools + version: 5.6.3 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda + sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 + md5: 40270c1e058fd1d31caee8bf2c68fc3a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_0 + license: 0BSD AND LGPL-2.1-or-later + size: 89832 + timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 From 6c4ff36a91458a8a3d061c8d8ff3a3bb10fc396c Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Wed, 4 Dec 2024 10:34:29 -0800 Subject: [PATCH 082/119] [Docs] Several small tweaks to parameter docs. - Document **_ syntax for unbinding keyword parameters. - Document that infer-only parameters can be bound by keyword. (Maybe they should be infer-mostly parameters?). - Document automatically parameterized parameter lists. MODULAR_ORIG_COMMIT_REV_ID: 23ab820cebbc7895413a4962acb661849866a6c6 --- docs/manual/parameters/index.mdx | 139 +++++++++++++++++++++++-------- 1 file changed, 102 insertions(+), 37 deletions(-) diff --git a/docs/manual/parameters/index.mdx b/docs/manual/parameters/index.mdx index be9066c974..9b3ba3250f 100644 --- a/docs/manual/parameters/index.mdx +++ b/docs/manual/parameters/index.mdx @@ -3,11 +3,24 @@ title: "Parameterization: compile-time metaprogramming" description: An introduction to parameters and compile-time metaprogramming. --- -Many languages have facilities for *metaprogramming*: that is, for writing code that generates or modifies code. Python has facilities for dynamic metaprogramming: features like decorators, metaclasses, and many more. These features make Python very flexible and productive, but since they're dynamic, they come with runtime overhead. Other languages have static or compile-time metaprogramming features, like C preprocessor macros and C++ templates. These can be limiting and hard to use. - -To support Modular's work in AI, Mojo aims to provide powerful, easy-to-use metaprogramming with zero runtime cost. This compile-time metaprogramming uses the same language as runtime programs, so you don't have to learn a new language—just a few new features. - -The main new feature is *parameters*. You can think of a parameter as a compile-time variable that becomes a runtime constant. This usage of "parameter" is probably different from what you're used to from other languages, where "parameter" and "argument" are often used interchangeably. In Mojo, "parameter" and "parameter expression" refer to compile-time values, and "argument" and "expression" refer to runtime values. +Many languages have facilities for *metaprogramming*: that is, for writing code that +generates or modifies code. Python has facilities for dynamic metaprogramming: features +like decorators, metaclasses, and many more. These features make Python very flexible +and productive, but since they're dynamic, they come with runtime overhead. Other +languages have static or compile-time metaprogramming features, like C preprocessor +macros and C++ templates. These can be limiting and hard to use. + +To support Modular's work in AI, Mojo aims to provide powerful, easy-to-use +metaprogramming with zero runtime cost. This compile-time metaprogramming uses the same +language as runtime programs, so you don't have to learn a new language—just a few new +features. + +The main new feature is *parameters*. You can think of a parameter as a +compile-time variable that becomes a runtime constant. This usage of "parameter" +is probably different from what you're used to from other languages, where +"parameter" and "argument" are often used interchangeably. In Mojo, "parameter" +and "parameter expression" refer to compile-time values, and "argument" and +"expression" refer to runtime values. In Mojo, you can add parameters to a struct or function. You can also define named parameter expressions—aliases—that you can use as runtime constants. @@ -104,9 +117,9 @@ repeat[count=2](42) This updated function takes any `Stringable` type, so you can pass it an `Int`, `String`, or `Bool` value. -You can't pass the `count` as a positional keyword without also specifying `MsgType`. -You can put `//` after `MsgType` to specify that it's always inferred by the argument. Now -you can pass the following parameter `count` positionally: +You can't pass the `count` as a positional keyword without also specifying +`MsgType`. You can put `//` after `MsgType` to specify that it's always inferred +by the argument. Now you can pass the following parameter `count` positionally: ```mojo fn repeat[MsgType: Stringable, //, count: Int](msg: MsgType): @@ -173,8 +186,8 @@ use a parameterized struct. In this case, when you create an instance of passing in this case is a *type*. That's OK: a Mojo type is a valid compile-time value.) -You'll see that `ElementType` is used throughout the struct where you'd usually see a -type name. For example, as the formal type for the `elements` in the +You'll see that `ElementType` is used throughout the struct where you'd usually +see a type name. For example, as the formal type for the `elements` in the constructor, and the return type of the `__getitem__()` method. Here's an example of using `GenericArray`: @@ -216,10 +229,10 @@ The method returns an instance of `GenericArray[Float64]`. When creating a generic struct, you might want to define some methods that require extra features. For example, consider a collection like `GenericArray` -that holds instances of `CollectionElement`. The `CollectionElement` trait -only requires that the stored data type be copyable and movable. This -imposes a lot of limitations: you can't implement a `sort()` method because -you can't guarantee that the stored type supports the comparison operators; you can't +that holds instances of `CollectionElement`. The `CollectionElement` trait only +requires that the stored data type be copyable and movable. This imposes a lot +of limitations: you can't implement a `sort()` method because you can't +guarantee that the stored type supports the comparison operators; you can't write a useful `__str__()` or `__repr__()` dunder method because you can't guarantee that the stored type supports conversion to a string. @@ -293,9 +306,9 @@ floating point numbers, so it's not practical to define all of the possible SIMD variations. Mojo's [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type (defined as a struct) -exposes the common SIMD operations through its methods, and makes the SIMD data type -and size values parametric. This allows you to directly map your data to the -SIMD vectors on any hardware. +exposes the common SIMD operations through its methods, and makes the SIMD data +type and size values parametric. This allows you to directly map your data to +the SIMD vectors on any hardware. Here's a cut-down (non-functional) version of Mojo's `SIMD` type definition: @@ -590,8 +603,8 @@ fn use_defaults() raises: ``` Recall that when a parametric function is called, Mojo can infer the parameter values. -That is, it can use the parameter values attached to an argument value (see the `sqrt[]()` -example above). If the parametric function also has a default value defined, +That is, it can use the parameter values attached to an argument value (see the +`sqrt[]()` example above). If the parametric function also has a default value defined, then the inferred parameter type takes precedence. For example, in the following code, we update the parametric `speak[]()` function @@ -661,9 +674,9 @@ you can't leave it out of the parameter list and let Mojo infer it from `value`: dependent_type[Float64(2.2)]() # Error! ``` -Infer-only parameters are a special class of parameters that are **always** -inferred from context. Infer-only parameters are placed at the **beginning** of -the parameter list, set off from other parameters by the `//` sigil: +Infer-only parameters are a special class of parameters that are **always** either +inferred from context or specified by keyword. Infer-only parameters are placed at the +**beginning** of the parameter list, set off from other parameters by the `//` sigil: ```mojo fn example[type: CollectionElement, //, list: List[type]]() @@ -688,8 +701,25 @@ Because infer-only parameters are declared at the beginning of the parameter list, other parameters can depend on them, and the compiler will always attempt to infer the infer-only values from bound parameters or arguments. -If the compiler can't infer the value of an infer-only parameter, compilation -fails. +There are sometimes cases where it's useful to specify an infer-only parameter by +keyword. For example, the [`StringSlice`](/mojo/stdlib/utils/string_slice/StringSlice) +type is parametric on [origin](/mojo/manual/values/lifetimes): + +```mojo +struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]: ... +``` + +Here, the `StringSlice` `is_mutable` parameter is infer-only. The value is usually +inferred when you create an instance of `StringSlice`. Binding the `is_mutable` +parameter by keyword lets you define a new type that's constrained to an +immutable origin: + +```mojo +alias ImmutableStringSlice = StringSlice[is_mutable=False] +``` + +If the compiler can't infer the value of an infer-only parameter, and it's not +specified by keyword, compilation fails. ## Variadic parameters @@ -757,7 +787,8 @@ print('result type:', x.element_type, 'length:', len(x)) result type: float32 length: 4 ``` -Note that the resulting length is the sum of the input vector lengths, and this is expressed with a simple `+` operation. +Note that the resulting length is the sum of the input vector lengths, and this is +expressed with a simple `+` operation. ### Powerful compile-time programming @@ -797,11 +828,11 @@ print("Elements sum:", reduce_add(x)) Elements sum: 10 ``` -This makes use of the [`@parameter`](/mojo/manual/decorators/parameter) decorator to create a parametric if condition, which is an `if` statement that -runs at compile-time. It requires that its condition be a valid parameter -expression, and ensures that only the live branch of the `if` statement is -compiled into the program. (This is similar to use of the `@parameter` decorator -with a `for` loop shown earlier.) +This makes use of the [`@parameter`](/mojo/manual/decorators/parameter) decorator to +create a parametric if condition, which is an `if` statement that runs at compile-time. +It requires that its condition be a valid parameter expression, and ensures that only +the live branch of the `if` statement is compiled into the program. (This is similar to +use of the `@parameter` decorator with a `for` loop shown earlier.) ## Mojo types are just parameter expressions @@ -960,9 +991,27 @@ MyType["Hello", *_] MyType["Hello", _, _, _] ``` -When a parameter is explicitly unbound with the `_` or `*_` expression, you -**must** specify a value for that parameter to use the type. Any default value -from the original type declaration is ignored. +The `*_` expression specifically matches any parameters that can be specified by +position (positional-only or positional-or-keyword). To unbind keyword-only parameters, +use the double-star-underscore expression, `**_`, which matches any parameters that can +be specified by keyword (positional-or-keyword or keyword-only). + +```mojo +@value +struct KeyWordStruct[pos_or_kw: Int, *, kw_only: Int = 10]: + pass + +# Unbind both pos_or_kw and kw_only parameters +fn use_kw_struct(k: KeyWordStruct[**_]): + pass + +def main(): + use_kw_struct(KeyWordStruct[10, kw_only=11]()) +``` + +When a parameter is explicitly unbound with the `_`, `*_`, or `**_` expressions, you +**must** specify a value for that parameter to use the type. Any default value from the +original type declaration is ignored. Partially-bound and unbound parametric types can be used in some contexts where the missing (unbound) parameters will be supplied later—such as in @@ -1025,11 +1074,11 @@ parameterized. The `vec` argument takes an argument of type `SIMD[*_]`. This is an [unbound parameterized type](#fully-bound-partially-bound-and-unbound-types)—that is, it doesn't specify any parameter values for the type. Mojo treats the unbound parameters -on `vec` as implicit parameters on the function. This is roughly equivalent to -the following code, which includes *explicit* input parameters: +on `vec` as infer-only parameters on the function. This is roughly equivalent to +the following codes: ```mojo -fn print_params[t: DType, s: Int](vec: SIMD[t, s]): +fn print_params[t: DType, s: Int, //](vec: SIMD[t, s]): print(vec.type) print(vec.size) ``` @@ -1084,7 +1133,23 @@ print(c) [1, 0, 2, 0, 3, 0, 4, 0] ``` -As shown in the example, you can use the magic `__type_of(x)` call if you just want to match the type of an argument. In this case, it's more convenient and compact that writing the equivalent `SIMD[v1.type, v1.size]`. +As shown in the example, you can use the magic `__type_of(x)` call if you just want to +match the type of an argument. In this case, it's more convenient and compact that +writing the equivalent `SIMD[v1.type, v1.size]`. + +### Automatic parameterization of parameters + +You can also take advantage of automatic parameterization in a function's +parameter list. For example: + +```mojo +fn foo[value: SIMD](): + pass + +# Equivalent to: +fn foo[type: DType, size: Int, //, value: SIMD[type, size]](): + pass +``` ### Automatic parameterization with partially-bound types From bac9f13523e8b8d6eff800f18a9debe5425664a3 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Wed, 4 Dec 2024 13:05:03 -0600 Subject: [PATCH 083/119] [stdlib] polish: Expose `_lit_mut_cast` as `Origin.cast_from` alias This obviates the need to import the obscure `_lit_mut_cast` parametric alias hack, and instead more closely associates this operation as a "method" on Origin. MODULAR_ORIG_COMMIT_REV_ID: 6d07f58832f984f3ef68bc1f0e19f6877ca3e91a --- stdlib/src/builtin/builtin_list.mojo | 16 +--------------- stdlib/src/builtin/type_aliases.mojo | 26 ++++++++++++++++++++++++++ stdlib/src/memory/arc.mojo | 3 +-- stdlib/src/utils/span.mojo | 5 ++--- 4 files changed, 30 insertions(+), 20 deletions(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index 9e6b5972ea..d736c55aa6 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -283,20 +283,6 @@ struct _lit_origin_union[ ] -struct _lit_mut_cast[ - is_mutable: Bool, //, - operand: Origin[is_mutable], - result_mutable: Bool, -]: - alias result = __mlir_attr[ - `#lit.origin.mutcast<`, - operand._mlir_origin, - `> : !lit.origin<`, - +result_mutable.value, - `>`, - ] - - struct VariadicListMem[ elt_is_mutable: Bool, //, element_type: AnyType, @@ -443,7 +429,7 @@ struct VariadicListMem[ # cast mutability of self to match the mutability of the element, # since that is what we want to use in the ultimate reference and # the union overall doesn't matter. - _lit_mut_cast[__origin_of(self), elt_is_mutable].result, + Origin[elt_is_mutable].cast_from[__origin_of(self)].result, ].result ] element_type: """Gets a single element on the variadic list. diff --git a/stdlib/src/builtin/type_aliases.mojo b/stdlib/src/builtin/type_aliases.mojo index 4139618270..b3358188b5 100644 --- a/stdlib/src/builtin/type_aliases.mojo +++ b/stdlib/src/builtin/type_aliases.mojo @@ -57,6 +57,18 @@ struct Origin[is_mutable: Bool]: `>`, ] + alias cast_from = _lit_mut_cast[result_mutable=is_mutable] + """Cast an existing Origin to be of the specified mutability. + + This is a low-level way to coerce Origin mutability. This should be used + rarely, typically when building low-level fundamental abstractions. Strongly + consider alternatives before reaching for this "escape hatch". + + Safety: + This is an UNSAFE operation if used to cast an immutable origin to + a mutable origin. + """ + # ===-------------------------------------------------------------------===# # Fields # ===-------------------------------------------------------------------===# @@ -79,3 +91,17 @@ struct Origin[is_mutable: Bool]: Args: mlir_origin: The raw MLIR origin value.""" self._mlir_origin = mlir_origin + + +struct _lit_mut_cast[ + is_mutable: Bool, //, + result_mutable: Bool, + operand: Origin[is_mutable], +]: + alias result = __mlir_attr[ + `#lit.origin.mutcast<`, + operand._mlir_origin, + `> : !lit.origin<`, + result_mutable.value, + `>`, + ] diff --git a/stdlib/src/memory/arc.mojo b/stdlib/src/memory/arc.mojo index d7b236af72..feb4c42711 100644 --- a/stdlib/src/memory/arc.mojo +++ b/stdlib/src/memory/arc.mojo @@ -46,7 +46,6 @@ print(ArcPointer(String("ok"))[]) from os.atomic import Atomic -from builtin.builtin_list import _lit_mut_cast from memory import UnsafePointer, stack_allocation @@ -146,7 +145,7 @@ struct ArcPointer[T: Movable]( ]( ref [self_life]self, ) -> ref [ - _lit_mut_cast[self_life, result_mutable=True].result + MutableOrigin.cast_from[self_life].result ] T: """Returns a mutable reference to the managed value. diff --git a/stdlib/src/utils/span.mojo b/stdlib/src/utils/span.mojo index 38bb86cbe5..282a3bc229 100644 --- a/stdlib/src/utils/span.mojo +++ b/stdlib/src/utils/span.mojo @@ -22,7 +22,6 @@ from utils import Span from collections import InlineArray -from builtin.builtin_list import _lit_mut_cast from memory import Pointer, UnsafePointer @@ -360,13 +359,13 @@ struct Span[ fn get_immutable( self, - ) -> Span[T, _lit_mut_cast[origin, False].result]: + ) -> Span[T, ImmutableOrigin.cast_from[origin].result]: """ Return an immutable version of this span. Returns: A span covering the same elements, but without mutability. """ - return Span[T, _lit_mut_cast[origin, False].result]( + return Span[T, ImmutableOrigin.cast_from[origin].result]( ptr=self._data, length=self._len ) From dfc8f49c472d79b6141e9baf0431953ede97a05e Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Wed, 4 Dec 2024 11:19:04 -0800 Subject: [PATCH 084/119] [Docs] Add Intro to pointers doc. Also includes some improvements to the existing API docs. MODULAR_ORIG_COMMIT_REV_ID: de875f1b71f56ec072111cde4936a45b0ed2968f --- docs/changelog-released.md | 6 +- .../images/owned-pointer-diagram-dark.png | Bin 0 -> 26898 bytes docs/manual/images/owned-pointer-diagram.png | Bin 0 -> 26431 bytes docs/manual/index.md | 3 +- docs/manual/pointers/index.mdx | 272 ++++++++++++++++++ .../unsafe-pointers.mdx} | 86 ++---- examples/notebooks/environment.yml | 14 + stdlib/src/memory/arc.mojo | 78 ++--- stdlib/src/memory/owned_pointer.mojo | 3 + stdlib/src/memory/pointer.mojo | 3 + stdlib/src/memory/unsafe_pointer.mojo | 18 +- 11 files changed, 383 insertions(+), 100 deletions(-) create mode 100644 docs/manual/images/owned-pointer-diagram-dark.png create mode 100644 docs/manual/images/owned-pointer-diagram.png create mode 100644 docs/manual/pointers/index.mdx rename docs/manual/{pointers.mdx => pointers/unsafe-pointers.mdx} (85%) create mode 100644 examples/notebooks/environment.yml diff --git a/docs/changelog-released.md b/docs/changelog-released.md index 5b3c84bdcf..79b64934eb 100644 --- a/docs/changelog-released.md +++ b/docs/changelog-released.md @@ -60,7 +60,7 @@ detailed information in the following sections: [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) instead. Functions that previously took a `DTypePointer` now take an equivalent `UnsafePointer`. For more information on using pointers, see [Unsafe - pointers](/mojo/manual/pointers) in the Mojo Manual. + pointers](/mojo/manual/pointers/unsafe-pointers) in the Mojo Manual. - There are many new standard library APIs, with new features for strings, collections, and interacting with the filesystem and environment. Changes are @@ -518,7 +518,7 @@ detailed information in the following sections: - `DTypePointer`, `LegacyPointer`, and `Pointer` have been removed. Use [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) instead. For more information on using pointers, see [Unsafe - pointers](/mojo/manual/pointers) in the Mojo Manual. + pointers](/mojo/manual/pointers/unsafe-pointers) in the Mojo Manual. Functions that previously took a `DTypePointer` now take an equivalent `UnsafePointer`. A quick rule for conversion from `DTypePointer` to @@ -1013,7 +1013,7 @@ Big themes for this release: - New Mojo Manual pages on [Control flow](/mojo/manual/control-flow), [Testing](/mojo/tools/testing) and using - [unsafe pointers](/mojo/manual/pointers). + [unsafe pointers](/mojo/manual/pointers/unsafe-pointers). ### Language changes diff --git a/docs/manual/images/owned-pointer-diagram-dark.png b/docs/manual/images/owned-pointer-diagram-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..db8049790a34506ee083088c53719e484b639666 GIT binary patch literal 26898 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 Wr`&WenkzuSpUW2wv`RH?BmNgQU0g^2 literal 0 HcmV?d00001 diff --git a/docs/manual/images/owned-pointer-diagram.png b/docs/manual/images/owned-pointer-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..ef82f349bf314b1c630b2337a85d37ed84db301e GIT binary patch literal 26431 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

o>o;{?T)kl46hzWf+B2Va#1#Xj1zQKNHH3^ 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 literal 0 HcmV?d00001 diff --git a/docs/manual/index.md b/docs/manual/index.md index ba52bcd6c4..7d152a1b2b 100644 --- a/docs/manual/index.md +++ b/docs/manual/index.md @@ -56,7 +56,8 @@ feedback](https://www.modular.com/community). - **Pointers** - - [Unsafe pointers](/mojo/manual/pointers) + - [Intro to pointers](/mojo/manual/pointers/) + - [Unsafe pointers](/mojo/manual/pointers/unsafe-pointers) - **Python** diff --git a/docs/manual/pointers/index.mdx b/docs/manual/pointers/index.mdx new file mode 100644 index 0000000000..075fa33ea5 --- /dev/null +++ b/docs/manual/pointers/index.mdx @@ -0,0 +1,272 @@ +--- +title: Intro to pointers +sidebar_position: 1 +description: An overview of accessing memory using Mojo's pointer types. +--- + +A pointer is an indirect reference to one or more values stored in memory. The +pointer is a value that holds an address to memory, and provides APIs to store +and retrieve values to that memory. The value pointed to by a pointer is also +known as a _pointee_. + +The Mojo standard library includes several types of pointers, which provide +different sets of features. All of these pointer types are _generic_—they can +point to any type of value, and the value type is specified as a parameter. For +example, the following code creates an `OwnedPointer` that points to an `Int` +value: + +```mojo +var ptr: OwnedPointer[Int] +ptr = OwnedPointer(100) +``` + +The `ptr` variable has a value of type `OwnedPointer[Int]`. The pointer *points +to* a value of type `Int`, as shown in Figure 1. + + +

+ +![](../images/owned-pointer-diagram.png#light) +![](../images/owned-pointer-diagram-dark.png#dark) + +
Figure 1. Pointer and pointee
+
+ +Accessing the memory—to retrieve or update a value—is called +_dereferencing_ the pointer. You can dereference a pointer by following the +variable name with an empty pair of square brackets: + +```mojo +# Update an initialized value +ptr[] += 10 +# Access an initialized value +print(ptr[]) +``` + +## Pointer terminology + +Before we jump into the pointer types, here are a few terms you’ll run across. Some +of them may already be familiar to you. + +- **Safe pointers**: are designed to prevent memory errors. Unless you use one + of the APIs that are specially designated as unsafe, you can use these + pointers without worrying about memory issues like double-free or + use-after-free. + +- **Nullable pointers**: can point to an invalid memory location (typically 0, +or a “null pointer”). Safe pointers aren’t nullable. + +- **Smart pointers**: own their pointees, which means that the value they point + to may be deallocated when the pointer itself is destroyed. Non-owning + pointers may point to values owned elsewhere, or may require some manual + management of the value lifecycle. + +- **Memory allocation**: some pointer types can allocate memory to store their + pointees, while other pointers can only point to pre-existing values. Memory + allocation can either be implicit (that is, performed automatically when + initializing a pointer with a value) or explicit. + +- **Uninitialized memory**: refers to memory locations that haven’t been + initialized with a value, which may therefore contain random data. + Newly-allocated memory is uninitialized. The safe pointer types don’t allow + users to access memory that’s uninitialized. Unsafe pointers can allocate a + block of uninitialized memory locations and then initialize them one at a time. + Being able to access uninitialized memory is unsafe by definition. + +- **Copyable types**: can be copied implicitly (for example, by assigning a + value to a variable). Also called *implicitly copyable types*. + + ```mojo + copied_ptr = ptr + ``` + + *Explicitly copyable* types require the user to request a copy, using a + constructor with a keyword argument: + + ```mojo + copied_owned_ptr = OwnedPointer(other=owned_ptr) + ``` + +## Pointer types + +The Mojo standard library includes several pointer types with different +characteristics: + +- [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) is a safe pointer that points + to a single value that it doesn’t own. + +- [`OwnedPointer`](/mojo/stdlib/memory/owned_pointer/OwnedPointer) is a smart + pointer that points to a single value, and maintains exclusive ownership of + that value. + +- [`ArcPointer`](/mojo/stdlib/memory/arc/ArcPointer) is a reference-counted + smart pointer that points to an owned value with ownership potentially shared + with other instances of `ArcPointer`. + +- [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) points to + one or more consecutive memory locations, and can refer to uninitialized + memory. + +Table 1 summarizes the different types of pointers: + +
+ +| | `Pointer` | `OwnedPointer` | `ArcPointer` | `UnsafePointer` | +| --- | --- | --- | --- | --- | +| Safe | Yes | Yes | Yes | No | +| Allocates memory | No | Implicitly 1 | Implicitly 1 | Explicitly | +| Owns pointee(s) | No | Yes | Yes | No 2 | +| Copyable | Yes | No 3 | Yes | Yes | +| Nullable | No | No | No | Yes | +| Can point to uninitialized memory | No | No | No | Yes | +| Can point to multiple values (array-like access) | No | No | No | Yes | + +
Table 1. Pointer types
+
+ +1 `OwnedPointer` and `ArcPointer` implicitly allocate memory when you +initialize the pointer with a value. + +2 `UnsafePointer` provides unsafe methods for initializing and +destroying instances of the stored type. The user is responsible for managing +the lifecycle of stored values. + +3 `OwnedPointer` is explicitly copyable, but explicitly copying an +`OwnedPointer` copies the *stored value* into a new `OwnedPointer`. + +The following sections provide more details on each pointer type. + +## `Pointer` + +The [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) type is a safe pointer that +points to a initialized value that it doesn’t own. Some example use cases for a +`Pointer` include: + +- Storing a reference to a related type. For example, a list’s iterator object +might hold a `Pointer` back to the original list. + +- Passing the memory location for a single value to external code via +`external_call()`. + +- Where you need an API to return a long-lived reference to a value. (Currently +the iterators for standard library collection types like `List` return +pointers.) + +You can construct a `Pointer` using the `address_of()` static method: + +```python +ptr = Pointer.address_of(some_value) +``` + +You can also create a `Pointer` by copying an existing `Pointer`. + +A `Pointer` carries an [`origin`](/mojo/manual/values/lifetimes) for the stored +value, so Mojo can track the lifetime of the referenced value. + +## `OwnedPointer` + +The [`OwnedPointer`](/mojo/stdlib/memory/owned_pointer/OwnedPointer) type is a +smart pointer designed for cases where there is single ownership of the +underlying data. An `OwnedPointer` points to a single item, which is passed in +when you initialize the `OwnedPointer`. The `OwnedPointer` allocates memory and +moves or copies the value into the reserved memory. + +```python +o_ptr = OwnedPointer(some_big_struct) +``` + +An owned pointer can hold almost any type of item, but the stored item must be +either `Movable`, `Copyable`, or `ExplicitlyCopyable`. + +Since an `OwnedPointer` is designed to enforce single ownership, the pointer +itself can be moved, but not copied. + +Note: Currently, you can’t create an `Optional[OwnedPointer[T]]` because the +`Optional` type only works with types that are both movable and copyable. This +restricts some use cases that would otherwise be a natural fit +for`OwnedPointer`, including self-referential data structures like linked lists +and trees. (Until this use case is supported for `OwnedPointer`, it’s possible +to use`ArcPointer` where you need a smart pointer that can be `Optional`.) + +## `ArcPointer` + +An [`ArcPointer`](/mojo/stdlib/memory/arc/ArcPointer) is a reference-counted +smart pointer, ideal for shared resources where the last owner for a given value +may not be clear. Like an `OwnedPointer`, it points to a single value, and it +allocates memory when you initialize the `ArcPointer` with a value: + +```python +attributesDict = Dict[String, String]() +attributes = ArcPointer(attributesDict) +``` + +Unlike an `OwnedPointer`, an `ArcPointer` can be freely copied. All instances +of a given `ArcPointer` share a reference count, which is incremented whenever +the `ArcPointer` is copied and decremented whenever an instance is destroyed. +When the reference count reaches zero, the stored value is destroyed and the +allocated memory is freed. + +You can use `ArcPointer` to implement safe reference-semantic types. For +example, in the following code snippet `SharedDict` uses an `ArcPointer` to +store a dictionary. Copying an instance of `SharedDict` only copies the +`ArcPointer`, not the dictionary, which is shared between all of the copies. + +```python +from memory import ArcPointer +from collections import Dict + +struct SharedDict: + var attributes: ArcPointer[Dict[String, String]] + + fn __init__(out self): + attributesDict = Dict[String, String]() + self.attributes = ArcPointer(attributesDict) + + fn __copyinit__(out self, other: Self): + self.attributes = other.attributes + + def __setitem__(inout self, key: String, value: String): + self.attributes[][key] = value + + def __getitem__(self, key: String) -> String: + return self.attributes[].get(key, default="") + +def main(): + thing1 = SharedDict() + thing2 = thing1 + thing1["Flip"] = "Flop" + print(thing2["Flip"]) +``` + +Note: The reference count is stored using an +[`Atomic`]([/mojo/stdlib/os/atomic/Atomic](https://docs.modular-staging.com/mojo/stdlib/os/atomic/Atomic)) +value to ensure that updates to the reference count are thread-safe. However, +Mojo doesn’t currently enforce exclusive access across thread boundaries, so +it’s possible to form race conditions. + +## UnsafePointer + +[`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) is a +low-level pointer that can access a block of contiguous memory locations, which +might be uninitialized. It’s analogous to a raw pointer in the C and C++ +programming languages. `UnsafePointer` provides unsafe methods for initializing +and destroying stored values, as well as for accessing the values once they’re +initialized. + +As the name suggests, `UnsafePointer` doesn’t provide any memory safety +guarantees, so you should reserve it for cases when none of the other pointer +types will do the job. Here are some use cases where you might want to use an +`UnsafePointer`: + +- Building a high-performance array-like structure, such as `List` or `Tensor`. + A single `UnsafePointer` can access many values, and gives you a lot of + control over how you allocate, use, and deallocate memory. Being able to + access uninitialized memory means that you can preallocate a block of memory, + and initialize values incrementally as they are added to the collection. + +- Interacting with external libraries including C++ and Python. You can + use`UnsafePointer` to pass a buffer full of data to or from an external + library. + +For more information, see [Unsafe +pointers](/mojo/manual/pointers/unsafe-pointers). diff --git a/docs/manual/pointers.mdx b/docs/manual/pointers/unsafe-pointers.mdx similarity index 85% rename from docs/manual/pointers.mdx rename to docs/manual/pointers/unsafe-pointers.mdx index 57482a3781..a2a5f04acd 100644 --- a/docs/manual/pointers.mdx +++ b/docs/manual/pointers/unsafe-pointers.mdx @@ -3,26 +3,24 @@ title: Unsafe pointers description: Using unsafe pointers to access dynamically-allocated memory. --- -The [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) type -creates an indirect reference to a location in memory. +The [`UnsafePointer`](/mojo/stdlib/memory/unsafe_pointer/UnsafePointer) type is +one of several pointer types available in the standard library to indirectly +reference locations in memory. + You can use an `UnsafePointer` to dynamically allocate and free memory, or to point to memory allocated by some other piece of code. You can use these pointers to write code that interacts with low-level interfaces, to interface -with other programming languages, or to build certain kinds of data structures. +with other programming languages, or to build array-like data structures. But as the name suggests, they're inherently *unsafe*. For example, when using unsafe pointers, you're responsible for ensuring that memory gets allocated and freed correctly. -:::note - -In addition to unsafe pointers, Mojo supports a safe -[`Pointer`](/mojo/stdlib/memory/pointer/Pointer) type. See -[`UnsafePointer` and `Pointer`](#unsafepointer-and-pointer) for a brief -comparison of the types. +In general, you should prefer safe pointer types when possible, reserving +`UnsafePointer` for those use cases where no other pointer type works. +For a comparison of standard library pointer types, see [Intro to +pointers](/mojo/manual/pointers/). -::: - -## What is a pointer? +## Unsafe pointer basics An `UnsafePointer` is a type that holds an address to memory. You can store and retrieve values in that memory. The `UnsafePointer` type is *generic*—it can @@ -40,8 +38,8 @@ ptr.init_pointee_copy(100)
-![](./images/pointer-diagram.png#light) -![](./images/pointer-diagram-dark.png#dark) +![](../images/pointer-diagram.png#light) +![](../images/pointer-diagram-dark.png#dark)
Figure 1. Pointer and pointee
@@ -69,20 +67,20 @@ structures. For details, see At any given time, a pointer can be in one of several states: -* Uninitialized. Just like any variable, a variable of type `UnsafePointer` can +- Uninitialized. Just like any variable, a variable of type `UnsafePointer` can be declared but uninitialized. ```mojo var ptr: UnsafePointer[Int] ``` -* Null. A null pointer has an address of 0, indicating an invalid pointer. +- Null. A null pointer has an address of 0, indicating an invalid pointer. ```mojo ptr = UnsafePointer[Int]() ``` -* Pointing to allocated, uninitialized memory. The `alloc()` static method +- Pointing to allocated, uninitialized memory. The `alloc()` static method returns a pointer to a newly-allocated block of memory with space for the specified number of elements of the pointee's type. @@ -93,7 +91,7 @@ At any given time, a pointer can be in one of several states: Trying to dereference a pointer to uninitialized memory results in undefined behavior. -* Pointing to initialized memory. You can initialize an allocated, uninitialized +- Pointing to initialized memory. You can initialize an allocated, uninitialized pointer by moving or copying an existing value into the memory. Or you can use the `address_of()` static method to get a pointer to an existing value. @@ -113,7 +111,7 @@ At any given time, a pointer can be in one of several states: ptr[] = newValue ``` -* Dangling. When you free the pointer's allocated memory, you're left with a +- Dangling. When you free the pointer's allocated memory, you're left with a *dangling pointer*. The address still points to its previous location, but the memory is no longer allocated to this pointer. Trying to dereference the pointer, or calling any method that would access the memory location results @@ -127,8 +125,8 @@ The following diagram shows the lifecycle of an `UnsafePointer`:
-![](./images/pointer-lifecycle.png#light) -![](./images/pointer-lifecycle-dark.png#dark) +![](../images/pointer-lifecycle.png#light) +![](../images/pointer-lifecycle-dark.png#dark)
Figure 2. Lifecycle of an UnsafePointer
@@ -293,8 +291,8 @@ ptr += 1
-![](./images/pointer-offset.png#light) -![](./images/pointer-offset-dark.png#dark) +![](../images/pointer-offset.png#light) +![](../images/pointer-offset-dark.png#dark)
Figure 3. Pointer arithmetic
@@ -353,7 +351,7 @@ from memory import UnsafePointer def share_array(): np = Python.import_module("numpy") arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9]) - ptr = arr.__array_interface__["data"][0].unsafe_get_as_pointer[DType.int64]() + ptr = arr.ctypes.data.unsafe_get_as_pointer[DType.int64]() for i in range(9): print(ptr[i], end=", ") @@ -364,11 +362,10 @@ share_array() 1, 2, 3, 4, 5, 6, 7, 8, 9, ``` -NumPy arrays implement the -[array interface protocol](https://numpy.org/doc/stable/reference/arrays.interface.html), -which defines the `__array_interface__` object used in the example, where -`__array_interface__["data"][0]` is a Python integer holding the address of the -underlying data. The `unsafe_get_as_pointer()` method constructs an +This example uses the NumPy +[`ndarray.ctype`](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.ctypes.html#numpy.ndarray.ctypes) +attribute to access the raw pointer to the underlying storage +(`ndarray.ctype.data`). The `unsafe_get_as_pointer()` method constructs an `UnsafePointer` to this address. ### Working with C/C++ pointers @@ -459,8 +456,8 @@ you want to access just the red values, you can use a strided load or store.
-![](./images/strided-load-storage.png#light) -![](./images/strided-load-storage-dark.png#dark) +![](../images/strided-load-storage.png#light) +![](../images/strided-load-storage-dark.png#dark)
Figure 4. Strided load
@@ -496,35 +493,14 @@ from (pointer address) + offset[n]. Unsafe pointers are unsafe for several reasons: -* Memory management is up to the user. You need to manually allocate +- Memory management is up to the user. You need to manually allocate and free memory, and be aware of when other APIs are allocating or freeing memory for you. -* `UnsafePointer` values are *nullable*—that is, the pointer +- `UnsafePointer` values are *nullable*—that is, the pointer is not guaranteed to point to anything. And even when a pointer points to allocated memory, that memory may not be *initialized*. -* Mojo doesn't track lifetimes for the data pointed to by an `UnsafePointer`. +- Mojo doesn't track lifetimes for the data pointed to by an `UnsafePointer`. When you use an `UnsafePointer`, managing memory and knowing when to destroy objects is your responsibility. - -## `UnsafePointer` and `Pointer` - -The [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) type is essentially a -safe pointer type. Like a pointer, you can derference a `Pointer` using the -dereference operator, `[]`. However, the `Pointer` type has several -differences from `UnsafePointer` which make it safer: - -* A `Pointer` is *non-nullable*: it always points to something. -* You can't allocate or free memory using a `Pointer`—only point to an - existing value. -* A `Pointer` only refers to a single value. You can't do pointer arithmetic - with a `Pointer`. -* A `Pointer` has an associated *origin*, which connects it back to an - original, owned value. The origin ensures that the value won't be destroyed - while the pointer exists. - -The `Pointer` type shouldn't be confused with the immutable and mutable -references used with the `read` and `mut` argument conventions. Those -references do not require explicit dereferencing, unlike a `Pointer` or -`UnsafePointer`. diff --git a/examples/notebooks/environment.yml b/examples/notebooks/environment.yml new file mode 100644 index 0000000000..45a48799ef --- /dev/null +++ b/examples/notebooks/environment.yml @@ -0,0 +1,14 @@ +name: mojo-notebooks +channels: + - pytorch + - https://conda.modular.com/max/ + - conda-forge + - defaults +dependencies: + - python>=3.11,<3.12 + - max>=24.4.0dev6 + - max = "*" +pip = ">=24.0,<25" +jupyterlab = ">=4.2.5,<5" +matplotlib = ">=3.9.2,<4" +numpy = ">=1.26.4,<2" diff --git a/stdlib/src/memory/arc.mojo b/stdlib/src/memory/arc.mojo index feb4c42711..8680d06560 100644 --- a/stdlib/src/memory/arc.mojo +++ b/stdlib/src/memory/arc.mojo @@ -10,38 +10,13 @@ # See the License for the specific language governing permissions and # limitations under the License. # ===----------------------------------------------------------------------=== # -"""Pointer-counted smart pointers. +"""Reference-counted smart pointers. -Example usage: +You can import these APIs from the `memory` package. For example: ```mojo from memory import ArcPointer -var p = ArcPointer(4) -var p2 = p -p2[]=3 -print(3 == p[]) ``` - -Subscripting(`[]`) is done by `Pointer`, -in order to ensure that the underlying `ArcPointer` outlive the operation. - -It is highly DISCOURAGED to manipulate an `ArcPointer` through `UnsafePointer`. -Mojo's ASAP deletion policy ensure values are destroyed at last use. -Do not unsafely dereference the `ArcPointer` inner `UnsafePointer` field. -See [Lifecycle](https://docs.modular.com/mojo/manual/lifecycle/). - -```mojo -# Illustration of what NOT to do, in order to understand: -print(ArcPointer(String("ok"))._inner[].payload) -#........................^ASAP ^already freed -``` - -Always use `Pointer` subscripting (`[]`): - -```mojo -print(ArcPointer(String("ok"))[]) -``` - """ from os.atomic import Atomic @@ -79,9 +54,34 @@ struct ArcPointer[T: Movable]( This pointer is copyable, including across threads, maintaining a reference count to the underlying data. + When you initialize an `ArcPointer` with a value, it allocates memory and + moves the value into the allocated memory. Copying an instance of an + `ArcPointer` increments the reference count. Destroying an instance + decrements the reference count. When the reference count reaches zero, + `ArcPointer` destroys the value and frees its memory. + This pointer itself is thread-safe using atomic accesses to reference count the underlying data, but references returned to the underlying data are not - thread safe. + thread-safe. + + Subscripting an `ArcPointer` (`ptr[]`) returns a mutable reference to the + stored value. This is the only safe way to access the stored value. Other + methods, such as using the `unsafe_ptr()` method to retrieve an unsafe + pointer to the stored value, or accessing the private fields of an + `ArcPointer`, are unsafe and may result in memory errors. + + For a comparison with other pointer types, see [Intro to + pointers](/mojo/manual/pointers/) in the Mojo Manual. + + Examples: + + ```mojo + from memory import ArcPointer + var p = ArcPointer(4) + var p2 = p + p2[]=3 + print(3 == p[]) + ``` Parameters: T: The type of the stored value. @@ -126,9 +126,9 @@ struct ArcPointer[T: Movable]( @no_inline fn __del__(owned self): - """Delete the smart pointer reference. + """Delete the smart pointer. - Decrement the ref count for the reference. If there are no more + Decrement the reference count for the stored value. If there are no more references, delete the object and free its memory.""" if self._inner[].drop_ref(): # Call inner destructor, then free the memory. @@ -161,7 +161,7 @@ struct ArcPointer[T: Movable]( """Retrieves a pointer to the underlying memory. Returns: - The UnsafePointer to the underlying memory. + The `UnsafePointer` to the pointee. """ # TODO: consider removing this method. return UnsafePointer.address_of(self._inner[].payload) @@ -175,23 +175,27 @@ struct ArcPointer[T: Movable]( return self._inner[].refcount.load() fn __is__(self, rhs: Self) -> Bool: - """Returns True if the two ArcPointers point at the same object. + """Returns True if the two `ArcPointer` instances point at the same + object. Args: - rhs: The other ArcPointer. + rhs: The other `ArcPointer`. Returns: - True if the two ArcPointers point at the same object and False otherwise. + True if the two `ArcPointers` instances point at the same object and + False otherwise. """ return self._inner == rhs._inner fn __isnot__(self, rhs: Self) -> Bool: - """Returns True if the two ArcPointers point at different objects. + """Returns True if the two `ArcPointer` instances point at different + objects. Args: - rhs: The other ArcPointer. + rhs: The other `ArcPointer`. Returns: - True if the two ArcPointers point at different objects and False otherwise. + True if the two `ArcPointer` instances point at different objects + and False otherwise. """ return self._inner != rhs._inner diff --git a/stdlib/src/memory/owned_pointer.mojo b/stdlib/src/memory/owned_pointer.mojo index 3974daa99f..5d1ddb367d 100644 --- a/stdlib/src/memory/owned_pointer.mojo +++ b/stdlib/src/memory/owned_pointer.mojo @@ -21,6 +21,9 @@ struct OwnedPointer[T: AnyType]: system such that no more than one mutable alias for the underlying data may exist. + For a comparison with other pointer types, see [Intro to + pointers](/mojo/manual/pointers/) in the Mojo Manual. + Parameters: T: The type to be stored in the OwnedPointer[]. """ diff --git a/stdlib/src/memory/pointer.mojo b/stdlib/src/memory/pointer.mojo index 925707a0ea..16a4eadd29 100644 --- a/stdlib/src/memory/pointer.mojo +++ b/stdlib/src/memory/pointer.mojo @@ -305,6 +305,9 @@ struct Pointer[ ](CollectionElementNew, Stringable): """Defines a non-nullable safe pointer. + For a comparison with other pointer types, see [Intro to + pointers](/mojo/manual/pointers/) in the Mojo Manual. + Parameters: is_mutable: Whether the pointee data may be mutated through this. type: Type of the underlying data. diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index 0d12a44a78..f4971c68af 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -63,7 +63,17 @@ struct UnsafePointer[ Intable, Comparable, ): - """This is a pointer type that can point to any generic value that is movable. + """UnsafePointer[T] represents an indirect reference to one or more values of + type T consecutively in memory, and can refer to uninitialized memory. + + Because it supports referring to uninitialized memory, it provides unsafe + methods for initializing and destroying instances of T, as well as methods + for accessing the values once they are initialized. + + For more information see [Unsafe + pointers](/mojo/manual/pointers/unsafe-pointers) in the Mojo Manual. For a + comparison with other pointer types, see [Intro to + pointers](/mojo/manual/pointers/). Parameters: type: The type the pointer points to. @@ -84,12 +94,12 @@ struct UnsafePointer[ address_space._value.value, `>`, ] + """The underlying pointer type.""" # ===-------------------------------------------------------------------===# # Fields # ===-------------------------------------------------------------------===# - """The underlying pointer type.""" var address: Self._mlir_type """The underlying pointer.""" @@ -106,7 +116,7 @@ struct UnsafePointer[ @always_inline @implicit fn __init__(out self, value: Self._mlir_type): - """Create a pointer with the input value. + """Create a pointer from a low-level pointer primitive. Args: value: The MLIR value of the pointer to construct with. @@ -129,7 +139,7 @@ struct UnsafePointer[ @always_inline fn __init__(out self, *, other: Self): - """Copy the object. + """Copy an existing pointer. Args: other: The value to copy. From c0c2161c8037006663715773fc45ece9d5fa44cc Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Wed, 4 Dec 2024 12:24:01 -0700 Subject: [PATCH 085/119] [stdlib] Remove copies in `StaticTuple.getitem` Remove the copies of the internal array before getting an element in `StaticTuple`. There is no need to create a copy before calling `pop.array.gep` as seen by the use in `InlineArray`. We'll look into the `setitem` copies in a follow-up as they are causing some errors still that need investigation. MODULAR_ORIG_COMMIT_REV_ID: 214bff889d1299f766dae591ef5ce86fbb2f1999 --- stdlib/src/utils/static_tuple.mojo | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/stdlib/src/utils/static_tuple.mojo b/stdlib/src/utils/static_tuple.mojo index 6904888e65..ff745bedec 100644 --- a/stdlib/src/utils/static_tuple.mojo +++ b/stdlib/src/utils/static_tuple.mojo @@ -218,15 +218,10 @@ struct StaticTuple[element_type: AnyTrivialRegType, size: Int](Sized): debug_assert( int(idx.__mlir_index__()) < size, "index must be within bounds" ) - # Copy the array so we can get its address, because we can't take the - # address of 'self' in a non-mutating method. - var arrayCopy = self.array var ptr = __mlir_op.`pop.array.gep`( - UnsafePointer.address_of(arrayCopy).address, idx.__mlir_index__() + UnsafePointer.address_of(self.array).address, idx.__mlir_index__() ) - var result = UnsafePointer(ptr)[] - _ = arrayCopy - return result + return UnsafePointer(ptr)[] @always_inline("nodebug") fn __setitem__[ From 996fc97e74aec49ae7d9e8e97a5661d9c82410d5 Mon Sep 17 00:00:00 2001 From: rd4com <144297616+rd4com@users.noreply.github.com> Date: Wed, 4 Dec 2024 11:41:12 -0800 Subject: [PATCH 086/119] [External] [Stdlib] Add `PythonObject.__contains__` (#51430) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [External] [Stdlib] Add `PythonObject.__contains__` Simple and small implementation, Improving the `🐍 Python` experience ! Example usage: ```mojo x = PythonObject([1,2,3]) if 1 in x: print("1 in x") ``` That method should be replaced by a `c-python` function if possible. Co-authored-by: rd4com <144297616+rd4com@users.noreply.github.com> Closes modularml/mojo#3101 MODULAR_ORIG_COMMIT_REV_ID: d08c1f856feda307b8da58ec0cf3442553b3acc7 --- docs/changelog.md | 10 +++ stdlib/src/python/_cpython.mojo | 9 +++ stdlib/src/python/python_object.mojo | 21 ++++++ ..._for_test_python_object_dunder_contains.py | 40 +++++++++++ stdlib/test/python/test_python_cpython.mojo | 40 +++++++++++ stdlib/test/python/test_python_object.mojo | 26 +++++++ .../test_python_object_dunder_contains.mojo | 70 +++++++++++++++++++ 7 files changed, 216 insertions(+) create mode 100644 stdlib/test/python/module_for_test_python_object_dunder_contains.py create mode 100644 stdlib/test/python/test_python_cpython.mojo create mode 100644 stdlib/test/python/test_python_object_dunder_contains.mojo diff --git a/docs/changelog.md b/docs/changelog.md index 664fe17057..b101a22608 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -566,6 +566,16 @@ what we publish. fn take_imm_slice(a: ImmStringSlice): ... ``` +- Added `PythonObject.__contains__`. + ([PR #3101](https://github.com/modularml/mojo/pull/3101) by [@rd4com](https://github.com/rd4com)) + + Example usage: + + ```mojo + x = PythonObject([1,2,3]) + if 1 in x: + print("1 in x") + ### ❌ Removed - The `UnsafePointer.bitcast` overload for `DType` has been removed. Wrap your diff --git a/stdlib/src/python/_cpython.mojo b/stdlib/src/python/_cpython.mojo index 4a28b2d117..05426aa8eb 100644 --- a/stdlib/src/python/_cpython.mojo +++ b/stdlib/src/python/_cpython.mojo @@ -1348,7 +1348,16 @@ struct CPython: ", parent obj:", obj._get_ptr_as_int(), ) + return r + fn PyObject_HasAttrString( + mut self, + obj: PyObjectPtr, + name: StringRef, + ) -> Int: + var r = self.lib.get_function[ + fn (PyObjectPtr, UnsafePointer[UInt8]) -> Int + ]("PyObject_HasAttrString")(obj, name.data) return r fn PyObject_GetAttrString( diff --git a/stdlib/src/python/python_object.mojo b/stdlib/src/python/python_object.mojo index 4566b11501..a6b3a8a45f 100644 --- a/stdlib/src/python/python_object.mojo +++ b/stdlib/src/python/python_object.mojo @@ -1325,6 +1325,27 @@ struct PythonObject( """ return self._call_zero_arg_method("__invert__") + fn __contains__(self, rhs: PythonObject) raises -> Bool: + """Contains dunder. + + Calls the underlying object's `__contains__` method. + + Args: + rhs: Right hand value. + + Returns: + True if rhs is in self. + """ + # TODO: replace/optimize with c-python function. + # TODO: implement __getitem__ step for cpython membership test operator. + var cpython = _get_global_python_itf().cpython() + if cpython.PyObject_HasAttrString(self.py_object, "__contains__"): + return self._call_single_arg_method("__contains__", rhs).__bool__() + for v in self: + if v == rhs: + return True + return False + # see https://github.com/python/cpython/blob/main/Objects/call.c # for decrement rules fn __call__( diff --git a/stdlib/test/python/module_for_test_python_object_dunder_contains.py b/stdlib/test/python/module_for_test_python_object_dunder_contains.py new file mode 100644 index 0000000000..40ec598dee --- /dev/null +++ b/stdlib/test/python/module_for_test_python_object_dunder_contains.py @@ -0,0 +1,40 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +class Class_no_iterable_no_contains: + x = 1 + + +class Class_no_iterable_but_contains: + x = 123 + + def __contains__(self, rhs): + return rhs == self.x + + +class Class_iterable_no_contains: + def __init__(self): + self.data = [123, 456] + + def __iter__(self): + self.i = 0 + return self + + def __next__(self): + if self.i >= len(self.data): + raise StopIteration + else: + tmp = self.data[self.i] + self.i += 1 + return tmp diff --git a/stdlib/test/python/test_python_cpython.mojo b/stdlib/test/python/test_python_cpython.mojo new file mode 100644 index 0000000000..77d4bfdb59 --- /dev/null +++ b/stdlib/test/python/test_python_cpython.mojo @@ -0,0 +1,40 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# XFAIL: asan && !system-darwin +# RUN: %mojo %s + +from python import Python, PythonObject +from testing import assert_equal, assert_false, assert_raises, assert_true + + +def test_PyObject_HasAttrString(mut python: Python): + var Cpython_env = python.impl._cpython + + var the_object = PythonObject(0) + var result = Cpython_env[].PyObject_HasAttrString( + the_object.py_object, "__contains__" + ) + assert_equal(0, result) + + the_object = PythonObject([1, 2, 3]) + result = Cpython_env[].PyObject_HasAttrString( + the_object.py_object, "__contains__" + ) + assert_equal(1, result) + _ = the_object + + +def main(): + # initializing Python instance calls init_python + var python = Python() + test_PyObject_HasAttrString(python) diff --git a/stdlib/test/python/test_python_object.mojo b/stdlib/test/python/test_python_object.mojo index 92180fb8d0..b1c6799157 100644 --- a/stdlib/test/python/test_python_object.mojo +++ b/stdlib/test/python/test_python_object.mojo @@ -576,6 +576,31 @@ fn test_py_slice() raises: _ = with_2d[0:1][4] +def test_contains_dunder(): + with assert_raises(contains="'int' object is not iterable"): + var z = PythonObject(0) + _ = 5 in z + + var x = PythonObject([1.1, 2.2]) + assert_true(1.1 in x) + assert_false(3.3 in x) + + x = PythonObject(["Hello", "World"]) + assert_true("World" in x) + + x = PythonObject((1.5, 2)) + assert_true(1.5 in x) + assert_false(3.5 in x) + + var y = Dict[PythonObject, PythonObject]() + y["A"] = "A" + y["B"] = 5 + x = PythonObject(y) + assert_true("A" in x) + assert_false("C" in x) + assert_true("B" in x) + + def main(): # initializing Python instance calls init_python var python = Python() @@ -593,3 +618,4 @@ def main(): test_getitem_raises() test_setitem_raises() test_py_slice() + test_contains_dunder() diff --git a/stdlib/test/python/test_python_object_dunder_contains.mojo b/stdlib/test/python/test_python_object_dunder_contains.mojo new file mode 100644 index 0000000000..5d4c722278 --- /dev/null +++ b/stdlib/test/python/test_python_object_dunder_contains.mojo @@ -0,0 +1,70 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# XFAIL: asan && !system-darwin +# RUN: %mojo %s + +from python import Python, PythonObject +from testing import assert_equal, assert_false, assert_raises, assert_true +from collections import Dict + + +def test_contains_dunder(mut python: Python): + with assert_raises(contains="'int' object is not iterable"): + var z = PythonObject(0) + _ = 5 in z + + var x = PythonObject([1.1, 2.2]) + assert_true(1.1 in x) + assert_false(3.3 in x) + + x = PythonObject(["Hello", "World"]) + assert_true("World" in x) + + x = PythonObject((1.5, 2)) + assert_true(1.5 in x) + assert_false(3.5 in x) + + var y = Dict[PythonObject, PythonObject]() + y["A"] = "A" + y["B"] = 5 + x = PythonObject(y) + assert_true("A" in x) + assert_false("C" in x) + assert_true("B" in x) + + # tests with python modules: + module = python.import_module( + "module_for_test_python_object_dunder_contains" + ) + + x = module.Class_no_iterable_but_contains() + assert_true(123 in x) + + x = module.Class_no_iterable_no_contains() + with assert_raises( + contains="'Class_no_iterable_no_contains' object is not iterable" + ): + _ = 123 in x + + x = module.Class_iterable_no_contains() + assert_true(123 in x) + assert_true(456 in x) + assert_false(234 in x) + x.data.append(234) + assert_true(234 in x) + + +def main(): + # initializing Python instance calls init_python + var python = Python() + test_contains_dunder(python) From 31daaaaf5743191bd40dcfdc0e25d132c1214bf9 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Wed, 4 Dec 2024 15:22:00 -0500 Subject: [PATCH 087/119] [stdlib] Add `__reversed__` to `Span` All the machinery is already in place, so this just wires up `reversed()` for `Span`. MODULAR_ORIG_COMMIT_REV_ID: 91b588f3e0d91f27d9bc643c1e081cc27b52600e --- docs/changelog.md | 4 ++++ stdlib/src/builtin/reversed.mojo | 21 +++++++++++++++++++++ stdlib/src/utils/span.mojo | 13 +++++++++++-- stdlib/test/utils/test_span.mojo | 11 +++++++++++ 4 files changed, 47 insertions(+), 2 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index b101a22608..177c2bbd9f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -292,6 +292,10 @@ what we publish. allows forming a runtime-constant StringLiteral from a compile-time-dynamic `Stringable` value. +- `Span` now implements `__reversed__`. This means that one can get a + reverse iterator over a `Span` using `reversed(my_span)`. Users should + currently prefer this method over `my_span[::-1]`. + ### 🦋 Changed - The `inout` and `borrowed` argument conventions have been renamed to the `mut` diff --git a/stdlib/src/builtin/reversed.mojo b/stdlib/src/builtin/reversed.mojo index a1c984e81f..e01947a3fb 100644 --- a/stdlib/src/builtin/reversed.mojo +++ b/stdlib/src/builtin/reversed.mojo @@ -19,6 +19,7 @@ from collections import Deque, Dict from collections.deque import _DequeIter from collections.dict import _DictEntryIter, _DictKeyIter, _DictValueIter from collections.list import _ListIter +from utils.span import Span, _SpanIter from .range import _StridedRange @@ -193,3 +194,23 @@ fn reversed[ return _DictEntryIter[K, V, dict_origin, False]( src[]._reserved() - 1, 0, src ) + + +@always_inline +fn reversed[ + T: CollectionElement +](value: Span[T]) -> _SpanIter[T, value.origin, forward=False]: + """Get a reversed iterator of the input Span. + + **Note**: iterators are currently non-raising. + + Parameters: + T: The type of the elements in the Span. + + Args: + value: The Span to get the reversed iterator of. + + Returns: + The reversed iterator of the Span. + """ + return value.__reversed__() diff --git a/stdlib/src/utils/span.mojo b/stdlib/src/utils/span.mojo index 282a3bc229..5aa2fb4cf7 100644 --- a/stdlib/src/utils/span.mojo +++ b/stdlib/src/utils/span.mojo @@ -224,13 +224,22 @@ struct Span[ @always_inline fn __iter__(self) -> _SpanIter[T, origin]: - """Get an iterator over the elements of the span. + """Get an iterator over the elements of the Span. Returns: - An iterator over the elements of the span. + An iterator over the elements of the Span. """ return _SpanIter(0, self) + @always_inline + fn __reversed__(self) -> _SpanIter[T, origin, forward=False]: + """Iterate backwards over the Span. + + Returns: + A reversed iterator of the Span elements. + """ + return _SpanIter[forward=False](len(self), self) + # ===------------------------------------------------------------------===# # Trait implementations # ===------------------------------------------------------------------===# diff --git a/stdlib/test/utils/test_span.mojo b/stdlib/test/utils/test_span.mojo index ebf04f8157..a666788354 100644 --- a/stdlib/test/utils/test_span.mojo +++ b/stdlib/test/utils/test_span.mojo @@ -204,6 +204,16 @@ def test_ref(): assert_true(s.as_ref() == Pointer.address_of(l.unsafe_ptr()[])) +def test_reversed(): + var forward = InlineArray[Int, 3](1, 2, 3) + var backward = InlineArray[Int, 3](3, 2, 1) + var s = Span[Int](forward) + var i = 0 + for num in reversed(s): + assert_equal(num[], backward[i]) + i += 1 + + def main(): test_span_list_int() test_span_list_str() @@ -215,3 +225,4 @@ def main(): test_bool() test_fill() test_ref() + test_reversed() From ba8c566c8e7c586ae5ad302efd5e343b85ea39df Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Wed, 4 Dec 2024 15:54:54 -0700 Subject: [PATCH 088/119] [stdlib] Clean up setting `_is_owned` for destroying packs Use `lit.ownership.mark_destroyed` instead of setting the private member of `_is_owned` of `VariadicListMem` when used in downstream collections. MODULAR_ORIG_COMMIT_REV_ID: a5503dce64c34fe17044834d9808a888417a944d --- stdlib/src/collections/deque.mojo | 18 +++++++++--------- stdlib/src/collections/inline_array.mojo | 6 ++++-- stdlib/src/collections/list.mojo | 16 +++++++++------- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index 6d45725350..a0bb3cd262 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -139,17 +139,15 @@ struct Deque[ElementType: CollectionElement]( Args: values: The values to populate the deque with. """ - self = Self(variadic_list=values^) + self = Self(elements=values^) - fn __init__( - mut self, *, owned variadic_list: VariadicListMem[ElementType, _] - ): + fn __init__(mut self, *, owned elements: VariadicListMem[ElementType, _]): """Constructs a deque from the given values. Args: - variadic_list: The values to populate the deque with. + elements: The values to populate the deque with. """ - args_length = len(variadic_list) + args_length = len(elements) if args_length < self.default_capacity: capacity = self.default_capacity @@ -159,12 +157,14 @@ struct Deque[ElementType: CollectionElement]( self = Self(capacity=capacity) for i in range(args_length): - src = UnsafePointer.address_of(variadic_list[i]) + src = UnsafePointer.address_of(elements[i]) dst = self._data + i src.move_pointee_into(dst) - # Mark the elements as unowned to avoid del'ing uninitialized objects. - variadic_list._is_owned = False + # Do not destroy the elements when their backing storage goes away. + __mlir_op.`lit.ownership.mark_destroyed`( + __get_mvalue_as_litref(elements) + ) self._tail = args_length diff --git a/stdlib/src/collections/inline_array.mojo b/stdlib/src/collections/inline_array.mojo index 93064e0220..6901ed1327 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/stdlib/src/collections/inline_array.mojo @@ -194,8 +194,10 @@ struct InlineArray[ var eltptr = UnsafePointer.address_of(self.unsafe_get(i)) UnsafePointer.address_of(storage[i]).move_pointee_into(eltptr) - # Mark the elements as already destroyed. - storage._is_owned = False + # Do not destroy the elements when their backing storage goes away. + __mlir_op.`lit.ownership.mark_destroyed`( + __get_mvalue_as_litref(storage) + ) fn __init__(out self, *, other: Self): """Explicitly copy the provided value. diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index d4791dd79e..033ceeb464 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -144,26 +144,28 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Args: values: The values to populate the list with. """ - self = Self(variadic_list=values^) + self = Self(elements=values^) - fn __init__(out self, *, owned variadic_list: VariadicListMem[T, _]): + fn __init__(out self, *, owned elements: VariadicListMem[T, _]): """Constructs a list from the given values. Args: - variadic_list: The values to populate the list with. + elements: The values to populate the list with. """ - var length = len(variadic_list) + var length = len(elements) self = Self(capacity=length) for i in range(length): - var src = UnsafePointer.address_of(variadic_list[i]) + var src = UnsafePointer.address_of(elements[i]) var dest = self.data + i src.move_pointee_into(dest) - # Mark the elements as unowned to avoid del'ing uninitialized objects. - variadic_list._is_owned = False + # Do not destroy the elements when their backing storage goes away. + __mlir_op.`lit.ownership.mark_destroyed`( + __get_mvalue_as_litref(elements) + ) self.size = length From c49ccbd6698d857de2618ccd006a8473ac73909e Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Wed, 4 Dec 2024 16:14:26 -0700 Subject: [PATCH 089/119] [stdlib] Add tests for `StaticTuple.setitem` Move the existing `getitem` tests from `test_tuple.mojo` and start a separate test file for `StaticTuple`. Add tests for `setitem` as we are can use it to figure out why we do the copying in `setitem` and `getitem` before the gep. MODULAR_ORIG_COMMIT_REV_ID: c0ab1928aa8da0045a96f27cbe808d287f02c2a7 --- stdlib/test/utils/test_static_tuple.mojo | 52 ++++++++++++++++++++++++ stdlib/test/utils/test_tuple.mojo | 18 -------- 2 files changed, 52 insertions(+), 18 deletions(-) create mode 100644 stdlib/test/utils/test_static_tuple.mojo diff --git a/stdlib/test/utils/test_static_tuple.mojo b/stdlib/test/utils/test_static_tuple.mojo new file mode 100644 index 0000000000..67f3fbc0e8 --- /dev/null +++ b/stdlib/test/utils/test_static_tuple.mojo @@ -0,0 +1,52 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# RUN: %mojo %s + +from testing import assert_equal +from utils import StaticTuple + + +def test_getitem(): + # Should be constructible from a single element + # as well as a variadic list of elements. + var tup1 = StaticTuple[Int, 1](1) + assert_equal(tup1[0], 1) + + var tup2 = StaticTuple[Int, 2](1, 1) + assert_equal(tup2[0], 1) + assert_equal(tup2[1], 1) + + var tup3 = StaticTuple[Int, 3](1, 2, 3) + assert_equal(tup3[0], 1) + assert_equal(tup3[1], 2) + assert_equal(tup3[2], 3) + + assert_equal(tup1[Int(0)], 1) + + +def test_setitem(): + var t = StaticTuple[Int, 3](1, 2, 3) + + t[0] = 100 + assert_equal(t[0], 100) + + t[1] = 200 + assert_equal(t[1], 200) + + t[2] = 300 + assert_equal(t[2], 300) + + +def main(): + test_getitem() + test_setitem() diff --git a/stdlib/test/utils/test_tuple.mojo b/stdlib/test/utils/test_tuple.mojo index f6ccb2ce3a..0748552be0 100644 --- a/stdlib/test/utils/test_tuple.mojo +++ b/stdlib/test/utils/test_tuple.mojo @@ -19,23 +19,6 @@ from testing import assert_equal, assert_false, assert_true from utils import IndexList, StaticTuple -def test_static_tuple(): - var tup1 = StaticTuple[Int, 1](1) - assert_equal(tup1[0], 1) - - var tup2 = StaticTuple[Int, 2](1, 1) - assert_equal(tup2[0], 1) - assert_equal(tup2[1], 1) - - var tup3 = StaticTuple[Int, 3](1, 2, 3) - assert_equal(tup3[0], 1) - assert_equal(tup3[1], 2) - assert_equal(tup3[2], 3) - - assert_equal(tup3[0], 1) - assert_equal(tup3[Int(0)], 1) - - def test_static_int_tuple(): assert_equal(str(IndexList[1](1)), "(1,)") @@ -72,6 +55,5 @@ def test_tuple_literal(): def main(): - test_static_tuple() test_static_int_tuple() test_tuple_literal() From aeb7a1fe7231461551739f65a7596a847e3c347b Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 4 Dec 2024 17:48:23 -0800 Subject: [PATCH 090/119] [mojo-lang] Fix a bad error message. This fixes https://github.com/modularml/mojo/issues/3829 MODULAR_ORIG_COMMIT_REV_ID: ce65257270bfe6443b2f91dae96590fe4a1c2528 --- docs/changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 177c2bbd9f..e781cf6279 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -620,6 +620,9 @@ what we publish. - [Issue #3815](https://github.com/modularml/mojo/issues/3815) - [BUG] Mutability not preserved when taking the union of two origins. +- [Issue #3829](https://github.com/modularml/mojo/issues/3829) - Poor error + message when invoking a function pointer upon an argument of the wrong origin + - The VS Code extension now auto-updates its private copy of the MAX SDK. - The variadic initializer for `SIMD` now works in parameter expressions. From 8942c27059d659c26c6f46ec1523cd6778007143 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Wed, 4 Dec 2024 20:16:52 -0800 Subject: [PATCH 091/119] [******][GPU] Extend the time operations to be GPU generic MODULAR_ORIG_COMMIT_REV_ID: 9acc0eef450d97eccca0550b5f6f1eabda7e0023 --- stdlib/src/time/time.mojo | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index 853c6d2d56..936ca89459 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -126,6 +126,13 @@ fn _gettime_as_nsec_unix(clockid: Int) -> Int: ) +@always_inline +fn _gpu_clock() -> Int: + """Returns a 64-bit unsigned cycle counter.""" + alias asm = "llvm.nvvm.read.ptx.sreg.clock64" if is_nvidia_gpu() else "llvm.amdgcn.s.memtime" + return int(llvm_intrinsic[asm, Int64]()) + + @always_inline fn _realtime_nanoseconds() -> Int: """Returns the current realtime time in nanoseconds""" @@ -137,7 +144,9 @@ fn _monotonic_nanoseconds() -> Int: """Returns the current monotonic time in nanoseconds""" @parameter - if os_is_windows(): + if is_gpu(): + return _gpu_clock() + elif os_is_windows(): var ft = _FILETIME() external_call["GetSystemTimePreciseAsFileTime", NoneType]( Pointer.address_of(ft) @@ -151,7 +160,6 @@ fn _monotonic_nanoseconds() -> Int: @always_inline fn _monotonic_raw_nanoseconds() -> Int: """Returns the current monotonic time in nanoseconds""" - return _gettime_as_nsec_unix(_CLOCK_MONOTONIC_RAW) @@ -204,14 +212,6 @@ fn perf_counter_ns() -> Int: Returns: The current time in ns. """ - - @parameter - if is_nvidia_gpu(): - return int( - inlined_assembly[ - "mov.u64 $0, %globaltimer;", UInt64, constraints="=l" - ]() - ) return _monotonic_nanoseconds() @@ -349,17 +349,10 @@ fn sleep(sec: Float64): """ @parameter - if is_nvidia_gpu(): - var nsec = sec * 1.0e9 - llvm_intrinsic["llvm.nvvm.nanosleep", NoneType]( - nsec.cast[DType.int32]() - ) - return - elif is_amd_gpu(): + if is_gpu(): var nsec = sec * 1.0e9 - llvm_intrinsic["llvm.amdgcn.s.sleep", NoneType]( - nsec.cast[DType.int32]() - ) + alias intrinsic = "llvm.nvvm.nanosleep" if is_nvidia_gpu() else "llvm.amdgcn.s.sleep" + llvm_intrinsic[intrinsic, NoneType](nsec.cast[DType.int32]()) return alias NANOSECONDS_IN_SECOND = 1_000_000_000 From b0094d3d9dfc6e38154393862098c22a0c1dec89 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Wed, 4 Dec 2024 23:45:56 -0500 Subject: [PATCH 092/119] [stdlib] Move `strip`,`lstrip`,`rstrip` onto StringSlice (#52118) MODULAR_ORIG_COMMIT_REV_ID: 72291fc94933188ec12d2dae10c011023b026a75 --- docs/changelog.md | 2 + stdlib/benchmarks/hashlib/bench_hash.mojo | 2 +- stdlib/src/collections/string.mojo | 48 ++------ stdlib/src/os/path/path.mojo | 16 ++- stdlib/src/utils/string_slice.mojo | 136 +++++++++++++++++++--- stdlib/test/hashlib/test_ahash.mojo | 2 +- stdlib/test/utils/test_string_slice.mojo | 99 ++++++++++++++++ 7 files changed, 243 insertions(+), 62 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index e781cf6279..788d1e9c95 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -296,6 +296,8 @@ what we publish. reverse iterator over a `Span` using `reversed(my_span)`. Users should currently prefer this method over `my_span[::-1]`. +- `StringSlice` now implements `strip`, `rstrip`, and `lstrip`. + ### 🦋 Changed - The `inout` and `borrowed` argument conventions have been renamed to the `mut` diff --git a/stdlib/benchmarks/hashlib/bench_hash.mojo b/stdlib/benchmarks/hashlib/bench_hash.mojo index 291701710d..6d2ba54044 100644 --- a/stdlib/benchmarks/hashlib/bench_hash.mojo +++ b/stdlib/benchmarks/hashlib/bench_hash.mojo @@ -586,7 +586,7 @@ fn gen_word_pairs[words: String = words_en]() -> List[String]: try: var list = words.split(",") for w in list: - var w1 = w[].strip() + var w1 = str(w[].strip()) for w in list: var w2 = w[].strip() result.append(w1 + " " + w2) diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index a6051bbb81..47f06707c2 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -1916,7 +1916,7 @@ struct String( res.append(0) return String(res^) - fn strip(self, chars: String) -> String: + fn strip(self, chars: StringSlice) -> StringSlice[__origin_of(self)]: """Return a copy of the string with leading and trailing characters removed. @@ -1929,7 +1929,7 @@ struct String( return self.lstrip(chars).rstrip(chars) - fn strip(self) -> String: + fn strip(self) -> StringSlice[__origin_of(self)]: """Return a copy of the string with leading and trailing whitespaces removed. @@ -1938,7 +1938,7 @@ struct String( """ return self.lstrip().rstrip() - fn rstrip(self, chars: String) -> String: + fn rstrip(self, chars: StringSlice) -> StringSlice[__origin_of(self)]: """Return a copy of the string with trailing characters removed. Args: @@ -1948,29 +1948,17 @@ struct String( A copy of the string with no trailing characters. """ - var r_idx = self.byte_length() - while r_idx > 0 and self[r_idx - 1] in chars: - r_idx -= 1 + return self.as_string_slice().rstrip(chars) - return self[:r_idx] - - fn rstrip(self) -> String: + fn rstrip(self) -> StringSlice[__origin_of(self)]: """Return a copy of the string with trailing whitespaces removed. Returns: A copy of the string with no trailing whitespaces. """ - var r_idx = self.byte_length() - # TODO (#933): should use this once llvm intrinsics can be used at comp time - # for s in self.__reversed__(): - # if not s.isspace(): - # break - # r_idx -= 1 - while r_idx > 0 and _isspace(self._buffer.unsafe_get(r_idx - 1)): - r_idx -= 1 - return self[:r_idx] - - fn lstrip(self, chars: String) -> String: + return self.as_string_slice().rstrip() + + fn lstrip(self, chars: StringSlice) -> StringSlice[__origin_of(self)]: """Return a copy of the string with leading characters removed. Args: @@ -1980,29 +1968,15 @@ struct String( A copy of the string with no leading characters. """ - var l_idx = 0 - while l_idx < self.byte_length() and self[l_idx] in chars: - l_idx += 1 + return self.as_string_slice().lstrip(chars) - return self[l_idx:] - - fn lstrip(self) -> String: + fn lstrip(self) -> StringSlice[__origin_of(self)]: """Return a copy of the string with leading whitespaces removed. Returns: A copy of the string with no leading whitespaces. """ - var l_idx = 0 - # TODO (#933): should use this once llvm intrinsics can be used at comp time - # for s in self: - # if not s.isspace(): - # break - # l_idx += 1 - while l_idx < self.byte_length() and _isspace( - self._buffer.unsafe_get(l_idx) - ): - l_idx += 1 - return self[l_idx:] + return self.as_string_slice().lstrip() fn __hash__(self) -> UInt: """Hash the underlying buffer using builtin hash. diff --git a/stdlib/src/os/path/path.mojo b/stdlib/src/os/path/path.mojo index 3840a97fac..64edffce5e 100644 --- a/stdlib/src/os/path/path.mojo +++ b/stdlib/src/os/path/path.mojo @@ -229,11 +229,10 @@ fn dirname[PathLike: os.PathLike, //](path: PathLike) -> String: The directory component of a pathname. """ var fspath = path.__fspath__() - alias sep = str(os.sep) - var i = fspath.rfind(sep) + 1 + var i = fspath.rfind(os.sep) + 1 var head = fspath[:i] - if head and head != sep * len(head): - return head.rstrip(sep) + if head and head != os.sep * len(head): + return head.rstrip(os.sep) return head @@ -365,7 +364,7 @@ def split[PathLike: os.PathLike, //](path: PathLike) -> (String, String): i = fspath.rfind(os.sep) + 1 head, tail = fspath[:i], fspath[i:] if head and head != str(os.sep) * len(head): - head = head.rstrip(sep) + head = str(head.rstrip(sep)) return head, tail @@ -386,11 +385,10 @@ fn basename[PathLike: os.PathLike, //](path: PathLike) -> String: The basename from the path. """ var fspath = path.__fspath__() - alias sep = str(os.sep) - var i = fspath.rfind(sep) + 1 + var i = fspath.rfind(os.sep) + 1 var head = fspath[i:] - if head and head != sep * len(head): - return head.rstrip(sep) + if head and head != os.sep * len(head): + return head.rstrip(os.sep) return head diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 394dccf89c..b6f9daa45a 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -616,13 +616,33 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( # ===------------------------------------------------------------------===# @always_inline - fn strip(self) -> StringSlice[origin]: - """Gets a StringRef with leading and trailing whitespaces removed. - This only takes ASCII whitespace into account: - `" \\t\\n\\v\\f\\r\\x1c\\x1d\\x1e"`. + fn strip(self, chars: StringSlice) -> Self: + """Return a copy of the string with leading and trailing characters + removed. + + Args: + chars: A set of characters to be removed. Defaults to whitespace. Returns: - A StringRef with leading and trailing whitespaces removed. + A copy of the string with no leading or trailing characters. + + Examples: + + ```mojo + print("himojohi".strip("hi")) # "mojo" + ``` + . + """ + + return self.lstrip(chars).rstrip(chars) + + @always_inline + fn strip(self) -> Self: + """Return a copy of the string with leading and trailing whitespaces + removed. + + Returns: + A copy of the string with no leading or trailing whitespaces. Examples: @@ -631,15 +651,103 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( ``` . """ - # FIXME: this can already do full isspace support with iterator - var start: Int = 0 - var end: Int = len(self) - var ptr = self.unsafe_ptr() - while start < end and _isspace(ptr[start]): - start += 1 - while end > start and _isspace(ptr[end - 1]): - end -= 1 - return StringSlice[origin](ptr=ptr + start, length=end - start) + return self.lstrip().rstrip() + + @always_inline + fn rstrip(self, chars: StringSlice) -> Self: + """Return a copy of the string with trailing characters removed. + + Args: + chars: A set of characters to be removed. Defaults to whitespace. + + Returns: + A copy of the string with no trailing characters. + + Examples: + + ```mojo + print("mojohi".strip("hi")) # "mojo" + ``` + . + """ + + var r_idx = self.byte_length() + while r_idx > 0 and self[r_idx - 1] in chars: + r_idx -= 1 + + return Self(unsafe_from_utf8=self.as_bytes()[:r_idx]) + + @always_inline + fn rstrip(self) -> Self: + """Return a copy of the string with trailing whitespaces removed. + + Returns: + A copy of the string with no trailing whitespaces. + + Examples: + + ```mojo + print("mojo ".strip()) # "mojo" + ``` + . + """ + var r_idx = self.byte_length() + # TODO (#933): should use this once llvm intrinsics can be used at comp time + # for s in self.__reversed__(): + # if not s.isspace(): + # break + # r_idx -= 1 + while r_idx > 0 and _isspace(self.as_bytes()[r_idx - 1]): + r_idx -= 1 + return Self(unsafe_from_utf8=self.as_bytes()[:r_idx]) + + @always_inline + fn lstrip(self, chars: StringSlice) -> Self: + """Return a copy of the string with leading characters removed. + + Args: + chars: A set of characters to be removed. Defaults to whitespace. + + Returns: + A copy of the string with no leading characters. + + Examples: + + ```mojo + print("himojo".strip("hi")) # "mojo" + ``` + . + """ + + var l_idx = 0 + while l_idx < self.byte_length() and self[l_idx] in chars: + l_idx += 1 + + return Self(unsafe_from_utf8=self.as_bytes()[l_idx:]) + + @always_inline + fn lstrip(self) -> Self: + """Return a copy of the string with leading whitespaces removed. + + Returns: + A copy of the string with no leading whitespaces. + + Examples: + + ```mojo + print(" mojo".strip()) # "mojo" + ``` + . + """ + var l_idx = 0 + # TODO (#933): should use this once llvm intrinsics can be used at comp time + # for s in self: + # if not s.isspace(): + # break + # l_idx += 1 + while l_idx < self.byte_length() and _isspace(self.as_bytes()[l_idx]): + l_idx += 1 + return Self(unsafe_from_utf8=self.as_bytes()[l_idx:]) @always_inline fn as_bytes(self) -> Span[Byte, origin]: diff --git a/stdlib/test/hashlib/test_ahash.mojo b/stdlib/test/hashlib/test_ahash.mojo index f1fdc69a62..e696b32c76 100644 --- a/stdlib/test/hashlib/test_ahash.mojo +++ b/stdlib/test/hashlib/test_ahash.mojo @@ -580,7 +580,7 @@ fn gen_word_pairs[words: String = words_en]() -> List[String]: try: var list = words.split(", ") for w in list: - var w1 = w[].strip() + var w1 = str(w[].strip()) for w in list: var w2 = w[].strip() result.append(w1 + " " + w2) diff --git a/stdlib/test/utils/test_string_slice.mojo b/stdlib/test/utils/test_string_slice.mojo index 057601c270..7ef357692b 100644 --- a/stdlib/test/utils/test_string_slice.mojo +++ b/stdlib/test/utils/test_string_slice.mojo @@ -487,6 +487,102 @@ def test_splitlines(): _assert_equal(s.splitlines(keepends=True), items) +def test_rstrip(): + # with default rstrip chars + var empty_string = "".as_string_slice() + assert_true(empty_string.rstrip() == "") + + var space_string = " \t\n\r\v\f ".as_string_slice() + assert_true(space_string.rstrip() == "") + + var str0 = " n ".as_string_slice() + assert_true(str0.rstrip() == " n") + + var str1 = "string".as_string_slice() + assert_true(str1.rstrip() == "string") + + var str2 = "something \t\n\t\v\f".as_string_slice() + assert_true(str2.rstrip() == "something") + + # with custom chars for rstrip + var str3 = "mississippi".as_string_slice() + assert_true(str3.rstrip("sip") == "m") + + var str4 = "mississippimississippi \n ".as_string_slice() + assert_true(str4.rstrip("sip ") == "mississippimississippi \n") + assert_true(str4.rstrip("sip \n") == "mississippim") + + +def test_lstrip(): + # with default lstrip chars + var empty_string = "".as_string_slice() + assert_true(empty_string.lstrip() == "") + + var space_string = " \t\n\r\v\f ".as_string_slice() + assert_true(space_string.lstrip() == "") + + var str0 = " n ".as_string_slice() + assert_true(str0.lstrip() == "n ") + + var str1 = "string".as_string_slice() + assert_true(str1.lstrip() == "string") + + var str2 = " \t\n\t\v\fsomething".as_string_slice() + assert_true(str2.lstrip() == "something") + + # with custom chars for lstrip + var str3 = "mississippi".as_string_slice() + assert_true(str3.lstrip("mis") == "ppi") + + var str4 = " \n mississippimississippi".as_string_slice() + assert_true(str4.lstrip("mis ") == "\n mississippimississippi") + assert_true(str4.lstrip("mis \n") == "ppimississippi") + + +def test_strip(): + # with default strip chars + var empty_string = "".as_string_slice() + assert_true(empty_string.strip() == "") + alias comp_empty_string_stripped = "".as_string_slice().strip() + assert_true(comp_empty_string_stripped == "") + + var space_string = " \t\n\r\v\f ".as_string_slice() + assert_true(space_string.strip() == "") + alias comp_space_string_stripped = " \t\n\r\v\f ".as_string_slice().strip() + assert_true(comp_space_string_stripped == "") + + var str0 = " n ".as_string_slice() + assert_true(str0.strip() == "n") + alias comp_str0_stripped = " n ".as_string_slice().strip() + assert_true(comp_str0_stripped == "n") + + var str1 = "string".as_string_slice() + assert_true(str1.strip() == "string") + alias comp_str1_stripped = ("string").strip() + assert_true(comp_str1_stripped == "string") + + var str2 = " \t\n\t\v\fsomething \t\n\t\v\f".as_string_slice() + alias comp_str2_stripped = (" \t\n\t\v\fsomething \t\n\t\v\f").strip() + assert_true(str2.strip() == "something") + assert_true(comp_str2_stripped == "something") + + # with custom strip chars + var str3 = "mississippi".as_string_slice() + assert_true(str3.strip("mips") == "") + assert_true(str3.strip("mip") == "ssiss") + alias comp_str3_stripped = "mississippi".as_string_slice().strip("mips") + assert_true(comp_str3_stripped == "") + + var str4 = " \n mississippimississippi \n ".as_string_slice() + assert_true(str4.strip(" ") == "\n mississippimississippi \n") + assert_true(str4.strip("\nmip ") == "ssissippimississ") + + alias comp_str4_stripped = ( + " \n mississippimississippi \n ".as_string_slice().strip(" ") + ) + assert_true(comp_str4_stripped == "\n mississippimississippi \n") + + def main(): test_string_literal_byte_span() test_string_byte_span() @@ -505,3 +601,6 @@ def main(): test_combination_10_good_10_bad_utf8_sequences() test_count_utf8_continuation_bytes() test_splitlines() + test_rstrip() + test_lstrip() + test_strip() From 4598da1d9f8d6bcb1c5753be181f88f3addf773f Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Wed, 4 Dec 2024 20:52:56 -0800 Subject: [PATCH 093/119] [Stdlib] Make time functions return the value as UInt MODULAR_ORIG_COMMIT_REV_ID: 55cac07ab34491dca8faf99109c5acaa8e8fbef5 --- stdlib/src/time/time.mojo | 36 ++++++++++++++++----------------- stdlib/test/time/test_time.mojo | 4 ++-- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index 936ca89459..7364d85324 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -47,7 +47,7 @@ alias _CLOCK_MONOTONIC_RAW = 4 # Constants alias _NSEC_PER_USEC = 1000 -alias _NSEC_PER_MSEC = 1000000 +alias _NSEC_PER_MSEC = 1_000_000 alias _USEC_PER_MSEC = 1000 alias _MSEC_PER_SEC = 1000 alias _NSEC_PER_SEC = _NSEC_PER_USEC * _USEC_PER_MSEC * _MSEC_PER_SEC @@ -69,7 +69,7 @@ struct _CTimeSpec(Stringable): self.tv_sec = 0 self.tv_subsec = 0 - fn as_nanoseconds(self) -> Int: + fn as_nanoseconds(self) -> UInt: @parameter if os_is_linux(): return self.tv_sec * _NSEC_PER_SEC + self.tv_subsec @@ -91,7 +91,7 @@ struct _FILETIME: self.dwLowDateTime = 0 self.dwHighDateTime = 0 - fn as_nanoseconds(self) -> Int: + fn as_nanoseconds(self) -> UInt: # AFTER subtracting windows offset the return value fits in a signed int64 # BEFORE subtracting windows offset the return value does not fit in a signed int64 # Taken from https://github.com/microsoft/STL/blob/c8d1efb6d504f6392acf8f6d01fd703f7c8826c0/stl/src/xtime.cpp#L50 @@ -116,7 +116,7 @@ fn _clock_gettime(clockid: Int) -> _CTimeSpec: @always_inline -fn _gettime_as_nsec_unix(clockid: Int) -> Int: +fn _gettime_as_nsec_unix(clockid: Int) -> UInt: if os_is_linux(): var ts = _clock_gettime(clockid) return ts.as_nanoseconds() @@ -127,20 +127,20 @@ fn _gettime_as_nsec_unix(clockid: Int) -> Int: @always_inline -fn _gpu_clock() -> Int: +fn _gpu_clock() -> UInt: """Returns a 64-bit unsigned cycle counter.""" alias asm = "llvm.nvvm.read.ptx.sreg.clock64" if is_nvidia_gpu() else "llvm.amdgcn.s.memtime" return int(llvm_intrinsic[asm, Int64]()) @always_inline -fn _realtime_nanoseconds() -> Int: +fn _realtime_nanoseconds() -> UInt: """Returns the current realtime time in nanoseconds""" return _gettime_as_nsec_unix(_CLOCK_REALTIME) @always_inline -fn _monotonic_nanoseconds() -> Int: +fn _monotonic_nanoseconds() -> UInt: """Returns the current monotonic time in nanoseconds""" @parameter @@ -158,20 +158,20 @@ fn _monotonic_nanoseconds() -> Int: @always_inline -fn _monotonic_raw_nanoseconds() -> Int: +fn _monotonic_raw_nanoseconds() -> UInt: """Returns the current monotonic time in nanoseconds""" return _gettime_as_nsec_unix(_CLOCK_MONOTONIC_RAW) @always_inline -fn _process_cputime_nanoseconds() -> Int: +fn _process_cputime_nanoseconds() -> UInt: """Returns the high-resolution per-process timer from the CPU""" return _gettime_as_nsec_unix(_CLOCK_PROCESS_CPUTIME_ID) @always_inline -fn _thread_cputime_nanoseconds() -> Int: +fn _thread_cputime_nanoseconds() -> UInt: """Returns the thread-specific CPU-time clock""" return _gettime_as_nsec_unix(_CLOCK_THREAD_CPUTIME_ID) @@ -202,7 +202,7 @@ fn perf_counter() -> Float64: @always_inline -fn perf_counter_ns() -> Int: +fn perf_counter_ns() -> UInt: """Return the value (in nanoseconds) of a performance counter, i.e. a clock with the highest available resolution to measure a short duration. It does include time elapsed during sleep and is system-wide. The reference @@ -221,7 +221,7 @@ fn perf_counter_ns() -> Int: @always_inline -fn now() -> Int: +fn now() -> UInt: """Deprecated: Please use time.perf_counter_ns instead. Returns the current monotonic time time in nanoseconds. This function @@ -241,7 +241,7 @@ fn now() -> Int: @always_inline -fn monotonic() -> Int: +fn monotonic() -> UInt: """ Returns the current monotonic time time in nanoseconds. This function queries the current platform's monotonic clock, making it useful for @@ -263,7 +263,7 @@ fn monotonic() -> Int: @parameter fn _time_function_windows[ func: fn () raises capturing [_] -> None -]() raises -> Int: +]() raises -> UInt: """Calculates elapsed time in Windows""" var ticks_per_sec: _WINDOWS_LARGE_INTEGER = 0 @@ -294,7 +294,7 @@ fn _time_function_windows[ @always_inline @parameter -fn time_function[func: fn () raises capturing [_] -> None]() raises -> Int: +fn time_function[func: fn () raises capturing [_] -> None]() raises -> UInt: """Measures the time spent in the function. Parameters: @@ -316,7 +316,7 @@ fn time_function[func: fn () raises capturing [_] -> None]() raises -> Int: @always_inline @parameter -fn time_function[func: fn () capturing [_] -> None]() -> Int: +fn time_function[func: fn () capturing [_] -> None]() -> UInt: """Measures the time spent in the function. Parameters: @@ -333,7 +333,7 @@ fn time_function[func: fn () capturing [_] -> None]() -> Int: try: return time_function[raising_func]() except err: - return abort[Int](err) + return abort[UInt](err) # ===-----------------------------------------------------------------------===# @@ -369,7 +369,7 @@ fn sleep(sec: Float64): _ = rem -fn sleep(sec: Int): +fn sleep(sec: UInt): """Suspends the current thread for the seconds specified. Args: diff --git a/stdlib/test/time/test_time.mojo b/stdlib/test/time/test_time.mojo index 985a0ec9f6..342e453774 100644 --- a/stdlib/test/time/test_time.mojo +++ b/stdlib/test/time/test_time.mojo @@ -28,7 +28,7 @@ from testing import assert_true @always_inline @parameter fn time_me(): - sleep(1) + sleep(1.0) @always_inline @@ -50,7 +50,7 @@ fn time_templated_function[ fn time_capturing_function(iters: Int) -> Int: @parameter fn time_fn(): - sleep(1) + sleep(1.0) return time_function[time_fn]() From 1f1151c33b47d5565f52e635563d78d8c451c558 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Wed, 4 Dec 2024 23:43:34 -0800 Subject: [PATCH 094/119] [Stdlib] Add string overload for StringLiteral.get, NFC MODULAR_ORIG_COMMIT_REV_ID: 2aa197a5b091954efe63da52515e1aade752ed2a --- stdlib/src/builtin/string_literal.mojo | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index dc7d05d49a..7b1598b481 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -106,6 +106,19 @@ struct StringLiteral( `> : !kgen.string`, ] + @always_inline("nodebug") + @staticmethod + fn get[value: String]() -> StringLiteral: + """Form a string literal from an arbitrary compile-time String value. + + Parameters: + value: The value to convert to StringLiteral. + + Returns: + The string value as a StringLiteral. + """ + return Self._from_string[value]() + @always_inline("nodebug") @staticmethod fn get[type: Stringable, //, value: type]() -> StringLiteral: From b0458f998d70ead300c055aa56515df917bd0fc9 Mon Sep 17 00:00:00 2001 From: Austin Doolittle Date: Thu, 5 Dec 2024 08:22:01 -0800 Subject: [PATCH 095/119] [******] Extend math.min to support boolean Extends our min function to support boolean values MODULAR_ORIG_COMMIT_REV_ID: 141e7e80532f1ad91a113d001ee2a185855de2b1 --- stdlib/src/builtin/math.mojo | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/stdlib/src/builtin/math.mojo b/stdlib/src/builtin/math.mojo index eb1b088242..7293e16db2 100644 --- a/stdlib/src/builtin/math.mojo +++ b/stdlib/src/builtin/math.mojo @@ -236,7 +236,7 @@ fn min(x: SIMD, y: __type_of(x), /) -> __type_of(x): corresponding elements in x and y. Constraints: - The type of the inputs must be numeric. + The type of the inputs must be numeric or boolean. Args: x: First SIMD vector. @@ -245,8 +245,16 @@ fn min(x: SIMD, y: __type_of(x), /) -> __type_of(x): Returns: A SIMD vector containing the elementwise minimum of x and y. """ - constrained[x.type.is_numeric(), "the SIMD type must be numeric"]() - return __mlir_op.`pop.min`(x.value, y.value) + + @parameter + if x.type is DType.bool: + return min(x.cast[DType.uint8](), y.cast[DType.uint8]()).cast[x.type]() + else: + constrained[ + x.type.is_numeric(), "the SIMD type must be numeric or boolean" + ]() + + return __mlir_op.`pop.min`(x.value, y.value) # ===----------------------------------------------------------------------=== # From d3fb32dc0c3836ddd7c74a10eb7a23eae7ac488a Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Thu, 5 Dec 2024 09:46:11 -0700 Subject: [PATCH 096/119] [stdlib] Move `Span` from `utils` to `memory` `Span` is no longer a util, but is a common vocabulary type used throughout stdlib APIs. As such, promote it to `memory` module. MODULAR_ORIG_COMMIT_REV_ID: 33bae4c7dcc8191118d669985405f31599de386c --- docs/changelog.md | 4 +++- stdlib/src/builtin/_format_float.mojo | 4 ++-- stdlib/src/builtin/debug_assert.mojo | 3 +-- stdlib/src/builtin/file.mojo | 4 ++-- stdlib/src/builtin/file_descriptor.mojo | 4 +--- stdlib/src/builtin/io.mojo | 1 - stdlib/src/builtin/reversed.mojo | 2 +- stdlib/src/builtin/simd.mojo | 4 ++-- stdlib/src/builtin/sort.mojo | 4 +--- stdlib/src/builtin/string_literal.mojo | 4 ++-- stdlib/src/collections/list.mojo | 4 +--- stdlib/src/collections/string.mojo | 3 +-- stdlib/src/math/math.mojo | 3 +-- stdlib/src/memory/__init__.mojo | 1 + stdlib/src/{utils => memory}/span.mojo | 4 ++-- stdlib/src/os/path/path.mojo | 3 ++- stdlib/src/prelude/__init__.mojo | 3 ++- stdlib/src/tempfile/tempfile.mojo | 3 ++- stdlib/src/utils/__init__.mojo | 1 - stdlib/src/utils/_utf8_validation.mojo | 2 +- stdlib/src/utils/inline_string.mojo | 2 +- stdlib/src/utils/string_slice.mojo | 3 +-- stdlib/src/utils/stringref.mojo | 2 +- stdlib/src/utils/write.mojo | 7 +++---- stdlib/test/builtin/test_sort_issue_1018.mojo | 4 +--- stdlib/test/collections/test_list.mojo | 4 +--- stdlib/test/hashlib/test_ahash.mojo | 4 +--- stdlib/test/{utils => memory}/test_span.mojo | 4 +--- stdlib/test/utils/test_string_slice.mojo | 3 ++- 29 files changed, 40 insertions(+), 54 deletions(-) rename stdlib/src/{utils => memory}/span.mojo (99%) rename stdlib/test/{utils => memory}/test_span.mojo (98%) diff --git a/docs/changelog.md b/docs/changelog.md index 788d1e9c95..d5ab2b45a1 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -363,7 +363,7 @@ what we publish. `String.write`. Here's an example of using all the changes: ```mojo - from utils import Span + from memory import Span @value struct NewString(Writer, Writable): @@ -582,6 +582,8 @@ what we publish. if 1 in x: print("1 in x") +- `Span` has moved from the `utils` module to the `memory` module. + ### ❌ Removed - The `UnsafePointer.bitcast` overload for `DType` has been removed. Wrap your diff --git a/stdlib/src/builtin/_format_float.mojo b/stdlib/src/builtin/_format_float.mojo index 4c5fc6797e..95d7e8a30e 100644 --- a/stdlib/src/builtin/_format_float.mojo +++ b/stdlib/src/builtin/_format_float.mojo @@ -28,9 +28,9 @@ from math import log2 from sys.info import sizeof from builtin.io import _printf -from memory import bitcast +from memory import bitcast, Span -from utils import Span, StaticTuple +from utils import StaticTuple from utils.numerics import FPUtils, isinf, isnan diff --git a/stdlib/src/builtin/debug_assert.mojo b/stdlib/src/builtin/debug_assert.mojo index 4d0f1bb23a..e66c968189 100644 --- a/stdlib/src/builtin/debug_assert.mojo +++ b/stdlib/src/builtin/debug_assert.mojo @@ -23,9 +23,8 @@ from sys.ffi import c_char, c_size_t, c_uint, external_call from sys.param_env import env_get_string from builtin._location import __call_location, _SourceLocation -from memory import UnsafePointer +from memory import UnsafePointer, Span -from utils import Span from utils.write import ( _ArgBytes, _WriteBufferHeap, diff --git a/stdlib/src/builtin/file.mojo b/stdlib/src/builtin/file.mojo index 823cbf9348..f5f4e6e5f6 100644 --- a/stdlib/src/builtin/file.mojo +++ b/stdlib/src/builtin/file.mojo @@ -35,9 +35,9 @@ from os import PathLike, abort from sys import external_call, sizeof from sys.ffi import OpaquePointer -from memory import AddressSpace, UnsafePointer +from memory import AddressSpace, UnsafePointer, Span -from utils import Span, StringRef, StringSlice, write_buffered +from utils import StringRef, StringSlice, write_buffered @register_passable diff --git a/stdlib/src/builtin/file_descriptor.mojo b/stdlib/src/builtin/file_descriptor.mojo index 8f7709d027..fef115e471 100644 --- a/stdlib/src/builtin/file_descriptor.mojo +++ b/stdlib/src/builtin/file_descriptor.mojo @@ -27,9 +27,7 @@ from sys.ffi import external_call from sys.info import is_gpu from builtin.io import _printf -from memory import UnsafePointer - -from utils import Span +from memory import UnsafePointer, Span @value diff --git a/stdlib/src/builtin/io.mojo b/stdlib/src/builtin/io.mojo index c0b55f993e..bb15718f20 100644 --- a/stdlib/src/builtin/io.mojo +++ b/stdlib/src/builtin/io.mojo @@ -33,7 +33,6 @@ from builtin.file_descriptor import FileDescriptor from memory import UnsafePointer, memcpy from utils import ( - Span, StaticString, StringRef, StringSlice, diff --git a/stdlib/src/builtin/reversed.mojo b/stdlib/src/builtin/reversed.mojo index e01947a3fb..9e1d778299 100644 --- a/stdlib/src/builtin/reversed.mojo +++ b/stdlib/src/builtin/reversed.mojo @@ -19,7 +19,7 @@ from collections import Deque, Dict from collections.deque import _DequeIter from collections.dict import _DictEntryIter, _DictKeyIter, _DictValueIter from collections.list import _ListIter -from utils.span import Span, _SpanIter +from memory.span import Span, _SpanIter from .range import _StridedRange diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 350eda13d0..2471fbf58a 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -50,9 +50,9 @@ from builtin.dtype import _uint_type_of_width from builtin.format_int import _try_write_int from builtin.io import _snprintf from documentation import doc_private -from memory import UnsafePointer, bitcast +from memory import UnsafePointer, bitcast, Span -from utils import IndexList, Span, StaticTuple, StringSlice +from utils import IndexList, StaticTuple, StringSlice from utils._visualizers import lldb_formatter_wrapping_type from utils.numerics import FPUtils from utils.numerics import isnan as _isnan diff --git a/stdlib/src/builtin/sort.mojo b/stdlib/src/builtin/sort.mojo index 78447a82fb..23429d9b4f 100644 --- a/stdlib/src/builtin/sort.mojo +++ b/stdlib/src/builtin/sort.mojo @@ -20,9 +20,7 @@ from math import ceil from sys import bitwidthof from bit import count_leading_zeros -from memory import UnsafePointer - -from utils import Span +from memory import UnsafePointer, Span # ===-----------------------------------------------------------------------===# # sort diff --git a/stdlib/src/builtin/string_literal.mojo b/stdlib/src/builtin/string_literal.mojo index 7b1598b481..377173470f 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/stdlib/src/builtin/string_literal.mojo @@ -19,9 +19,9 @@ from collections import List from hashlib._hasher import _HashableWithHasher, _Hasher from sys.ffi import c_char -from memory import UnsafePointer, memcpy +from memory import UnsafePointer, memcpy, Span -from utils import Span, StaticString, StringRef, StringSlice, Writable, Writer +from utils import StaticString, StringRef, StringSlice, Writable, Writer from utils._visualizers import lldb_formatter_wrapping_type from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry from utils.string_slice import _StringSliceIter, _to_string_list diff --git a/stdlib/src/collections/list.mojo b/stdlib/src/collections/list.mojo index 033ceeb464..13ee261638 100644 --- a/stdlib/src/collections/list.mojo +++ b/stdlib/src/collections/list.mojo @@ -24,9 +24,7 @@ from os import abort from sys import sizeof from sys.intrinsics import _type_is_eq -from memory import Pointer, UnsafePointer, memcpy - -from utils import Span +from memory import Pointer, UnsafePointer, memcpy, Span from .optional import Optional diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index 47f06707c2..90ed9b5cd1 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -23,12 +23,11 @@ from sys.ffi import c_char from sys.intrinsics import _type_is_eq from bit import count_leading_zeros -from memory import UnsafePointer, memcmp, memcpy +from memory import UnsafePointer, memcmp, memcpy, Span from python import PythonObject from utils import ( IndexList, - Span, StaticString, StringRef, StringSlice, diff --git a/stdlib/src/math/math.mojo b/stdlib/src/math/math.mojo index 7b998c7220..9d5f53e0e4 100644 --- a/stdlib/src/math/math.mojo +++ b/stdlib/src/math/math.mojo @@ -36,9 +36,8 @@ from sys.info import _current_arch from bit import count_trailing_zeros from builtin.dtype import _integral_type_of from builtin.simd import _modf, _simd_apply -from memory import UnsafePointer +from memory import UnsafePointer, Span -from utils import Span from utils.index import IndexList from utils.numerics import FPUtils, isnan, nan from utils.static_tuple import StaticTuple diff --git a/stdlib/src/memory/__init__.mojo b/stdlib/src/memory/__init__.mojo index b2faf4890a..2717a5127a 100644 --- a/stdlib/src/memory/__init__.mojo +++ b/stdlib/src/memory/__init__.mojo @@ -16,5 +16,6 @@ from .arc import ArcPointer from .memory import memcmp, memcpy, memset, memset_zero, stack_allocation from .owned_pointer import OwnedPointer from .pointer import AddressSpace, Pointer +from .span import AsBytes, Span from .unsafe import bitcast, pack_bits from .unsafe_pointer import UnsafePointer diff --git a/stdlib/src/utils/span.mojo b/stdlib/src/memory/span.mojo similarity index 99% rename from stdlib/src/utils/span.mojo rename to stdlib/src/memory/span.mojo index 5aa2fb4cf7..cc5ebbb298 100644 --- a/stdlib/src/utils/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -13,10 +13,10 @@ """Implements the Span type. -You can import these APIs from the `utils.span` module. For example: +You can import these APIs from the `memory` module. For example: ```mojo -from utils import Span +from memory import Span ``` """ diff --git a/stdlib/src/os/path/path.mojo b/stdlib/src/os/path/path.mojo index 64edffce5e..4e65dfbf34 100644 --- a/stdlib/src/os/path/path.mojo +++ b/stdlib/src/os/path/path.mojo @@ -24,7 +24,8 @@ from pwd import getpwuid from stat import S_ISDIR, S_ISLNK, S_ISREG from sys import has_neon, os_is_linux, os_is_macos, os_is_windows -from utils import Span, StringSlice +from memory import Span +from utils import StringSlice from .. import PathLike from .._linux_aarch64 import _lstat as _lstat_linux_arm diff --git a/stdlib/src/prelude/__init__.mojo b/stdlib/src/prelude/__init__.mojo index 5551b826ee..3cb066f0d4 100644 --- a/stdlib/src/prelude/__init__.mojo +++ b/stdlib/src/prelude/__init__.mojo @@ -136,4 +136,5 @@ from builtin.value import ( from documentation import doc_private from memory import AddressSpace, Pointer -from utils import AsBytes, Writable, Writer +from memory.span import AsBytes +from utils import Writable, Writer diff --git a/stdlib/src/tempfile/tempfile.mojo b/stdlib/src/tempfile/tempfile.mojo index 509c234ac9..48ccb1ddcd 100644 --- a/stdlib/src/tempfile/tempfile.mojo +++ b/stdlib/src/tempfile/tempfile.mojo @@ -24,7 +24,8 @@ import sys from collections import List, Optional from pathlib import Path -from utils import Span, write_buffered +from memory import Span +from utils import write_buffered alias TMP_MAX = 10_000 diff --git a/stdlib/src/utils/__init__.mojo b/stdlib/src/utils/__init__.mojo index 0f3b95ced0..fa6129cc1c 100644 --- a/stdlib/src/utils/__init__.mojo +++ b/stdlib/src/utils/__init__.mojo @@ -16,7 +16,6 @@ from .index import Index, IndexList, product from .inline_string import InlineString from .lock import BlockingScopedLock, BlockingSpinLock, SpinWaiter from .loop import unroll -from .span import AsBytes, Span from .static_tuple import StaticTuple from .string_slice import StaticString, StringSlice from .stringref import StringRef diff --git a/stdlib/src/utils/_utf8_validation.mojo b/stdlib/src/utils/_utf8_validation.mojo index e7ca5a5e3b..eb514733ca 100644 --- a/stdlib/src/utils/_utf8_validation.mojo +++ b/stdlib/src/utils/_utf8_validation.mojo @@ -28,7 +28,7 @@ https://github.com/simdutf/SimdUnicode/blob/main/src/UTF8.cs from base64._b64encode import _sub_with_saturation from sys.intrinsics import llvm_intrinsic -from memory import UnsafePointer +from memory import UnsafePointer, Span alias TOO_SHORT: UInt8 = 1 << 0 alias TOO_LONG: UInt8 = 1 << 1 diff --git a/stdlib/src/utils/inline_string.mojo b/stdlib/src/utils/inline_string.mojo index add0e6c7cc..8c6cfb3166 100644 --- a/stdlib/src/utils/inline_string.mojo +++ b/stdlib/src/utils/inline_string.mojo @@ -19,7 +19,7 @@ from collections import InlineArray, Optional from os import abort from sys import sizeof -from memory import UnsafePointer, memcpy +from memory import UnsafePointer, memcpy, Span from utils import StringSlice, Variant diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index b6f9daa45a..504b058954 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -27,10 +27,9 @@ from sys import bitwidthof, simdwidthof from sys.intrinsics import unlikely from bit import count_leading_zeros -from memory import UnsafePointer, memcmp, memcpy +from memory import UnsafePointer, memcmp, memcpy, Span from memory.memory import _memcmp_impl_unconstrained -from utils import Span from utils.format import _CurlyEntryFormattable, _FormatCurlyEntry from ._utf8_validation import _is_valid_utf8 diff --git a/stdlib/src/utils/stringref.mojo b/stdlib/src/utils/stringref.mojo index eaf6a285e3..75e864b405 100644 --- a/stdlib/src/utils/stringref.mojo +++ b/stdlib/src/utils/stringref.mojo @@ -20,7 +20,7 @@ from sys.ffi import c_char from bit import count_trailing_zeros from builtin.dtype import _uint_type_of_width -from memory import UnsafePointer, memcmp, pack_bits +from memory import UnsafePointer, memcmp, pack_bits, Span from memory.memory import _memcmp_impl_unconstrained from utils import StringSlice diff --git a/stdlib/src/utils/write.mojo b/stdlib/src/utils/write.mojo index 4d53f23afd..6d68951b9b 100644 --- a/stdlib/src/utils/write.mojo +++ b/stdlib/src/utils/write.mojo @@ -15,10 +15,9 @@ from collections import InlineArray from sys.info import is_gpu -from builtin.io import _printf -from memory import UnsafePointer, memcpy +from memory import UnsafePointer, memcpy, Span -from utils import Span, StaticString +from utils import StaticString # ===-----------------------------------------------------------------------===# @@ -36,7 +35,7 @@ trait Writer: Example: ```mojo - from utils import Span + from memory import Span @value struct NewString(Writer, Writable): diff --git a/stdlib/test/builtin/test_sort_issue_1018.mojo b/stdlib/test/builtin/test_sort_issue_1018.mojo index e8cfb4e1f0..af50f5b896 100644 --- a/stdlib/test/builtin/test_sort_issue_1018.mojo +++ b/stdlib/test/builtin/test_sort_issue_1018.mojo @@ -15,9 +15,7 @@ from random import rand -from memory import UnsafePointer - -from utils import Span +from memory import UnsafePointer, Span fn sort_test[D: DType, name: StringLiteral](size: Int, max: Int) raises: diff --git a/stdlib/test/collections/test_list.mojo b/stdlib/test/collections/test_list.mojo index cd173fc66c..1def6849ea 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/stdlib/test/collections/test_list.mojo @@ -15,12 +15,10 @@ from collections import List from sys.info import sizeof -from memory import UnsafePointer +from memory import UnsafePointer, Span from test_utils import CopyCounter, MoveCounter from testing import assert_equal, assert_false, assert_raises, assert_true -from utils import Span - def test_mojo_issue_698(): var list = List[Float64]() diff --git a/stdlib/test/hashlib/test_ahash.mojo b/stdlib/test/hashlib/test_ahash.mojo index e696b32c76..4545e947cb 100644 --- a/stdlib/test/hashlib/test_ahash.mojo +++ b/stdlib/test/hashlib/test_ahash.mojo @@ -19,11 +19,9 @@ from time import now from bit import pop_count from builtin._location import __call_location -from memory import memset_zero, stack_allocation +from memory import memset_zero, stack_allocation, Span from testing import assert_equal, assert_not_equal, assert_true -from utils import Span - # Source: https://www.101languages.net/arabic/most-common-arabic-words/ alias words_ar = """ لا, من, هذا, أن, في, أنا, على, ما, هل, diff --git a/stdlib/test/utils/test_span.mojo b/stdlib/test/memory/test_span.mojo similarity index 98% rename from stdlib/test/utils/test_span.mojo rename to stdlib/test/memory/test_span.mojo index a666788354..b8bde201e9 100644 --- a/stdlib/test/utils/test_span.mojo +++ b/stdlib/test/memory/test_span.mojo @@ -14,11 +14,9 @@ from collections import InlineArray, List -from memory import UnsafePointer +from memory import UnsafePointer, Span from testing import assert_equal, assert_true -from utils import Span - def test_span_list_int(): var l = List[Int](1, 2, 3, 4, 5, 6, 7) diff --git a/stdlib/test/utils/test_string_slice.mojo b/stdlib/test/utils/test_string_slice.mojo index 7ef357692b..dfeb37b12f 100644 --- a/stdlib/test/utils/test_string_slice.mojo +++ b/stdlib/test/utils/test_string_slice.mojo @@ -14,7 +14,8 @@ from testing import assert_equal, assert_false, assert_true -from utils import Span, StringSlice +from memory import Span +from utils import StringSlice from utils._utf8_validation import _is_valid_utf8 from utils.string_slice import _count_utf8_continuation_bytes From daef3ce726ea0ad8ac022c3ee900f486b45afcd4 Mon Sep 17 00:00:00 2001 From: Austin Doolittle Date: Thu, 5 Dec 2024 08:52:40 -0800 Subject: [PATCH 097/119] [******] Extend math.max to support boolean Extends our max function to support boolean values MODULAR_ORIG_COMMIT_REV_ID: 51703fa8024d127eadd538055fee920053aafe11 --- stdlib/src/builtin/math.mojo | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/stdlib/src/builtin/math.mojo b/stdlib/src/builtin/math.mojo index 7293e16db2..428407f857 100644 --- a/stdlib/src/builtin/math.mojo +++ b/stdlib/src/builtin/math.mojo @@ -182,7 +182,7 @@ fn max(x: SIMD, y: __type_of(x), /) -> __type_of(x): corresponding elements in x and y. Constraints: - The type of the inputs must be numeric. + The type of the inputs must be numeric or boolean. Args: x: First SIMD vector. @@ -191,8 +191,16 @@ fn max(x: SIMD, y: __type_of(x), /) -> __type_of(x): Returns: A SIMD vector containing the elementwise maximum of x and y. """ - constrained[x.type.is_numeric(), "the SIMD type must be numeric"]() - return __mlir_op.`pop.max`(x.value, y.value) + + @parameter + if x.type is DType.bool: + return max(x.cast[DType.uint8](), y.cast[DType.uint8]()).cast[x.type]() + else: + constrained[ + x.type.is_numeric(), "the SIMD type must be numeric or boolean" + ]() + + return __mlir_op.`pop.max`(x.value, y.value) # ===----------------------------------------------------------------------=== # From 71b098fdd818724b0a175b9479dd11d8e5d96154 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Thu, 5 Dec 2024 13:47:55 -0600 Subject: [PATCH 098/119] [stdlib] cleanup: Remove `_lit_origin_union`; use `__origin_of(a, b)` instead This is a low-level operation that was only used in one place in practice. With the recent change to support using `__origin_of(a, b)` as a way to form origin unions, `_lit_origin_union` is no longer strictly necessary, so let's remove it. MODULAR_ORIG_COMMIT_REV_ID: 3128b8776cea534b0b58525368f2865805b57237 --- stdlib/src/builtin/builtin_list.mojo | 31 ++++++---------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/stdlib/src/builtin/builtin_list.mojo b/stdlib/src/builtin/builtin_list.mojo index d736c55aa6..e74b93cad3 100644 --- a/stdlib/src/builtin/builtin_list.mojo +++ b/stdlib/src/builtin/builtin_list.mojo @@ -265,24 +265,6 @@ struct _VariadicListMemIter[ return len(self.src[]) - self.index -# Helper to compute the union of two origins: -# TODO: parametric aliases would be nice. -struct _lit_origin_union[ - is_mutable: Bool, //, - a: Origin[is_mutable], - b: Origin[is_mutable], -]: - alias result = __mlir_attr[ - `#lit.origin.union<`, - a._mlir_origin, - `,`, - b._mlir_origin, - `> : !lit.origin<`, - is_mutable.value, - `>`, - ] - - struct VariadicListMem[ elt_is_mutable: Bool, //, element_type: AnyType, @@ -424,13 +406,12 @@ struct VariadicListMem[ fn __getitem__( self, idx: Int ) -> ref [ - _lit_origin_union[ - origin, - # cast mutability of self to match the mutability of the element, - # since that is what we want to use in the ultimate reference and - # the union overall doesn't matter. - Origin[elt_is_mutable].cast_from[__origin_of(self)].result, - ].result + # cast mutability of self to match the mutability of the element, + # since that is what we want to use in the ultimate reference and + # the union overall doesn't matter. + Origin[elt_is_mutable] + .cast_from[__origin_of(origin, self)] + .result ] element_type: """Gets a single element on the variadic list. From 760b991898e4efaf75366a9986d17486d886f021 Mon Sep 17 00:00:00 2001 From: Lukas Hermann <1734032+lsh@users.noreply.github.com> Date: Thu, 5 Dec 2024 17:42:27 -0500 Subject: [PATCH 099/119] [stdlib] Revert negative step slicing on Span. (#52196) MODULAR_ORIG_COMMIT_REV_ID: 0a0c51d90464c4cceeda1896f20f16e757cfd2bf --- stdlib/src/memory/span.mojo | 13 +++---------- stdlib/test/memory/test_span.mojo | 13 ------------- 2 files changed, 3 insertions(+), 23 deletions(-) diff --git a/stdlib/src/memory/span.mojo b/stdlib/src/memory/span.mojo index cc5ebbb298..497a084c88 100644 --- a/stdlib/src/memory/span.mojo +++ b/stdlib/src/memory/span.mojo @@ -205,16 +205,9 @@ struct Span[ var step: Int start, end, step = slc.indices(len(self)) - if step < 0: - step = -step - var new_len = (start - end + step - 1) // step - var buff = UnsafePointer[T].alloc(new_len) - i = 0 - while start > end: - buff[i] = self._data[start] - start -= step - i += 1 - return Span[T, origin](ptr=buff, length=new_len) + debug_assert( + step == 1, "Slice must be within bounds and step must be 1" + ) var res = Self( ptr=(self._data + start), length=len(range(start, end, step)) diff --git a/stdlib/test/memory/test_span.mojo b/stdlib/test/memory/test_span.mojo index b8bde201e9..92c49210c6 100644 --- a/stdlib/test/memory/test_span.mojo +++ b/stdlib/test/memory/test_span.mojo @@ -136,19 +136,6 @@ def test_span_slice(): assert_equal(res[0], 2) assert_equal(res[1], 3) assert_equal(res[2], 4) - # Test slicing with negative step - res = s[1::-1] - assert_equal(res[0], 2) - assert_equal(res[1], 1) - res.unsafe_ptr().free() - res = s[2:1:-1] - assert_equal(res[0], 3) - assert_equal(len(res), 1) - res.unsafe_ptr().free() - res = s[5:1:-2] - assert_equal(res[0], 5) - assert_equal(res[1], 3) - res.unsafe_ptr().free() def test_copy_from(): From 6acac62142cd570cbda3e9ed667acc74ff5f34d7 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Thu, 5 Dec 2024 17:26:09 -0600 Subject: [PATCH 100/119] [stdlib] cleanup: Remove `Stringlike` in favor of using `StringSlice` The requirements of `Stringlike` are largely the same as what `StringSlice` provides. So it's simpler and avoids extra monomorphizations if we make this code concrete instead of generic on `Stringlike`. `StringSlice` is already the common denominator of all the string types. MODULAR_ORIG_COMMIT_REV_ID: cf12cfa3455f00b1e0f06431856086a0e3a4f6bc --- stdlib/src/utils/format.mojo | 18 +++++++----------- stdlib/src/utils/string_slice.mojo | 24 ------------------------ 2 files changed, 7 insertions(+), 35 deletions(-) diff --git a/stdlib/src/utils/format.mojo b/stdlib/src/utils/format.mojo index 5c1dc2cf8b..752a34898d 100644 --- a/stdlib/src/utils/format.mojo +++ b/stdlib/src/utils/format.mojo @@ -16,8 +16,6 @@ from collections import Optional from memory import UnsafePointer -from utils.string_slice import Stringlike - # TODO: _FormatCurlyEntry and _FormatSpec should be public in the future for # people who want to write their own templating engines. This is not yet done # because the implementation is incomplete and we are missing crucial features. @@ -36,7 +34,7 @@ from utils.string_slice import Stringlike # a trait that all format specifications conform to) @value struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): - """The struct that handles `Stringlike` formatting by curly braces entries. + """The struct that handles string formatting by curly braces entries. This is internal for the types: `String`, `StringLiteral` and `StringSlice`. """ @@ -141,7 +139,7 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): return self.field.isa[Int]() @staticmethod - fn format[T: Stringlike](fmt_src: T, args: Self._args_t) raises -> String: + fn format(fmt_src: StringSlice, args: Self._args_t) raises -> String: """Format the entries. Args: @@ -177,9 +175,9 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): return res^ @staticmethod - fn _create_entries[ - T: Stringlike - ](fmt_src: T, len_pos_args: Int) raises -> (List[Self], Int): + fn _create_entries( + fmt_src: StringSlice, len_pos_args: Int + ) raises -> (List[Self], Int): """Returns a list of entries and its total estimated entry byte width. """ var manual_indexing_count = 0 @@ -264,11 +262,9 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): raise Error(l_err) return entries^, total_estimated_entry_byte_width - fn _handle_field_and_break[ - T: Stringlike - ]( + fn _handle_field_and_break( mut self, - fmt_src: T, + fmt_src: StringSlice, len_pos_args: Int, i: Int, start_value: Int, diff --git a/stdlib/src/utils/string_slice.mojo b/stdlib/src/utils/string_slice.mojo index 504b058954..e572747d4e 100644 --- a/stdlib/src/utils/string_slice.mojo +++ b/stdlib/src/utils/string_slice.mojo @@ -1122,30 +1122,6 @@ struct StringSlice[is_mutable: Bool, //, origin: Origin[is_mutable]]( # ===-----------------------------------------------------------------------===# -trait Stringlike: - """Trait intended to be used only with `String`, `StringLiteral` and - `StringSlice`.""" - - fn byte_length(self) -> Int: - """Get the string length in bytes. - - Returns: - The length of this string in bytes. - - Notes: - This does not include the trailing null terminator in the count. - """ - ... - - fn unsafe_ptr(self) -> UnsafePointer[UInt8]: - """Get raw pointer to the underlying data. - - Returns: - The raw pointer to the data. - """ - ... - - fn _to_string_list[ T: CollectionElement, # TODO(MOCO-1446): Make `T` parameter inferred len_fn: fn (T) -> Int, From ccd2e8116545da11771b2bf0f65ac8a315e0ef9f Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Fri, 6 Dec 2024 05:51:58 -0800 Subject: [PATCH 101/119] [******][GPU] Rename has_nvidia/amd to include accelerator MODULAR_ORIG_COMMIT_REV_ID: 32397c88a4cd6f805e69ec1c5383564c9c76deb3 --- stdlib/src/sys/__init__.mojo | 4 ++-- stdlib/src/sys/info.mojo | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/stdlib/src/sys/__init__.mojo b/stdlib/src/sys/__init__.mojo index baf2af6fa7..e469d501b5 100644 --- a/stdlib/src/sys/__init__.mojo +++ b/stdlib/src/sys/__init__.mojo @@ -19,7 +19,7 @@ from .ffi import DEFAULT_RTLD, RTLD, DLHandle, external_call from .info import ( alignof, bitwidthof, - has_amd_gpu, + has_amd_gpu_accelerator, has_avx, has_avx2, has_avx512f, @@ -28,7 +28,7 @@ from .info import ( has_neon, has_neon_int8_dotprod, has_neon_int8_matmul, - has_nvidia_gpu, + has_nvidia_gpu_accelerator, has_sse4, has_vnni, is_amd_gpu, diff --git a/stdlib/src/sys/info.mojo b/stdlib/src/sys/info.mojo index ccd39c7ee2..3cb4b2787a 100644 --- a/stdlib/src/sys/info.mojo +++ b/stdlib/src/sys/info.mojo @@ -870,7 +870,7 @@ fn _macos_version() raises -> Tuple[Int, Int, Int]: @always_inline("nodebug") -fn has_amd_gpu() -> Bool: +fn has_amd_gpu_accelerator() -> Bool: """Returns True if the host system has an AMD GPU and False otherwise. Returns: @@ -880,7 +880,7 @@ fn has_amd_gpu() -> Bool: @always_inline("nodebug") -fn has_nvidia_gpu() -> Bool: +fn has_nvidia_gpu_accelerator() -> Bool: """Returns True if the host system has an NVIDIA GPU and False otherwise. Returns: From 1bebfaf99d20d4e201baa76006d08746417f02b7 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Fri, 6 Dec 2024 06:02:03 -0800 Subject: [PATCH 102/119] [Stdlib] Remove the time.now function MODULAR_ORIG_COMMIT_REV_ID: 189e758f6f3a147fad07afd382c09146a470a168 --- examples/reduce.mojo | 1 - stdlib/src/time/__init__.mojo | 1 - stdlib/src/time/time.mojo | 22 +--------------------- stdlib/test/hashlib/test_ahash.mojo | 1 - stdlib/test/time/test_time.mojo | 2 -- 5 files changed, 1 insertion(+), 26 deletions(-) diff --git a/examples/reduce.mojo b/examples/reduce.mojo index 8e213c6b86..9babfd91a0 100644 --- a/examples/reduce.mojo +++ b/examples/reduce.mojo @@ -17,7 +17,6 @@ # Reductions and scans are common algorithm patterns in parallel computing. from random import rand -from time import now from algorithm import sum from benchmark import Unit, benchmark, keep diff --git a/stdlib/src/time/__init__.mojo b/stdlib/src/time/__init__.mojo index 5d01e75fdf..6e5097653a 100644 --- a/stdlib/src/time/__init__.mojo +++ b/stdlib/src/time/__init__.mojo @@ -14,7 +14,6 @@ from .time import ( monotonic, - now, perf_counter, perf_counter_ns, sleep, diff --git a/stdlib/src/time/time.mojo b/stdlib/src/time/time.mojo index 7364d85324..0167c26548 100644 --- a/stdlib/src/time/time.mojo +++ b/stdlib/src/time/time.mojo @@ -15,7 +15,7 @@ You can import these APIs from the `time` package. For example: ```mojo -from time import now +from time import perf_counter_ns ``` """ @@ -215,26 +215,6 @@ fn perf_counter_ns() -> UInt: return _monotonic_nanoseconds() -# ===-----------------------------------------------------------------------===# -# now -# ===-----------------------------------------------------------------------===# - - -@always_inline -fn now() -> UInt: - """Deprecated: Please use time.perf_counter_ns instead. - - Returns the current monotonic time time in nanoseconds. This function - queries the current platform's monotonic clock, making it useful for - measuring time differences, but the significance of the returned value - varies depending on the underlying implementation. - - Returns: - The current time in ns. - """ - return perf_counter_ns() - - # ===-----------------------------------------------------------------------===# # monotonic # ===-----------------------------------------------------------------------===# diff --git a/stdlib/test/hashlib/test_ahash.mojo b/stdlib/test/hashlib/test_ahash.mojo index 4545e947cb..c9f01c3a14 100644 --- a/stdlib/test/hashlib/test_ahash.mojo +++ b/stdlib/test/hashlib/test_ahash.mojo @@ -15,7 +15,6 @@ from hashlib._ahash import AHasher from hashlib._hasher import _hash_with_hasher as hash from hashlib.hash import hash as old_hash -from time import now from bit import pop_count from builtin._location import __call_location diff --git a/stdlib/test/time/test_time.mojo b/stdlib/test/time/test_time.mojo index 342e453774..0148bfeeef 100644 --- a/stdlib/test/time/test_time.mojo +++ b/stdlib/test/time/test_time.mojo @@ -15,7 +15,6 @@ from sys import os_is_windows from time import ( monotonic, - now, perf_counter, perf_counter_ns, sleep, @@ -60,7 +59,6 @@ fn test_time() raises: assert_true(perf_counter() > 0) assert_true(perf_counter_ns() > 0) - assert_true(now() > 0) assert_true(monotonic() > 0) var t1 = time_function[time_me]() From ce50e8af79b2959711c0c76d29eb149db55502ed Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Fri, 6 Dec 2024 06:25:21 -0800 Subject: [PATCH 103/119] [Stdlib] Add new has_accelerator helper function, NFC MODULAR_ORIG_COMMIT_REV_ID: dc9c60cda00ff29c9b6dc11d8fbabdccd146953e --- stdlib/src/sys/__init__.mojo | 1 + stdlib/src/sys/info.mojo | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/stdlib/src/sys/__init__.mojo b/stdlib/src/sys/__init__.mojo index e469d501b5..b0777f5c6e 100644 --- a/stdlib/src/sys/__init__.mojo +++ b/stdlib/src/sys/__init__.mojo @@ -19,6 +19,7 @@ from .ffi import DEFAULT_RTLD, RTLD, DLHandle, external_call from .info import ( alignof, bitwidthof, + has_accelerator, has_amd_gpu_accelerator, has_avx, has_avx2, diff --git a/stdlib/src/sys/info.mojo b/stdlib/src/sys/info.mojo index 3cb4b2787a..ee149ca72a 100644 --- a/stdlib/src/sys/info.mojo +++ b/stdlib/src/sys/info.mojo @@ -869,6 +869,16 @@ fn _macos_version() raises -> Tuple[Int, Int, Int]: # ===-----------------------------------------------------------------------===# +@always_inline("nodebug") +fn has_accelerator() -> Bool: + """Returns True if the host system has an accelerator and False otherwise. + + Returns: + True if the host system has an accelerator. + """ + return _accelerator_arch() != "" + + @always_inline("nodebug") fn has_amd_gpu_accelerator() -> Bool: """Returns True if the host system has an AMD GPU and False otherwise. From fd5cd6e79d483025b2f7342572c4cbdfb5d79561 Mon Sep 17 00:00:00 2001 From: modularbot Date: Fri, 6 Dec 2024 17:36:42 +0000 Subject: [PATCH 104/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024120616 --- examples/life/magic.lock | 1513 +++++++++++++------------- examples/magic.lock | 1490 ++++++++++++-------------- examples/notebooks/magic.lock | 1886 +++++++++++++++------------------ examples/operators/magic.lock | 1501 ++++++++++++-------------- magic.lock | 1501 ++++++++++++-------------- 5 files changed, 3556 insertions(+), 4335 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index c962798beb..8a7706a5c8 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -29,7 +29,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -56,7 +56,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda @@ -69,7 +69,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-he02047a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda @@ -82,7 +82,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda @@ -90,7 +90,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -99,10 +99,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda @@ -138,15 +138,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -158,25 +158,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-256.9-h2774228_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -204,7 +204,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda @@ -218,7 +218,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -234,7 +234,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.7-h3ed165c_0.conda @@ -243,21 +243,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h08b1b5d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -277,11 +277,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda @@ -310,7 +310,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -337,7 +337,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fluidsynth-2.3.7-h4f58cef_0.conda @@ -350,7 +350,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.22.5-h0a1ffab_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda @@ -363,7 +363,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -371,7 +371,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda @@ -380,10 +380,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda @@ -419,15 +419,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -439,7 +439,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-256.9-hd54d049_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda @@ -447,17 +447,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -485,7 +485,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda @@ -499,7 +499,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -515,7 +515,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.7-h2a74887_0.conda @@ -524,21 +524,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-h680d130_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -558,11 +558,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h57736b2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2024.1-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda @@ -588,7 +588,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -613,7 +613,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fluidsynth-2.3.7-h80fea77_0.conda @@ -626,7 +626,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda @@ -639,24 +639,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda @@ -688,14 +688,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -704,24 +703,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda @@ -749,7 +748,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda @@ -762,7 +761,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -778,7 +777,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.7-hf9b8971_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda @@ -786,21 +785,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-hda0f12e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -814,11 +813,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda @@ -884,6 +880,7 @@ packages: depends: - python >=3.9 license: PSF-2.0 + license_family: PSF size: 19351 timestamp: 1733332029649 - kind: conda @@ -972,6 +969,7 @@ packages: - frozenlist >=1.1.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 13157 timestamp: 1733332198143 - kind: conda @@ -1801,13 +1799,12 @@ packages: timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h3b64406_4 - build_number: 4 + version: 1.11.458 + build: h3b64406_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - sha256: 10ce9c203d31229432421a841d8d135d3e942637571aae4bb2d3c7d5242e7f05 - md5: f9e46a4bb5a04cbca08355f166ce87c8 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e + md5: 9a8d3ba158ff8ea08e17de366c238706 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1820,17 +1817,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2722689 - timestamp: 1732812825640 + size: 2853609 + timestamp: 1733389337912 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h5558e3c_4 - build_number: 4 + version: 1.11.458 + build: h5558e3c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - sha256: 4881f7b4f5e3c797332cffb990df246a422346b220a9c16014f274beb2a276f5 - md5: ba7abdc93b0ade11d774b47aaab84737 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 + md5: b1919becd17fe224aacf708114231fda depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1844,17 +1840,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2945541 - timestamp: 1732812288219 + size: 3059100 + timestamp: 1733388777418 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h7085e57_4 - build_number: 4 + version: 1.11.458 + build: h7085e57_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - sha256: 0908a82e7c50c51d5ee0ca543dbe70cbe1963e6e8f80ffa58ea6d26e5c68251e - md5: feec198cb18a5e90aa36c97328567d63 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 + md5: 005e0cc687a2421a4ad493e5b7058abe depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1867,8 +1862,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2813856 - timestamp: 1732812337182 + size: 2903434 + timestamp: 1733388870289 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2791,13 +2786,13 @@ packages: timestamp: 1730967212801 - kind: conda name: fastapi - version: 0.115.5 - build: pyhff2d567_0 + version: 0.115.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - sha256: da2833cc2ea5789abc2a6899be02ba0a769386d4913ff182bd1a9458bea40c34 - md5: cfe0f8cd904ab19c36ba50eb5179ebe0 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: - email_validator >=2.0.0 - fastapi-cli >=0.0.5 @@ -2811,8 +2806,8 @@ packages: - uvicorn-standard >=0.12.0 license: MIT license_family: MIT - size: 73541 - timestamp: 1731452895466 + size: 73084 + timestamp: 1733362427885 - kind: conda name: fastapi-cli version: 0.0.5 @@ -3157,18 +3152,18 @@ packages: - kind: conda name: fsspec version: 2024.10.0 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 - md5: 816dbc4679a64e4417cd1385d661bb31 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 + md5: 906fe13095e734cb413b57a49116cdc8 depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 134745 - timestamp: 1729608972363 + size: 134726 + timestamp: 1733493445080 - kind: conda name: gettext version: 0.22.5 @@ -3631,12 +3626,13 @@ packages: - kind: conda name: httpx version: 0.28.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - sha256: cb7895446cd93091300accea6afbc8d9811a3c5899922ccfeeff97d9b55909dc - md5: 22878824a87f1af2ad48665f9d5bfcc8 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 + md5: 8a4a83ba566c6b5c718dd0531a362d01 depends: - anyio - certifi @@ -3645,8 +3641,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63183 - timestamp: 1732831049776 + size: 63203 + timestamp: 1733501478172 - kind: conda name: huggingface_hub version: 0.26.3 @@ -3821,24 +3817,25 @@ packages: - kind: conda name: jupyter_client version: 8.6.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 - md5: a14218cfb29662b4a19ceb04e93e298e + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-dateutil >=2.8.2 - pyzmq >=23.0 - tornado >=6.2 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 106055 - timestamp: 1726610805505 + size: 106342 + timestamp: 1733441040958 - kind: conda name: jupyter_core version: 5.7.2 @@ -4167,16 +4164,16 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h654e1bb_2_cpu - build_number: 2 + build: h5affd47_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - sha256: 925dcb034f36536eed21d9323f096bf2ebf1111d14c61e1ae0b90e5de131f1e1 - md5: e69934ff9dd8745fea8927028d1603ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 + md5: 3dc73b42851e6096542458eaf2c074ca depends: - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -4200,24 +4197,23 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5475725 - timestamp: 1732947802614 + size: 5487846 + timestamp: 1733450423101 - kind: conda name: libarrow version: 18.1.0 - build: hc7b0e1d_2_cpu - build_number: 2 + build: hb63acf4_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - sha256: 3201944d1f97b9207e566ccf388c8376bb2ce7e461534cda63a28975b6790901 - md5: 4a46bd0be8e7f56a217d26b79d290a0e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 + md5: d98a11c3ba32554873aeb6a071baceaa depends: - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -4242,26 +4238,25 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8026783 - timestamp: 1732950110265 + size: 8048003 + timestamp: 1733452700958 - kind: conda name: libarrow version: 18.1.0 - build: he15abb1_1_cpu - build_number: 1 + build: hcf3f2e3_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - sha256: afc81af2e533cc35295aebae4fb382e770310d9b1ac31837456b440d35c54cf7 - md5: bd3e35a6f3f869b4777488452f315008 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e + md5: 196823c7752608cb6b5d5a7a33b17410 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -4278,7 +4273,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<2.9.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4286,190 +4281,180 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 8780597 - timestamp: 1732863546099 + size: 8796519 + timestamp: 1733453489520 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 + build: h36004a0_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - sha256: 3de5719a7035baad7e665116dce7bb3d069f0c1916e163c553e2e491bbe8b614 - md5: 6197dcb930f6254e9b2fdc416be56b71 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 + md5: 6d8f74ac97166e09cdf02109ed9905ce depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 611272 - timestamp: 1732863586114 + size: 612773 + timestamp: 1733453636002 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - sha256: e6c8988d1d79163d6d13dda21f9e401f5df4b3af7e0d221718522c600894adcf - md5: 14fede66c995f3cf958797e9fb567e22 - depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 577510 - timestamp: 1732950190684 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - sha256: cfe32f1b0712b77d2c792a839fe4ea2790cabd99d47cd8e1b20ba2d3c8b113b2 - md5: 60351279d7dfd7c254c46aabf9aa35a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 + md5: f3a050129b5012bd5fc381693f6eb2cd depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 483362 - timestamp: 1732948000606 + size: 483753 + timestamp: 1733450627207 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - sha256: 7b3db3d5a7e411f8897e8d74403c1d871f3054300f5009c4bdf75da011bc3f42 - md5: 77501831a2aabbaabac55e8cb3b6900a + build: he2e0623_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a + md5: fa54002b982019ecc0e93cb4b2c493e9 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hb63acf4_3_cpu - libgcc >=13 - - libparquet 18.1.0 h6bd9018_1_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585458 - timestamp: 1732863686753 + size: 578323 + timestamp: 1733452783322 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - sha256: 53cdae2150c22ef9b5d6de8d0ee8ac52eeacc50fdfa2fa3ea644b52436d1eeb1 - md5: c54d83f012a40fef8a2dc4856e4340a0 + build: h36004a0_3_cpu + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 + md5: e9eac639d83b1c35f7743845b922d61a depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_2_cpu + - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 559143 - timestamp: 1732950272727 + size: 585416 + timestamp: 1733454137952 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - sha256: eeae9e8d382c482076f4739455b53f16851d7f99be219b6f96dd4e765132b446 - md5: b5fcaddabf47aa15e50feff072a55ada + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 + md5: 8c57e5a50f865a16cafd92f5a32c9faa depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu - libcxx >=18 - - libparquet 18.1.0 h5168bdf_2_cpu + - libparquet 18.1.0 h3a603ae_3_cpu license: Apache-2.0 - license_family: APACHE - size: 489769 - timestamp: 1732949732423 + size: 489900 + timestamp: 1733452479126 - kind: conda - name: libarrow-substrait + name: libarrow-dataset version: 18.1.0 - build: h14ec2bd_2_cpu - build_number: 2 + build: he2e0623_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda - sha256: e8923d62cfaadc4a8af1735e717fd4980cad693419e63aed04380566d9fd46df - md5: 4fd0103449cf40214fd348643aa78fff + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff + md5: 048f04da68a40e9e5e1e66ff9502b237 depends: + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libgcc >=13 + - libparquet 18.1.0 h553aec1_3_cpu + - libstdcxx >=13 + license: Apache-2.0 + size: 559844 + timestamp: 1733453065157 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: h4c1644f_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 + md5: 7ba2783c26a0008307e2a1e637c2930f + depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu - - libarrow-dataset 18.1.0 h5ad3122_2_cpu - - libgcc >=13 + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow-dataset 18.1.0 haafc02e_3_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 515352 - timestamp: 1732950311471 + size: 451428 + timestamp: 1733453012619 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h5c8f2c3_1_cpu - build_number: 1 + build: h56a123c_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda - sha256: e77a354bfc0ba7b04c856f1bb16e7b08950bcde54026087bafec46090380fcc1 - md5: 5d47bd2674afd104dbe2f2f3534594b0 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d + md5: 306bb541b83a83b66d5c1e6880302886 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu - - libarrow-dataset 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow-dataset 18.1.0 h36004a0_3_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 520681 - timestamp: 1732863726954 + size: 520740 + timestamp: 1733454379083 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h9b432b6_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda - sha256: 6dde802134bd2e78581eb838c049b2e7e378899706b471f7072222a6b1284b90 - md5: 49e7c0460532a73f34bd127fff009224 + build: hc52ba39_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 + md5: 7a8e305f1689687ed063bb4553c1a7a5 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu - - libarrow-dataset 18.1.0 h605b82c_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow-dataset 18.1.0 he2e0623_3_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 451127 - timestamp: 1732950194322 + size: 515638 + timestamp: 1733453200561 - kind: conda name: libasprintf version: 0.22.5 @@ -6193,86 +6178,77 @@ packages: - kind: conda name: liblzma version: 5.6.3 - build: h39f12f2_0 + build: h39f12f2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 - md5: faa0ab222b9d12a52a8ebc655c9236f3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 license: 0BSD - size: 98836 - timestamp: 1733321533638 + size: 99129 + timestamp: 1733407496073 - kind: conda name: liblzma version: 5.6.3 - build: h86ecc28_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f - md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 license: 0BSD - size: 124115 - timestamp: 1733323693681 + size: 124138 + timestamp: 1733409137214 - kind: conda name: liblzma version: 5.6.3 - build: hb9d3cd8_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 - md5: 137c535dddd880f844f33ed91b8abdba + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: 0BSD - size: 111223 - timestamp: 1733321312512 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 - md5: 89955d2470cbacea3d5e069d67c94f44 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD - size: 112941 - timestamp: 1733321552604 + size: 111132 + timestamp: 1733407410083 - kind: conda name: liblzma-devel version: 5.6.3 - build: h86ecc28_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 - md5: 27995ae8bc93eeb949315655daa19d3c + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_1.conda + sha256: 6e9ca2041f89c7df63d7ceba31a46b8f9ab28e88ce39f9f5c30b1fd0c629111c + md5: ca1606232471b17724ab99904cf90195 depends: - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 + - liblzma 5.6.3 h86ecc28_1 license: 0BSD - size: 376767 - timestamp: 1733323860026 + size: 376914 + timestamp: 1733409269260 - kind: conda name: liblzma-devel version: 5.6.3 - build: hb9d3cd8_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a - md5: 7069f4de645461447f1ab7736c94db26 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_1.conda + sha256: ca17f037a0a7137874597866a171166677e4812a9a8a853007f0f582e3ff6d1d + md5: cc4687e1814ed459f3bd6d8e05251ab2 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 + - liblzma 5.6.3 hb9d3cd8_1 license: 0BSD - size: 375452 - timestamp: 1733321322415 + size: 376794 + timestamp: 1733407421190 - kind: conda name: libmad version: 0.15.1b @@ -6552,61 +6528,58 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda - sha256: 83b8fa4a90e214fcd6018f890947666f055f79563fff2b7c3d5f37d894f3a000 - md5: ce205782960a580fa43cfcccca22ad8d + build: h3a603ae_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d + md5: 78d2f729e26788a3660cee9906f440e7 depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h5affd47_3_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1115906 - timestamp: 1732950250848 + size: 873697 + timestamp: 1733452286970 - kind: conda name: libparquet version: 18.1.0 - build: h5168bdf_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda - sha256: 454487d113974b923b4214a65aab780fd90c4914390d0b1f4640b1bf60537bff - md5: f995df7ee206617a3e858fd932d7bd2d + build: h553aec1_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b + md5: 46c6783e8b46449a9baabef57c69f30a depends: - - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 872333 - timestamp: 1732949558028 + size: 1116941 + timestamp: 1733452997475 - kind: conda name: libparquet version: 18.1.0 - build: h6bd9018_1_cpu - build_number: 1 + build: hbdb145b_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda - sha256: 0df119f4c1a2387d910e132c670b29ee5b29dd79384549de6f1a43067515c8ba - md5: 1054909202f86e38bbbb7ca1131b8471 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 + md5: cb249762e1e65941b559d436c60e520d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1203523 - timestamp: 1732863665743 + size: 1204740 + timestamp: 1733454014411 - kind: conda name: libpng version: 1.6.44 @@ -7119,86 +7092,70 @@ packages: - kind: conda name: libtiff version: 4.7.0 - build: he137b08_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 - md5: 63872517c98aa305da58a757c443698e + build: ha962b0a_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be + md5: 8e14b5225c593f099a21971568e6d7b4 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 + - libcxx >=18 - libdeflate >=1.22,<1.23.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - - libstdcxx >=13 + - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 428156 - timestamp: 1728232228989 + size: 370387 + timestamp: 1733443310502 - kind: conda name: libtiff version: 4.7.0 - build: hec21d91_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d - md5: 1f80061f5ba6956fcdc381f34618cd8d + build: hc4654cb_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 + md5: be54fb40ea32e8fe9dbaa94d4528b57e depends: + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - libdeflate >=1.22,<1.23.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 464938 - timestamp: 1728232266969 + size: 429018 + timestamp: 1733443013288 - kind: conda name: libtiff version: 4.7.0 - build: hfce79cd_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d - md5: b9abf45f7c64caf3303725f1aa0e9a4d + build: hca96517_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 + md5: 278dcef6d1ea28c04109c3f5dea126cb depends: - - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - - libcxx >=17 - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 366323 - timestamp: 1728232400072 -- kind: conda - name: libutf8proc - version: 2.8.0 - build: hf23e847_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb - md5: b1aa0faa95017bca11369bd080487ec4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 80852 - timestamp: 1732829699583 + size: 464857 + timestamp: 1733443105529 - kind: conda name: libutf8proc version: 2.9.0 @@ -7229,6 +7186,22 @@ packages: license_family: MIT size: 81526 timestamp: 1732868466862 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 81500 + timestamp: 1732868419835 - kind: conda name: libuuid version: 2.38.1 @@ -7476,58 +7449,61 @@ packages: - kind: conda name: libxml2 version: 2.13.5 - build: hb346dea_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda - sha256: 8c9d6a3a421ac5bf965af495d1b0a08c6fb2245ba156550bc064a7b4f8fc7bd8 - md5: c81a9f1118541aaa418ccb22190c817e + build: h178c5d8_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - icu >=75.1,<76.0a0 - - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 689626 - timestamp: 1731489608971 + size: 582898 + timestamp: 1733443841584 - kind: conda name: libxml2 version: 2.13.5 - build: hbbdcc80_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda - sha256: 936de9c0e91cb6f178c48ea14313cf6c79bdb1f474c785c117c41492b0407a98 - md5: 967d4a9dadd710415ee008d862a07c99 + build: h2e0c361_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - - __osx >=11.0 - icu >=75.1,<76.0a0 + - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 583082 - timestamp: 1731489765442 + size: 732155 + timestamp: 1733443825814 - kind: conda name: libxml2 version: 2.13.5 - build: hf4efe5d_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 - md5: 5650ac8a6ed680c032bdabe40ad19ee0 + build: h8d12d68_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda + sha256: c3b05bdc40d27a9249f0bb60f3f71718f94104b8bcd200163a6c9d4ade7aa052 + md5: 1a21e49e190d1ffe58531a81b6e400e1 depends: + - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 734453 - timestamp: 1731489860751 + size: 690589 + timestamp: 1733443667823 - kind: conda name: libzlib version: 1.3.1 @@ -7582,20 +7558,20 @@ packages: timestamp: 1727963148474 - kind: conda name: llvm-openmp - version: 19.1.4 + version: 19.1.5 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 + md5: f2c2e187a1d2637d282e34dc92021a70 depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.5|19.1.5.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281554 - timestamp: 1732102484807 + size: 281120 + timestamp: 1733376089600 - kind: conda name: lz4-c version: 1.9.4 @@ -7718,76 +7694,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f - md5: 09947b7aa3a3c35b413b7c0d118126e3 - depends: - - max-core ==24.6.0.dev2024120416 release - - max-python >=24.6.0.dev2024120416,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120416 release - - mblack ==24.6.0.dev2024120416 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 + md5: 562c33b920321a676acb3fc49c2ddb11 + depends: + - max-core ==24.6.0.dev2024120616 release + - max-python >=24.6.0.dev2024120616,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120616 release license: LicenseRef-Modular-Proprietary - size: 9925 - timestamp: 1733332193356 + size: 9919 + timestamp: 1733502206770 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef - md5: 43a976936171480fe7dbc2fed1224312 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 + md5: 88e589273bf2ae77f80f879adacd234a depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245904359 - timestamp: 1733332193354 + size: 247418489 + timestamp: 1733502146971 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 - md5: 15cac805514c6a381a9a50ee3a86de25 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b + md5: 5243c455575512a6061067e3b5d67e0f depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249618446 - timestamp: 1733332472125 + size: 251333959 + timestamp: 1733502206769 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 - md5: c27c6f67be3abffbf559bfd50852b493 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 + md5: 99f131bbf681d02fe75d5f9e7dc0ab57 depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 210212276 - timestamp: 1733332258535 + size: 211890615 + timestamp: 1733502249826 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 - md5: 78af7733b4858c1bd882279a45e98795 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b + md5: aa4c20f7f7f821d9b736c319b9b9d89a depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -7809,18 +7785,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122878721 - timestamp: 1733332193368 + size: 123619079 + timestamp: 1733502146987 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 - md5: 55ff43da6401cdd96073ae044b428afd + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f + md5: df25189682c30a5259b1ffada686cef2 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -7842,18 +7818,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126526187 - timestamp: 1733332472138 + size: 127361426 + timestamp: 1733502206780 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 - md5: b84b205dbce4660cdea5b0e3cda227e9 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b + md5: f03ead2bca51c2cd060703fe64ee40da depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -7875,17 +7851,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 111629688 - timestamp: 1733332258538 + size: 112339857 + timestamp: 1733502249829 - kind: conda name: mblack - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda - sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 - md5: 85c700946ce4a5ce8d11f5ee66b477cf + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 + md5: dec7dbfe11abd34b171d290d38adea24 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7895,8 +7871,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130641 - timestamp: 1733332193362 + size: 130704 + timestamp: 1733502206776 - kind: conda name: mdurl version: 0.1.2 @@ -7915,21 +7891,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 - md5: 411a1d159867c56043991824d1ee88d9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 + md5: 1420c233cedc5e554c728d5f8b2b1657 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22946 - timestamp: 1733332193363 + size: 11371 + timestamp: 1733502206776 - kind: conda name: mpg123 version: 1.32.9 @@ -8959,58 +8935,55 @@ packages: timestamp: 1733327434163 - kind: conda name: propcache - version: 0.2.0 - build: py312h024a12e_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - sha256: 0f3a04675c6c473398f0aaa95c259e0a085d5ec106b4fa89a7efeb7cc73d5dd2 - md5: 6693e523bc43c38508efe14ab3374f0c + version: 0.2.1 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 + md5: 55d5742a696d7da1c1262e99b6217ceb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 47796 - timestamp: 1728545963127 + size: 52747 + timestamp: 1733391916349 - kind: conda name: propcache - version: 0.2.0 - build: py312h66e93f0_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - sha256: be7aa0056680dd6e528b7992169a20dd525b94f62d37c8ba0fbf69bd4e8df57d - md5: 2c6c0c68f310bc33972e7c83264d7786 + version: 0.2.1 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b + md5: 50ab8953e7ff1333a4a47cda32e68123 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53498 - timestamp: 1728545927816 + size: 52484 + timestamp: 1733391993461 - kind: conda name: propcache - version: 0.2.0 - build: py312hb2c0f52_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - sha256: 50dad7604b6c20440baf081700b5d6829097121e65f34fd1a15508b20fbecc07 - md5: 8a258196d6f79ad32d3ea4dd4572f721 + version: 0.2.1 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d + md5: c84e3dd97fe25a17322c4a0f670c6750 depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53507 - timestamp: 1728546155066 + size: 48225 + timestamp: 1733392308901 - kind: conda name: protobuf version: 5.28.2 @@ -9569,91 +9542,94 @@ packages: timestamp: 1733217331982 - kind: conda name: python - version: 3.12.7 - build: h5d932e8_0_cpython + version: 3.12.8 + build: h1683364_1_cpython + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - sha256: 25570873d92d4d9490c6db780cc85e6c28bd3ff61dc1ece79f602cf82bc73bc1 - md5: e6cab21bb5787270388939cf41cc5f43 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 13762126 - timestamp: 1728057461028 + size: 13760816 + timestamp: 1733407890896 - kind: conda name: python - version: 3.12.7 - build: h739c21a_0_cpython - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - sha256: 45d7ca2074aa92594bd2f91a9003b338cc1df8a46b9492b7fc8167110783c3ef - md5: e0d82e57ebb456077565e6d82cd4a323 + version: 3.12.8 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 12975439 - timestamp: 1728057819519 + size: 31565686 + timestamp: 1733410597922 - kind: conda name: python - version: 3.12.7 - build: hc5c86c4_0_cpython - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d - md5: 0515111a9cdf69f83278f7c197db9807 + version: 3.12.8 + build: hc22306f_1_cpython + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 31574780 - timestamp: 1728059777603 + size: 12998673 + timestamp: 1733408900971 - kind: conda name: python-dateutil version: 2.9.0.post0 @@ -10180,21 +10156,22 @@ packages: - kind: conda name: rich version: 13.9.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 - md5: bcf8cc8924b5d20ead3d122130b8320b + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0,<5.0.0 license: MIT license_family: MIT - size: 185481 - timestamp: 1730592349978 + size: 185646 + timestamp: 1733342347277 - kind: conda name: s2n version: 1.5.9 @@ -10553,65 +10530,68 @@ packages: timestamp: 1733301007770 - kind: conda name: six - version: 1.16.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.17.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c - md5: a516da6cfe1ec0a55e49737f017b4965 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - python >=3.9 license: MIT license_family: MIT size: 16385 - timestamp: 1733216901349 + timestamp: 1733381032766 - kind: conda name: snappy version: 1.2.1 - build: h1088aeb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f - md5: e4ed5b015f525b56f95c26d85a4ea208 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 42888 - timestamp: 1720003817527 + size: 42739 + timestamp: 1733501881851 - kind: conda name: snappy version: 1.2.1 - build: ha2e4443_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f - md5: 6b7dcc7349efd123d493d2dbe85a045f + build: h98b9ce2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: BSD-3-Clause license_family: BSD - size: 42465 - timestamp: 1720003704360 + size: 35857 + timestamp: 1733502172664 - kind: conda name: snappy version: 1.2.1 - build: hd02b534_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 - md5: 69d0f9694f3294418ee935da3d5f7272 + build: hd4fb6f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 35708 - timestamp: 1720003794374 + size: 43032 + timestamp: 1733501964775 - kind: conda name: sniffio version: 1.3.1 @@ -10649,20 +10629,21 @@ packages: - kind: conda name: starlette version: 0.41.3 - build: pyh7900ff3_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - sha256: 33986032cb0515f7e9f6647d07006b7dc49b3f373b73d5a1826e6979c661b27a - md5: 0889c5a3e95d8c382cff7556757aedb0 + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 depends: - anyio >=3.4.0,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 59069 - timestamp: 1732037161800 + size: 58838 + timestamp: 1733344472634 - kind: conda name: svt-av1 version: 2.3.0 @@ -10888,18 +10869,19 @@ packages: - kind: conda name: traitlets version: 5.14.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 110187 - timestamp: 1713535244513 + size: 110051 + timestamp: 1733367480074 - kind: conda name: transformers version: 4.46.3 @@ -10928,58 +10910,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 - md5: cf9393f5733c7277b1a5f79145f8485b + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 depends: - python >=3.9 - - typer-slim-standard 0.15.0 hd8ed1ab_0 + - typer-slim-standard 0.15.1 hd8ed1ab_0 license: MIT license_family: MIT - size: 56455 - timestamp: 1733279871129 + size: 56175 + timestamp: 1733408582623 - kind: conda name: typer-slim - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc - md5: 629fef89115de5a907fb9765cdd45b26 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - - typer >=0.15.0,<0.15.1.0a0 - - shellingham >=1.3.0 - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 license: MIT license_family: MIT - size: 43480 - timestamp: 1733279858535 + size: 43592 + timestamp: 1733408569554 - kind: conda name: typer-slim-standard - version: 0.15.0 + version: 0.15.1 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 - md5: a4746fc9efbff02c1a288d8fcd8ffba9 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: - rich - shellingham - - typer-slim 0.15.0 pyhd8ed1ab_0 + - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 50259 - timestamp: 1733279859017 + size: 49531 + timestamp: 1733408570063 - kind: conda name: typing-extensions version: 4.12.2 @@ -11631,141 +11613,102 @@ packages: - kind: conda name: xz version: 5.6.3 - build: h2dbfc1b_0 + build: h2dbfc1b_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec - md5: da081cb850e57b0a0a242bab9087fbeb + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_1.conda + sha256: b497245803e6753a9d4fe4014eb71fcb94e3fe1c7be9cc54aefcd0d02266b67f + md5: 0ed81af8ecd07369f2ce2533fd904a25 depends: - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - - liblzma-devel 5.6.3 h86ecc28_0 - - xz-gpl-tools 5.6.3 h2dbfc1b_0 - - xz-tools 5.6.3 h86ecc28_0 + - liblzma 5.6.3 h86ecc28_1 + - liblzma-devel 5.6.3 h86ecc28_1 + - xz-gpl-tools 5.6.3 h2dbfc1b_1 + - xz-tools 5.6.3 h86ecc28_1 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23448 - timestamp: 1733324353894 + size: 23495 + timestamp: 1733409682598 - kind: conda name: xz version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 - md5: 86674fa432df20be6feea4bd8fec0668 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - - liblzma-devel 5.6.3 h39f12f2_0 - - xz-gpl-tools 5.6.3 h9a6d368_0 - - xz-tools 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23570 - timestamp: 1733321627935 -- kind: conda - name: xz - version: 5.6.3 - build: hbcc6ac9_0 + build: hbcc6ac9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 - md5: 504333561007fbf0af129f0cee4f5652 + url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_1.conda + sha256: 9cef529dcff25222427c9d90b9fc376888a59e138794b4336bbcd3331a5eea22 + md5: 62aae173382a8aae284726353c6a6a24 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - - liblzma-devel 5.6.3 hb9d3cd8_0 - - xz-gpl-tools 5.6.3 hbcc6ac9_0 - - xz-tools 5.6.3 hb9d3cd8_0 + - liblzma 5.6.3 hb9d3cd8_1 + - liblzma-devel 5.6.3 hb9d3cd8_1 + - xz-gpl-tools 5.6.3 hbcc6ac9_1 + - xz-tools 5.6.3 hb9d3cd8_1 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23435 - timestamp: 1733321352996 + size: 23477 + timestamp: 1733407455801 - kind: conda name: xz-gpl-tools version: 5.6.3 - build: h2dbfc1b_0 + build: h2dbfc1b_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca - md5: b0245c3aad4592510bb0c19212c1bded + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_1.conda + sha256: 025f53e2f269b55ab46a627afa47e7288e5199c9d6752ac079c91c22d2a18c07 + md5: 5987f52add76f6fe246fcb2a554ee206 depends: - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33355 - timestamp: 1733324193303 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd - md5: 9e4519aef300966683764ccbbaa89da4 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 + - liblzma 5.6.3 h86ecc28_1 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33343 - timestamp: 1733321610703 + size: 33218 + timestamp: 1733409548701 - kind: conda name: xz-gpl-tools version: 5.6.3 - build: hbcc6ac9_0 + build: hbcc6ac9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db - md5: e4f1e59ca2971e8d0fdde0928c3f7b7f + url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_1.conda + sha256: 4e104b7c75c2f26a96032a1c6cda51430da1dea318c74f9e3568902b2f5030e1 + md5: f529917bab7862aaad6867bf2ea47a99 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 + - liblzma 5.6.3 hb9d3cd8_1 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33299 - timestamp: 1733321343126 + size: 33354 + timestamp: 1733407444641 - kind: conda name: xz-tools version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 - md5: 10855380caa384c8388b93ef29c7bd04 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later - size: 81129 - timestamp: 1733321582233 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h86ecc28_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 - md5: 0136c7aa78b4d887c9fb6dbf39749778 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_1.conda + sha256: c4d136b10ba6d2afe133bc5bc2c6db6ec336793932b6ff1e166b5b1790abe1c5 + md5: 5d1bedf30d9b471b6f880351cec41bf0 depends: - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 + - liblzma 5.6.3 h86ecc28_1 license: 0BSD AND LGPL-2.1-or-later - size: 95353 - timestamp: 1733324033407 + size: 95924 + timestamp: 1733409414633 - kind: conda name: xz-tools version: 5.6.3 - build: hb9d3cd8_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 - md5: 40270c1e058fd1d31caee8bf2c68fc3a + url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_1.conda + sha256: 6e80f838096345c35e8755b827814c083dd0274594006d6f76bff71bc969c3b8 + md5: de3f31a6eed01bc2b8c7dcad07ad9034 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 + - liblzma 5.6.3 hb9d3cd8_1 license: 0BSD AND LGPL-2.1-or-later - size: 89832 - timestamp: 1733321333192 + size: 90354 + timestamp: 1733407433418 - kind: conda name: yaml version: 0.2.5 @@ -11811,64 +11754,64 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312h66e93f0_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - sha256: 8a1e51303ecac64f10dd0ec548d472c49954c3e2f38023ef28899191580795e1 - md5: 601d2b19a54fd9346ba18c07c2516339 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 + md5: 91df2efaa08730416bec2a4502309275 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 151247 - timestamp: 1732220988648 + size: 151393 + timestamp: 1733428897813 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hb2c0f52_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - sha256: 2ead24d5c50a2edd6348be5888677100b12b98921d1b6fe2f4cd980b0b85ffb2 - md5: 7dbbd950a7f762c2c8ab835932b12001 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 + md5: 0b3c640697bca798d0ab428f530ed24c depends: - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 149149 - timestamp: 1732221057827 + size: 150004 + timestamp: 1733429056665 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hea69d52_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - sha256: 4c90de12b1569f85126a12dbbb89f3dc10cee5838335b9c9993ead8bf1594cd3 - md5: f538709098e1642d50f4a01707e7dfdb + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba + md5: f32f9b16361866a62d6e061fcd7eb400 depends: - __osx >=11.0 - idna >=2.0 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 141452 - timestamp: 1732221306526 + size: 141556 + timestamp: 1733429104990 - kind: conda name: zeromq version: 4.3.5 diff --git a/examples/magic.lock b/examples/magic.lock index ed40f02b5d..cb06dce375 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -26,7 +26,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -49,12 +49,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -63,13 +63,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -105,12 +105,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -120,24 +119,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py311h459d7ec_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -159,7 +158,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py311h49e9ac3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py311h9ecbd09_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py311hfdbb021_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py311h38be061_0.conda @@ -171,7 +170,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.10-hc5c86c4_3_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -186,25 +185,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py311h9e33e62_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py311h182c674_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -218,11 +217,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py311hbc35293_1.conda @@ -247,7 +243,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -270,12 +266,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -284,14 +280,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda @@ -299,10 +295,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -327,12 +323,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -342,24 +337,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py311hcd402e7_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -381,7 +376,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py311hb2a0dd2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py311ha879c10_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py311h89d996e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py311hfecb2dc_0.conda @@ -393,7 +388,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.10-h5d932e8_3_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -408,25 +403,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py311h0ca61a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py311h5e37e04_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -440,11 +435,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py311ha879c10_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py311hd5293d8_1.conda @@ -468,7 +460,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -491,12 +483,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py311hae2e1ce_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -505,22 +497,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -543,11 +536,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -555,23 +547,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py311heffc1b2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -593,7 +585,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py311h3894ae9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py311h460d6c5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py311h6885ffc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py311ha1ab1f8_0.conda @@ -605,7 +597,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py311hae2e1ce_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.10-hc51fdd5_3_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -620,24 +612,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py311h481aa64_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py311h82b0fb8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -651,11 +643,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py311ha60cc69_1.conda @@ -720,6 +709,7 @@ packages: depends: - python >=3.9 license: PSF-2.0 + license_family: PSF size: 19351 timestamp: 1733332029649 - kind: conda @@ -808,6 +798,7 @@ packages: - frozenlist >=1.1.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 13157 timestamp: 1733332198143 - kind: conda @@ -1533,13 +1524,12 @@ packages: timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h3b64406_4 - build_number: 4 + version: 1.11.458 + build: h3b64406_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - sha256: 10ce9c203d31229432421a841d8d135d3e942637571aae4bb2d3c7d5242e7f05 - md5: f9e46a4bb5a04cbca08355f166ce87c8 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e + md5: 9a8d3ba158ff8ea08e17de366c238706 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1552,17 +1542,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2722689 - timestamp: 1732812825640 + size: 2853609 + timestamp: 1733389337912 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h5558e3c_4 - build_number: 4 + version: 1.11.458 + build: h5558e3c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - sha256: 4881f7b4f5e3c797332cffb990df246a422346b220a9c16014f274beb2a276f5 - md5: ba7abdc93b0ade11d774b47aaab84737 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 + md5: b1919becd17fe224aacf708114231fda depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1576,17 +1565,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2945541 - timestamp: 1732812288219 + size: 3059100 + timestamp: 1733388777418 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h7085e57_4 - build_number: 4 + version: 1.11.458 + build: h7085e57_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - sha256: 0908a82e7c50c51d5ee0ca543dbe70cbe1963e6e8f80ffa58ea6d26e5c68251e - md5: feec198cb18a5e90aa36c97328567d63 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 + md5: 005e0cc687a2421a4ad493e5b7058abe depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1599,8 +1587,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2813856 - timestamp: 1732812337182 + size: 2903434 + timestamp: 1733388870289 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2333,13 +2321,13 @@ packages: timestamp: 1733208916977 - kind: conda name: fastapi - version: 0.115.5 - build: pyhff2d567_0 + version: 0.115.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - sha256: da2833cc2ea5789abc2a6899be02ba0a769386d4913ff182bd1a9458bea40c34 - md5: cfe0f8cd904ab19c36ba50eb5179ebe0 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: - email_validator >=2.0.0 - fastapi-cli >=0.0.5 @@ -2353,8 +2341,8 @@ packages: - uvicorn-standard >=0.12.0 license: MIT license_family: MIT - size: 73541 - timestamp: 1731452895466 + size: 73084 + timestamp: 1733362427885 - kind: conda name: fastapi-cli version: 0.0.5 @@ -2489,18 +2477,18 @@ packages: - kind: conda name: fsspec version: 2024.10.0 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 - md5: 816dbc4679a64e4417cd1385d661bb31 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 + md5: 906fe13095e734cb413b57a49116cdc8 depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 134745 - timestamp: 1729608972363 + size: 134726 + timestamp: 1733493445080 - kind: conda name: gflags version: 2.2.2 @@ -2740,12 +2728,13 @@ packages: - kind: conda name: httpx version: 0.28.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - sha256: cb7895446cd93091300accea6afbc8d9811a3c5899922ccfeeff97d9b55909dc - md5: 22878824a87f1af2ad48665f9d5bfcc8 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 + md5: 8a4a83ba566c6b5c718dd0531a362d01 depends: - anyio - certifi @@ -2754,8 +2743,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63183 - timestamp: 1732831049776 + size: 63203 + timestamp: 1733501478172 - kind: conda name: huggingface_hub version: 0.26.3 @@ -2810,6 +2799,20 @@ packages: license_family: MIT size: 12282786 timestamp: 1720853454991 +- kind: conda + name: icu + version: '75.1' + build: hfee45f7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 - kind: conda name: idna version: '3.10' @@ -2862,24 +2865,25 @@ packages: - kind: conda name: jupyter_client version: 8.6.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 - md5: a14218cfb29662b4a19ceb04e93e298e + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-dateutil >=2.8.2 - pyzmq >=23.0 - tornado >=6.2 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 106055 - timestamp: 1726610805505 + size: 106342 + timestamp: 1733441040958 - kind: conda name: jupyter_core version: 5.7.2 @@ -3165,16 +3169,16 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h654e1bb_2_cpu - build_number: 2 + build: h5affd47_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - sha256: 925dcb034f36536eed21d9323f096bf2ebf1111d14c61e1ae0b90e5de131f1e1 - md5: e69934ff9dd8745fea8927028d1603ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 + md5: 3dc73b42851e6096542458eaf2c074ca depends: - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3198,24 +3202,23 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5475725 - timestamp: 1732947802614 + size: 5487846 + timestamp: 1733450423101 - kind: conda name: libarrow version: 18.1.0 - build: hc7b0e1d_2_cpu - build_number: 2 + build: hb63acf4_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - sha256: 3201944d1f97b9207e566ccf388c8376bb2ce7e461534cda63a28975b6790901 - md5: 4a46bd0be8e7f56a217d26b79d290a0e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 + md5: d98a11c3ba32554873aeb6a071baceaa depends: - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3240,26 +3243,25 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8026783 - timestamp: 1732950110265 + size: 8048003 + timestamp: 1733452700958 - kind: conda name: libarrow version: 18.1.0 - build: he15abb1_1_cpu - build_number: 1 + build: hcf3f2e3_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - sha256: afc81af2e533cc35295aebae4fb382e770310d9b1ac31837456b440d35c54cf7 - md5: bd3e35a6f3f869b4777488452f315008 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e + md5: 196823c7752608cb6b5d5a7a33b17410 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3276,7 +3278,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<2.9.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3284,190 +3286,180 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 8780597 - timestamp: 1732863546099 + size: 8796519 + timestamp: 1733453489520 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 + build: h36004a0_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - sha256: 3de5719a7035baad7e665116dce7bb3d069f0c1916e163c553e2e491bbe8b614 - md5: 6197dcb930f6254e9b2fdc416be56b71 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 + md5: 6d8f74ac97166e09cdf02109ed9905ce depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 611272 - timestamp: 1732863586114 + size: 612773 + timestamp: 1733453636002 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - sha256: e6c8988d1d79163d6d13dda21f9e401f5df4b3af7e0d221718522c600894adcf - md5: 14fede66c995f3cf958797e9fb567e22 - depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 577510 - timestamp: 1732950190684 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - sha256: cfe32f1b0712b77d2c792a839fe4ea2790cabd99d47cd8e1b20ba2d3c8b113b2 - md5: 60351279d7dfd7c254c46aabf9aa35a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 + md5: f3a050129b5012bd5fc381693f6eb2cd depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 483362 - timestamp: 1732948000606 + size: 483753 + timestamp: 1733450627207 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - sha256: 7b3db3d5a7e411f8897e8d74403c1d871f3054300f5009c4bdf75da011bc3f42 - md5: 77501831a2aabbaabac55e8cb3b6900a + build: he2e0623_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a + md5: fa54002b982019ecc0e93cb4b2c493e9 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hb63acf4_3_cpu - libgcc >=13 - - libparquet 18.1.0 h6bd9018_1_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585458 - timestamp: 1732863686753 + size: 578323 + timestamp: 1733452783322 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - sha256: 53cdae2150c22ef9b5d6de8d0ee8ac52eeacc50fdfa2fa3ea644b52436d1eeb1 - md5: c54d83f012a40fef8a2dc4856e4340a0 + build: h36004a0_3_cpu + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 + md5: e9eac639d83b1c35f7743845b922d61a depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_2_cpu + - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 559143 - timestamp: 1732950272727 + size: 585416 + timestamp: 1733454137952 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - sha256: eeae9e8d382c482076f4739455b53f16851d7f99be219b6f96dd4e765132b446 - md5: b5fcaddabf47aa15e50feff072a55ada + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 + md5: 8c57e5a50f865a16cafd92f5a32c9faa depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu - libcxx >=18 - - libparquet 18.1.0 h5168bdf_2_cpu + - libparquet 18.1.0 h3a603ae_3_cpu license: Apache-2.0 - license_family: APACHE - size: 489769 - timestamp: 1732949732423 + size: 489900 + timestamp: 1733452479126 - kind: conda - name: libarrow-substrait + name: libarrow-dataset version: 18.1.0 - build: h14ec2bd_2_cpu - build_number: 2 + build: he2e0623_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda - sha256: e8923d62cfaadc4a8af1735e717fd4980cad693419e63aed04380566d9fd46df - md5: 4fd0103449cf40214fd348643aa78fff + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff + md5: 048f04da68a40e9e5e1e66ff9502b237 depends: + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libgcc >=13 + - libparquet 18.1.0 h553aec1_3_cpu + - libstdcxx >=13 + license: Apache-2.0 + size: 559844 + timestamp: 1733453065157 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: h4c1644f_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 + md5: 7ba2783c26a0008307e2a1e637c2930f + depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu - - libarrow-dataset 18.1.0 h5ad3122_2_cpu - - libgcc >=13 + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow-dataset 18.1.0 haafc02e_3_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 515352 - timestamp: 1732950311471 + size: 451428 + timestamp: 1733453012619 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h5c8f2c3_1_cpu - build_number: 1 + build: h56a123c_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda - sha256: e77a354bfc0ba7b04c856f1bb16e7b08950bcde54026087bafec46090380fcc1 - md5: 5d47bd2674afd104dbe2f2f3534594b0 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d + md5: 306bb541b83a83b66d5c1e6880302886 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu - - libarrow-dataset 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow-dataset 18.1.0 h36004a0_3_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 520681 - timestamp: 1732863726954 + size: 520740 + timestamp: 1733454379083 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h9b432b6_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda - sha256: 6dde802134bd2e78581eb838c049b2e7e378899706b471f7072222a6b1284b90 - md5: 49e7c0460532a73f34bd127fff009224 + build: hc52ba39_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 + md5: 7a8e305f1689687ed063bb4553c1a7a5 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu - - libarrow-dataset 18.1.0 h605b82c_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow-dataset 18.1.0 he2e0623_3_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 451127 - timestamp: 1732950194322 + size: 515638 + timestamp: 1733453200561 - kind: conda name: libblas version: 3.9.0 @@ -4674,86 +4666,46 @@ packages: - kind: conda name: liblzma version: 5.6.3 - build: h39f12f2_0 + build: h39f12f2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 - md5: faa0ab222b9d12a52a8ebc655c9236f3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 license: 0BSD - size: 98836 - timestamp: 1733321533638 + size: 99129 + timestamp: 1733407496073 - kind: conda name: liblzma version: 5.6.3 - build: h86ecc28_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f - md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 license: 0BSD - size: 124115 - timestamp: 1733323693681 + size: 124138 + timestamp: 1733409137214 - kind: conda name: liblzma version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 - md5: 137c535dddd880f844f33ed91b8abdba - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: 0BSD - size: 111223 - timestamp: 1733321312512 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 - md5: 89955d2470cbacea3d5e069d67c94f44 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD - size: 112941 - timestamp: 1733321552604 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 - md5: 27995ae8bc93eeb949315655daa19d3c - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD - size: 376767 - timestamp: 1733323860026 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: hb9d3cd8_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a - md5: 7069f4de645461447f1ab7736c94db26 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 license: 0BSD - size: 375452 - timestamp: 1733321322415 + size: 111132 + timestamp: 1733407410083 - kind: conda name: libnghttp2 version: 1.64.0 @@ -4905,61 +4857,58 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda - sha256: 83b8fa4a90e214fcd6018f890947666f055f79563fff2b7c3d5f37d894f3a000 - md5: ce205782960a580fa43cfcccca22ad8d + build: h3a603ae_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d + md5: 78d2f729e26788a3660cee9906f440e7 depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h5affd47_3_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1115906 - timestamp: 1732950250848 + size: 873697 + timestamp: 1733452286970 - kind: conda name: libparquet version: 18.1.0 - build: h5168bdf_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda - sha256: 454487d113974b923b4214a65aab780fd90c4914390d0b1f4640b1bf60537bff - md5: f995df7ee206617a3e858fd932d7bd2d + build: h553aec1_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b + md5: 46c6783e8b46449a9baabef57c69f30a depends: - - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 872333 - timestamp: 1732949558028 + size: 1116941 + timestamp: 1733452997475 - kind: conda name: libparquet version: 18.1.0 - build: h6bd9018_1_cpu - build_number: 1 + build: hbdb145b_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda - sha256: 0df119f4c1a2387d910e132c670b29ee5b29dd79384549de6f1a43067515c8ba - md5: 1054909202f86e38bbbb7ca1131b8471 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 + md5: cb249762e1e65941b559d436c60e520d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1203523 - timestamp: 1732863665743 + size: 1204740 + timestamp: 1733454014411 - kind: conda name: libpng version: 1.6.44 @@ -5370,86 +5319,70 @@ packages: - kind: conda name: libtiff version: 4.7.0 - build: he137b08_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 - md5: 63872517c98aa305da58a757c443698e + build: ha962b0a_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be + md5: 8e14b5225c593f099a21971568e6d7b4 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 + - libcxx >=18 - libdeflate >=1.22,<1.23.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - - libstdcxx >=13 + - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 428156 - timestamp: 1728232228989 + size: 370387 + timestamp: 1733443310502 - kind: conda name: libtiff version: 4.7.0 - build: hec21d91_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d - md5: 1f80061f5ba6956fcdc381f34618cd8d + build: hc4654cb_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 + md5: be54fb40ea32e8fe9dbaa94d4528b57e depends: + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - libdeflate >=1.22,<1.23.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 464938 - timestamp: 1728232266969 + size: 429018 + timestamp: 1733443013288 - kind: conda name: libtiff version: 4.7.0 - build: hfce79cd_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d - md5: b9abf45f7c64caf3303725f1aa0e9a4d + build: hca96517_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 + md5: 278dcef6d1ea28c04109c3f5dea126cb depends: - - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - - libcxx >=17 - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 366323 - timestamp: 1728232400072 -- kind: conda - name: libutf8proc - version: 2.8.0 - build: hf23e847_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb - md5: b1aa0faa95017bca11369bd080487ec4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 80852 - timestamp: 1732829699583 + size: 464857 + timestamp: 1733443105529 - kind: conda name: libutf8proc version: 2.9.0 @@ -5480,6 +5413,22 @@ packages: license_family: MIT size: 81526 timestamp: 1732868466862 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 81500 + timestamp: 1732868419835 - kind: conda name: libuuid version: 2.38.1 @@ -5680,60 +5629,62 @@ packages: - kind: conda name: libxml2 version: 2.13.5 - build: h064dc61_0 + build: h0d44e9d_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - sha256: 7ab7fb45a0014981d35247cd5b09057fc8ed3c07378086a6c7ad552915928647 - md5: fb16b85a5be1328ac1c44b098b74c570 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 constrains: - icu <0.0a0 license: MIT license_family: MIT - size: 689363 - timestamp: 1731489619071 + size: 689993 + timestamp: 1733443678322 - kind: conda name: libxml2 version: 2.13.5 - build: h376fa9f_0 + build: h178c5d8_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - sha256: d443703d324f3dbd628d58ea498ab0e474c06d5771e7f55baf215fdbc11ceb87 - md5: adea92805465ed3dcf0776b428e34744 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - constrains: - - icu <0.0a0 license: MIT license_family: MIT - size: 582076 - timestamp: 1731489850179 + size: 582898 + timestamp: 1733443841584 - kind: conda name: libxml2 version: 2.13.5 - build: hf4efe5d_0 + build: h2e0c361_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 - md5: 5650ac8a6ed680c032bdabe40ad19ee0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 734453 - timestamp: 1731489860751 + size: 732155 + timestamp: 1733443825814 - kind: conda name: libzlib version: 1.3.1 @@ -5788,20 +5739,20 @@ packages: timestamp: 1727963148474 - kind: conda name: llvm-openmp - version: 19.1.4 + version: 19.1.5 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 + md5: f2c2e187a1d2637d282e34dc92021a70 depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.5|19.1.5.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281554 - timestamp: 1732102484807 + size: 281120 + timestamp: 1733376089600 - kind: conda name: lz4-c version: 1.9.4 @@ -5924,76 +5875,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f - md5: 09947b7aa3a3c35b413b7c0d118126e3 - depends: - - max-core ==24.6.0.dev2024120416 release - - max-python >=24.6.0.dev2024120416,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120416 release - - mblack ==24.6.0.dev2024120416 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 + md5: 562c33b920321a676acb3fc49c2ddb11 + depends: + - max-core ==24.6.0.dev2024120616 release + - max-python >=24.6.0.dev2024120616,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120616 release license: LicenseRef-Modular-Proprietary - size: 9925 - timestamp: 1733332193356 + size: 9919 + timestamp: 1733502206770 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef - md5: 43a976936171480fe7dbc2fed1224312 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 + md5: 88e589273bf2ae77f80f879adacd234a depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245904359 - timestamp: 1733332193354 + size: 247418489 + timestamp: 1733502146971 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 - md5: 15cac805514c6a381a9a50ee3a86de25 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b + md5: 5243c455575512a6061067e3b5d67e0f depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249618446 - timestamp: 1733332472125 + size: 251333959 + timestamp: 1733502206769 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 - md5: c27c6f67be3abffbf559bfd50852b493 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 + md5: 99f131bbf681d02fe75d5f9e7dc0ab57 depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 210212276 - timestamp: 1733332258535 + size: 211890615 + timestamp: 1733502249826 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.11release.conda - sha256: 0f547380f5fba946ea66d441a4ff39914e3795922b9c13c0258c18667ecfd67e - md5: 6279cbb54248de909cc3056f610bf086 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.11release.conda + sha256: 22aabb8990184fa786008b44a27aae62833283ffd998420c7cc6750f919c9372 + md5: 4b34a9cdfb4598249c9e585f4cce4a8a depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.11.* - pillow - fastapi @@ -6015,18 +5966,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122937776 - timestamp: 1733332193364 + size: 123644414 + timestamp: 1733502146982 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.11release.conda - sha256: efc9949779b7999d5245f8de5759efcb8beaef95f36fcf9ab3d91562dffc7584 - md5: bb9bf7a056bc2d8e72a8d060c01f93f7 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.11release.conda + sha256: bb9bf09fc5437061b9ab2383ee6a3a1cc4457ed4c32eaeb2a5a78f28c8a77c8e + md5: 73d121cddb702feb967db7b16e41d88a depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.11.* - pillow - fastapi @@ -6048,18 +5999,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126566383 - timestamp: 1733332472134 + size: 127348291 + timestamp: 1733502206778 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.11release.conda - sha256: 572567eda8da043e5de45a0cbbe778f13f5fc441eece20a0ff60a7a4638fee21 - md5: 809b87bc94c23925ee4c36636ce5bdce + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.11release.conda + sha256: 29bb82ce4814de2684c3c9a587a2fca7ad3f3047059421be52e8e2b660ef3c31 + md5: 84a362f87f885e22d0e7e1c7649df4c3 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.11.* - pillow - fastapi @@ -6081,17 +6032,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 111633050 - timestamp: 1733332258537 + size: 112341940 + timestamp: 1733502249828 - kind: conda name: mblack - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda - sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 - md5: 85c700946ce4a5ce8d11f5ee66b477cf + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 + md5: dec7dbfe11abd34b171d290d38adea24 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6101,8 +6052,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130641 - timestamp: 1733332193362 + size: 130704 + timestamp: 1733502206776 - kind: conda name: mdurl version: 0.1.2 @@ -6121,21 +6072,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 - md5: 411a1d159867c56043991824d1ee88d9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 + md5: 1420c233cedc5e554c728d5f8b2b1657 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22946 - timestamp: 1733332193363 + size: 11371 + timestamp: 1733502206776 - kind: conda name: multidict version: 6.1.0 @@ -6872,13 +6823,12 @@ packages: timestamp: 1733327434163 - kind: conda name: propcache - version: 0.2.0 - build: py311h460d6c5_2 - build_number: 2 + version: 0.2.1 + build: py311h917b07b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py311h460d6c5_2.conda - sha256: 7e6a656b09d494f0623c8bd0969195d1cd3f62a2ab5a2474a667c88e21cca971 - md5: 8fb75727dfbab541ece9542718cc30f4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py311h917b07b_0.conda + sha256: 7d4185519514a4d357348e7a31974afb713ab6e0d7ea3a9f27a36f3b6515b638 + md5: f0599cb37e2cf8710eaae4b4d85f7759 depends: - __osx >=11.0 - python >=3.11,<3.12.0a0 @@ -6886,17 +6836,16 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: APACHE - size: 48222 - timestamp: 1728546126843 + size: 48002 + timestamp: 1733392010497 - kind: conda name: propcache - version: 0.2.0 - build: py311h9ecbd09_2 - build_number: 2 + version: 0.2.1 + build: py311h9ecbd09_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py311h9ecbd09_2.conda - sha256: bc2fbbc3f494884b62f288db2f6d53f57a9a1129cc95138780abdb783c487bc4 - md5: 85a56dd3b692fb5435de1e901354b5b8 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py311h9ecbd09_0.conda + sha256: 3323f2ed707a9fe89ee142c9ea1adef0cf8f75fb005ec414b50e8cc0381b57f4 + md5: 20d1c4ad24ac50f0941c63e81e4a86b7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6904,17 +6853,16 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: APACHE - size: 53716 - timestamp: 1728545855994 + size: 53315 + timestamp: 1733391912538 - kind: conda name: propcache - version: 0.2.0 - build: py311ha879c10_2 - build_number: 2 + version: 0.2.1 + build: py311ha879c10_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py311ha879c10_2.conda - sha256: a572848e9540b4d57064adb3db05c6b89deb0d99dab90b82c5cbc7f4f45811fe - md5: 5e6f032fcfccdafc6b2cb5cd87f4d361 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py311ha879c10_0.conda + sha256: 9d6ed4a29efa5ea64b50097c450429944f116d06d883d23e5b5493eab0c68393 + md5: 15d3518828453960069fd7874fe88468 depends: - libgcc >=13 - python >=3.11,<3.12.0a0 @@ -6922,8 +6870,8 @@ packages: - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: APACHE - size: 53090 - timestamp: 1728546060903 + size: 52970 + timestamp: 1733392060312 - kind: conda name: protobuf version: 5.28.2 @@ -7358,94 +7306,94 @@ packages: timestamp: 1733217331982 - kind: conda name: python - version: 3.11.10 - build: h5d932e8_3_cpython - build_number: 3 + version: 3.11.11 + build: h1683364_1_cpython + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.10-h5d932e8_3_cpython.conda - sha256: 59e53e0773660c6e02209f7efc4e2e7918110153a3a11ae0660b4c2c898ac700 - md5: ce35c787630db2ac26327d64c15943e1 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda + sha256: b39a2253510b26213093cb29e27722cb33782aec213c020dfd17cd74d58f68e7 + md5: 7e8786cbe7b83e7011e681a4780c9b7f depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.11.* *_cp311 license: Python-2.0 - size: 15359622 - timestamp: 1729041715586 + size: 15234582 + timestamp: 1733407838276 - kind: conda name: python - version: 3.11.10 - build: hc51fdd5_3_cpython - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.10-hc51fdd5_3_cpython.conda - sha256: 95a2c487176867ded825e23eab1e581398f75c5323da0cb7577c3cff3d2f955b - md5: 2a47a0061d7d3030e45b66d23f01d101 + version: 3.11.11 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + sha256: b29ce0836fce55bdff8d5c5b71c4921a23f87d3b950aea89a9e75784120b06b0 + md5: 8387070aa413ce9a8cc35a509fae938b depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.11.* *_cp311 license: Python-2.0 - size: 14598065 - timestamp: 1729042279642 + size: 30624804 + timestamp: 1733409665928 - kind: conda name: python - version: 3.11.10 - build: hc5c86c4_3_cpython - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.10-hc5c86c4_3_cpython.conda - sha256: b7fa3bd48e3a3d30f65608e07759cefd27885c6388b3f612af85ce40282e6936 - md5: 9e1ad55c87368e662177661a998feed5 + version: 3.11.11 + build: hc22306f_1_cpython + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + sha256: 94e198f6a5affa1431401fca7e3b27fda68c59f5ee726083288bff1f6bed8c7f + md5: 8d81dcd0be5bdcdd98e0f2482bf63784 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.11.* *_cp311 license: Python-2.0 - size: 30543977 - timestamp: 1729043512711 + size: 14647146 + timestamp: 1733409012105 - kind: conda name: python-dateutil version: 2.9.0.post0 @@ -7929,21 +7877,22 @@ packages: - kind: conda name: rich version: 13.9.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 - md5: bcf8cc8924b5d20ead3d122130b8320b + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0,<5.0.0 license: MIT license_family: MIT - size: 185481 - timestamp: 1730592349978 + size: 185646 + timestamp: 1733342347277 - kind: conda name: s2n version: 1.5.9 @@ -8066,65 +8015,68 @@ packages: timestamp: 1733301007770 - kind: conda name: six - version: 1.16.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.17.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c - md5: a516da6cfe1ec0a55e49737f017b4965 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - python >=3.9 license: MIT license_family: MIT size: 16385 - timestamp: 1733216901349 + timestamp: 1733381032766 - kind: conda name: snappy version: 1.2.1 - build: h1088aeb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f - md5: e4ed5b015f525b56f95c26d85a4ea208 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 42888 - timestamp: 1720003817527 + size: 42739 + timestamp: 1733501881851 - kind: conda name: snappy version: 1.2.1 - build: ha2e4443_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f - md5: 6b7dcc7349efd123d493d2dbe85a045f + build: h98b9ce2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: BSD-3-Clause license_family: BSD - size: 42465 - timestamp: 1720003704360 + size: 35857 + timestamp: 1733502172664 - kind: conda name: snappy version: 1.2.1 - build: hd02b534_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 - md5: 69d0f9694f3294418ee935da3d5f7272 + build: hd4fb6f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 35708 - timestamp: 1720003794374 + size: 43032 + timestamp: 1733501964775 - kind: conda name: sniffio version: 1.3.1 @@ -8162,20 +8114,21 @@ packages: - kind: conda name: starlette version: 0.41.3 - build: pyh7900ff3_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - sha256: 33986032cb0515f7e9f6647d07006b7dc49b3f373b73d5a1826e6979c661b27a - md5: 0889c5a3e95d8c382cff7556757aedb0 + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 depends: - anyio >=3.4.0,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 59069 - timestamp: 1732037161800 + size: 58838 + timestamp: 1733344472634 - kind: conda name: tk version: 8.6.13 @@ -8355,18 +8308,19 @@ packages: - kind: conda name: traitlets version: 5.14.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 110187 - timestamp: 1713535244513 + size: 110051 + timestamp: 1733367480074 - kind: conda name: transformers version: 4.46.3 @@ -8395,58 +8349,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 - md5: cf9393f5733c7277b1a5f79145f8485b + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 depends: - python >=3.9 - - typer-slim-standard 0.15.0 hd8ed1ab_0 + - typer-slim-standard 0.15.1 hd8ed1ab_0 license: MIT license_family: MIT - size: 56455 - timestamp: 1733279871129 + size: 56175 + timestamp: 1733408582623 - kind: conda name: typer-slim - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc - md5: 629fef89115de5a907fb9765cdd45b26 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - - typer >=0.15.0,<0.15.1.0a0 - - shellingham >=1.3.0 - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 license: MIT license_family: MIT - size: 43480 - timestamp: 1733279858535 + size: 43592 + timestamp: 1733408569554 - kind: conda name: typer-slim-standard - version: 0.15.0 + version: 0.15.1 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 - md5: a4746fc9efbff02c1a288d8fcd8ffba9 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: - rich - shellingham - - typer-slim 0.15.0 pyhd8ed1ab_0 + - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 50259 - timestamp: 1733279859017 + size: 49531 + timestamp: 1733408570063 - kind: conda name: typing-extensions version: 4.12.2 @@ -8899,144 +8853,6 @@ packages: license_family: BSD size: 97691 timestamp: 1689951608120 -- kind: conda - name: xz - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec - md5: da081cb850e57b0a0a242bab9087fbeb - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - - liblzma-devel 5.6.3 h86ecc28_0 - - xz-gpl-tools 5.6.3 h2dbfc1b_0 - - xz-tools 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23448 - timestamp: 1733324353894 -- kind: conda - name: xz - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 - md5: 86674fa432df20be6feea4bd8fec0668 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - - liblzma-devel 5.6.3 h39f12f2_0 - - xz-gpl-tools 5.6.3 h9a6d368_0 - - xz-tools 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23570 - timestamp: 1733321627935 -- kind: conda - name: xz - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 - md5: 504333561007fbf0af129f0cee4f5652 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - - liblzma-devel 5.6.3 hb9d3cd8_0 - - xz-gpl-tools 5.6.3 hbcc6ac9_0 - - xz-tools 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23435 - timestamp: 1733321352996 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca - md5: b0245c3aad4592510bb0c19212c1bded - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33355 - timestamp: 1733324193303 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd - md5: 9e4519aef300966683764ccbbaa89da4 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33343 - timestamp: 1733321610703 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db - md5: e4f1e59ca2971e8d0fdde0928c3f7b7f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33299 - timestamp: 1733321343126 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 - md5: 10855380caa384c8388b93ef29c7bd04 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later - size: 81129 - timestamp: 1733321582233 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 - md5: 0136c7aa78b4d887c9fb6dbf39749778 - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later - size: 95353 - timestamp: 1733324033407 -- kind: conda - name: xz-tools - version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 - md5: 40270c1e058fd1d31caee8bf2c68fc3a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later - size: 89832 - timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 @@ -9082,64 +8898,64 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py311h917b07b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py311h917b07b_0.conda - sha256: d21aeb264716c1f7bfb0f73f489621eebf8d28d951f3885a90ba97369eb2184d - md5: 93d15c4b23a94293511460afeda65445 + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py311h917b07b_0.conda + sha256: 2df31b9adcd55b29985935d0a23ae6069808e319c2c24bbe212cbd3f3dca71ed + md5: 134c0091a508239d35505d9ac74d4c0f depends: - __osx >=11.0 - idna >=2.0 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 142545 - timestamp: 1732221235765 + size: 144071 + timestamp: 1733429148299 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py311h9ecbd09_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py311h9ecbd09_0.conda - sha256: 6badcbdfa79e7d85898dadc3f3c8541aeb0328beaf52d8c324f9cfa03827e34b - md5: 6c53a0d074f60e75069133bfcdfdf76f + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py311h9ecbd09_0.conda + sha256: 4af34cbcf4dda72aad779c8a12eb508aee6f98d0523c26174639a75ae31df180 + md5: 385d54815a5d2e74e68374d77446030b depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 152353 - timestamp: 1732220979792 + size: 153749 + timestamp: 1733428888714 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py311ha879c10_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py311ha879c10_0.conda - sha256: 8dc821990e5f294fa8e071d472dfa46ad51738dfe9ccce34e6935dde0b9450b8 - md5: 5a62496bee4f8371cf4019957251d8c2 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py311ha879c10_0.conda + sha256: c60d0e75b147dc836b497b2f7c773a2b2998821056614eead6aae84fbedc7416 + md5: 049bc4ea1dd2a1db3a752fadbda1b55c depends: - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.11,<3.12.0a0 - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 license: Apache-2.0 license_family: Apache - size: 151403 - timestamp: 1732221145576 + size: 151968 + timestamp: 1733429000649 - kind: conda name: zeromq version: 4.3.5 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index acfb589cf2..ef2d7ac2be 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -31,7 +31,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -52,7 +52,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda @@ -65,13 +65,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -80,7 +80,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -88,20 +88,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda @@ -111,10 +111,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -139,12 +139,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -154,35 +153,35 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda @@ -204,11 +203,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda @@ -223,7 +222,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -237,25 +236,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h77b4e00_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.1-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.3-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda @@ -263,11 +262,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda @@ -280,7 +279,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.0-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.1-py312h66e93f0_0.conda @@ -289,11 +288,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda @@ -323,7 +319,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -344,7 +340,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda @@ -357,13 +353,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -372,7 +368,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -381,20 +377,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda @@ -404,10 +400,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -432,12 +428,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -447,35 +442,35 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda @@ -497,11 +492,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda @@ -516,7 +511,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -530,25 +525,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.0-py312h2427ae1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-h2d3a13d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.1-py312ha4e36d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.3-py312ha4e36d7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda @@ -556,11 +551,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda @@ -573,7 +568,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.0-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.1-py312hb2c0f52_0.conda @@ -582,11 +577,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda @@ -616,7 +608,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -637,7 +629,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda @@ -650,13 +642,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -665,28 +657,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.30.0-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda @@ -694,10 +687,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -720,11 +713,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -732,34 +724,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda @@ -781,11 +773,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda @@ -802,7 +794,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-10.3.2-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-10.3.2-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda @@ -816,24 +808,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.0-py312hf8a1cbd_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-hcd0e937_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.1-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.3-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -841,11 +833,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda @@ -858,7 +850,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.0-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.1-py312hea69d52_0.conda @@ -867,11 +859,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda @@ -936,6 +925,7 @@ packages: depends: - python >=3.9 license: PSF-2.0 + license_family: PSF size: 19351 timestamp: 1733332029649 - kind: conda @@ -1024,6 +1014,7 @@ packages: - frozenlist >=1.1.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 13157 timestamp: 1733332198143 - kind: conda @@ -1893,13 +1884,12 @@ packages: timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h3b64406_4 - build_number: 4 + version: 1.11.458 + build: h3b64406_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - sha256: 10ce9c203d31229432421a841d8d135d3e942637571aae4bb2d3c7d5242e7f05 - md5: f9e46a4bb5a04cbca08355f166ce87c8 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e + md5: 9a8d3ba158ff8ea08e17de366c238706 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1912,17 +1902,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2722689 - timestamp: 1732812825640 + size: 2853609 + timestamp: 1733389337912 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h5558e3c_4 - build_number: 4 + version: 1.11.458 + build: h5558e3c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - sha256: 4881f7b4f5e3c797332cffb990df246a422346b220a9c16014f274beb2a276f5 - md5: ba7abdc93b0ade11d774b47aaab84737 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 + md5: b1919becd17fe224aacf708114231fda depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1936,17 +1925,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2945541 - timestamp: 1732812288219 + size: 3059100 + timestamp: 1733388777418 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h7085e57_4 - build_number: 4 + version: 1.11.458 + build: h7085e57_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - sha256: 0908a82e7c50c51d5ee0ca543dbe70cbe1963e6e8f80ffa58ea6d26e5c68251e - md5: feec198cb18a5e90aa36c97328567d63 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 + md5: 005e0cc687a2421a4ad493e5b7058abe depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1959,8 +1947,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2813856 - timestamp: 1732812337182 + size: 2903434 + timestamp: 1733388870289 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2644,19 +2632,20 @@ packages: - kind: conda name: comm version: 0.2.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_0.conda - sha256: e923acf02708a8a0b591f3bce4bdc11c8e63b73198b99b35fe6cd96bfb6a0dbe - md5: 948d84721b578d426294e17a02e24cbb + url: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + sha256: 7e87ef7c91574d9fac19faedaaee328a70f718c9b4ddadfdc0ba9ac021bd64af + md5: 74673132601ec2b7fc592755605f4c1b depends: - - python >=3.6 + - python >=3.9 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 12134 - timestamp: 1710320435158 + size: 12103 + timestamp: 1733503053903 - kind: conda name: datasets version: 2.14.4 @@ -2908,13 +2897,13 @@ packages: timestamp: 1725214501850 - kind: conda name: fastapi - version: 0.115.5 - build: pyhff2d567_0 + version: 0.115.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - sha256: da2833cc2ea5789abc2a6899be02ba0a769386d4913ff182bd1a9458bea40c34 - md5: cfe0f8cd904ab19c36ba50eb5179ebe0 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: - email_validator >=2.0.0 - fastapi-cli >=0.0.5 @@ -2928,8 +2917,8 @@ packages: - uvicorn-standard >=0.12.0 license: MIT license_family: MIT - size: 73541 - timestamp: 1731452895466 + size: 73084 + timestamp: 1733362427885 - kind: conda name: fastapi-cli version: 0.0.5 @@ -3081,18 +3070,18 @@ packages: - kind: conda name: fsspec version: 2024.10.0 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 - md5: 816dbc4679a64e4417cd1385d661bb31 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 + md5: 906fe13095e734cb413b57a49116cdc8 depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 134745 - timestamp: 1729608972363 + size: 134726 + timestamp: 1733493445080 - kind: conda name: gflags version: 2.2.2 @@ -3332,12 +3321,13 @@ packages: - kind: conda name: httpx version: 0.28.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - sha256: cb7895446cd93091300accea6afbc8d9811a3c5899922ccfeeff97d9b55909dc - md5: 22878824a87f1af2ad48665f9d5bfcc8 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 + md5: 8a4a83ba566c6b5c718dd0531a362d01 depends: - anyio - certifi @@ -3346,8 +3336,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63183 - timestamp: 1732831049776 + size: 63203 + timestamp: 1733501478172 - kind: conda name: huggingface_hub version: 0.26.3 @@ -3402,6 +3392,20 @@ packages: license_family: MIT size: 12282786 timestamp: 1720853454991 +- kind: conda + name: icu + version: '75.1' + build: hfee45f7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 - kind: conda name: idna version: '3.10' @@ -3540,19 +3544,19 @@ packages: - kind: conda name: isoduration version: 20.11.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_0.tar.bz2 - sha256: 7bb5c4d994361022f47a807b5e7d101b3dce16f7dd8a0af6ffad9f479d346493 - md5: 4cb68948e0b8429534380243d063a27a + url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed + md5: 0b0154421989637d424ccf0f104be51a depends: - arrow >=0.15.0 - - python >=3.7 + - python >=3.9 license: MIT - license_family: MIT - size: 17189 - timestamp: 1638811664194 + size: 19832 + timestamp: 1733493720346 - kind: conda name: jedi version: 0.19.2 @@ -3655,49 +3659,50 @@ packages: - kind: conda name: jsonschema version: 4.23.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda - sha256: 7d0c4c0346b26be9f220682b7c5c0d84606d48c6dbc36fc238e4452dda733aff - md5: da304c192ad59975202859b367d0f6a2 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + sha256: be992a99e589146f229c58fe5083e0b60551d774511c494f91fe011931bd7893 + md5: a3cead9264b331b32fe8f0aabc967522 depends: - attrs >=22.2.0 - importlib_resources >=1.4.0 - jsonschema-specifications >=2023.03.6 - pkgutil-resolve-name >=1.3.10 - - python >=3.8 + - python >=3.9 - referencing >=0.28.4 - rpds-py >=0.7.1 license: MIT - license_family: MIT - size: 74323 - timestamp: 1720529611305 + size: 74256 + timestamp: 1733472818764 - kind: conda name: jsonschema-specifications version: 2024.10.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_0.conda - sha256: 82f8bed0f21dc0b3aff40dd4e39d77e85b93b0417bc5659b001e0109341b8b98 - md5: 720745920222587ef942acfbc578b584 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + sha256: 37127133837444cf0e6d1a95ff5a505f8214ed4e89e8e9343284840e674c6891 + md5: 3b519bc21bc80e60b456f1e62962a766 depends: - - python >=3.8 + - python >=3.9 - referencing >=0.31.0 license: MIT - license_family: MIT - size: 16165 - timestamp: 1728418976382 + size: 16170 + timestamp: 1733493624968 - kind: conda name: jsonschema-with-format-nongpl version: 4.23.0 - build: hd8ed1ab_0 + build: hd8ed1ab_1 + build_number: 1 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_0.conda - sha256: 007a0a506a0d1805b099629cb0ee743ad0afe7d9749e57339f32c168119e0139 - md5: 16b37612b3a2fd77f409329e213b530c + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + sha256: 6e0184530011961a0802fda100ecdfd4b0eca634ed94c37e553b72e21c26627d + md5: a5b1a8065857cc4bd8b7a38d063bb728 depends: - fqdn - idna @@ -3709,47 +3714,48 @@ packages: - uri-template - webcolors >=24.6.0 license: MIT - license_family: MIT - size: 7143 - timestamp: 1720529619500 + size: 7135 + timestamp: 1733472820035 - kind: conda name: jupyter-lsp version: 2.2.5 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_0.conda - sha256: 2151c2c63e0442a4c69ee0ad8a634195eedab10b7b74c0ec8266471842239a93 - md5: 885867f6adab3d7ecdf8ab6ca0785f51 + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + sha256: 1565c8b1423a37fca00fe0ab2a17cd8992c2ecf23e7867a1c9f6f86a9831c196 + md5: 0b4c3908e5a38ea22ebb98ee5888c768 depends: - importlib-metadata >=4.8.3 - jupyter_server >=1.1.2 - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 55539 - timestamp: 1712707521811 + size: 55221 + timestamp: 1733493006611 - kind: conda name: jupyter_client version: 8.6.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 - md5: a14218cfb29662b4a19ceb04e93e298e + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-dateutil >=2.8.2 - pyzmq >=23.0 - tornado >=6.2 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 106055 - timestamp: 1726610805505 + size: 106342 + timestamp: 1733441040958 - kind: conda name: jupyter_core version: 5.7.2 @@ -3772,15 +3778,16 @@ packages: - kind: conda name: jupyter_events version: 0.10.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_0.conda - sha256: cd3f41dc093162a41d4bae171e40a1b9b115c4d488e9bb837a8fa9d084931fb9 - md5: ed45423c41b3da15ea1df39b1f80c2ca + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.10.0-pyhd8ed1ab_1.conda + sha256: d7fa4c627d56ce8dc02f09f358757f8fd49eb6137216dc99340a6b4efc7e0491 + md5: 62186e6383f38cc6a3466f0fadde3f2e depends: - jsonschema-with-format-nongpl >=4.18.0 - - python >=3.8 + - python >=3.9 - python-json-logger >=2.0.4 - pyyaml >=5.3 - referencing @@ -3789,17 +3796,18 @@ packages: - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 21475 - timestamp: 1710805759187 + size: 21434 + timestamp: 1733441420606 - kind: conda name: jupyter_server version: 2.14.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_0.conda - sha256: edab71a05feceac54bdb90e755a257545af7832b9911607c1a70f09be44ba985 - md5: ca23c71f70a7c7935b3d03f0f1a5801d + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.14.2-pyhd8ed1ab_1.conda + sha256: 082d3517455339c8baea245a257af249758ccec26b8832d969ac928901c234cc + md5: 81ea84b3212287f926e35b9036192963 depends: - anyio >=3.1.0 - argon2-cffi >=21.1 @@ -3813,7 +3821,7 @@ packages: - overrides >=5.0 - packaging >=22.0 - prometheus_client >=0.9 - - python >=3.8 + - python >=3.9 - pyzmq >=24 - send2trash >=1.8.2 - terminado >=0.8.3 @@ -3822,24 +3830,24 @@ packages: - websocket-client >=1.7 license: BSD-3-Clause license_family: BSD - size: 323978 - timestamp: 1720816754998 + size: 324289 + timestamp: 1733428731329 - kind: conda name: jupyter_server_terminals version: 0.5.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_0.conda - sha256: 038efbc7e4b2e72d49ed193cfb2bbbe9fbab2459786ce9350301f466a32567db - md5: 219b3833aa8ed91d47d1be6ca03f30be + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + sha256: 0890fc79422191bc29edf17d7b42cff44ba254aa225d31eb30819f8772b775b8 + md5: 2d983ff1b82a1ccb6f2e9d8784bdd6bd depends: - - python >=3.8 + - python >=3.9 - terminado >=0.8.3 license: BSD-3-Clause - license_family: BSD - size: 19818 - timestamp: 1710262791393 + size: 19711 + timestamp: 1733428049134 - kind: conda name: jupyterlab version: 4.3.2 @@ -4180,16 +4188,16 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h654e1bb_2_cpu - build_number: 2 + build: h5affd47_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - sha256: 925dcb034f36536eed21d9323f096bf2ebf1111d14c61e1ae0b90e5de131f1e1 - md5: e69934ff9dd8745fea8927028d1603ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 + md5: 3dc73b42851e6096542458eaf2c074ca depends: - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -4213,24 +4221,23 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5475725 - timestamp: 1732947802614 + size: 5487846 + timestamp: 1733450423101 - kind: conda name: libarrow version: 18.1.0 - build: hc7b0e1d_2_cpu - build_number: 2 + build: hb63acf4_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - sha256: 3201944d1f97b9207e566ccf388c8376bb2ce7e461534cda63a28975b6790901 - md5: 4a46bd0be8e7f56a217d26b79d290a0e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 + md5: d98a11c3ba32554873aeb6a071baceaa depends: - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -4255,26 +4262,25 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8026783 - timestamp: 1732950110265 + size: 8048003 + timestamp: 1733452700958 - kind: conda name: libarrow version: 18.1.0 - build: he15abb1_1_cpu - build_number: 1 + build: hcf3f2e3_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - sha256: afc81af2e533cc35295aebae4fb382e770310d9b1ac31837456b440d35c54cf7 - md5: bd3e35a6f3f869b4777488452f315008 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e + md5: 196823c7752608cb6b5d5a7a33b17410 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -4291,7 +4297,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<2.9.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -4299,190 +4305,180 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 8780597 - timestamp: 1732863546099 + size: 8796519 + timestamp: 1733453489520 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 + build: h36004a0_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - sha256: 3de5719a7035baad7e665116dce7bb3d069f0c1916e163c553e2e491bbe8b614 - md5: 6197dcb930f6254e9b2fdc416be56b71 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 + md5: 6d8f74ac97166e09cdf02109ed9905ce depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 611272 - timestamp: 1732863586114 + size: 612773 + timestamp: 1733453636002 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - sha256: e6c8988d1d79163d6d13dda21f9e401f5df4b3af7e0d221718522c600894adcf - md5: 14fede66c995f3cf958797e9fb567e22 - depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 577510 - timestamp: 1732950190684 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - sha256: cfe32f1b0712b77d2c792a839fe4ea2790cabd99d47cd8e1b20ba2d3c8b113b2 - md5: 60351279d7dfd7c254c46aabf9aa35a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 + md5: f3a050129b5012bd5fc381693f6eb2cd depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 483362 - timestamp: 1732948000606 + size: 483753 + timestamp: 1733450627207 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - sha256: 7b3db3d5a7e411f8897e8d74403c1d871f3054300f5009c4bdf75da011bc3f42 - md5: 77501831a2aabbaabac55e8cb3b6900a + build: he2e0623_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a + md5: fa54002b982019ecc0e93cb4b2c493e9 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hb63acf4_3_cpu - libgcc >=13 - - libparquet 18.1.0 h6bd9018_1_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585458 - timestamp: 1732863686753 + size: 578323 + timestamp: 1733452783322 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - sha256: 53cdae2150c22ef9b5d6de8d0ee8ac52eeacc50fdfa2fa3ea644b52436d1eeb1 - md5: c54d83f012a40fef8a2dc4856e4340a0 + build: h36004a0_3_cpu + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 + md5: e9eac639d83b1c35f7743845b922d61a depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_2_cpu + - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 559143 - timestamp: 1732950272727 + size: 585416 + timestamp: 1733454137952 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - sha256: eeae9e8d382c482076f4739455b53f16851d7f99be219b6f96dd4e765132b446 - md5: b5fcaddabf47aa15e50feff072a55ada + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 + md5: 8c57e5a50f865a16cafd92f5a32c9faa depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu - libcxx >=18 - - libparquet 18.1.0 h5168bdf_2_cpu + - libparquet 18.1.0 h3a603ae_3_cpu license: Apache-2.0 - license_family: APACHE - size: 489769 - timestamp: 1732949732423 + size: 489900 + timestamp: 1733452479126 - kind: conda - name: libarrow-substrait + name: libarrow-dataset version: 18.1.0 - build: h14ec2bd_2_cpu - build_number: 2 + build: he2e0623_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda - sha256: e8923d62cfaadc4a8af1735e717fd4980cad693419e63aed04380566d9fd46df - md5: 4fd0103449cf40214fd348643aa78fff + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff + md5: 048f04da68a40e9e5e1e66ff9502b237 + depends: + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libgcc >=13 + - libparquet 18.1.0 h553aec1_3_cpu + - libstdcxx >=13 + license: Apache-2.0 + size: 559844 + timestamp: 1733453065157 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: h4c1644f_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 + md5: 7ba2783c26a0008307e2a1e637c2930f depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu - - libarrow-dataset 18.1.0 h5ad3122_2_cpu - - libgcc >=13 + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow-dataset 18.1.0 haafc02e_3_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 515352 - timestamp: 1732950311471 + size: 451428 + timestamp: 1733453012619 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h5c8f2c3_1_cpu - build_number: 1 + build: h56a123c_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda - sha256: e77a354bfc0ba7b04c856f1bb16e7b08950bcde54026087bafec46090380fcc1 - md5: 5d47bd2674afd104dbe2f2f3534594b0 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d + md5: 306bb541b83a83b66d5c1e6880302886 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu - - libarrow-dataset 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow-dataset 18.1.0 h36004a0_3_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 520681 - timestamp: 1732863726954 + size: 520740 + timestamp: 1733454379083 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h9b432b6_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda - sha256: 6dde802134bd2e78581eb838c049b2e7e378899706b471f7072222a6b1284b90 - md5: 49e7c0460532a73f34bd127fff009224 + build: hc52ba39_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 + md5: 7a8e305f1689687ed063bb4553c1a7a5 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu - - libarrow-dataset 18.1.0 h605b82c_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow-dataset 18.1.0 he2e0623_3_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 451127 - timestamp: 1732950194322 + size: 515638 + timestamp: 1733453200561 - kind: conda name: libblas version: 3.9.0 @@ -5689,86 +5685,46 @@ packages: - kind: conda name: liblzma version: 5.6.3 - build: h39f12f2_0 + build: h39f12f2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 - md5: faa0ab222b9d12a52a8ebc655c9236f3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 license: 0BSD - size: 98836 - timestamp: 1733321533638 + size: 99129 + timestamp: 1733407496073 - kind: conda name: liblzma version: 5.6.3 - build: h86ecc28_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f - md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 license: 0BSD - size: 124115 - timestamp: 1733323693681 + size: 124138 + timestamp: 1733409137214 - kind: conda name: liblzma version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 - md5: 137c535dddd880f844f33ed91b8abdba - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: 0BSD - size: 111223 - timestamp: 1733321312512 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 - md5: 89955d2470cbacea3d5e069d67c94f44 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD - size: 112941 - timestamp: 1733321552604 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 - md5: 27995ae8bc93eeb949315655daa19d3c - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD - size: 376767 - timestamp: 1733323860026 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: hb9d3cd8_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a - md5: 7069f4de645461447f1ab7736c94db26 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 license: 0BSD - size: 375452 - timestamp: 1733321322415 + size: 111132 + timestamp: 1733407410083 - kind: conda name: libnghttp2 version: 1.64.0 @@ -5920,61 +5876,58 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda - sha256: 83b8fa4a90e214fcd6018f890947666f055f79563fff2b7c3d5f37d894f3a000 - md5: ce205782960a580fa43cfcccca22ad8d + build: h3a603ae_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d + md5: 78d2f729e26788a3660cee9906f440e7 depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h5affd47_3_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1115906 - timestamp: 1732950250848 + size: 873697 + timestamp: 1733452286970 - kind: conda name: libparquet version: 18.1.0 - build: h5168bdf_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda - sha256: 454487d113974b923b4214a65aab780fd90c4914390d0b1f4640b1bf60537bff - md5: f995df7ee206617a3e858fd932d7bd2d + build: h553aec1_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b + md5: 46c6783e8b46449a9baabef57c69f30a depends: - - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 872333 - timestamp: 1732949558028 + size: 1116941 + timestamp: 1733452997475 - kind: conda name: libparquet version: 18.1.0 - build: h6bd9018_1_cpu - build_number: 1 + build: hbdb145b_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda - sha256: 0df119f4c1a2387d910e132c670b29ee5b29dd79384549de6f1a43067515c8ba - md5: 1054909202f86e38bbbb7ca1131b8471 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 + md5: cb249762e1e65941b559d436c60e520d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1203523 - timestamp: 1732863665743 + size: 1204740 + timestamp: 1733454014411 - kind: conda name: libpng version: 1.6.44 @@ -6385,86 +6338,70 @@ packages: - kind: conda name: libtiff version: 4.7.0 - build: he137b08_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 - md5: 63872517c98aa305da58a757c443698e + build: ha962b0a_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be + md5: 8e14b5225c593f099a21971568e6d7b4 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 + - libcxx >=18 - libdeflate >=1.22,<1.23.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - - libstdcxx >=13 + - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 428156 - timestamp: 1728232228989 + size: 370387 + timestamp: 1733443310502 - kind: conda name: libtiff version: 4.7.0 - build: hec21d91_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d - md5: 1f80061f5ba6956fcdc381f34618cd8d + build: hc4654cb_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 + md5: be54fb40ea32e8fe9dbaa94d4528b57e depends: + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - libdeflate >=1.22,<1.23.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 464938 - timestamp: 1728232266969 + size: 429018 + timestamp: 1733443013288 - kind: conda name: libtiff version: 4.7.0 - build: hfce79cd_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d - md5: b9abf45f7c64caf3303725f1aa0e9a4d + build: hca96517_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 + md5: 278dcef6d1ea28c04109c3f5dea126cb depends: - - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - - libcxx >=17 - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 366323 - timestamp: 1728232400072 -- kind: conda - name: libutf8proc - version: 2.8.0 - build: hf23e847_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb - md5: b1aa0faa95017bca11369bd080487ec4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 80852 - timestamp: 1732829699583 + size: 464857 + timestamp: 1733443105529 - kind: conda name: libutf8proc version: 2.9.0 @@ -6495,6 +6432,22 @@ packages: license_family: MIT size: 81526 timestamp: 1732868466862 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 81500 + timestamp: 1732868419835 - kind: conda name: libuuid version: 2.38.1 @@ -6695,60 +6648,62 @@ packages: - kind: conda name: libxml2 version: 2.13.5 - build: h064dc61_0 + build: h0d44e9d_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - sha256: 7ab7fb45a0014981d35247cd5b09057fc8ed3c07378086a6c7ad552915928647 - md5: fb16b85a5be1328ac1c44b098b74c570 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 constrains: - icu <0.0a0 license: MIT license_family: MIT - size: 689363 - timestamp: 1731489619071 + size: 689993 + timestamp: 1733443678322 - kind: conda name: libxml2 version: 2.13.5 - build: h376fa9f_0 + build: h178c5d8_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - sha256: d443703d324f3dbd628d58ea498ab0e474c06d5771e7f55baf215fdbc11ceb87 - md5: adea92805465ed3dcf0776b428e34744 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - constrains: - - icu <0.0a0 license: MIT license_family: MIT - size: 582076 - timestamp: 1731489850179 + size: 582898 + timestamp: 1733443841584 - kind: conda name: libxml2 version: 2.13.5 - build: hf4efe5d_0 + build: h2e0c361_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 - md5: 5650ac8a6ed680c032bdabe40ad19ee0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 734453 - timestamp: 1731489860751 + size: 732155 + timestamp: 1733443825814 - kind: conda name: libzlib version: 1.3.1 @@ -6803,20 +6758,20 @@ packages: timestamp: 1727963148474 - kind: conda name: llvm-openmp - version: 19.1.4 + version: 19.1.5 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 + md5: f2c2e187a1d2637d282e34dc92021a70 depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.5|19.1.5.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281554 - timestamp: 1732102484807 + size: 281120 + timestamp: 1733376089600 - kind: conda name: lz4-c version: 1.9.4 @@ -6940,91 +6895,92 @@ packages: - kind: conda name: matplotlib-inline version: 0.1.7 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda - sha256: 7ea68676ea35fbb095420bbcc1c82c4767b8be7bb56abb6989b7f89d957a3bab - md5: 779345c95648be40d22aaa89de7d4254 + url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + sha256: 69b7dc7131703d3d60da9b0faa6dd8acbf6f6c396224cf6aef3e855b8c0c41c6 + md5: af6ab708897df59bd6e7283ceab1b56b depends: - - python >=3.6 + - python >=3.9 - traitlets license: BSD-3-Clause license_family: BSD - size: 14599 - timestamp: 1713250613726 + size: 14467 + timestamp: 1733417051523 - kind: conda name: max - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f - md5: 09947b7aa3a3c35b413b7c0d118126e3 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 + md5: 562c33b920321a676acb3fc49c2ddb11 depends: - - max-core ==24.6.0.dev2024120416 release - - max-python >=24.6.0.dev2024120416,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120416 release - - mblack ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release + - max-python >=24.6.0.dev2024120616,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120616 release license: LicenseRef-Modular-Proprietary - size: 9925 - timestamp: 1733332193356 + size: 9919 + timestamp: 1733502206770 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef - md5: 43a976936171480fe7dbc2fed1224312 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 + md5: 88e589273bf2ae77f80f879adacd234a depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245904359 - timestamp: 1733332193354 + size: 247418489 + timestamp: 1733502146971 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 - md5: 15cac805514c6a381a9a50ee3a86de25 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b + md5: 5243c455575512a6061067e3b5d67e0f depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249618446 - timestamp: 1733332472125 + size: 251333959 + timestamp: 1733502206769 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 - md5: c27c6f67be3abffbf559bfd50852b493 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 + md5: 99f131bbf681d02fe75d5f9e7dc0ab57 depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 210212276 - timestamp: 1733332258535 + size: 211890615 + timestamp: 1733502249826 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 - md5: 78af7733b4858c1bd882279a45e98795 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b + md5: aa4c20f7f7f821d9b736c319b9b9d89a depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -7046,18 +7002,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122878721 - timestamp: 1733332193368 + size: 123619079 + timestamp: 1733502146987 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 - md5: 55ff43da6401cdd96073ae044b428afd + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f + md5: df25189682c30a5259b1ffada686cef2 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -7079,18 +7035,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126526187 - timestamp: 1733332472138 + size: 127361426 + timestamp: 1733502206780 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 - md5: b84b205dbce4660cdea5b0e3cda227e9 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b + md5: f03ead2bca51c2cd060703fe64ee40da depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -7112,17 +7068,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 111629688 - timestamp: 1733332258538 + size: 112339857 + timestamp: 1733502249829 - kind: conda name: mblack - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda - sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 - md5: 85c700946ce4a5ce8d11f5ee66b477cf + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 + md5: dec7dbfe11abd34b171d290d38adea24 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7132,8 +7088,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130641 - timestamp: 1733332193362 + size: 130704 + timestamp: 1733502206776 - kind: conda name: mdurl version: 0.1.2 @@ -7168,21 +7124,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 - md5: 411a1d159867c56043991824d1ee88d9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 + md5: 1420c233cedc5e554c728d5f8b2b1657 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22946 - timestamp: 1733332193363 + size: 11371 + timestamp: 1733502206776 - kind: conda name: multidict version: 6.1.0 @@ -7330,13 +7286,13 @@ packages: - kind: conda name: nbconvert-core version: 7.16.4 - build: pyhd8ed1ab_1 - build_number: 1 + build: pyhff2d567_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda - sha256: 074d858c5808e0a832acc0da37cd70de1565e8d6e17a62d5a11b3902b5e78319 - md5: e2d2abb421c13456a9a9f80272fdf543 + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhff2d567_2.conda + sha256: 03a1303ce135a8214b450e751d93c9048f55edb37f3f9f06c5e9d78ba3ef2a89 + md5: 0457fdf55c88e52e0e7b63691eafcc48 depends: - beautifulsoup4 - bleach @@ -7356,31 +7312,30 @@ packages: - tinycss2 - traitlets >=5.0 constrains: - - nbconvert =7.16.4=*_1 + - nbconvert =7.16.4=*_2 - pandoc >=2.9.2,<4.0.0 license: BSD-3-Clause - license_family: BSD - size: 189599 - timestamp: 1718135529468 + size: 188505 + timestamp: 1733405603619 - kind: conda name: nbformat version: 5.10.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda - sha256: 36fe73da4d37bc7ac2d1540526ecd294fbd09acda04e096181ab8f1ccd2b464c - md5: 0b57b5368ab7fc7cdc9e3511fa867214 + url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + sha256: 7a5bd30a2e7ddd7b85031a5e2e14f290898098dc85bea5b3a5bf147c25122838 + md5: bbe1963f1e47f594070ffe87cdf612ea depends: - jsonschema >=2.6 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-fastjsonschema >=2.15 - traitlets >=5.1 license: BSD-3-Clause - license_family: BSD - size: 101232 - timestamp: 1712239122969 + size: 100945 + timestamp: 1733402844974 - kind: conda name: ncurses version: '6.5' @@ -7443,19 +7398,19 @@ packages: - kind: conda name: notebook-shim version: 0.2.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_0.conda - sha256: 9b5fdef9ebe89222baa9da2796ebe7bc02ec6c5a1f61327b651d6b92cf9a0230 - md5: 3d85618e2c97ab896b5b5e298d32b5b3 + url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + sha256: 7b920e46b9f7a2d2aa6434222e5c8d739021dbc5cc75f32d124a8191d86f9056 + md5: e7f89ea5f7ea9401642758ff50a2d9c1 depends: - jupyter_server >=1.8,<3 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 16880 - timestamp: 1707957948029 + size: 16817 + timestamp: 1733408419340 - kind: conda name: numpy version: 1.26.4 @@ -8086,18 +8041,18 @@ packages: - kind: conda name: pkgutil-resolve-name version: 1.3.10 - build: pyhd8ed1ab_1 - build_number: 1 + build: pyhd8ed1ab_2 + build_number: 2 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda - sha256: fecf95377134b0e8944762d92ecf7b0149c07d8186fb5db583125a2705c7ea0a - md5: 405678b942f2481cecdb3e010f4925d9 + url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 + md5: 5a5870a74432aa332f7d32180633ad05 depends: - - python >=3.6 + - python >=3.9 license: MIT AND PSF-2.0 - size: 10778 - timestamp: 1694617398467 + size: 10693 + timestamp: 1733344619659 - kind: conda name: platformdirs version: 4.3.6 @@ -8150,58 +8105,55 @@ packages: timestamp: 1733302634979 - kind: conda name: propcache - version: 0.2.0 - build: py312h024a12e_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - sha256: 0f3a04675c6c473398f0aaa95c259e0a085d5ec106b4fa89a7efeb7cc73d5dd2 - md5: 6693e523bc43c38508efe14ab3374f0c + version: 0.2.1 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 + md5: 55d5742a696d7da1c1262e99b6217ceb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 47796 - timestamp: 1728545963127 + size: 52747 + timestamp: 1733391916349 - kind: conda name: propcache - version: 0.2.0 - build: py312h66e93f0_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - sha256: be7aa0056680dd6e528b7992169a20dd525b94f62d37c8ba0fbf69bd4e8df57d - md5: 2c6c0c68f310bc33972e7c83264d7786 + version: 0.2.1 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b + md5: 50ab8953e7ff1333a4a47cda32e68123 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53498 - timestamp: 1728545927816 + size: 52484 + timestamp: 1733391993461 - kind: conda name: propcache - version: 0.2.0 - build: py312hb2c0f52_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - sha256: 50dad7604b6c20440baf081700b5d6829097121e65f34fd1a15508b20fbecc07 - md5: 8a258196d6f79ad32d3ea4dd4572f721 + version: 0.2.1 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d + md5: c84e3dd97fe25a17322c4a0f670c6750 depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53507 - timestamp: 1728546155066 + size: 48225 + timestamp: 1733392308901 - kind: conda name: protobuf version: 5.28.2 @@ -8755,91 +8707,94 @@ packages: timestamp: 1733217331982 - kind: conda name: python - version: 3.12.7 - build: h5d932e8_0_cpython + version: 3.12.8 + build: h1683364_1_cpython + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - sha256: 25570873d92d4d9490c6db780cc85e6c28bd3ff61dc1ece79f602cf82bc73bc1 - md5: e6cab21bb5787270388939cf41cc5f43 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 13762126 - timestamp: 1728057461028 + size: 13760816 + timestamp: 1733407890896 - kind: conda name: python - version: 3.12.7 - build: h739c21a_0_cpython - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - sha256: 45d7ca2074aa92594bd2f91a9003b338cc1df8a46b9492b7fc8167110783c3ef - md5: e0d82e57ebb456077565e6d82cd4a323 + version: 3.12.8 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 12975439 - timestamp: 1728057819519 + size: 31565686 + timestamp: 1733410597922 - kind: conda name: python - version: 3.12.7 - build: hc5c86c4_0_cpython - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d - md5: 0515111a9cdf69f83278f7c197db9807 + version: 3.12.8 + build: hc22306f_1_cpython + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 31574780 - timestamp: 1728059777603 + size: 12998673 + timestamp: 1733408900971 - kind: conda name: python-dateutil version: 2.9.0.post0 @@ -9266,20 +9221,21 @@ packages: - kind: conda name: referencing version: 0.35.1 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda - sha256: be8d6d9e86b1a3fef5424127ff81782f8ca63d3058980859609f6f1ecdd34cb3 - md5: 0fc8b52192a8898627c3efae1003e9f6 + url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + sha256: f972eecb4dc8e06257af37642f92b0f2df04a7fe4c950f2e1045505e5e93985f + md5: 8c9083612c1bfe6878715ed5732605f8 depends: - attrs >=22.2.0 - - python >=3.8 + - python >=3.9 - rpds-py >=0.7.0 license: MIT license_family: MIT - size: 42210 - timestamp: 1714619625532 + size: 42201 + timestamp: 1733366868091 - kind: conda name: regex version: 2024.11.6 @@ -9387,29 +9343,30 @@ packages: - kind: conda name: rich version: 13.9.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 - md5: bcf8cc8924b5d20ead3d122130b8320b + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0,<5.0.0 license: MIT license_family: MIT - size: 185481 - timestamp: 1730592349978 + size: 185646 + timestamp: 1733342347277 - kind: conda name: rpds-py - version: 0.22.1 + version: 0.22.3 build: py312h12e396e_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.1-py312h12e396e_0.conda - sha256: 26f29cd937e9a28ea9ac6a32b3669e0cabe815343df43ce19c0ca076861e1c8e - md5: db784e4ddb4c55c95cc15a7572802ef1 + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.3-py312h12e396e_0.conda + sha256: e8662d21ca3c912ac8941725392b838a29458b106ef22d9489cdf0f8de145fad + md5: bfb49da0cc9098597d527def04d66f8b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -9419,16 +9376,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 355539 - timestamp: 1733275174505 + size: 354410 + timestamp: 1733366814237 - kind: conda name: rpds-py - version: 0.22.1 + version: 0.22.3 build: py312ha4e36d7_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.1-py312ha4e36d7_0.conda - sha256: efa181de72c022ef3c763d69dc6886cf2e7b8dcbd99e4226954a05d08001dcd8 - md5: ed1137158174c5b8f09f05feb7b66313 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.3-py312ha4e36d7_0.conda + sha256: bd8215aea86b57f7d036d53eee813a544736e94783faeb7b928931fca45715f8 + md5: 4d41b57d0d3933b9cab7ac8c05745123 depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -9437,16 +9394,16 @@ packages: - __glibc >=2.17 license: MIT license_family: MIT - size: 348239 - timestamp: 1733277204922 + size: 348424 + timestamp: 1733368364148 - kind: conda name: rpds-py - version: 0.22.1 + version: 0.22.3 build: py312hcd83bfe_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.1-py312hcd83bfe_0.conda - sha256: bcfa291e5ef9d2015f15d9d0007f5bfbda64de1ae9bf8f3849827be4839949bd - md5: 1db30d93318545c64c4db230cba68f16 + url: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.3-py312hcd83bfe_0.conda + sha256: 0a8b50bf22400004a706ba160d7cb31f82b8d8c328a59aec73a9e0d3372d1964 + md5: 2f7c4d01946fa2ce73d7ef3eeb041877 depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -9456,8 +9413,8 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 318035 - timestamp: 1733275269664 + size: 318920 + timestamp: 1733367225496 - kind: conda name: s2n version: 1.5.9 @@ -9615,65 +9572,68 @@ packages: timestamp: 1733301007770 - kind: conda name: six - version: 1.16.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.17.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c - md5: a516da6cfe1ec0a55e49737f017b4965 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - python >=3.9 license: MIT license_family: MIT size: 16385 - timestamp: 1733216901349 + timestamp: 1733381032766 - kind: conda name: snappy version: 1.2.1 - build: h1088aeb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f - md5: e4ed5b015f525b56f95c26d85a4ea208 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 42888 - timestamp: 1720003817527 + size: 42739 + timestamp: 1733501881851 - kind: conda name: snappy version: 1.2.1 - build: ha2e4443_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f - md5: 6b7dcc7349efd123d493d2dbe85a045f + build: h98b9ce2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: BSD-3-Clause license_family: BSD - size: 42465 - timestamp: 1720003704360 + size: 35857 + timestamp: 1733502172664 - kind: conda name: snappy version: 1.2.1 - build: hd02b534_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 - md5: 69d0f9694f3294418ee935da3d5f7272 + build: hd4fb6f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 35708 - timestamp: 1720003794374 + size: 43032 + timestamp: 1733501964775 - kind: conda name: sniffio version: 1.3.1 @@ -9745,20 +9705,21 @@ packages: - kind: conda name: starlette version: 0.41.3 - build: pyh7900ff3_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - sha256: 33986032cb0515f7e9f6647d07006b7dc49b3f373b73d5a1826e6979c661b27a - md5: 0889c5a3e95d8c382cff7556757aedb0 + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 depends: - anyio >=3.4.0,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 59069 - timestamp: 1732037161800 + size: 58838 + timestamp: 1733344472634 - kind: conda name: terminado version: 0.18.1 @@ -10006,18 +9967,19 @@ packages: - kind: conda name: traitlets version: 5.14.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 110187 - timestamp: 1713535244513 + size: 110051 + timestamp: 1733367480074 - kind: conda name: transformers version: 4.46.3 @@ -10046,58 +10008,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 - md5: cf9393f5733c7277b1a5f79145f8485b + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 depends: - python >=3.9 - - typer-slim-standard 0.15.0 hd8ed1ab_0 + - typer-slim-standard 0.15.1 hd8ed1ab_0 license: MIT license_family: MIT - size: 56455 - timestamp: 1733279871129 + size: 56175 + timestamp: 1733408582623 - kind: conda name: typer-slim - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc - md5: 629fef89115de5a907fb9765cdd45b26 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - - typer >=0.15.0,<0.15.1.0a0 - - shellingham >=1.3.0 - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 license: MIT license_family: MIT - size: 43480 - timestamp: 1733279858535 + size: 43592 + timestamp: 1733408569554 - kind: conda name: typer-slim-standard - version: 0.15.0 + version: 0.15.1 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 - md5: a4746fc9efbff02c1a288d8fcd8ffba9 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: - rich - shellingham - - typer-slim 0.15.0 pyhd8ed1ab_0 + - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 50259 - timestamp: 1733279859017 + size: 49531 + timestamp: 1733408570063 - kind: conda name: types-python-dateutil version: 2.9.0.20241003 @@ -10158,6 +10120,7 @@ packages: depends: - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 15183 timestamp: 1733331395943 - kind: conda @@ -10383,20 +10346,19 @@ packages: timestamp: 1733231433877 - kind: conda name: webcolors - version: 24.8.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 24.11.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.8.0-pyhd8ed1ab_1.conda - sha256: b0f2e15fe5c141d0900e03179f5fc04a20d2e70592d070fd4ce016ae33c7068a - md5: 5bfc9a98cfe3ddbf10624d6a78077639 + url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + sha256: 08315dc2e61766a39219b2d82685fc25a56b2817acf84d5b390176080eaacf99 + md5: b49f7b291e15494aafb0a7d74806f337 depends: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 18514 - timestamp: 1733312181508 + size: 18431 + timestamp: 1733359823938 - kind: conda name: webencodings version: 0.5.1 @@ -10676,144 +10638,6 @@ packages: license_family: BSD size: 97691 timestamp: 1689951608120 -- kind: conda - name: xz - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec - md5: da081cb850e57b0a0a242bab9087fbeb - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - - liblzma-devel 5.6.3 h86ecc28_0 - - xz-gpl-tools 5.6.3 h2dbfc1b_0 - - xz-tools 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23448 - timestamp: 1733324353894 -- kind: conda - name: xz - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 - md5: 86674fa432df20be6feea4bd8fec0668 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - - liblzma-devel 5.6.3 h39f12f2_0 - - xz-gpl-tools 5.6.3 h9a6d368_0 - - xz-tools 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23570 - timestamp: 1733321627935 -- kind: conda - name: xz - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 - md5: 504333561007fbf0af129f0cee4f5652 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - - liblzma-devel 5.6.3 hb9d3cd8_0 - - xz-gpl-tools 5.6.3 hbcc6ac9_0 - - xz-tools 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23435 - timestamp: 1733321352996 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca - md5: b0245c3aad4592510bb0c19212c1bded - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33355 - timestamp: 1733324193303 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd - md5: 9e4519aef300966683764ccbbaa89da4 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33343 - timestamp: 1733321610703 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db - md5: e4f1e59ca2971e8d0fdde0928c3f7b7f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33299 - timestamp: 1733321343126 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 - md5: 10855380caa384c8388b93ef29c7bd04 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later - size: 81129 - timestamp: 1733321582233 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 - md5: 0136c7aa78b4d887c9fb6dbf39749778 - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later - size: 95353 - timestamp: 1733324033407 -- kind: conda - name: xz-tools - version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 - md5: 40270c1e058fd1d31caee8bf2c68fc3a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later - size: 89832 - timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 @@ -10859,64 +10683,64 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312h66e93f0_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - sha256: 8a1e51303ecac64f10dd0ec548d472c49954c3e2f38023ef28899191580795e1 - md5: 601d2b19a54fd9346ba18c07c2516339 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 + md5: 91df2efaa08730416bec2a4502309275 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 151247 - timestamp: 1732220988648 + size: 151393 + timestamp: 1733428897813 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hb2c0f52_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - sha256: 2ead24d5c50a2edd6348be5888677100b12b98921d1b6fe2f4cd980b0b85ffb2 - md5: 7dbbd950a7f762c2c8ab835932b12001 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 + md5: 0b3c640697bca798d0ab428f530ed24c depends: - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 149149 - timestamp: 1732221057827 + size: 150004 + timestamp: 1733429056665 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hea69d52_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - sha256: 4c90de12b1569f85126a12dbbb89f3dc10cee5838335b9c9993ead8bf1594cd3 - md5: f538709098e1642d50f4a01707e7dfdb + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba + md5: f32f9b16361866a62d6e061fcd7eb400 depends: - __osx >=11.0 - idna >=2.0 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 141452 - timestamp: 1732221306526 + size: 141556 + timestamp: 1733429104990 - kind: conda name: zeromq version: 4.3.5 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index ce04d5e3a6..5a0f9a46e1 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -26,7 +26,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -49,12 +49,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -63,13 +63,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -105,12 +105,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -120,24 +119,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -159,7 +158,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda @@ -171,7 +170,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -186,25 +185,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -218,11 +217,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda @@ -247,7 +243,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -270,12 +266,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -284,14 +280,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda @@ -299,10 +295,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -327,12 +323,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -342,24 +337,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -381,7 +376,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda @@ -393,7 +388,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -408,25 +403,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -440,11 +435,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda @@ -468,7 +460,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -491,12 +483,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -505,22 +497,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -543,11 +536,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -555,23 +547,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -593,7 +585,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda @@ -605,7 +597,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -620,24 +612,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -651,11 +643,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda @@ -720,6 +709,7 @@ packages: depends: - python >=3.9 license: PSF-2.0 + license_family: PSF size: 19351 timestamp: 1733332029649 - kind: conda @@ -808,6 +798,7 @@ packages: - frozenlist >=1.1.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 13157 timestamp: 1733332198143 - kind: conda @@ -1533,13 +1524,12 @@ packages: timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h3b64406_4 - build_number: 4 + version: 1.11.458 + build: h3b64406_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - sha256: 10ce9c203d31229432421a841d8d135d3e942637571aae4bb2d3c7d5242e7f05 - md5: f9e46a4bb5a04cbca08355f166ce87c8 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e + md5: 9a8d3ba158ff8ea08e17de366c238706 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1552,17 +1542,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2722689 - timestamp: 1732812825640 + size: 2853609 + timestamp: 1733389337912 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h5558e3c_4 - build_number: 4 + version: 1.11.458 + build: h5558e3c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - sha256: 4881f7b4f5e3c797332cffb990df246a422346b220a9c16014f274beb2a276f5 - md5: ba7abdc93b0ade11d774b47aaab84737 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 + md5: b1919becd17fe224aacf708114231fda depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1576,17 +1565,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2945541 - timestamp: 1732812288219 + size: 3059100 + timestamp: 1733388777418 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h7085e57_4 - build_number: 4 + version: 1.11.458 + build: h7085e57_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - sha256: 0908a82e7c50c51d5ee0ca543dbe70cbe1963e6e8f80ffa58ea6d26e5c68251e - md5: feec198cb18a5e90aa36c97328567d63 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 + md5: 005e0cc687a2421a4ad493e5b7058abe depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1599,8 +1587,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2813856 - timestamp: 1732812337182 + size: 2903434 + timestamp: 1733388870289 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2333,13 +2321,13 @@ packages: timestamp: 1733208916977 - kind: conda name: fastapi - version: 0.115.5 - build: pyhff2d567_0 + version: 0.115.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - sha256: da2833cc2ea5789abc2a6899be02ba0a769386d4913ff182bd1a9458bea40c34 - md5: cfe0f8cd904ab19c36ba50eb5179ebe0 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: - email_validator >=2.0.0 - fastapi-cli >=0.0.5 @@ -2353,8 +2341,8 @@ packages: - uvicorn-standard >=0.12.0 license: MIT license_family: MIT - size: 73541 - timestamp: 1731452895466 + size: 73084 + timestamp: 1733362427885 - kind: conda name: fastapi-cli version: 0.0.5 @@ -2489,18 +2477,18 @@ packages: - kind: conda name: fsspec version: 2024.10.0 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 - md5: 816dbc4679a64e4417cd1385d661bb31 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 + md5: 906fe13095e734cb413b57a49116cdc8 depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 134745 - timestamp: 1729608972363 + size: 134726 + timestamp: 1733493445080 - kind: conda name: gflags version: 2.2.2 @@ -2740,12 +2728,13 @@ packages: - kind: conda name: httpx version: 0.28.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - sha256: cb7895446cd93091300accea6afbc8d9811a3c5899922ccfeeff97d9b55909dc - md5: 22878824a87f1af2ad48665f9d5bfcc8 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 + md5: 8a4a83ba566c6b5c718dd0531a362d01 depends: - anyio - certifi @@ -2754,8 +2743,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63183 - timestamp: 1732831049776 + size: 63203 + timestamp: 1733501478172 - kind: conda name: huggingface_hub version: 0.26.3 @@ -2810,6 +2799,20 @@ packages: license_family: MIT size: 12282786 timestamp: 1720853454991 +- kind: conda + name: icu + version: '75.1' + build: hfee45f7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 - kind: conda name: idna version: '3.10' @@ -2862,24 +2865,25 @@ packages: - kind: conda name: jupyter_client version: 8.6.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 - md5: a14218cfb29662b4a19ceb04e93e298e + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-dateutil >=2.8.2 - pyzmq >=23.0 - tornado >=6.2 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 106055 - timestamp: 1726610805505 + size: 106342 + timestamp: 1733441040958 - kind: conda name: jupyter_core version: 5.7.2 @@ -3165,16 +3169,16 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h654e1bb_2_cpu - build_number: 2 + build: h5affd47_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - sha256: 925dcb034f36536eed21d9323f096bf2ebf1111d14c61e1ae0b90e5de131f1e1 - md5: e69934ff9dd8745fea8927028d1603ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 + md5: 3dc73b42851e6096542458eaf2c074ca depends: - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3198,24 +3202,23 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5475725 - timestamp: 1732947802614 + size: 5487846 + timestamp: 1733450423101 - kind: conda name: libarrow version: 18.1.0 - build: hc7b0e1d_2_cpu - build_number: 2 + build: hb63acf4_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - sha256: 3201944d1f97b9207e566ccf388c8376bb2ce7e461534cda63a28975b6790901 - md5: 4a46bd0be8e7f56a217d26b79d290a0e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 + md5: d98a11c3ba32554873aeb6a071baceaa depends: - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3240,26 +3243,25 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8026783 - timestamp: 1732950110265 + size: 8048003 + timestamp: 1733452700958 - kind: conda name: libarrow version: 18.1.0 - build: he15abb1_1_cpu - build_number: 1 + build: hcf3f2e3_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - sha256: afc81af2e533cc35295aebae4fb382e770310d9b1ac31837456b440d35c54cf7 - md5: bd3e35a6f3f869b4777488452f315008 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e + md5: 196823c7752608cb6b5d5a7a33b17410 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3276,7 +3278,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<2.9.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3284,190 +3286,180 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 8780597 - timestamp: 1732863546099 + size: 8796519 + timestamp: 1733453489520 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 + build: h36004a0_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - sha256: 3de5719a7035baad7e665116dce7bb3d069f0c1916e163c553e2e491bbe8b614 - md5: 6197dcb930f6254e9b2fdc416be56b71 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 + md5: 6d8f74ac97166e09cdf02109ed9905ce depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 611272 - timestamp: 1732863586114 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - sha256: e6c8988d1d79163d6d13dda21f9e401f5df4b3af7e0d221718522c600894adcf - md5: 14fede66c995f3cf958797e9fb567e22 - depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 577510 - timestamp: 1732950190684 + size: 612773 + timestamp: 1733453636002 - kind: conda name: libarrow-acero version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - sha256: cfe32f1b0712b77d2c792a839fe4ea2790cabd99d47cd8e1b20ba2d3c8b113b2 - md5: 60351279d7dfd7c254c46aabf9aa35a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 + md5: f3a050129b5012bd5fc381693f6eb2cd depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 483362 - timestamp: 1732948000606 + size: 483753 + timestamp: 1733450627207 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - sha256: 7b3db3d5a7e411f8897e8d74403c1d871f3054300f5009c4bdf75da011bc3f42 - md5: 77501831a2aabbaabac55e8cb3b6900a + build: he2e0623_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a + md5: fa54002b982019ecc0e93cb4b2c493e9 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hb63acf4_3_cpu - libgcc >=13 - - libparquet 18.1.0 h6bd9018_1_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585458 - timestamp: 1732863686753 + size: 578323 + timestamp: 1733452783322 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - sha256: 53cdae2150c22ef9b5d6de8d0ee8ac52eeacc50fdfa2fa3ea644b52436d1eeb1 - md5: c54d83f012a40fef8a2dc4856e4340a0 + build: h36004a0_3_cpu + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 + md5: e9eac639d83b1c35f7743845b922d61a depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_2_cpu + - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 559143 - timestamp: 1732950272727 + size: 585416 + timestamp: 1733454137952 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - sha256: eeae9e8d382c482076f4739455b53f16851d7f99be219b6f96dd4e765132b446 - md5: b5fcaddabf47aa15e50feff072a55ada + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 + md5: 8c57e5a50f865a16cafd92f5a32c9faa depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu - libcxx >=18 - - libparquet 18.1.0 h5168bdf_2_cpu + - libparquet 18.1.0 h3a603ae_3_cpu license: Apache-2.0 - license_family: APACHE - size: 489769 - timestamp: 1732949732423 + size: 489900 + timestamp: 1733452479126 - kind: conda - name: libarrow-substrait + name: libarrow-dataset version: 18.1.0 - build: h14ec2bd_2_cpu - build_number: 2 + build: he2e0623_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda - sha256: e8923d62cfaadc4a8af1735e717fd4980cad693419e63aed04380566d9fd46df - md5: 4fd0103449cf40214fd348643aa78fff + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff + md5: 048f04da68a40e9e5e1e66ff9502b237 + depends: + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libgcc >=13 + - libparquet 18.1.0 h553aec1_3_cpu + - libstdcxx >=13 + license: Apache-2.0 + size: 559844 + timestamp: 1733453065157 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: h4c1644f_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 + md5: 7ba2783c26a0008307e2a1e637c2930f depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu - - libarrow-dataset 18.1.0 h5ad3122_2_cpu - - libgcc >=13 + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow-dataset 18.1.0 haafc02e_3_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 515352 - timestamp: 1732950311471 + size: 451428 + timestamp: 1733453012619 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h5c8f2c3_1_cpu - build_number: 1 + build: h56a123c_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda - sha256: e77a354bfc0ba7b04c856f1bb16e7b08950bcde54026087bafec46090380fcc1 - md5: 5d47bd2674afd104dbe2f2f3534594b0 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d + md5: 306bb541b83a83b66d5c1e6880302886 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu - - libarrow-dataset 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow-dataset 18.1.0 h36004a0_3_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 520681 - timestamp: 1732863726954 + size: 520740 + timestamp: 1733454379083 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h9b432b6_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda - sha256: 6dde802134bd2e78581eb838c049b2e7e378899706b471f7072222a6b1284b90 - md5: 49e7c0460532a73f34bd127fff009224 + build: hc52ba39_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 + md5: 7a8e305f1689687ed063bb4553c1a7a5 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu - - libarrow-dataset 18.1.0 h605b82c_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow-dataset 18.1.0 he2e0623_3_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 451127 - timestamp: 1732950194322 + size: 515638 + timestamp: 1733453200561 - kind: conda name: libblas version: 3.9.0 @@ -4674,86 +4666,46 @@ packages: - kind: conda name: liblzma version: 5.6.3 - build: h39f12f2_0 + build: h39f12f2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 - md5: faa0ab222b9d12a52a8ebc655c9236f3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 license: 0BSD - size: 98836 - timestamp: 1733321533638 + size: 99129 + timestamp: 1733407496073 - kind: conda name: liblzma version: 5.6.3 - build: h86ecc28_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f - md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 license: 0BSD - size: 124115 - timestamp: 1733323693681 + size: 124138 + timestamp: 1733409137214 - kind: conda name: liblzma version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 - md5: 137c535dddd880f844f33ed91b8abdba - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: 0BSD - size: 111223 - timestamp: 1733321312512 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 - md5: 89955d2470cbacea3d5e069d67c94f44 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD - size: 112941 - timestamp: 1733321552604 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 - md5: 27995ae8bc93eeb949315655daa19d3c - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD - size: 376767 - timestamp: 1733323860026 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: hb9d3cd8_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a - md5: 7069f4de645461447f1ab7736c94db26 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 license: 0BSD - size: 375452 - timestamp: 1733321322415 + size: 111132 + timestamp: 1733407410083 - kind: conda name: libnghttp2 version: 1.64.0 @@ -4905,61 +4857,58 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda - sha256: 83b8fa4a90e214fcd6018f890947666f055f79563fff2b7c3d5f37d894f3a000 - md5: ce205782960a580fa43cfcccca22ad8d + build: h3a603ae_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d + md5: 78d2f729e26788a3660cee9906f440e7 depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h5affd47_3_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1115906 - timestamp: 1732950250848 + size: 873697 + timestamp: 1733452286970 - kind: conda name: libparquet version: 18.1.0 - build: h5168bdf_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda - sha256: 454487d113974b923b4214a65aab780fd90c4914390d0b1f4640b1bf60537bff - md5: f995df7ee206617a3e858fd932d7bd2d + build: h553aec1_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b + md5: 46c6783e8b46449a9baabef57c69f30a depends: - - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 872333 - timestamp: 1732949558028 + size: 1116941 + timestamp: 1733452997475 - kind: conda name: libparquet version: 18.1.0 - build: h6bd9018_1_cpu - build_number: 1 + build: hbdb145b_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda - sha256: 0df119f4c1a2387d910e132c670b29ee5b29dd79384549de6f1a43067515c8ba - md5: 1054909202f86e38bbbb7ca1131b8471 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 + md5: cb249762e1e65941b559d436c60e520d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1203523 - timestamp: 1732863665743 + size: 1204740 + timestamp: 1733454014411 - kind: conda name: libpng version: 1.6.44 @@ -5370,86 +5319,70 @@ packages: - kind: conda name: libtiff version: 4.7.0 - build: he137b08_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 - md5: 63872517c98aa305da58a757c443698e + build: ha962b0a_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be + md5: 8e14b5225c593f099a21971568e6d7b4 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 + - libcxx >=18 - libdeflate >=1.22,<1.23.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - - libstdcxx >=13 + - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 428156 - timestamp: 1728232228989 + size: 370387 + timestamp: 1733443310502 - kind: conda name: libtiff version: 4.7.0 - build: hec21d91_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d - md5: 1f80061f5ba6956fcdc381f34618cd8d + build: hc4654cb_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 + md5: be54fb40ea32e8fe9dbaa94d4528b57e depends: + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - libdeflate >=1.22,<1.23.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 464938 - timestamp: 1728232266969 + size: 429018 + timestamp: 1733443013288 - kind: conda name: libtiff version: 4.7.0 - build: hfce79cd_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d - md5: b9abf45f7c64caf3303725f1aa0e9a4d + build: hca96517_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 + md5: 278dcef6d1ea28c04109c3f5dea126cb depends: - - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - - libcxx >=17 - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 366323 - timestamp: 1728232400072 -- kind: conda - name: libutf8proc - version: 2.8.0 - build: hf23e847_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb - md5: b1aa0faa95017bca11369bd080487ec4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 80852 - timestamp: 1732829699583 + size: 464857 + timestamp: 1733443105529 - kind: conda name: libutf8proc version: 2.9.0 @@ -5480,6 +5413,22 @@ packages: license_family: MIT size: 81526 timestamp: 1732868466862 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 81500 + timestamp: 1732868419835 - kind: conda name: libuuid version: 2.38.1 @@ -5680,60 +5629,62 @@ packages: - kind: conda name: libxml2 version: 2.13.5 - build: h064dc61_0 + build: h0d44e9d_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - sha256: 7ab7fb45a0014981d35247cd5b09057fc8ed3c07378086a6c7ad552915928647 - md5: fb16b85a5be1328ac1c44b098b74c570 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 constrains: - icu <0.0a0 license: MIT license_family: MIT - size: 689363 - timestamp: 1731489619071 + size: 689993 + timestamp: 1733443678322 - kind: conda name: libxml2 version: 2.13.5 - build: h376fa9f_0 + build: h178c5d8_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - sha256: d443703d324f3dbd628d58ea498ab0e474c06d5771e7f55baf215fdbc11ceb87 - md5: adea92805465ed3dcf0776b428e34744 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - constrains: - - icu <0.0a0 license: MIT license_family: MIT - size: 582076 - timestamp: 1731489850179 + size: 582898 + timestamp: 1733443841584 - kind: conda name: libxml2 version: 2.13.5 - build: hf4efe5d_0 + build: h2e0c361_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 - md5: 5650ac8a6ed680c032bdabe40ad19ee0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 734453 - timestamp: 1731489860751 + size: 732155 + timestamp: 1733443825814 - kind: conda name: libzlib version: 1.3.1 @@ -5788,20 +5739,20 @@ packages: timestamp: 1727963148474 - kind: conda name: llvm-openmp - version: 19.1.4 + version: 19.1.5 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 + md5: f2c2e187a1d2637d282e34dc92021a70 depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.5|19.1.5.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281554 - timestamp: 1732102484807 + size: 281120 + timestamp: 1733376089600 - kind: conda name: lz4-c version: 1.9.4 @@ -5924,76 +5875,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f - md5: 09947b7aa3a3c35b413b7c0d118126e3 - depends: - - max-core ==24.6.0.dev2024120416 release - - max-python >=24.6.0.dev2024120416,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120416 release - - mblack ==24.6.0.dev2024120416 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 + md5: 562c33b920321a676acb3fc49c2ddb11 + depends: + - max-core ==24.6.0.dev2024120616 release + - max-python >=24.6.0.dev2024120616,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120616 release license: LicenseRef-Modular-Proprietary - size: 9925 - timestamp: 1733332193356 + size: 9919 + timestamp: 1733502206770 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef - md5: 43a976936171480fe7dbc2fed1224312 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 + md5: 88e589273bf2ae77f80f879adacd234a depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245904359 - timestamp: 1733332193354 + size: 247418489 + timestamp: 1733502146971 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 - md5: 15cac805514c6a381a9a50ee3a86de25 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b + md5: 5243c455575512a6061067e3b5d67e0f depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249618446 - timestamp: 1733332472125 + size: 251333959 + timestamp: 1733502206769 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 - md5: c27c6f67be3abffbf559bfd50852b493 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 + md5: 99f131bbf681d02fe75d5f9e7dc0ab57 depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 210212276 - timestamp: 1733332258535 + size: 211890615 + timestamp: 1733502249826 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 - md5: 78af7733b4858c1bd882279a45e98795 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b + md5: aa4c20f7f7f821d9b736c319b9b9d89a depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -6015,18 +5966,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122878721 - timestamp: 1733332193368 + size: 123619079 + timestamp: 1733502146987 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 - md5: 55ff43da6401cdd96073ae044b428afd + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f + md5: df25189682c30a5259b1ffada686cef2 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -6048,18 +5999,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126526187 - timestamp: 1733332472138 + size: 127361426 + timestamp: 1733502206780 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 - md5: b84b205dbce4660cdea5b0e3cda227e9 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b + md5: f03ead2bca51c2cd060703fe64ee40da depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -6081,17 +6032,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 111629688 - timestamp: 1733332258538 + size: 112339857 + timestamp: 1733502249829 - kind: conda name: mblack - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda - sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 - md5: 85c700946ce4a5ce8d11f5ee66b477cf + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 + md5: dec7dbfe11abd34b171d290d38adea24 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6101,8 +6052,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130641 - timestamp: 1733332193362 + size: 130704 + timestamp: 1733502206776 - kind: conda name: mdurl version: 0.1.2 @@ -6121,21 +6072,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 - md5: 411a1d159867c56043991824d1ee88d9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 + md5: 1420c233cedc5e554c728d5f8b2b1657 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22946 - timestamp: 1733332193363 + size: 11371 + timestamp: 1733502206776 - kind: conda name: multidict version: 6.1.0 @@ -6872,58 +6823,55 @@ packages: timestamp: 1733327434163 - kind: conda name: propcache - version: 0.2.0 - build: py312h024a12e_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - sha256: 0f3a04675c6c473398f0aaa95c259e0a085d5ec106b4fa89a7efeb7cc73d5dd2 - md5: 6693e523bc43c38508efe14ab3374f0c + version: 0.2.1 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 + md5: 55d5742a696d7da1c1262e99b6217ceb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 47796 - timestamp: 1728545963127 + size: 52747 + timestamp: 1733391916349 - kind: conda name: propcache - version: 0.2.0 - build: py312h66e93f0_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - sha256: be7aa0056680dd6e528b7992169a20dd525b94f62d37c8ba0fbf69bd4e8df57d - md5: 2c6c0c68f310bc33972e7c83264d7786 + version: 0.2.1 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b + md5: 50ab8953e7ff1333a4a47cda32e68123 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53498 - timestamp: 1728545927816 + size: 52484 + timestamp: 1733391993461 - kind: conda name: propcache - version: 0.2.0 - build: py312hb2c0f52_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - sha256: 50dad7604b6c20440baf081700b5d6829097121e65f34fd1a15508b20fbecc07 - md5: 8a258196d6f79ad32d3ea4dd4572f721 + version: 0.2.1 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d + md5: c84e3dd97fe25a17322c4a0f670c6750 depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53507 - timestamp: 1728546155066 + size: 48225 + timestamp: 1733392308901 - kind: conda name: protobuf version: 5.28.2 @@ -7358,91 +7306,94 @@ packages: timestamp: 1733217331982 - kind: conda name: python - version: 3.12.7 - build: h5d932e8_0_cpython + version: 3.12.8 + build: h1683364_1_cpython + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - sha256: 25570873d92d4d9490c6db780cc85e6c28bd3ff61dc1ece79f602cf82bc73bc1 - md5: e6cab21bb5787270388939cf41cc5f43 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 13762126 - timestamp: 1728057461028 + size: 13760816 + timestamp: 1733407890896 - kind: conda name: python - version: 3.12.7 - build: h739c21a_0_cpython - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - sha256: 45d7ca2074aa92594bd2f91a9003b338cc1df8a46b9492b7fc8167110783c3ef - md5: e0d82e57ebb456077565e6d82cd4a323 + version: 3.12.8 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 12975439 - timestamp: 1728057819519 + size: 31565686 + timestamp: 1733410597922 - kind: conda name: python - version: 3.12.7 - build: hc5c86c4_0_cpython - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d - md5: 0515111a9cdf69f83278f7c197db9807 + version: 3.12.8 + build: hc22306f_1_cpython + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 31574780 - timestamp: 1728059777603 + size: 12998673 + timestamp: 1733408900971 - kind: conda name: python-dateutil version: 2.9.0.post0 @@ -7926,21 +7877,22 @@ packages: - kind: conda name: rich version: 13.9.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 - md5: bcf8cc8924b5d20ead3d122130b8320b + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0,<5.0.0 license: MIT license_family: MIT - size: 185481 - timestamp: 1730592349978 + size: 185646 + timestamp: 1733342347277 - kind: conda name: s2n version: 1.5.9 @@ -8063,65 +8015,68 @@ packages: timestamp: 1733301007770 - kind: conda name: six - version: 1.16.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.17.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c - md5: a516da6cfe1ec0a55e49737f017b4965 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - python >=3.9 license: MIT license_family: MIT size: 16385 - timestamp: 1733216901349 + timestamp: 1733381032766 - kind: conda name: snappy version: 1.2.1 - build: h1088aeb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f - md5: e4ed5b015f525b56f95c26d85a4ea208 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 42888 - timestamp: 1720003817527 + size: 42739 + timestamp: 1733501881851 - kind: conda name: snappy version: 1.2.1 - build: ha2e4443_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f - md5: 6b7dcc7349efd123d493d2dbe85a045f + build: h98b9ce2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: BSD-3-Clause license_family: BSD - size: 42465 - timestamp: 1720003704360 + size: 35857 + timestamp: 1733502172664 - kind: conda name: snappy version: 1.2.1 - build: hd02b534_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 - md5: 69d0f9694f3294418ee935da3d5f7272 + build: hd4fb6f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 35708 - timestamp: 1720003794374 + size: 43032 + timestamp: 1733501964775 - kind: conda name: sniffio version: 1.3.1 @@ -8159,20 +8114,21 @@ packages: - kind: conda name: starlette version: 0.41.3 - build: pyh7900ff3_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - sha256: 33986032cb0515f7e9f6647d07006b7dc49b3f373b73d5a1826e6979c661b27a - md5: 0889c5a3e95d8c382cff7556757aedb0 + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 depends: - anyio >=3.4.0,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 59069 - timestamp: 1732037161800 + size: 58838 + timestamp: 1733344472634 - kind: conda name: tk version: 8.6.13 @@ -8352,18 +8308,19 @@ packages: - kind: conda name: traitlets version: 5.14.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 110187 - timestamp: 1713535244513 + size: 110051 + timestamp: 1733367480074 - kind: conda name: transformers version: 4.46.3 @@ -8392,58 +8349,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 - md5: cf9393f5733c7277b1a5f79145f8485b + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 depends: - python >=3.9 - - typer-slim-standard 0.15.0 hd8ed1ab_0 + - typer-slim-standard 0.15.1 hd8ed1ab_0 license: MIT license_family: MIT - size: 56455 - timestamp: 1733279871129 + size: 56175 + timestamp: 1733408582623 - kind: conda name: typer-slim - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc - md5: 629fef89115de5a907fb9765cdd45b26 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - - typer >=0.15.0,<0.15.1.0a0 - - shellingham >=1.3.0 - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 license: MIT license_family: MIT - size: 43480 - timestamp: 1733279858535 + size: 43592 + timestamp: 1733408569554 - kind: conda name: typer-slim-standard - version: 0.15.0 + version: 0.15.1 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 - md5: a4746fc9efbff02c1a288d8fcd8ffba9 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: - rich - shellingham - - typer-slim 0.15.0 pyhd8ed1ab_0 + - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 50259 - timestamp: 1733279859017 + size: 49531 + timestamp: 1733408570063 - kind: conda name: typing-extensions version: 4.12.2 @@ -8896,144 +8853,6 @@ packages: license_family: BSD size: 97691 timestamp: 1689951608120 -- kind: conda - name: xz - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec - md5: da081cb850e57b0a0a242bab9087fbeb - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - - liblzma-devel 5.6.3 h86ecc28_0 - - xz-gpl-tools 5.6.3 h2dbfc1b_0 - - xz-tools 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23448 - timestamp: 1733324353894 -- kind: conda - name: xz - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 - md5: 86674fa432df20be6feea4bd8fec0668 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - - liblzma-devel 5.6.3 h39f12f2_0 - - xz-gpl-tools 5.6.3 h9a6d368_0 - - xz-tools 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23570 - timestamp: 1733321627935 -- kind: conda - name: xz - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 - md5: 504333561007fbf0af129f0cee4f5652 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - - liblzma-devel 5.6.3 hb9d3cd8_0 - - xz-gpl-tools 5.6.3 hbcc6ac9_0 - - xz-tools 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23435 - timestamp: 1733321352996 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca - md5: b0245c3aad4592510bb0c19212c1bded - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33355 - timestamp: 1733324193303 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd - md5: 9e4519aef300966683764ccbbaa89da4 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33343 - timestamp: 1733321610703 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db - md5: e4f1e59ca2971e8d0fdde0928c3f7b7f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33299 - timestamp: 1733321343126 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 - md5: 10855380caa384c8388b93ef29c7bd04 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later - size: 81129 - timestamp: 1733321582233 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 - md5: 0136c7aa78b4d887c9fb6dbf39749778 - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later - size: 95353 - timestamp: 1733324033407 -- kind: conda - name: xz-tools - version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 - md5: 40270c1e058fd1d31caee8bf2c68fc3a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later - size: 89832 - timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 @@ -9079,64 +8898,64 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312h66e93f0_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - sha256: 8a1e51303ecac64f10dd0ec548d472c49954c3e2f38023ef28899191580795e1 - md5: 601d2b19a54fd9346ba18c07c2516339 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 + md5: 91df2efaa08730416bec2a4502309275 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 151247 - timestamp: 1732220988648 + size: 151393 + timestamp: 1733428897813 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hb2c0f52_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - sha256: 2ead24d5c50a2edd6348be5888677100b12b98921d1b6fe2f4cd980b0b85ffb2 - md5: 7dbbd950a7f762c2c8ab835932b12001 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 + md5: 0b3c640697bca798d0ab428f530ed24c depends: - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 149149 - timestamp: 1732221057827 + size: 150004 + timestamp: 1733429056665 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hea69d52_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - sha256: 4c90de12b1569f85126a12dbbb89f3dc10cee5838335b9c9993ead8bf1594cd3 - md5: f538709098e1642d50f4a01707e7dfdb + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba + md5: f32f9b16361866a62d6e061fcd7eb400 depends: - __osx >=11.0 - idna >=2.0 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 141452 - timestamp: 1732221306526 + size: 141556 + timestamp: 1733429104990 - kind: conda name: zeromq version: 4.3.5 diff --git a/magic.lock b/magic.lock index 461f5937a3..1315f9a7a1 100644 --- a/magic.lock +++ b/magic.lock @@ -26,7 +26,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -49,12 +49,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -63,13 +63,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -105,12 +105,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -120,25 +119,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -160,7 +159,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.2-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda @@ -172,7 +171,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -187,25 +186,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -219,11 +218,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda @@ -248,7 +244,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -271,12 +267,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -285,14 +281,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda @@ -300,10 +296,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -328,12 +324,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -343,25 +338,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.9.0-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -383,7 +378,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.2-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda @@ -395,7 +390,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -410,25 +405,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -442,11 +437,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda @@ -470,7 +462,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -493,12 +485,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda @@ -507,22 +499,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -545,11 +538,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -557,24 +549,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.9.0-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -596,7 +588,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.2-py312hf02c72a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda @@ -608,7 +600,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda @@ -623,24 +615,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda @@ -654,11 +646,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda @@ -723,6 +712,7 @@ packages: depends: - python >=3.9 license: PSF-2.0 + license_family: PSF size: 19351 timestamp: 1733332029649 - kind: conda @@ -811,6 +801,7 @@ packages: - frozenlist >=1.1.0 - python >=3.9 license: Apache-2.0 + license_family: APACHE size: 13157 timestamp: 1733332198143 - kind: conda @@ -1536,13 +1527,12 @@ packages: timestamp: 1733333955728 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h3b64406_4 - build_number: 4 + version: 1.11.458 + build: h3b64406_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.449-h3b64406_4.conda - sha256: 10ce9c203d31229432421a841d8d135d3e942637571aae4bb2d3c7d5242e7f05 - md5: f9e46a4bb5a04cbca08355f166ce87c8 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e + md5: 9a8d3ba158ff8ea08e17de366c238706 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1555,17 +1545,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2722689 - timestamp: 1732812825640 + size: 2853609 + timestamp: 1733389337912 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h5558e3c_4 - build_number: 4 + version: 1.11.458 + build: h5558e3c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.449-h5558e3c_4.conda - sha256: 4881f7b4f5e3c797332cffb990df246a422346b220a9c16014f274beb2a276f5 - md5: ba7abdc93b0ade11d774b47aaab84737 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 + md5: b1919becd17fe224aacf708114231fda depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1579,17 +1568,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2945541 - timestamp: 1732812288219 + size: 3059100 + timestamp: 1733388777418 - kind: conda name: aws-sdk-cpp - version: 1.11.449 - build: h7085e57_4 - build_number: 4 + version: 1.11.458 + build: h7085e57_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.449-h7085e57_4.conda - sha256: 0908a82e7c50c51d5ee0ca543dbe70cbe1963e6e8f80ffa58ea6d26e5c68251e - md5: feec198cb18a5e90aa36c97328567d63 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 + md5: 005e0cc687a2421a4ad493e5b7058abe depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 @@ -1602,8 +1590,8 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2813856 - timestamp: 1732812337182 + size: 2903434 + timestamp: 1733388870289 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2336,13 +2324,13 @@ packages: timestamp: 1733208916977 - kind: conda name: fastapi - version: 0.115.5 - build: pyhff2d567_0 + version: 0.115.6 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.5-pyhff2d567_0.conda - sha256: da2833cc2ea5789abc2a6899be02ba0a769386d4913ff182bd1a9458bea40c34 - md5: cfe0f8cd904ab19c36ba50eb5179ebe0 + url: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda + sha256: d7826d537c667093c9de96411a09585a8d620c84a830a0195e58e9a0df45f018 + md5: 1b1e0c97830cdf75f1f371bd467ab657 depends: - email_validator >=2.0.0 - fastapi-cli >=0.0.5 @@ -2356,8 +2344,8 @@ packages: - uvicorn-standard >=0.12.0 license: MIT license_family: MIT - size: 73541 - timestamp: 1731452895466 + size: 73084 + timestamp: 1733362427885 - kind: conda name: fastapi-cli version: 0.0.5 @@ -2492,18 +2480,18 @@ packages: - kind: conda name: fsspec version: 2024.10.0 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhff2d567_0.conda - sha256: 40bb76981dd49d5869b48925a8975bb7bbe4e33e1e40af4ec06f6bf4a62effd7 - md5: 816dbc4679a64e4417cd1385d661bb31 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.10.0-pyhd8ed1ab_1.conda + sha256: 790a50b4f94042951518f911a914a886a837c926094c6a14ed1d9d03ce336807 + md5: 906fe13095e734cb413b57a49116cdc8 depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause - license_family: BSD - size: 134745 - timestamp: 1729608972363 + size: 134726 + timestamp: 1733493445080 - kind: conda name: gflags version: 2.2.2 @@ -2743,12 +2731,13 @@ packages: - kind: conda name: httpx version: 0.28.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_0.conda - sha256: cb7895446cd93091300accea6afbc8d9811a3c5899922ccfeeff97d9b55909dc - md5: 22878824a87f1af2ad48665f9d5bfcc8 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 + md5: 8a4a83ba566c6b5c718dd0531a362d01 depends: - anyio - certifi @@ -2757,8 +2746,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63183 - timestamp: 1732831049776 + size: 63203 + timestamp: 1733501478172 - kind: conda name: huggingface_hub version: 0.26.3 @@ -2813,6 +2802,20 @@ packages: license_family: MIT size: 12282786 timestamp: 1720853454991 +- kind: conda + name: icu + version: '75.1' + build: hfee45f7_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 - kind: conda name: idna version: '3.10' @@ -2865,24 +2868,25 @@ packages: - kind: conda name: jupyter_client version: 8.6.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_0.conda - sha256: 4419c85e209a715f551a5c9bead746f29ee9d0fc41e772a76db3868622795671 - md5: a14218cfb29662b4a19ceb04e93e298e + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: - importlib-metadata >=4.8.3 - jupyter_core >=4.12,!=5.0.* - - python >=3.8 + - python >=3.9 - python-dateutil >=2.8.2 - pyzmq >=23.0 - tornado >=6.2 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 106055 - timestamp: 1726610805505 + size: 106342 + timestamp: 1733441040958 - kind: conda name: jupyter_core version: 5.7.2 @@ -3168,16 +3172,16 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h654e1bb_2_cpu - build_number: 2 + build: h5affd47_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h654e1bb_2_cpu.conda - sha256: 925dcb034f36536eed21d9323f096bf2ebf1111d14c61e1ae0b90e5de131f1e1 - md5: e69934ff9dd8745fea8927028d1603ee + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda + sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 + md5: 3dc73b42851e6096542458eaf2c074ca depends: - __osx >=11.0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3201,24 +3205,23 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 5475725 - timestamp: 1732947802614 + size: 5487846 + timestamp: 1733450423101 - kind: conda name: libarrow version: 18.1.0 - build: hc7b0e1d_2_cpu - build_number: 2 + build: hb63acf4_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hc7b0e1d_2_cpu.conda - sha256: 3201944d1f97b9207e566ccf388c8376bb2ce7e461534cda63a28975b6790901 - md5: 4a46bd0be8e7f56a217d26b79d290a0e + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda + sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 + md5: d98a11c3ba32554873aeb6a071baceaa depends: - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3243,26 +3246,25 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 - - parquet-cpp <0.0a0 license: Apache-2.0 - license_family: APACHE - size: 8026783 - timestamp: 1732950110265 + size: 8048003 + timestamp: 1733452700958 - kind: conda name: libarrow version: 18.1.0 - build: he15abb1_1_cpu - build_number: 1 + build: hcf3f2e3_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-he15abb1_1_cpu.conda - sha256: afc81af2e533cc35295aebae4fb382e770310d9b1ac31837456b440d35c54cf7 - md5: bd3e35a6f3f869b4777488452f315008 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda + sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e + md5: 196823c7752608cb6b5d5a7a33b17410 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.29.6,<0.29.7.0a0 - - aws-sdk-cpp >=1.11.449,<1.11.450.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 @@ -3279,7 +3281,7 @@ packages: - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - libstdcxx >=13 - - libutf8proc >=2.8.0,<2.9.0a0 + - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - orc >=2.0.3,<2.0.4.0a0 @@ -3287,190 +3289,180 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: + - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu license: Apache-2.0 - license_family: APACHE - size: 8780597 - timestamp: 1732863546099 + size: 8796519 + timestamp: 1733453489520 - kind: conda name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 + build: h36004a0_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h5888daf_1_cpu.conda - sha256: 3de5719a7035baad7e665116dce7bb3d069f0c1916e163c553e2e491bbe8b614 - md5: 6197dcb930f6254e9b2fdc416be56b71 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda + sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 + md5: 6d8f74ac97166e09cdf02109ed9905ce depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 611272 - timestamp: 1732863586114 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h5ad3122_2_cpu.conda - sha256: e6c8988d1d79163d6d13dda21f9e401f5df4b3af7e0d221718522c600894adcf - md5: 14fede66c995f3cf958797e9fb567e22 - depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 577510 - timestamp: 1732950190684 + size: 612773 + timestamp: 1733453636002 - kind: conda name: libarrow-acero version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h605b82c_2_cpu.conda - sha256: cfe32f1b0712b77d2c792a839fe4ea2790cabd99d47cd8e1b20ba2d3c8b113b2 - md5: 60351279d7dfd7c254c46aabf9aa35a6 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda + sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 + md5: f3a050129b5012bd5fc381693f6eb2cd depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu - libcxx >=18 license: Apache-2.0 - license_family: APACHE - size: 483362 - timestamp: 1732948000606 + size: 483753 + timestamp: 1733450627207 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h5888daf_1_cpu - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h5888daf_1_cpu.conda - sha256: 7b3db3d5a7e411f8897e8d74403c1d871f3054300f5009c4bdf75da011bc3f42 - md5: 77501831a2aabbaabac55e8cb3b6900a + build: he2e0623_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda + sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a + md5: fa54002b982019ecc0e93cb4b2c493e9 depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hb63acf4_3_cpu - libgcc >=13 - - libparquet 18.1.0 h6bd9018_1_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 585458 - timestamp: 1732863686753 + size: 578323 + timestamp: 1733452783322 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h5ad3122_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h5ad3122_2_cpu.conda - sha256: 53cdae2150c22ef9b5d6de8d0ee8ac52eeacc50fdfa2fa3ea644b52436d1eeb1 - md5: c54d83f012a40fef8a2dc4856e4340a0 + build: h36004a0_3_cpu + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda + sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 + md5: e9eac639d83b1c35f7743845b922d61a depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu - libgcc >=13 - - libparquet 18.1.0 h23a96eb_2_cpu + - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 559143 - timestamp: 1732950272727 + size: 585416 + timestamp: 1733454137952 - kind: conda name: libarrow-dataset version: 18.1.0 - build: h605b82c_2_cpu - build_number: 2 + build: haafc02e_3_cpu + build_number: 3 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h605b82c_2_cpu.conda - sha256: eeae9e8d382c482076f4739455b53f16851d7f99be219b6f96dd4e765132b446 - md5: b5fcaddabf47aa15e50feff072a55ada + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda + sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 + md5: 8c57e5a50f865a16cafd92f5a32c9faa depends: - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu - libcxx >=18 - - libparquet 18.1.0 h5168bdf_2_cpu + - libparquet 18.1.0 h3a603ae_3_cpu license: Apache-2.0 - license_family: APACHE - size: 489769 - timestamp: 1732949732423 + size: 489900 + timestamp: 1733452479126 - kind: conda - name: libarrow-substrait + name: libarrow-dataset version: 18.1.0 - build: h14ec2bd_2_cpu - build_number: 2 + build: he2e0623_3_cpu + build_number: 3 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h14ec2bd_2_cpu.conda - sha256: e8923d62cfaadc4a8af1735e717fd4980cad693419e63aed04380566d9fd46df - md5: 4fd0103449cf40214fd348643aa78fff + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda + sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff + md5: 048f04da68a40e9e5e1e66ff9502b237 + depends: + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libgcc >=13 + - libparquet 18.1.0 h553aec1_3_cpu + - libstdcxx >=13 + license: Apache-2.0 + size: 559844 + timestamp: 1733453065157 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: h4c1644f_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 + md5: 7ba2783c26a0008307e2a1e637c2930f depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libarrow-acero 18.1.0 h5ad3122_2_cpu - - libarrow-dataset 18.1.0 h5ad3122_2_cpu - - libgcc >=13 + - libarrow 18.1.0 h5affd47_3_cpu + - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow-dataset 18.1.0 haafc02e_3_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 515352 - timestamp: 1732950311471 + size: 451428 + timestamp: 1733453012619 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h5c8f2c3_1_cpu - build_number: 1 + build: h56a123c_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h5c8f2c3_1_cpu.conda - sha256: e77a354bfc0ba7b04c856f1bb16e7b08950bcde54026087bafec46090380fcc1 - md5: 5d47bd2674afd104dbe2f2f3534594b0 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d + md5: 306bb541b83a83b66d5c1e6880302886 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 he15abb1_1_cpu - - libarrow-acero 18.1.0 h5888daf_1_cpu - - libarrow-dataset 18.1.0 h5888daf_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow-dataset 18.1.0 h36004a0_3_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 520681 - timestamp: 1732863726954 + size: 520740 + timestamp: 1733454379083 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h9b432b6_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h9b432b6_2_cpu.conda - sha256: 6dde802134bd2e78581eb838c049b2e7e378899706b471f7072222a6b1284b90 - md5: 49e7c0460532a73f34bd127fff009224 + build: hc52ba39_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 + md5: 7a8e305f1689687ed063bb4553c1a7a5 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libarrow-acero 18.1.0 h605b82c_2_cpu - - libarrow-dataset 18.1.0 h605b82c_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow-dataset 18.1.0 he2e0623_3_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - license_family: APACHE - size: 451127 - timestamp: 1732950194322 + size: 515638 + timestamp: 1733453200561 - kind: conda name: libblas version: 3.9.0 @@ -4677,86 +4669,46 @@ packages: - kind: conda name: liblzma version: 5.6.3 - build: h39f12f2_0 + build: h39f12f2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_0.conda - sha256: de00d627e41636591d05407c666de957a9ddd3c0f633340c016725695569b049 - md5: faa0ab222b9d12a52a8ebc655c9236f3 + url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa depends: - __osx >=11.0 license: 0BSD - size: 98836 - timestamp: 1733321533638 + size: 99129 + timestamp: 1733407496073 - kind: conda name: liblzma version: 5.6.3 - build: h86ecc28_0 + build: h86ecc28_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_0.conda - sha256: 004785e427d255da8cf713b4722f8330bf496ce6fc665a0b21d007d377ffee5f - md5: 83d366f7bf01fc2d7781b4cc113fc9d3 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 depends: - libgcc >=13 license: 0BSD - size: 124115 - timestamp: 1733323693681 + size: 124138 + timestamp: 1733409137214 - kind: conda name: liblzma version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_0.conda - sha256: 31637db828ec67ab8697de324e6074af5a36cbeddc37202d8d31e2fb397619e8 - md5: 137c535dddd880f844f33ed91b8abdba - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: 0BSD - size: 111223 - timestamp: 1733321312512 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_0.conda - sha256: 2e5a9fb298bd8c01ceed8db386bfb0a125d74cef2c5ee615b4f9695b2808f7e0 - md5: 89955d2470cbacea3d5e069d67c94f44 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD - size: 112941 - timestamp: 1733321552604 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_0.conda - sha256: 740b3f1ffa57ad5f0eec0c868e23d4e1f811871c6685a04af57f1943cde1a575 - md5: 27995ae8bc93eeb949315655daa19d3c - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD - size: 376767 - timestamp: 1733323860026 -- kind: conda - name: liblzma-devel - version: 5.6.3 - build: hb9d3cd8_0 + build: hb9d3cd8_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_0.conda - sha256: 98020d4b4cc6c728d2e6dc1174cb2548cf03ce5098cd17c37b32f06e896a943a - md5: 7069f4de645461447f1ab7736c94db26 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 license: 0BSD - size: 375452 - timestamp: 1733321322415 + size: 111132 + timestamp: 1733407410083 - kind: conda name: libnghttp2 version: 1.64.0 @@ -4908,61 +4860,58 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h23a96eb_2_cpu - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h23a96eb_2_cpu.conda - sha256: 83b8fa4a90e214fcd6018f890947666f055f79563fff2b7c3d5f37d894f3a000 - md5: ce205782960a580fa43cfcccca22ad8d + build: h3a603ae_3_cpu + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d + md5: 78d2f729e26788a3660cee9906f440e7 depends: - - libarrow 18.1.0 hc7b0e1d_2_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h5affd47_3_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1115906 - timestamp: 1732950250848 + size: 873697 + timestamp: 1733452286970 - kind: conda name: libparquet version: 18.1.0 - build: h5168bdf_2_cpu - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h5168bdf_2_cpu.conda - sha256: 454487d113974b923b4214a65aab780fd90c4914390d0b1f4640b1bf60537bff - md5: f995df7ee206617a3e858fd932d7bd2d + build: h553aec1_3_cpu + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b + md5: 46c6783e8b46449a9baabef57c69f30a depends: - - __osx >=11.0 - - libarrow 18.1.0 h654e1bb_2_cpu - - libcxx >=18 + - libarrow 18.1.0 hb63acf4_3_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 872333 - timestamp: 1732949558028 + size: 1116941 + timestamp: 1733452997475 - kind: conda name: libparquet version: 18.1.0 - build: h6bd9018_1_cpu - build_number: 1 + build: hbdb145b_3_cpu + build_number: 3 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h6bd9018_1_cpu.conda - sha256: 0df119f4c1a2387d910e132c670b29ee5b29dd79384549de6f1a43067515c8ba - md5: 1054909202f86e38bbbb7ca1131b8471 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 + md5: cb249762e1e65941b559d436c60e520d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 he15abb1_1_cpu + - libarrow 18.1.0 hcf3f2e3_3_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - license_family: APACHE - size: 1203523 - timestamp: 1732863665743 + size: 1204740 + timestamp: 1733454014411 - kind: conda name: libpng version: 1.6.44 @@ -5373,86 +5322,70 @@ packages: - kind: conda name: libtiff version: 4.7.0 - build: he137b08_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 - md5: 63872517c98aa305da58a757c443698e + build: ha962b0a_2 + build_number: 2 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda + sha256: d9e6835fd189b85eb90dbfdcc51f5375decbf5bb53130042f49bbd6bfb0b24be + md5: 8e14b5225c593f099a21971568e6d7b4 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 + - libcxx >=18 - libdeflate >=1.22,<1.23.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - - libstdcxx >=13 + - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 428156 - timestamp: 1728232228989 + size: 370387 + timestamp: 1733443310502 - kind: conda name: libtiff version: 4.7.0 - build: hec21d91_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d - md5: 1f80061f5ba6956fcdc381f34618cd8d + build: hc4654cb_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hc4654cb_2.conda + sha256: 18653b4a5c73e19c5e86ff72dab9bf59f5cc43d7f404a6be705d152dfd5e0660 + md5: be54fb40ea32e8fe9dbaa94d4528b57e depends: + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - libdeflate >=1.22,<1.23.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 464938 - timestamp: 1728232266969 + size: 429018 + timestamp: 1733443013288 - kind: conda name: libtiff version: 4.7.0 - build: hfce79cd_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d - md5: b9abf45f7c64caf3303725f1aa0e9a4d + build: hca96517_2 + build_number: 2 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hca96517_2.conda + sha256: d736d840d1f2446234195adfcb51b132c85797730b6f42ebf058d350fa9d20e8 + md5: 278dcef6d1ea28c04109c3f5dea126cb depends: - - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - - libcxx >=17 - libdeflate >=1.22,<1.23.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 license: HPND - size: 366323 - timestamp: 1728232400072 -- kind: conda - name: libutf8proc - version: 2.8.0 - build: hf23e847_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-hf23e847_1.conda - sha256: 104cf5b427fc914fec63e55f685a39480abeb4beb34bdbc77dea084c8f5a55cb - md5: b1aa0faa95017bca11369bd080487ec4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 80852 - timestamp: 1732829699583 + size: 464857 + timestamp: 1733443105529 - kind: conda name: libutf8proc version: 2.9.0 @@ -5483,6 +5416,22 @@ packages: license_family: MIT size: 81526 timestamp: 1732868466862 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 81500 + timestamp: 1732868419835 - kind: conda name: libuuid version: 2.38.1 @@ -5683,60 +5632,62 @@ packages: - kind: conda name: libxml2 version: 2.13.5 - build: h064dc61_0 + build: h0d44e9d_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h064dc61_0.conda - sha256: 7ab7fb45a0014981d35247cd5b09057fc8ed3c07378086a6c7ad552915928647 - md5: fb16b85a5be1328ac1c44b098b74c570 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 constrains: - icu <0.0a0 license: MIT license_family: MIT - size: 689363 - timestamp: 1731489619071 + size: 689993 + timestamp: 1733443678322 - kind: conda name: libxml2 version: 2.13.5 - build: h376fa9f_0 + build: h178c5d8_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h376fa9f_0.conda - sha256: d443703d324f3dbd628d58ea498ab0e474c06d5771e7f55baf215fdbc11ceb87 - md5: adea92805465ed3dcf0776b428e34744 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - constrains: - - icu <0.0a0 license: MIT license_family: MIT - size: 582076 - timestamp: 1731489850179 + size: 582898 + timestamp: 1733443841584 - kind: conda name: libxml2 version: 2.13.5 - build: hf4efe5d_0 + build: h2e0c361_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 - md5: 5650ac8a6ed680c032bdabe40ad19ee0 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 license: MIT license_family: MIT - size: 734453 - timestamp: 1731489860751 + size: 732155 + timestamp: 1733443825814 - kind: conda name: libzlib version: 1.3.1 @@ -5806,20 +5757,20 @@ packages: timestamp: 1733310809397 - kind: conda name: llvm-openmp - version: 19.1.4 + version: 19.1.5 build: hdb05f8b_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.5-hdb05f8b_0.conda + sha256: e7ba0d8b718925efdcf1309f5e776e3264cc172d3af8d4048b39627c50a1abc0 + md5: f2c2e187a1d2637d282e34dc92021a70 depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.5|19.1.5.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281554 - timestamp: 1732102484807 + size: 281120 + timestamp: 1733376089600 - kind: conda name: lz4-c version: 1.9.4 @@ -5942,76 +5893,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120416-release.conda - sha256: 956c006755158839ee6f8de7d91360cd1990024868d867482a62885241c9794f - md5: 09947b7aa3a3c35b413b7c0d118126e3 - depends: - - max-core ==24.6.0.dev2024120416 release - - max-python >=24.6.0.dev2024120416,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120416 release - - mblack ==24.6.0.dev2024120416 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda + sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 + md5: 562c33b920321a676acb3fc49c2ddb11 + depends: + - max-core ==24.6.0.dev2024120616 release + - max-python >=24.6.0.dev2024120616,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120616 release license: LicenseRef-Modular-Proprietary - size: 9925 - timestamp: 1733332193356 + size: 9919 + timestamp: 1733502206770 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120416-release.conda - sha256: e73a6e3abebc4516d56d39b85d10e98883885218273b2ef19c7cfe4d3df7a4ef - md5: 43a976936171480fe7dbc2fed1224312 + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda + sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 + md5: 88e589273bf2ae77f80f879adacd234a depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 245904359 - timestamp: 1733332193354 + size: 247418489 + timestamp: 1733502146971 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120416-release.conda - sha256: e32ebc6b7f589881f14caec8df02b65c40839a0210ef6a87d85243b61b5fc7d8 - md5: 15cac805514c6a381a9a50ee3a86de25 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda + sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b + md5: 5243c455575512a6061067e3b5d67e0f depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 249618446 - timestamp: 1733332472125 + size: 251333959 + timestamp: 1733502206769 - kind: conda name: max-core - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120416-release.conda - sha256: bc27468be85cc7fd207ec44a4a0b1b11aa54792737a20fcf8355a2f2e7a215d5 - md5: c27c6f67be3abffbf559bfd50852b493 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda + sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 + md5: 99f131bbf681d02fe75d5f9e7dc0ab57 depends: - - mblack ==24.6.0.dev2024120416 release + - mblack ==24.6.0.dev2024120616 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 210212276 - timestamp: 1733332258535 + size: 211890615 + timestamp: 1733502249826 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: 48e30a62cdee247e87b9f07d465ae91c75d47f292eeba5d2ca9c2d86d30e8875 - md5: 78af7733b4858c1bd882279a45e98795 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b + md5: aa4c20f7f7f821d9b736c319b9b9d89a depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -6033,18 +5984,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 122878721 - timestamp: 1733332193368 + size: 123619079 + timestamp: 1733502146987 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: ffff206620d5bd2cd90830467d4234e3a606143811006e67203899a9b8512938 - md5: 55ff43da6401cdd96073ae044b428afd + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f + md5: df25189682c30a5259b1ffada686cef2 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -6066,18 +6017,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 126526187 - timestamp: 1733332472138 + size: 127361426 + timestamp: 1733502206780 - kind: conda name: max-python - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120416-3.12release.conda - sha256: e5aaaba32cd939f3c6ba27b916851174eec6c3913a8e5ebd00b5590f026a2e16 - md5: b84b205dbce4660cdea5b0e3cda227e9 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda + sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b + md5: f03ead2bca51c2cd060703fe64ee40da depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python 3.12.* - pillow - fastapi @@ -6099,17 +6050,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 111629688 - timestamp: 1733332258538 + size: 112339857 + timestamp: 1733502249829 - kind: conda name: mblack - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120416-release.conda - sha256: 374f5d8dfed89bf7098a0f7d8c6fd40c9dab11c4d760a03e05835e82f1b00cb9 - md5: 85c700946ce4a5ce8d11f5ee66b477cf + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 + md5: dec7dbfe11abd34b171d290d38adea24 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6119,8 +6070,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130641 - timestamp: 1733332193362 + size: 130704 + timestamp: 1733502206776 - kind: conda name: mdurl version: 0.1.2 @@ -6139,21 +6090,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120416 + version: 24.6.0.dev2024120616 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120416-release.conda - sha256: 181250d3bbe6523e4ac02e40004b6e77c04cfee2d9512dbeb584f51351df9448 - md5: 411a1d159867c56043991824d1ee88d9 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 + md5: 1420c233cedc5e554c728d5f8b2b1657 depends: - - max-core ==24.6.0.dev2024120416 release + - max-core ==24.6.0.dev2024120616 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22946 - timestamp: 1733332193363 + size: 11371 + timestamp: 1733502206776 - kind: conda name: multidict version: 6.1.0 @@ -6890,58 +6841,55 @@ packages: timestamp: 1733327434163 - kind: conda name: propcache - version: 0.2.0 - build: py312h024a12e_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - sha256: 0f3a04675c6c473398f0aaa95c259e0a085d5ec106b4fa89a7efeb7cc73d5dd2 - md5: 6693e523bc43c38508efe14ab3374f0c + version: 0.2.1 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h66e93f0_0.conda + sha256: 5771311fb5ded614ca349c92579a0b752af55a310f40b71fc533e20625965391 + md5: 55d5742a696d7da1c1262e99b6217ceb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 47796 - timestamp: 1728545963127 + size: 52747 + timestamp: 1733391916349 - kind: conda name: propcache - version: 0.2.0 - build: py312h66e93f0_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - sha256: be7aa0056680dd6e528b7992169a20dd525b94f62d37c8ba0fbf69bd4e8df57d - md5: 2c6c0c68f310bc33972e7c83264d7786 + version: 0.2.1 + build: py312hb2c0f52_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hb2c0f52_0.conda + sha256: c7f62c11ed929ccf1f3d4a1e200e28be01e8d0e0786bf8f76c5893f2ea681e1b + md5: 50ab8953e7ff1333a4a47cda32e68123 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53498 - timestamp: 1728545927816 + size: 52484 + timestamp: 1733391993461 - kind: conda name: propcache - version: 0.2.0 - build: py312hb2c0f52_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - sha256: 50dad7604b6c20440baf081700b5d6829097121e65f34fd1a15508b20fbecc07 - md5: 8a258196d6f79ad32d3ea4dd4572f721 + version: 0.2.1 + build: py312hea69d52_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312hea69d52_0.conda + sha256: f8c266c494aa1e4cfb8bf0b6fca060044b2f3d65afe4c5062ebeea382e77aa6d + md5: c84e3dd97fe25a17322c4a0f670c6750 depends: - - libgcc >=13 + - __osx >=11.0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 53507 - timestamp: 1728546155066 + size: 48225 + timestamp: 1733392308901 - kind: conda name: protobuf version: 5.28.2 @@ -7376,91 +7324,94 @@ packages: timestamp: 1733217331982 - kind: conda name: python - version: 3.12.7 - build: h5d932e8_0_cpython + version: 3.12.8 + build: h1683364_1_cpython + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.7-h5d932e8_0_cpython.conda - sha256: 25570873d92d4d9490c6db780cc85e6c28bd3ff61dc1ece79f602cf82bc73bc1 - md5: e6cab21bb5787270388939cf41cc5f43 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab + md5: 09ec612ea05370989eaa3d81abf0f369 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 13762126 - timestamp: 1728057461028 + size: 13760816 + timestamp: 1733407890896 - kind: conda name: python - version: 3.12.7 - build: h739c21a_0_cpython - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.7-h739c21a_0_cpython.conda - sha256: 45d7ca2074aa92594bd2f91a9003b338cc1df8a46b9492b7fc8167110783c3ef - md5: e0d82e57ebb456077565e6d82cd4a323 + version: 3.12.8 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.3,<3.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 12975439 - timestamp: 1728057819519 + size: 31565686 + timestamp: 1733410597922 - kind: conda name: python - version: 3.12.7 - build: hc5c86c4_0_cpython - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.7-hc5c86c4_0_cpython.conda - sha256: 674be31ff152d9f0e0fe16959a45e3803a730fc4f54d87df6a9ac4e6a698c41d - md5: 0515111a9cdf69f83278f7c197db9807 + version: 3.12.8 + build: hc22306f_1_cpython + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 + md5: 54ca5b5d92ef3a3ba61e195ee882a518 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc >=13 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 constrains: - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 31574780 - timestamp: 1728059777603 + size: 12998673 + timestamp: 1733408900971 - kind: conda name: python-dateutil version: 2.9.0.post0 @@ -7944,21 +7895,22 @@ packages: - kind: conda name: rich version: 13.9.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_0.conda - sha256: c009488fc07fd5557434c9c1ad32ab1dd50241d6a766e4b2b4125cd6498585a8 - md5: bcf8cc8924b5d20ead3d122130b8320b + url: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 depends: - markdown-it-py >=2.2.0 - pygments >=2.13.0,<3.0.0 - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0,<5.0.0 license: MIT license_family: MIT - size: 185481 - timestamp: 1730592349978 + size: 185646 + timestamp: 1733342347277 - kind: conda name: s2n version: 1.5.9 @@ -8081,65 +8033,68 @@ packages: timestamp: 1733301007770 - kind: conda name: six - version: 1.16.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 1.17.0 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyhd8ed1ab_1.conda - sha256: 761b96fe7bea080b9c35dd2f87f788eb94b61d462645bd16f361e80ae0ff017c - md5: a516da6cfe1ec0a55e49737f017b4965 + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - python >=3.9 license: MIT license_family: MIT size: 16385 - timestamp: 1733216901349 + timestamp: 1733381032766 - kind: conda name: snappy version: 1.2.1 - build: h1088aeb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f - md5: e4ed5b015f525b56f95c26d85a4ea208 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 42888 - timestamp: 1720003817527 + size: 42739 + timestamp: 1733501881851 - kind: conda name: snappy version: 1.2.1 - build: ha2e4443_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f - md5: 6b7dcc7349efd123d493d2dbe85a045f + build: h98b9ce2_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: BSD-3-Clause license_family: BSD - size: 42465 - timestamp: 1720003704360 + size: 35857 + timestamp: 1733502172664 - kind: conda name: snappy version: 1.2.1 - build: hd02b534_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 - md5: 69d0f9694f3294418ee935da3d5f7272 + build: hd4fb6f5_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: BSD-3-Clause license_family: BSD - size: 35708 - timestamp: 1720003794374 + size: 43032 + timestamp: 1733501964775 - kind: conda name: sniffio version: 1.3.1 @@ -8177,20 +8132,21 @@ packages: - kind: conda name: starlette version: 0.41.3 - build: pyh7900ff3_0 + build: pyha770c72_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyh7900ff3_0.conda - sha256: 33986032cb0515f7e9f6647d07006b7dc49b3f373b73d5a1826e6979c661b27a - md5: 0889c5a3e95d8c382cff7556757aedb0 + url: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda + sha256: b74fc76107487eb26624c01fc55bfab7eed03ae82e003333c86d8a1eeac53672 + md5: 0207dac04ae2200701fab697f0aaaac4 depends: - anyio >=3.4.0,<5 - python >=3.9 - typing_extensions >=3.10.0 license: BSD-3-Clause license_family: BSD - size: 59069 - timestamp: 1732037161800 + size: 58838 + timestamp: 1733344472634 - kind: conda name: tk version: 8.6.13 @@ -8370,18 +8326,19 @@ packages: - kind: conda name: traitlets version: 5.14.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda - sha256: 8a64fa0f19022828513667c2c7176cfd125001f3f4b9bc00d33732e627dd2592 - md5: 3df84416a021220d8b5700c613af2dc5 + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 110187 - timestamp: 1713535244513 + size: 110051 + timestamp: 1733367480074 - kind: conda name: transformers version: 4.46.3 @@ -8410,58 +8367,58 @@ packages: timestamp: 1731981383171 - kind: conda name: typer - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.0-pyhd8ed1ab_0.conda - sha256: 90503b2a518434fb554d621cc4e1c533dc524ef1c0f63fde39fdf4328163a0c8 - md5: cf9393f5733c7277b1a5f79145f8485b + url: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda + sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 + md5: 170a0398946d8f5b454e592672b6fc20 depends: - python >=3.9 - - typer-slim-standard 0.15.0 hd8ed1ab_0 + - typer-slim-standard 0.15.1 hd8ed1ab_0 license: MIT license_family: MIT - size: 56455 - timestamp: 1733279871129 + size: 56175 + timestamp: 1733408582623 - kind: conda name: typer-slim - version: 0.15.0 + version: 0.15.1 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.0-pyhd8ed1ab_0.conda - sha256: f6a85917292aaea0577792090ac74dbdb0280a656934746f715bfa9feaa9b2dc - md5: 629fef89115de5a907fb9765cdd45b26 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda + sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 + md5: 0218b16f5a1dd569e575a7a6415489db depends: - click >=8.0.0 - python >=3.9 - typing_extensions >=3.7.4.3 constrains: - - typer >=0.15.0,<0.15.1.0a0 - - shellingham >=1.3.0 - rich >=10.11.0 + - typer >=0.15.1,<0.15.2.0a0 + - shellingham >=1.3.0 license: MIT license_family: MIT - size: 43480 - timestamp: 1733279858535 + size: 43592 + timestamp: 1733408569554 - kind: conda name: typer-slim-standard - version: 0.15.0 + version: 0.15.1 build: hd8ed1ab_0 subdir: noarch noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.0-hd8ed1ab_0.conda - sha256: df52ddd24439aff384a82d00a751947b12127ab571f4aa674a1053c703ce8ed0 - md5: a4746fc9efbff02c1a288d8fcd8ffba9 + url: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda + sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f + md5: 4e603c43bfdfc7b533be087c3e070cc9 depends: - rich - shellingham - - typer-slim 0.15.0 pyhd8ed1ab_0 + - typer-slim 0.15.1 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 50259 - timestamp: 1733279859017 + size: 49531 + timestamp: 1733408570063 - kind: conda name: typing-extensions version: 4.12.2 @@ -8914,144 +8871,6 @@ packages: license_family: BSD size: 97691 timestamp: 1689951608120 -- kind: conda - name: xz - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_0.conda - sha256: 65df445d131d1695c45a95d102b8ffaaed5a387b4f97e209ba7d8fa0b7599dec - md5: da081cb850e57b0a0a242bab9087fbeb - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - - liblzma-devel 5.6.3 h86ecc28_0 - - xz-gpl-tools 5.6.3 h2dbfc1b_0 - - xz-tools 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23448 - timestamp: 1733324353894 -- kind: conda - name: xz - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_0.conda - sha256: 25d515d97f9a147240933b7529dbe10f3ee1c87425cfa3d5faa5115f78ebfe70 - md5: 86674fa432df20be6feea4bd8fec0668 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - - liblzma-devel 5.6.3 h39f12f2_0 - - xz-gpl-tools 5.6.3 h9a6d368_0 - - xz-tools 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23570 - timestamp: 1733321627935 -- kind: conda - name: xz - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_0.conda - sha256: 32cd43b293f1e6498831c499195afc5693c2bd604244a08fe8dd7107a20757d2 - md5: 504333561007fbf0af129f0cee4f5652 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - - liblzma-devel 5.6.3 hb9d3cd8_0 - - xz-gpl-tools 5.6.3 hbcc6ac9_0 - - xz-tools 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 23435 - timestamp: 1733321352996 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h2dbfc1b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_0.conda - sha256: d99ba29095b47891e3c63d04832768c3bfe4ad49e7bb4e163ca18962b8b3f5ca - md5: b0245c3aad4592510bb0c19212c1bded - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33355 - timestamp: 1733324193303 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: h9a6d368_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_0.conda - sha256: 44a0738b66573d0e7def712ef2aa98f628b17ee4d1034ffe71c3ff36f68d12dd - md5: 9e4519aef300966683764ccbbaa89da4 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33343 - timestamp: 1733321610703 -- kind: conda - name: xz-gpl-tools - version: 5.6.3 - build: hbcc6ac9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_0.conda - sha256: e9829eb1207239198f03eba61d17d0f946bbaa7602f7ee019efe72ccb26525db - md5: e4f1e59ca2971e8d0fdde0928c3f7b7f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33299 - timestamp: 1733321343126 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_0.conda - sha256: be3c74ffe4a7a5852108dafe40ef41858ca1ea911c62b08b5e4dd8f641d23f22 - md5: 10855380caa384c8388b93ef29c7bd04 - depends: - - __osx >=11.0 - - liblzma 5.6.3 h39f12f2_0 - license: 0BSD AND LGPL-2.1-or-later - size: 81129 - timestamp: 1733321582233 -- kind: conda - name: xz-tools - version: 5.6.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_0.conda - sha256: 1d82a745cd60e674d18a0ce30ba13d72616261b1831530f480599ffc991c8476 - md5: 0136c7aa78b4d887c9fb6dbf39749778 - depends: - - libgcc >=13 - - liblzma 5.6.3 h86ecc28_0 - license: 0BSD AND LGPL-2.1-or-later - size: 95353 - timestamp: 1733324033407 -- kind: conda - name: xz-tools - version: 5.6.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_0.conda - sha256: 7d03d4c0d18dbac0ebb9550890fddeb4d21a375709339a6bdedd0104bc4f4967 - md5: 40270c1e058fd1d31caee8bf2c68fc3a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma 5.6.3 hb9d3cd8_0 - license: 0BSD AND LGPL-2.1-or-later - size: 89832 - timestamp: 1733321333192 - kind: conda name: yaml version: 0.2.5 @@ -9097,64 +8916,64 @@ packages: timestamp: 1641347626613 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312h66e93f0_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - sha256: 8a1e51303ecac64f10dd0ec548d472c49954c3e2f38023ef28899191580795e1 - md5: 601d2b19a54fd9346ba18c07c2516339 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h66e93f0_0.conda + sha256: a0d93c3bef723e384cff8a29a82a2c6b7a73b39328088f3a2d97c901f56e9a63 + md5: 91df2efaa08730416bec2a4502309275 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 151247 - timestamp: 1732220988648 + size: 151393 + timestamp: 1733428897813 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hb2c0f52_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - sha256: 2ead24d5c50a2edd6348be5888677100b12b98921d1b6fe2f4cd980b0b85ffb2 - md5: 7dbbd950a7f762c2c8ab835932b12001 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hb2c0f52_0.conda + sha256: 470b5b0f3ac89acd143095281167dc2ac1a56d4fa22e1794bd8f3b00bb604540 + md5: 0b3c640697bca798d0ab428f530ed24c depends: - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 149149 - timestamp: 1732221057827 + size: 150004 + timestamp: 1733429056665 - kind: conda name: yarl - version: 1.18.0 + version: 1.18.3 build: py312hea69d52_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - sha256: 4c90de12b1569f85126a12dbbb89f3dc10cee5838335b9c9993ead8bf1594cd3 - md5: f538709098e1642d50f4a01707e7dfdb + url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312hea69d52_0.conda + sha256: 69c7863809e11bc90c0d935c16e7f151dcc925add08b3894f06059263a8cb9ba + md5: f32f9b16361866a62d6e061fcd7eb400 depends: - __osx >=11.0 - idna >=2.0 - multidict >=4.0 - - propcache >=0.2.0 + - propcache >=0.2.1 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 141452 - timestamp: 1732221306526 + size: 141556 + timestamp: 1733429104990 - kind: conda name: zeromq version: 4.3.5 From a05c8bff8fc5620dbb607b2490be21337b9bbd25 Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Fri, 6 Dec 2024 10:16:16 -0700 Subject: [PATCH 105/119] [stdlib] Remove copy in `StaticTuple.setitem[idx]` Similar to the recent change made in `getitem`, remove the copy in the `setitem` overload for static index. We can't quite yet remove the copy in the runtime index case of `setitem` which is still being investigated. While tracking this down, add an explicit test case for `StaticTuple.setitem` for compile-time index to make sure we didn't break anything. MODULAR_ORIG_COMMIT_REV_ID: 95818ecfb9845f7fcd410481c64894c4ab00f631 --- stdlib/src/utils/static_tuple.mojo | 4 +--- stdlib/test/utils/test_static_tuple.mojo | 4 ++++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/stdlib/src/utils/static_tuple.mojo b/stdlib/src/utils/static_tuple.mojo index ff745bedec..0788b54b43 100644 --- a/stdlib/src/utils/static_tuple.mojo +++ b/stdlib/src/utils/static_tuple.mojo @@ -257,6 +257,4 @@ struct StaticTuple[element_type: AnyTrivialRegType, size: Int](Sized): val: The value to store. """ constrained[index < size]() - var tmp = self - _set_array_elem[index, size, Self.element_type](val, tmp.array) - self = tmp + _set_array_elem[index, size, Self.element_type](val, self.array) diff --git a/stdlib/test/utils/test_static_tuple.mojo b/stdlib/test/utils/test_static_tuple.mojo index 67f3fbc0e8..b2f46d55af 100644 --- a/stdlib/test/utils/test_static_tuple.mojo +++ b/stdlib/test/utils/test_static_tuple.mojo @@ -46,6 +46,10 @@ def test_setitem(): t[2] = 300 assert_equal(t[2], 300) + alias idx: Int = 0 + t.__setitem__[idx](400) + assert_equal(t[0], 400) + def main(): test_getitem() From 04cdc70bdfee882e0cb8f351d93e727b195ca5b3 Mon Sep 17 00:00:00 2001 From: Evan Ovadia Date: Fri, 6 Dec 2024 12:51:23 -0500 Subject: [PATCH 106/119] [mojo-lang] Adds __disable_del keyword, to destroy linear types. Adds __disable_del keyword, to allow the user to destroy `@explicit_destroy` types. All these names are temporary, we'll all figure those out soon. MODULAR_ORIG_COMMIT_REV_ID: 5005b11c4c3bdba25d096c5ffc300debebfd5523 --- docs/changelog.md | 4 ++++ stdlib/src/builtin/coroutine.mojo | 8 ++++---- stdlib/src/memory/owned_pointer.mojo | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index d5ab2b45a1..02a1a13eef 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -298,6 +298,10 @@ what we publish. - `StringSlice` now implements `strip`, `rstrip`, and `lstrip`. +- Introduced the `@explicit_destroy` annotation, the `__disable_del` keyword, + the `UnknownDestructibility` trait, and the `ImplicitlyDestructible` keyword, + for the experimental explicitly destroyed types feature. + ### 🦋 Changed - The `inout` and `borrowed` argument conventions have been renamed to the `mut` diff --git a/stdlib/src/builtin/coroutine.mojo b/stdlib/src/builtin/coroutine.mojo index b1e7c4bd55..04688695c8 100644 --- a/stdlib/src/builtin/coroutine.mojo +++ b/stdlib/src/builtin/coroutine.mojo @@ -134,7 +134,7 @@ struct Coroutine[type: AnyType, origins: OriginSet]: fn force_destroy(owned self): """Destroy the coroutine object.""" __mlir_op.`co.destroy`(self._handle) - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self @always_inline fn __await__(owned self) -> type as out: @@ -147,7 +147,7 @@ struct Coroutine[type: AnyType, origins: OriginSet]: # Black magic! Internal implementation detail! # Don't you dare copy this code! 😤 var handle = self._handle - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self __mlir_op.`co.await`[_type=NoneType]( handle, __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(out)), @@ -217,7 +217,7 @@ struct RaisingCoroutine[type: AnyType, origins: OriginSet]: fn force_destroy(owned self): """Destroy the coroutine object.""" __mlir_op.`co.destroy`(self._handle) - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self @always_inline fn __await__(owned self) raises -> type as out: @@ -230,7 +230,7 @@ struct RaisingCoroutine[type: AnyType, origins: OriginSet]: # Black magic! Internal implementation detail! # Don't you dare copy this code! 😤 var handle = self._handle - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self if __mlir_op.`co.await`[_type = __mlir_type.i1]( handle, __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(out)), diff --git a/stdlib/src/memory/owned_pointer.mojo b/stdlib/src/memory/owned_pointer.mojo index 5d1ddb367d..4dd473023c 100644 --- a/stdlib/src/memory/owned_pointer.mojo +++ b/stdlib/src/memory/owned_pointer.mojo @@ -148,7 +148,7 @@ struct OwnedPointer[T: AnyType]: """ var r = self._inner.take_pointee() self._inner.free() - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self return r^ @@ -171,6 +171,6 @@ struct OwnedPointer[T: AnyType]: var ptr = self._inner # Prevent the destructor from running on `self` - __mlir_op.`lit.ownership.mark_destroyed`(__get_mvalue_as_litref(self)) + __disable_del self return ptr From db30bf465cbbf412fa3c17bb33371c8a4c6faaea Mon Sep 17 00:00:00 2001 From: Evan Ovadia Date: Fri, 6 Dec 2024 15:11:58 -0500 Subject: [PATCH 107/119] Added associated types; we can now have aliases like `alias T: AnyType`, `alias N: Int`, etc. in a trait, and then specify them in structs that conform to that trait. MODULAR_ORIG_COMMIT_REV_ID: f1ca27c6c5a94c02424b841adf16ff1f3ea04dc9 --- docs/changelog.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 02a1a13eef..5398fd44c6 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -302,6 +302,10 @@ what we publish. the `UnknownDestructibility` trait, and the `ImplicitlyDestructible` keyword, for the experimental explicitly destroyed types feature. +- Added associated types; we can now have aliases like `alias T: AnyType`, + `alias N: Int`, etc. in a trait, and then specify them in structs that conform + to that trait. + ### 🦋 Changed - The `inout` and `borrowed` argument conventions have been renamed to the `mut` From f8c57ea939654b9c52c6007553a68fe5ea730378 Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Fri, 6 Dec 2024 20:23:56 -0800 Subject: [PATCH 108/119] [Docs] Origin updates. Update Lifetimes, origins, and references page for origin improvements in in 24.6. MODULAR_ORIG_COMMIT_REV_ID: d40dc85d4c74ad922335489c0c569fcee95c15d1 --- docs/manual/values/lifetimes.mdx | 109 ++++++++++++++++++++++--------- 1 file changed, 78 insertions(+), 31 deletions(-) diff --git a/docs/manual/values/lifetimes.mdx b/docs/manual/values/lifetimes.mdx index 39c2402f43..5dc05d799a 100644 --- a/docs/manual/values/lifetimes.mdx +++ b/docs/manual/values/lifetimes.mdx @@ -80,23 +80,23 @@ struct to specify an origin with parametric mutability: struct ParametricRef[ is_mutable: Bool, //, - origin: Origin[is_mutable].type + origin: Origin[is_mutable] ]: pass ``` -Note that `Origin` *isn't an origin value*, it's a helper for specifying a +Note that `Origin` isn't an origin **value**, it's a helper for specifying a origin **type**. Origin types carry the mutability of a reference as a boolean parameter value, indicating whether the origin is mutable, immutable, or even with mutability depending on a parameter specified by the enclosing API. The `is_mutable` parameter here is an [infer-only -parameter](/mojo/manual/parameters/#infer-only-parameters). It's never -specified directly by the user, but always inferred from context. The -`origin` value is often inferred, as well. For example, the following code -creates a [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) to an existing -value, but doesn't need to specify an origin—the `origin` is inferred from -the variable passed in to the `address_of()` method. +parameter](/mojo/manual/parameters/#infer-only-parameters). It can't be passed +as a positional parameter—it's either inferred from context or specified by +keyword. The `origin` value is often inferred, as well. For example, the +following code creates a [`Pointer`](/mojo/stdlib/memory/pointer/Pointer) to an +existing value, but doesn't need to specify an origin—the `origin` is inferred +from the variable passed in to the `address_of()` method. ```mojo from memory import Pointer @@ -114,15 +114,15 @@ A final type of origin value is an `OriginSet`. As the name suggests, an Most origin values are created by the compiler. As a developer, there are a few ways to specify origin values: -* Static origin. The `StaticConstantOrigin` - alias is an origin value representing immutable values that that last for the - duration of the program. String literal values have a `StaticConstantOrigin`. -* Derived origin. The `__origin_of()` magic function returns the origin associated - with the value (or values) passed in. -* Inferred origin. You can use inferred parameters to capture the origin - of a value passed in to a function. -* Wildcard origins. The `ImmutableAnyOrigin` and `MutableAnyOrigin` aliases - are special cases indicating a reference that might access any live value. +* Static origin. The `StaticConstantOrigin` alias is an origin value + representing immutable values that that last for the duration of the program. + String literal values have a `StaticConstantOrigin`. +* Derived origin. The `__origin_of()` magic function returns the origin + associated with the value (or values) passed in. +* Inferred origin. You can use inferred parameters to capture the origin of a + value passed in to a function. +* Wildcard origins. The `ImmutableAnyOrigin` and `MutableAnyOrigin` aliases are + special cases indicating a reference that might access any live value. #### Static origins @@ -138,8 +138,15 @@ static origin. #### Derived origins -Use the `__origin_of(value)` operator to obtain a value's origin. The -argument to `__origin_of()` can take an arbitrary expression: +Use the `__origin_of(value)` operator to obtain a value's origin. An argument +to `__origin_of()` can take an arbitrary expression that yields one of the +following: + +- An origin value. + +- A value with a memory location. + +For example: ```mojo __origin_of(self) @@ -148,7 +155,7 @@ __origin_of(foo()) ``` The `__origin_of()` operator is analyzed statically at compile time; -The expression passed to `__origin_of()` is never evaluated. (For example, +The expressions passed to `__origin_of()` are never evaluated. (For example, when the compiler analyzes `__origin_of(foo())`, it doesn't run the `foo()` function.) @@ -166,10 +173,19 @@ struct BoxedString: fn __init__(out self, value: String): self.o_ptr = OwnedPointer(value) - fn as_ptr(self) -> Pointer[String, __origin_of(self.o_ptr)]: + fn as_ptr(mut self) -> Pointer[String, __origin_of(self.o_ptr)]: return Pointer.address_of(self.o_ptr[]) ``` +Note that the `as_ptr()` method takes its `self` argument as `mut self`. If it +used the default `read` argument convention, it would be immutable, and the +derived origin (`__origin_of(self.o_ptr)`) would also be immutable. + +You can also pass multiple expressions to `__origin_of()` to express the union +of two or more origins: + +`__origin_of(a, b)` + #### Inferred origins The other common way to access an origin value is to *infer* it from the @@ -180,7 +196,7 @@ has an associated `origin`: struct Span[ is_mutable: Bool, //, T: CollectionElement, - origin: Origin[is_mutable].type, + origin: Origin[is_mutable], ](CollectionElementNew): """A non owning view of contiguous data. ``` @@ -229,9 +245,17 @@ to use a `ref` argument: The syntax for a `ref` argument is: -ref [origin_specifier] arg_name: arg_type +ref arg_name: arg_type + +Or: -The origin specifier passed inside the square brackets can be either: +ref [origin_specifier(s)] +arg_name: arg_type + +In the first form, the origin and mutability of the `ref` argument is inferred +from the value passed in. The second form includes an origin clause, consisting +of one or more origin specifiers inside square brackets. An origin +specifier can be either: * An origin value. @@ -244,22 +268,24 @@ The origin specifier passed inside the square brackets can be either: ref [self] ``` -* An underscore character (`_`) to indicate that the origin is *unbound*. You - can think of the underscore as a wildcard that will accept any origin: +* An [`AddressSpace`](/nightly/mojo/stdlib/memory/pointer/AddressSpace) value. + +* An underscore character (`_`) to indicate that the origin is *unbound*. This + is equivalent to omitting the origin specifier. ```mojo - def add_ref(ref a: Int, b: Int) -> Int: + def add_ref(ref a: Int, b: Int) -> Int: return a+b ``` You can also name the origin explicitly. This is useful if you want to specify -an `ImmutableOrigin` or `MutableLOrigin`, or if you want to bind to +an `ImmutableOrigin` or `MutableOrigin`, or if you want to bind to the `is_mutable` parameter. ```mojo def take_str_ref[ is_mutable: Bool, //, - origin: Origin[is_mutable].type + origin: Origin[is_mutable] ](ref [origin] s: String): @parameter if is_mutable: @@ -282,8 +308,14 @@ Mutable: Goodbye ### `ref` return values Like `ref` arguments, `ref` return values allow a function to return a mutable -or immutable reference to a value. Like a `read` or `mut` argument, these -references don't need to be dereferenced. +or immutable reference to a value. The syntax for a `ref` return value is: + +-> ref [origin_specifier(s)] + arg_type + +Note that you **must** specify an origin specifier for a `ref` return value. The +values allowed for origin specifiers are the same as the ones listed for +[`ref` arguments](#ref-arguments). `ref` return values can be an efficient way to handle updating items in a collection. The standard way to do this is by implementing the `__getitem__()` @@ -432,3 +464,18 @@ Diana Without parametric mutability, you'd need to write two versions of `__getitem__()`, one that accepts an immutable `self` and another that accepts a mutable `self`. + +#### Return values with union origins + +A `ref` return value can include multiple values in its origin specifier, which +yields the union of the origins. For example, the following `pick_one()` +function returns a reference to one of the two input strings, with an origin +that's a union of both origins. + +```mojo +def pick_one(cond: Bool, ref a: String, ref b: String) -> ref [a, b] String: + if cond: + return a + else: + return b +``` From cf307a230daeb93743834d8ff4e720d3b1d3404e Mon Sep 17 00:00:00 2001 From: modularbot Date: Sat, 7 Dec 2024 06:29:22 +0000 Subject: [PATCH 109/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024120705 --- examples/life/magic.lock | 205 +++++++++++++++++----------------- examples/magic.lock | 205 +++++++++++++++++----------------- examples/notebooks/magic.lock | 203 ++++++++++++++++----------------- examples/operators/magic.lock | 205 +++++++++++++++++----------------- magic.lock | 205 +++++++++++++++++----------------- 5 files changed, 514 insertions(+), 509 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 8a7706a5c8..3326e0e536 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -13,10 +13,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda @@ -171,12 +171,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -294,10 +294,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda @@ -452,12 +452,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -573,9 +573,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda @@ -715,12 +715,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda @@ -1020,26 +1020,26 @@ packages: timestamp: 1733247158254 - kind: conda name: anyio - version: 4.6.2.post1 + version: 4.7.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 - md5: 688697ec5e9588bdded167d19577625b + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 + md5: c88107912954a983c2caf25f7fd55158 depends: - exceptiongroup >=1.0.2 - idna >=2.8 - python >=3.9 - sniffio >=1.1 - - typing_extensions >=4.1 + - typing_extensions >=4.5 constrains: - - uvloop >=0.21.0b1 - trio >=0.26.1 + - uvloop >=0.21 license: MIT license_family: MIT - size: 109864 - timestamp: 1728935803440 + size: 112730 + timestamp: 1733532678437 - kind: conda name: aom version: 3.9.1 @@ -1118,18 +1118,19 @@ packages: - kind: conda name: attrs version: 24.2.0 - build: pyh71513ae_0 + build: pyh71513ae_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 + md5: 2018839db45c79654b57a924fcdd27d0 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 56048 - timestamp: 1722977241383 + size: 56336 + timestamp: 1733520064905 - kind: conda name: aws-c-auth version: 0.8.0 @@ -7694,76 +7695,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 - md5: 562c33b920321a676acb3fc49c2ddb11 - depends: - - max-core ==24.6.0.dev2024120616 release - - max-python >=24.6.0.dev2024120616,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120616 release - - mblack ==24.6.0.dev2024120616 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 + md5: d880e434f1f61e9f7fe35eb5af426762 + depends: + - max-core ==24.6.0.dev2024120705 release + - max-python >=24.6.0.dev2024120705,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120705 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1733502206770 + size: 9922 + timestamp: 1733548613215 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 - md5: 88e589273bf2ae77f80f879adacd234a + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae + md5: 210eb01e2dc1c01b03d2a817457b895d depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247418489 - timestamp: 1733502146971 + size: 247471356 + timestamp: 1733548812210 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b - md5: 5243c455575512a6061067e3b5d67e0f + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 + md5: c036e06aec88105f116ac9b6bfff8720 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251333959 - timestamp: 1733502206769 + size: 251342975 + timestamp: 1733548613213 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 - md5: 99f131bbf681d02fe75d5f9e7dc0ab57 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd + md5: 55c2f32ca83e4e21f8ddb5185c8cd263 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211890615 - timestamp: 1733502249826 + size: 211936941 + timestamp: 1733548831297 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b - md5: aa4c20f7f7f821d9b736c319b9b9d89a + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b + md5: 9b5d9f4c3ce3cd860772c00f7d98e059 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -7785,18 +7786,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123619079 - timestamp: 1733502146987 + size: 123682860 + timestamp: 1733548812221 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f - md5: df25189682c30a5259b1ffada686cef2 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e + md5: 54e13a8164032866ff1f243f931b4ab3 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -7818,18 +7819,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127361426 - timestamp: 1733502206780 + size: 127403239 + timestamp: 1733548613224 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b - md5: f03ead2bca51c2cd060703fe64ee40da + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 + md5: a4867e539c3f8c25297d0d695b6848b8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -7851,17 +7852,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112339857 - timestamp: 1733502249829 + size: 112378959 + timestamp: 1733548831301 - kind: conda name: mblack - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 - md5: dec7dbfe11abd34b171d290d38adea24 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 + md5: b801385ef3cbed6f7415ddf938dc182e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7871,8 +7872,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130704 - timestamp: 1733502206776 + size: 130737 + timestamp: 1733548613220 - kind: conda name: mdurl version: 0.1.2 @@ -7891,21 +7892,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 - md5: 1420c233cedc5e554c728d5f8b2b1657 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 + md5: ce9ee67733d1ab8c43031b67b475dba8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11371 - timestamp: 1733502206776 + size: 11370 + timestamp: 1733548613220 - kind: conda name: mpg123 version: 1.32.9 diff --git a/examples/magic.lock b/examples/magic.lock index cb06dce375..650f02f9b3 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -12,8 +12,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py311h2dc5d0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py311h459d7ec_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -229,8 +229,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py311h58d527c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda @@ -349,12 +349,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py311hcd402e7_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -446,8 +446,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py311h4921393_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda @@ -558,12 +558,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py311heffc1b2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -820,41 +820,42 @@ packages: timestamp: 1733247158254 - kind: conda name: anyio - version: 4.6.2.post1 + version: 4.7.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 - md5: 688697ec5e9588bdded167d19577625b + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 + md5: c88107912954a983c2caf25f7fd55158 depends: - exceptiongroup >=1.0.2 - idna >=2.8 - python >=3.9 - sniffio >=1.1 - - typing_extensions >=4.1 + - typing_extensions >=4.5 constrains: - - uvloop >=0.21.0b1 - trio >=0.26.1 + - uvloop >=0.21 license: MIT license_family: MIT - size: 109864 - timestamp: 1728935803440 + size: 112730 + timestamp: 1733532678437 - kind: conda name: attrs version: 24.2.0 - build: pyh71513ae_0 + build: pyh71513ae_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 + md5: 2018839db45c79654b57a924fcdd27d0 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 56048 - timestamp: 1722977241383 + size: 56336 + timestamp: 1733520064905 - kind: conda name: aws-c-auth version: 0.8.0 @@ -5875,76 +5876,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 - md5: 562c33b920321a676acb3fc49c2ddb11 - depends: - - max-core ==24.6.0.dev2024120616 release - - max-python >=24.6.0.dev2024120616,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120616 release - - mblack ==24.6.0.dev2024120616 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 + md5: d880e434f1f61e9f7fe35eb5af426762 + depends: + - max-core ==24.6.0.dev2024120705 release + - max-python >=24.6.0.dev2024120705,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120705 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1733502206770 + size: 9922 + timestamp: 1733548613215 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 - md5: 88e589273bf2ae77f80f879adacd234a + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae + md5: 210eb01e2dc1c01b03d2a817457b895d depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247418489 - timestamp: 1733502146971 + size: 247471356 + timestamp: 1733548812210 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b - md5: 5243c455575512a6061067e3b5d67e0f + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 + md5: c036e06aec88105f116ac9b6bfff8720 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251333959 - timestamp: 1733502206769 + size: 251342975 + timestamp: 1733548613213 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 - md5: 99f131bbf681d02fe75d5f9e7dc0ab57 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd + md5: 55c2f32ca83e4e21f8ddb5185c8cd263 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211890615 - timestamp: 1733502249826 + size: 211936941 + timestamp: 1733548831297 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.11release.conda - sha256: 22aabb8990184fa786008b44a27aae62833283ffd998420c7cc6750f919c9372 - md5: 4b34a9cdfb4598249c9e585f4cce4a8a + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.11release.conda + sha256: 21048c18d9b0e6aaaaabdbfa125e20f9555be811ea88c1a614fc00a8825d5969 + md5: 698eb0317cf8b0bffdf28220d595358f depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.11.* - pillow - fastapi @@ -5966,18 +5967,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123644414 - timestamp: 1733502146982 + size: 123717970 + timestamp: 1733548812218 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.11release.conda - sha256: bb9bf09fc5437061b9ab2383ee6a3a1cc4457ed4c32eaeb2a5a78f28c8a77c8e - md5: 73d121cddb702feb967db7b16e41d88a + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.11release.conda + sha256: 9e288a0e29839fbf4ad9c88e94828aab7a5002328dd4599c5883810977753a8b + md5: ead33ec6ccac667a98a9ef337cdd9c10 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.11.* - pillow - fastapi @@ -5999,18 +6000,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127348291 - timestamp: 1733502206778 + size: 127368506 + timestamp: 1733548613221 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.11release.conda - sha256: 29bb82ce4814de2684c3c9a587a2fca7ad3f3047059421be52e8e2b660ef3c31 - md5: 84a362f87f885e22d0e7e1c7649df4c3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.11release.conda + sha256: cf30ebcc9843242a9a2090366b219b1d8bf36c06623841bd1d83453f4beaf01a + md5: 371383929a69fe93ef3e336e144d3661 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.11.* - pillow - fastapi @@ -6032,17 +6033,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112341940 - timestamp: 1733502249828 + size: 112384807 + timestamp: 1733548831300 - kind: conda name: mblack - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 - md5: dec7dbfe11abd34b171d290d38adea24 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 + md5: b801385ef3cbed6f7415ddf938dc182e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6052,8 +6053,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130704 - timestamp: 1733502206776 + size: 130737 + timestamp: 1733548613220 - kind: conda name: mdurl version: 0.1.2 @@ -6072,21 +6073,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 - md5: 1420c233cedc5e554c728d5f8b2b1657 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 + md5: ce9ee67733d1ab8c43031b67b475dba8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11371 - timestamp: 1733502206776 + size: 11370 + timestamp: 1733548613220 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index ef2d7ac2be..5192892142 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -12,13 +12,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda @@ -166,13 +166,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -300,13 +300,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda @@ -455,13 +455,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -588,14 +588,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda @@ -736,13 +736,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -1036,26 +1036,26 @@ packages: timestamp: 1733247158254 - kind: conda name: anyio - version: 4.6.2.post1 + version: 4.7.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 - md5: 688697ec5e9588bdded167d19577625b + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 + md5: c88107912954a983c2caf25f7fd55158 depends: - exceptiongroup >=1.0.2 - idna >=2.8 - python >=3.9 - sniffio >=1.1 - - typing_extensions >=4.1 + - typing_extensions >=4.5 constrains: - - uvloop >=0.21.0b1 - trio >=0.26.1 + - uvloop >=0.21 license: MIT license_family: MIT - size: 109864 - timestamp: 1728935803440 + size: 112730 + timestamp: 1733532678437 - kind: conda name: appnope version: 0.1.4 @@ -1203,18 +1203,19 @@ packages: - kind: conda name: attrs version: 24.2.0 - build: pyh71513ae_0 + build: pyh71513ae_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 + md5: 2018839db45c79654b57a924fcdd27d0 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 56048 - timestamp: 1722977241383 + size: 56336 + timestamp: 1733520064905 - kind: conda name: aws-c-auth version: 0.8.0 @@ -6911,76 +6912,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 - md5: 562c33b920321a676acb3fc49c2ddb11 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 + md5: d880e434f1f61e9f7fe35eb5af426762 depends: - - max-core ==24.6.0.dev2024120616 release - - max-python >=24.6.0.dev2024120616,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120616 release - - mblack ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release + - max-python >=24.6.0.dev2024120705,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120705 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1733502206770 + size: 9922 + timestamp: 1733548613215 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 - md5: 88e589273bf2ae77f80f879adacd234a + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae + md5: 210eb01e2dc1c01b03d2a817457b895d depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247418489 - timestamp: 1733502146971 + size: 247471356 + timestamp: 1733548812210 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b - md5: 5243c455575512a6061067e3b5d67e0f + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 + md5: c036e06aec88105f116ac9b6bfff8720 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251333959 - timestamp: 1733502206769 + size: 251342975 + timestamp: 1733548613213 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 - md5: 99f131bbf681d02fe75d5f9e7dc0ab57 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd + md5: 55c2f32ca83e4e21f8ddb5185c8cd263 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211890615 - timestamp: 1733502249826 + size: 211936941 + timestamp: 1733548831297 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b - md5: aa4c20f7f7f821d9b736c319b9b9d89a + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b + md5: 9b5d9f4c3ce3cd860772c00f7d98e059 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -7002,18 +7003,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123619079 - timestamp: 1733502146987 + size: 123682860 + timestamp: 1733548812221 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f - md5: df25189682c30a5259b1ffada686cef2 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e + md5: 54e13a8164032866ff1f243f931b4ab3 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -7035,18 +7036,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127361426 - timestamp: 1733502206780 + size: 127403239 + timestamp: 1733548613224 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b - md5: f03ead2bca51c2cd060703fe64ee40da + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 + md5: a4867e539c3f8c25297d0d695b6848b8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -7068,17 +7069,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112339857 - timestamp: 1733502249829 + size: 112378959 + timestamp: 1733548831301 - kind: conda name: mblack - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 - md5: dec7dbfe11abd34b171d290d38adea24 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 + md5: b801385ef3cbed6f7415ddf938dc182e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7088,8 +7089,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130704 - timestamp: 1733502206776 + size: 130737 + timestamp: 1733548613220 - kind: conda name: mdurl version: 0.1.2 @@ -7124,21 +7125,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 - md5: 1420c233cedc5e554c728d5f8b2b1657 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 + md5: ce9ee67733d1ab8c43031b67b475dba8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11371 - timestamp: 1733502206776 + size: 11370 + timestamp: 1733548613220 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 5a0f9a46e1..12a4ba1b83 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -12,8 +12,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -229,8 +229,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda @@ -349,12 +349,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -446,8 +446,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda @@ -558,12 +558,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -820,41 +820,42 @@ packages: timestamp: 1733247158254 - kind: conda name: anyio - version: 4.6.2.post1 + version: 4.7.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 - md5: 688697ec5e9588bdded167d19577625b + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 + md5: c88107912954a983c2caf25f7fd55158 depends: - exceptiongroup >=1.0.2 - idna >=2.8 - python >=3.9 - sniffio >=1.1 - - typing_extensions >=4.1 + - typing_extensions >=4.5 constrains: - - uvloop >=0.21.0b1 - trio >=0.26.1 + - uvloop >=0.21 license: MIT license_family: MIT - size: 109864 - timestamp: 1728935803440 + size: 112730 + timestamp: 1733532678437 - kind: conda name: attrs version: 24.2.0 - build: pyh71513ae_0 + build: pyh71513ae_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 + md5: 2018839db45c79654b57a924fcdd27d0 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 56048 - timestamp: 1722977241383 + size: 56336 + timestamp: 1733520064905 - kind: conda name: aws-c-auth version: 0.8.0 @@ -5875,76 +5876,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 - md5: 562c33b920321a676acb3fc49c2ddb11 - depends: - - max-core ==24.6.0.dev2024120616 release - - max-python >=24.6.0.dev2024120616,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120616 release - - mblack ==24.6.0.dev2024120616 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 + md5: d880e434f1f61e9f7fe35eb5af426762 + depends: + - max-core ==24.6.0.dev2024120705 release + - max-python >=24.6.0.dev2024120705,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120705 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1733502206770 + size: 9922 + timestamp: 1733548613215 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 - md5: 88e589273bf2ae77f80f879adacd234a + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae + md5: 210eb01e2dc1c01b03d2a817457b895d depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247418489 - timestamp: 1733502146971 + size: 247471356 + timestamp: 1733548812210 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b - md5: 5243c455575512a6061067e3b5d67e0f + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 + md5: c036e06aec88105f116ac9b6bfff8720 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251333959 - timestamp: 1733502206769 + size: 251342975 + timestamp: 1733548613213 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 - md5: 99f131bbf681d02fe75d5f9e7dc0ab57 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd + md5: 55c2f32ca83e4e21f8ddb5185c8cd263 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211890615 - timestamp: 1733502249826 + size: 211936941 + timestamp: 1733548831297 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b - md5: aa4c20f7f7f821d9b736c319b9b9d89a + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b + md5: 9b5d9f4c3ce3cd860772c00f7d98e059 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -5966,18 +5967,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123619079 - timestamp: 1733502146987 + size: 123682860 + timestamp: 1733548812221 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f - md5: df25189682c30a5259b1ffada686cef2 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e + md5: 54e13a8164032866ff1f243f931b4ab3 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -5999,18 +6000,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127361426 - timestamp: 1733502206780 + size: 127403239 + timestamp: 1733548613224 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b - md5: f03ead2bca51c2cd060703fe64ee40da + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 + md5: a4867e539c3f8c25297d0d695b6848b8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -6032,17 +6033,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112339857 - timestamp: 1733502249829 + size: 112378959 + timestamp: 1733548831301 - kind: conda name: mblack - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 - md5: dec7dbfe11abd34b171d290d38adea24 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 + md5: b801385ef3cbed6f7415ddf938dc182e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6052,8 +6053,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130704 - timestamp: 1733502206776 + size: 130737 + timestamp: 1733548613220 - kind: conda name: mdurl version: 0.1.2 @@ -6072,21 +6073,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 - md5: 1420c233cedc5e554c728d5f8b2b1657 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 + md5: ce9ee67733d1ab8c43031b67b475dba8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11371 - timestamp: 1733502206776 + size: 11370 + timestamp: 1733548613220 - kind: conda name: multidict version: 6.1.0 diff --git a/magic.lock b/magic.lock index 1315f9a7a1..4cdf0f7c8e 100644 --- a/magic.lock +++ b/magic.lock @@ -12,8 +12,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda @@ -132,12 +132,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -230,8 +230,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda @@ -351,12 +351,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -448,8 +448,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda @@ -561,12 +561,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -823,41 +823,42 @@ packages: timestamp: 1733247158254 - kind: conda name: anyio - version: 4.6.2.post1 + version: 4.7.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.6.2.post1-pyhd8ed1ab_0.conda - sha256: 4b54b7ce79d818e3cce54ae4d552dba51b7afac160ceecdefd04b3917a37c502 - md5: 688697ec5e9588bdded167d19577625b + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda + sha256: 687537ee3af30f8784986bf40cac30e88138770b16e51ca9850c9c23c09aeba1 + md5: c88107912954a983c2caf25f7fd55158 depends: - exceptiongroup >=1.0.2 - idna >=2.8 - python >=3.9 - sniffio >=1.1 - - typing_extensions >=4.1 + - typing_extensions >=4.5 constrains: - - uvloop >=0.21.0b1 - trio >=0.26.1 + - uvloop >=0.21 license: MIT license_family: MIT - size: 109864 - timestamp: 1728935803440 + size: 112730 + timestamp: 1733532678437 - kind: conda name: attrs version: 24.2.0 - build: pyh71513ae_0 + build: pyh71513ae_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda + sha256: 8488a116dffe204015a90b41982c0270534bd1070f44a00b316d59e4a79ae8c7 + md5: 2018839db45c79654b57a924fcdd27d0 depends: - - python >=3.7 + - python >=3.9 license: MIT license_family: MIT - size: 56048 - timestamp: 1722977241383 + size: 56336 + timestamp: 1733520064905 - kind: conda name: aws-c-auth version: 0.8.0 @@ -5893,76 +5894,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120616-release.conda - sha256: 2338e4ad8e940eee4cf31d6ccfb9605bc3aaa0e2331e3c0f40c1063a0d6f4c58 - md5: 562c33b920321a676acb3fc49c2ddb11 - depends: - - max-core ==24.6.0.dev2024120616 release - - max-python >=24.6.0.dev2024120616,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120616 release - - mblack ==24.6.0.dev2024120616 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda + sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 + md5: d880e434f1f61e9f7fe35eb5af426762 + depends: + - max-core ==24.6.0.dev2024120705 release + - max-python >=24.6.0.dev2024120705,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120705 release license: LicenseRef-Modular-Proprietary - size: 9919 - timestamp: 1733502206770 + size: 9922 + timestamp: 1733548613215 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120616-release.conda - sha256: 626f40a00b28c6958272a368b31944d9d62bd57a931910b1e4520d7501c57b61 - md5: 88e589273bf2ae77f80f879adacd234a + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda + sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae + md5: 210eb01e2dc1c01b03d2a817457b895d depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247418489 - timestamp: 1733502146971 + size: 247471356 + timestamp: 1733548812210 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120616-release.conda - sha256: af5fcd915dd10f9a72d936fee1b4a32127725a072fb6df41b7a3f43997f3ac3b - md5: 5243c455575512a6061067e3b5d67e0f + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda + sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 + md5: c036e06aec88105f116ac9b6bfff8720 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251333959 - timestamp: 1733502206769 + size: 251342975 + timestamp: 1733548613213 - kind: conda name: max-core - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120616-release.conda - sha256: 9f051d29fdebf2c33eaa96659e75b06bf2befb17ac6992dc526b71eb4b959fc2 - md5: 99f131bbf681d02fe75d5f9e7dc0ab57 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda + sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd + md5: 55c2f32ca83e4e21f8ddb5185c8cd263 depends: - - mblack ==24.6.0.dev2024120616 release + - mblack ==24.6.0.dev2024120705 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211890615 - timestamp: 1733502249826 + size: 211936941 + timestamp: 1733548831297 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 619cfdba895fe1062b94e9e04109d5c321995c14ce80dd695937fedaeed1430b - md5: aa4c20f7f7f821d9b736c319b9b9d89a + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b + md5: 9b5d9f4c3ce3cd860772c00f7d98e059 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -5984,18 +5985,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123619079 - timestamp: 1733502146987 + size: 123682860 + timestamp: 1733548812221 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 1703b8f5e847917b04cc353ea6ce6fdfb4f0e5b053515b0e481b0bed93117a4f - md5: df25189682c30a5259b1ffada686cef2 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e + md5: 54e13a8164032866ff1f243f931b4ab3 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -6017,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127361426 - timestamp: 1733502206780 + size: 127403239 + timestamp: 1733548613224 - kind: conda name: max-python - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120616-3.12release.conda - sha256: 55e016fd1747baa8f15e358d8fe16953282a08b60c64ad6a98cbfdf0229f9d1b - md5: f03ead2bca51c2cd060703fe64ee40da + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda + sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 + md5: a4867e539c3f8c25297d0d695b6848b8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python 3.12.* - pillow - fastapi @@ -6050,17 +6051,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112339857 - timestamp: 1733502249829 + size: 112378959 + timestamp: 1733548831301 - kind: conda name: mblack - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120616-release.conda - sha256: ccab714a4e70220ff559e9d0e56232964981196851bf77eeac1c3bf53ab0beb2 - md5: dec7dbfe11abd34b171d290d38adea24 + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 + md5: b801385ef3cbed6f7415ddf938dc182e depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6070,8 +6071,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130704 - timestamp: 1733502206776 + size: 130737 + timestamp: 1733548613220 - kind: conda name: mdurl version: 0.1.2 @@ -6090,21 +6091,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120616 + version: 24.6.0.dev2024120705 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120616-release.conda - sha256: d886857cf3c3a53c8a44433bec9b60fc90f9e43b169319bca36ca9daf0369901 - md5: 1420c233cedc5e554c728d5f8b2b1657 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 + md5: ce9ee67733d1ab8c43031b67b475dba8 depends: - - max-core ==24.6.0.dev2024120616 release + - max-core ==24.6.0.dev2024120705 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11371 - timestamp: 1733502206776 + size: 11370 + timestamp: 1733548613220 - kind: conda name: multidict version: 6.1.0 From 770ab7905f9d271cd2f3b6a4eaa65be0e6e6154c Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 6 Dec 2024 22:30:15 -0800 Subject: [PATCH 110/119] [mojo-lang] Fix bugs related to SRValue -> ref conversion. This fixes https://github.com/modularml/mojo/issues/3830, a collection of issues handling emission of SRValues to argument conventions that require a memory argument. In these cases, we need to emit the value to memory and re-infer. This was completely broken for indirect calls, and didn't handle the case of direct calls that failed to re-infer. MODULAR_ORIG_COMMIT_REV_ID: 172c9efe1ca9083e50f1f58629d0b990bb3090cd --- docs/changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 5398fd44c6..3673d58fd7 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -635,6 +635,9 @@ what we publish. - [Issue #3829](https://github.com/modularml/mojo/issues/3829) - Poor error message when invoking a function pointer upon an argument of the wrong origin +- [Issue #3830](https://github.com/modularml/mojo/issues/3830) - Failures + emitting register RValues to ref arguments. + - The VS Code extension now auto-updates its private copy of the MAX SDK. - The variadic initializer for `SIMD` now works in parameter expressions. From 920ee3500507f026d6c70e1b287775779279c84b Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Sat, 7 Dec 2024 09:11:39 -1000 Subject: [PATCH 111/119] [mojo-stdlib] add implicit decorators where required Extra implicit decorators required for making the explicit constructor filtering more strict. MODULAR_ORIG_COMMIT_REV_ID: 82617a0e6e0de514abeda843bdadc48d42fdbbe3 --- stdlib/src/builtin/dtype.mojo | 10 +++++++++ stdlib/src/builtin/object.mojo | 5 ++++- stdlib/src/collections/string.mojo | 34 +++++++++++++++++++++++++++++- 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/stdlib/src/builtin/dtype.mojo b/stdlib/src/builtin/dtype.mojo index 1ed5dd09c6..b8a7dff5d6 100644 --- a/stdlib/src/builtin/dtype.mojo +++ b/stdlib/src/builtin/dtype.mojo @@ -155,6 +155,16 @@ struct DType( """ self = other + @always_inline + @implicit + fn __init__(out self, value: Self.type): + """Construct a DType from MLIR dtype. + + Args: + value: The MLIR dtype. + """ + self.value = value + @staticmethod fn _from_str(str: String) -> DType: """Construct a DType from a string. diff --git a/stdlib/src/builtin/object.mojo b/stdlib/src/builtin/object.mojo index 21b345b89d..fce05d2476 100644 --- a/stdlib/src/builtin/object.mojo +++ b/stdlib/src/builtin/object.mojo @@ -320,6 +320,7 @@ struct _ObjectImpl( self.value = Self.type(value) @always_inline + @implicit fn __init__[dt: DType](mut self, value: SIMD[dt, 1]): @parameter if dt.is_integral(): @@ -785,6 +786,7 @@ struct object( self._value = value @always_inline + @implicit fn __init__[dt: DType](mut self, value: SIMD[dt, 1]): """Initializes the object with a generic scalar value. If the scalar value type is bool, it is converted to a boolean. Otherwise, it is @@ -842,6 +844,7 @@ struct object( self._value = impl @always_inline + @implicit fn __init__[*Ts: CollectionElement](mut self, value: ListLiteral[*Ts]): """Initializes the object from a list literal. @@ -1861,7 +1864,7 @@ struct object( var impl = _ImmutableString(UnsafePointer[UInt8].alloc(1), 1) var char = self._value.get_as_string().data[index] impl.data.init_pointee_move(char) - return _ObjectImpl(impl) + return object(impl) return self._value.get_list_element(i._value.get_as_int().value) @always_inline diff --git a/stdlib/src/collections/string.mojo b/stdlib/src/collections/string.mojo index 90ed9b5cd1..86449179a3 100644 --- a/stdlib/src/collections/string.mojo +++ b/stdlib/src/collections/string.mojo @@ -785,7 +785,8 @@ struct String( @always_inline @implicit fn __init__(out self, owned impl: List[UInt8, *_]): - """Construct a string from a buffer of bytes. + """Construct a string from a buffer of bytes without copying the + allocated data. The buffer must be terminated with a null byte: @@ -815,6 +816,37 @@ struct String( ptr=impl.steal_data(), length=size, capacity=capacity ) + @always_inline + @implicit + fn __init__(out self, impl: Self._buffer_type): + """Construct a string from a buffer of bytes, copying the allocated + data. Use the transfer operator ^ to avoid the copy. + + The buffer must be terminated with a null byte: + + ```mojo + var buf = List[UInt8]() + buf.append(ord('H')) + buf.append(ord('i')) + buf.append(0) + var hi = String(buf) + ``` + + Args: + impl: The buffer. + """ + debug_assert( + len(impl) > 0 and impl[-1] == 0, + "expected last element of String buffer to be null terminator", + ) + # We make a backup because steal_data() will clear size and capacity. + var size = impl.size + debug_assert( + impl[size - 1] == 0, + "expected last element of String buffer to be null terminator", + ) + self._buffer = impl + @always_inline fn __init__(out self): """Construct an uninitialized string.""" From 5efd510fc4320c3b9caec771844fa8f19ebe2a0f Mon Sep 17 00:00:00 2001 From: Jack Clayton Date: Sat, 7 Dec 2024 13:46:32 -1000 Subject: [PATCH 112/119] [mojo-lang] Diagnose more implicit conversion without `@implicit` decorator Now checks for @implicit decorator in all scenarios when callable is CallSyntax::kImplicitConvert. This previously wasn't happening in instances like var x: Foo = 42, self.foo = 42, and returning values. This fixes https://github.com/modularml/mojo/issues/3828 and Fixes MOCO-1485 MODULAR_ORIG_COMMIT_REV_ID: 3a6b1ba1b5d7d3ff2ac7ddc2e36dac70cc5455cf --- examples/notebooks/BoolMLIR.ipynb | 17 +- examples/notebooks/RayTracing.ipynb | 1994 ++++++++++++++------------- 2 files changed, 1009 insertions(+), 1002 deletions(-) diff --git a/examples/notebooks/BoolMLIR.ipynb b/examples/notebooks/BoolMLIR.ipynb index 355dc77909..514770e9e8 100644 --- a/examples/notebooks/BoolMLIR.ipynb +++ b/examples/notebooks/BoolMLIR.ipynb @@ -126,7 +126,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -227,7 +227,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": { "tags": [] }, @@ -239,6 +239,7 @@ "\n", " # ...\n", "\n", + " @implicit\n", " fn __init__(out self, value: __mlir_type.i1):\n", " self.value = value" ] @@ -288,7 +289,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "metadata": { "tags": [] }, @@ -306,6 +307,7 @@ " fn __init__(out self):\n", " self = OurFalse\n", "\n", + " @implicit\n", " fn __init__(out self, value: __mlir_type.i1):\n", " self.value = value" ] @@ -353,7 +355,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "metadata": { "tags": [] }, @@ -369,6 +371,7 @@ "\n", " # ...\n", "\n", + " @implicit\n", " fn __init__(out self, value: __mlir_type.i1):\n", " self.value = value\n", "\n", @@ -429,7 +432,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -441,6 +444,7 @@ "struct OurBool:\n", " var value: __mlir_type.i1\n", "\n", + " @implicit\n", " fn __init__(out self, value: __mlir_type.i1):\n", " self.value = value\n", "\n", @@ -495,7 +499,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -507,6 +511,7 @@ "struct OurBool:\n", " var value: __mlir_type.i1\n", "\n", + " @implicit\n", " fn __init__(out self, value: __mlir_type.i1):\n", " self.value = value\n", "\n", diff --git a/examples/notebooks/RayTracing.ipynb b/examples/notebooks/RayTracing.ipynb index 66a768da6e..ea37cea474 100644 --- a/examples/notebooks/RayTracing.ipynb +++ b/examples/notebooks/RayTracing.ipynb @@ -1,1020 +1,1022 @@ { - "cells": [ - { - "cell_type": "raw", - "id": "7a924a43", - "metadata": {}, - "source": [ - "---\n", - "title: Ray tracing in Mojo\n", - "description: Learn how to draw 3D graphics with ray-traced lighting using Mojo.\n", - "website:\n", - " open-graph:\n", - " image: /static/images/mojo-social-card.png\n", - " twitter-card:\n", - " image: /static/images/mojo-social-card.png\n", - "---" - ] - }, - { - "cell_type": "markdown", - "id": "e48ca293", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "*Copyright 2023 Modular, Inc: Licensed under the Apache License v2.0 with LLVM Exceptions.*" - ] - }, - { - "cell_type": "markdown", - "id": "214584ac", - "metadata": {}, - "source": [ - "[//]: # REMOVE_FOR_WEBSITE\n", - "# Ray tracing in Mojo" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "c4edb2c9-5109-4e00-98c0-3aa92dbca7d1", - "metadata": {}, - "source": [ - "This tutorial about [ray\n", - "tracing](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)) is based on the\n", - "popular tutorial [Understandable RayTracing in\n", - "C++](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing).\n", - "The mathematical explanations are well described in that tutorial, so we'll\n", - "just point you to the appropriate sections for reference as we implement a\n", - "basic ray tracer in Mojo." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "fbd4aa63-a178-41f2-ad66-b017c1c69d2a", - "metadata": {}, - "source": [ - "## Step 1: Basic definitions\n", - "\n", - "We'll start by defining a `Vec3f` struct, which will use to represent a vector\n", - "in 3D space as well as RGB pixels. We'll use a `SIMD` representation for our\n", - "vector to enable vectorized operations. The `SIMD` type is a fixed-size vector,\n", - "and its size must be a power of 2. So we'll use a size of 4 and always pad the\n", - "underlying storage with a 0." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "78a07829-05bc-4a67-8ccc-f2e1537c478c", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from math import isqrt\n", - "\n", - "\n", - "@register_passable(\"trivial\")\n", - "struct Vec3f:\n", - " var data: SIMD[DType.float32, 4]\n", - "\n", - " @always_inline\n", - " fn __init__(out self, x: Float32, y: Float32, z: Float32):\n", - " self.data = SIMD[DType.float32, 4](x, y, z, 0)\n", - "\n", - " @always_inline\n", - " fn __init__(out self, data: SIMD[DType.float32, 4]):\n", - " self.data = data\n", - "\n", - " @always_inline\n", - " @staticmethod\n", - " fn zero() -> Vec3f:\n", - " return Vec3f(0, 0, 0)\n", - "\n", - " @always_inline\n", - " fn __sub__(self, other: Vec3f) -> Vec3f:\n", - " return self.data - other.data\n", - "\n", - " @always_inline\n", - " fn __add__(self, other: Vec3f) -> Vec3f:\n", - " return self.data + other.data\n", - "\n", - " @always_inline\n", - " fn __matmul__(self, other: Vec3f) -> Float32:\n", - " return (self.data * other.data).reduce_add()\n", - "\n", - " @always_inline\n", - " fn __mul__(self, k: Float32) -> Vec3f:\n", - " return self.data * k\n", - "\n", - " @always_inline\n", - " fn __neg__(self) -> Vec3f:\n", - " return self.data * -1.0\n", - "\n", - " @always_inline\n", - " fn __getitem__(self, idx: Int) -> SIMD[DType.float32, 1]:\n", - " return self.data[idx]\n", - "\n", - " @always_inline\n", - " fn cross(self, other: Vec3f) -> Vec3f:\n", - " var self_zxy = self.data.shuffle[2, 0, 1, 3]()\n", - " var other_zxy = other.data.shuffle[2, 0, 1, 3]()\n", - " return (self_zxy * other.data - self.data * other_zxy).shuffle[\n", - " 2, 0, 1, 3\n", - " ]()\n", - "\n", - " @always_inline\n", - " fn normalize(self) -> Vec3f:\n", - " return self.data * isqrt(self @ self)\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "2619eb1b-103b-4453-9725-4480e388452e", - "metadata": {}, - "source": [ - "We now define our `Image` struct, which will store the RGB pixels of our\n", - "images. It also contains a method to convert this Mojo struct into a NumPy\n", - "image, which will be used for implementing a straightforward display\n", - "mechanism. We will also implement a function for loading PNG files from disk." - ] - }, - { - "cell_type": "markdown", - "id": "acd55d71", - "metadata": {}, - "source": [ - "First install the required libraries:" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "53266408", - "metadata": {}, - "outputs": [], - "source": [ - "%%python\n", - "from importlib.util import find_spec\n", - "import shutil\n", - "import subprocess\n", - "\n", - "fix = \"\"\"\n", - "-------------------------------------------------------------------------\n", - "fix following the steps here:\n", - " https://github.com/modularml/mojo/issues/1085#issuecomment-1771403719\n", - "-------------------------------------------------------------------------\n", - "\"\"\"\n", - "\n", - "def install_if_missing(name: str):\n", - " if find_spec(name):\n", - " return\n", - "\n", - " print(f\"{name} not found, installing...\")\n", - " try:\n", - " if shutil.which('python3'): python = \"python3\"\n", - " elif shutil.which('python'): python = \"python\"\n", - " else: raise (\"python not on path\" + fix)\n", - " subprocess.check_call([python, \"-m\", \"pip\", \"install\", name])\n", - " except:\n", - " raise ImportError(f\"{name} not found\" + fix)\n", - "\n", - "install_if_missing(\"numpy\")\n", - "install_if_missing(\"matplotlib\")\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "ca218d22-0578-42af-a906-7f15a91c5bec", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "from python import Python\n", - "from python import PythonObject\n", - "from memory import UnsafePointer\n", - "\n", - "struct Image:\n", - " # reference count used to make the object efficiently copyable\n", - " var rc: UnsafePointer[Int]\n", - " # the two dimensional image is represented as a flat array\n", - " var pixels: UnsafePointer[Vec3f]\n", - " var height: Int\n", - " var width: Int\n", - "\n", - " fn __init__(out self, height: Int, width: Int):\n", - " self.height = height\n", - " self.width = width\n", - " self.pixels = UnsafePointer[Vec3f].alloc(self.height * self.width)\n", - " self.rc = UnsafePointer[Int].alloc(1)\n", - " self.rc[] = 1\n", - "\n", - " fn __copyinit__(out self, other: Self):\n", - " other._inc_rc()\n", - " self.pixels = other.pixels\n", - " self.rc = other.rc\n", - " self.height = other.height\n", - " self.width = other.width\n", - "\n", - " fn __del__(owned self):\n", - " self._dec_rc()\n", - "\n", - " fn _dec_rc(self):\n", - " if self.rc[] > 1:\n", - " self.rc[] -= 1\n", - " return\n", - " self._free()\n", - "\n", - " fn _inc_rc(self):\n", - " self.rc[] += 1\n", - "\n", - " fn _free(self):\n", - " self.rc.free()\n", - " self.pixels.free()\n", - "\n", - " @always_inline\n", - " fn set(self, row: Int, col: Int, value: Vec3f) -> None:\n", - " self.pixels[self._pos_to_index(row, col)] = value\n", - "\n", - " @always_inline\n", - " fn _pos_to_index(self, row: Int, col: Int) -> Int:\n", - " # Convert a (rol, col) position into an index in the underlying linear storage\n", - " return row * self.width + col\n", - "\n", - " def to_numpy_image(self) -> PythonObject:\n", - " var np = Python.import_module(\"numpy\")\n", - " var plt = Python.import_module(\"matplotlib.pyplot\")\n", - "\n", - " var np_image = np.zeros((self.height, self.width, 3), np.float32)\n", - "\n", - " # We use raw pointers to efficiently copy the pixels to the numpy array\n", - " var out_pointer = np_image.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.float32]()\n", - " var in_pointer = self.pixels.bitcast[Float32]()\n", - "\n", - " for row in range(self.height):\n", - " for col in range(self.width):\n", - " var index = self._pos_to_index(row, col)\n", - " for dim in range(3):\n", - " out_pointer[index * 3 + dim] = in_pointer[index * 4 + dim]\n", - "\n", - " return np_image\n", - "\n", - "\n", - "def load_image(fname: String) -> Image:\n", - " var np = Python.import_module(\"numpy\")\n", - " var plt = Python.import_module(\"matplotlib.pyplot\")\n", - "\n", - " var np_image = plt.imread(fname)\n", - " var rows = int(np_image.shape[0])\n", - " var cols = int(np_image.shape[1])\n", - " var image = Image(rows, cols)\n", - "\n", - " var in_pointer = np_image.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.float32]()\n", - " var out_pointer = image.pixels.bitcast[Float32]()\n", - "\n", - " for row in range(rows):\n", - " for col in range(cols):\n", - " var index = image._pos_to_index(row, col)\n", - " for dim in range(3):\n", - " out_pointer[index * 4 + dim] = in_pointer[index * 3 + dim]\n", - " return image\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "7a7dbe6f-f35f-42c5-ad37-b7400f6262f8", - "metadata": {}, - "source": [ - "We then add a function for quickly displaying an `Image` into the notebook. Our\n", - "Python interop comes in quite handy." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "9a3a8e81-7500-439b-a8d2-8e71ceea3e8b", - "metadata": {}, - "outputs": [], - "source": [ - "def render(image: Image):\n", - " np = Python.import_module(\"numpy\")\n", - " plt = Python.import_module(\"matplotlib.pyplot\")\n", - " colors = Python.import_module(\"matplotlib.colors\")\n", - " dpi = 32\n", - " fig = plt.figure(1, [image.width // 10, image.height // 10], dpi)\n", - "\n", - " plt.imshow(image.to_numpy_image())\n", - " plt.axis(\"off\")\n", - " plt.show()\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "5f42f174-d7d9-4f6c-9b4e-d0d586f8f5ec", - "metadata": {}, - "source": [ - "Finally, we test all our code so far with a simple image, which is the one\n", - "rendered in the [Step 1 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-1-write-an-image-to-the-disk)." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "52005588-38e7-4ef0-affe-6d063b9bf9b7", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAd0AAAFnCAYAAADjbJN9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAAGG0lEQVR4nO3ZwWoCQRRFQVv8/19+LtyMILjyTMtUbUICCWZ1uP3WzMwNAPi5+9kfAACu4nH8Zq11+ObD108/+/Z1x9/xmfb4+zt+Jv/zHr/z739/x890xf95o9+Z9XpUtnQBIPK+dM/6FABwAZYuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIWLoAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQ8bwMABFLFwAiogsAEc/LABCxdAEgIroAEBFdAIi46QJAxNIFgIjoAkDE8zIARCxdAIiILgBERBcAIm66ABCxdAEgIroAEBFdAIi46QJAxNIFgIjoAkDE8zIARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgYukCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJAxPMyAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwARz8sAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQER0ASDipgsAEUsXACKiCwARz8sAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiKULABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEc/LABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBEPC8DQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHRBYCImy4ARCxdAIiILgBEPC8DQGTNzJz9IQDgCixdAIiILgBEnv7cEL5KaxYBAAAAAElFTkSuQmCC" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "var image = Image(192, 256)\n", - "\n", - "for row in range(image.height):\n", - " for col in range(image.width):\n", - " image.set(\n", - " row,\n", - " col,\n", - " Vec3f(Float32(row) / image.height, Float32(col) / image.width, 0),\n", - " )\n", - "\n", - "render(image)\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "ef3206b4-0bbb-4108-a592-f748843e5d3d", - "metadata": {}, - "source": [ - "## Step 2: Ray tracing\n", - "\n", - "Now we'll perform ray tracing from a camera into a scene with a sphere. Before\n", - "reading the code below, we suggest you read more about how this works\n", - "conceptually from [Step 2 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-2-the-crucial-one-ray-tracing)." - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "778d8339-5b19-47ee-bdc6-a08e4ec5094c", - "metadata": {}, - "source": [ - "We first define the `Material` and `Sphere` structs, which are the new data\n", - "structures we'll need." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "1c4a79de-0b65-48ac-97c9-187b74b96b9f", - "metadata": {}, - "outputs": [], - "source": [ - "from math import sqrt\n", - "\n", - "@register_passable(\"trivial\")\n", - "struct Material:\n", - " var color: Vec3f\n", - " var albedo: Vec3f\n", - " var specular_component: Float32\n", - "\n", - " fn __init__(out self, color: Vec3f, albedo: Vec3f = Vec3f(0, 0, 0),\n", - " specular_component: Float32 = 0):\n", - " self.color = color\n", - " self.albedo = albedo\n", - " self.specular_component = specular_component\n", - "\n", - "alias W = 1024\n", - "alias H = 768\n", - "alias bg_color = Vec3f(0.02, 0.02, 0.02)\n", - "var shiny_yellow = Material(Vec3f(0.95, 0.95, 0.4), Vec3f(0.7, 0.6, 0), 30.0)\n", - "var green_rubber = Material(Vec3f( 0.3, 0.7, 0.3), Vec3f(0.9, 0.1, 0), 1.0)\n", - "\n", - "\n", - "@value\n", - "@register_passable(\"trivial\")\n", - "struct Sphere(CollectionElement):\n", - " var center: Vec3f\n", - " var radius: Float32\n", - " var material: Material\n", - "\n", - " @always_inline\n", - " fn intersects(self, orig: Vec3f, dir: Vec3f, mut dist: Float32) -> Bool:\n", - " \"\"\"This method returns True if a given ray intersects this sphere.\n", - " And if it does, it writes in the `dist` parameter the distance to the\n", - " origin of the ray.\n", - " \"\"\"\n", - " var L = orig - self.center\n", - " var a = dir @ dir\n", - " var b = 2 * (dir @ L)\n", - " var c = L @ L - self.radius * self.radius\n", - " var discriminant = b * b - 4 * a * c\n", - " if discriminant < 0:\n", - " return False\n", - " if discriminant == 0:\n", - " dist = -b / 2 * a\n", - " return True\n", - " var q = -0.5 * (b + sqrt(discriminant)) if b > 0 else -0.5 * (\n", - " b - sqrt(discriminant)\n", - " )\n", - " var t0 = q / a\n", - " var t1 = c / q\n", - " if t0 > t1:\n", - " t0 = t1\n", - " if t0 < 0:\n", - " t0 = t1\n", - " if t0 < 0:\n", - " return False\n", - "\n", - " dist = t0\n", - " return True\n" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "e5ed8e76-efc1-4905-90ea-4cad6df0c553", - "metadata": {}, - "source": [ - "We then define a `cast_ray` method, which will be used to figure out the color\n", - "of a particular pixel in the image we'll produce. It basically works by\n", - "identifying whether this ray intersects the sphere or not." - ] - }, + "cells": [ + { + "cell_type": "raw", + "id": "7a924a43", + "metadata": {}, + "source": [ + "---\n", + "title: Ray tracing in Mojo\n", + "description: Learn how to draw 3D graphics with ray-traced lighting using Mojo.\n", + "website:\n", + " open-graph:\n", + " image: /static/images/mojo-social-card.png\n", + " twitter-card:\n", + " image: /static/images/mojo-social-card.png\n", + "---" + ] + }, + { + "cell_type": "markdown", + "id": "e48ca293", + "metadata": {}, + "source": [ + "[//]: # REMOVE_FOR_WEBSITE\n", + "*Copyright 2023 Modular, Inc: Licensed under the Apache License v2.0 with LLVM Exceptions.*" + ] + }, + { + "cell_type": "markdown", + "id": "214584ac", + "metadata": {}, + "source": [ + "[//]: # REMOVE_FOR_WEBSITE\n", + "# Ray tracing in Mojo" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "c4edb2c9-5109-4e00-98c0-3aa92dbca7d1", + "metadata": {}, + "source": [ + "This tutorial about [ray\n", + "tracing](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)) is based on the\n", + "popular tutorial [Understandable RayTracing in\n", + "C++](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing).\n", + "The mathematical explanations are well described in that tutorial, so we'll\n", + "just point you to the appropriate sections for reference as we implement a\n", + "basic ray tracer in Mojo." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "fbd4aa63-a178-41f2-ad66-b017c1c69d2a", + "metadata": {}, + "source": [ + "## Step 1: Basic definitions\n", + "\n", + "We'll start by defining a `Vec3f` struct, which will use to represent a vector\n", + "in 3D space as well as RGB pixels. We'll use a `SIMD` representation for our\n", + "vector to enable vectorized operations. The `SIMD` type is a fixed-size vector,\n", + "and its size must be a power of 2. So we'll use a size of 4 and always pad the\n", + "underlying storage with a 0." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "78a07829-05bc-4a67-8ccc-f2e1537c478c", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from math import isqrt\n", + "\n", + "\n", + "@register_passable(\"trivial\")\n", + "struct Vec3f:\n", + " var data: SIMD[DType.float32, 4]\n", + "\n", + " @always_inline\n", + " fn __init__(out self, x: Float32, y: Float32, z: Float32):\n", + " self.data = SIMD[DType.float32, 4](x, y, z, 0)\n", + "\n", + " @implicit\n", + " @always_inline\n", + " fn __init__(out self, data: SIMD[DType.float32, 4]):\n", + " self.data = data\n", + "\n", + " @always_inline\n", + " @staticmethod\n", + " fn zero() -> Vec3f:\n", + " return Vec3f(0, 0, 0)\n", + "\n", + " @always_inline\n", + " fn __sub__(self, other: Vec3f) -> Vec3f:\n", + " return self.data - other.data\n", + "\n", + " @always_inline\n", + " fn __add__(self, other: Vec3f) -> Vec3f:\n", + " return self.data + other.data\n", + "\n", + " @always_inline\n", + " fn __matmul__(self, other: Vec3f) -> Float32:\n", + " return (self.data * other.data).reduce_add()\n", + "\n", + " @always_inline\n", + " fn __mul__(self, k: Float32) -> Vec3f:\n", + " return self.data * k\n", + "\n", + " @always_inline\n", + " fn __neg__(self) -> Vec3f:\n", + " return self.data * -1.0\n", + "\n", + " @always_inline\n", + " fn __getitem__(self, idx: Int) -> SIMD[DType.float32, 1]:\n", + " return self.data[idx]\n", + "\n", + " @always_inline\n", + " fn cross(self, other: Vec3f) -> Vec3f:\n", + " var self_zxy = self.data.shuffle[2, 0, 1, 3]()\n", + " var other_zxy = other.data.shuffle[2, 0, 1, 3]()\n", + " return (self_zxy * other.data - self.data * other_zxy).shuffle[\n", + " 2, 0, 1, 3\n", + " ]()\n", + "\n", + " @always_inline\n", + " fn normalize(self) -> Vec3f:\n", + " return self.data * isqrt(self @ self)\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "2619eb1b-103b-4453-9725-4480e388452e", + "metadata": {}, + "source": [ + "We now define our `Image` struct, which will store the RGB pixels of our\n", + "images. It also contains a method to convert this Mojo struct into a NumPy\n", + "image, which will be used for implementing a straightforward display\n", + "mechanism. We will also implement a function for loading PNG files from disk." + ] + }, + { + "cell_type": "markdown", + "id": "acd55d71", + "metadata": {}, + "source": [ + "First install the required libraries:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "53266408", + "metadata": {}, + "outputs": [], + "source": [ + "%%python\n", + "from importlib.util import find_spec\n", + "import shutil\n", + "import subprocess\n", + "\n", + "fix = \"\"\"\n", + "-------------------------------------------------------------------------\n", + "fix following the steps here:\n", + " https://github.com/modularml/mojo/issues/1085#issuecomment-1771403719\n", + "-------------------------------------------------------------------------\n", + "\"\"\"\n", + "\n", + "def install_if_missing(name: str):\n", + " if find_spec(name):\n", + " return\n", + "\n", + " print(f\"{name} not found, installing...\")\n", + " try:\n", + " if shutil.which('python3'): python = \"python3\"\n", + " elif shutil.which('python'): python = \"python\"\n", + " else: raise (\"python not on path\" + fix)\n", + " subprocess.check_call([python, \"-m\", \"pip\", \"install\", name])\n", + " except:\n", + " raise ImportError(f\"{name} not found\" + fix)\n", + "\n", + "install_if_missing(\"numpy\")\n", + "install_if_missing(\"matplotlib\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ca218d22-0578-42af-a906-7f15a91c5bec", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from python import Python\n", + "from python import PythonObject\n", + "from memory import UnsafePointer\n", + "\n", + "struct Image:\n", + " # reference count used to make the object efficiently copyable\n", + " var rc: UnsafePointer[Int]\n", + " # the two dimensional image is represented as a flat array\n", + " var pixels: UnsafePointer[Vec3f]\n", + " var height: Int\n", + " var width: Int\n", + "\n", + " fn __init__(out self, height: Int, width: Int):\n", + " self.height = height\n", + " self.width = width\n", + " self.pixels = UnsafePointer[Vec3f].alloc(self.height * self.width)\n", + " self.rc = UnsafePointer[Int].alloc(1)\n", + " self.rc[] = 1\n", + "\n", + " fn __copyinit__(out self, other: Self):\n", + " other._inc_rc()\n", + " self.pixels = other.pixels\n", + " self.rc = other.rc\n", + " self.height = other.height\n", + " self.width = other.width\n", + "\n", + " fn __del__(owned self):\n", + " self._dec_rc()\n", + "\n", + " fn _dec_rc(self):\n", + " if self.rc[] > 1:\n", + " self.rc[] -= 1\n", + " return\n", + " self._free()\n", + "\n", + " fn _inc_rc(self):\n", + " self.rc[] += 1\n", + "\n", + " fn _free(self):\n", + " self.rc.free()\n", + " self.pixels.free()\n", + "\n", + " @always_inline\n", + " fn set(self, row: Int, col: Int, value: Vec3f) -> None:\n", + " self.pixels[self._pos_to_index(row, col)] = value\n", + "\n", + " @always_inline\n", + " fn _pos_to_index(self, row: Int, col: Int) -> Int:\n", + " # Convert a (rol, col) position into an index in the underlying linear storage\n", + " return row * self.width + col\n", + "\n", + " def to_numpy_image(self) -> PythonObject:\n", + " var np = Python.import_module(\"numpy\")\n", + " var plt = Python.import_module(\"matplotlib.pyplot\")\n", + "\n", + " var np_image = np.zeros((self.height, self.width, 3), np.float32)\n", + "\n", + " # We use raw pointers to efficiently copy the pixels to the numpy array\n", + " var out_pointer = np_image.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.float32]()\n", + " var in_pointer = self.pixels.bitcast[Float32]()\n", + "\n", + " for row in range(self.height):\n", + " for col in range(self.width):\n", + " var index = self._pos_to_index(row, col)\n", + " for dim in range(3):\n", + " out_pointer[index * 3 + dim] = in_pointer[index * 4 + dim]\n", + "\n", + " return np_image\n", + "\n", + "\n", + "def load_image(fname: String) -> Image:\n", + " var np = Python.import_module(\"numpy\")\n", + " var plt = Python.import_module(\"matplotlib.pyplot\")\n", + "\n", + " var np_image = plt.imread(fname)\n", + " var rows = int(np_image.shape[0])\n", + " var cols = int(np_image.shape[1])\n", + " var image = Image(rows, cols)\n", + "\n", + " var in_pointer = np_image.__array_interface__[\"data\"][0].unsafe_get_as_pointer[DType.float32]()\n", + " var out_pointer = image.pixels.bitcast[Float32]()\n", + "\n", + " for row in range(rows):\n", + " for col in range(cols):\n", + " var index = image._pos_to_index(row, col)\n", + " for dim in range(3):\n", + " out_pointer[index * 4 + dim] = in_pointer[index * 3 + dim]\n", + " return image\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "7a7dbe6f-f35f-42c5-ad37-b7400f6262f8", + "metadata": {}, + "source": [ + "We then add a function for quickly displaying an `Image` into the notebook. Our\n", + "Python interop comes in quite handy." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9a3a8e81-7500-439b-a8d2-8e71ceea3e8b", + "metadata": {}, + "outputs": [], + "source": [ + "def render(image: Image):\n", + " np = Python.import_module(\"numpy\")\n", + " plt = Python.import_module(\"matplotlib.pyplot\")\n", + " colors = Python.import_module(\"matplotlib.colors\")\n", + " dpi = 32\n", + " fig = plt.figure(1, [image.width // 10, image.height // 10], dpi)\n", + "\n", + " plt.imshow(image.to_numpy_image())\n", + " plt.axis(\"off\")\n", + " plt.show()\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "5f42f174-d7d9-4f6c-9b4e-d0d586f8f5ec", + "metadata": {}, + "source": [ + "Finally, we test all our code so far with a simple image, which is the one\n", + "rendered in the [Step 1 of the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-1-write-an-image-to-the-disk)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "52005588-38e7-4ef0-affe-6d063b9bf9b7", + "metadata": { + "tags": [] + }, + "outputs": [ { - "cell_type": "code", - "execution_count": 7, - "id": "beeecde1-f365-4be5-a3b1-d8a145810be1", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "fn cast_ray(orig: Vec3f, dir: Vec3f, sphere: Sphere) -> Vec3f:\n", - " var dist: Float32 = 0\n", - " if not sphere.intersects(orig, dir, dist):\n", - " return bg_color\n", - "\n", - " return sphere.material.color\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAd0AAAFnCAYAAADjbJN9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAAGG0lEQVR4nO3ZwWoCQRRFQVv8/19+LtyMILjyTMtUbUICCWZ1uP3WzMwNAPi5+9kfAACu4nH8Zq11+ObD108/+/Z1x9/xmfb4+zt+Jv/zHr/z739/x890xf95o9+Z9XpUtnQBIPK+dM/6FABwAZYuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwAR0QWAiJsuAEQsXQCIWLoAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQ8bwMABFLFwAiogsAEc/LABCxdAEgIroAEBFdAIi46QJAxNIFgIjoAkDE8zIARCxdAIiILgBERBcAIm66ABCxdAEgIroAEBFdAIi46QJAxNIFgIjoAkDE8zIARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBERBcAIm66ABCxdAEgYukCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHPywAQsXQBICK6ABARXQCIuOkCQMTSBYCI6AJAxPMyAEQsXQCIiC4ARDwvA0DE0gWAiOgCQER0ASDipgsAEUsXACKiCwARz8sAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQER0ASDipgsAEUsXACKiCwARz8sAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiOgCQMTzMgBELF0AiIguAEREFwAibroAELF0ASAiugAQEV0AiLjpAkDE0gWAiKULABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEdEFgIibLgBELF0AiIguAEQ8LwNAxNIFgIjoAkBEdAEg4qYLABFLFwAiogsAEc/LABCxdAEgIroAEPG8DAARSxcAIqILABHRBYCImy4ARCxdAIiILgBEPC8DQMTSBYCI6AJARHQBIOKmCwARSxcAIqILABHRBYCImy4ARCxdAIiILgBEPC8DQGTNzJz9IQDgCixdAIiILgBEnv7cEL5KaxYBAAAAAElFTkSuQmCC" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "1baec786-664c-4fea-8be1-c2d5f25924e7", - "metadata": {}, - "source": [ - "Lastly, we parallelize the ray tracing for every pixel row-wise." - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "var image = Image(192, 256)\n", + "\n", + "for row in range(image.height):\n", + " for col in range(image.width):\n", + " image.set(\n", + " row,\n", + " col,\n", + " Vec3f(Float32(row) / image.height, Float32(col) / image.width, 0),\n", + " )\n", + "\n", + "render(image)\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "ef3206b4-0bbb-4108-a592-f748843e5d3d", + "metadata": {}, + "source": [ + "## Step 2: Ray tracing\n", + "\n", + "Now we'll perform ray tracing from a camera into a scene with a sphere. Before\n", + "reading the code below, we suggest you read more about how this works\n", + "conceptually from [Step 2 of the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-2-the-crucial-one-ray-tracing)." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "778d8339-5b19-47ee-bdc6-a08e4ec5094c", + "metadata": {}, + "source": [ + "We first define the `Material` and `Sphere` structs, which are the new data\n", + "structures we'll need." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1c4a79de-0b65-48ac-97c9-187b74b96b9f", + "metadata": {}, + "outputs": [], + "source": [ + "from math import sqrt\n", + "\n", + "@register_passable(\"trivial\")\n", + "struct Material:\n", + " var color: Vec3f\n", + " var albedo: Vec3f\n", + " var specular_component: Float32\n", + "\n", + " @implicit\n", + " fn __init__(out self, color: Vec3f, albedo: Vec3f = Vec3f(0, 0, 0),\n", + " specular_component: Float32 = 0):\n", + " self.color = color\n", + " self.albedo = albedo\n", + " self.specular_component = specular_component\n", + "\n", + "alias W = 1024\n", + "alias H = 768\n", + "alias bg_color = Vec3f(0.02, 0.02, 0.02)\n", + "var shiny_yellow = Material(Vec3f(0.95, 0.95, 0.4), Vec3f(0.7, 0.6, 0), 30.0)\n", + "var green_rubber = Material(Vec3f( 0.3, 0.7, 0.3), Vec3f(0.9, 0.1, 0), 1.0)\n", + "\n", + "\n", + "@value\n", + "@register_passable(\"trivial\")\n", + "struct Sphere(CollectionElement):\n", + " var center: Vec3f\n", + " var radius: Float32\n", + " var material: Material\n", + "\n", + " @always_inline\n", + " fn intersects(self, orig: Vec3f, dir: Vec3f, mut dist: Float32) -> Bool:\n", + " \"\"\"This method returns True if a given ray intersects this sphere.\n", + " And if it does, it writes in the `dist` parameter the distance to the\n", + " origin of the ray.\n", + " \"\"\"\n", + " var L = orig - self.center\n", + " var a = dir @ dir\n", + " var b = 2 * (dir @ L)\n", + " var c = L @ L - self.radius * self.radius\n", + " var discriminant = b * b - 4 * a * c\n", + " if discriminant < 0:\n", + " return False\n", + " if discriminant == 0:\n", + " dist = -b / 2 * a\n", + " return True\n", + " var q = -0.5 * (b + sqrt(discriminant)) if b > 0 else -0.5 * (\n", + " b - sqrt(discriminant)\n", + " )\n", + " var t0 = q / a\n", + " var t1 = c / q\n", + " if t0 > t1:\n", + " t0 = t1\n", + " if t0 < 0:\n", + " t0 = t1\n", + " if t0 < 0:\n", + " return False\n", + "\n", + " dist = t0\n", + " return True\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "e5ed8e76-efc1-4905-90ea-4cad6df0c553", + "metadata": {}, + "source": [ + "We then define a `cast_ray` method, which will be used to figure out the color\n", + "of a particular pixel in the image we'll produce. It basically works by\n", + "identifying whether this ray intersects the sphere or not." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "beeecde1-f365-4be5-a3b1-d8a145810be1", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "fn cast_ray(orig: Vec3f, dir: Vec3f, sphere: Sphere) -> Vec3f:\n", + " var dist: Float32 = 0\n", + " if not sphere.intersects(orig, dir, dist):\n", + " return bg_color\n", + "\n", + " return sphere.material.color\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "1baec786-664c-4fea-8be1-c2d5f25924e7", + "metadata": {}, + "source": [ + "Lastly, we parallelize the ray tracing for every pixel row-wise." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "80c81118-acf9-4786-9a3a-694fe7f2d08a", + "metadata": { + "tags": [] + }, + "outputs": [ { - "cell_type": "code", - "execution_count": 8, - "id": "80c81118-acf9-4786-9a3a-694fe7f2d08a", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAABKUUlEQVR4nOzde5CddX3H8e85u3t2N9lkc11CCESEXEgD2CRY1KJStNrRabWidAZGOy3qH62O1dE6dRCYsVXqH7ZTW+8WrdVpB2+1DkWQKVQCbeQypSAkQAhJSHYJuWw2ezm7e57+EQ3BAiWw333O7nm9ZpjZk7MhnznJHzl5n9/zVIqiKAIAAAAAAACAKVUtewAAAAAAAADAbCTGAgAAAAAAACRoP/5BrVYrawcAAAAAAADAjFev14997WQsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEA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AABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAP63fTs4AQAEYCCG+w9dpzgESSbo/ygAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAIDA2bbXIwAAAAAAAAB+4xkLAAAAAAAAEBBjAQAAAAAAAAIXPgf3yqAAlNMAAAAASUVORK5CYII=" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "from math import tan, acos\n", - "from algorithm import parallelize\n", - "\n", - "\n", - "fn create_image_with_sphere(sphere: Sphere, height: Int, width: Int) -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(row, col, cast_ray(Vec3f.zero(), dir, sphere))\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "\n", - "render(\n", - " create_image_with_sphere(Sphere(Vec3f(-3, 0, -16), 2, shiny_yellow), H, W)\n", - ")\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAABKUUlEQVR4nOzde5CddX3H8e85u3t2N9lkc11CCESEXEgD2CRY1KJStNrRabWidAZGOy3qH62O1dE6dRCYsVXqH7ZTW+8WrdVpB2+1DkWQKVQCbeQypSAkQAhJSHYJuWw2ezm7e57+EQ3BAiWw333O7nm9ZpjZk7MhnznJHzl5n9/zVIqiKAIAAAAAAACAKVUtewAAAAAAAADAbCTGAgAAAAAAACRoP/5BrVYrawcAAAAAAADAjFev14997WQsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEA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AABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAAAAAAAAIIEYCwAAAAAAAJBAjAUAAAAAAABIIMYCAAAAAAAAJBBjAQAAAAAAABKIsQAAAAAAAAAJxFgAAAAAAACABGIsAAAAAAAAQAIxFgAAAAAAACCBGAsAAAAAAACQQIwFAAAAAAAASCDGAgAAAAAAACQQYwEAAAAAAAASiLEAAAAAAAAACcRYAAAAAAAAgARiLAAAAAAAAEACMRYAAAAAAAAggRgLAAAAAAAAkECMBQAAAAAAAEggxgIAAAAAAAAkEGMBAAAAAAAAEoixAAAAAAAAAAnEWAAAAAAAAIAEYiwAAAAAAABAAjEWAP63fTs4AQAEYCCG+w9dpzgESSbo/ygAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAIDA2bbXIwAAAAAAAAB+4xkLAAAAAAAAEBBjAQAAAAAAAAIXPgf3yqAAlNMAAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "ee9bbf4c-91ad-4787-a332-b509fdc8d512", - "metadata": {}, - "source": [ - "## Step 3: More spheres\n", - "\n", - "This section corresponds to the [Step 3 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-3-add-more-spheres).\n", - "\n", - "We include here all the necessary changes:\n", - "\n", - "- We add 3 more spheres to the scene, 2 of them being of green rubber material.\n", - "- When we intersect the ray with the sphere, we render the color of the closest\n", - " sphere." - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "from math import tan, acos\n", + "from algorithm import parallelize\n", + "\n", + "\n", + "fn create_image_with_sphere(sphere: Sphere, height: Int, width: Int) -> Image:\n", + " var image = Image(height, width)\n", + "\n", + " @parameter\n", + " fn _process_row(row: Int):\n", + " var y = -((Float32(2.0) * row + 1) / height - 1)\n", + " for col in range(width):\n", + " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", + " var dir = Vec3f(x, y, -1).normalize()\n", + " image.set(row, col, cast_ray(Vec3f.zero(), dir, sphere))\n", + "\n", + " parallelize[_process_row](height)\n", + "\n", + " return image\n", + "\n", + "\n", + "render(\n", + " create_image_with_sphere(Sphere(Vec3f(-3, 0, -16), 2, shiny_yellow), H, W)\n", + ")\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "ee9bbf4c-91ad-4787-a332-b509fdc8d512", + "metadata": {}, + "source": [ + "## Step 3: More spheres\n", + "\n", + "This section corresponds to the [Step 3 of the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-3-add-more-spheres).\n", + "\n", + "We include here all the necessary changes:\n", + "\n", + "- We add 3 more spheres to the scene, 2 of them being of green rubber material.\n", + "- When we intersect the ray with the sphere, we render the color of the closest\n", + " sphere." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "b4774ada-3cef-4ce3-a573-3fd721fe41b0", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 9, - "id": "b4774ada-3cef-4ce3-a573-3fd721fe41b0", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAACKqklEQVR4nOzdd5hdd30n/ve5d+70plGXbMm2uptcMN00h5YQAtmwIUsNkJBNNgUSkk3IhmUT8sumJ8+PFNLYpW1Ywoaw+2Npxiam2oANuFtuki1ZvY6m3vv7Q0a2cZWlM+fOzOv1PHqYe+femTdn7sx4zvt8vt+i1Wq1AgAAAAAAAMApVas6AAAAAAAAAMBcpIwFAAAAAAAAKEHHg290dnZWlQMAAAAAAABg1puYmDj+tslYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAA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nszHPnZ7PvWpuzM11aw6DsCMabVaueKKe/ORj9yWPXvGqo4DAJwiylgAAAAAAACAElimGAAAAACgQocPT+bw4cmMj09XHQUAOMWUsQAAAAAAFXr/+2/Ohz50S+69d7TqKADAKaaMBQAAANrO6OhUbrxxf5Yt68nKlX1JiqojAZxye/eOZceO0dx0077ccsuBquMAACUoWq1W63s3Ojs7q8wCAAAAkCTp6CgyMNCZV7zijPzBHzwjRaGMBeaeD3/41rzrXVdndHQqY2OWKAaAuWJiYuL42yZjAQAAgLYzNdXKvn3jOXx4Kq1WoosF5qLx8ens3TtedQwAoES1qgMAAAAAAAAAzEXKWAAAAKBt3Xbbgfzt396Yb3xjV9VRAE6ZrVsP5+/+7sZcddX2qqMAACWzZywAAADQ9t7xjs35j//xoqpjAJwSn//8trz2tZ/PxESz6igAQAkevGesyVgAAAAAAACAEnRUHQAAAAAAYD5otVqZnj7274H1CgGAuUwZCwAAAAAwA+6550h+93e/mS1bDmZqyhLFADAfKGMBAACAtjc2Np39+8fT29uRzs561XEATkiz2crhw5O5997RfPaz27J373jVkQCAGVK0Wg8siNHZ2VllFgAAAIBHtGRJT5Yt682v/doFeclLVlUdB+CE7N8/nre97cu56aZ92bLlYKanrVEMAHPZxMTE8bdNxgIAAABtb+fOo9m582j27TNNBsw+09Ot3Hrr/txyy4GqowAAM6xWdQAAAAAAAACAuUgZCwAAAMwat9xyIF/60vYcOGBCFmh/zWYr3/3u3nzlK/flyJGpquMAABWwZywAAAAwazQatfT1deSDH7wsz3jGsqrjADymycnp/ORPXpHLL78nExPTadkqFgDmBXvGAgAAALPS5GQz4+PTaTY1GkA7a+Xqq3flhhv25c47D2V8fLrqQABARZSxAAAAAACn2Mc+tiV/+7c3VR0DAKiYPWMBAACAWWVyspkPfODW/Pmffyd7945VHQfgEVmSGABIlLEAAADALDM11cr//J9b8r733ZD9+yce/wkAM6jVaqXZrDoFANAuLFMMAAAAUKpWkqLqELNcWcfwRD9u2Y+fD9rlGJb3tfnc57blox/dkmuv3VPKxwcAZhdlLAAAADArNZutjI5O5ejRqXR311MU7Vp6tWuu2aSsY3iiH7fsx88H7XIM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+plce+3uakPNMutftz5n/siZD9zhZcpjaSXT49P5xnu+kX037Ks6TZJje26fdlpf/uVfXppVqwaqjgNz0vj4dF772s/nC1+4Jw+czQQAaE8mYwEAYA677LKVueiiRUmSnp6OLFnSk6LQbpWlKIp87/B2d3fk9a9fnxe+cGWSZOvWI/nYx27P1PeWWOUhBtcMZvFFizO8cVgByxNXHNtPduXzV2bknJEkyfi+8dx75b1pTlbzvdZqJQcOTOR977shmzYtyKtetSadprvhpH3ta/fli188tiz51FQzd9xxUBELAMw6ylgAAJhDiiJ54QtPy0/91NlVR5mXurrqecMbNhy//eUv78i//MudythHMbR2KGtfvbbqGMxCRb3IyhesPH774JaD2fGVHZWVsUly8OBk/vIvb8hTnrI4L3/5GWk0alYkgCfpewv5ffWr9+X3fu9bFacBADg5likGAIBZ7vzzR/KWt2xKrXbshP/FFy/O+vXD1YYiSbJz59FceeW9+fKXd+S///dbqo7TNvpX9Wf1y1an//T+DHutcgpMHprM7mt3Z/8t+3P3p+5OKpycW7iwO8973oo8/elL88Y3brj/Z3MrStmT5RjOJ9/85q78wz/clOuv35frrttTdRwAgBNmmWIAAJgDiuLYJOaZZw7mx398bTo6alVH4vssWdKTV71qTYoi+djHbj8+6TMx0cz09DxcZ/H+5WV7l/ZmxXNXpOY1yynSGGhk+aXLU++u557L70lzsplWRd9je/aM5Z/+6fZMTjbz4z9+bLniRsNr/eQpYueyVquV8fHp40sQb9lyMP/jf2xJszkPf1cCAHOOyVgAAJilzjprML/zO5dk1aqBbNw4bF/YNrZz59HceuuBJK20Wsmf/Mm3c8UV91Yda8b1LOnJxp/cmJ6lPRlYNaBb4ZSbODiRI9uOZPtV27P101srzbJoUXfWrx/Kq161Jq9//YbHfwLMY7t3H82v//rXsmPH0STHLmq4+eb91YYCADgJJmMBAGAWq9WKLFzYldWrB/L0py/L0JCLKtvdkiU9WbKkJ8mx6Z///b/vyk037cveveOZmJjb+8k2Bhqp3T8V2LOkJws2LUhjoFFxKuaqzsHOdJ7dmcPbDqdrpCtTR6YyPT5dSZbdu8eye/dYzj57JNu3H7n/3iIjI13p6qpXkgnaTavVyt6949m69XC+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AAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABUzVdV03PQIAAAAAAABgt3EyFgAAAAAAAKAAMRYAAAAAAACggP8fjymaWYXEdVMAAAAASUVORK5CYII=" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "from algorithm import parallelize\n", - "from utils.numerics import inf\n", - "from collections import List\n", - "\n", - "\n", - "fn scene_intersect(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " background: Material,\n", - ") -> Material:\n", - " var spheres_dist = inf[DType.float32]()\n", - " var material = background\n", - "\n", - " for i in range(spheres.size):\n", - " var dist = inf[DType.float32]()\n", - " if spheres[i].intersects(orig, dir, dist) and dist < spheres_dist:\n", - " spheres_dist = dist\n", - " material = spheres[i].material\n", - "\n", - " return material\n", - "\n", - "\n", - "fn cast_ray(\n", - " orig: Vec3f, dir: Vec3f, spheres: List[Sphere]\n", - ") -> Material:\n", - " var background = Material(Vec3f(0.02, 0.02, 0.02))\n", - " return scene_intersect(orig, dir, spheres, background)\n", - "\n", - "\n", - "fn create_image_with_spheres(\n", - " spheres: List[Sphere], height: Int, width: Int\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(row, col, cast_ray(Vec3f.zero(), dir, spheres).color)\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "var spheres = List[Sphere]()\n", - "spheres.append(Sphere(Vec3f(-3, 0, -16), 2, shiny_yellow))\n", - "spheres.append(Sphere(Vec3f(-1.0, -1.5, -12), 1.8, green_rubber))\n", - "spheres.append(Sphere(Vec3f( 1.5, -0.5, -18), 3, green_rubber))\n", - "spheres.append(Sphere(Vec3f( 7, 5, -18), 4, shiny_yellow))\n", - "\n", - "render(create_image_with_spheres(spheres, H, W))\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAACKqklEQVR4nOzdd5hdd30n/ve5d+70plGXbMm2uptcMN00h5YQAtmwIUsNkJBNNgUSkk3IhmUT8sumJ8+PFNLYpW1Ywoaw+2Npxiam2oANuFtuki1ZvY6m3vv7Q0a2cZWlM+fOzOv1PHqYe+femTdn7sx4zvt8vt+i1Wq1AgAAAAAAAMApVas6AAAAAAAAAMBcpIwFAAAAAAAAKEHHg290dnZWlQMAAAAAAABg1puYmDj+tslYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAAAAAASqCMBQAAAAAAACiBMhYAAAAAAACgBMpYAAAAAAAAgBIoYwEAAAAAAABKoIwFAAAAAAAAKIEyFgAAAAAAAKAEylgAAAAAAACAEihjAQAAAAAAAEqgjAUAAAAAAAAogTIWAAAAAAAAoATKWAAAAAAAAIASKGMBAAAA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nszHPnZ7PvWpuzM11aw6DsCMabVaueKKe/ORj9yWPXvGqo4DAJwiylgAAAAAAACAElimGAAAAACgQocPT+bw4cmMj09XHQUAOMWUsQAAAAAAFXr/+2/Ohz50S+69d7TqKADAKaaMBQAAANrO6OhUbrxxf5Yt68nKlX1JiqojAZxye/eOZceO0dx0077ccsuBquMAACUoWq1W63s3Ojs7q8wCAAAAkCTp6CgyMNCZV7zijPzBHzwjRaGMBeaeD3/41rzrXVdndHQqY2OWKAaAuWJiYuL42yZjAQAAgLYzNdXKvn3jOXx4Kq1WoosF5qLx8ens3TtedQwAoES1qgMAAAAAAAAAzEXKWAAAAKBt3Xbbgfzt396Yb3xjV9VRAE6ZrVsP5+/+7sZcddX2qqMAACWzZywAAADQ9t7xjs35j//xoqpjAJwSn//8trz2tZ/PxESz6igAQAkevGesyVgAAAAAAACAEnRUHQAAAAAAYD5otVqZnj7274H1CgGAuUwZCwAAAAAwA+6550h+93e/mS1bDmZqyhLFADAfKGMBAACAtjc2Np39+8fT29uRzs561XEATkiz2crhw5O5997RfPaz27J373jVkQCAGVK0Wg8siNHZ2VllFgAAAIBHtGRJT5Yt682v/doFeclLVlUdB+CE7N8/nre97cu56aZ92bLlYKanrVEMAHPZxMTE8bdNxgIAAABtb+fOo9m582j27TNNBsw+09Ot3Hrr/txyy4GqowAAM6xWdQAAAAAAAACAuUgZCwAAAMwat9xyIF/60vYcOGBCFmh/zWYr3/3u3nzlK/flyJGpquMAABWwZywAAAAwazQatfT1deSDH7wsz3jGsqrjADymycnp/ORPXpHLL78nExPTadkqFgDmBXvGAgAAALPS5GQz4+PTaTY1GkA7a+Xqq3flhhv25c47D2V8fLrqQABARZSxAAAAAACn2Mc+tiV/+7c3VR0DAKiYPWMBAACAWWVyspkPfODW/Pmffyd7945VHQfgEVmSGABIlLEAAADALDM11cr//J9b8r733ZD9+yce/wkAM6jVaqXZrDoFANAuLFMMAAAAUKpWkqLqELNcWcfwRD9u2Y+fD9rlGJb3tfnc57blox/dkmuv3VPKxwcAZhdlLAAAADArNZutjI5O5ejRqXR311MU7Vp6tWuu2aSsY3iiH7fsx88H7XIM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+plce+3uakPNMutftz5n/siZD9zhZcpjaSXT49P5xnu+kX037Ks6TZJje26fdlpf/uVfXppVqwaqjgNz0vj4dF772s/nC1+4Jw+czQQAaE8mYwEAYA677LKVueiiRUmSnp6OLFnSk6LQbpWlKIp87/B2d3fk9a9fnxe+cGWSZOvWI/nYx27P1PeWWOUhBtcMZvFFizO8cVgByxNXHNtPduXzV2bknJEkyfi+8dx75b1pTlbzvdZqJQcOTOR977shmzYtyKtetSadprvhpH3ta/fli188tiz51FQzd9xxUBELAMw6ylgAAJhDiiJ54QtPy0/91NlVR5mXurrqecMbNhy//eUv78i//MudythHMbR2KGtfvbbqGMxCRb3IyhesPH774JaD2fGVHZWVsUly8OBk/vIvb8hTnrI4L3/5GWk0alYkgCfpewv5ffWr9+X3fu9bFacBADg5likGAIBZ7vzzR/KWt2xKrXbshP/FFy/O+vXD1YYiSbJz59FceeW9+fKXd+S///dbqo7TNvpX9Wf1y1an//T+DHutcgpMHprM7mt3Z/8t+3P3p+5OKpycW7iwO8973oo8/elL88Y3brj/Z3MrStmT5RjOJ9/85q78wz/clOuv35frrttTdRwAgBNmmWIAAJgDiuLYJOaZZw7mx398bTo6alVH4vssWdKTV71qTYoi+djHbj8+6TMx0cz09DxcZ/H+5WV7l/ZmxXNXpOY1yynSGGhk+aXLU++u557L70lzsplWRd9je/aM5Z/+6fZMTjbz4z9+bLniRsNr/eQpYueyVquV8fHp40sQb9lyMP/jf2xJszkPf1cCAHOOyVgAAJilzjprML/zO5dk1aqBbNw4bF/YNrZz59HceuuBJK20Wsmf/Mm3c8UV91Yda8b1LOnJxp/cmJ6lPRlYNaBb4ZSbODiRI9uOZPtV27P101srzbJoUXfWrx/Kq161Jq9//YbHfwLMY7t3H82v//rXsmPH0STHLmq4+eb91YYCADgJJmMBAGAWq9WKLFzYldWrB/L0py/L0JCLKtvdkiU9WbKkJ8mx6Z///b/vyk037cveveOZmJjb+8k2Bhqp3T8V2LOkJws2LUhjoFFxKuaqzsHOdJ7dmcPbDqdrpCtTR6YyPT5dSZbdu8eye/dYzj57JNu3H7n/3iIjI13p6qpXkgnaTavVyt6949m69XC+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AAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABYixAAAAAAAAAAWIsQAAAAAAAAAFiLEAAAAAAAAABUzVdV03PQIAAAAAAABgt3EyFgAAAAAAAKAAMRYAAAAAAACggP8fjymaWYXEdVMAAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "f53abdf2", - "metadata": {}, - "source": [ - "## Step 4: Add lighting\n", - "\n", - "This section corresponds to the [Step 4 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-4-lighting).\n", - "Please read that section for an explanation of the trick used to estimate the\n", - "light intensity of pixel based on the angle of intersection between each ray\n", - "and the spheres. The changes are minimal and are primarily about handling this\n", - "intersection angle." - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "from algorithm import parallelize\n", + "from utils.numerics import inf\n", + "from collections import List\n", + "\n", + "\n", + "fn scene_intersect(\n", + " orig: Vec3f,\n", + " dir: Vec3f,\n", + " spheres: List[Sphere],\n", + " background: Material,\n", + ") -> Material:\n", + " var spheres_dist = inf[DType.float32]()\n", + " var material = background\n", + "\n", + " for i in range(spheres.size):\n", + " var dist = inf[DType.float32]()\n", + " if spheres[i].intersects(orig, dir, dist) and dist < spheres_dist:\n", + " spheres_dist = dist\n", + " material = spheres[i].material\n", + "\n", + " return material\n", + "\n", + "\n", + "fn cast_ray(\n", + " orig: Vec3f, dir: Vec3f, spheres: List[Sphere]\n", + ") -> Material:\n", + " var background = Material(Vec3f(0.02, 0.02, 0.02))\n", + " return scene_intersect(orig, dir, spheres, background)\n", + "\n", + "\n", + "fn create_image_with_spheres(\n", + " spheres: List[Sphere], height: Int, width: Int\n", + ") -> Image:\n", + " var image = Image(height, width)\n", + "\n", + " @parameter\n", + " fn _process_row(row: Int):\n", + " var y = -((Float32(2.0) * row + 1) / height - 1)\n", + " for col in range(width):\n", + " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", + " var dir = Vec3f(x, y, -1).normalize()\n", + " image.set(row, col, cast_ray(Vec3f.zero(), dir, spheres).color)\n", + "\n", + " parallelize[_process_row](height)\n", + "\n", + " return image\n", + "\n", + "var spheres = List[Sphere]()\n", + "spheres.append(Sphere(Vec3f(-3, 0, -16), 2, shiny_yellow))\n", + "spheres.append(Sphere(Vec3f(-1.0, -1.5, -12), 1.8, green_rubber))\n", + "spheres.append(Sphere(Vec3f( 1.5, -0.5, -18), 3, green_rubber))\n", + "spheres.append(Sphere(Vec3f( 7, 5, -18), 4, shiny_yellow))\n", + "\n", + "render(create_image_with_spheres(spheres, H, W))\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "f53abdf2", + "metadata": {}, + "source": [ + "## Step 4: Add lighting\n", + "\n", + "This section corresponds to the [Step 4 of the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-4-lighting).\n", + "Please read that section for an explanation of the trick used to estimate the\n", + "light intensity of pixel based on the angle of intersection between each ray\n", + "and the spheres. The changes are minimal and are primarily about handling this\n", + "intersection angle." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "3ed5bc7c-f335-48c4-abf8-31c75d6e79ad", + "metadata": {}, + "outputs": [], + "source": [ + "@value\n", + "@register_passable(\"trivial\")\n", + "struct Light(CollectionElement):\n", + " var position: Vec3f\n", + " var intensity: Float32" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "8b99f641", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 10, - "id": "3ed5bc7c-f335-48c4-abf8-31c75d6e79ad", - "metadata": {}, - "outputs": [], - "source": [ - "@value\n", - "@register_passable(\"trivial\")\n", - "struct Light(CollectionElement):\n", - " var position: Vec3f\n", - " var intensity: Float32" - ] + "name": "stdout", + "output_type": "stream", + "text": [ + "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n" + ] }, { - "cell_type": "code", - "execution_count": 11, - "id": "8b99f641", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAEAAElEQVR4nOzd7a8syX0f9uqZOQ/3aR/uPnKXu3wQRVOk+KDYBkU7kWXHD3IcGVESGIkTJAaSGAaSF3l4nX8pSIDkRWJbQQLDEQwYgS1bgBNHpmSLkiiKS2p3ubv33jOdF33qdFV1dU/PnOl7zr37+QAHM1NdXV0zd2ZI7Hd+VU3btm0AAAAAAAAA4KhWNz0BAAAAAAAAgOeRMBYAAAAAAABgAZv0wenp6U3NAwAAAAAAAOCZ9+jRo6v7KmMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAA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AACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAADw/2/fDk4AAAEYiOH+Q9cpDkGSCfo/CgAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmfbXo8AAAAAAAAA+I1nLAAAAAAAAEBAjAUAAAAAAAAIXNpczcumkMt4AAAAAElFTkSuQmCC" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "fn scene_intersect(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " mut material: Material,\n", - " mut hit: Vec3f,\n", - " mut N: Vec3f,\n", - ") -> Bool:\n", - " var spheres_dist = inf[DType.float32]()\n", - "\n", - " for i in range(0, spheres.size):\n", - " var dist: Float32 = 0\n", - " if spheres[i].intersects(orig, dir, dist) and dist < spheres_dist:\n", - " spheres_dist = dist\n", - " hit = orig + dir * dist\n", - " N = (hit - spheres[i].center).normalize()\n", - " material = spheres[i].material\n", - "\n", - " return (spheres_dist != inf[DType.float32]())\n", - "\n", - "\n", - "fn cast_ray(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - ") -> Material:\n", - " var point = Vec3f.zero()\n", - " var material = Material(Vec3f.zero())\n", - " var N = Vec3f.zero()\n", - " if not scene_intersect(orig, dir, spheres, material, point, N):\n", - " return bg_color\n", - "\n", - " var diffuse_light_intensity: Float32 = 0\n", - " for i in range(lights.size):\n", - " var light_dir = (lights[i].position - point).normalize()\n", - " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", - "\n", - " return material.color * diffuse_light_intensity\n", - "\n", - "\n", - "fn create_image_with_spheres_and_lights(\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " height: Int,\n", - " width: Int,\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(\n", - " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights).color\n", - " )\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "\n", - "var lights = List[Light]()\n", - "lights.append(Light(Vec3f(-20, 20, 20), 1.0))\n", - "lights.append(Light(Vec3f(20, -20, 20), 0.5))\n", - "\n", - "render(create_image_with_spheres_and_lights(spheres, lights, H, W))\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAEAAElEQVR4nOzd7a8syX0f9uqZOQ/3aR/uPnKXu3wQRVOk+KDYBkU7kWXHD3IcGVESGIkTJAaSGAaSF3l4nX8pSIDkRWJbQQLDEQwYgS1bgBNHpmSLkiiKS2p3ubv33jOdF33qdFV1dU/PnOl7zr37+QAHM1NdXV0zd2ZI7Hd+VU3btm0AAAAAAAAA4KhWNz0BAAAAAAAAgOeRMBYAAAAAAABgAZv0wenp6U3NAwAAAAAAAOCZ9+jRo6v7KmMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAAABYgjAUAAAAAAABYgDAWAAAAAAAAYAHCWAAAAAAAAIAFCGMBAAAAAAAAFiCMBQAAAAAAAFiAMBYAAAAAAABgAcJYAAAAAAAAgAUIYwEAAAAAAAAWIIwFAAAAAAAAWIAwFgAAAAAAAGABwlgAAAAAAACABQhjAQAAAAAA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AACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAAAAAABXIIwFAAAAAAAAuAJhLAAAAAAAAMAVCGMBAAAAAAAArkAYCwAAAAAAAHAFwlgAAAAAAACAKxDGAgAAAAAAAFyBMBYAAAAAAADgCoSxAAAAAAAAAFcgjAUAAAAAAAC4AmEsAAAAAAAAwBUIYwEAAAAAAACuQBgLAAAAAAAAcAXCWAAAAAAAAIArEMYCAAAAAAAAXIEwFgAAAAAAAOAKhLEAAAAAAAAAVyCMBQAAAAAAALgCYSwAAAAAAADAFQhjAQAAAAAAAK5AGAsAAAAAAABwBcJYAAAAAAAAgCsQxgIAAAAAAABcgTAWAAAAAAAA4AqEsQAAAADw/2/fDk4AAAEYiOH+Q9cpDkGSCfo/CgAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmfbXo8AAAAAAAAA+I1nLAAAAAAAAEBAjAUAAAAAAAAIXNpczcumkMt4AAAAAElFTkSuQmCC" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "78043756-0ce9-455f-9e49-fb75268d4478", - "metadata": {}, - "source": [ - "## Step 5: Add specular lighting\n", - "\n", - "This section corresponds to the [Step 5 of the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-5-specular-lighting).\n", - "The changes to the code are quite minimal, but the rendered picture looks much\n", - "more realistic!" - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "fn scene_intersect(\n", + " orig: Vec3f,\n", + " dir: Vec3f,\n", + " spheres: List[Sphere],\n", + " mut material: Material,\n", + " mut hit: Vec3f,\n", + " mut N: Vec3f,\n", + ") -> Bool:\n", + " var spheres_dist = inf[DType.float32]()\n", + "\n", + " for i in range(0, spheres.size):\n", + " var dist: Float32 = 0\n", + " if spheres[i].intersects(orig, dir, dist) and dist < spheres_dist:\n", + " spheres_dist = dist\n", + " hit = orig + dir * dist\n", + " N = (hit - spheres[i].center).normalize()\n", + " material = spheres[i].material\n", + "\n", + " return (spheres_dist != inf[DType.float32]())\n", + "\n", + "\n", + "fn cast_ray(\n", + " orig: Vec3f,\n", + " dir: Vec3f,\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + ") -> Material:\n", + " var point = Vec3f.zero()\n", + " var material = Material(Vec3f.zero())\n", + " var N = Vec3f.zero()\n", + " if not scene_intersect(orig, dir, spheres, material, point, N):\n", + " return bg_color\n", + "\n", + " var diffuse_light_intensity: Float32 = 0\n", + " for i in range(lights.size):\n", + " var light_dir = (lights[i].position - point).normalize()\n", + " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", + "\n", + " return material.color * diffuse_light_intensity\n", + "\n", + "\n", + "fn create_image_with_spheres_and_lights(\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + " height: Int,\n", + " width: Int,\n", + ") -> Image:\n", + " var image = Image(height, width)\n", + "\n", + " @parameter\n", + " fn _process_row(row: Int):\n", + " var y = -((Float32(2.0) * row + 1) / height - 1)\n", + " for col in range(width):\n", + " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", + " var dir = Vec3f(x, y, -1).normalize()\n", + " image.set(\n", + " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights).color\n", + " )\n", + "\n", + " parallelize[_process_row](height)\n", + "\n", + " return image\n", + "\n", + "\n", + "var lights = List[Light]()\n", + "lights.append(Light(Vec3f(-20, 20, 20), 1.0))\n", + "lights.append(Light(Vec3f(20, -20, 20), 0.5))\n", + "\n", + "render(create_image_with_spheres_and_lights(spheres, lights, H, W))\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "78043756-0ce9-455f-9e49-fb75268d4478", + "metadata": {}, + "source": [ + "## Step 5: Add specular lighting\n", + "\n", + "This section corresponds to the [Step 5 of the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing#step-5-specular-lighting).\n", + "The changes to the code are quite minimal, but the rendered picture looks much\n", + "more realistic!" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "3ed5bc7c-f335-48c4-abf8-31c75d6e79ad", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 12, - "id": "3ed5bc7c-f335-48c4-abf8-31c75d6e79ad", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAEAAElEQVR4nOzd6XM0SX4f9qxqAM81z9wzO7vckzK5q4OySJk2fTEsH7LCDof8yn+z7VCELdEKSZYVJk1LFimSy13O7FwPuv2ikMi7uhoPeoCZ+XwiEN1VlZWVVd14ZmO/+GVOh8PhEAAAAAAAAAC4V/NDDwAAAAAAAADgm0gYCwAAAAAAAHAGF/nG1dXVQ40DAAAAAAAA4Gvviy++uH2vMhYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAA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XjcWAAAAAAC8PipjAQAAAODLQq8f+6bN68ECAAAAAIDLojIWAAAAAL6MCEwBAAAAAHirDF/0AAAAAAAAAAAAAADgbUQYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwD///bt4AQAEICBGO4/dJ3iECSZoP+jAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABA42/Z6BAAAAAAAAMBvPGMBAAAAAAAAAmIsAAAAAAAAQOACaazXSuW+u20AAAAASUVORK5CYII=" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "fn reflect(I: Vec3f, N: Vec3f) -> Vec3f:\n", - " return I - N * (I @ N) * 2.0\n", - "\n", - "\n", - "fn cast_ray(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - ") -> Material:\n", - " var point = Vec3f.zero()\n", - " var material = Material(Vec3f.zero())\n", - " var N = Vec3f.zero()\n", - " if not scene_intersect(orig, dir, spheres, material, point, N):\n", - " return bg_color\n", - "\n", - " var diffuse_light_intensity: Float32 = 0\n", - " var specular_light_intensity: Float32 = 0\n", - " for i in range(lights.size):\n", - " var light_dir = (lights[i].position - point).normalize()\n", - " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", - " specular_light_intensity += (\n", - " pow(\n", - " max(-reflect(-light_dir, N) @ dir, 0.0),\n", - " material.specular_component,\n", - " )\n", - " * lights[i].intensity\n", - " )\n", - "\n", - " var result = material.color * diffuse_light_intensity * material.albedo.data[\n", - " 0\n", - " ] + Vec3f(\n", - " 1.0, 1.0, 1.0\n", - " ) * specular_light_intensity * material.albedo.data[\n", - " 1\n", - " ]\n", - " var result_max = max(result[0], max(result[1], result[2]))\n", - " # Cap the resulting vector\n", - " if result_max > 1:\n", - " return result * (1.0 / result_max)\n", - " return result\n", - "\n", - "\n", - "fn create_image_with_spheres_and_specular_lights(\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " height: Int,\n", - " width: Int,\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(\n", - " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights).color\n", - " )\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "render(create_image_with_spheres_and_specular_lights(spheres, lights, H, W))\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAEAAElEQVR4nOzd6XM0SX4f9qxqAM81z9wzO7vckzK5q4OySJk2fTEsH7LCDof8yn+z7VCELdEKSZYVJk1LFimSy13O7FwPuv2ikMi7uhoPeoCZ+XwiEN1VlZWVVd14ZmO/+GVOh8PhEAAAAAAAAAC4V/NDDwAAAAAAAADgm0gYCwAAAAAAAHAGF/nG1dXVQ40DAAAAAAAA4Gvviy++uH2vMhYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAAAAAAnIEwFgAAAAAAAOAMhLEAAAAAAAAAZyCMBQAAAAAAADgDYSwAAAAAAADAGQhjAQAAAAAAAM5AGAsAAAAAAABwBsJYAAAAAAAAgDMQxgIAAAAAAACcgTAWAAAAAAAA4AyEsQAAAAAAAABnIIwFAAAAAAAAOANhLAAAAAAAAMAZCGMBAAAAAAAAzkAYCwAAAAAAAHAGwlgAAAAAAACAMxDGAgAAAAAAAJyBMBYAAAAAAADgDISxAAAAAAAAAGcgjAUAAAAAAAA4A2EsAAAAAAAAwBkIYwEAAAAAAADOQBgLAAAAAAAAcAbCWAAAAAAAAIAzEMYCAAAA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XjcWAAAAAAC8PipjAQAAAODLQq8f+6bN68ECAAAAAIDLojIWAAAAAL6MCEwBAAAAAHirDF/0AAAAAAAAAAAAAADgbUQYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwAAAAAAAAAAAAAXQBgLAAAAAAAAAAAAABdAGAsAAAAAAAAAAAAAF0AYCwD///bt4AQAEICBGO4/dJ3iECSZoP+jAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABAQYwEAAAAAAAACYiwAAAAAAABAQIwFAAAAAAAACIixAAAAAAAAAAExFgAAAAAAACAgxgIAAAAAAAAExFgAAAAAAACAgBgLAAAAAAAAEBBjAQAAAAAAAAJiLAAAAAAAAEBAjAUAAAAAAAAIiLEAAAAAAAAAATEWAAAAAAAAICDGAgAAAAAAAATEWAAAAAAAAICAGAsAAAAAAAAQEGMBAAAAAAAAAmIsAAAAAAAAQECMBQAAAAAAAAiIsQAAAAAAAAABMRYAAAAAAAAgIMYCAAAAAAAABMRYAAAAAAAAgIAYCwAAAAAAABA42/Z6BAAAAAAAAMBvPGMBAAAAAAAAAmIsAAAAAAAAQOACaazXSuW+u20AAAAASUVORK5CYII=" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "a6e7fc32", - "metadata": {}, - "source": [ - "## Step 6: Add background\n", - "\n", - "As a last step, let's use an image for the background instead of a uniform\n", - "fill. The only code that we need to change is the code where we used to return\n", - "`bg_color`. Now we will determine a point in the background image to which the\n", - "ray is directed and draw that." - ] - }, + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "fn reflect(I: Vec3f, N: Vec3f) -> Vec3f:\n", + " return I - N * (I @ N) * 2.0\n", + "\n", + "\n", + "fn cast_ray(\n", + " orig: Vec3f,\n", + " dir: Vec3f,\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + ") -> Material:\n", + " var point = Vec3f.zero()\n", + " var material = Material(Vec3f.zero())\n", + " var N = Vec3f.zero()\n", + " if not scene_intersect(orig, dir, spheres, material, point, N):\n", + " return bg_color\n", + "\n", + " var diffuse_light_intensity: Float32 = 0\n", + " var specular_light_intensity: Float32 = 0\n", + " for i in range(lights.size):\n", + " var light_dir = (lights[i].position - point).normalize()\n", + " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", + " specular_light_intensity += (\n", + " pow(\n", + " max(-reflect(-light_dir, N) @ dir, 0.0),\n", + " material.specular_component,\n", + " )\n", + " * lights[i].intensity\n", + " )\n", + "\n", + " var result = material.color * diffuse_light_intensity * material.albedo.data[\n", + " 0\n", + " ] + Vec3f(\n", + " 1.0, 1.0, 1.0\n", + " ) * specular_light_intensity * material.albedo.data[\n", + " 1\n", + " ]\n", + " var result_max = max(result[0], max(result[1], result[2]))\n", + " # Cap the resulting vector\n", + " if result_max > 1:\n", + " return result * (1.0 / result_max)\n", + " return result\n", + "\n", + "\n", + "fn create_image_with_spheres_and_specular_lights(\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + " height: Int,\n", + " width: Int,\n", + ") -> Image:\n", + " var image = Image(height, width)\n", + "\n", + " @parameter\n", + " fn _process_row(row: Int):\n", + " var y = -((Float32(2.0) * row + 1) / height - 1)\n", + " for col in range(width):\n", + " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", + " var dir = Vec3f(x, y, -1).normalize()\n", + " image.set(\n", + " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights).color\n", + " )\n", + "\n", + " parallelize[_process_row](height)\n", + "\n", + " return image\n", + "\n", + "render(create_image_with_spheres_and_specular_lights(spheres, lights, H, W))\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "a6e7fc32", + "metadata": {}, + "source": [ + "## Step 6: Add background\n", + "\n", + "As a last step, let's use an image for the background instead of a uniform\n", + "fill. The only code that we need to change is the code where we used to return\n", + "`bg_color`. Now we will determine a point in the background image to which the\n", + "ray is directed and draw that." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "3de30ee3", + "metadata": {}, + "outputs": [ { - "cell_type": "code", - "execution_count": 13, - "id": "3de30ee3", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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" - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "fn cast_ray(\n", - " orig: Vec3f,\n", - " dir: Vec3f,\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " bg: Image,\n", - ") -> Material:\n", - " var point = Vec3f.zero()\n", - " var material = Material(Vec3f.zero())\n", - " var N = Vec3f.zero()\n", - " if not scene_intersect(orig, dir, spheres, material, point, N):\n", - " # Background\n", - " # Given a direction vector `dir` we need to find a pixel in the image\n", - " var x = dir[0]\n", - " var y = dir[1]\n", - "\n", - " # Now map x from [-1,1] to [0,w-1] and do the same for y.\n", - " var w = bg.width\n", - " var h = bg.height\n", - " var col = int((1.0 + x) * 0.5 * (w - 1))\n", - " var row = int((1.0 + y) * 0.5 * (h - 1))\n", - " return Material(bg.pixels[bg._pos_to_index(row, col)])\n", - "\n", - " var diffuse_light_intensity: Float32 = 0\n", - " var specular_light_intensity: Float32 = 0\n", - " for i in range(lights.size):\n", - " var light_dir = (lights[i].position - point).normalize()\n", - " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", - " specular_light_intensity += (\n", - " pow(\n", - " max(-reflect(-light_dir, N) @ dir, 0.0),\n", - " material.specular_component,\n", - " )\n", - " * lights[i].intensity\n", - " )\n", - "\n", - " var result = material.color * diffuse_light_intensity * material.albedo.data[\n", - " 0\n", - " ] + Vec3f(\n", - " 1.0, 1.0, 1.0\n", - " ) * specular_light_intensity * material.albedo.data[\n", - " 1\n", - " ]\n", - " var result_max = max(result[0], max(result[1], result[2]))\n", - " # Cap the resulting vector\n", - " if result_max > 1:\n", - " return result * (1.0 / result_max)\n", - " return result\n", - "\n", - "\n", - "fn create_image_with_spheres_and_specular_lights(\n", - " spheres: List[Sphere],\n", - " lights: List[Light],\n", - " height: Int,\n", - " width: Int,\n", - " bg: Image,\n", - ") -> Image:\n", - " var image = Image(height, width)\n", - "\n", - " @parameter\n", - " fn _process_row(row: Int):\n", - " var y = -((Float32(2.0) * row + 1) / height - 1)\n", - " for col in range(width):\n", - " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", - " var dir = Vec3f(x, y, -1).normalize()\n", - " image.set(\n", - " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights, bg).color\n", - " )\n", - "\n", - " parallelize[_process_row](height)\n", - "\n", - " return image\n", - "\n", - "\n", - "var bg = load_image(\"images/background.png\")\n", - "render(\n", - " create_image_with_spheres_and_specular_lights(spheres, lights, H, W, bg)\n", - ")\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB2MAAAWMCAYAAAATKi3mAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAATsAAAE7AGKbv1yAAEAAElEQVR4nOy9WY8kSXIfbpF3Zt3d1d0zPVfPzs7uzJ7iuQLFFURJoAC+6UEQ9CABAkR9DgnQVxAEiIJe+SIKIp8ESCQIEiKXIrW73Ht2do6e6bO6us68r/g/1N+iLa3M3c09PDKjqvMHFKoqwsPd3N3c3A4/kjRNU1hjjTXWWGONNdZYY4011lhjjTXWWGONNdZYY4011lhjjTXWWCMqKqsmYI011lhjjTXWWGONNdZYY4011lhjjTXWWGONNdZYY4011ljjOmIdjF1jjTXWWGONNdZYY4011lhjjTXWWGONNdZYY4011lhjjTXWKAA1+k+j0YheQJqmwE9CTpJk4YemnUwmkKYp1Ot1SNMUptOpMe9GowGVSsWYhuZtgzadKw/MR6qzdBo0rz9Px/NJkgTq9fqlb6bTKczn80t5m1DkydQ+bW7iDYDLNEpp+Xeask1peN6VSuVSf2Ia3kcuWkx84cN3SZJAs9kU2ydNUxgOh5fGQbVahc3NTZhOpzAcDo30hYDmMZ/PIU1TSJIEqtUqfOMb34A7d+4AAMB4PIaHDx/C2dkZfP755xndtVoNarVaRv9sNluoU7VaFdvNxbsh9dL0lZQ+lB+l72KNSdN44n/75KHJB3nAVo5pHjCVaSrP1Dch5dL3tv7mdGroNo11Sr9tLuSoVCqXvufluepg4u88fENlOZ2HpO+QBu34StMUNjY2oNVqZc8GgwHMZjMYj8fWbyU6aBsiOC00DeVrfIdzg6m/qDyMoVtcFbjmttlsBvP5HF555RXY2dmBs7MzGI1GcHp6CrPZLJsPpHyxTem8XKlUoFarwXw+h9lsZi0b5yY610h9biqfj3upDJP8o8+p/jafz2E+n8N0OoXZbAbVahUqlYq1LBuv2mSibXxrnmshlWPT8UL1oTLBNXdT3sL+brfbsLu7C/V6HarVKjx79gx6vd6C3sPbwyQ3Jd3fxqcx6uQLzoem/HF887mEtmEobXTcSc9jwzVOuQ7Av6G02WQQH0Ma3cRGK8eqxmWtVoNKpQKDwQAajQZ885vfzPSAp0+fws9+9jOo1+tQr9cXbGBOb61Wg1arlfFVv9+HyWQC/+Af/AN488034Utf+hKcnJzAf/yP/xEGgwHU63UAyD8G0J/S6/Wg2WzC66+/Do1GA5rNJjx9+hQePXoEjUYDqtVq5veguC76A5VbJv42zafSGLHNhzxf6f8y3szl28+1Wg2SJFnQZVxzqcnfZJKH2nmbl8f1Z5McpzSY6AuRZWWEL/9JdgqF6Tm1PSQflqYc/AZ1aqlfaJ/yfPf29uDu3btwcHAAz58/z/RaTEt9PdweNPGojbdt72ztbstHy2+m/Gnbc9j8PxKNLt2nUqlkemOapjAajSBJEvhX/+pfwRe+8AUAAOj3+/DRRx9l/fbBBx/A3/7t30Kj0ViY70zzkA3L1qu0MPlKbWlNaThfSj4b/FaKR9jawpQXpcWlN7ve2cq1fUttbS7XTWm5PU7faWwlagNLsNk7tvlMSnvdEXsMvgxttkxQH6bs/VoicAKWnrs6njtL8zgefJ1WseDL3PP53Cq8eb6rnhB9YesLzbcAukC0beKLDa1C7dNXqNTaykDFYD6fZxNczDqaypxMJjAajTIlD+Bikm232zCZTDKFD3kZwK44+TqVfHm+qLEi0bLsyazsciBWe8SonxQ4MKEoZ7WpLJdRLX2jyVtTpk++Pm2oTTubzWAymUC1WnWmtY05G70mWqTnITJmjeJAHTq+33F+1uicNB034l3jmOpvtFyX8yYvv/G65ZkXNM5vW9lrvOhz7kij4H3E++9lkEGmNvGZ3/LYFFcRWhmmTb8KxAxEUj8B/bvb7cLR0RF89tlncHZ2dsmBGFoWwAX9ksNSC0mHuQ7jXZo7Q+21or+5Sgi1W2yBobz0xPA3XLV+8wn4mRDDN6UZU3n1MjqOMeBaq9WgWq3CYDBYCErxedtWdtE+Kv5+WXI1JNhL00p2Dv5dqVSyhQ+0TvP5HIbDIQwGg+zvbrcLvV5vIY/YvsGyQcMHPuD6SYivUltObH8KRQgfut7HaAObPeRbdl5f2MuO6ywXyoSgYKzvBMYNYSr4TU4o245YxGQyWSgDd9OGKusxB6rG+NcICf58Op1mSg9NU3bjmsNE46qcej58k4eOWE4hvttVwnw+h16vB7VaDZrNJkynU9W40sDkjJ7NZnBycgJpmsLt27ez961WC9544w04PT2FJ0+ewGw2g9lsBvV6fWHVFdLnMx7L6GizObvLHiC9bjAFT1xpQ9770ATwgs9t+VLDSpOvjxyjsAVZtE4ErRPSh87hcAij0Qg6nY4qIIv5A9jpRnoxT747H0EXspjkkm0xCX3/MqOoNkiSRNwh60MT/Z3HgeOatyT9DedA3CEbc8EDzQO/K1KHWkOHSqUCzWYz29lnk2t8AUBZ2zmmDcVtRddOoWXSdpVB27WsiySq1ap6ntdgNptlp2nQ+eEXv/gF3L9/H87OzmA6ncJkMrGekOCDNL1YCBsib2MGolcNvuiIjsM8dSwj364CIWM4dJGARmbQPuWnyryM8J13Yskflwyx2TAhZW1ubkKr1YK9vT04OzuD+/fvX+p7vnEGecnFj0XyEJdPRZcXE9R3gKcroE8Q+Wg2m8Hnn38Ow+EQhsMhPHnyBL773e9eanM8tYjyjasdrsocVUSAVKq7yX/ggk1GaOR7yIIPLXDRqEaPWUZQ32Yb51n8tkZxWNteOgQFY/MEYjm4YwpX99CB1Wq1YHd3d+G7NE3h6OgoC8jSST1mx7tWuklpY03qJiGLQS8UlD4Cs2isYuCFlGcKPOBzVEwk45EaJabJUgr+5OEL3uf0iEbK93fu3IFqtZoFPLEu6Bigx+DFnLxoO/R6PUjTFDqdTja2kT+1RoBrhZMNoTzok79vnhq5EQOaFachAUnNt5p8Q8DLDnFAaOim5UhBNRf9Ep2a8nDu8pUPvm0gKbIxeI+ON9N8aQs0a2igcxv+9pnz0ICSgho+vBGKq7oAI0b9+Rw4nU5hNBrBZDLJ5iVahmmO4EYwHTemMcedPwAv+KYo443PPzH6XGqbEGcJ12Figo/lPPmXNVAkwadPbN/aYAvExmz3PIhdLpf5ee3OsvCT1F8ue4LCZXf48lQe+NjHvqA7fTjQDsJ0mjZD0CtS8LoDn0U8Wh3HRhPdEY95mOaNVfCtRp5o6HPxo6QL29JpUHYdS9JJED6BEFe/mMrNA+14N41Z/O26zuRlh2s8mNIDuH0NmvbW2ka1Wg3q9Tq0221oNpsLi6aozh6iD9t4yPXMBlf7aPy4Jjq0tqzrvcsnhmmkhUtvvPEG3Lp1C7a3tzN7i25ywLmOnsiirWNonVYBH/vIlpbbl5KNGWPekoB5a/KP6f/X+GSl/yUafOc0Uzk2HtX6gLRprzry8F3s9lnP7zos9ZhiaTDU6/XsHhiAF4Ejqqzt7e3BV77ylYW8ZrMZfO9734PT09PsmbTrYFkDz6S85HHUmPJP04t7AWq1GjQajUyI8SMqrjqWKTx5WXwVH73flH4jBSKKcrzjym28Z6jdbsNoNMrOHa9Wq/D1r38dms0m/Mmf/An0+/2sLqPRaOF+CMwvdpAhTS8WSZycnCyMbZOiajIqQ9qQ0hA6DpY5URdVVqgj+yrJjqIXn/A21PBj6LhHA4nfGUnfhxqcfCzY8vINSsaSczbZwMsEeCGbaVDNZqxITgFJVl8V3r8KkHgDF46Nx2PodrswHA4XVhPjYiPuXKCOdx6gmc1mmWNbS0+1Wr204M+FPLoI56sYux/y8Osy+DyGE+KqAPlz2TuBqCyP4aRco3hIQTfpXahD6zoBF+tIQDmepvIdbTa0Wi1ot9sAUPwCTxOq1So0m81MfwGItysuNlZlF5gCTC7H+csAepqLBquWG7ZrGK4rOM8WHdySvsmTj4beTqcDzWYTdnd3L8kvrpe78tOUF3se5LaxNO/6lBXTjnQtdEiSBJrN5qX3v/Zrvwa//Mu/DI1GI5tD+RxZrVah0WgsnCYUSndZdyT69puUnvI0tUN5ObF0f9oHLr8Gp8G3vlrY8uX+IJPe6oJrfsjbtmv/zhplhzMYm3fFDP+G54fHrTYajSzQhEe2Ydrz83P45JNPYG9vD/b29gDgYvDevXsXdnd3YTgcwng8hpOTk4XyqGFrUuxddTWl0eTB62yb2F35mhx6/KhmjbJStGFvcyTwNnDVV3L+m8ozBRxs9dX2OTqKbXSaVvVI5bvSmoDH2yG4kpUkCTQaDfjSl74Eo9EIptMpnJ2dwdOnTy/RGxt8nNF+mc1m2REqm5ub2c4odMbTVeIcLoXY1G5aA8jGj6HKBU/r6vu8cMkaTVto6yblVUSdXDCNKwqXzAiFTV5r+U7bZnQOsznfaXpKowTMy+Qc5gt7bI5CrbIeQqckx2u1WuaEDQ2OSW0qlYf58yA5/VYa59q5uOzIQ7s2QIT9qT3eOoQuOocjL0u6iEnf1TqotOMSx9d8Ps9WtyN9fKGAplxON+VXk7y2fW+DrQ98bYNVzBuxwQMquKhmMpkYeRoXyOEinNDrI7TOmlXDt49Rfkpyl6bR5LMq/qJl+wZPytJ/eWzlUNCTflAuTqdTePjwYbYoFheaamg1pcNj4SmPJUmycEqJb94ScPHP0dERVKtVqNVqMBqNnPRJ80CZ4LKnXXO1aQ4KrW9ZxowJmvnSVXecW2LItTz6qUlv5rowf67V9a8LfPwPsXx3JvkRMgfz/9Hucdm4mjqhnDflFZMfTGMvtAzJHpDGstYeNPWRZvzM53MYj8fQbDZhZ2cHNjc3oVarLdAzHA7hwYMHcHp6mj3nG05CbADt87LDVy7R/sqjg7v43tUnlC/43GviGer/sJUtfa/xx/N8tAiRW7b2p/leVb5cBsqqX75sCL4zliKPA2YymcBkMskcUrjrbzAYZGm63S50u134whe+kB1XXKlU4LXXXoPZbAbHx8fQ7XazXbImxTAW/SagUmFTVLTKt8tQQQOPOnFqtVopV9dKigttKwpJAZQCSz5wKbCa/KiDgLYxr5s0OdoMe9+60GBskiSXjPo0TaHRaMB7772X3ZX04MGDLBhbFEyTIj6bz+dZMHZrawsAIAvGokMkj+PHNOak5zbHel5HgPb7opyElA5TGZrAgqk+JmfoqgJPvNwyKF0+7evDB6GGk5SPKehI+cYmw/i3LuOc18GWJzdgeToajHXlZQI6ebXGDq0np5HSje3g0j3KwKexEeLATpIE6vX6JV1GWw7VD1x9ifOMpCPF6A+TI1J6lqaLq6mRLh68CxlXdC7l47pMcMnHq2QkYvviyTy1Wi27hwvgsn6Ii9NwEZppsZ+rvOsCm1Mqr24RIpfylgGwKOvpHW5FIYYDLDRNTKRpunBKAs4NDx48WKAp9F5Z6nuYTqeX8jLN4678TMAdvEdHR9kzvCs6b95lwCp0f8nHs2waQso16X/a733vU7b5l3znWJdz3CTDpVNNfMu0lXEVYLOj6TOTn0tbbxqo9/GZafNHvdX2XltXno+Jf2KPccn+jZGvqSxahu25a6wCyLtQcUPTzs4OvPrqq7CxsXFJRgyHQ/j5z3+e2UCmvHi5El080Fe2MekbJAzpd8kXwMvRlOXL3yFjwRYPcflaJH+2q0yTDMJvKT0uP5ipbaU0Ei9qdbjrAh85vka5sNRjiilsimCSJLCxsQHT6RQGg0H2/NmzZzAYDOC11167dIdso9GA1157DQAuhAEGcJeJmM4lKchHjVTqVESnHnf+hBqry4DUHq72S5LEqEDYvuX3yiFcwQ3pOSqRWkdziNFjA+50bTQa2XFbtVoNut0uTKdT+PGPfww7Ozvw/vvvZ8cE3759G775zW9mPPP48WM4PT3NnASxHETc0fzs2TNoNpuwv7+vzgMDLVKgxKY0m4JLmH5ZDoOXZeJfphKuHWt5oeUNSUHlz23fuJ7b8vEN5tnS8byobDXdq8nplGjk90NLjgHbeDUBnafSUc4STMaQTd7TdLY8XUFZ+kxr/L4MSNM0u6MPg1b0dA8K2k+hQexVBvVMTh8XqPOS5qXNh+ooRcnotTG3fKAcpQF8/n6NNdaQgTax6Y7Y2OMnhuwtgz0Rk4bQvCTdqQxto0Vs3sJTYZYt803lUb1ac2SnKZj+MsAneEO/8VkYogns0Wc2SH3VarUy/R31kNFoBM+fP1/YIMB1FvrMVE4ZoAkU8fQAfosyTPXlfSSlazQaAHDR5s1mE27evJkdvY/5P3z4EE5OTuDDDz/MTo00LUbFctY6pB2cn6XxFmJ3cf+BzVcgpQ1ZuEGR15/HZYTkNzfZ8LYgsQ+tvnJtjTXKBGcwNnYQw7aihjoZWq0WTCYTGA6H2fPz83M4Pz+H/f39SxfF12q17AhjgAtl9fz8XEVTiCDSfOMK9iFMTmApf3SyYf3p3YlcycFgrCnPIgJUNvq5MNYEG2wrdUwwpeE7RjRBOq1DONTx6st3uMM0SRJotVrZCuvhcAiTyQQePXoEZ2dn8N5772XK8s7OTqa8pWkKJycncHp6mvFO3mCsqR+73S6Mx2PY29tTG46cplAnvJbGEPiMG58FB0UgT3mu+i0zIGvDKmhAuUDbiAcJQ4LIPjzF5w2Nkktpt+VBF5G4HDBS+dLpATaY5khKJ8oEzekPlH5OI6cV/7f1hWmuMMknU8DE9V3ZEUNnwOMh6/U6VKtVMRhL+yOvfmILvtucQhrD0AeaPud8a6PBJH9xzFLHi20Mr5EfVIbkDYKbZIkki4vQ4dcIg20xTx5HpyQPeHk+dBSBVc5jLsc2Bx57XK/Xvehe9hiz9eNVg087S2Nl1XYUR2ydwBd04X0MGmK0J85PmgXzLv3uqvJ7aDuG6ruucWIrR0sX/Y2o1+vZKYb0yrTT01ORJu0uTKmsonlBki0hbWTKjz+X7EdTfqagU61Wy6666HQ6cOPGjQV9fzabweHhIRwcHMDTp0+h1+st5GebL7UBsasEyTeirQP34/P20cxNvu3lypP7selzV1DSx6612R4mnw9Pa7NbTOVp6XJB6udV6w5FQBuLWqO8UO+MzWNMajAYDGA8HsPGxkY2qOv1Omxvb8N4PF7YIfv222/D17/+dQC4WBn0gx/84NJO2Pl8vuDkwzP0TUpB7MCCNj9bGknI4qXr9Eg/U7/Q+ttWRJUFNuc+ggc8TEE7X1618beNbzQoImiFAUvpeN9GowFf/epXs93jT58+hZ/+9KfZ+/F4nB0ZDBC2kkuLyWQCn3/+OQBcOOGbzSZsbGxAu92GRqORBWzH43F2xF8Mx/GydqNRRSNJEucY4wEvfFY2LCNQvQzEnrdsY1nDazZ+4QttKPC5NjiqKV8qB9/jimfTqktJ2c6zGw+/8xmvPneMcmiMixC4+uhlBzVocVGR6bhoKifp/VIcefrNFODQ9J/WwDcFUPg8UK/XoVarwXg8dpbPDeqyyd2XDWl6ce99q9WCRqOR3Qtp2vW9xvUDn8sRSXJxFHuavjhanwZX6ZzJnaFUH8DnZThhgS46WAY9SZJAs9mENE2zMaUJPISWFRPY5+iDQB1hMplEWbxRJvD5KAQuWzz02+sA20k1FL7t4KtDafoB5V69Xs90PM2u2TUuQ+snDPk+BOir2djYuHQ/KZVntL9NOr5G/hXBM5TnpTlMo4Nr6OaBM1MA3eY7wu+wregmJcS9e/fgnXfegZOTE/jBD34AP/3pT+H4+BhOT0/VV8Bwmih4P13Vcay1lXx8Kb7zOF98YQvQa/L11SFcAVxTWgSOF01MQWvL+uJlCLKu8fJADMaaJhmXsynPYMBJm+aFd8jyibJarUK9XodOpwPT6RS2t7czo3A6ncJ4PM6+RyWQT4p56dXkQw1uVx6295KxLn2HDvTJZCIK+GULK1eZUtuYnIumFTghRgctX3oemocLpjqFTEbz+Xwh+IFGPj2mul6vw+bmJgwGA2i1Wtm3zWZzwemLO6h5XWLwzHw+h36/n/2PNCZJsqDEY3DZdLS2z5jlhgGvh0nRtAUETMqS9PcqHOO87GXRwJXRmGX68B9Pa+q30ECh651PEMYGPlfZyvJtb99+oY5greOVO5k57aZy6Le2fF3PYyn2vmlcwUT8vQoDNubc70s/HwP0f3oiQ4hTMbROMQO60pj0aSPO+yGGsVTuqgxTSYfgz6+qE8cFtDnwh9dZmptRF7LpES8rYo/9VbUr8gUP0PrY2WXkBSqv8o5patfyuuL/eK2Ky7Eco61C85DGMnW2o05FFyCZ2jBvmxZt8xeRt0ZXWuZYiKVfUmjmd1caW9v4BARC6qMNDuA8aLryJBSr8GXlxTJ9Ai77MeRbpJvLLDzdZjabLejzPvXl/BSzjWx2meY7rX/WVTaO2Tz2aZqmCztf0YeGfrR2uw17e3vw9OlTODg4gOPjYzg7O4PJZKJeKF4Erup4Ndky/G/pm5C2NPmqXLRo8/UZ/1I9qI5GwdP68rk2rUZGSLS8jLiO9S5KjpRFPonBWBthGCyJdc8kRZqmcH5+DtVqNQuw0mMwEP/7f/9v+Ku/+iv45//8n8Nrr70Gf+fv/J0sOPXgwQP4v//3/8Lu7i5sbW3BkydPLq0Mok7momFywvjmoWn3L37xi7CzswM/+tGPsmMpKMroENMEM2z8qD0OE4N9PMBgMoh5XtJx0LF4KMQowiNh2u02tFqtbLfp6ekpnJ6ewn/6T/8J3nnnHfjX//pfw+3bt+Hv//2/D9VqFWq1GmxtbcFHH30Ef/u3fwunp6fZDttWq7Xg7IgloGjbjcfj7P4KADA6VmhQNs9qWh9FP2R8mnbg+gZuriKKdm5qgnScHlcQM8bESxVWU1/Ssmh5kmPCZ/y7AjY+9UMa0MkpldXpdBZ4vNfrico4VdTpndoob7mCnsfZGTMdwpcvNAEUXD2OTtjRaJTpKcvEKhRNKUjpSh9KZwxHX8w53Xc+x7uQ6/X6gm4SUifehnTuzNPGsWGi6brMjRT0xAMapO33+xnv2ngP+YnroC8D6Ek4VyFI/TL1TQyY+pLqD41GIyjoa5rT0aeA73D85ZWP/PQpXBSN5WFA3ne3fKjeVOZxclWQtw1d/E2RR25IV1KZUKupD8RbgI/uXavVoNlsXjrFLQauG19TuRPr5D6f9Cb5QvOw2S2TyQQePnyYyTVNuejb1dBUBEKD1QB2XyX/7drtakvD/R9oE+B3rVYL3nzzzexEnYODAxiPx/CLX/wCDg4Osv7w3b0Y23e16vHK/e95oIl70L4yweQf4vpjHv7RwhRc5eD858rLVJdY/LBqvlpjuSjaz7xqqLQy08TFB6WPAmBywNCV4vReVDzqZD6fw/n5OQyHQ3j06BHUajW4detWpmBub2/D7u5ulme/34fRaATj8XjhqDuTMlzWyDt1RKDRx4Vdo9GATqcDW1tbCyuocGeiRMcqHQc+xjWl3WacSg4baYLg3yEtnCabo9DHOaSh2QfcKYdOviRJYDqdwuHhYXZXa6PRyBS2Wq0Gd+7cgdFoBD/72c8W8qRKiw9NkuPd1A+mI7alPDg9tna29QUPxtH0AJfvEubfmfJ10RKaNo+sCDHCYvGjlFdMaPiSj2GpX235ayHxuhZ5DEGa1hYI1qTj6U3/m5yUGnmhmWt9A9H8mcZZaZL5UjottAFGTLeso9NXDVsf+H6rNRTzyLK88jbGN64gmzQH8jpr+NmkA3LHjwumMZ9XnyyLYVQkqO6ONo0rEGTTT69i8M+ly5nqFaKTufIqe/uFOhND67WsMcjrZZrHpatYfPL3fecLiW6fAOqy+c82R+aZz0LsY9O3God2bD7V6hqub7X+Mvwur23JZSK3ofnCT1Nepv6SdAMbz1O9lzrw8/D5y6AXaFB0MMyVP/U9TqdTGA6HMJ/PYTweZ4EqzbxatrnXNoY09QAwyzKf8l0yk46jJEmyU+5woU+/34der5dtxlmlL2rZsNHvoyvGyF/iBY2NyuWqdixp+jkPf0rfhYxhbftq7CENjdqyrzLy2oBlk8XXHaZ2XgjGapyFmBHfkegKdOZBs9nM7pfESWYymcD/+B//A/b29uDf/Jt/Azdu3AAAgP39ffiN3/iNjM7NzU349NNP4bPPPlu4xJyuDlz2bpUQ5sf7ZRqNRnZM82QygdFotJCuWq3C+++/n+WN9wegwoQT97IGYIwgjeSElPjQVA6vI+9rk5NfQ1eappdWpfoEBHh5yxCIX/3qV+ELX/gC/L//9//g4ODgEh248CHP7ndb+/HjlZPkxSpJDNTW6/WFvGgb52mjIpzzNE+++3rZWKXCsYyyTeOEPnfdZxE7cKwZu64yqUKV14AKTYdHiNPVj7hrr9lsXqI3b5mm4JJvGimt1N4mY0pqd1/ecMk7AMjuDTTdkVoGxNbfaOCJGq5a45F+S+VqrJNZ8sy7IXIk5Bup3ULpDdFN1igHaEAW4EWQCp8XcVrRGqsBdwhjX/PrSRCrmk8k3X1ZoPPCVQMdt/RqGfp7GYjFN3n8J5IuT69c8j0ZKa9zctnwoZX62Vy6MO7Ixh3a/P0yx+t0Ol3PT/8/yuT89qWh0+lAu92GwWAAw+EQTk5OjLwoPQ8JopjSh8pJE70a25w+k07lM9VDWz9XnajtiLKg0WjA1tZW9u1wOITz8/Psm9Cd8NcV2rmK84mpD/mJGCH3D2toktLk8VVy2HZo8xiJaQOLCS49jbf1VdTp1lgjDxaktG31Hk/H/88zeKSVIqiE40SCQaJms5m9G41G2coseg9lp9PJgkk3b96EyWQCBwcHC0f34tGsNCAUCu5gk9pL6xzWgDpjarVaNkGfnZ1BpVKB3d3dLJjVbDZhe3s7E6ToXJeO6o0BW35SG3MHkwmmNC6lCr/TBAZMdLr6Ny/y5It3JOO9EXik13g8hm63C9///vfh1q1b8MYbbwDAC8Wh1WrB+++/D81mEz744AMYj8cZX4SuRHfVkTsbaBn0mRRQKbIPNH3vk0/etsuTD/92GYafdozlhW9dymDsupDXqAx5T+8uA5ADW/R9klyswE3TFLrdrujYMZXNx3ieoJdEo68Cz4OCpvxNdfTpq/l8fknPKDtPxpD7trna5XDWLFrISxsN8JahP5Ae6mjloHqS6Uj8GG2j1cdilOeTfxn6SQvsS2kRAsKnnZeJVbaz1N9cvmt5XbvYIxa4HWmaU106TJkc9QD2xa306N2i6OULUKRdfrHGUKxAAf3O5cxdRT/70LFs+YR6p8YGtcnX2MjbTyHBJgCdPUrnG/wGv7Mde+tCHvsT4MVCPMlf+LLAFmSIxbdan1uMdseTzdC/aron1qVb5x1PIXXRzq2S34m/d+kqJhpdNqvpG5p/pVKBzc1N2NjYgCRJYDgcwmAwyNLj9Rfcr23SpXjd8P1VH6ea8aX1GWjL8vEl+ORn+iaUNq19nXcOwDxcvnuJtlh27VXnYxdCZOlVta2vM9RLZkzBEBoYxOcxFNdutwu1Wi27Oxbg4oz8VqsFJycnMBwOs/R41Fe1WoVqtQobGxswHA5hOBzCvXv34PXXX4ePPvoInj9/nuU/mUygUqlkwauijUqpjnmB9R2NRjCZTODTTz+Fer0Ov/zLv7wQjH3zzTez8vByd7yfDAXlKo5OjCEQtAoQ5VtpctQ6H7GtyiLAxuMxjMdj2NzchEajAZubmzCbzeDo6AgeP34Mv/d7vwe/8iu/Av/iX/wLaLVaAADZkcX/7J/9M3j+/Dn8h//wH+Dg4ABGo1F21wtA/EA9vavJtBsdF1/YJmKXgerr5ESeyLOb1aZYlIVXigRv8zI4FbmzpmhwY1RjBPjQaDMSXWOCftNoNLIjy/HYf87/tVoNGo0GAFzM7Ts7OzCfz+H4+PiS44eWQeeS2O1eVF9qx6ivcYAyrl6vW+9Huo4IMaRiGV+uMnDR0SqdhJTfcDyhTmozlF18GqJTSbJoWXLzuhjKtA1xcSTXb3jfSmnKhGUa7JwPpNNrpHQcrnmxKH6jQaRKpQKj0Whh5xkNTFx1fRDlRK1Wg1arBcPhMOouOx7YxnFS1M66ongC6aYnjlHn6lXnA4o8bUi/xZO7NMD2xbEXI8ATq0+WKTv52ED9fjqdLnV+4XYv9gnfUfUywLSAhO+io35TTZ7SfCZ9y2VoXmB/TiYTmM1m4m5rijLrNSZQ/VfiUyqz+d8cmvGvGQuST6VWq8G9e/cy+/zo6Ag++eSTS9/SExApHVpf51WGpC/6yOFVxgGo7IytJyxL/6S8ZhpL+JvS4zM/lMHHeBVx1cf2dcWlYCwXBADmQAOm505oKV0I5vM5DIdDqFar2cTDMRwO4a//+q/hzp078M1vflM8MrZSqcD7778Pe3t78JOf/CQL5FLHXJFH95omQV/BiI4erJM0qGazGTx+/BjOz8/hzp07UK1WodPpZDsoO50O7O/vQ7/fh/F4nLVXzLqb8rK1g6ZsLW22VTY22AK29D3+Rp6hd2X4OIuWIRRp0HM2m8FoNMoWNYzH40t8hLtm0YgYj8cwmUxUZdn4WepzKmds96ZJckWzekrqexuNeXif847mHjj6Xd7y82AZQRBX2QgbDdim2rwkFOmM1dKA6fm86ms40TxswRMTj6FzsNlswnw+XzCwccw3Go2FHbLaumlo9nnHadfyAXeA879t33PdRsrfdrSPiSZTWWu8gGsccR01JH/J0ZHXWMV5Lc/VF9wID9WXbPlzXWaVBi2OM+q4LANdPgih16XvuALiNrssNq5af0hYBs+XQY4vq4/y1jU0OG0LQPiUjb9j2GTUiW8au5IOIpVZhjEmjREe8NTq2yE2DuqmuIB3PB4v0OWTF0VoX4fqBUX0JfKWFHDQlF8kf1UqlWyxdwjKwPtFQfLZSXpo3qCRNgjr8tWYZGPIGFr2vBjC9y4/N9VNNf6mkKCnqT+pPTGfz+Hk5CQbY9JpVT5yUsMHZYLkOzGl83nuys+WDx8rPHYSOu/EaHuXj801f/DNRy7/vvS8aF4qG4+WFWUd02sY7owFWFxtxztQI/ykScaXAfBC8mazCfV6XVRUhsMh/Mmf/Am88cYb8N5772W7/2i6arUKv/IrvwLdbhfu379/KRiLO0zpSr5QxdvkwKVpEL7pAGDhKFkJ8/kcPvvsM2i323Dz5k1otVqwtbUFg8EAxuMxbG9vw9bWFnz++efQ7/cXdseaaAlFbGPH1HYmYS/lSR1/PL1LGUNg2+Pu4sFgkO3M1sDkZLP1gat/kG9t7YhHVO/t7UG73RZXmlerVWi321k+5+fn6mAspVOTjjpgsR95G7ockjZjX2oHabWuT3kmGniZdMW26xsTrXkQUg9EXseDr3EpOalsjiwXTGXyO15sbaQ1ZjRy0zTWqYGngXT/Ji3bVR8+NpBH2+02TCYTGI/HWRrccY9H4ftAWtXpGsOcTtOcaKujS5bbAhza+U9j9Gr1pZcBPuPW9A2OFT4Hp+mLXYguB5SPfiM5y30MdN/dDvx/if8p34bKZ5pPnvnBtzyEVgbgd2UIbC0LJr3UJF+onJTayaZDmvJfY/Uoeq7QzJ3LxLLHOZZlOxI+T954XQwALJzepUWZdAVJr+Q6q49t5gM87azZbEKSJDAajTL7MM/cZ6Izb7uH2HMhDnppDvDVrfKe7GXSTZD/2+229Vsfe/0qwjT32naISf/7BI24DcX1CRd9nFZNOm1am49mFZDGjI/97vLpuPotpF/pkdCz2QyePXu2YAPZ8g6xQ7TfrQJaumLQr2070z2xtna16WIxdpb7jE3T+DTdFWvzQ2uemejQpjO1rZR+jRco65h+mWDiSaOXFZUHF9PjMTx4LC7AC0W6KLTbbajX69Dv941HF+Fu2lqtlgXMms0mfPvb34aDgwP467/+6yzIhArkZDKByWQS5ChHaJ3Frjx8gHXEu3Tx2a1bt6DT6QDAxVEWZ2dn2TcYkDs+Pl4ItuUxoLSgDkEsE8Bvtwt3WtkULJfBaHNc0fyRp6bT6cKxXI1GI9dOmBjAY9HQeN3Y2IDpdAqDwQA+++wz+IM/+AP4yle+Al/5ylfg9PQUhsMhbG5uwq1bt+Bf/st/CZ9++in80R/9UeF0mvpE+l9yTGqV+jxBABtsym4e5aCIMXfVHNqaoBnCJ8jLv6O/eTo67kPaTuMot9Fng0ZOub7Hu9ZRlvHFD7b8arUa3L59G4bDIRwdHRnrumyFT+tMyxOItaXhQTJbPpVKBZrNZnbUF/1+DTeorKVtHTJeQ/l02XzuOhEAwH+ecxnUMXjyZTP86EkiSZIEHau6DN7iDnDuyDXpTi6+WeNiERMGO3B+xGOLqcyyBSHK3MZ0dxC9P3AZtg9d5CItmCmiPFe9tPYqQtI7y9DXvD3p377HafLvNcD0ePR1pVKB6XSa+TR8dH0fXliVzhpD90/Ti80E+K7T6cDe3h50u13o9/uZ7HHt6AsNALrSoVzIc2/tVYMky30W6RdJiwm2wC0Fl7+2Msq26EdbPh8jMe13Xo4rD7qTGvmIXy1Hfb58k84yfU3XCRofI+WTmLy+6r7hwf1lBOm1Qdg11rjOWNCyqaFIhb8NODBxdymdMGKBO9yazSa02+1LtKHyRwNnrVYLOp0OVKtVqNfr8PWvfx2++tWvLihImBbptu081dJLjfG8cBnxtVot26WJqFQqsLW1BTs7O7C7u5td9g5wIdi2trbgxo0bUKlUslVXRawW9oVtYnM5MaQ0NF+uZJkmU+QBaUUcD2AkSZK1v7avqSJmo1mqG13JRMubTqeZw6dSqUC73c7ufn327Bn8n//zf+Czzz6DNE2h1+vByclJdhfkP/7H/xi+/e1vL+yA0wQ6QyEZLJJBwJWi0DEVc4GBtr9MdPC86DvTMUah5dnKlhAS3DSl43Uz1UtTTl6jQioL29tVtisv07jUBOaQDl/+lNrX9E76Do+sp053Kguluw0BLuTf7u4ubG1tOZ06Lpqld6Z+iq1LaPmLp9HoNTbHBp2vQ49xe5mRpmnm3HMtfjLNFz78xMeFb16m9/x5qMyR8tXmeRUQU4eODal90Tk2mUxgNBoVdselCbHaSuJ7/HsZoPbeMvg4dN6SgFeB4AIKtIdxAWfIHEixyvHAdQ48PSvvvC19b7PhqENaU04IH/nkHYIQvS8vfGnV2lymvqDtru0DtLHxqFsMyPrSXSaE6psa3qMLP1qtFty8eROazWZ25QjXV2x5cXvAxz8h5Uf9SpwWKb2EMs79vkB/osu3ZYJG38sLm33DZYBWL1uVjNPyqkufD7ETtOX45ok8RH2NaMvTxRbUD2+yPa4ytL4OCpt+IvWdpj8RIT6kVcM2V3Mb2yb/bXO7Vj9zpZHGp8YWXhWKpqVMdb2qKGsbLngE6X2kEkwTNd7tik5GNEDRUMt7D9R0OoVutwuNRiMLMCXJRUBxNpvB+fk5PHv2DH7/938f3nnnHfgH/+AfZN/ihfPtdjvbJdrr9RbqOBqN4Pj4GJrNJmxsbGQ0drvdQlf8hjIFOn34XbcUvV4P/viP/xju3LkD3/rWt2Bvbw+++tWvwvn5OZyfn0O324XBYHCJntlsluW7TGdImqa5AuCaMvIaQZPJBLrdLtRqNeh0Ohm9yOe1Wi1TkHiepnbkd4vmcai66ocBWx64pxiNRnB4eAjtdhs2Njag3W5Do9GAbreb1SuGQmfb7ePTV/QbE6T88t456KLJxxFVFgVZY1wtE1LbaO/iBZDnG017a9PwcnjZ1GkYi8+oAmwq2wQ6L+P8iQubRqMRAFzs7MG/aZknJydQr9dhZ2fnUr5YR1TeuWyxtafWUeU7rjS6Bm1DdJi7+ilkDNCdHXkXer1MoHyj4fcYYwzL9JkfkCZqwKJjRLOrh/K2Scf2rUPId8sEr7NmF1qZoJEDyEN8DqCLPlEWA1zm97LoBbFgk8lYX9s7LaissAUkcM6KAbqLbw09uFynu68oT8QcD7a8UG77QFrMjXmVaQznpSXmfMIDf678eduG6L8Uvn1DZbhPO2hOtQhFs9mEt99+G5Ikyex6G3ibFWGXzGazLECEizXQPxKKMo0hF3yDbpLNlKe+kr1pk3UmfZP3F/XjamiwlbeKOdLFfzZ5wvso75jR+hdoO0ll4qYLHGca/42tb7RB9jKjaNp5/iZ91cYjsWjM4yumedBNWNK4R97ndC+7rTldZcQq22QNHcrahgvBWO605s9MgogG8bjSygd4iLGdpilMJpPMuYWo1+tZMHI4HMKHH34I9Xoder0e1Ov1hRVErVYrM7JarRZsbGxkQWRUGPFuWgDI7gDldShCkdW2AwVV8iU6ptMpPHjwIKO92WxmR9ji6u3xeLywAhXzWragC3U2upw7NE1IORK/T6fTbHUazZMGZnkw1gQ6fkL5SaKR8gZ1Ko/HYzg/P4etrS2oVqvZan1cSbe9vQ1pmsJgMMjGDvJHv9+/VE6RQk1yYuJzCp+ArCtNCI0mWnzbhrania/zOiA0NGD+Urv7OoqLCqBoyncFYpch42IE3Wxt6DMGaZ+i4Vav1xcWODWbzWxOpGXg0cauwJLkBKDjLm97SH3nMi5NefBnpqCf1P4mPchEC76nx0mtEtcx0GPCKnSZNE2zqyOke9xt8wZ/ZhpPMeHKt0h+cTl/ymh0a/qPvjM5SDG4gDqarRyb/qKVR6FzbQxw+SnNyy470bc+kk5F/46tC5p2Qhehe8aCTxtqYdJVpHda/4IPfPVkk5NRW26SvLgrNkROFiXXi0KeOko2jUtvwu/zjGFJZpvycMlzbbncvg+RO6a0qE/v7Oxk13BhUIbf6UvbXsNreXmRLkqz2Qyx5HAZ9VmbDOTPaN/kLVNbbgidmvKlb6Q5OBQx+9pUT6kepnKL9oGZnlP9UesD0/hMXGmWPdZcsthXltn8BaZvfGhyfZ+37Xza30cP4gvGpblaI6+XMR5CZNEyYJIdy6SljHOhD0L8zNcFC8FYrLg2mES/4X8DQBbMBLgcuNU4VDlGo1F2HxOuCuL4+OOP4fd+7/fgm9/8Jvzqr/4qtFotaDQaC2lu3boF//bf/lv44IMP4L//9/8urtRKkgQ2NzdhOp3C+fn5UhjDN39UvNHx12w2odFowHA4NK4+297eho2NDajX63B+fg47OzswGAzghz/84aUdUTg5F7GSTXKUFLVizmdSwkkIHea429V0hHOlUoHbt29nPDYYDOD+/fuX6uIqm+avPeZb4snBYJA5B9BYG4/H0Ov14Lvf/S58+OGH8Nu//dvw/vvvw2effQaNRgPu3bsHb7zxBvz7f//v4W/+5m/gv/yX/5KNMVM5MQSm5lvJeKdKA6eJ0kXTSoqETdnliGVISHnxsRDbMRPaR6Y+Dm2LPHXTOGu1Zfo662IgZnCFfkcNs5C85vM59Pv9TI49f/4czs7OsgUaw+Ewu1+alq8tz9cQ5+PA5sAw0WJy2mmdpVR2u3ayagKslF5+/M8qlM2rpOCaxm6R5dH53wfUiE2SFztj6ZHKmrZ3OYm1TlVX/kWlB9A7uq4SiqAfF7uNRiPR7uJzHpV73Okem95lzZNXmSe00OyQR0gyjy/q8HEe+pYXEyY55SMPfVD0/EBtVSrr0V6qVCrQ6/VgPB6rjimP2Y9lA9XlUF5p64iLmnEe9ZmPQ22d0PYv6pQlXga1x/Fucorz83N48uRJNo80Gg1oNBrQ6/XEHboxbJEQxJ5Hr8L8gX5Paq/M53Ojr8fWV1I6TaBEA0pfLH7Q2l3avGLAFdjhc60rKMjzdaULQZqmmf+70WgY83PVjdbLt4/LMNZcdMfw33H+N/k/NYjNs1rZoMmL+6lrtRrcvHkTJpMJPH/+fOU6ScwgeVGw+ZaWTVMZxmcIpDa8qnUJxaVgrI+Qk4QCN7IkJuXBN5+ADCo0XLnBZ8PhEJ48eQL37t1bOCoFj5DCXY2vvvoqHB4eLpSD6VD5p8FkSguWpRGKLgEitalLseKTKVcaqHEwmUzg6OgIOp0ObG5uZkdJo6KOd6Bubm5mKyxpPWk5sRHLWZQHtrbmgoEqOXwneKVSgXq9DvP5HFqtlnhHlLZfabvwNnIpiDimkHepIdvr9aDX60G/37+0263ZbMJbb70Fn3/+eWY487FAd1BLbRQCrbyh7WFTNovkVU6LBiFGEpUvMRzuLoMthtNVqwDzui1TqbUpS6axR+Hbh9p0mnw148SWl1QXNOxw4YZ0fDnKEx5Qajab6lMAbIZMkY5kkww1PXflrx3LkiODzx8Sv61RHKS+s+mzMZxaPE/MN9RZ7IKN53zy4fnZnD6x5fcyncK+0NbVRx5T+8UHMdtI08/07xj6gqttpPdl5AukCY+qpcF1uuhY69yW2jbPGA75zqTr8j7BOtl0P02dJbpssoXPnSE+CxvNtmP7bKDfYyC2bEGImNAGKHyAbW67Z1Sjk2n4TzOuXPXQvnfRqQUdc5J8pPa/JogdatdK4Da6z9iJMaesEhLdtdqFexXv76Wwydi8KMKm0OrGlN9MPEp/l62/bT4L1zch/G4qV/J38e9sfSLlT+tRtnY3wZde07weo7559V2EiU8kHojh6+RtyPPE00XRX4zvYswNmhiJ6xtX2lXbBVdlLJUZL2Mb8jrXbIkkJrftBMHjfmkAJ0mSLDCEBkq1WlWtGnWB7wIcj8eX0gyHQxiNRlnA7ObNm5mSxNHv92EwGMDu7m52dCMFNwK1ziX6bRHggrPZbEKaXhw3e3h4CH/4h38I7733HvzWb/3WJbow/Te/+U04PT2F73//+zCbzWA8Hmf3/2Jd8+xclRREpHtZxzbmUVIxwI1Byul0Cu12G+r1OhweHkKtVoNXXnkF2u02vPPOO9DtduHg4CBbwWpS8nAy4QoXHR+hd1WkaZrtJreB8jL+xqDtjRs3YGNjA3Z2dmA2m8HR0VEWZF61AOWySEPPMlYxA+icSS7HEI6NZdCLdMRyvNvAA7KxYMrPJV9MSip9VyR82sGVTpIn+B0d5/P5HJ4+fQqNRgNeeeWVS3MizuUYoEUZlqYptNttePPNN+H09BQODg6MNIYEX+idwK7+zKtDmOjD/E0nZgCYF15RR6KrHITPPchrXGDVBhhFqIPD5EAJ4QO6UCI02Mt1kLyOaBt43ZH+er2eyZ6rAtNchov1MChHF5KijNGegrJK0KBiTDnlmvdo2/juLLcF27Q08DqbZP5sNoP9/X1466234O7du3Dnzh34y7/8S/jss89gPB6LR5XbyisCRfAYnswU40Qj7qykOoxtruXfSvlqHYC1Wi27pgG/wauQfHZ1ItB2LhqxdPNY+rhPmwMs6lnT6TQ7clfzPdXttTuRtYElE73abyh9scb2ZDK5VE8sZ3NzE1577bUFn1dsmJzrSZJAq9XKfA78G9tYLZMuFwuVSgX29vZgPp/Ds2fPnH4u6d2y7H4XqG/INV+3Wq0sPd+9TU8TWDZcY97nuN9Y0Pg/Ne2Vpml2ioCUl+Y+4rLroBRlGRcctgVEFHntRJ5HyLxN0+/s7ECr1QKAi/nl8PBwYTEZxnMqlUop7bKy8G4ZfOJXHWVqw2XTcikqqTFO+d/0W3yHR3Dw9HRiNym3mgbgzk7+zcnJCXz88cewv7+f3YWJiuJsNoNGowGbm5vw/vvvw+HhITx9+jRLg0Fdem+mtAvI1E6xnFTaVSXY3pITG43L4+Nj+PTTT2Fvby8Tvnh3LH6L96BSuFa6aWFrE8r0JqXdxpcuBzlPE8JfEp34g042TEvvMqY7rF0GSczAPecH6lB48uQJ/OIXv4C7d+/C9vY2nJ+fw3Q6hY2NDdjb24Nf+ZVfgcePH8ODBw8W8ll2kIrC1ia+bUeDgZr8TbS42oCWYaKPykptm2rKl9L4BPyk8ecL21jjAVnTHKAdr6ZgglaG+tCeByHyzZWfDx9S8N2uSXKx43V7exuGw2E2DyJteKQxvQ/TVS+pfB95LcHkVLell3QXac6RFj/Y6DeNFZe8AljewpDrCFN/2+TIskD7N0bwysQjtjmFvufpbXq3z5iMoQ/QMUR/bOWWEXQuc83Lkr6OsPG1yzaI1U5cZ7DJztC8XTyVd9y49A5NWt/yarUaNJtN6HQ62R2iCI1DNQS28Yp0xSyP5+urN/vSY5qH8bk2Tzo+OUxyx0YXL0daGJqHh330wZjy0TanmGxpXx3bpDPR+7NteUi2Usz5XZJNIXMS/z4WjUmSwNbWFnQ6nUuBFrqAHhdLmPTUWMC8QxYsXBekaZrxL+5KpieJYRtxHrddNZBXttr0PKk8TGuSrZJM4KfDUVuRz+VF2jo++Upj2TU2bP4vU9lSf2rnFtM7bGM6riU7nJevkUWrsJV8EUqbdmxR3jd9r9HXbXqtFrY+ov9T+euiCwAyGYXAOQPgxSJ86hfyXTCq8d34+OE0ZZWBZ6+CnVp2lKkNi6LFlK+4JEdDBE4CkgKGx/RMp9NLgzsr2HAsogZ8ApLwwQcfwH/7b/8NPvnkk4XvTk5O4PT0FNI0hbfeegt+93d/F37jN35j4dtutwsnJyfZUbR4z6pEQxmEwHw+XzgSV1J6PvvsM/jDP/xD+OCDDwAA4ObNm/D666/D5uam8f4BqjzSn9hYdlv6Gti2NPRHQq1Wg1arlSngJmiNO62Bj8ckA1ys0MZdvAAAf/EXfwG///u/DwcHBzCdTuH+/fvw+eefw2w2g6985Svw7/7dv4Pf/u3fdpaxbHDHrek9NXz4O0QZhD7yGJWRNmfRsmiSFNEiytcqUi7ZoFGOJWicRq5yfedKbdk+iOW0S5IE9vb24N1334Xd3d1L76fTKTx58gSePHkCR0dH0Ov1VIEHHxptwPxwHrK1Pw/uUEeBydFI02naysa/1IDh+WF51Ahaoxi45mfXd6HlVSqVrH9j7H506UgmhxfXGcow71HQXbBlo60o0OtT6Lwv6XdSn3OZFhMvSx9cF2jkWxn6lOsBfP7kvoSYdqZLB8Gre0KAMnc6ncJkMsl2goXQX1ZZHcs2t+mDtVotW8RAwdsjSS4WFjebzSytbXe2LUDlqzf7tEORJx5Uq1V455134N1334VGo2HktdFoBL1eL7uiy+Ukz2PnzedzGI/HzmtLyuAviw2UX+jr2dvbgxs3boj9Uq/XodPpwMbGRnZtmAkm+0Eq39eHJuVHZbBrFys+r9frC8fzA1zodMPhMOMF7ospE3x4XmvrutJoTpMw9We9Xod6vQ7T6RRGo5H15DubjkjzL8s8ExPUd+3rE6J94+Pzju0n4zxlqo+pf01oNpuwu7ub/UibsGjeeeeyZfov11ijzLCNA28LRFpVQxVslyEhORa0u2z4xMGP98MdiDjJzGYzuH//Pszn82w36K1btzLhg8LtjTfegN/8zd+Ejz/+GB49eiTSgAEtNLpssAUzfJRR2+ocF5LkxbFLeMwYdTpTutDA6XQ6cO/ePTg/P4eDg4MsyEt3eWqClD402niJp3W1IXd4S89ttEh5S/ngM2xXbOfz83NoNBqwsbEBjUYDdnZ2YDQawWAwyJzuLocq9g9NYxoPLuAYQND7H6fTKRwdHWXHU+zu7sIXv/jFS0H30WgE5+fnWUAZxwDeLbwsSO1B24W3kUbJlL6zlevKy5ZecppxfqX3EEtprip4G0vjniKEz+l3vjKWz1mu8Sl9GwL+va1dNIaeDVS24HxLv8E7pKvVanYihKkMyfDUtL2pvhrZ6wKd20z9KZVna3NpzjH1N71nTkt/aMBvjXD46gUm5JU1IXm45JKvTNXKFE07+fKxaw64aggJoJSp/lS20+OVK5UK3LlzJ7MB+v0+HB8fA8D10E1iY3NzE27fvg3tdhuSJMkcr77OaEmnKWq+8JVDPD2l1cQTfLybbDWtTkXzi+VQnk6n2TzearVga2sLBoPBwjVHlF5eB409QdObEDK3xEZIe+ahF6//wbL5zjpt2Sb7ryhZpbVptPn4pE+SJAu0AgBsb2/D7u4uPH36FA4ODmA4HF6SPTZ9VmMHmXRqTd0k/V7jyykrTL4qfNbv9xf6h9r20g40nlfRgTLJv4q/TXWS8qA/0iLUMvSlxKcunVh6X0RdNHIO30l2Jn1PbWDJfnXZ52WDpCe45BJvRx9dQdPnpvnfltZEq40GTX9odcL5fA7VahVarVa2+YryB556hvdb41imOk/R/grt2DLpjmusUWa4fATWYKzNmWlznEoCyUQADnhqCGlABQMeCYXHCdN8fvzjH8NPfvITePfdd+HWrVuws7MDnU5nIa93330X3n33XfiDP/iDLBjLUa1WYXNzM1vxFSoElumEqtfrWTBWk3ZnZwe+8Y1vwMOHD+Hg4CBTGJvNZhbARgFeZB1Md/VhQFNrAHDnvEbxNxkM/F7SNE0z4xGPAH7+/Dm0Wi3Y2NiAVqsFzWYTjo6OYDgcZquv0UDiZUuGPf6N6X13UaVpurBSlS94ePToUXa/y+3bt8V27/V60Ov1YH9/P3NQ4Kq8WEH5ENDxb7pz0UZfURO6jdd4AIz2J1V2qPFs6vMYRoGPsRfaRj4OFYRWGY0VWPEpm8ueog1mDaR2sDlAUJbS49Vnsxn0+/2FHQfLqJdJlzAdj24ClQc2uk0nFEj9yB3oNoOL8wTCRgt+t2r+0eIq0SphlYZb7LJ95joXltEu3OlrsiOuEiSnz1UG9gXaZOPxGKrVKrz99ttZcPHJkyfw/Plz4x13V70N8mJvbw/u3bsHm5ub2VyDQW0bTGOB6v/4P/3tC9+Aq+05n3Nj9/0yZQMuRkNsbW3BW2+9BZ9//jl0u91sByINnsTsg1XLQlPf5aVJyxPoa5D4KE9guwjYnP3ab31pltoAeRbzunXrFvzSL/0S/OhHP4LhcAhnZ2eQpqnz7uKQcesThAUw1/cqz/8AZvrn8zmcnJxkwQ2+q20ymWTXwACsdgEG9T1oAi7Se356HtqYtnlPM65jzilFyFjfsW8LclPbXQq2Jkki7jyndjLlNVM5IbDVc5l6ny24Sf82yUvpG1t+WKbGjo8BXzmtHa+z2Qzq9Tpsbm5mzymfzOdzOD09zWQSnlyK5Wp2c1Mai/avrnF1sLYLdXy7EIylR5nwlSZSQBbfc/BASehRfJLzU3J0cmPVdO8IHsn65MkTaLfbsLe3B++8845RyPV6vez4HNcl65xO6T2m4e3J04SWwwPRUrt/+umnMB6P4a233oIbN25Ap9OBVqsF5+fnRmGLgXLcMYU7kGNf5u3TJj7CXtM/+I466yWFyAeUP32MXZMyRn+HTHBJ8uIO20qlAp999hkcHR3BW2+9Bd1uF77zne9kweSnT5+KeWgn5WUiVj9JeUqKmZSGTzhSnnRneaVSyXYl407l8Xh8KRAVWicNYhs6CF9jzqTo+wQ+bfMQbUvT+JHmOJ7OZixp6DGBz7VozLqO/DKV63JmUfpxRSRdbEIXK+ECApxL0jTNVntXKhVoNpsLR6LbxotUX06PBNN7ehKGBO2cqpGpeRRKlwF5VXAVaY4Bn3qjrOHf4OkZrh0/lM9cDgAf2nzTm2gqCi5H4CqdlRy+wQJpAQjWFXVrPs+gbFtWfX0dlahH8nvHTbDNpzwdnbOpDh3Kh9KY5PwWol/TuxmbzSbs7e1lOl0IXH2Qlxdc9pVkl/pC+i7ECS7pk7FlEOpZk8kEarUavPrqqwt38j148ADOz8/V+eFJSfjbZlcAlGcxh8v+cenWAJcXrtHx5KqXL39Q+Sid8mKqE9JNf2tkFk3H7QnNt6Y6aGAKKjx79gza7Ta0223Y2tqCN998U7xaxFWepi4Al3UAaW4y8bZL5tPnV1HHxPtha7XaQjAS643PKdDOk1D0nK/Nn17ZYvKJUX+Sqe98xqdvGp5WM+5M8synbFt5pjGrpVXSSUzzKv1Gyo/bxpqxaKNJQlFj1tROpjrY9MmQMunfEn+E2lKmOYSWw+soyVOXrQRgH3vNZjPTV20LBlGf0daP0msaazF9KVcRy7Cpy4Ki6nkV2lCST2hfcFzaGYsVtCnjJkWL/k8LdK0KdglMl+Is3UcrCaHZbAYPHz7M8nn99dfh7bffvnSMC36Hx8u22+0gZcIHLsFPYWoP7piWgrGPHj2CR48eQaPRgHa7Dbu7u1CpVKDX611SGLAcXLWKSic6YWIEYyWh7ZqE87Q9z1vK08TfNkWGp+N5xHJuhCoWAC/GIRoHT548gXq9Dq+++ir0ej34/ve/D51OB/b39+H58+eXxr7LYVoktAqsC66+sMk2bd4mxRnbE4Ot9K7m4XCYrUoz0Rji1KL8bXPC8ed5xpp2/Lqcg/iOO35M8OlbWp6rTemcGOo0kAxaSfEHeLFi0UcJlug1lUHznM/nMBwOFxR0Cn7EFvLvZDLJlPk0TS8Fjk2GItctOD28Hrb68WAA5rlsRV8zLvnccV2MijUug/MfOt6SJFHdj5rXyFimgaKlVUpn0i2uy9ig9eBHnKIcTdPFRY3YRnRX5TLgK5NQ/ubtK5tOQu0yLV9oeVFjZ/E5lM9d1L6q1+uwvb19af4sM1y2vdbBzWFznuL/vBzJtip6nkSZjNcz7O/vQ71eh0qlAs+ePYP79+975ed7/7WmfkXIco0eTX/T59xPwW1L+h0P0Njyc/Eif27T81xzq8mOd/mgTL4A/N/kw4ndh2mawvHxMQwGA3j11Veh3W5nVwz56qG+5Wp9f/SZzZY0+V2uEvAOYxqIpXXBk/sQ+L6Ie7G1bSjZYxya0xz4tVYStAu2ikCo/0IrIzVlmXQXja/ClQb97FL+Wr+Ji4Yy6OMmGkL7ygVXnjZZ5uOL1DzndfSxkWz2Q6PRyBbeT6dT427qkM03NvpCfGeuPK8ali0HfeXPVUCZ6TfpNTaaxWOKfQS4xmCeTqcLCrQ06Pl9rz6QBiuu2EI8efIEjo6O4LXXXoNGowEAAOfn5/CTn/wk+/7dd9+Ft99+G/74j/8YPvvss+xbKoxqtRpsb28vBE/KCjxO2bRTOE1T6Ha7C46F6XQKN27cgF//9V+Hhw8fwoMHD7L0NKC0DPAAhmnHICokvuDGlckZ48J4PF6g48mTJ9DpdGB3dxe2trag0WjA8fFxttO6Uqk47x2WYDqONxQ4Dn7yk5/A1tYWvPvuu9m7e/fuwdbWFvzkJz+Bzz//HM7OzjLer1QqsL29DZPJBPr9/komScko1BqaeZ3dJjp80s/nc+h2u1Cr1bLVzTdu3MjS4fHW2gUtsRGzjUz5mZQsE59r+YzKKdcYXzZMThz6HE844PdMm2Sc1qGEaXkwFhcdNZtNGI1GcHx8nMk0W36TyQS63a7aqKAyXLNAS6of0gygP7ad5+XrBHU5LCSHk+S4ozwZU46vocOynPwALxxQyOeoi4XMF5SnQnUwOkcW4Rxe8/Jl+DpIJVD5gv1uk02hfL1KR8d1crLEBJ/Xbfp/EePPFmCSsCwZwE8X4DIyJl3VahWq1Wp2TDEeC8v7wfeaJROtq4akO4fQyfVVHwdyKGy8qnXY+8xlywgwUT7D08lMZR4cHMBHH30EJycnCws589DnCoKUkYeXCeQX285QgBeLd9rtNmxsbMDp6al48pEPT4UE+Ux52MaL9L7ZbF46hhiPzaYnwS1j3PuC34O5avgG0F15Udl7VfVyW2Ab37vS+OSbF6GyUCOjffxeCCr/q9UqbG1tZdfM4aYqnEsePXoE5+fn2TUNeOJLSCzGdLXTGmu8rNAupDDeGRvTwUKdCdIKylgGAAUvq9vtQrVahdu3b2dKxGg0goODgyztF77wBbhz5w5897vfhUePHmXKEl1dUqlUoFarZceK8npi2ba2oGk09fTpC5ovDeRwA3Y2m8F4PM4chtTpg8ff+BzRFArNxKkxlEyToU97awOyUkCD5nF+fg5JksDOzg40Gg1oNBrQ7XYB4MVqYcl4l1ZQmII3PvxjAvb54eEhjEYjuHfvXnaXyebmJuzs7GTB+PF4DNPpFDY3NzPnRAgv5wV3TLuCWzaFzWVQSkGuWE6f+Xy+ID/q9TpsbW1leZydnRnLyYuQIGeMPqbjS5OfrX+1kMoJmddcfMWfawKkJppQDuOx8Br+tJXjKps6BabTKQwGg+wkBNvuXORhaWW0q855+Qh/S3LAx2jVpDOlz+vkcvWfb/6mPK+qQR4TpnFZVNtw/SsPigie8ry1emgMenwdF1eVf2l7hco7E79K/ZZHprrmGcnhnMeJaAso0+/yOip9bDHtO1M5MfgU20KrJ5n6I4QXTPqWNj8fWm3pMXCB8zvf3aGZJ0N0zUajkTkoUWajvS/du8kDDlfF8Wgbj1r7kratyynu2y42G1+DUFnC/Qwu2cHn0aLmNJo3v3uU0tnv9+HBgwcwm82CFgdowNvR5B+x/U/zug6gvkasq+TbwQAIBjI5KE9pxqBpHLt4yzbfSe+lcqrVaiYrEXhiEsDlk0CWBZ+6h+hlLtmppcHX1pPylvJw+cdseXNaVjU+feWF9rmvjqb1FWt8NK62dPm5fPUvKksqlQp0Oh1oNpuZjoMbcebzOZyfn8PJyclCPlgnH/6hMjCmPnRd5oll4rq2Wdn9WSbdh8oIU98Yg7GmQlwGjUuAoHFFBzD9ht5Hmtdhi+egoyKUJAk8fPgQ2u023L17NwvGbmxswNbWFjx8+BAODg7g9ddfh+3tbfje974H3W4Xzs7OssuvMV8MngwGg6C7/WzI47yx5Unvtvjggw/gk08+gV/91V+Fvb09ALhoM7y3EuDyEQej0QjG4zG0Wq0soI2KfywakQ76TOMA4oqIifdoHqYBkmew4+rAfr8Pp6en0Gq1xHuktP1L6xXLuMLjtHBMNJtNmEwm8Dd/8zeZ8+HLX/4yfP3rX79EM90Rvqwj9GxwjZWihXdeBzV+PxqNYDKZwMbGBrRaLSPPFyEbVgGpXySjhvK+VjHUOGBdyrPrPtJVAI/ljdX/VHnmASNU3rvdbrZoh38bqnBju0rlhhqCkt7hcrIXNZZCHW1FlFtmxfU6YzKZwHQ6NTreENx5IsE21rg848GcsqGsdBUBPn8s+3QLXyDv4KlCKJ+3trZgY2MDqtUqnJ6eAsCLk4eKsn34T16+4c5JOpYkRxhNz+cTST8BeNG/6JRGW8q331c5Rvh8xB1t+KxIvWh/fx9u3boF5+fnMBwO4fDwMLsWAUC3e8y3Dbe3t+Gf/JN/AtVqFQ4PD+FHP/oRfPLJJ9nC0/F4bL0LVoKkh5RFf5/NZqL+ZQPVFzc3N6HVasHe3h5UKhX4+OOPYTQaQa124VIK0d9ctFQqFWg2m9lpLvQOdg0vSGNZE3Tmc28I74fqtTjWeBAW80T/AvpkZrMZHB8fw+npqfXkNo2vzkQPrQ/P0xfXSR9oNptQr9cXbCYMWrZaLdje3l7QBelctEo7M488wv6bTCYLJzeUvV9jBoukvF1+Cy5/JPjakaHfcpTFfuCbXPLANwgb0p4+c7vLZ4k0xOgH3BmLc3MR4DrzGmsUgTLIJQ1cY1eaFxZGpzSQqGByDTJJuZMMWZ6nyzGuhWuFSpIk2VZ8DH4MBgNIkgTa7TYMBgMYjUbQbrez44kAXhguNLgr3Q3B664JCvjUwQc8H6QFlfp+vw+9Xi8LNOPZ8dT4qNVq0Ol0YDQaZUdnUiVi2YLX5bjU8in9PqQOrjGRpilMJhMYDodQqVSyu0HpDmXpe1e98O+QcUHL4GMT6UJHG8CFQ+Ts7OySQYd3CyRJkvHDKiZfzguSA4m3k82pZsufp9Hwl41m/owfRwtwcRx6o9HIjrfk3+ThWRNcPB17IpTk0zLqqs1vmRO/RDNfbY1/F2WYoFMAF1nY5rhYtEh0+Ro0vvMtb0+fMrXwybcoGl5GmNrSJhNijXM+B1FHqtb5Y3MCmL7X6hC28pch61xlXBf+l/QRfCbJHgqeRtPnRYDSgAs4qU20jLIl+R6ih9gCsZrvbHRKTlUc98t0sOcdvy6+pM9D9DHTc6kstEfRwc/TamjVgNrxeGcsnpiFC2ipnUvtX1ovzp+cXs24p/nEgE0n0swXCD7m0H/QbDah0+nAxsZG1obLkt9p+mKxvsmmk+og2Rba8jTPaDl5dA3THMDrkaYvFs7QPkDfg7a8UEh9Lo1R2/cAV3/eR9mAf+NCHASOmVqtBmmaLuxaxv7k9kmMftO0q9ZXYfMJ0PlumTZzHvj6cEL9CcvQuW02g/b7qz4GbQgZTyb57kpjy8c0J1M5aOI7l+5q6sN6vQ71en3hdA8qg9Cvb6qjq055oZm313DDt52uipy+KjDp96bxK/WX91IJHwVKEkScWFSsi4J0v9xwOISf//zn2f+3b9+G6XQKu7u7sLm5KeYznU7h9PQUms0mbGxsZM+5oC9KeGgczhy2vmo2m5CmKXz3u9+FdrsN3/72t6HT6cDW1haMx2Po9/tw9+5duHXrFnzwwQfw+PHjOBWJDKldfIV4nl1eJozHY3j27BlsbW3BdDqFarUKOzs72X0ueMwvLg6wwfeORB8akyTJjqyg+MUvfgGfffbZAn1pmsJgMMiOvcBAc8zd0SHAMah1fplkkW95mnJoWWgw1+v1zGir1WoLxxPj6rX9/X3Y29uDhw8fLuxWXxViTN7LDm7m+Y46FXzy0ji3NPQlycWO9Uqlku0CoPOka96h9eBppfEyn89FB45tTCVJol5tSZ2aNkOHO855XShQ5izDuUnzRCcYRQhv05XksR2xL7uyTeuPfFLkymBT2bhDNs9uGvp/6HxFf8fWdWIA6Vl2EGvVoM57Kgckecn73teJssb1hKvvJQfAsvjFtZgAA6L0lKUQ2RTyTbvdhlqtluk9PjDJqDI6EKW50Oe7Wq0Gs9kMJpMJbG1twc7ODuzt7WVX1uDRpJryTUF1DVBH9ZkjJLmq+QZpXUVf2mjEHdoA7tOCarWaeC0Yh7aOkh2hpfu6gdpi0+k0OzUuSRIYDoeXbJPZbAaDwQCGwyF0u10j/7runi0Kpn418QbdoILBHZ42pi63LJsmbxmm79HHGFKGad42+bxMbaVpQ58FKrH7Q5tf7HR58tD0qY+eHjLf0DxpcLVWq8Ebb7yR+ZHQXzscDuH8/ByOj4/h/Pw8m7+lqxg0dEp+IMofeebQMupTa6xBIflWOfA0UhsWRpAtYKqBtKqDO1X5ADVNGi6aTDDRzf+mKyv7/X4WJBsMBrC9vQ2VSiU7gufk5CRb/YWNSlfU0vx8aKXpXG1nqqNvvqggIf2TyQSSJIHDw8NsNTBdyVetVmF7ezsT4JSp6L06MQ2XUAFsa3/+TqsY2RQbUzm0LLqj2BRMXaahKK3UoLt18flkMlkwsqmQMRnTq5g4eRAnBKbVaMsAHmuNO2GRno2NDUiSBJ48eSLSyBGTZkmGSg592/e2/vDpK6mcUKMmFJo5i8MVcOTPpO/pIgw0vGxl+8wZtnaVnLc2aMa9iW84L1De0bZhyNiX8s8jv0KN31UatS8L0jSFarUKrVYrk7ODwQD6/b71G1s7SgE0Cvot3QXholP63vaMvvPhXY080JTLvzfl65oTJDquCh+bdEtf+NS3aD2LOpBQF+SL7tZOkheYzWYwHo+z04bwmMoiedglD/Lm4UoXGlQLhUbn5M9sMDlOpLJMvgQXDTbkGT8hATTbNy45Tfsad8hXq1Xo9/swHA7Fe33pNyY7IiQwoam7ba7xfR6aNrZNRtux0+lAp9O5pGeMRqOFRX4uYHva2sQ2v5n4RNtHVxnYxtgmWB+cO3HXMrWn0H8Wu+4x/LWafGidXXnFxKp1wTz+SNvc6bLXNTJbO+8V5SMqEpKdH2Lr54HNdxEDvv4WDo0eiIslcNEbLq7CHfymcW3yWcWou6/uedXni9hYt0d5YOJlre8HwBCMlTKmCoYPgehEpmWECtU84I7ter2e3e2Dd2wAXNTvW9/6FrzyyivwS7/0S3B+fg5//ud/nu0QnE6n0O/3s8uw8Xe/34fpdBqlTtwgCnV0S0BB3Gg0Mgdlmqbwne98J/v+lVdeWbgv9N69e/D666/D9773PTg6OoLhcAjVanVhd+R0Oo26OzLGBGpqD2582PjR5GS3vaOGqWllIAZpbfcf8SBFbOBYpkfqmNqtXq9nweRVK8YSXEaiBBrwAnixCCEmTdRQozIUaR0Oh/Dw4UPY3d2F/f39LDB+584d6HQ68Omnn8JgMIhGU9GQHDDab/i48nEqFIWQhSbcsYV/2yC973a72WIYzGc6nS4sJOIOAeRfDb2uPpLaPu8OP14m1iPvuJNkuMvQpXynda5p2xX1Hq1Taq1YF4t6vQ537tyB7e1tuHPnDnzyySfw0UcfGdPb+CFWEF9adKAJAksyhTtrpXKKgLbutgUWVx0mp+WqHdIhfZ4kSaabos6CwcUkSaDX6wEAiEecvcwYjUbw/PlzqFar0O124fnz5zAajbIrSvLK+DKNHapzJEmytN1ckl7F6aLpQsug8zbV26/TPE31LayvZhclRZqmcP/+/Wwhu6R7+fBFyDcc3N9kS5enDOR7emKNNugSWja9IuuLX/xidkQ0YjgcwvPnzzP/DpZr84P48vN14f+8oBsWJCTJi5ONAHSLOfA7LUyBEx9ogn00bzzy1AWt7bMK5KVLY2Picx97XMrfBC7jtAFZjjL2Ea+bSZ5L8ivUX8TtKlMeeXU4E/juWXpHuOt0MjoH0DLm8zn0+/3Mv4uLQzg0O2J9+MnVB8teyLHGIsrov7+KcPlpqA2twaU7YyWnjvR3DOXSBM1KFK3zlH9n+hsbbD6fw8HBQSbA8IhI+g2uEJcCeiZ6TeAGiMmRL9EtKWNaxxtnEvxmOp1Ct9uFhw8fZs92d3eh1Wpdqi8tCwW9rxLma0D7Bi3z0mLjOZNDgOYzHo+h2+1m7/HooNFotDCRYnvSyczEU76Kgo+RyCd3HjTGyZwKGzTkV+2scAVkNbzmUmptTiBTXqZvaJtJDvlarQZ3796Fzc1NODo6gul0CpPJJKiNNcpRTCMF//fN09bemvxCjRJfaOSsb5BFes9lfZIkmZzlO29swUXbnGErk+fl61zQOE1N7WKjzVSWqT1M+dMgkZZXqZy2facdV2tjpHjQuQ0XONy9exdOTk4u7ZB1jVPXO59gAeUj+r+rLFu+pu9DZaFJNsWaN3zKX1aZoeD9yd9JfcL7nvOHS07y/ELptr2TdBkT3Sa57SvPedkUkq7H0/IFPra2N72X6EdZwoN2qBOHOKKL7FsJWtlgGnshfWkDBrYALmykZrO5cM+ZiRZOl60uFDwN3oMagqJkkq+/w5VPmqZZIAV533eXXrVahUajAa1WC9rtNiRJsnBSmC9NCK3PgsscPkZD4KtT2pzNEn/GBuZdrVZha2sLms0mnJ+fw2AwiGKD+3zvksE2OyTEPiwLKA/gby77Ud/EO9cpYvSTa841weaXsJVFf9uOIA7Jv2hobLwYc7DLzrfJDpqHBia9SFsPm666CoTKHRNC7Tjpe18b3sZrfO7i8hLlhqsfeR5U9jSbTajX66LuNp1Os+PuXfOZpq4hsOlMRc6dVxl52n3dpsXAxMe2OdDUFwsaAl81YXIo+KBsAp/fkyfhww8/NH6PwgwNGfq8SGjbUHK2S4oIN8JarVYWZD49PYUf/vCH2buvfe1rcPfuXWu5uJIHjzMrAnTiMK1G1U6gLqVJC8nwoEdXDwYDGAwG2QR769YtqNfrcHh4CPP5HGq1Gszn80u7il2Oj6IcALhbGjEcDmE8Hmf0YVAelfHpdAq1Wg3q9brxbrxYbe0CdZJp0wMUO3ZteSOfmHaUV6tV+PrXvw79fh++973vQbfbzXbwXxVo5ZaPkbSMucTGsyEGMP0uT154EsFkMlk4XrxIUOMBHdx0IUYsOUoNB5+5zpXWZRxrggkSvXROlYLUpvqURRd6mXH79m24ffs2/PCHP4R+v5/LqcUdiyF52XjExwGkCarERoh+b2ojkxOjaDlXdPvw4B19zumgv20np5QJIe1n4nHJ4UsXAdL5KNRx6bIT6HiSFq1SHbjM0I4l0zNTHhJC2gKvzKGn0jQaDdjc3ITBYJBdoxMTlHfoaTVbW1vRbNeyjVdcuEcdtPzYcQ1qtRp0Oh3Y3t6Gra2tLMhUq9WCA0KuU1E4H/KALE3n8llxmWvjWZMuZ6KXO8djBNxMdGF/3r59G2q1GhwcHKzcNgzRf8rgG4w1908mE5hOpws70CqVSrZoAcuicicv+LwZsy1t+XE/X71eB4By2jbSXG/qb1udtTxi+951+gCXGaZgmWQr8HTUVrehDHOV5KM2QUoXUofYwd8Y3/gEYmm8hs/l29vbC4vLaNrhcAgnJyeXnmvAbRju97Dp1cvyU5U9zzLjZatvKKQ20thLtrF9aWcszZhPCqZCNNFfjbPJlE9eJ7Ypfyr4MMCnCZ7QQJStcbWBQS3dGkebadLmeVGFntYdj2+mitbBwcHCHWu4Wnk8Hmcr//IOYJdjnedvMog0bWH630WLywnkcrinaQq9Xg8qlUoW0HcFfDg9kvJtolMLemxuml7s5sU7gbBvsc+leuFx3zGU2Dx8RAMrtvxM77mjD59p6Na8s6XDI6ba7fbC3c2URjwafDqdZsem87x5G9D3edrWpFhp2scnrU/ZprJMhoq2DIlekyx3yRgbnS56uCxrNBrWi+ClOdtEuw9f28YQ/Z+W7/rGVb6GZyR5pOVzbsCG8qZrrnCli40yKNNloIFjMpnA8+fPYTqdQqPRgHa7veAkWyZ8y3TNIXn1Hf6tSXfROAhCkKc9NGl9bIRVQFu2JKu082+e+TsmtDzkO4/66vIampbNE9xhbwLytIu3l9m3Jr1C60OIUbZUnkSTb95ct6aw6Tm+vJ7X1jDlr3lO/SCucm314s5ak//BRXMeHYLWQ9LBeNq8domt3WzfmWjiQBpN/qlerweffvopPH/+3LkrX+NDkujUPHchz3dFymLfvqM8irYYPeqb5jebzaDb7WbPxuOxUYfL40eM5X9zPed34PH6FiXffevn8oPaytLS5Asqk0xzls2vyG1s/I2nFdATG10+EtPzZeuDCK7zmHwJNtpj0I/5hMxX0jteJ1Pe+FwzniTetqVDGYTg19L51kXy/fiA5qX1nWrz1cBHnpTNj6HFMmzxMvp5NIhBN7XB8H/+XtIPbbJZvDPWBB9h5xIiLoMztFwfUAGIgQ+ToztJFo+HxLRaRdwl3G0GnwlcMbQZhvg33dGUpmm2MoYeEcUd/gcHB3BwcJD9j6thR6NRFrCLNTB9haTJ+MdJTZrkeXrehiG8pnF8pmm6oJgDmFcmaYxYW9/7OCG5UBmPx9kdsbjrFe++6vf7lww+eneYVGYRDlEf41FTnkn5c9Hgk55+x78ZDocwHA5hb28va+tKpbIwDqvVKmxsbMBgMIDhcOjtRAylt4i8+Pc2Po81edJy+DtJ/nLapMk3z7zk4j/+DHc18DmK0iDd7c7bL5bBot1VIH0fmsZkyGjqZOr7GJD4y9eQizE+y6Acl4EGjul0mh313mg04ObNm9But73z0RrpPI2kJ+L4trWXbzmURhc90jcu43iVfZvHAabJe1V104x7qtem6YsjyXz05VBZtwwHnakMF90u2mz6vu1ZHvjYthQuHYj/79L/fGnwbUv+3FZvkyM6FJIsK4pPtTuLJJokG9SUxgcax6iNLv4N6ot5dCSb/8QXefhEWiDv4ktNWlM6187eEEh+DAzGcpq73S78+Mc/zk6myiMvNTQt+9ui52UfHUyy2dD/QXf3I/DeRhdCechGt88Y0MhQ6iPl/KkpJxR5fUex6cmrh2p8hfgNl/PSXISnFeBJEpQPtbaBjY5lwKbzaHaKasePqe3pXMyvjvPJUzPXSs9oLIL2tav/0BaQ0uC3s9kMTk5OFtpT8jvbfC6hvlHbO5c+6Ytl+ZmXjWWOS1+b8ioiFt0ae4mPaRsuBWO5UAo1LK8S6Ko2KtRRYA2HQ0jTNFt1RO9/WDVDFuFISJKLXVgI6fhZGhxABQB3U2LAoCi+4XyKz1zACc90NDDNx2QoY9kap7vG6cOdajwAg2mwTPoOeRYDI7HaG/Mbj8fZvU34vNlswmw2uxSUxTpIdSxijLiMEN+28KUxxEmOwP5EWcPlbJqm8ODBAzg6OoI33ngj233OF0nECN6ssQg+vlzGi69y6qvozOdzOD8/h3q9Dp1OJ3e+NK2PA5x+g7J/NpvBZDJR58vbK49T3DTGXcaQlFZLRyxHsgtlMACuE3C+pzoMylRccIQnO+RxrIbyhw/PFo2iAxum8laN2Dp0EWmXBdQx0M75+OOPMz1zNBpler/rdBcKrjO7IO0w0jgxbfMC1d1xnFMbgOr8dBzgiUj4w0+JqdVqcH5+Dj/72c/g008/hUajAc+fP8/ar4x9nAe2OdyVXoNerweHh4fZfd5oZ6DenDewg/epAUDGw/P5PHNmn52dwXA4zFUG/o6lM9B8QvNLkmThnlest+9RhQAAg8EgOxHJRpOp7012tQb4Lc7ddDGw7Rtalgu2NKayipjLsF2wjrSdBoMB/MVf/AX0+/2MXzU0aG2GImziZesXGsTuNxz3Jh/YVdPvyxrAiwEtP8buL60MooE6Sgs91Wc+n0O32720EIbOP2XlOVM72Oww7oMNqZdJl/TlZ5/vNHTSert0B5y/qZzZ2NiAZrMJo9EIhsPhpfd0rpf8Hrbgr7ZtTHq5bz6+WLafuazIQ/NVrG8Z4ROERdT4A1egK6ZxIZVpS29zvvoYhaZ8+IoRuuOTGi50taIvNA5r0ze2NPydb5CAl0frSB2ZNF96Nyr+nyQvdhDn4RNpUjAF+VxOeZoW6UNnkslJxMeBLTghQdtn+LxSqah2mlFatMqI7xjBMvAYbnqMMR5bbOvfVSp+IeNSCrzZ2iyG/KOKD/Y9/j+fz+H4+Bi63S68+uqrUK1Ws+AXjjUXD2iUKtN4CqljkQGFEAPeVn/t95oxHCJvfWhJ0xRGoxHM5/MsGMtllinPkEAtpnfJK5T99BuexvS9zTHvCthqYGsPE51SX0t5aJ1da6W2PEB9ht/9iPpeHn0O4DJPu8YO5+9Q2alxIIU4vGPp+C8LeJtKd4xqdFRb//jq83nkD+omGLA6PDxckPt4lYn2PtsQWlBPR9hOg6DfaPidOjip7kd1KUn3N7VttVqF0WgEvV4ve1ar1S45FGPOCS691KS7hMoX07ys0c0kGWdLPx6PodvtwnA4zHQfVxlaJMnFYtxGowHj8TgLxqbpxYlA4/EYhsPhwiIzF6R2suk4ITSHpJF0YDx1ZzKZOAOpJmBbURmgtYMlfrHpZaZvcf422c2+9roNmrk9RMf2AfWzoP09Go3gk08+yfoRg9M2OvO2O8/rOuu5IX4EyitScKwoXS+PL1KTxpb2uuuKoWNbGi/S3668+LyLchz1i/F4DIPBwOrzsNUhj2wsAiae475P21V10vf8vQl5fF95ofUbY1vwRcZ4Bc/x8XGm39BvOD/RXcCmHbahtEvPy8Jj1xXXeT6+SnD5OCUsBGPR+HUpEUWgDIodLx/bge5I4sKvTOCTkNSmyCRYB7rrkn5LgTtI8JvJZAJJ8mJnLPINPYt+2UKX1hl/+NFL+BzpxwvOsQ7VahWGw6G4Y9YGTV01xrmvco5H4xQ5biaTCUyn0+x+4I2NjcLKKgIxnJPaMqRytLIT+7Hf78N4PIbt7e3MGdpsNuH999+H09NT+OijjzIHVUyHD8fL5pD3MUhczlnN99QJjHn4tDfK5PF4LK7AzsMfEh15+c1Xtmnagy5mkIwJX+B8YcuHz59Ih2buxfcS37xMY21VKFJeSpCcL9qdtzRQlIevtQEq6TtMbwLle5+819CBywnJKbeWG1cLMccIzYcHxm3BGK57FAk8gQBlBaWTOhP5qS9FgAZJxuMx9Pt9mEwmavmqCcrFhCYQogW1i7X5YR/hqREAF203HA6hXq8vnBBm+n4VsAUlfKDVF6g9UKQ9hgthqtUqHBwcLARoXbQVBdOiGJ/0VxnUd8TB9aPYvLGK8UWvabuqCLW78tRZsvO5PLblj3NUu90WF3rR/ADg0hVXVwUmnZa2n6nu9HdIuaajnfPAFQTHBUWcJ31PlsR8BoMBjEYjbx+2D90ca7tv9Vi3/9WCNLbFnbE+GcQghk9GeRzIPo4mF10oZHA3IACojsTJC9fk7GMgmL7lSoGUL9ZfUiB4njanYSxBITm8pf9pemmCxXrRSRAVanzm4smilFFXW0l1dK3AkNpHChryb6gBj8EYm4JnUyyXNVnY+sU2rnwcm1pHtW8Z2L6z2Qym0+mC42Nrawtms1nGo2j8ads5RGEKdfaaxozUbhq5HXMMSnlpHJimv0P5WuMU5e1P7/tGGZWnfOlvKT8TrShDpTnBlp8vfRoa8bm2fzQOtBBHikkGuoyy2LrVWjm/DNovKGdj6XK8r03jS/rfhhj9aOMv21gCuH7O06uGVY5jSf9f4zJsOgVHEYFYTovGhogVkJX4gstCKksoL0nBZBNi2RXUVsXrd7a3t2FzcxPOzs5gNBplCyJpeSabl8InKCe9L3Ks23Q0fM/rhPSg7ac5FYl/K5VjS+trU0n1kto/j5Oefy/xr9R+Uvl5A8PU6U77waS3u/JcIz9s/ieeRuJ1k50s5eMDzXeusqU8XTK/CJhkqsbHYEpL8/ZNG+Kv4GVp5hROT61WW1gEw4Pj3CdA/QWmPEP9KLHlh0Znovoop8Fn7tD65zQyPQRIN/U30/nWZ4EY/kb/Id8NG+KnDEGeuciW5mWfp1zjlOvYa6wWofy6EIwdDAYLSndeYq4aY3ABKK12q1Qq0Gg0YDKZwGw2M67SWbUTBcB/dUuapgtH0pp2XeKOPbpbCvmmqLtieZ3yGjccGPxqNBrQarUA4KJ+/X7fWR/NjioTfHjFZAQuawVcmqbQ7XaXUpYPYo23GHIrlgHc6/VgNBrBX/3VX8HW1hZ861vfyt51Oh1oNptwenoK5+fn2XPXSvVlo0g5qGnnvMFaUzCN8kksh6aUB93xifc00/SmbwDCZJEGKPMBLubHVquVHXknOYeWMRfyO5i1/Y79x4/Zl/JHuE4ikPjHlJ7Pn7HmzatqvCyDVyaTCXS73eykj16vlx1VCXCx2I7ykgtUBkiOId6n0g7zIlZk54FEW6g8MfE1dTzQckxYtU7tQwPWGetEj5dcNvKUiWMB9X0E77Oy8O0ygWMY5+ZKpZLtWqtUKpl9SKEN0mkdhQDFzfMc1D40vXMF/CiQbs19pfxKhJjodDrwu7/7u1Cr1eA//+f/DOfn5zAej7OjX3EXbQzEGv8x8+G6LAXt63a7Dbdu3brUX/RoXPoNdRKbHOGh97PjWJtMJjAcDhd0KClAyssNBT9NTMO7eW1K1E/598PhMHtOafF14ofSVFTaZc2RoWWZbEIpyOajQ0p5mlB0G5kWM1AZYbKVioImEMsRyqdS4JynsbURgL3vMdhmS0NtQryiqF6vL3wznU7h7OwsS1Or1bLTCnlesRHD5+HKzxUQ99E3pDJpOTHtbxdQXsfyWXL9HAAu+TQ4f5tkl42nTeUvAyZ5XYY5owgaXHnGLO8q2dZlh3b+ltIteO+pkNNmHANaZWTZQV4shztNuRFjc9zTvLhD37XixqYM+NbBJ+BnMtAkAV7UILL1tU+dbG1MFSfqbJCOjZBos5XnUi6kdD4KQQwjz0SbDaHOnyJlig9vu/LwNYxC4cobnXyDwQAqlUp2pBoa3cinrvwlI9GnXi6ejCWLpSCeLY1rfOali8p1PkZN9Nlgc0rZ6KXl2e64dsE03vO0k+QAWwV856A8ddZ8a+Jd33Zath62aiyjnujcxBXEuIDApPP49IFJ75P+9xk3fPe5Sy+UxrppvLvqZ5Nb/G+tcyzE+VGGMeA7b5ogzXUmfdFXn4wFThv+L+l/IXOJzbGRpml2FB9dHGpygFI6OF+Z5m/+t0SHLY3ksE2SxKqXlYGHAdxyyuSMxnS+DjsJNv1uMplcOm7PpRf62AB08RYGEieTCRweHi7c+8vL1JYRwx7JmzcHLhTA8YE/PvMaBhHQDsEFB64xosnbBj6esQ+lOvC/NXONbTy45lb+TqMD+LSLVD5f3CONV5c9Qf/38TkU6XtbpnxcVlkuvYv+H+rvi9EnrjyW5XPVlG2yxzV2tKYsX3vfV+9xySLpfZIkC6f3YV6mXbG0nDy8FQN5fGqm9LH8nvyd1P55fCWSDmHym9B52QWbv4zOeTZdzkRrDMSWXXl0jFiIQYOWl1z2oG+5vmUtG2WgIS/yyjbxmGJUthuNxoLCmySJVzCmqAkghiNZA6wrHg/aaDQupeHC02fAFq3c2kB3PJhooIo/flOpVC7xAL8/r0hwx6lkXOA7/LHdHYt339AjC0OcXBolK4bzrExCq0y0uJDXqb5KTCYTuH//PlSrVeh0OjAej2EwGETJW+OQySOnfBxlZUNe2kPbTeLVNE1hPB5n90ah3I6xM4bLxavSXzRIpaFbktG0j0x95TqKGfMx5eHK30QrzXeNYsH125Bxy3fK+BjXSIMUSGo2m0E7tCQnTShiGIGaYJr0/LpA0k3pc5ONYGqXEJusDLA5ktDmQF0HxxQey0l34bnkNQV1TvGgKU9Ld67wOeaq8mVZ5hE+V0vteXR0BMfHxwvjwka/T93Q7ptMJtBqtaBer8Of/umfwmw2g9FotJCnZuejprxVAsvf3t5eONEKFyK5kCQXJ15NJhN4/PjxJbnlO7fkmYtQ38W5EMexCaarXDSg+WKdbe1FfQ3025iyGW0AAIBGowFJkizc57vGy4Ui+90ko01BpFVDMz9o6AxdTKHJ23X8LNVHJHmTJMmCHO/3+/D8+XNnOWWZ+wHM7VREkMmFVQTy+I5Y/Bv9OaGnHPINRDbfE+etGPbhGsvBup/Kh1h9YjzXEgUDH6i+DmbTRKhxXpqcE6bvXN/mARoBFHjUHadFM3mHQKNUuFYS8dVTrrTSc1f5pvaI1Q40P+0qIk3AiTtnkiTJAh+aC9FNjv0iAvE2ngtpZ4mWZS16KAK+7evi0TztE7KiiSpM1DmIzlc0yuv1+sIxVpwml1KmRd6ALKVNk5b/rf0+Lw1SQEQqH+Uod9Byx3nsMUT5AvM3OZ9pua5FQrYgpUTDdDp17s7W5hcbedvcRaupbTXzDAf9Zplt9DIC23c0GkG3282COzs7O9lxxSaY+pb2mXQEsQ1SntL/Jqd3CK+4dOoYOhoNetFnsaGZd68SfOdH07My19vVZ7ZAT14e0gb3VgluP1A9g6eTnHouLLve1G7WBrRpwFbTV3nlwHQ6Ncp+yf8BoL/jVkIMf4HmG8o3WA8pIKDxGdAAAX3Oj5BeFR9SnvFxTOO3Jto4z+aRQT51lmjC/gsd+7ZyJP/Qyw6X79Ikmym0/GKTdXnsGFc+Wv8ZpTEvXVqE+G8oYumyvrTQb112t01up2kKrVYr+6HXIGA6TIsyj8+vV9We9PHDub616Rx5bCofe10zriVZ7Jun9L1L37DlofGDmL71fafN/2WFpj2uss/+KkPT7q7+MwZj0eGP59BTUIcwQlpJ6HI00fT8by3jLYvp0jRd2JlQr9eh2WzCaDRaCNLmDYqVGRpDGmC5AoEb7qY0LvDVrKjcdDodmE6n1rtSJYPXRKekSHGeKZsgjWkgvKywyUJJZmDAC+DyTo/pdJodp9bpdGA4HGZH2NrKjuHMLEO/xwoaSDCNYdu8xMe2LzQBU6ocTyaTLBBK7yWU5Igpb00b8nKpI3IwGEC9Xs/u1+bpXfnlgY+OEJJ3aL6hhh1fpVqGMSahyHG3DCRJAtPpFM7Pz7O7tt966y24c+cOfPrpp8770E31R/mMCxSku7upDDbpxy7a+ZGtPG9K5yrA5zSq60g2wxr5IAW3rvL4vM7QjHfbrnweWDOlo+UtAzb+Q5mIJ21pd5r6Bq2K4nmXXRmap3QCU2hepnxMeup4PLYGLmieuLhIAl+IV6RO5gLnwVqttlQ6NDpbXnpsvoW8KKu+WUZQnqcBNVOgU9vvvrbjKvqsTPp/EXSYZH3e0yD5M7pYxOaznM/nsLu7C3fu3MmeS/dH4x3a+J0t+FY2m5miyHk8RhsUsRAh70ILaYGEVi90tcN6XlgjBso0b5QZC16jN998MwvCDodDODs7AwB55TxXQPg7/h1CGzDTCo1VrQSgq31dsBk/NvpNBk7INyZabG1ro9uE2M5kn7raBr2Ulu78rtVqC84CvLOqCISuWDIZ3aZ8ihSAvFztOFyl0Y7lh5S9LDmD9NFyZrMZHB0dZUeE03u0uAw2OZB4OoRmPNNvYrRDqIygNLj60UWnxIdcjricVrEdJLxcrnDzPqTOMluf2mRiyFjAsnDXC62/tEuXfuPq+1BjQQpwSbyrkblaGSaVEQNlVVzLSpcGpn46PT2F0WgEw+EwyOki6VO+7eQjD0PSxuBNbvDb6DDNGfw5fa9tM+148w1QL4u3bW1G+8o0h/u2UwxIspW+C8lPm4fktHTxnjSPSnOndH0J/pZ+aJ9wHgZ4cfyrpBMsw1m5bB015DvXO3RUS33mgi9Nk8kE5vM5PHv2DKrVKty+fRsmkwn0+/2F3bK0XbW8KvFHKKT29pkH0vQiCIuBcayHdJKDqw35rlPpO00/+PghkuTFQqTZbAbb29tw9+5dGI1GMBgM4OTkBAaDQXYEJB+noX2Au1BbrRbUajWo1Wown8/h9PTUmzdddXR9x7/V6iqUNsmfEVtWXGUdUQuXz8z1nvOkT5vlbV9f2b1sv6oLfHxrYRuvvrLI9q0pjbbPUS5Lxwyj/MMFpcPhcKE/pXlnGf0Xa8yH+gZdfeLSO0Lp1+gCrmeYj8/1OFo/ME+v4VVOF01XFv3zqsKmI/n2zVXCdamHDdx2R9jGPMdCMPaLX/wiTCYTOD8/h6OjoywYSzPGQe/aOWS6j8c2wKW0JqY1OXyWBdf5/y7EdJC5nN+2d0UK0Jh94uITrpSYwAMJ1Cilzpl6vb5wry51lrl4ktMtOSNNQQP+zmeAm+pa1NgwjfGywMTbsdsl7xjid1JyHpjNZvDs2bOMZxuNBrTb7Uv5hNZrWTJUo/hKY8Q0L/C5xGRUaZyAJjps6TXyJgY90nc2Bzn9zkWbj1NA6ge8e4zqBrZ53GeMSLTZ9Al6z58pP4lvbOXZ6NLysolen+/WiAds3/l8DkdHRwuBFpOzGaEZnyHy18SHPo4FiR76N5+vtY4In+AILc90bLNtnLmc5zF0jRBHqI/jhfelJLtM+hzlIR8noYnevLIkSZIF/Zfmn4c+SqOtbFvb2r6TdGzeznSHosTbmAb/x7lF0tfRUVrW3d8hc5WEonRF3sb4LFRfAHDTOJlMYDwew2AwgHa7DV/+8pdhMpnA06dPYTAYiEcX2/QujT8jVH7lbffhcAhJklzaWcV1JZctW6lUoFqtwmw2WzgRjM+bsW1CDISmaQq7u7vwS7/0S3B0dATPnj3L+pDvvqbj2HfexN/z+Rza7TZ0Oh1ot9swm83g/Px8YTG+acxr51fbNyYd3nV/rQlcdvnS5sr3uiGmvWKyj6R8TP2eRx7y/G10S9/H7GObHm2Cj2Nbk07zHW8bky0ufePy41HQfPl1eNzGHY/HcHBwIC4WMn23Srj6zcZnvn3k850pra9fRwubv11avGezAVw2lctWc7Wxj35vGxMhfp/rNpdobZZYKMu4v66gtor03NfvijAeU7yxsQGvv/56ZhydnZ3BcDjM3uNdIdLE4WPYUeGChv8ay0fegFLZwCctDBwAwCWDbTqdwmAwgPF4nBmceNxgs9mEer0Ou7u7MBqNoNfrXZpoeDCNwqSEUX63KW88L8nRxOu5xtWCD98AQMavyEPohDAdQeYq20dZyMtfvg6KUEMLISm0ochjnIa0Hw9mxKxLTKD8czmIJEeQRnFxQfs9l50hbak1qkPzX2M5iNU3WgeSzYjWKO44vmLIYRwHfBFaaF62d0Ua1ra28AlehBhORUOjE8Y67nSNqwHb/K8Zh8viY1rW7u4u7O3tQa/Xg8FgAIPBYOEaGICrMU+inFyGf8IW7PXJI+Q7+j3uNI11YoT0PCYwUFyv12E+n2c7xzTgOrbPYnvuwzJBM9ebnOzU17BKXIWxGguhgaCQtFIgzRZw8R3ftsCsqdwy9bUrCOVqD9ShbXYbrbc2cG6DKQjG52KXzOAbR+h3KKPL1FdXHTY+0S6mALAHoUN4y+Tz5eW68pXyofRIc3cRPruXFb4+UN+811gO+DUeefv0UjAWB16z2YRmswkAFx2MR7nxgvOuytE4uG2KSRkUh6KdIT6OpTz5UiUkDy1F94mN5yj9/G4GVGR4MBaVHLyLEQ26NE2h0WhApVKBTqcDACAGY/Fv+pxPbnzlsDR+NO1WpkAsVyhtdbgqDkMX3RqHmK0fuHM1pF1wdSQuGmg2m1Cr1bIjyCgNWkPNN6Clga0t8/KsL80hkGjUKNp5ypTyc821mvJC2tsnrVZ24W9NO9oCEabvuRzitPkGS7Xt5iMnJBQ1x69hxrKcGJKzVuN8o++0hjYv1yaDpXHI9RhNGT7PTXTZaAzJx3duzTMfFaHrmPpAI0OLNPYpDbHBnT55naEmuNpHM16XCa4D2Jxm/Dv6XGvbmfKzpeXf4O9OpwN37tyBZ8+ewXQ6zY6D1wSVltXm2M/VanUhUMztm5AxFTqvm3QYFzi/hupXAC8CfzabTvtMKt9Gn+l77Af+g/Ti/Ym+wVhejnahi6+sCJHNtK1M14CYvtE819qIa1xA4+v0sS0wvUl+2/6W0i/LhnDNAUXmq2kPU94SfVLbh/arKa3vHIKyFIOxfOMTwItNUT72aR79MJZu6aI3hh4eKut8ynCls+nvmsU+Wnq1dNl8SRIf8XlNmudCx6IGRdsyRUCrM/jm8zLMwWXsb63NRG0aSX939d9CMHZ3dxcmkwkAQHZvLH23sbEBjx8/zp5LCrE0oG3Hmb7sTsgiHDkvM6QjM5H/Go0GpOnFTljXABsMBjCZTKDRaFw6/oimsxlgkjEvjQ2cmDVKaFn542WYKGJDE8DB//nxbVSRm0wm2a5vXL0vKf4xgw9lcFIiipShtnpqjv0sYn7zCRD6Bh99gKt1q9Wq94p9pMvGqyZolSNuREg0+BgxPn1YhnGxhhnYlzivxwj8aHiEygMuN0IMEVOZoUFKk06j2f3uA9fY9MnHFKCS8l7mvGXT52zzfAxezEMfT8PnsJgOOal/8BjU0WgEo9EI0vTyCUx5wHXtJLk4vrVSqcDm5iZ0Oh24ceMGnJ+fw/Pnz2EymWTO0NlsBrVaLaNfmm9CcBXni6Js92WejlWpVOC1116DO3fuwO/8zu/A6ekpfOc734HHjx/D6ekp1Ov1bGGuj8Mb4AV/UFs0BmLkZes73G1lg03u8nSmsjXAsTYcDqFarcLNmzfh7t278KUvfQk++eQTODs7U+uevrJ/Y2MjW4Q9Ho+zo5JpXjHB5atWz9XkS/PztQNdffwyQKvX0b99FxpokHe+yfNNTP9BDEi6iQ9ij2ENj2jL3Nragv39/WxDFH7/7NkzGI1GAADZ4iFTWaF02lAG/6NGR87Dp3kC1RLodXeutD4LY0xpJZvQpj+b2tLXp+PiuZA+KQO/rbE8XOX+1sh3HpOiWAjGNptNqFQq0Gg0AACynVZpmmbHtSbJ4rE1tVrtEhE2RxBiFY1exqg7h41GySmiyY9+o0Esh1XRKztMdErGDDp5TMcP8WOzMLjFjzbmR1W5grC2Z5Q236CJj6NvFSjTOIvhJAsZP/R77XcuPpH4bzabiTyUxwCX6KdGmSmNb56h72z1iSXnNUao5JSSJtoiguBSf2gchj4BSFeeMY469RljpiCG9L3kIOHfu+roq7MUpWOsWncqG2K0syQvY+UngfO5LSin1fVomVJaWxm+cDnWtXorfR5LR6TBbCmPEGeq5rtQuOaUInS4EPlqehczIEtB51PUvWlQK7QMF5/hjsh6vQ6tVgv29vZgNpvByclJFoRFOqQ7dGMitjOwCPjoEGhbxRxLeediKoM3NjZgb28P3njjDeh0OrC1tQVHR0cL9NsWy5rocekqNtmu0WVcZYaOGamv8srlUNAFj9VqFfb29mBvbw92d3eh0+mIJ065eE3r38BriiaTSeY3CL2r1Qd0LgvNn9t+mnzy9FWeoNhVQUjgVBMw0eomNjkRU/Yj3Sa+cZUVQqdP20p0mNpa0y6cNikfV1to6DeNaym/er0Om5ub2fv5fJ6dLDEajawLZq6zrZhXhw0pI+8Y4/4hn/JNfYm6qG8eFBJNmjkglj3JcdV5NabPUfPeZLOukQ9FtKXkj+d9femY4lqtBnt7e5nRORwOYTgcQrfbXdgpi5hOpwv3dGBggFaKr8oImTSX4SwrC5at2BblQC4LNPW7ceMG7O7uwpMnT6Db7War809OTqDRaMDOzk42Nvr9PgwGA9G5iuUBLK7gms1mMJ/PoVariYYS3XmCgV90AEj8YAoq4N9r4Vw+2E4IwOeuvkuSJNuJiE5C7pBY9b1CJoTIGVN7+BpB9BtfYJsjuEOG3p9eZCBOypv3PXca0jbnxmAsGYFHvCOk/JctjzQy0/V9SF9q+TKUrjUuUFZ9JYYcoLtvMChl4hFMa5P5pnch8wTKOml3Yd4+sTkYbDZDaLmhzrtY0DjTTO9pW+EcsMwdhcsGLqTk85mEl02e+gRtXPpUbDQaDdje3oazs7MFBzIPRhShK5j4A8fLdDqNOmb4uNRCE/zUBJYlWvBdyM5yKQDtU0cf57HpewzC3rx5E1599VX4nd/5nYUghfRNq9XK7O00lRdHusrFXbCj0QiazWZmcxUhY30CDD5zHbafbxB3jWKQR669bHMawjR2bQFfns4UXDbB5ltz0cC/045ttBt4nujjefbsGfR6vQX/4HWApo24nrCMBTE+MPELPjfRG7K4A8But/H2lHgK8+Jzg0uv9p17ON1r+IPy0npuLic0i6lonMcE8c5YPBoG4GIwTyYTqNVqUKvVoNPpQJqm0O/3F1ZWSILCtJo0D1O5BMVVG/g2upcZlJWc9LbAUKhxQL8tEpw+WqZ0zAWugm02mzCdTjM+Ho/H2YSGY0MaUJq6SW3GJy1bPjEnw1g8VeZJIiZtoWMxpHxNMB2VLq58mfhHM+Y0fOIzhm1BuRCngtQuMfrYVy6h45sbedoFET7OU3yfV86aFozYaCtDAJVD21cx5k6p/fBvbdtoDXvpm7LK1esC07iytT/nCVdgw+Rs4DqIbYxr9DFeLi1fC0nWh8gAnwUJvuPIJRtM8wRPJ/2tBc3f1G/auvkYcvy5KQ9Jj+ffmPIP7fNlQNNvq6Sdtp22z0x6moYvTbaD9J7T5wOfsSc9x0CWjU9j8p2P053qRfV6PTvpy8dJyfPU0GeSGZwuV54mPvNpSxMPSvnk5aFQ1Go1aLVacPPmTQAAODs7g7OzM+j1etkOeoTtXlXt/Mn7olKpwHQ6hclksmB3hdofMewWjX6ax35bYxGhdpjruUu++up8PmnKZGOEyCwb/SG2F4fWbvaBadzSOs3ncxiPxzCdTmE2m8F4PIbJZCLOoyaaywaTXqqxe2yIoWfb0tH5kKeV3knjW+PT4OXFgIvXTLRIddWOAd+0GqzKz6zxk2n1QpvOl4em6zCXlzmOoIGPvWaSJwvBWOlsc0Sn04FOpwM7OzswHA7h+9//PgwGgyz9cDjM7ldB4MpTl3PKxkxl3eW1TCyTUWMP7FUKUSwX+RlXZjebzUzB4bh9+3bWBpPJBB48eLA0mm0ODdcEl9cR6wseiCojTM4N07Oi4XKOciPaRSPeIxujHnkCQMtw4God7Zo8tHA5wnH1favVgjSNe6+dqUwOKtt8UaRjRpsn9ok0NsooW7SKt0+bLttBVta2XQXyBEM07YgymjqMK5XKgg4S0u9clsXoU8nANDlQfEC/5TpDbJnJ581Y7SI5kFwBWRoUWMbY9q2niX7OW5L+eR0cADGRh8fKyBuufEzBSvocZV8RZcZGtVqFW7duZQ5wfjcovZ9PK1NMbRVTTnP4jE1p3AO8kMlchko6JqdlGbvznz17Bt/97nfh/v378PHHH2f0uvhNE9SyBQaePXuW3R1L75oPqXOs8Rg6Lxdp5y1bv1xGedz29Amu2PL0/caVj887bd5cf1s1fAPQsXVBXkao3mXSGRuNBoxGI3jw4AHMZrNCTnAw+TU0gc8YbaidP0PGEs9DS5MNPu0f8+omBOc7H/s0b7DaVVbMuczkpy2D3MkDH/rzzgVXsa0kGV32umhkpQmSPFkIxj569Ajq9TrcuHFjwQhpNBqZ4xkdDDdu3IBerwenp6eiUY9/06NdcGKn6aTJzVRpzSqU6whT8DrUSDUZbJLQy2sIS/0T27g25WdyGEh0jUYj6Ha70Gq1sgUFaZrCxsYGJEmSHcONx4Q0Go0FJclWFzohUiNfCrj5KPyu9itSmF2lcWfjwTz55eVf19hwKWBFGNRSuZwuE71Fg44XHoigtHB6JIeTbfGCJEeo3LA52ULGnGYOlOgIaXOtzLDNsRo5mwcxeYnXx6deUhpXWTaEyKHQfval42VH7HZ26QP0xxXUy0NnniCqC3nlnY+zwIZYeo6rz0JoMM1ZPM88gYJY8HXc2OZJm32hsfMwyCGltbUjTyPJeJtdUKlUoFarQaPRyK4UQTu20Whk10OkaSoezW+qjwnL0Ju05UiOryLpk/qxyPJoX1L522w2odVqLQTztLqAj+yhbSvppNo8TPRpv6djo6j2NtVJ41yl7/DIf7preTqdQr/fh+FwmF2TJS1KDaknpsUrhdrtNrTb7YWrg2j+Pu1n4h+feQHraTp+Ult+Hkdi3rxjYxX6rK+uHzrO8vRDiJ7oeu7rg43VNz7t7WuP+th9eeSvS+/h98DitX+xF7i46hbybZ5vJPkXg29i0aodG5r8imo/m56r8XlJz339TT6yR+sLWaZsX5YuDuAeg1J7h/DbVcMq9Yg8/a+x0V39uRCM/dM//VO4desW/NZv/VamfLZaLWg0GtDr9WA0GgHAxeXi77//PpydncF3v/vdS8fEIPjdl5iOrxzhBopLycX3612z4cDAIgUaPatE7ACiNr/j42M4OTmBN954I2uDWq0Gr776apZmPB7DYDCAVqsFrVYLTk9PYTQaXVL+pGOQqZE3n88XAr7Iy6iE8CNQecCXC2zNxFdEgOMqoSw0l4GGUCzLKcwhOZCKdtwhuEIK8GLHk+Yu9GXAZbxw3nf1Y6ihGTMgEpKXyyjRls0R6mj3hYmniyjrZUGeYGGeb0IdKBL/cwd2Hn7W1s2ka/AdY775uuihOr2vs7uskMa1qz+XNb+tAq66oc4rnaqkgSmA63L2YGCu3W7D9vY2dLtdqFQqmR17584daLVacHh4CKPRKNvVXnY7VCMDXbxWVB0lOaOhJwSVSmXBvsUxuLOzAzs7O8F11Oqjy9QPJZ2QtjGXs668MB1N6zsP+fZpmqYwHo9hPp9Dp9OBdrud+ZEwEAsA0Gw2odFoGMu18RTX71H2TKdT6HQ6cOfOHWi325AkCTx48ACGw2H2bawgCb0T3uWDqdfrUK1WYTgcFjo/rsrWk1AW231Z8BlX2nYJtac0z1YNH1kWEzaZ72Nba48evq5jgMsxU3to5C1fTBWiR2vlah75G3PsSrpTjHt1eb6+yDsWr7vcD10o4oPr3oYhKCLGBGD2E3LfCf2GYiEYm6YXd8F++OGHsLe3B6+88kqmuDcaDUiSJFOOuUIPcCEsJ5NJtlIR86RObE6kVCmahleWGwMmY85U4bLCZTDQNKH5SkFDLrRNfbAsh3ARggNpxroiH9ZqtYWgdJqmUK/XodlsZv/To4yn0yl0u93sf80RezyQ5JvWZOj79oc0djQ0mfK6aigbzTHGk6TEhuRPecFlRMRqRy6LNHOBpi6hyjd+q82D05wkF8e44aQb2q+u9qfywCdImMewNvWVT558HqJKSshYiMEvlBZOo5QWf2vGiUSjDZo2KJsMuwoI6YMQ+PIx6l50HEh0SOPdxNu+RgaXXyGQaOU0uegyGf1cXzG1U1GOY60ThCMWPZo24+VK/JSmKVSrVahWq9DpdCBJEuj1etkReJzuZcBUN5O9EgM+wTITT8Z0ikpBKlfetjqsyt7lY5Py/2QygV6vB8PhECaTiWp+K6oemD/uNrp9+zZsbGxAs9kU+5n/beubUAcnlY+heqtEs6lc+r+kI1L+5v0h8aumbNM3WpoleSr5gfD4YNxR5kML5w36nI/5ZS6+oL4zn2tpTGNJep5Hnml9eHmwKr3XxZu28YDQpHF968Iy2idvGXnGv5SHS+/0zU8D/J7LB1sZLkj+PvzN/TIvs/3n8meE9kMIT7hka0i5tHzuI9HkLfll8siPkHbxabtQuopAqN8phD4Xn/r0Xez2fllgsp19oZl3JHluQo0/6Ha78N3vfhfu3bsHr7zyCgBcEI+7AU9OToyrLvDScTzOCb+lv2MyEFfIuZIcYuBcV2CQAIGKPWWSNE2zY4EAZMcDbdOrNNCxbogkuViByu9jaDab0Ol0AODF4gKs73g8hpOTkyxtrVZbuBeMIxb/Fe2kWCMMRcoXm4MeIQn4vDQVwWtFtZOUr0S/b5DClA8vkytm6Aiiu8eKqLepPknyYoEU300f0gax6OJptAHQUGC7m5x3CMnpJqWVnM2x7mo20b7G1YON/3m/UueqS1GXArI+ZZtQhCNVcpLn1RdtMixG/r7QOCqKkreSk06a63jZePTunTt3IEkSePz4MYxGo+y4y2XMD2u8ALa5zbHL05cFJn7H3/Tv0WgEp6en0O/3M35bNSaTCUynU3jrrbfg9u3bxnanpxXFvP+Zj8+iZRjXU4twmsam28cJjeMId43OZrPMbtfShYuj6NHjJuCiy2UA2xaPaV41fPXT6zyvaNvClkbD5zGCPz75mtLZ7O3YMNluJv1Gk1+obeUTmKLlhASgaRmmU2jwWZl0Ai1i0C19H4MPXf3mm1do2Vy/j1VGnnw0vsjrjmXPYy9Dm151xAqaAwjBWA4+KVKFcHNzE9599104PT2FR48eZc/x2JV6vZ4ZNCZjw3QUlclYwXdJkoi7OrkgczlkywbbZMXbUGpTmwJAHX+YDneB4nG73DFDd2/QvGIgdt/4OvbRqV6r1TKn1JMnT+D8/Bzu3r0L9Xo9O6IIeXk2m8H5+Tn0er2Md22OeZMih0FvOj5439jysdXZpDCvg7r5wY1Ll3JpUmJ8HSJS/+N45ndya/OVgk6m3Vo8HafHxVu+SrjWOOVBMhP9Ps4uzZiimE6nkCSJ6CzRKPihQQ/aD1Se2L7R1j8PH9nKp3+j7KT5SUfnayDxozT2TI5kTosLJsespu0oL0p8KcmJq2p8X3cU5UQP7W9Jpmt0Ey3P5qXPlW8s563WgeYqTxMMMJUh5S21Y9n0Ml86+BzsC5ND2tR2XK5LzloKqhNwZyn/djQaQb/fh6OjIzg9PYVerwc3b96EnZ0d+NKXvgQbGxvwl3/5lzCdTqHVamVHmkqQ5rtQZ3JMmOYcibY8/crz0KbhfVTU+KjX67C1tQVf//rXoV6vw//6X/8LDg8PYTgcBgWNTXoz0u/SL3ydoiHA732P2LXZpDa6XfqNlGeSJNkO1fl8DpVKBcbjMZyensLPf/5zODg4gMPDQ+j3+2J53W43u0vWNNZt2N/fh7feegs2Nzdhc3MzW5wd8wonStPm5mZmO8xmM+j3+0a/wng8hul0mvnYTLLExIP0f5PuYvq2KF2nrHC1YYy8bXNBqF5ShB7B54TYc5jL56lpLxNi+IE1eqBmnjLlw/04rm/KoitqYOIXSS7b/M74jCPUrxbKv5Rmk87qm7ekH2pkA59Xpes9pO9swLnBpCP4+vGuEq+aYBuDIXzkkhVa3+MaYYjdpjHmQmswViK4VqtlBVerVXjjjTeg2WzCkydPssGLAoGmlfKVHNWm9JKxpqGXomxOj1igBqtNeKOwpoK/Xq9DkiTZ/UfcmVGkQmrLN08faSZnyoO1Wg3S9GLn7NHREZydncH+/j40Gg1otVpQrVah1Wplq2dns1kWjAVYvOPAZrRi2+JEh8ETyVC05WPK2xRoMH2ref+ywdVOeRGzvemYN8lRF1/y5+j8MDmWbHI4hsPOJgc0Mp8qsxqjyDZmeJkmGjEQKgVjtW0SSi81VlGe2KCdI230xJDV0rwiKaD8uc+40TiZQpVeV9to+JnPtRJN2ndr6JBXB1yGDmkbg6HlUt3D9ztT2bbxY5LVGhqkceED05gLkSMaPQzr5ENziB4QKmdj6BomWaWB5juNvmKjyxVAcNGFf4/HYxgMBtmCy+FwCBsbG3D37l149913YWtrC/72b/8Wzs/PodFowGw2cwbuJKdjGcD7VOoDrltqdCuanzT2bPTQ8ml5/HkoaB61Wg06nQ584xvfgOFwCH/0R38E5+fnAACXAuw+vgUNf+PfUp01MkfbniF+Elt+SIvNUWyDxk8BAJeOGh6Px9DtduHzzz+H58+fw8nJCYxGo0v0penFVVuz2Sy7R9b32pC9vT147733Mlo2NjYgTVOrfh8ix5GudrsNrVYLAC52bXe7XUhTeXHgeDxe2L1r8rFx3sozH+fBy+BX8B1jq5oHNH3h8l/RZxr7KgY0epvNZsrr03HVg8rDUJ8DQLw7qMsKyZbR8hT3c9BvfCHZV1p9htJt4q0Y+orNj8B1Bc5/pjrhd9K84lt/nzqsYg7gfWV65/q+CJpseWv8UWWzI64C8rSZi1+0c4yLp4zB2IODA/izP/szuHnzJty8eRN2d3eh3W5Do9HIjiNOkgSazSbcunULfu3Xfg0eP34Mn332mbEwPN4FdxKhwpmm6UIgN0mSbBUipqWCxrRCJk9DXFeggx7rjwYOtvdwOIRKpQLtdjv7Bo/5QYQYHGWGtOpKAn/farVgf38/M9g5fCZ2LS0aBfe69Mt1Bw8wxXDeSk4cXyXIpbj4Kl+hDv/YfKw5AtQXRTpVNW3tSsNlUNHOlpAybOmlo/NjgjtNk+Tyblyelv4fy4BHaOXAWgG/XsAFHM1mMzs20+Q0psY/faZF0XqwRu7zgI5mFzp1MiRJkumu0hyVt16SM8OEZdgVJgcvd76Y6KHyE+0sk+N+jeuPWEF5LarVaibbDg4OoNvtwng8BoDl3rnJ4WqDwWAAT548gdlsBp1OJ/NZ4E5N06IEH92A5oH+DGyTPLowLhbmsjYEMflFmr9c5eLvvb09aDQaUK1Wrd9QnxQALMhyW5AD56J6vQ6z2SzjUQCARqORHQ/M/SF57YD5fA43btyAzc3NjMaTkxOYTCYZP+Ai8fl8DsPhEABeLBJwXZPhamsTjxRp31wHrGr+DO2TvLZFkiSqe5iLoInK1BjtnpevfRd1mMB1tOsehJUCrDY5I8mj2IGpvPwUU4cJnU/Qd2ybGzXw1V+0eb4sCPHlaubnNcoNbZ9T/d4GYzC23+9nKwxrtRq02+3sSFuq6FYqFdjY2ICNjQ3odrsLeXCFz+T4lIQBvaNFcjq4Vn9IDG/Lr2zQOt40A5syAnV24xFblUoFms3mwj2/eAyOTzkxEep4tOWDebmCYmh841FH+E21Ws3GAT3a2JdGWwBN4nFOm1QvG8rM52WDJujJ04aUERKQ5fANDklpJV40GekU3FiS8rTJ5hC4+sbkJPdxkkn5h4C2TaxApQam/nAZM7a+Mc2jmjSmgKZrUYmWXv7OZsBLuoGNj10w8bfGSWabW5cRQDdh2fP8qrCKNqZ9P5vNoFqtejm68vCqD23S/ERlGedVH/g65dFZjraDb/matuLBXNs8yPO06QU2/VLTBi6ZzN+b0mN59MQLE+0auOwRmrdJ/mvyziOLTG2g+Q7Hp3SnuIb3fOgODeLFTKuhQ5IFtrzQSYinCI3HY+OVN6uc6/CeUFwQg3fc4hU1CNMOaF4fmjdNIz03pQ+BbUxz2W77XgOt/ZJXzwe4WACNp1IlSQKTyWTB7sb0OGYRvnwl3QOLAdHpdJqdHBaDX5HedrsNOzs70Ov1YDQawXA4zIK+1CemlUf0Hf3tS9uqEMvnEwOhdrXEH1pbUCMb8ujmGruew8Rj+K1rPoxpy+bxH9hkn61sV1v52no+74tGkfoEwqQ7h/RF3rJNefrm7+q3kLZy6asmfozlqzLRYaNRkx//dhm+BZe+Y6tHDB4PyVPDj6ueE68aYunUmjSuPtOM1YVgLD2uFXF4eAinp6cwGAxgf38/yzhNL4JTOzs7xkJGoxFMJhNotVoLCmK9Xr/kgOLMOBqNoFKpZEfNAFysCuRKqanyWudwGeFrRNuQpi92IlerVdGxlaYXR/tgsBGPb+J9FGtlnC+KMtjpDutarQbVajXjsQ8//BDa7Ta8/fbb0Gg0IE0vjilqNBrw+uuvw61bt+CDDz6Aw8PDS3dG+ihZmIYbWq58+OBGY9K2u0ZyjK2xWsRQqOjqfZ43gH8/0+Ozms0mDAYD471oa7xY7IJyAOc3nzajfBBD3vnIIHpkemzErpcNoYo0v9ee78B7meTky1TXVWE+n8NoNIJqtZoddYo6dWye8x1zIQasDw1cLqHek7e+1HmtoSMWtAGsVQadEEmSwPb2NlQqFTg6OoI0TWEwGGTvbbqIq32l+YYHjPF/nGd4cF1ySPg4QDUOVFMdcXdBv9+H4XAIZ2dn2S45DMzhHZJ4chA9BhVgcaGrFLhxBUliOHVC0pq+o39L9okGNJAVQouvE12LNE2h1+vBs2fP4Dvf+Q50u1346U9/CoPBILN98dSoJEmyYHKoEzlN/e6kLwrS+AwNbmh8D3Tc03J9UK1W4ZVXXoHRaAQ/+MEPYDwew2g0ynxQ2vx8gx+DwQD6/T784Ac/gCdPnsBwOIRmsxlVlqNMnk6n8OzZM5hOp1kZNuDJGniCnIse+l6zE2+tB16Gi+eLarPYugOdm6SAJ15dJp1AaAvOLgua9ohFJ/rUXGVdRSxDn6CwtSX2V5FtaYoJlAEu3RBg0Taj4xTgxbH+eMoDPckBYHFDFm9n3g55doDbArHLAMY58KrMq4Qy8eMadpj4XJpPtXr/QjBWKgBXjQ6HQ/GODtxZCXAR0Nrc3MyCsBgg4Hdr8snU5PzhxjXdLUvfSYNOMoKvKnxWVpgcG/QoAz7xYT9h8Bv7leZjUuCW1ba2ySM0H9u7wWCQTXB0ogO4WK3bbDYXDCFb+/P8JQcRf6/tc5uRK9FQBofAGovwCchy5yXvf0k+mqAJ9lcqFahUKgs7xCVHqVSOr/MjFmI78Gg9pMkWf0uOJ/59SJn0WV4l2dRnkgwrIoBgo2NZfMLLk4IGpqCCK08XTHWUZIArsLRGGEzj1Ad52x+PruEyldKYlxYqk3zHVuh39HtOm/aZRAfOQ6GOAtoWtnJ8Efqd5vsi5CHuxsb2dJWpqZtGfpucbXkcgkXwNO6ARPsVADL9B394kEmyjTTtKNGySrmuCa4h+LG6EtAhlscp5nJO5mkv7OfT01PodrvQ7/dhMplkd4Si89gUuNCC8odLH6fyUNLJaFqf8m3wtRtCytTqxHxunk6n2c9kMoHz83Nxh6iLDpudjOloG2Df4/HBh4eH0G63g64+kcpGn0yj0bgkGyW53Gw2oVqtZjuD0T/jqzvbbD0T3TF0kdA0ZXZQ22gztbMNtrkpr31hS8dtHekIbNP8nRdaP5m23Bi2N4etTzR+SZO8iYm8c2HR8NUN844DU9l5dXUXYszLPryOP3RRK9VLXXRK+qppTGp5VtInioDNj6NJH6v8EGhoKPPcVyYU5aPUPHeNG1eeFOIxxbjDz5XZdDqFo6Oj7P/d3V34zd/8Tfjxj38Mn3/+efZ8OBxCtVqFzc1NAJB3WEoDBVen1mo1qNfrmTFM06XpxS5aU0C2zBPUMsEZBe9DGQ6HWds1Gg148803od/vw+PHjy/lgY4IdFRch8CehkfSNIXxeGytb5IkC6t0896x4aNU+yoA6zFxteHqQ5sDJ2TCaLVaAPDiZAJclBPLcZMHUhAtTV8sLtEopjGBwYJY98tQUMXb5OzS9kmSJNBqtSBNL05FoI5HgBcOoRhtx2miBn8ZFU6sO+4+0CCG40oTkF3L7vxYRhvGMPxi7BqlY07j7AjJm4/v0Lwl3k/TNNNVUc8P3WnnKg+faQJNsWFyGHFHQ+w+XOPlAQ/0FQkMoFH5w+nIC1+5iKeV5Cm/qLlDktOh/US/k46G1oDLdHqilia4LgUsNTSgHoq29PHxMRwdHcHDhw8X6JLA50sf+4Tq1LPZLNsVLdn8dKEGp93lDKa03bhxA9544w04PDwUr/jC8VOpVOALX/gCvPHGG/D555/DyckJHBwciCfv+PQzrVvsYPwai5DGQqwA+DKAGzVwc0IIf4TyVNl4sWz0AJSTJgTKdA6qa9uQt244F63aXy3N56Zxbgpm8raoVqtZbITvhjWV47uIJBRFyzBcoOSyB8s2Nsom29fIjxh9einqamLc0WgE5+fnmcLZ6XQWdqoiQUmSQLvdhq2trex4S66YoxDG7eSaCtlWPNGVXCbBT7FMo3TZsAl3bpjxNp3NZtDv92E6ncLGxkYWUBwOh8YjN2OtOtIA+ctUjoYW14pF5E00zrrdLjSbTeh0OtlKatxZsLW1BaPRCM7OzmA6nS4c92kLApkU7tBAaZ6AbFmV/1VD40jQOJhsfc3fawKs+A0NPobCRAMvi5aHiw4kZwuljdMcSlMo3RJdpucuOl3KK/7EMBo0C0NsY9b1ngLT2fqTppPmeql8TZmaYPEyQOdFKWhsosnWVkXKUs7rZTM01tDDZ9GGSx7GGk95A78anUYrK22BSNd3ofoQlueaU7gNkafdtPLCdw6jzzAQhcdj48IqV17UvqrVauLx+y69/LrCFHDykf+r0r+1fYW2dK1Wy/oYA3Ku+dA0R7n+LxI2PQffY8ABTy/gyBNgttmoGt1Pk07j9KV1cM1BJv1PQ4spLxut+DxJkoWT1dD2CKm/6ZkUEMB5mS5IpM9NfWijC9/N53PodDrQarVgY2MjG1cU1H/VarVgc3MTms1m5mx3tYGJL13+EW2gwBehPo2yIXY9bD5N7TwSMwhBxxzKBV/dS1MGgK5/tTxOIfkGTGl8IfnNQr4tI28XAUmnpv/TtrT5jEJ1KlN+vgix6fPoOC7/GfqfcR6gOg31R3Geo21uGhcue8eGovkb88VFUpJs4nXw4YXYeihvjxAeWOMyytQ2MWkRd8ZKODg4gIODA5jNZlCr1eC9996DZrO5kGY4HMJwOISdnR3Y3NyEX/ziF3B2draQBhVqXNExHo8XVnRIAxq/MRkNlA50OJggOVzL0rl5nDqmSYy+n06n4u5ixGAwgJ/+9Kewv78P7777bvb8888/X9gBjbDdc0rLja3Ixc6D0ohtg8ciffzxx7C1tQXvvvtudmR3p9OBdrsNX/jCF+DNN9+Ev/mbv4GTk5PsnmO8IxmdV3nv2vUJ0tBdXVKal9VxdhUQGuBCmJQhHycOvXtYSp8kycJR5iYFLkSm+iotUntJzpGYSiJVfjE/lIOoHBc1tvhiGsnA861rpVKBTqeT9Sce06hBDNnuojfm/GEC3S2TJC/u4aLgin8RO58BFg2xVbbJGnFg42/c5Vl0Ob75oCMuT9lc13AZzXlpxjzpPaRanSkE3GFic9Ktwr7g9hPeefns2TOoVCrQ6/UuraRH2rkOWalUoFarQavVgslksnCFCZbjc3fjdQAN2mn0Ftv4dDm88/Jpnn6ZzWbZqVboBOv1etDr9TKn4HUByr3hcJg9C70rl4PLOxro0+RrCqbSd77HQfM8THSgzsv1Qu7wDUXo3IVtZ9rBaiqHgt675/oWg1Shznmc799++234xje+YZwrJpNJZovduXMH3n//fXjy5Al88sknqiBzTLgCuC8DNGO0bIG2kL7CI7Pxii4AyI7S5liWDRLTHxojn9B6l2nsrEKf4H6ZovVk3FBDN8iEIGa/aXwdLl0ySRLY2NhY0NFpvMO0yBK/pdcV8o1woddJLNPmSdMU6vW6KJPwfYwTpYpAWeaGNeKC96spvkYh8aY6GEsd0PP5HI6OjrLjjJvNJmxvby8UxO8dQEW0Wq0urAZEQ58KEF6J+XwOk8nkUp4uZzzPy/SuLApnUWXT+tH7ewFeOFGw/bkTLU3T7Hhp7Pvj4+NsJ6itrGUH/WIFa7lTcTqdQq/XW7gbudPpWCd5KShkM6gl2AazKS+k3zYOtGWs8QIhMqIoQxn71+UINgUmTTTxIB8ubKEOC5tC6RM0jpVW6heTo5zni2mkMW/6jj83tYPJ6Wr6Rlu2iQ78X+M0QCMFd/mj8kADjTyIIgV+8W9fuautW1HzsmmO4kF26RutzDbxbdHOszVWAx/+lHRYSf6E5G2CafxKtLn40zZ+bPmannM9SgrqasZMyLiS5FeIU4Lmo5k3TOmK1pdpe0oyzUaThjZ+WhKWSf82HYFP522T/mrjNczPNve6gPyIu4fptQO4QBMD0rVaLVdZ2rR5eMLlKLPlzdvShw+KQOjcyf0Q2L/Pnz+H8XicLSKniwxCxqZvoMylU/C2L0oGavIrIrghyUNeHvp8bHY2lQnSMcoafsUjgbe3t6FSqcDJyUmW12AwcNIegsFgAJPJBMbjMcxmM1H+Yd3RD0GP/6aOdQpXX9lsH20ea1xGaJtJ869JB9H2rU/Z+EN9gKbyfK5w8OWrPGPKVJZJjuedR2x2r0YfXiVi6xPSe0kPM+kPmnZy9RnP27RY2se/4gOTr42XLbWLD+9K5dmemeDjf9Omd+nmvpBkD114hX1sunqC+0jR95WHJp9vQ+3RNewoyofmyw8+fmLNe3UwFoGKIb0Tdm9vbyEYKyFNL+6mq9frWXAP4CKwVavVYDgcGld04G6dZrO5sCLCtgLE5TB+GZjeJOTpivd6vQ5pmsJwODQKtBs3bsCNGzeyY3oHgwEMh8OFXR0hTvllQTuxmdJMp1M4OTnJ3vMd4ab8QhBL0EiGbujKpzXc0CrqsWBypNr6mQbVNDw2Ho9hPB7D1tbWQkA2r2K2LNicuxxaemkb8nLw71XUmRrVnCaaBgAyJxMujmq321kabjBI98fTvDCtj7ObHgPvcv4X0ZbotEPFHk/dwHnRtCvcpnxpjm1EFFWvNcqJ2EZZKP/E5Dl6r18oqMyiBjaFTzBWUx7Plz/Hd9LzvGWbHK0mJ/9VlBFoH9K5l8/DPNhA+5g7T2geaZpmpxZw24/myx0upvnENPdUq1VoNpuQJEkWkMXrWqrVKgyHQxiNRtBqtaK0WVlA22oViOXE499TvXg2m2UBvs8++ywocOdbvu84Njmxfb6PUQ9TMH4ZcokHY/E0HtupZ3TxBMKlEwNAthu63W7D7du3IUkSePToEfR6PRgMBtDr9SLW7MXmgpOTk+yuWNM1UPSb2WyWnWhAndKrnieu+pwVA771DnXghuTpAp5wMBwOnT4i5Lu8d29roVkAsSyek/TEsvo8Vw1Tv+Xxw9vkOF/MGXIaoY/er/EnmewNWpYPXdJ3aDtpaPf11ZQBtL7VanVB58a4EL0zNkkS8eh/upFv7QdfIwa4jmqDZsx5BWNNwnAwGMCDBw8upd/c3IROpwPPnj3LlM3ZbAaDwSDbkWOqiKTgoQJQr9cXlFEURmho1ev1S3cbaZRy+u6qCiyftLSOtM16vR7cv38fdnZ2YG9vb8HRUalUYH9/HwaDATx+/HhhF5V0jCbFqto0ZHJFnkIj6Pz8HOr1OrRarezu5EajAZVKBe7evQt7e3vw+eefZ5MD7vhG/nbtIkZQpz415F19bDKc6be2Z2UInl0VuNrOJs94+/rIG5vz2Od7F0y04hHG9Lgu37w10BhgsRASRJcCstpybN/R/jW1p+TIttHI8wV4cRoCBiQxGIvH2APAwl1dtrr4vMPndJ7AORxX+5vq6gONw50GfxqNBtRqtWyRzenpqRgw4cEBW7m0LJcs5gEMF66SbvKyQGsM25673i+j33lZLme8SxaE0GyTj6ZxR50SseYik3w1yRRb+8QCDUxq5mCqm0+nUzg+PgYAgNFotHLHTEigKjQ/Wz192iCEXskJVjY7U0MHXsFCF+FSXYgeD0d1FNovoTJhmQ73mH2itYHzBGfytK0kL4vQQ2xpuT3hOx65boaQTlKTyqayNEmSzIanO6VjwDR3HR0dZbtk8dnW1hZ8+ctfhnv37sHXvvY1GI/H8OTJk0v5uK7LsOkWLr+bBjGckLbvVuWPCNHj6DvbPETrRu99BHDv6AuhV8orTdOFeyc5ms0mvP766zAajeDp06dZWrTffPslj3zT5O3SnU3PivBh+NBynaAJdmnaQOIJaZ7i6fLq36b5RzOHu/jbp+9NPNlsNqFWqy1cpYdtjX5qU9vTuZC3pa/N5GufxQaeTIObCrBMPt/TIDW3m9YoN2zjRut/CCnPRQMvm/7Q95JOzscfp9l7Z6yE4XAIjx49ulSRd999FzY2NuDk5CRTbHEVIjo/JQPCJIxxJQS/wBmPi8J3jUYDxuPxQj787+s+MWpA2wDvN51OpwvB9d3d3YVvqtUq3Lx5E3q9XmYc0Lx8ldiyCEY+yKjiiStS2+02tFot6Ha70Ov1YGNjA1qtFrz66qswm83gyZMn2VFmuOObOghdk3psJZE6Snzqv4YfYradhgekseajZJicL5IyKk0+fNEFLd80cXG4FN5VKE2miV1q71CnhYZXXHWX2tpUJu8PDFpUKpXMqYp3XKNTDB1URawgpG2JBj7AC6eYrS5SPq6yJEWJOt3S9GJxV7vdhr29PQAA6Ha7wceE8bJN9bDNl/zdWjZfHWj5EkA/x1Neksa9aWzQQIg2KEDfa5yCJqM+xLFO87E5ZFxyggaGbOm0jiHXeIwdwHHB1AaS7kDbgwZj6ZFfEh/anMk+dIa888k/Jn+5vnHB5RRGB7jpW205qwDaROgQxGf428R7vijL3BdjPLvkhMtmNr236eemsl30+bZ3qMyT+pfe6+crX1y2igvol0JZmKYXxx72+30xfShf2uTC8fExnJ+fLzzb2tqCr33ta/DOO+/A1772Nfjwww8XaOBzoU0/LsJRaXoeex5ctRxA5LGvbaDOXPRhFg0alKBHXdP6NRoNePvtt+H4+BgePnyYXS+HPlie3gbJBtPSScuR+iDWOMRybHqyqXzJ2R5C21WH1mag6TXPTX5jLS/Y/DYh/mqTP0GTh8Zng3lxG6bZbGYb0fhmMzy1kueF4MFYTpPLPqR9q5lzTPlo4OKhyWQinpDBZRnqFChX84xHH9kfq84vK2zjlY8J6UQtEy/76LZSeps+H+KL5QgKxiZJsmCQ0SP+aGGPHz+GWq22sJKWA1c20AupTWXSvHFXD/0Gj7ACeBFcHA6HMJlMLgUQfA2X6wZcRWM7as4kpNM0hWazCW+//TZ0u92FoCwqeMtQKpcBKuCn0ymcnZ1Bs9nMjktI0xROT09hMpksVZFGmBQBOmFqnWLLdCiuURyke9vyYDAYwHg8hna7vXDfG90py1eh5UUeXpSMIpsjNBZoeXxcSgFs/l0IQpzjJicKOlsrlQqcnZ1lx7+EGtMmGkVF5P9fUOU6ri0UPooYHluM3xURlLb1m+TcLotTao1iYDN+pffLRlHlU6OZ3/dHF1y64Aps8DTUAarVlUJA85fu+ON9LM2hq+57AMgWuboMUpcOYFrIhXnZ8qF9hvlw54eNX1zOVgq6y+D8/BwODg7ggw8+gEajAYPBANI0zeZHHpy86uDtVKlUoNPpGK8sCIXLLonVnuifQN5A3sH64NVHuFs8FLTdbP4FH3mGf2vloBa+jinXM5qvK29NGp6eO5o139A+15SHuwApv6DNkPdIfgmnp6fw9OlTqFarsLm5Cf1+H9rtNvzyL/8y7O7uLtgr/X4fjo6OoNFoQLPZVB0pa8J1kVNXGT66TdF47bXXYG9vL9O/ZrMZTKdT+OlPf5rNdWgbLitgTOGj27nSab73+aYM/bdq5OFjm69K4+fEd3xxCj7n6UIQGkw2BV9MOq0N/L5UqUxN/WL6EWz8n3dcYN50kxjerW7yEfHT1Yr290lYy4MwaHmX96lmIUEeXreN/ZBykF6pvkHHFNO/8bc0QdPVfibwIwsxOGtbZUGNcfyfGleYlhrMtjpgHhTLcIbEmsxDnEg0QGFbCUCNElpOrVaDmzdvQrVahYODg4XjAnwMII2iFRMaw5g7IhAY3McgFPIhHjEkOfh4m0g0SLRIaVyOLh8n1BovENo+Gt7No/xonBq8HFu5oTwwnU5hNptduiMN5TV1itLfLmhlrKsNTf3A6ZCcWj59r6GXO/f5O5OCyAO5Lt4KnZ+kOYfuTMDd/FLgIG/ZNkhGWcw5wSVb6XMMxvoGYkPGulZma/j0qjoHrirdRcIUsPKRrzZIATBf+kLKc31LecGmM5kCeL67q0w0+r439YmkC5q+d5WTJ4ASCuyDJEmya2V4ObyPXPTTPtbWlZfF85HSmuqj6Wdqz4zHY+h2u/Ds2TOo1WowmUwWnNKSg8AXy9LPXQ406R0G4kOcW3kdIT68bOIN7Cuq16CsqFarWTAWF23nAfdJxO7XkLHtI+Mlmvn32qCIDZKssOm6pgCQrTzq+NK022w2y+5wRXmH3+V17HLeRL/B+fk5NJtNaDabMBgMoNlswjvvvJMtfEUaJpMJDAaD7EoNXk9TWfh/CB+udbJF5BnLUp9QWbQM0PFLx9/29ja88sorWbrJZAJnZ2fwwQcfZH4t25HGpnJcz3y+x+cuf50tXUxIdv4y57qy5G2TrbZ2oXqlT1kIk/7Pn5v8Ylq4+tSVn8lu0eRD/Wk2e9AFKeZh8o1p62H7Lqb9Re9Fx135XHbShfOYB49X+GI99y0PmtgIgvsJJX1dY0tLaX2+kXy7+Fvy39L3Jj9F7qWuWDgaNACLZ5lTUAdvmqYwGAygXq8v7GjFQJdthwxdtcyFrm31CA5cn0mgyEFZtgFfqVSg2WzCfD6HyWQCh4eHcH5+Dq+99hrcuHEDABaVSACAnZ0deO+99+D58+fZMb2z2WzhbHsA847nVcDHqOQTWZIkMBwOYTwew+npKVSrVbhz5w40Gg14/fXXs7t0+d3I2G557tugEw1VPjRBHi7wNApz2fhzjcvgTqfQPtN8x2U6X4ABYF7puAyD0zSufZxJmjJMwQKbI8+nTB/FWKNM2JTSyWQCT548gXa7Dfv7+5fyw9WGtVotWLk1KeyrWLnIMZ/PoV6vQ7PZhF6vBwAAt2/fhvF4DM+ePcvodDkoOWyGI4XWWMPvbYrmVZXXV5XuVQJ1CtS1Q8dSXkcN10MoJIMlpKzRaJTJHpPugvnHgotOrhfShaRFgdedOxy4o4UagPREC58AxRrXC0X0ObVLXGUXzXPI33mPpdMgjz6Jfgrpnjct3ShvJF0kNGibJIm3HJOc4L405OELfrerT3CEyswiTkBBYH/XajXodrvw0UcfwdnZ2aV0jUYD3nzzTbh16xa8+uqr0Gq1rLvSlxXI83FwruEGjrVltyXaOxsbGzAej2E4HGa+OUlmYtoidoavEnkCRihz+YJlk26qKes6+Jk18hN1BOrDdMEW+PCxlzX5+wRLOU2aece3L5IkgU6nA41GI4uN9Hq9S3qDie/Qb0P1Ikxv2/gWgph8hnRLuHv3Lty5cwcALub+Dz/8EAaDAQBc8BUe5Yz6VR5dcBkLO9aQ4fKBavs09jzLecKmd0vHKpvsJFUwVivQqKHvyocLAyloxMGjz9wJZXIIoaOE5sEbxEeBXxVsE4XWOWwLlKCCgf+Px2MYj8cwGAxgNBplQo7mV6/XYWtrK3NkU2WFrmrhDiKaB6chBrRCVKLH1YZ4bAK2+3g8zlYOUqOJ34XDhYJJyZDK9QmwmOD7Tew+KStswtWVVnoWO2CSR5GICcoPGoXYNJ4kPjTxWlHKkC3PEGeOBMlJbsqft0nseptkyHw+h9FodMnZg44jyVkYAlN9aGCgqLnXVjb+RplOj2S09ReHjxMyb9/axo+NrjXKhdD5FccLn2dW2dcheqfre6rn07x8yte+p/AdvzwISiEZXqZ+95GBLnljs8FM6ak8lOilthrmQXV86VtOj8ZpRe0F+q3UXpq+4jT4IEmS7D6u0WgE0+n0En2muqx6TMYCt9FDoHWMYnn4TYj+LNmatrLy1s/XEWvyddh0YpPdwfOm/7vGJE/vkilafvbheZ+0pjZwjXGp3aX39LeLLp6nq20wT/RFdbvdbIc9/a5SqUC73YatrS3Y39+H4XAIh4eHmbNZ4+vRzIU+/qKYMsw3v6voj6OI0XZaOWYqj36Pvih61x6+p8FFevQ+bpYxBTWW5TvV+mjy5h2Sf9758apDOxfR9zZ91+e5q919x6DWzqdpbfxjmu9d5VEdG8cmHtPL4xk2ermOTvPO4580zaMhPmaeD6W5UqnA5uZmdoT65uYmbG9vw2QygfF4fIkOunAkht5aFHz9zNcNGnluGlc2eWObozTQzrcm+aXlN54u185YE8PgrkgcCLhyEQNYOFjwnjh6lHCj0VA3HB6hgbtycdUHVSo6nQ60Wi04Pz9f2G27LAWi7KA7n0x4+PAhPH36FL74xS/C9vb2pSAjDdKagLtCsQ+KFjQuwwhA56gxpaF5PHr0yCn88T4OjWNRUw8aLHHtOr7uQj02bEqii09W3da2ScL1HYDsmIixm3uZCG2DvMA5jx5xa3NySUYKtjdAcTxF70xL08X7uFCu7+7uwvb29oIjyISQvsYTFOr1+oLyHRvYlqhzSHdTHh8fw9nZGdy6dQs6nQ7cvHkThsMhPHr0CNLUfESexjFG0/GVrKuWFWtcPyCvSUa2j5EgySV8F4tvUUYCwKVFfr4n2NA8TXoaTYPvYo5B3va1Wg1qtRpsb28DAMDh4WF2zBb9piyygM5dAC/aDoOReCLMfD6HWq0G9Xo9W7GP9hWvm9TGtJ1MASjOF3wXsHTME31H8whpB6xLo9GAs7MzOD09hc8//xyS5CI4S+8Vx2+k+tA5h7ZHqF5VNKjuRB0faGsDQGH3uhcF9DlwoB5AFxLHAG27vDKG5iU5VWPANh4leqQ6Fc3Hofnb5kPbN6gb+5TjQr1eh83NzYVxNB6Pod1uG3ce/tmf/Rn81//6X7NdtLizAvvKx4+grQ/KLJt8xr+1OjDN+7rCJyjE2wEX+RSFNL2497XT6cB0OoXT09NLOt6dO3eyq4gODw8X5jjclBFybUsM+ASxTMirZ5Vtri4DXHMG9ydp7HxTfjbfKV9QECKLtHXRQpKdIfPmcDjMfDTUZvJF0eMxBuhVKGmawmg0gldffRX+3t/7e9Dr9eDo6ChbHPLJJ5/A8+fPYTweL9BVhhPXNAjxM78McNV9VXLYNn8DvNjNTfmRppd8jwvfxyIOwDzZSQY6/44a4Vy5c03EtFzqBKc7EmkekrPpKoPW31UXSQBIxiNVxtFxzo+Hpu3abDZha2srmzi4M0WizeYwjN0nLsNBuxpCemZyqnDHois/nzrz/jIZnSaaTDS8rHD1hcnRpkVIwMrnW8oPsfqU5oVBqTRNg44iNrWVz3g3tYPN4W5CjHJN+YQGLqgMN81vvEwNT3D68J1JaUXnZcj9iz4BH016l7Iayuu0TXkAgh4tz8sw8Y3UZwitcWDrz9DxXZZAz8uCvHxp0xPQoUaPYqIL3Ez5aHnG14GhGR/acvPoX5pnvtDqU9J3XDeTjrNzGXaadzZw+arNx6ST0x/6jjs/XPImpD4amzJ24ISmRfsHgfeq+5RlqsOy9G+fslxjyjUn+zgLY89PSBvKR1ywShecmb4pEpJTularLbQV17dtsNmb/H0MPrOVp9VBtd+6fDOmeUfrj6L5SPKuKH0JfSkI2/GJ8/kchsMhnJ6ewpMnT7K7jblOHjp+XG0HcNmO0fgWrro/QeOnyZv/svRxie5qtZr58XZ3d2F/fx9effVVuHHjBrRaLahWq/D8+XM4Pj6+tNhIK9fz6iyx8w2Bxk921Xm9COSVpya91eSv1djjNh8NzV87p8aUEaY5m+fNF4S7aOW6OdaP6/Muunx8er5+CVN+dAH9/v4+3LhxA7a2tgAAYDAYZAuSptMpjEaj7Ht+BKzWrpRoCIHPXPwyyY48Np9p3GvGTShMeqH0N/WF2+SCpg0WgrF5VhSbBF6SLK4yRAFhGijcaPLtyPl8DuPx2Gkwm3aEJkmxd4eUFdge9Xo9c/hNJpMF4wFXcgIsHneSJAncvHkT9vb24JNPPoHHjx8v7FrWHtVWpONYY9S5jED6jvIJ/x+fobE9mUwyfjQJGVe96cSKwYPpdJoZaQjN+fh5HcZrlAsagR+jr/v9fnavNPI8Opul+yfKyl+hu644TO0uTdB8zPmWbXOImOQmGtCmoCpdMEPppAp7kVglf2DZuJvZ12CMkd6HF2jaso6rNYoD5ddWqwXb29vQarXg8ePH0O/3VXmYZFER0PI2153oDln+resEkLyQ5CHHKmUiH/vUwULbS9qxuUwn8BrlwLL72+Yg4TubKWLYfcjfaHfevn0b2u027O3twenpKXz88celGgN4FyM/LQrbiNuSruB/pVKBRqORHWNIvwXwX2gjyZm8cAVtTQvxbToPbSuJfp8Aj+0+r7zA4Gq3283ostE2GAzgwYMHcHx8DAAAGxsbsLGxEVX/8z2la41FhPQFLsJAaAIjeWDL9+/+3b8L//Sf/tNssdiDBw/g4OAA/uf//J/w/PlzmE6n0Gg0lmILmuC7mMKWLsYcs7a9/BDS7q65Rxoz0skXoWWuMg8Kbof4xCVwQTm2C92th8f90nJsKNIvj8CYw3g8zmjb29uDf/gP/yG02+2F8vG0U9whC3AxNmk69LsvE+t5NB9WZXObaHD5MOgubv4N/V+SV1Kel3bG2lYA+TgNOTSVdK32MJUn7UzkwhmPQ8R7OhB0F62N/jLAZliFOvltZXEn/fn5OcxmM9ja2oIkSbLAH7a1tGqTgwfiOd3LEPy8vJBvuYMrTdOFutF20xp4Lv6XDHUpwKtpP1qHMvP8VYSPfCsbpPFH+cu0UinUYKOBP4kX+Rij30h5cbpM723peHpbkFmSI9z4cxmDLrpN71yTuw+m0yl0u91MgUc5ww2AouQFDTbZjvLg6SW4ZDvKZC5L8fQHPIZyf38fer0eHB8fG/lbmrdsjkPpe4lXTNC0fUy+WCMeYvQFDbzZ8uNzkG/Zksziuk0ofBzkWpgClS7dK0ZgWtJlsexarZYd/VepVLJjil1BBhONMRyKlFYXsExc5MoDRzSAQedwU7tLxqlp7jQZtrweNp1Eei7VzzZX4CkJea4YkfQaqT6xoe1vEx3Yj+jMS9P00lHbZdJrqV2Gd60t49g6m96M7xHS4jfTd1I5seGjb9h02Dz6P5bl42PSzkd8DJi+Kdpe43IPj7GfTqcL9wCiTOV+LfRf0RPKKJ0+MsTXftLywVVFSN9rbBD+LERuasaWqz/41XH4rNVqwWAwgNFolF1DgAGRRqOxEPAwlVW0/A/RXfnfmna36RQ2WnzSXheYbEzfeYDrQdr0/Bmny2UD2/S+MtnP0tylAc4hfH51laOhBRFj3FP/OM5r1Wo1263fbDazXbBJkkCz2YTz83N49uxZdn0WP9rYl7ZV9/F1Q4z29LHhXHlQunzsX1oPbkNwHwzaRVzH4+XasBCM9RGKJkjGspSGEkgN3ZDycQUENXK4M7fT6UCapnB6epo5FLAB6XHGZUYMZwyFS0GhF4cDADx9+hRqtRq8++67UK1WYTKZXGo7V/+hs73oXQ4+MDl+6HvTd/zvNE0vrUzW3GPgY4hKhhiCHyHrmoBdzqg1ZJj6SnKC+xpSZesLHN/SUSn0flR0woY4mfG3r0MhVB7mlaX0e5MjTpIpJsdbjHnXxpOu/MfjMRwcHECz2czmSpwfOb10vta+09APcLFoajabZcfPuMYZLVuTP6bF4wsprZPJBMbjMUwmE2g2m/ClL30Jnj17Bt1ud8FZJsHF81If2ByCefhB65yLrU8sA1eR5mUi5txhOvIptA+o48XXMNLmj/nhfCQZTUWAX0WRJBenzDSbTdjZ2YEkSeDRo0cru28T24I6PuhzSrf0LQYMsP3QNkAnr6l9qSzicwr/hjtOpX6ji2e54UttP0l/N8lFl8GPp9rw44ol2IJsyJchx/+bEFse8rqj7XJ+fg4AL9oWn5fx3lstuPO9KNsagX3vuwNTcvDEogvz9eVLkx7r+kaqA7VDfb6V5pKrhHa7De12G46OjrLFDqibmnZ69fv9haMZi4KP/6Ns438ZOqKNjzVY5ul7SZJAq9UyBr6Oj4/h+fPn0O12od/vZ7IAN12sAqHlxgoE2GyosvJ9LPiOH5cf2adcX7h2j2rqYRuLLr+Kz3ehbaopj39rW4RWpkAlnuyIC0EALnxAv/7rvw57e3sAAJk/KEkS2NnZgU8++QQ++OCDLA8M2Nr84muUF3l4PXb5pnmd6mOmMUGv56RptfXzujNW6+TjMBkA9B115PJgUohAmE6nMBwOM2GNDoNWq5WdNW5zHND/ywLurAilz6Zg0CM8sd2osQYAmXO60+lcEvi7u7tQqVTg+fPnMBwOYTqdZo4bbT9qDIFY0CgSEl/Y6OIDV9tPUr7SOKF9gs6hTqcDtVoNhsPhgqPNlj+vj2+A42WCLXDoGo8mHtAEbm1jYRnySeJ5XKUmTVCSg1RqH43zFsGPFc5rbMfKx4ZqtbqwqpgG82zzIb73kRt5YTqtgNLCT5AIAW9vlyOQKzIx2oMGJahjHfOezWZwdHQErVYLbty4cen4bZtMdfUZb2deNy6bbfLYFMCwyRmez1WU72WlOS9dNtku9R+e8LKxsQGNRiM7tUSCRp/y0blszm+pHj5tY9LBY8lCHFc8eGqjISYkGRdax1qtBkmSLOh7NpnBr9WQvrFdIUPpRQcJ3f1bq9Wg3+/n7iuNLspptNGbBxo6NN/jb7pYrYjgmo0G/o3W6Szlo9F5+bdaGyNvn1UqFdjf34ednR145ZVXoF6vwy9+8YvM8Ye7CyVbyAaTo0bz3mZbur6z6RVJkizIAZPvhOYR6j+gfgEbQvRqTXrfPnIFlzk/x5xjJOBR0lQW4N+NRgO+9a1vwd27d6HRaMDx8TH8/Oc/h08//RQALhx9/X4/1yJ2k/7oM59L34fSUpR9E0KTT6DDltaHR7n8tcnpUFCbLU1TGI1G0Gw24d69e7C/vw+NRiPzlUpXXOFxn9pFZDF0J5eMMelLWnlu42ntvOyTpqw2iwkaG8H1XrIxTXqH1OYme8TWRz7jJI8vzZZW0kk1cyalidbPZ5Ma+uTovIcLzqmvxcfWk9Lkldv8mPbRaJTpY2+//Tbs7+/Da6+9BpubmwBwsQBpOBw6xy3+7VoguMrxuCyf3iqh0fF5Opc/2Kc8DVDuuHiBn2IjvUN7Qmsrmsq8FIyVEoZU1lYwn0ypsDI5YUwNYnKO0uMGqYBqtVowm80WzlCn30k0lBU+QkVTpyR54XTH4Gm1Wr10tNrZ2RmMx2Not9vZt9h+N27cgN3d3UyA0qMHfCYnPlBchnBe2BxUvvnwVa0+/GQaN9ge9PJyPM5zPp9Do9GAdrudrc7A9FzZoc+lcqUyX0ZI/cCPNuXt49NWtL2lXTU8jUSTZMDFMJJdoAsseJk8eFXkXR6hBr1JrnAHmA94u9dqtYW7nHHFMS8T/5dko01pthkjmjlcw2/0Pb/T0USXL7hxxfNzzQH0nWZOQZ2AykZazmw2g8PDQ+h0OrC1tbVw9Ahf9UYdpbw9aZvx55qgGaZ38UXIeHd9U6Sj7LrCpafSND55SjyRJAmMRiMYj8ews7MDlUplwVFrcnRIY8tXjnA6bDKK33uorS89bUUad3lhaxN8r6U5pGyaNx/TpjldGv+4g2o0Gl062p3mT+dlfG7aWWqST3xuxJ2ymA/e1zQajQrZ/YvzDtcvaN0kepdly5lsG9rGaBtQnl6mfr1sXd4mD+h7LkPy9lW1WoU7d+7A/v4+vPnmm9kcjsGwmCczFcVfOK5s+aM9WK/XIU3TS1cwmWj1gaTX8NOXJHD7U1tWLF5AOrXIU44rTypzqSOatmOz2YR/9I/+Ebz66qsAcHF/55//+Z/D0dERAEB2RLyJDzQ2BKeL0mFKK5VjyscHZdQvbfYP/z8Wn+bxNblAxyvAi3uLt7e34Ytf/CLcvn07u2e63++LeeA3mF+RsOnOHK75PgSuvliWLlE2aOvL5Y/NZ2FbmO4qg8sgDX2hfjoXLUVCUzdeFzytBkHnDG5LUdng2w9SGk27or6CaUejUXbSQ6VSgS996Utw7949eP3116HZbAIAwMnJCRwcHBjtQO6T1eyODvHxvWzQ2ME+trLPeDHpGS7fuESLJItMdhpPY9pESOdWtIWlNC7aKLx2xsaCNPC5kyD0qEPuHKVOCH5EF/0u9Pio6zpB0/pgu6BRi86fo6OjLNC9sbFhPNYEDcUkebGKF48rDh2gy1IMfdK7lHnJQR9Kk0lAbGxsZGVMp1Po9XrOPG2OwDVewGQIa1G0rIjhRNYqKWm6eEY+n9yo/HXR5NqNs2yYxpbGUMC0uHOIHznmUmBDlURX37vyxflxNpvBYDCAer0O1WoVms0m1Ot1GA6HovzNKzNwsQ7OC9RBhfOypEz51tEWkMKf0WiUzVMuR542YGX6zoWyjIU1ygV0uON9XjhOUQ+TArK+8JVBPLAnOfDp/xSx5kTpqhHuoI4ByRGLZfH/Z7NZtusEIOxoQsmmwd+4Ihf7H3mDz6WSc56fgKOZg2kedH7Hk4Y4nUWjDM4UEw20fXCnZpIkMBwOs11uMY8rNpUfax6RVn7zcmKPNR/Qo6SXAU370qOcEfQe25BjgbksrVQq0Gw2YTabZdc12fpB41hzgcoYXodYATqtY1dTriTXlulLwLnAhul0Cj/+8Y/h888/h5OTEzg9PXXOFxq6JfsC616k/LGhbI5wLc+G0sznX+r3MpXNFzyE2Fl0DhoMBtBqteDLX/4y3Lt3D37zN38T9vf3s7RpmsJPf/pTODw8zOZy6djFMiM2T3GZK7U/ynEcV1epvfLCpPtKoAuiJMQYg77jw7XrNC8/rVrG+QZyV40kSWB/fz87zWQ8HsOjR49gMBhAmqZwcHAA9+/fh+fPnwPAC52Px3q0Za0RD6FzuslH5tLn6G9X/iF0SUFY6he05Wta3OaiQxWMzevc53nRitjuntPmx99TxQX/p8akVCY3Jl2ReansMkOzuoCmpW2BP7j6HpW0Xq+3oLBsbm4aBxLezUtp8Alw+Lyz1S/UgDGV7RrskjNSI0R8BzKmbzQaC846XPHoMzFr2/wq8X9M5Jl0NP2w6kCMdmI17RDmeQHIDmF8XhaYxpxtbJj6ip7MYEsrGTR5nZom2aQJyOKuEXonYJqmC/dUSfmGAnnIdAcdnqqQFy4HJTof8D3uoNHwqm2+COlD27xse++ia41ywqef8N5KuniBH00VMh5t+rgJnM+19zVJRk5eYFtITk9fQzHUsOTjE53w9BQem23hoofPEbiQBU+owUCUFBgzyWvabi4jmOdD6ViFXRSiRwMUo2OZ6o99t729DQCQ2VCcL4vQ+WLlLfGFNIaxPiG6gUY3sQF3HfKytQ4bG122b2x2Nbdx8X8eiNXaqdQZhOA7TShfaXc8hgDLof1mG1cunTaURtdYpnTy58vUj0y8iM9msxk8fPgQDg4O4PHjx8bFDwiTPcXzNcl/7ofT1sFVTkgeq4CvbHTVz2UD8PFJ09hkjM98zJ/T78fjMbRaLXj11Vfh3r178N5772XvcUHVgwcP4PHjx9n3qF8gjUWPlzx+ldiQxo0pHW4swQVuZeHxosFtBmkM0DQmHcJXR+cLFbhs1fpKXfLV9J0P8srXkPw08sXF35J8jMnXnDbUY7a3t2F3dxcALvzXz549y+ya09NT+Pjjj7M86Ol8AMu9hzsEZZcLPvSZdIHQcaPlM83YpTylPR1FsmekbzV+FpNt4PJ7LH1nLO8wU8Xy7JZyCeYkSS6tJpXSmxxUpjxNNFxF0JXzpgFA+7Lb7cJ4PM6+qVarsL29Dd1uN1hISgYFpyW2cRcCiRZKZ5q+WBEmHQ+nLYP2Ca7cwKDP6ekp9Ho9uHHjRnZXZbVazS5BT9MU+v1+tsqI00TLiXWE1xr5UaSzzpcOPGJPkuGUp1dNqwu23ZYuueKSQXyc1mo1aDab2e4oqbwilFykSZpHNQr9eDy2zo38eUjfmwxXVMxxZ1lMR0CapjCdTheO9JPuw51MJnBwcACDwcDpGKN5aw2qUKe1Bst0Mq5RHCRnvq/OUNT8IemCvo5ZCupg4XNL7JMTTAYaPZUnlg6UpimcnJxAtVqFV155BUajETx79szqrNXIBS5zyzzmab9K86d07Cl3FlEbwjSXudrBN/iAeaKOXXa9xgXelprxmsfBJTlYbE7AWHycpikMh0Po9XpwdHQE5+fn2XMeDMlTnokf6DUIoaBjxYfv+Mr9kOOwTc4khMkRJ80JpvQu5JlLEGVxziZJkl1ZQhc64qJ2vmgT4OL4xqOjo+woeICwOdaXx7X5U1p8joO+6vDl5Zh2iw9wgR7exyjh8PAQnjx5At/73vfgF7/4BZyengIAQL1eF3eda3lpWbpI7HJQ3mrriMfB+p7wd5VB28Z2bCz3f9rmDN+5kusVtrb3yZvLsavUp7hwHuuK19hRvZXKdl+ZHcP+ajQa2dw3nU5hMBhkPPTtb38bvva1r8Frr72Wnbp5fn4Oh4eHWTCWn/J4HXTysiNGcNWUj/SNK+8i+lvKE08cQ0iyDn2kNJZiSqvBQjBWq3zHMphc0DifbM4KmoZ3tOneE2153ElmwqqDKZoVLrZ2tj1HxxXAhfN6Op1mgh7v56lUKkZHiqts+o0m6Kpp6xBjRvve5mCndeBKn5Y3uFMLV+QBvGh/qhhiH2A54/HYSpMJJjpjGMxlh08dfRZk0DY18YKm3bV9E+LIl+pkG4cuGvLKwJC+cJUpOYd5eb6Qxikqodxwk8osw3gy3XcKEGfcc37kedJ5Q+ItTf+aDEc6b5nqgHcl0QVGJsRy0NjGj403XWPUZyz4frOGHto25fMB7xeqe9Gddqa8fPqQy0OJJ+g7H4c7dby4bApJDprmV42Oy6HReU2LdrRzKfYRHle/u7t7yckZQ9ajEwad+zabSGvLmdLGkAeavE18x1GEfHIFnkLzDHGCFQUNH+S10U3vlhGgwIVceNem6xtfH4etzhoHsFYu+9i0nIa88NX1uTyLMXa0MjLE9uJpi9K76bingTHckYhth/Y5LhYcDAYqGy8PtHlIc71Nfy8rYtHnyievbeSrW0l50EVsjUYj8wXh6Xanp6fw+PFjODg4gOfPn2eLb+nRuyHlhsI11qX2CClPIxtc+dI24sHuso+BUPjWC3lPY++EHO3J85bSmvrTtxwTTLJ5WXKGpuMBIXoCC02n1U/o39r5lNqFXIdHHxi+p3rZrVu34Atf+AIAXASSu90unJ+fZ9d60OtebHRpbEaTbV0WmNqwiHI04L5qWxpbWT5jeZWgvApwed7B32hjaK/qcLXRSu6Mpc4kvoqUV1h67sOg+B0eQYjf40pFCu6gReGGO8K4c9gm1Mo4yG2Q6MX6IrNhO+DxJXgEbpIkUK/XFwJ/CH5M53g8XjhSCpXDsgxEDpORoVEEpPSSM4bzUR7BxO8joeXRneBJklw6cx+f1+v1S+XzsVHW/roKkNqQj7U8MPFsLGeqqxwpHR5laHNG2njLVifTN0UhZE7a3t6G2WwGJycnxsvei+obH+cTdQRI9PAABVdsUZ5rgd/jN3TngPZ7W7vxO+h5vq6+azabsL+/D71eb+GUB84DtD1chotJx6Hw2dFy1XSNVaOsRhhCQ9t4PIbZbAbHx8fZDoi89yXaHK4+QSSqP5scMnnkHdIiLfJD5zbdIVYEpPGPcgblIDoRms1mITQAXMizN998EyqVCjx8+DBzXlAa+d8Aizo9hdQntO/xuzLr7KsE13HwfzymmI7TMssgDmme5+9M+kSRfIJ5810gZQCOEZRTuJMKF01g0C0UVFejx2T68JXke9F+R3mB+kRCEMonZepvDpST9OoPPPFlNBot0D6ZTOBHP/oRJEmSyQfkF2n+1LQ19ylIuqup76X8qdznznrffn9Z/Qgu3w7Or7yP8rRTs9mEb37zm7CxsQGNRgO63S788Ic/hJ/97Gfwgx/84FKQA8vmi/eXAY3TvqhyNUD/GA9QrJqPi7RpTP4DiQYTYt4tjt+78tC2h822CaFzlXod+uZj6UK+vG3SBdHWMLU1LgwBuLDhPvzww+xUsvPzc/joo49gPp+L10f5wGYTlQU2fXrZNPhi1XIQ4LINZoJEa7PZzOIiUno+rmy7Z12+bt7GxmCszVHoWo3gA5tCKEFblhQoo43l2k3AaTOl44qSNNh5PstkWE1Zof1J2xN3MtEgO4D5LkBTebY+oYZfXmgDSabvpOfcQDGlyzte6G/eJrg7mSqMmK5Wq0Gj0VjYQYt9xemS+sTHcLtuMI3xZZWZJ4+i6ZXGki/tRRnnGnlBHUt8fFHafGnFyXs6nUK1Wl24FD5U/kg0mYLXsR1jedrERQuXnbH5IE1TqFar0Gq1AACy1eGmANZ8Ps92xVL6QucfH/6W5CvNIxTaPrjusnzV9YtRPs7duDJT4quQcrT8LY1/ST7Y8tPwoy0fyUmkddLQAIJEM89XQ69EPw2UjEYjMfhik9UuOZ4kycLxX9wAtAVntE42KS2mp3XEdBoHsosvQuTtqsc1tVHwf4AXzgH6u2zw5XHTfMafu8ZjrHleygcXq3S73SxNkYsIJDvJ1j4YlHXlx3UjPqZNbewKuvnosbbvTWlXgbI4AwHMOi2Vl5g+SZKFoBguWC9C9nHeWWZ/rZo/KB0ceXxLsexXl16lzYP7cjqdDnQ6nUxXGAwGcH5+DkdHR5ldyv1AqxpLRcvnvN/QxYBF2KohKHJMhfp1OA+6dAb+twm0zW267TJ97iZ/SJ48fMF1cZ86m/w9MdoNd5Fj/XBjRqfTyTZxNRoNmEwmMBqNYDwew2AwgMFgkF03MRwOF3bWcsRo/6JQBvmAyKNPuHRMn7y039rKtpXn4gdJBqF9RnfE2n54HbjdKpVrogdgRTtjEehEog5Rk7GqZQ4N0vRihybNV8oLV5rayqJpXPTSd2UaoC5odjpNp9MsEAgAsLGxAbVaDTY2NmA2m0G3280UPuqwKTukXRgIzht4XAkd2JJj3RbooDs6TO1OdxlikGc8Hmdn7ddqNbh16xbUarUs2Fqr1WB7exs6nQ48f/4cer1e1l9coEi70lwOMu44pXVa4zJMTpGYbUaNf5tT1hdF9K/EP/x9KDTyVutE1gLz6PV60O/3YXd3N1vpTt/zcU+frUo+hhr/Me6Xw/and8W65Iq2nVqtFrz11ltZ+oODA3j27NmldDiX4crw+XyeGRQu+jWQnKSufH154SrMrcvAVdEzYiK0vshrpuPU6TisVqvZKuzQAJNrHON8aDrCLBQoU7ispzvYcHU56ll5MJlMsmMnXfqf9KzMPIw8wG04gMU5FUH/Np0SQ6Gpu6TbmHilSEfvddB3JR0ojzzh85d0XKsJeXn+7OwMfvKTn8BoNMrKxIBXTH2YQ3LaIDDIhjLBhLxHX6K+ggtvabtLMs3knMJvYvLFVUeoPMarL1CnxH7AoCveP0aR11eikUt5ApAuunAhEqbH8spwXHvsgKwNWtsI2yj43rlaLeMnrsM1Gg14/fXXM//OcDiE4+Nj2N7ehlarBRsbG5lvVJLPqx7vRcoebX6o+3Kd52WC1p9iu0cxljzjtod0otR10c0k0HaeTqeZPm5Kq233WG2WJAm0Wq1M5uBO1+3tbXjnnXfg7t278Oabb2Yy68GDB3B+fp6dHvHTn/4UZrMZ1Ov1LD+pjJcFRduCph2hV8FuMsUuNKjX6+IJVtLpEOgbkMr3GV8czmCsT9RaQ4hWMeQTr+SQtUXqtWXGVr7oYDEFXGzlFqUMhqxCMAXdTOloerrqV1qNLPGMrb2kuuSFxsnjosHlRJPS2BxHpuC+KQ9sc340mgR6PLQpX0635EiLGbS6ijAZBbb2MMlIzkc+Bgd3kGv6w7ffON227yUZx/NxtYOG9zXzjY0WV334M015pjywj/gqWlMZITDJE84fvuWEBABjyGs+Bmzt71MvXBTUbDah3W7Dzs4ONBoNOD4+Xrifix5tjP0mBW9c9Ev8z2VoKLRtTdMVrci75rlVoAw05IFtbKPjzMWXeeRkCK2YFz2meBmgY5eD6+U0OGRbaBcDvM/y5IGgfU6vm+AGoU2fiEGXBKmdNe0Zk/di5h0LeBoDBsQQq9aj+byg0UFNNFNeCpkPtG0h6YRoO6VpCmdnZ5lDz3QthC8dobozpzFkd66pf9AxRJ3Q3MZz0YXPXGPV1ucSnUWNOa2fQIsQPdcGVztxvR9/JEdiqM4W4xtJZ+XpfdsC09NgNI6LULqLgtY/xJ/ZfGY+yGNLSUeVjsdjuH//fvb/4eHhJXmNfMht1TL1C4C/jNJ+78rDpl9dV4S0qc3P5ePf1JbnQ6erHFc+qxgLtP1s/sdQ/cn1XKJFm4bbV9vb27C5uQm1Wi0Lgh0eHmZHFeP1h6PR6JIMswWaXwaE1tOnXzXjqkhbjSOGrsxPIrGVxX+kd7Yyabk+OlOhO2Ndgtf0TlpFY1JUeToTHa40PsEMF6gT3vadzaF6lSZ5yXmOuwA4pB1g/P+rJlhNwsXHyUcHb8hOE3qkkekoB1wtbVqVit/QVR/SHSaYlgecTPldJV4uAr71j2GAuwyKPAYifm/rX1NQKOReq7w0m2hzBSli8i03jrEN8iqXrjEWyksu4Li3yaoiAhrSc205w+EQ7t+/Dzdu3IA33ngD3nrrLbh58yZ85zvfgfv37y8cUcJXv8VySGjp1chOH3qKlsEvu4xfNujRt+hAizneuJPU5xsq4yQdL69Mss03ePqAdGcSnbv4POTS1VwyTmNjxARt42azmZ2QgvKYtzFtd9ov/F7LNYrDfD6HbrcL4/H40lFYiKtg+5h0P5fjw1enMZUtpcWAJPL2/fv3C+HrPP2DMltzRZImL0w/Go2y/6vVanavmmb3MQXKBp860iBaXt5dht9jWeNL4wtA4Ckw7XZ74SSuPPcJSwgNXkhziU+ZND3WD2Vgo9Gw7uYqEr68sEodV0sryrzxeHxpEcrx8TH89V//tXFHJ+7Mxp1s5+fnAADBu42WBRd/xggcmP7netXLCKy7dNoCDfAD6E7E0JRF/we4LF9d/in6rYSrYs+G0CnpnEUuMBiNRln+7XYb3n777Usy5Yc//CH88Ic/XCgf71indGmDamvoYNoJuyo9iSJW/IDr2zZZjfq5JKfSNC30NISowVhNADI0X0npl1beuwxb6pChMBkCNkHuwyTcSWWjUeNgN31jKx/T+SjhvrQBLO428FGMYilUoUadT3CG96VWgGno0uQlORQpLYPBIHPOVSoVmEwmUK/XoV6vw8bGBlQqFeh2u9nRFkny4s4QG70a3lumMC87NO3n+pY7UEMRa3JzOeNc5UnyT0NT7AC1ab5yBf648aWVVUlycWQLHoEbw5EljTVJVrnyd9XFFtgwzamucmPICEn2SWlQtnFlniqj9Eg/nMPokZsUJgcAHataXYTTz+si8Yem7VxlahBLZqyRD9j+MWU3hw9fcP42wZQnlxkm/cpFs5Qfjus0TbOgLD3qmPN0TN7WOHhM49L0Tiu7Tc98nef4jUm+4f+mfqHzo9TGXOZJDhbTfILvbH1osuOKcJrS8pHParXawmKANE2h1+tZTwhaBsoow0NsXU0eJueLbZzlpZWXbdIDTDSY9AEp7zzwscHztBeHzf9h87No0vlAO5fEgEk2U9mAO5npUdI+POZK49uHkqxGXpB41Jb33t4ebG1tZfr006dPYTQaQb1eN+rWnIaYCOVn05yiyctlB+DzmDzO72l8/Phx5uvh+W9sbMDOzg6cnp7C6P9j709+JEuS+3DcXuyRW2UtXd3V0z09G4dDUiSH5BCQIEg6CDp8oSMB3fQX6KD/QAed9BfoIugoQLoKAgHpIAgiQRASKYkghzPD6ebMdE93V3UtWbnGHvE71M9eWViauZu5+4uIrMoPUKiM9/y5m7ub2+bbZALj8XgjR/Ba/eZQe3Aet6QNlaWhqqr6BBLM601fwGbhR60dcVIj194K2Y2cjhRdmVNHbxovQjIHANZ4UfLHUm2cmC625MHRarXgzp07MBgMoNVqwWQygdPT0/qo9KdPn14rl14VA2Ab2030Qyp20d6m0MaTl5dy+SX3W5Qxmk8Ykvtod1XV9dMLuYy36pYYtLTFd8Z6DFlpAEnBEoDrx7fSDsBZbK9yzx0sFkcyFHDg32pMZYHH0PAYPdJADdEQqoNmvGMabTdGyIEN0RGjWwruSMD3oRXN3naSvqGgq7xpWin4I5V9dXUFVVVBt9ut3+/v70O324XDw0M4ODioj/BChYe7SnhQI8U5jQUWQkr/JoC3SUp9Qt9octCTN/821I8x+vm3lr6U2ojLh9g3VvCFOVI+PDiWG+ixBJL4u+FwCIvF4tqd5all4DtN5mpBSS0fXm6ofCobNJ0aoq0ENH7hz7vdbr1iXMNsNoOqqmBvbw8A4kebhHgsRh/lxZiclN6F8o0h1ieSHZXbfx79GMsnxN+7DouN5fk2Bq3fNFluoW21WtU2d6lAi/a3Jw8K5FkMKmoyKjWgFtNTIX7X3kl6ydpPKTSG4HG+Y7Z+6JvQO433AK7fS6vpH+p/bSJgg6v50Y9B+s7OzsQghwUhmeHt45w2iOmJphALpljsMGkxRinEeNnqC9J8+M7plLEv9TVvq5gPKtEW0sEcHv1j9a0pNBssZJPGUEqnxcrAtHiyAU5goM4K2e5Wna3pt5gdyfPixwhbfLiqquDdd9+Fb3zjG9BqtWCxWMCLFy/g6uoK9vb21CsFtglJnlhpzKkLPdGiBHBREOb76aefrt3fS3F4eAgPHz6sF6OenZ2t2U1WbDKmE9JFkmzLpYvH0qh8LX3/8SbsFCtiMlnr88ViUd/1KW3ySC1bsw25zMfvQ3qHlxFLG3teAlo7SbTReLm1fVP9Ha8c4Gi32/Dw4UPo9XoAAHB1dQWffvppNC9+pUcshrUr2CW9po0jyymlJRDy43gai8yW8pN25UvzSJyX6NWN0kIlbSe/Fg/VaLTEvxo5pthi4FkbWhKuFuUnOSA8P62cELzBP6kttOALD8yGLkCP0de0wIq1KZ0cofWlk+pWp86qJEvBGnhODcbRZxZBxfNNcX4BoL5DCd9rR/PhKlZKX+kgxi4pKy+sTpr3fZPOTC6tmMbLA576WAME1nK0QE0JXg7lge9ofUajEUyn07XjxK35pUA7NUIqwzLGJWNHw6aNZa43NX3D0el0YDAYwK/92q/Bo0eP4Ic//CFcXFwEy6HHyFltmFh7pMoBD89YdVpuOU3mgfk0XUZTCNk3XmeX21+p9bYG1T2ggREuC1Mg2Yx0bFN7JXZfogXUhg75EdviN95nL168gKqqYDQa1QtKYuME8abv7rjpsPhEKX5EE3TFxkKJnTK8PD4+MXhCd3aVbofUSSRtAQFAmgzH9BhE4v62BRIdsfI0eyXFT7f6UpY8+LNd8TGrSr+OhIIe1+uhPTVQ7pH9Fh3e6XTqBY/37t2D999/H46Pj8W86G4UALh2T+muYJP0lKg/391D0Wq11hYD3717F+7fvw937txZS4dy1SurPT5hbj15bIo+pzYn51tPXJhudMD/kb+buuM4Vyc0RUsojbQwU9tRFvNDrb4yto3WhzHZtmtyBsC3kAfAb7trNltObEDLi2O5XMLV1VW9GH48Hovp0H/jO/N32a/n2EXessBLd+4YjqWx6kPJNtHmNqg851c7oSyLLW7I1dPat43dGasZ5t6Z75ihTQM/GkoJG4kOS/7ccODpNKXLV/NaAyzSb0vA3eLQc2MmxJiSoKdtltofKULA2kdS/ULf5YKWm8rDUvBQcrDpjjyt33ggVTJ6tTbS6PLWKcWp3xakNvEg10nh5Vv5hD4LTSpyOmP11RyfEmk0PkkNYkllSeli/C3pK96uOO4Gg4GpzBhtIeAYlgwSS//xd5Y+kmgogRITK6vVSlydi6vivv71r8P7778PP/vZz9TJWGwX6wp26+Q11+0lZR0NSIRoKFUOh2Qflahf0/XJQdM0IQ8i+OrWmC5tGlQPWe3jGOgYxt/8GDR8pulDb3m8nVPpznnPIQUWV6tVfbcb3hMXCkDy8qUxGfo2xdZrwnH1IsffyAUfl5rdnVuG1a5rGpofaZEDFpp53Xi9URY0AUm+pcQiSvIjX71vDRZ5x/k2x1AMu+QjxvxxfMe/yb07NVXPhtpOiotoeaB+Xi6XsLe3Bx9++KGqh/lvuqAK31M+3nT/5vK5R8bHxp5n3EltRvuw1+vBbDaD6XQKh4eH8MEHH6zFemiZ0qlrKWiq70I6VdN/Gi9LbUx5muZb8i7nXZSnHj3t1bV0IZPU3h4ZZrVFvTEVa/yjFFLldS7vUB8nFA/OAR2H4/G4Hk/aCWXtdrs+JSLUj5vuozcdVl7KseEt/BXzk6TvreOBpuX+PX4r3RebMs5CsWENjU3GloJ0rwTftScBhUvpIyRo/pyuHGcF60MDTDHjLVUZlYYUeMYyMQguMXisftwgx+9omhIICQktAOalxZpGCizEFA9Nw/mH/sZjaPC+lqOjI5jP5/URahq2Gdi5KSg90VAKsWCAJSCLv0uPOY2vc8rm49VLd8ngbylYAuslENpNq+kjyYjfhqzQArTUyEKncTabwfn5OXzxxRdweXkJjx49guFwKObJ84uB7+KTvueOhsZzmq7xOJPW9LsYFLhFHFLATQt2pECzcaxB2hTkBBvwCoZHjx5BVVXwt3/7tzAej9WV2B5nyQJpchzbiQartUDzrttZnG5OL79eg34npcfnUnvQ51o5PC+AV8d+VlUF0+m0SMDK+h7pxas/6C63ly9f1oHcbU4y5KAJPaHpWOzzUPB2FyHJrpQ+DslAabKl1WrV97GF8kuhBSdlcMKM0mDtG66n6POY/aMF7bUAcqh8K1L8BovfIuUpHUsc+ybUbkiLRI+WX1PY29uDwWAAVVXBbDa7NrmFdElXgmx7vJcsP9bmTcg4jLtVVQX9fl+UDavVq5M1zs/PG7krNhTj84zdWHyK/p8DKQ8+KY066Sbp7pKg7RGbiEVbiN632wQ8uuCmQYoLS2m0d6F8+e+UNuT0YawFx8jx8TH0ej1otVown8/h5OQEAF5dm8fnBnAy7CbaxzcBPJZXctw0PScDcF0WW74LxSnotRChcmNtFHpvbZcik7EWx8PT4ZrxjcJCEhqaYx5SmqWMvlL50LpZ6kjLtBosNF3K4PE4DPSdRjtvO2uALzSBFKpjrK80B4o/t/Kf9E7LIwSpPpqzBXD9DpKqqmolie/wPgeLYyv1lVS/nHHuSbdNJa21Q8r4D/GJty1jY9vav5Y0WuBUKs/SV5ZxmZqHNHaltJYyYnWSAutSGaUnAaS8Lca1R9Z6HNBtOKsW/QfwaifJeDyu77G6d+9evWM5N2/puXVc0zbT2ntbgSqtPz28VpKWEt/eVEfPI4Ms8rTEWC2lx2JloH2IK6g5er0e7O3twf3796HdbsMXX3wB8/ncZQ+G7LWYnYv/SzJfO940N/CAAddcx9o7hrUgEdIRkhchrFbXF9HSvqdlSfm1Wq1rTntqkCklLZ9sX61W9WKAFJvXwh9eey8VOXLCKmck/0LziT35Yl6h5zk+iZZfTt9YZCk+63Ti4ZzUMS7ZJZS/PfnR/zWZZdFtXuySvqd8EbrXNTXmYNUzqTIy1pZVVdX3Zw8Gg3oRCi2L6ixv/KcJeMvNpTPW9rnyW4oH0efY7uPxuD5dQ1somlJXzT6g7z1IiW1wnyqWt0SfxJMpfo+3P7c1DjxxLUqjtBCR20FanhZ5ItEU0tsleHZXELNPUmLU1jQaLRpWq/XFNd1uF3q9Xj3xNR6PodPpwN7e3tpx36uVfDrELvaHhG3HPyT/KJQuxV+M+ckh39mbvzXvGELtwnnVSovlPS0f/w+131Z3xqYG8NDZtjATpuVn/IeEt4UhQgMilocFlF40bOlz+o5Du3SY0tW0gOP1xx2ynPEtTm3McUtBiPc21UaUFlo2NwIl3pXahdLN7xum7Y5H2e3v76/lMZ1OodVq1UFOKaiYakDzer5pKMEzkmHEeSPE/zEaLEZUipOh0WEpOyVAl9LGWgDJanyWkjuTyQRarVZtnJY68qhpmYXyw7K6ddPyM0SDhPF4DE+fPq1PBjg/P6/1Ez2JgzoQmKd0DGiMDi6rqS7kcjsEa3tK+Vn0bI4hTA18qbwU3RHDppyfXYBkI/BgG76zOBGpslDLj/6v3f+WMhFAsVwuod1uw/HxMezv78OjR4/g+fPn8LOf/SyJbqSZB6dDNjwfz6Xs/RSgbfj48eM12/qm2Flv0/hNhSWoYk3fNDxjItemojIHxwHV36Vs2VC5Od8jXfzvFD2JEy148hHfmRKz2STdYpnACH0fQyyd9N4TKLf0j1QGr38OMLgMcJ32UH974xyptpU0QRdKK9FFy6ZXgfR6PTg+PoZutwur1Qr+/M//HD777LP6FC5cIDWdTqGqXt/f5gnwlgbfhd+EzbpNrFYrmEwmsFwu6/t9r66uah/06uqq9nVydzFq/ajxthbrCNlgXnqkb3h8C+D6Yi6+c69p7CLPSf0wm83q9uj1evDgwYP63fn5OZyfn9c7YrFOseNnLc/p9yWOdb9JkMZJaj4lbUVpHFEsl0t49uwZLJfLtbgz0kL/zo2DlJDbN1X2U7q5rSmdMtsEJN7yxsz4tzG+sNp79H+L7MgZI/REGUToPtrik7FWQZuaN2c0rZNjRp0luB+iPRTMkoJlWp45Tp1m3EtppfKl56lCOneyhOcT6r+cAWJpJ4tjHOtHi8JMnVSKPaeGbMjRwx0VtL5056xWjsVI8mCbAc1tIFTf0PjLMaAsigzzD8mClMB9btDDSoMlwGOhrSloRoAkK2JjLPSNJItjcsMT5Eptr10Y3xi4xYnwxWJRH6WEoG0Sc+AxnfQ8FHTQjDI+/rR8NIT4Q3rObQiv/WbJQ8rHWrcU/qTpU2Sm1Z4sCUs9LXXxOjyaDZtLg1UOx+pLv8F/nU4H+v0+HB4ewuXl5bVvMLiLdoxkz0n6x9PH1vppzjHPi7dJyKnmmEwmAHD9CCfuxIb6jY8X6sOk2mcxXySUZ6qeQedXmpTjZXr7m9rO9DnNl/6TvqdpU33BVFm6KVC+KUmTxDtSv1j0kbUsq40aozWEkAySeEn7FtPSxbcWeW59Z2lLjzwtpcuskGwDDq+9w/UnzyvEs1qeIZotdMXsF628WP/S93x8cF3barXWjiY9Pz+Hk5OTOg3lUylIHIpheBGSxZwXPH0Twq75SCgPsL17vR602+16JxoeD7pYLNTjjCVo9SxpL1vsCE/5lj7lY4mW1+/3a79RGncl+pDmmWKvNAU6PuhJDP1+H3q9HqxWq7VjP1E2AMR1GS8Hv2kS22zTVHuPv+PtmhPr0exbLQ6ixRno38gPePwwPdGI0m71ga1pNHjG/03Epu0qRKqt7MlXs6ms8IwT63MJ3Pfm7yQ0vjNWCoCk5BELnmgNhYYGrrxD4Co4aReplcZNDljNIEkxqqX8mhpItDzvoElxljwIKXzu3MeMA1q/nFWFkqPAaQq1C6aZzWZrThKlCdNiIBOPEyq1S09DLKgovWvCId+2ovXULzVwaIFkxDXVNh75lZJ3rvFude5K8ONq9epoqFJ153/HgpHUOcpFSNd4dtNakWpPIA0YgAidHoG7l3FVvxVWR6Hb7cJisTDL29JBbQrKM6lGfFNyI7fOTdsz29YjEniQNGciAsEdCylIT7/F+zylIIzm7JdqT5yo3d/fh06nUwcdPXyeAm4/S/YubQOtHbTfTYPufAoFAEN1wnw0YBq+EIVfqUHBdRmm4/Yt/XswGEC73Yarq6uar3Jtco0+/gwDTnRnItaRvqfI1cclZZHVzmliHJUITjaNEI187HBZnFIWXzCb46d7ffBQPogUu8ESEIvlZ7XXc8HHlhaU1soO0Ul3c1sCyFIMzALLN9iP9P8QLRT9fl+8MkBCt9tVZTGWi4skkS6r7LbKQZ5Ou8fWk18JNGXjA8Cav7m/vw/vv/9+3a6TyQQuLy9rXsyFN1YRGi8l21aLP1nGNMAr3T0YDODrX/86nJ+fwy9+8Qv1uoxUxOytbQJPzUO/9Rvf+EZ9vc9isaj56MWLF2uLgah9E/K7N4ld9N04cGzgohZ63QpAc7Eunlbz0SRe5f27Wr26k7rVasFwOFzjBTzJA23iTen0TfR9k/EByebiz6z2RAnEdIa3LSSfLwatLqlx25y26XQ64tiI5bk2GevpTA9CRqTXqeNBAu136DtLB3nSpL63pgkF2KgBLeVp7VMPM3sHfSq0gFCobzRjhiuUUB5S/Wgb029j/BYCFVKcPs0o1caQVC51KEL1pA4YF6wWWlLGEVfyUt1igQ/pmxhKyrWcoAjtdwxe83caH9J8LPmH0ob611oXTlcsL2uwwkNLjvHjqW8O//C+CLWdJzBpNWJpuTFnNIRtOogxuml7SPINf+O4m81mMBqNoN/vw9HREQAAnJycXMvDSxsF199WAzPWbxZ4xk/ouWR78PeUbotups9SjeVNB8xSyrbQEtOFqfDKf8nJo+8kPcTfYyCGj6FStnRVvdr5OhgMoNvtit/SALfX7tXkNL6T+p23k9XZtcoCiV5L/fg3TcBrL1h8Dcne1vKT+qKEr5mKEL97gyZa/hZ5WwqpMrpEmZ70ITs2JKtD7Zdi34aeS2XT8tEXCB1nJtEjyRzq/1nywG+s44nnE/LxUpBjF5eCh35rWkkG5vpBVnveY3da/XFMN5/PodVqwYMHD2Bvbw9ms1l9rQffqY07NI+Pj+uAPMYfcLGkVzem8polniOhCZuyJKT+w77AO8wB4Np9viXLj9mWnrhGrCztmaYbJJtbKhtPWen3+9DtdmE8HtenkXh5JlQOp2+XQMcttkOv14NOpwOLxQLa7TYMh0OYTCZrE3KhsSXJLC2N1Zb21EVDrt4qBZSHJcaIlN7rn3h1B92NT+2T1er1qQj8Hc9H+r0LfUNhjXV4UMLmDrVZCf6h+YboDaUJyQTpuTce5/kuxZbX9I6lXP7tVu+M9YI6F15mR8FAj1bg+eyKAvQ619xhxHpJ98uGGC4WbLPSHqONPrcgNmBLCWfJYIit9JcUt3RElNUhpsE+qrhC30jfa3RKgUZ8TseGRMstygD7g99RE+IRyocxB4DmHwOXFbmBQppfLBhG6yEZfSkGw64Zal6Egu0hgyglIJ6yCtpqPG0bmgykR1jOZjM4OzuDx48fw9XVFXz3u98FAIA/+qM/gtFotPY9txU8d9XgWODyledPafUGf0OwTGrkIpWfUsqR/tbuNHvT4HUwrHlifha+09JwfYZBmVS+4DoP0el0YDgcwsOHD+Hi4gLa7fba0Zy5wHpothTAbsk9ekevZuftEr23sCNm6++q/wqwPqnehNzSyuUI2djWcREKIGlprcHLVqu1dlQowLrss9JId11zeSCVK9EM8HpCmP+zolQAcZdhHXdUJyK0Y6S5jqV9aaWlKcRoWC6XcHl5Cffu3YMf/OAH0G634fT0tLYDcPIK85rNZnB4eAjf+9734PLyEp48eVLvvJvP5zCbza6dZtcUaKyldL6ImL++CVTVq0Vso9EIfv7zn9fPcsrn8kU74ljyGzVZzOVnil/PYyY039h3/PdwOIRerwf379+HyWQCn3zyydpRvE0gRivafE3fYYuLJnBn5mKxgEePHsGdO3fqOM/V1RX0+3147733YLVawRdffHEtH76rc5exKzqo9K5rCutY8LQFyhcKGlfE02zwt5Ufdnkitmlw+VxqwrAUpHKt/VrSrqHtlFNfj4ySTjQJxbhjKDIZa3GychrKOkFgMX6kyTaPo8XzopOckhERozXEzCUGkTcPavhI7a4Fp7QypfJzlXJoUiIlfz6QJcdUKiPWtjxPnrc22SKlCznZGn2cDqneNE/NaS9hRMXyiQUMUibmLGVsGzxIpY0dj2yRvk/NK7W8TUCSk1oQfRuQ2jlFv9C8UspFSO1i5YEcHtGCSk3yi9TmVFfTsvE4y8PDw9rAwgkeTnuKgcjLx+CrhFif88A2fc7rHsqbf+fRZRptMYR0Js+3hI2QEmin9Fjsn6bg5TdJtnhkNm33VHsnRFvoXYqzrU0STKdTuLq6ghcvXkC73YbxeAzT6bQRnRDjCSprvHKD5rsJ3tMCpjxNKqgsPDw8rHdULBYLGI1G1/S2xv945cydO3fqYOR8Pq93YGGA0EKvZ4xR3RHLW+I1zZ6nz3YJks9B3/E0sTwskPqD+1+YzjumpLK43Ck1vjyBoZCupn/zxUYeuSnxWsi3Cvns/PjtGGJpU9rd40duQl+n9nEqJFkSa2P+raWdtHgEB93dhPYtymGaR7vdhk6nU8vvfr8Pl5eX9RG6kr/SpN6WQOMr9FnsuxB2wRflcYaYzUJ/S99Y+C2mK0PyK1RWql7xpFsul9DtduuFf/1+v57cpdfvhK5YsNJjtT942qZsBtp/9Do/pPvw8BDu378PAK/tscViAY8fP4aXL1/WeXiuX4jFDkLpNPs45mtuC7H2oHyF6blcksaW5i+kyh9vO2F6aiPwyVmJfot8SKHnJoDWvdRidqmdcuKIlnJCvBbqY61Mq20e00kpsj/0zMqTlm85dmJnbK7BFXMuKPh9Vlrgw1u2xUGwdlBKEA3/1gJp0nutPGpYe8HbkQroXQGlUXP0qfOJkI6MqKrKfA9CjlKkQSZqDMYEr6SgOY/Q+1lCNOQ6FSkKgTqbu+DUNAHLrq6Y3LoJiMmUknV5U/glNVClObCSU8fhCSbyNFajpklYbQHExcUFXF5eQqfTqe9nwRX6JYMyKMf5RK8UUKO/S/EAz9fyfJuQ2sdiS+U6oTS/myBDJN2RQzdtayovmmoL3rc5wIUVn3/+OVRVBefn5zCZTLLtfCt4X2xit3guVqvVtQlMyafijm+sLel73FmxXC7h3r17cHh4COPxGMbjMVxdXcFyuaxPDuB2K81/Pp9Dr9eDhw8f1juuLi4u1naqLBaLtQkCutOP0mWF12aRjpi1BAq1MbYtOcQnVOjzTUDjA34Xfam2ybWpm2gXiXdjASgJIZ+XQnuP44jbLSUg2T8Sdl0Xe8dpqC9CwUfJvtX0m8UWzgnQrlarWvZyW5n+xonYXq8Hg8EAPvroI5jNZvD5558Hg/Gbln2r1fq9h1afVYq77RI8O+xK0m+Ji2rfpQS0rflY0u/t7cFwOISjoyPo9Xpr6VqtlnrSUWk5RsfyJu1JHH+LxaIe41VVwf379+FrX/saALyytfr9Pjx79gx++MMf1roZxzvA7svtXQPnLemUOY4Ssp3COhmmlblYLKDb7dZyR6M/1Z7ZJYTax2JTWtrW2v6WycJS4zF3sUVM/ufGBLx2qqUeIZpCzy15F52M9QZBU77Fd4vFIrhNWHNepEAdddg1umL1kYJWloERyotDM7y1NEgLT8cHUYoTYekji1HCB51m1IaMKkuwQEujOTFa29KgldUw0tpDChRp9Qj1NdISCzhKDrmmJD3BIgtC5XFnXKqHxVnXII35UsHfVHDDmvJVTBHht9YdIAiLYyQZSiltFQoghWiTZKblW84fUjB5W2iibEuQgI93j1wMyctQf267za0GFQIDjFbZJtXdG1ADeOWs7u3twXw+r3fuWeE1MmmflQygcnpo/nSBiUSv17nL1QE5yHFMS5bflByhC3xCi+asba8dVefJJ3RU5uXlJbx8+RKePHkCp6enwXw8QQoe/LXya0xmhr7x0Izf8fGG/3IWPJYYW03y6dsKzYfk8pzzbig//Ea6242XkUs30om7PaRJf4t9aIFnjObwOpcR3kATvsf2WK1WsLe3B51OZ20Mz2YzuLi4MNEkyR4qHzw+ArcVcxdSS36n9C4Xm7Q9qd0Y84+4HcRppc88/jgvwwNqU3m+ieHi4gJ+8pOf1Olx3F9eXl5L22q1YDAY1H9fXl7CxcUFTKdTMW96ag0CF/iEIMkz2m9Un1riWh6kyIYchMqjtjmmjcWKrL5ejAZuq0ixHq0sT3txfajRw5+n9kloDGl8R59p7R5DKZ0ZQqxNrq6uoscPW2VfqGxr7OimIoUHmux/KXYm9aFGN8pp6aoFC93bjMumwmLvAVxvy5A8LEmPlac8+cfkak7M1wKev9X+t9IXo8vjw1tsrbXJ2JKDwKqoJSdQSqflIeVHjSzNMKCTr54AbkjxWugP5ZMS1NXy8xqVUtmSw0mdvFyB4R0MlsGd42BY+IEP5twxE3NGSwV/Y8GDEC20XbwBSprW4lBqQaHcdgjJndJIaSOvw1EyiMXLT3U6Q/XZhMEcMvhTZGtpWkromVK0WNNToIG9Wq3E3fSSA7xNRylUNtaD3tMm0RwzolNowCDVcDiEyWRSB59KyyRNf5eGFlisKvnUiBz5EuLNJnnNMy5T7AKLfkp1UiyQAnSxfEP9Tr/x0sPHIQ8ijkYj6HQ68PTpUzg/P1fzCNm00m9ub2h9HuIFTzCN1skCicdXq9VacDrHNrXSnuOn3MIPSedwfWTZ+YTf431z2ok+JeRo6UCFB1rQMLWMFB8tZnPh6Ru462gwGNQTU/jtaDSKTsaGaMux9Xgaj6wL2f4Wn98Ty9gWcPxgPwKEaecThqV3uFnlvSUOoH2j5YOoqgpGoxF88skn9TO6Q47T12q1oN/v1zLp4uJC1ef4fbvdhm63Wz/ju7V5+hBiO3usOiukDz2yLidGYY1dIaj/0wRivhdPx/UZQLj+Fv5NmeCI2Y0W2eShLQYPb5WE5t/Stry6uoLZbBbMRxub1rItNuUu6ocQUvRyTP/mxu9isTtpbGrlSJvkUnT6TfUZYnMy3B6S/Dfpe0u5ljbLtbelcqS6euwLjf8kO0PiR0sZGq0heNrUWr6GrR9TnBI0QEiGBAaMEfRO2JhgTwmIIVN4jevQhFdpSLtUJBo0SIPFYrTQdokFsKQ25CtPLce5WoH5aAYb5ZuQcOUGLtLN0W631+pHj1WTjGLNgdfqTo+xpZN1Gt20DAzObOIo6Rw+9yiRUDlWAds0FovFNXkVg6S0tLqGdl0jmjJkOU2SvNNkQYoTGipr09iGcxAbV5oMTy2Lfa/1LwABAABJREFUyvVddoY4L2gnYKxWK3j+/Hl9hHCr1YJut7s2WZtLAwbwJpMJtFqta0df5cITkKJBQq8MstCwyTGIAdFQX4X4NDUAHJOr25ZDOUDbpt1uQ1W9Pq40pU7UHokF6r35U/sQAGA8HsNsNquPJh6Px43IJ8k25DYlp5Gm2yRQnnkCgDQttQtjgTKpfly29Pt9GA6HO687ENT3CN33nZIvhdRum24fyxiMTSbkyj0p6Md5sIS+akpXaXLAisViAS9fvoTlclnbCPz+euRFb1Bf8qEtPIZ94AmSS3ncZJ0I8NqGk8YqbVtN3nMb3OoXpdLatPzAO7sBAHq9HiyXS3GC5vDwEPr9PnQ6HRgMBvDOO+/AbDYTT7bAWAltQ95OuIihhCxOjYullrXJMcBjQVg2nyTjfOflw1CA3hOUt/KslAZ1Qmo8BcvGo7Q7nU5dzmKxgC+//BLG47HpJKXY5IIX/Hj4Jo8rrqoKut3u2vibz+fwzW9+Ez788EO4f/8+rFYruLi4gPF4DACvTqtBnURjnSV5nfNyLK2GTY11L6qqqv0tgNf8KC04SR0jlm80ux5plH7j36F4o2Z38Djmm4wUfZXL75tCKb+o5PhMtadi5TbR3qbJ2CYnCjHfUOVCk2GhPPn3Wj6WQDZPK73zto+msC0Tc/Q5N/5jwPQew5B+E6JN6iMejKNCWOtTia5YWbHvJYTSa8ftxfhI+o3OGn2n8Y7UN5b6hOoS6hce8CghaCz9aA3qpDgGofybhlRuqE80YyTGX/SZNhasRmksz9zAlYeXrcpYylNr+9K8YOkbnnYTBpOlrhKfaU67Bml1s/Rb6pem2yG1rKurq3qSlDoV9L4cPiY8bUadK8t9Ojk8a9HxTY2J0Fj38qYFGJzQdBxNR2nk9lNOe2xK5zRpg1veS/aPFmzijnnMdg7xqfQt3g1K9ed8Pof5fF4HiTC4wW05yR5NQUyHpuQVCt556c11RKWAaopNQdHpdKDb7cJ8Pl8LPnmAk6KhIHBpWPwfrfyYPR/ioyZkpqU/PXZLEzod8+SByFgg2tJmHt839Rua3hLcoXJ1NBoBwKsJLrQZpLFIy7LC2z68XIut7W1bSU+XHseleFSSAdyXpmlDY80iB6w8FKK19PisqtfH4lsW9PX7fdjf36+PJj44OIDxeLzWXvg/j5XQdwh6j6UGa1yM9lHIXwnlkdO+JexO+luzI2g9pPrl2EJcftH/c+Fpf8kesALbpd1uQ7/fr/PDRZ6np6drR2hrcs4ah7PaUUgDzbeJyVjahnS3Hj6/e/cufPjhh7XtPZlM6slptLelby184LGH8P224ntNgsdV6ERsLK6Y2zbWcctltjW2F6vDJuJjqYi1fSxt6HkorfUbT0w1hy7tW6lvU/0GrqskGeKlOUUGafRbfT4vtr4zVkNIAeOqOe0IPNxx5lXMmjERYjLONBb6Ka08v5jxnuLo0Ly8wZUYvaEyYmmwf6hRD3BdIXkGdeqg4EIlRzHgTlNKy3w+h6qqoNPp1P8jr3K6PX1j5XFLGu24BK1MNBZSUCIA5CmH84d25/QmgUY1GrA4FqQ2pQEZyVn1jLsQ+D22kqPqAR/j/B1A+eAplpUa6I2hRDvvAnjQSzu2SwqEhvpzF2B1iDENlf/T6bTeGYsyut1uX9slSL+3gO6EX61WxVb2czpSDNVdkIdWcJmuGdExXW7R81Kb8HbedJuVLDcnwMvzKSHzpDwkW+r09BT++q//ukggU7MRuD3fpEzXAvhScJXvbkO5sgk6mwann+om/Lvb7cI777wD8/kcLi8vYblc1pNXALD295sYvKuqCnq93trpDXicreQP4G+83w3ToL1fql2oPKUBY2pHWoKsqWXTfLBufIFpTpCS04rvaF1Tg0SHh4dweHhY8/KTJ0/WAlH0nxbboO1vOXZeg3avbwg3wW4ogVarBXfv3oXFYgHn5+fQarVqn14D7S9vPIp+4w3mWgOwuX2HxwbjaRS4mLHdbsNsNoPpdFr7rd/85jdhf3//WvxDmlziCxBwIgwncUv5vN7Atweb1MdSn1oWroTysX4TS8/tk5LyQquj5UQjLlspDg8PodvtwuPHj2E0GsFyuVw7ktwLya8O5UPtOvwWfVCMJ1quJ/AA7QosH+sN8Gqx8osXL+Di4qK+Xmc2m8EXX3wBs9mspo3SzWHxXTT724ISfFWaP1PKx9MXNiE76HyKpTwtDY8Hx/Tdm2gzeHzzUgsqvPM3oe+4bSu9499JR5Hzvk/hY8m+TbWvbwLUO2O1gIv2rgQ4I8eYRzN0LN9p6UKBaE6jxCy8PK1OHkUTooFD68PcgcHLl9pQG6wxXgq1u2a8lXQmaH5SIEijOwQpHecdVF4lHApepsRfMd6O9Zs0jmK0WXiVt31MgYeM2lg59Hur0VVi7Fjqxo/Ak+jlecX4sSnDMsbfPE2IT2I8FONfqTxaroSmlXRMppWAll9oHGtt5oWlbzcZiPCC0x3TpfjbGgQKlYv/a7Jf0hMhuuizkE0Ts59SZEWpPvbKYfq7ql5PcONxxQCyHIjZETG7omkbWILWLzk0cJ2WK5O8NkBMX0n9RNseV+bTXQyImDyKBQl4efT7UHrtmbdtU51Ojx9Bx4O3LI/cSOGrWDvT0wu63a54tJvFnihFk5TW2qbWfuNjB48D7HQ613bNhPLBf1VV1aczSOly6I7JWk2uSvWsqupaADy2gEkb31ZfxeprecZNLC3uFqfHvHIfLhR74LTlIjSGvHX3+Fy7ZjNymYnjhvJ4SFdJ0NqjVExD67tU20WzPbgOwWe4WJguCEAZ1el0oNPpwHQ6vbbLUPqb1oeOe5R/mqyxLHKUyizRNvRdKi+n2Az8W49NbaUzJHs030MbI9rvHF9Ayx9APqKdpkferarXi+JXqxWMx2MYjUZBfisFKYYB8GrBA8aHUuxDS5kA64tPcUdwu92uJ2lnsxmMRiMYj8cwn89hOp1em6hGuiX5IL2XftNnFr8hFZJN0lTfWsBlnTROrOMPEZJDtH1jbWtpF6lfc/PcJmL0W+JHIV0ca/tc3rfYuxr4uNVkvyT3Y/0aai+N1tL1t5adwqMptK55Y5u4O1JjLo2pQ8wqbemnadFpDdGg0WhlYm+AJgZqDMQcotgzz7clEAqwhcrWDGm+2tgSQLIYfiFo/CYZBjwtvwOUv6eOinQUtTUIQGnCfzE+1wxQ7kR5od1HLCGkuEKGWgypwbVdMARWq1c75JAvYkYhb2ucfAi1fejuWD42aduXvLMMy+fKvUlsymGSsEsBJQR38KRVtRj8lHhqtVrfNYp9Op/P11Yhlw4u5UA6bUED8j4epybRjOMUj0iNgQdRsRwLf6BcR3vAgpgekZyAXeFV7sDT/0M00gk5DJ7MZrMk+WXRw6V52etwSTSW7sOmAiDIbygvMLAd0wmhAAQeV0hPJKETOPRbTNMU+F139H/LwrsSkOzOUDpv8IS2KT/ZRSt7l+SMFzxgRXdbagFFT5tK95hTe4li022IdKAslXiYn5ZRyrbGsu7duwe9Xg/29/dhMpnA559/DgBQ765LbRPNJ8qFJbCb4pNKJxdxGyvW7lpgsKSdH4PXv9s2kMc6nY5qF+LEBZX1ALb4kDUY7gHlBXqikrUcS4wM06D+xQkjaZHHfD6HyWQCn376KXQ6nfp4U7zPnIKebAQA9c5aiYZOp7M2WQQA9a7lUBCclrNLKD0upBirpfzUOLDF90BoE06h761+E0+HiwDQb5OOuO71enB4eAjT6RQuLi7g9PS0Hjuld6B68cEHH8DR0RF8/PHHcHl52Xh59NSmhw8fwne+8521cb1cLuGXv/xlvRs+1j7WfrOkual2pAUSX5aoszR2NF1WQh/ROYwmsU1bwipbS/GsFKMvNa5S5kykndSSTxQrS3vm1V0lsE27VNwZazHEAOzOjDaBZQ0cehS89kyiMZQ/n5jQaJCEQaxdYsEnK0OkTGrEmJ6mCfVP7oSKVqaWL7azFqAoMYi0vqaOLw1OaBMWEv30PV/hSYV1LPiijR9p4kNq01DdYn2iITdwq/FZSl5SQEyr1zagyR76HNsjNPYkJzY3qCLRkDOxFtIFnCdLBiRiBqa3DIvMzJWHtCyrTmkKUmA4JCd2DR67gbY37UPJ6OX9ktJHPNhBdUrsO0lWSPnib0kOWnVlSA9Lz3Og2Z2hMrjOwRXcJY7+sdiPKe3AnQuL7Wexk3Oh1SHHtrMEoXOdfZ4ff8fTSHat1I8x+lNlc0nbiNchZPNZyuD5aGlidGmgfDydTmE8HsN4PK53R3nHEd4NLB31rvlalAarDEzxrVL6IJU3cDdlqF6YN+4mxklM3IHpLZPm6bEFPeNmtVrV8hx3AHe73ToA5O0XSc+XgNYO3j5HW4BeUyKN71QaLfYFpYW/C9kclvJvMij97XYbDg4OYDabwcuXL6GqqrVFQJa6praHV0am8kzud7QtuM2D8no6ndY763ACF49elcrvdDpw7969+h3uVkRb3bJIUsrb0xdcdmh2ayzfmAzahu+X43+H6NX0hccG9NAmyWHkES67JF8JeRYnbNGvCPlBMfuMfyPRSZ/jaReo99rtNgyHw1p/Yzpp4Z8HGt+iP4UL7ebz+drVDxcXF/WCV2yfJhDybzXk6spdgCQ3OTz63MobmnyzlOGFJ47i8cV2CZZ+y5XtmvzJjQNbxpnUT1yWSvRKf+cgVQZqNrtFRzWho8Vziugq2BCsjk3IcdMM/Vh+q9X1lX6lLzXntHEBSWkI5UFppH/jO2nnWqxtLW0Wut9vW7AaVN6BGuMxT/khLJdL6Ha70O12YTabiSuZpPKx3NlsBlX1+s4n3IVGj6biQqAp/ubgq3ktAdXcIB1CmpTehKK1lMON9lLOkVQ23k2Jhq72HQal6E4fpE+7c9aD1KCbJ3/KZ6XatHSwbVPwyP6UvEMGG9dDIfpyddKmEBoLHOhMhu4YwgAS7o4IpeM0SKDB8NQdPtYga1VVazvYYnZLjlGL+Vt5wJNO46/ZbAaz2QyGw+G1I2tjtMZA24vebY+yNwVeHUfT7Zps0wImTejv3Px4oCEkE9H/2VZ7S7Ry/uenkuyC3A0BZRHeO4YBeXwn1UGSofP5HM7OzmA+n8PV1dXacZcAcjAn1a7ctfFGUVUVHB8fw3K5hGfPnq3Zg1SXYxu/8847MBwO4e7du3B5eQk/+clPoKqq+m700nW1BBUl4ITk0dERDAaDpP6itiUGrmlMo2RdS7TdYrGA6XQKi8VibZI8VQZxmnL8aer3WHylTcuhTZbX7XbhV3/1V+Hi4gI+//xzqKoK+v3+mj2noWQcQoI03jYdyMZ2oJM5GqbTKXz55Zf1ZOxqtaoXl3AcHx/DP/7H/7i+n/ZHP/oR/MVf/MW1ss/Pz6+VW8qfigWaKR0WP0nKf5dgaTfPiUNN6JgQcGJTO44f4DX9SJ9l16nFz+VprPXudDpw586d+vfx8TEcHh7WCw0wTzoxW7JdMa40mUzqPJ89ewbPnz+/lhbjlxIstGnyadfGwabR9DhBewjBYxbaN1bs0nzDLsLL37H5EOr/hWwM6Zh2nq/Ud3whi+WOWPp8l+KCGjTapPawzI+k4JqWsiiPnMCQpKSkWWZrkIo7DbnQJiE0htIGggWcfsr0nokfi9Ht6attBiCk9sXnlmAa/8bDq1Ia6Xs8kghgPZDOj2zT6NR4KZQ2Rh++9/S1xUjytBt12EN1DhlhUn2ltCkCvpTwDE2weJE7LnlbevKzjiFLvp7+CPW9xAPePqaB11TZnIoc2ckNl5DRZNHPVppS2wbbFR0ya+DQS18OYnWTxg492hjvJ+TBJc2o1WQYTbMN/ZpatjSurbaZhR4PrMEPT/AYv7UEmfH/mE72YJccFG9drG3Gv8Edb1R2SEcexSAdsxWzFTz6xEqPJKt58NFrm6VC0n1IE4B8fGZJuyXk19Fv6T8tj1xaSkM7VtOKEnRim3W7Xej3+65jt9HH1I6ns5avPeOyN2QPWGhut9v1wlcAgPPz8/qeaCyP56VdbSPxnNUOsYxbid+5Dy/5RLFnmj8U8rVyERvbmi2xDV0WoykVOPmxWq3g+PgYBoMBtFotGAwGawvyUv0dK3Jtc5pHalxACj5axzWO39VqVR9NDAD1nbF0gRt+T3VVVVVweHgIh4eH0O12YTKZwFdffQUvX76saZKOX9bsAq9/HHrHx3VOX4XKlMa4x+4JfWORSTS9Rh8tz9LWHj9Rk5+Wb2l5qJPopKZUFv4dG+Ml+luyG/nYbbVacH5+DqPR6NqCj1B/WWmgZSOoXYHtxpFjRyBCsUCergl9s2v+V8y3bDKWVcKWaDoGukuQ5FLomhpLXgBxfWAd8yXibDF/mqYLybVYnloZOdDGT4g2+l3MN02lUau/vmQIbINTUsQxQ81jwIby5YKr6Z2DXFECvA5AW4K+nF6JKdBZBnilEGNBKmvZmHaXEaNTMlykI8pKCSEtsICBeQyGYBnj8bhOS52EUuCBBE2Q0EAgX/nnUbihwAVNIyFXsYcCJiX4uASPlAStV0odaXt72j7kkHFju+k2KhFg0oJXbzuaNOBxNzfu7NglhOSWJj9ns9naEVEHBwcwHo/h6upqLZ1mlOJ7+jskq0tC0gtUD3B7wmsbWOnNrVuq3PE6q5LhvSl5EQtCbEsnSXauly4cHzSf1WpVywp69BsN9lgCeJgn3fHAy6Lp6f8l+5a3D6UPg1l0vDUx3imsga1UUHuY58vbvmlfbBtYLBYwn8/r3ZqWU3FiCMkdfMd3MSyXSxgMBnBwcLCRdsaxzGmlJy+tVqv6/mf8hp72EwvUSOO+0+lAv9+Hg4MDWCwW8Nlnn8F8Pl+7H5zmAfA6GIZ2CF0oRn04Lpck2ihSxhC2x3w+vzY2vTa+5PtRPy8VXlubywD6DOm86cAdXzje33//fXj33Xfrd7g4oDS8fRGS95puos9iecfS8zTSyTr7+/tweHgIFxcXcH5+XvsIUj2Rl9E2mE6n0G634b333quPKH7+/Dn8yZ/8yZpslBaDbsPnu0m8H4urSP3vCapb5IHH5tYC41b/DidhcQFAt9uNlol2KvKrh16t/qFxFMrz8ePH9e5UXq8S4BuBer1e/Q6PE982btL48sKix1NsvZCc1d5zeHz+tw18wWHKna4atFiOxCsW2RzbAS3laamPN+ayLfC5EAmxcdhkPdcmYzVlE3NQeAA9dyImhRbpnUfBSw4GTaPlJQWuNEhlUKHIV63TABMdSNqASEWOI2UxJKz5S85FyNiK5WNpJ0saFEp0VZ1EL+6SxXch/prP57UjgYFFzF8KeKUKiFRjjZfndc4sfS3lZQmQ8HGj0WXhkVC5TUAqB+tDnVkpgMV5SFMcsTGzWq2urfqM1dsqS0sFs0IBBI03advFxos36EHzT81Hy4/2dQofWnQUT6uVEaJDanctICSVHSp3E+B1ismHxWKxtjiKvpN+a3UN8U1IRwDANZkQo1uji+owy1hP6SMaHJZ0WCo0enL5yNOe1BaLfRPTQbSd8HdKMEorM/ad1Vblv722t2YDoY1DnT2r3ub0pfKppEt5vl7+ldJpMkdztPF/j09hTVNK7sZkfih9q9Wq7xvDSSoqXyWeoc9brRbM53P46quv6qPjp9NpY050VVXq3bSx/FPa3duuuDBU4lXcgY4+y8OHD+Hu3bvw6NEjePbsGfzkJz+pJ5dw4slKT2p7emyVXHC7KuQ3pNhbmmylOydDfhyOi1arBScnJ3B5eVn3g3X8a5DkjuTv4N90/NDxWLI/pPws/rglr1z/JfZtVb2aoMDd2nQRNtpUXrssl05N5kj6Tet7D30W/57ye7vdru+bxCPpuQxF+5rqPKk9B4MBfPvb3167xxP7w2p3WxCS414bxZp/7F3I9m1Ct3OaND6SvtHGd468tUCiC/kN7xFGnkCeifnF3vgKhzU2RZ93Oh04OjqCvb09uHPnDgwGA+j1evDZZ58BAKydKpMLSgPdQIJ54725ACBeZWCRIx7fiubZNL/sElJ0nvUbyW/zxEFy4lKh/G4KeL3b7TYMBgOYTqdrR3lbYgMW/SG1N/eBpP4MtWvM5rbGw6Q0pfzUVD8+9K2FLqs8K8m3Gr1rk7H87tIUw9BqJEgBB0khcuUQyzOFVktamp7SHhtgvD1QOGr5onGPabV7X6Ugl0a3t445Boi1HFoe/y05DqkCLsVolYRXyEjAd3SnBr37h/c9vscjz9BABAhPnkplh3YvpghuKySF7jW8pGeaoSAZ+blyQKIllq9HYHvowH/UueQKmf6Pz0P3/GrjAf95ecHqLOYox5z0/LuYHMsxLEvls22EgnAYGNHuQV2tVnVgRNKHnFe3DUlncvnF60bTYtAolLfHOKVjUTrehtLF7+bx6jFc+GPdzRWSg1p6WiZvy9yAmUaP1+bTypdsT+xLyhshHvCA859kF5ZAE86vpuckW4PrGm7b8oUO3PHk70oFBTh9vF5e/tfyt9qn/LckSzmN/J2GEF81wXOxcvAEGYBXtNOdZjwQz/mBTsbSfC12WWqfWu4/RFqkckPw0CTlR2mj8gp9ik6nU+9qeffdd+HRo0fw0UcfwXA4rMcfBlo9dUjhG65/8Rnn+Vx+lMpJkRspOgf5Gds9Vh4ukHr58mVtz2MeObJO86O0dJiG+yD0W0vf5NrFGo+kIteHoOj1enXf0slYzxH7pexgzbehMqBUvtJ7zS/Hd6jfF4tFfa83j23QuAelH++cpc9xMvb09BQWiwV0u10YDAZq3IHzUS4vWfg+Jhdy8tfgqY9ma8byCNEmxW7oO8mujuVtaYvQYnKsn6S3caEMfsfjq7xdpN1kEj/xcSfJMQRPQ+nBydh33nkHPvzwwzrdYDBYo5+X4QX/Vrq+Yrlcwmw2g06nA71e71osQAJ+773rHG07Tp8nluSxv1LGWylbOcfe4+8sefF8rHEZSd9Lcq6p2M42+0hDp9OBg4MDuLi4gNFoVD/XFkh4YmCafcVjVNq3Ut157II/52VoZUvfUHpjfjtPo5VhgYX3Nd879E2O/k4BL0/dGetBjiHhEZg8oEPzyYVFkJfqEE05A7xWYji4paAE/sa/6SS6tT0tg29b2FSAyAJKC11FjqvyF4sF3L17FzqdDlxcXKwFRrrdrsmAofA6UvxI5BCf0OcxeAxnjUdDeccM/G0ix5nNARr/dLUwdwaw7aSApbcsGnixBp20smJ9H3JO3nZIwS4u33PgMdwthhI6adQBxaDiTYFUL5ShWDdMxydCAa4737GyPDotd8LP0t9ID68HX5CnfSc9R9oxH699J+VnAaadzWb1ZI1HPlL96TlmW5NptP2tjgMi507KXHCHysqvWkAM/6e8hvbQwcEB9Pt9GA6HsFgs4NmzZ+4jzj3yrKTO8dqnJYKeKeA82Wq16tNb+Ek71rJTbMk3EWjfY9CXIoU/tKC21sa448d7ZOrFxQX84R/+IZydncFgMFjzY7RyKI3cV6U0428uP1L5ej6fw2w2g9FodO24b/y/aR60BNNQttH7bWezWT0BFQqyeejHPLCvUE/k6AtuB1BaY7KTtkup3Vq7AtoO/X4f9vf3od/vw2w2gz//8z+Hi4uL+rhy+g2Cy8ld8HctcoWnjfWplXZ+RGCsTVqtFvzu7/4u3Lt3Dw4ODuCdd94RFyTOZrO1ezSbbstdjptZYbVLS5ZXCrFxFIuBYuyu2+2KctMzeSLRw31CaYKR/o32Q7fbha997WvXZMrf/u3fws9//vN68dmmgHq/1+vVun0TY8uiQ7alZ6S4/aZo2UadS5Z5E9sJT8CgC+MWiwWcnJxcu7t5W+AxQ+m9dLIb99Wl+S8eD+BllBirpWSKhRaPrbINOyI6GZvipHu+tzhtXMlajUrNmbBMHknMGaIxVI5UJmdqnlYy5qX6SIZDKEicOtGktQen0QutzXh+Wp2twiFncGE5fBUdGna9Xg96vR5cXV2tTXIBQH2sDofGwzQwE2tz+r3U/qnOYYiuEB1WhIL5MVqkMcudCz7GLJMSGo0hmWhxaHkaSz3phCwNeEl8ERr32li3Btu5EvbKFd5OUrC+CaVnkefbRIj/Ke9aZEGorl6+Dj3n4AuApIlYa16l5EqsDEnnSjTSumiBTtpP1qCqxP+xfEN5SM+lYGoItDzLBKq1bPouZK+l9LnWLngahbS7Lmbbor7GoL9WDzouY3wbs7VC+nzTsMok+tyTJ/12uVzW90Hu7++Lu7U94ykWgOO0bAKSw8v/1uS61ZYPQbIF6U7k2Wzmtgm5naWVRdNLNGl8JNkJuwBsO85ndMGchXbPGIuB34Eq5YvvsN9brRZMp1P4y7/8S5jNZnB0dATz+Rwmk4lKVwiS/OM05Yw7PCaRy/QUez4XIbsX/2HgDulF/5BeXxPLL5SGy1BaNk8f031aXbw0pabxYNOym5fX7Xah3+9Dp9OByWQCv/jFL2A6ncL+/r4qy6ztrvnsqW2o2aVSORb/tRRo/MTiW7daLfjoo4/g/fffh1arBYeHhyI9lvssvTGBGHZNP6VCkxf8HaKUrZ7ybSwWyH/jSUD8vXSvsOYDesevNR7EbQWU5cfHx9cWVz19+hT+5m/+RqyjVRZb7DpeF6RJWryn1U2jyTPmLG0YioFtEqXHQ0iXSP5oKlLt7BydZOGBTev5GDqdDnQ6HRgMBrXuGo1GcHV1dS2t5hvlwDoWePlaGoB0ubZahRfcpfiDFnh4IuRfefKQZAzPy1tHi73V4Q88gVFu5DTFkNSQo88tStWSv4cOb76S4uD5aLvgOGLMpg0aqUytLkhLaluWEqiWfDYpvDVjENFqteDOnTvQbrdhb2+vfn5ycgIvXry4dl8K5oH3A9G7IKqqujYJR/9PoZ0ebaI5+QiJd/kzvPeN0pzKNyXgkVvSt7tiCIQcaAqpb2Lf8LQUsdVT0rcx+iRaY3Q0AW13QmqgG3HTgk7ccMP6SydNpNBCV5RZgqabRGrbLhYLGI1Ga/I4hKbq5Rl7EqQjYUuj6bp7+ZIunpLGvxf9fr/eTbZYLODi4kJdhGBxDKz0aAHWUqD6htofqdCO3A6Vj/ZRbFUq1j9X33Oe0PST5pjlwEoz2vL4dxO0NA1uN6KtizyGtiRPr+VDYRnT1kCQ9B1OBr7zzjtw9+5d+MY3vgGDwQD+5//8n3B+fl4fHbhtYNCUT9BOJhOYTqfw27/92/D+++/D9773PRiPx9DpdEy7yXLGmIZUWe7NH0HHSwkdIB2rvlq92qF3eHgId+/erY9llY5m1YC00atuEFa+jfF5apvzMbxNP28XgAu3xuNx/azJ9rAG4il/U/laIpDvPd0LQRdaxXgPj0PFRQwArybCv/Od78BwOKztLoDXOryp+J30Pf1/k/Do/BQbMzZBYokp8HjjJk9JQvqp3Xl8fAzf/va361OcEJ988gm8fPmy/o3ppWN6U2iw2C/0FB6pnfC0isvLS3WhQcqkSgw0rqfdxdwUOP+E8KbrnhJ2SgyhNpTiBJa4MX0W0lEeWjaJTqezthjCEi+R5qa8iH0vtU9qmdJ8lOT78msCpPiwlHcOvH5aynxcaj5SG1kmZD00Xrf84brxrSEU3C49KSuVSxtEMgiseXlolBpaqmvMAJYcXYvR7G1X7vxKNEq0WBRiEwrDMjG4KVjriHdT4H0yw+GwVqjj8bi+b4EeYYz/awpO46ncwImVf7SyYm1SatxpvOjhyxL8wvPyGMDSmNPylfK2GDTS+JZkSiiAYulPC3+VGqMxZRYKoIcUpHVsSHRoeZSWSSUCBhKNWr4xw99SP5q/pX2sAfdNOoMSkJ+53C6Rr/S3hpSguGanaJMTUv9JcqZ0n3hloyTfrDxK85byigHvYFytVvXKe8zHapxbIdnWTYJPWITaVdM/0nvtO6l8axCG92XID5FosDqSIVs0FyEbUEprkZmWQIc1Lw0entDA5ZAWuNV006Z8AeTJfr8PR0dH8O6778Le3l498dk0DRqfVlVV+xP4j4/ZqqrqXf537tyB9957r14syneo0fIwD49/GRvXqXIRJ5f5vbgWmigkPsrxEbj+QV7AnbF4lU1MLknyhC+alWReu91e68ddQYp/Yfl+28Dd2avVau0KCx6wDPEUjgOrbvToGK89qSFHL2jf8fiN1kZVVdU2FdWN7XYbjo6OoN1uw8nJCZyfn1+jy6MPUupSwn6zlJHad6l1stp4qbDaWSXLrKoKer0e7O3twf379+vTcmazGczn89pmT40vcZT6loKeqqfFIDxxME/53A+gz0JlxvRaLrYdC+DQ4m2h9Lnl5SKkn3J9M09+uembiDNivtId5lTfS/ee59iSNB8pj1LtLvmJnticpY4pOkzqy1w96JFbljJz/WVrzEGcjKUF7YIQXK1erZzH3R08YLSpVVjcuEwVIJa2xTqFLoYGeKW4rYEBS8AMkbJDdpu8kmPMWkB3UnQ6HWi32/VxVF999RV0u1147733oKoqODs7qw3C4+NjODw8hE8//RSePXsm3j+I/G2BtsMVf2v8QtuHjh3O0xwxwe0dezHadgkaXfx5jP4U44E771IZmuKO0UIDSKF0CHqPdSwtD+alOKU54HxuzXNT/LctPi8d6KJti8HSTqezk+OYg8tBLsP4bjQOLdgr6UtLe9BJCVq2VJYlnxAGgwGsVqt6ty+l3+rkxwKLqdBkXEyW0H7E3UgYHA+Vhd/iXfBVVZnugkEb4PDwEObzOZydnQXps2KXgtGcH0rraMpzOflqQWxq23B9kItYQEzb8VCiXDr2Qg6eFmjo9XqwWq1gMplkOcGlHOhU7JKeSQlWIWg9tPvlKNAHvrq6gvF4DGdnZ7UdjnTgsaq4QzOFlhRo7ZAqOy4vL2E8Hq/VTbvnr2mklEHHaavVgn6/X9tLeBIA5ot+G5W3+DdfyPvBBx/A/v4+XFxcwGQygZOTE1itVuKu2hCs8QAuQ60TAlYatLw27RdWVbV2Pxziq6++qu2K6XRqvi+uVBtRaPmFbB2rjkVbSLKJU8DjE1p7dLtd8f7dwWAAe3t7sFgs4PPPP4d/+2//Lbx8+XIn7KRdiFlY/PcSEwUhbDvmR//Go8O///3vX+OnX/7yl/D555/X+hDf8esapLwRPOYTAvfjLFgsFrC/vw8PHz68Np5R76P+iCFlUoT+nTsh8qajKb7ftkyhsNq1u0SzF1TP8bru7+/XMa3pdArPnz83x+lL0WSFpQ8sE4I8zSYW/DXJP5Y6e7/HPGIxOm+9gta7FgTzTN5YjAGLU6DlJwVapMkSiU4PjTG6ed4SjdI3Ocor1la5+d6UidhtlE8NFhTQPEjW6XTq1Z7D4RD29/fXgsU0uGAJOPPfMWO8CT6IyQKrwWoNBGh0eOCVQfhNaHxx4zWUF6dB+jalbryPYw6iVBbvh1hdtCCshR9TkKNMc8eA5fvc/qPfhiaeSjnVniBCij6Mtdk2nbXQBEau0RbKR8uL9gXVCVpfe2SUVFZsYipkQ4WA9bZ8E+NjXn8toKfJX35/o0U2Yx5Uf0v1wCA6OmjSnVRSPWgZofQxNBHclcqQyvI6MKl6QdKTJWSe9H8oLaXHQkdMhsTsOymvHJtW67+UPC18R+sX4h06pq39GhuXPC9N1vJyY7YSvkcbHo8xs/K2B1a5yfVFKHCDaXF30Hg8hvF4rI4HK2/SbyxI5Tl+jHUsMCTpjRCvefjPAiyX30so+UgxPpZsdNx1i34l73+LHg7pRIvv2YT+8dhMqfnH8pLsDqQL71XGcYS0Wa+uCEHzC2O0UrRaLej1emv3QuMkE+9bqz+zabTb7XpRJ9JIF5ZPp1P46quvYDQarV0/YdHlpewIiibaySOHLbCMZ85/2/TPOGL+iOY7DYdD6Pf7axOaeN0M2u2SrmiCT0J1QgwGg3ryuKqq+t7xs7Oz+ih0j69ngWarxsrhdpZkp6e0Z0kdELPrLLR4fN9YXtuC1Ff8OU9r0fWx2FQoziDxhGSP5MYRQpD4lG9iwmd0Jz1fQOf1Yzy0WdJpfg5AGb6M+Tkl9IU1PuNFjHetMi6WJoVerezoUspNCpOQwx16FruoHX9L36fO/PNAISK2QhG/pf9Tpz+Ut1VJUMOkiYBOihP/JoK3Ta/Xg16vBwAAw+EQDg8PYTwew2g0gkePHsHDhw/hpz/9KZydncFisYBWq1Ufe2gJWEpOmGRMNgGuqKghjLRp9ynlyJCmhDXPk+ZrkQmpwdKYoYh0SI6+VS7SXfUx4J3FuKpeMsboHSf0Ob6jMo86yttASNlagrlcZqaMyxBijgrdHWmBlwZvYM1iPNP8qDzYhHOr0WEJRHjztMBzokRq8C0lj/l8DvP5HPr9fqN6oum+pkEji8NRip5WqwWj0QhGoxHcv38f+v1+VMZJujl3TOxawAxAXjQg2QMhULnL7XJpYqIUrRaaLG1uyZfXqUTQyJq2aWh8TvsV+SJlZwe/j1wqW/sW9ZL17mgelOz3+3B4eAjHx8ewv79f2zt4KtG2QPUtBe6kxHcXFxfw/PlzWCwWcHV1VR9/OJ/P1b5oSs7EfAKUG+jTp9JAeU0KEnrzkuxKnhdO1uF9sVYboNVqmSbVHzx4APfv34erqys4OzuDZ8+e1YuDOL1UT1oQ00sldemmYelzbCscE9ruV5zMwbEXC4qWpFFDr9eDhw8f1jviv/zyS3jy5En9PhSTQmgnajUFaUxNJhO4urqC1Wq1dncfRafTgcFgUE+u3UKGty9z/CJrjKZkGTgO0S7neqzT6cDe3l79ezgcAsCrsYLysrSfxmmW8pEmfD766CPY29tbsw+//PJL+L//9//CYrEofn+rRhs9eRLT0XaVYgC8PiGZuGvwzDV48ipR/9K2vTdGlTOGc2nO9YssoPYWbpaivB+KH1li9hZ4556s8Y6UOS1uf1psBkxDbexdgWT7enhnG/XxnWuTAUsQODbJhwawFDCXlDUPsJdoYI/TQgd2LAgvCXLrpKcnwKcp4tg7DaWUTizfXRns0qQdBnrOz89hMBjA/v4+LJfLehU6TtDyiRbar3wSTgreSnxgcQS9yo2PFesEomUcNgFOb2isecaI1M4x2cW/s3wbo5W/kwKKsXpJfZoypkL1T5lokOpmzSPET7F+svKixFsl+dgTKNK+TZX7mIeUv5c3aAAwlcZSaNoRTNGTXj2nTTyk0EZ1Cg+ChXSFFDCT0jfZtxpvanolxG+WsYuBD76oAPmb6+FQ2SEbLwZJHob6rRSwHPznvRtT4mfJjp3P5zCdTmE8Hot3Y8X6kZelBYpKBlw4DaF+kN7H+q2EPOf8Sp+j/5TCOyk8l9rGtP9Ky/IU/U3Hg6bfYt/H2k7yBaT3Kc+x773HZ3vtfit/xNpQ+x3jB0u7WceYte4WGhA4eU91iwfD4RDu3LlTL6zC8Uxpsvg6Hv4KIdWGTs1/EzYkb0MAqCf9cJGDt+9LyDBJv1F7pKquT6bQ8WJtu5Dt4skjNla1d6vVCu7duwdHR0ewWq3g4uICvvzyS3j69Ok12bVJn2LbCNlVXp0U0zVSegsPN9UfnvHTarVgf38fhsOhyoPcjqfPYzSE/DIrnbz86XRaLzbDe21PTk7WduFbYYlvSHYp9/N4ftZyU77NRa6dWZqGEr5F7O+mYxwhWMaChqbtAM+4pGOFXn+JizxwTI7HY5hOp+7YlkX3etJo30h5cP0Q66sYP6XQYMk7J0ZiydOjG71levosVjbABidjKVKNc3Qo+d100m4UroilY32aAD82KPWOG68BgmVb62dV2jRtCm1vMtrtNrTbbZhOp/W9Jnt7e/Ctb30LptMpvHjxAg4PD+Ho6AgAXvWPtuKk1WrVxyBivhp433FhS/ur6TPfkQbO9xR0V4MXtK74TzKkcyG1IV+RKCk7z1goGUSn8izFAME8eFpt98hNdnw1wyHlW/w7RwamBoNjuye21UfWwGYJ+mjbx/ohZXx66KB/x3YWWMdoqmwL2T+4CIjKTi5LtXJ5G1r5TJKnsQCdB1Lf5uSN+eGO16urq2ienU5HDKw3NRZRNuNOqpRjEqV2w2dcN3h2eWv0Yv40n1arVR/7iEc/pTj0lqBiKdkj6Xsuj7c1ecDLkk4oQVotu1L5t7ws+vwm2wWbhEUmxMbatgJzkpzF+iBfNelXc37mcq8kD4bGsDfgStupql4dP5kzGXvnzh149OgRzGYzWCwW1/w/79hORWiSY1vItclDeP78ef032gjbBupmvPZIAgaVPZB08abjPd/97nfhG9/4Rh1T+fnPfw4vXrwQ+ftW/4R5f9Pto51AuCl0Oh14+PAhdDodODs7u/beYwfF6KYLYTx1xOO4ES9evKiP6QYA+MUvfnFtZ74lf4t9wXVGyG/1Trbl2ADbjF/sErQ22HbbaDySOga2jZCO6/f7axuoTk5OYD6fJ90D7Zn8TB0/mt9g7Rtr3/F4uHZ/7iZ9k9JIGWel5vPWJmM1gagFsUPB7RLGQWjASAFZLTgiKSF8jv9osFIqn35vrQvNPxY4tARrtfYOKbJQH9F20CZgYk5XU4NNojsnAJTybcpE9Wq1qu9roefN4/+PHj2C/f19+PLLL+sVzlX1ejUO3fqPyJlQDfFfqYlNyjux4EVqWbHvS/BhycAtz5P+loxcST5J3yN4YF6DVidprHM5yfPnxoi0eywVmwruemRnCLStmgxSh/LT+tQzFrx0xvIuwQPWNLH0HnuFp7PIm1jg3BqAp7LYg9B3KcHJUJ1j7cH1iKYT6HtrfWlammeojiH9zPNdLpe1syXpbJq2ql7v6uTHQ2rlcttKq3vMRgNYtwVSdJ7VVvfkTdsGIO4v4N9SX6TwiucbzjNSufz0EonWHFgCLiV1qiddat1K8KLGA3QxH7V1Qu0Ys7MswO/wzsjxeLxmD8UWEZS0BWi7WPQXBkparVZ91+JgMIDZbFYvzsGFEFa6c+VEiN5YfqnlSItErbJXg/b9ZDKBs7MzmEwm4m5/LS8eJwiNR4tPWsKvk/SXxg9N2exWfrem0fKX8sJdzDQNBiNjtkcqPRbatLxx8ZTluGHOH9Z+DPFADtD+wpgH8hvuQsYyO53OtXtlbyK8fluK/rLY/5Y2tJSn2SpeG9KahvN6Vb06OvRXf/VX4cGDB/Wdq6enp3B+fg6np6drCyoo3Vr5oT6RdGZMVnGZjleUSQsmPHKPfxMCzS/GU7ljzON/psQtvGgybwkl5FOu/Z8Cqz1r0RXat9ZvPLRZwH25qqquHVu+XC7rhcIA6za+ZldZ7ICYT5yrV+n31utYYrTS5/SflEarh5ZfDlL9uVDaFN7yjs8Yra6dsSGGSnH8SzgLnoAfF/o4+LRgX6hcKX8pjeX+xliZHiGVOohDAULeZyUVhKW9c5y+FKVAy+bfxL5fLpcwnU4B4PWZ6jSfr3/96zCZTOD58+cwm81gNpvVO2HRuOR3OWmC1VMHmheviwRrABRpw5V9WlDBIyO89fDAEmiKjcMcPtQcF95msbZfrVa1QxKCxrO8P6gcxIAjX6ASkgO5/WtBbv7SOArJ7xzj0NKXoTZLlbGSY5Oal1evSOmlcZbibJYEb3fNYKYGphSQjOl/qZzcMUPTSwvIpHp6ytAWd1h5KNS3ofbQbA/+nVcGh9LTsvEIT+0kEyq38T5AyyIp2v4p+oO3T8puWE85MYclFGzCd3RFrhU5ulVCTH+GxgWtR2l7V6Ij9D4Vqe2Zo8e1oJomV7WxQducBlzRX7PWg+ZHy7PodRqEwcnYy8vLNRosd0anIkdH0l3z7XYbPv/887Ux2ev1oNVqre2+4fbKJnSz1xdL8W1pvflEVYmgENLebrdhPB7DaDRae2blNUlmWvmVp60q+RQVzS6xQhrX1nxi/mQIJcaRN720KLrT6dSLGADy+MdjT8dsPhznVFbS7/nfEi2SHSbR2IRcWC6X9SIRSgM9Vr2qqvoe2dA917sIawzL6m/F+tKSLhXamG/STuLltVot6PV6a+V1u134wQ9+AA8ePAAAgKurK3j+/Dl88cUX8MknnySVo0Hrp5h9DABrenkwGEC321XHKV2EZuUbjRZuX2k0Uj+jqf5sCt54xbYhxQKl8btL/ZBKk1VmefOx2pCUrxHtdnvtXmm0xcbjsfgN9008tEt2Hc0Tn4f0sFZX6Tcf/xb9z/1i+r/llKwS/ir/rclGax94286jPzVbS6Mp5tNdm4zdpBOfaqDjpA89yhUVHHfYOWNqTGUNjKQ4hBaHLBfSgEZoSjlEg4XBN4VNBQcskIQc8h0eu/fs2TPY29uD4+NjOD09hdFoBHt7e9Dv92uHwlumFZqg19qwdBAUgeOQB7Jz8ktRfCmIBWrphIVUJ0mga23PFUwskClBO4I91u5chvIyaf/RyVmelge8KE27ZEhawNubBoK1+vDxlns0uHYvupV+OuZKweJoxtJtG1xHagZgSCbyd7GAqeYUa/mngDvtoUkC7mRr8saLUBCYOxlN2UN87HrywTFHdzTF7EG6gtbD89S52TXQExfo7iB+CoIFko2JOgQDrXz3iwWxIHGTQYxY3UuNp1xIbU8XCnLE7LPUIMjbhJBPaQ0WSc8l/cFtjqZ0riYLt2XbcbssdBqWN98Y/6fadkgTTjihzrDsYqRot9vQ7XazfClN9+fkafn2pskJqqsQTU1QSPYjxhM0LBYLaLVa8O6770K/3zfx0a71AcbsOO0/+9nP4Pnz5/XYxqugpJ38uXGFTSBFNmsyXZK7b2M8brV6dQIdnmjT6XTg9PQUlssljEYjGI/Ha+1Er92guz4tPi2Cjv92uw39fr+mIURnLAYzHo+vHSnK40L0f0qflC5UBw1S3HDbfJaDXeDRGCxxk12QbVI8mb/bVFuHYhehbyTa0R/S5kfoPBPKm9z+4Lpekg2a39wULHXC9tDiwAgeLy1JX0rfh/LbNVw7ppijKcJDTlPI8ceORmNUSkfz4c4qMgu9c4WWaQ0UepnBm38oLU/Dg8whaGm0wLPUFzy4uml4HG6t3XODSdzQQ55cLBZwfn4Oq9UK9vf3YT6fr90/R49B1IwuqSwL//CJgZhDFwocetrFYkjwNKlKVWo3jty+5W1I87QoG6k9Qoattd0lHub0hAKC2niWaKAGAB/r2rE6lvI4tPchZ2PTRjYN/KXwVErAICS3LG0ak3dS/paApDQ2JJot+mRb/RlykC20cJ2rjWVeHs/f6uxq+p6CjtXQzkRuE6XwpsVu8jrDJXnAK/9pemnXi9aneHffJmjcJLDvMFAaszliepCnQfsb2xCfSem0MrVy8HeMJi9/SuVqfbjtvg3ZH3zxgIdGqb0swQRLOZtoK6+/x/mJytYYuI7x6AspL0qPpINT+FkrJyWthZ9SdA3/PmQPWfoy9M7bL5a0NE+cTNKu/YiBHqMfglfvev35Tdtr20JVVdfsqlI2K9VZUnCTH6/N5QfGv46Pj9eOWeS6zypfttWnEj8/efIEnjx5AgCv6tvr9YL+103lxxjdml8t2UhNtUHIjioNr02CJ1YMBgPodDpweXlZ3/HITzVB2SktttTiKpwWOibp7tzY3Ykxn5reAU5lDqVPWmhvgWaz0b8lvRqLy4TSWXlxU/bKJuVDjt3A/Zht379My9NshJh/aAEfj1p8JsWvwHwknxDHLpbLTxpEGYLjfDKZRMsK0cbtiRSUkrtSm+Nv6RnA67uu8YQQrb5WveaROx45w/02r9+RYgOXGJfRY4pzHShL/gBxhUXTIuh9m1o+dIcWzUfauSUpqVBgxwrMw7q6wWMch5g05KjHBoF1YDXNHzcJuIIG4Hq7XVxcwHg8hrt370Kn04HvfOc7cHFxAT/72c9gsVjAZDKpVz7jkUM8AJQy4D1HKYZ2e2rgwc1N80Jq4HOTtHrHP4BPoeH/KRMDdJU+QPjoPazD3t5e3X54lxqCH6NpOab9TUbJwHxpnpV0Ij5PpU/6fteCJZrejxl3HmgOvZYvl8Gh9MgHdBejBdQ4DZ0iwmkL5RcKjofg4WVL0ERCaHe+tX4SDbgaPnTKBadNc3DeFPDAl1eGxL4pKfuoP3DT7Ndd4xs+Ni1+HH/G5YiUFx/H1pM3KH3evq6qqt5xg/eBdrtduLq6qu2tXeYdKuvp3XTWCZomQH2F0LNccP6QdC2Ft74hf9m74xXpDQXCYqBxEGrLWyYEOLSYyC02B7TN6LHEWh9Op1N4+fIlALzio8vLS9fdsdru8qaxWr2aiKIyCncbWhe97CKonC0hR3kcrwl5eZNAd0gPBgP4lV/5Fbh37x4Mh8M6zdXVFXz++ecwHo+h0+nUEy85GA6HqnznEzmWWAw9DjXme0q2i/QN5ZEQMA3XNyk2TQqf07baZRuqaWzK50nJS+IhC2/lQrLNcmNKPEZCxzCOaby7HEEXI0ttF4u7xNrK6r802eYxf43KsVhsKsXutdCUOgYk3xKRSmeTvB+cjPUq/RQDwSMkuJOAja2tFqW0cMc+5phq39JnXgc/5uTwvHiwyNK2WlBECjzFAijWtLG2ktJ58qf0x8rwwkI7b/8Qz0gTUQCvjJzpdAoHBwfQbrfh6OhoTXih40X5igfKPePQUz+aNjVQE5vQsOQnBdt5eSGlzAMPnoC71Mc8bymA5EWIh7SgZCgfDbQ+IeUWSyeVgyujANadjphiz5FfOciVHbljAv/OqVMO/bm8yiHpKAs04zMkXzcRcPDaLZ4JgFB6iw0QSuehZROwyF1NxoVklBQ4COVB34d43xv4proaYH3xlUZ3DFY7slQ/biqIR+0XTadJ9qjG+yVsjlJOHv0+pS09ejBUthdNfeOxs7RvYmPQGpApoYcpX1VVBZPJpF6AgbtrKH+nBC83CfQz0GaL3XnJbWL+XHpmkZ08rSbPQ5BsBerbhuxn3q+8TinyQZNZId7kNndMjlG9M5/P6+PiuL7DPqble/WKxQ/YtH0WQq5dv236Q2MqFncCeM0To9GolkfSqXFWGrztkduGPO7RbrdNx8juMkr6sJpMyom3lKCnVLkx30azE5DH2+027O/vw8HBQX1N2Gw2g/F4DKenp7BavYr1enlKkum4oIlPOiCdlsVOVL4iTVxfxMZUiv0Ys4swjbb7P+bT5cJi/1lo4e93UX6E/FGvT+qBx/aVym66La185KVDkpXaqao05t7pdFRZrtl4ofK5DxOyPVPKoWVp8MTf6Cku0jecVyh/Wfy1UFzWwqeajIvllcvHqfo9JuPVydhNCzHurGkVtSgqvuuDKkqcPJCYjO7iojTwVTwxZcsHH3UW0TjQ6kSZmpZVYldtSKGFBsUuKrRdBG3D8XgMT548WTtaqqoquHv3LgwGA9VZl9obv48Nfs6bMUHOdy1ien7EC69fiG56n+pNR8i4RhlR4h4hrsSshvhqtaoDhKG+8RgN9J5ALkOlerbbbRgMBuqRnaWNy9TvU+VYCt3Sna90bG0TVM9IwWSLwc6/KZl2m/DYHFowRAvOSro3xfkI8XEsQEPHc27/WQMaUjq+o1ejRRpHVnpTxlms33haPLbIK+OobRfirSbGjbUt8W7DHP1G64Y6ymujcFjGIc2T8ntOe4aCW9xeR97epNxDGnL0o/T3LXyQAmoA6ws4SqB0H6XYOZvmk9ApK8j7OSexSEdB8lOKUoD6CI9k9+aDdyI+ffoUlsslPHnypD6SE8f9crl08RbKKGrve22/XbBnc2DV002A5t3v9+u+Wy6XcHl5CQBQ3w/M7T/s9+VyCc+ePVvz1agPFrpOhgPL8I6bkrEhnEjrdrvQ6/VqWqbT6c7zWRMxsl3Ww6FYYilYfYy/+qu/WksbsltjeUrvkRf5ZE6v16t3cVtic9RO5MeQa2XT8W6J5Wn5hGhKec9j1jFoaZuSsbses+Z1Dp3umYpYHDHk0+QgxQ/xTJiVnJNAWUHHMD2GF2P5Xv2TE2sEgGvypmlQG1CihwIXo0ong/F5Kw2arIvBIwe1MlPatXRfSPlFjyn2IifoToWR1TGgZabkpzFfqB6x8qzBU/pdTgCcf5/bbilIycvTx9r31rItfBnLj+ahBWDppNpsNlsLylVVBePxuHbw5/M5DIdDmE6nMJlMasOLH6GA+XG+iikw+k2ojXg6rV9KBjM1OmhaywSGxSnwKnpMI5XpMUJjsiPEZ6HgKqXL2kY8WK3VC/9RPqZpVqvXE8D0SG06CU/zonlYxmAJmRSS6VqfhPoq1nYeeqxlh8qx8nNM90iTI1aZodHr/Y4iVNeSxpC1fnwceIw5TrfWxykBAw+sBraWvnT5Vjq0vELPJX6WUMrR0+Qs16E57ZlrI3nKAXhdJwzshpwffGc9Hj+lTagusX7rGd+0nNi3sXcpNnhJlHAyS4//XEh2CH0Xkgl0sQfX4TF7GNPRZ7Ej/PhYidmP/FsvPDwWk4uS7Eyx0yx2ulZ2Lqy6zdL3SBdFSA7Gxg36dqljq9VqwWw2g9FoBNPpdO04PW5vc7piCNUrJT+OWN/H0oS+3aScLW2DUjkjHS1tGUs4wc8XUEvxgxAN0jdSeU2A0yDtPtwGPLowZGNbZaol/23YFTnlWtvQ2y5U3o1Go2s2aFVV9V3KuWXxDRX0hAl+eh393wPv2KPpc/krpg9D8RStzJD9rMWvPLR59NomxkxOGTTulpKXFt/TaAz5dKFYoTXuRMuypLV8n1MOb1fJV6MLHugYx3c5salUvzDFj/VAoos+w0WAXM7RdNQ398o/zT8KpQ2Nkxxb1/JN0/Kk+GRsSViDiDhTT4/okZiklHHnOe+e0pRzxxDdoVaiHpoClxgO23bXVyfuOlarFXz22WfQarWg3+/DYDCAX//1X4fT01P48Y9/DMvlEqbTKXQ6HdWQpHlZjLDYfbOobGg+2vix1K+JoEqTTpnFoc9dGY/QnGzNmLUEg+gzvBsFHXQP6LE/WvAbA/QnJyewv78Pd+/ehaurq/pelk6nA9PpNOnu2lKIGWPWdtXy9o4Jy0pzj9PvGYuxPGm/on5CWW81AEPBHKtxViJYwfPbdiAH6Qg9T+GnVN61wBtgt3xL80gxnjlCToEFpewnWqbmqK1WvnvCed50fG4a0+kUqqqCwWBQy3VqK1RVtXYPpXSaBj2hhrYH2pKSE0Z1rRZYlqCNeUqf5tBhOSj/MA3Ssk19FkITTmFTclOyJzTQemltH5KZUtCJ864UkNFow+/Oz89htVq571/NRa4+w+93yX/jctgaSKHjUroDUNOPXt2DtrDGZ1IwXKtTaiCS+2be7/Fvr/+m0bvJ4PYtXvcH9olmS6xWq1pfA9hsHK7ntm0vz+dzaLVaMBwOaxthMpnsnC9pSY+2UqlTEDaJ0r5TE3zV6XSg1+vVv6fTqZiuVByp1+vV8TgcL+PxGJ4/f16XQXerS+Bj03vnPX/W7/frd3h0fWjcx+wvbnOXQsxmT8GboH+kmLuWruRknMQjPE6zSV3giQ1Z87P4F1Jd2+12NO4O4Ds9QjqpJYV/m+L50K7+vb09ePDgAZycnMDp6amYpqoq6PV6MJ/P65PCQpB4LzX2BWCLjZSM+TSJKOdZhIGEWGBPeqYJg5AjJQVVuENE04SUoERHqB4SXSGlZwkqpcBDo/a9RYCl8gLNA+miNErvtACn9xsLDV54A8/S3a/tdhtms1l9H5XUth7+i01o8D4OBbJ4sEoLinp4gZfv4SULL3iC/bSOsTIsbRmiO2ZoeREbO1qeUr9KaXg+IVlbVa9Wnw4Gg/q4DzoRHGt/a31zZI6FV7U6Sn97ykHaLXwfGp+p40aCli8G/qSJ2FQHPYXWEgE/azBRG9uhPHKh6UAPf8ZkisXRj+nOlHaIyZUSsMovr44OpQs9D40nK6TxpY253PEfA68XBnlC/GQNLEiQ2s8rA3JsU805DOnZXcOu04fQ+MTLM6UCfB7bDvXjanU9yK7peMmepzR6bKBS2AaPeOwn7XueJlSPVDkSsuEs30p2M627R8/zZ6vVq2PxLy4uzEdjhmjVytDSxPK4RTo03arJD/y7qtavyaE+nnes0L+3pUeof4r+5E2Btug9ZZxY+0tKmzsuY/mXLMsL1MEIenqLNNnBZS9HyP/jaej/+DffTWfxOSzPOC1cf9Bv6L2z9JvVKr4QlPtLJXhJagMLT3n4LvbttuVYDFZ6U8eXZl9afGfr85JpPXYHponZUR79J41tlDVcB1lkBqfR2u45YyCGWF79fn/tukL6jNOFG3Zw0VQIIZmn8UDo+9SYYgm9lhuTjH2/0ztjQ5AcPMsxQNbV7qlB2dB3njs8MA8LA4TKtDJhyGGm9x3ROtwkY5kjdYKBfg8QDtaigUN5jd4NMJvN4Je//KV4nLEGbvhRIypWJ01JhYwXqyLjtJSGZHBK9JQqH5VxqmAOGUT871BgxcIT2O7WlbiWdkJ+pLThTgG6I2EwGMBgMIDRaASTyaQ+Qk2ju+lxVyL/2PfW4FxTNJW4w4zTCHCdD73BwxQnQMOuO1QUtC+aClB4AtqdTgeWy6W4cwjzkv6muiWXZ5sCDULG0nlspxx6+N8peUp9ss32x7Jx10GqHUzrIgV9StUV+ZXyrtY3UpDLUw7NU6rftrDt8t92SE4/gB4Y3VUZG4PV/rHYap7n9I5UKW1uW0q76Hk5njJQR/E7/7xjFCcdnj9/Di9evFgLgqEutNIl+WseWxKDcCn1uMVrcB6mvAIQ5zP09WazmdkXvQlA//KmxJaq6tWJQjzGQ+U9nliVs4DibQRvK5SDyBuTyQQmkwn0ej3o9Xp1+pwTCLFcaSKFx1dwoiJlQsILfnUZyn26G43LcYtNit80xZvaREjO+A7VyaKbStoMudDobcqWl/L1xHiahiXOa4UlXkLHNE/PT2ZIsf3omPXs4mwyls7RarXg/v37a7vtQxgMBtFYs+YLSUiNl7xpunTjk7FSA6YKRC0vzclNDSjxb6UgjseZsaQPCePYRIck2L35auko/TlBdms6Szt5v0HE+CRlsPP2kcrE44hbrRZ0u12oqlfHjuBxI6vVqj42ludLf/N7OktB4nsa5LRMNFposqSXyqI0pPKhBVo70Gch5Wnh9ZBSsRiNUmCKHw+pIcbnmtGG+V9cXECv11tT4r1eD6qqgslkUu+0DJWxTWh8I41db+AQ258aJfz/EL9TGlNhDfZicA8n8ehuOEtenkClxTnctoOkwds3ofcov2kaq+GvjUvadjk2Cs/bo7NTx3lovPF71HkaavOFxpa1LUL8nOPIl7R9m4RFL1B7gH4DkL5IT9PlVh6M6TqavxRs63a70O124fj4GBaLBVxdXcFsNquvQfH0VRP2GNclkn7fRX4qDU/bhmz8EH9L772LaZvGtvgxhJj/I6WT3qXSK41r+i43NqCNN+l5ab9E0m/UjtDuL7ToM8mv2aWg9ZsEbFc8CpvLFe1IQylQTfPi32j+Of2/tFyw+JtaHZqIZTQNSQdTPzlVBsZwk9pIQsy25s/RnwZ45SfRo6Alfk6RV7w/ut3u2tVP2Nfz+Vw9GtlajmWc8Gf0H453jMUAvOZFnjbVnpa+Cflpkr6wxK08tEj5WmI1m4gRlvo+Ry5Yy4iV7cnXIuNy6bK+l3SelF5a3IDjHMso6a9rOkJKtwlbCxewYIyy0+lcG1vT6bTeZMNBeVQ6xSIkKySbU8o79MwrP2+CvjRNxjYlyDzlhALn+L4J8MHBmQz/jq3GKjXIYvXV2kii2dOnIQPBGnyLCe1tDJhNB/+pQYkTIO12G4bDIUwmExiNRmuKILTqDo2y3FVtmqLgq68lx57/zg3+h+jC/HmwTBsTFlkSMxZWK/24F8k5juWZi1iwqaqqtclYjV4NllX23W4XVqsVvHjxAg4PD6Hf79c0DQYD6Pf7tbOEyNnNmSIbLMFWT/5ePUN5p/SdTJ52pE5UKGjQ7XZhb2+vlkFaXgBhYydXjsfG3E2Bpb/p/czSruQQaHvz+zCx7Sx3/4byTtGNlkCDJ9+Y4e6ls6R+ssJr0/LveJtty1bC8nHBBg1aURmXw3Oa/ilRX6nvqSwdDAawv78P3/zmN+Hq6gp++ctf1kdV7cK9egDXF4DtKkrY1SV0iea3cNuNl8VlMdpV+M4il24aNsFTlH8RpYOn2D8xOyUlX06jNAHq1W00vxBQt3M/DO1xekWIVxbTMUH9vjeJv3cNONlDIfUxgsssyuce/yo0kcGxyfiIdCzkrgLHvnT6DNowuNDektfbPM4sPEgXquKmhU6nA91utzEahsMh9Pt9GI1GMJvNoN1uw2KxgMvLy6x8vd/RvzGegL4jThYDQL2jnB8fyvnLypMeSLrMowdTabIskKP28q6Ms237Elo77TokWWmxmzj/oy2PvNFqtWA2m9WLLErxSUo+npNOUrG3tweHh4fBNOPxGJ49exZMgxvLAOILMCR4+NArI3aFn610mHfGNmkwUMciNNgs5Uu7kUJC3CqgQ8pGcsJiyk/7VvuuZDDKWqY0ucV3bIbySqHP0xdaYNfbbiUc9JRvl8vl2sRH6Ohs7oDTf5SXLYatFEiKBUAlxxCf8bPmOS3W4H6Ih3ImCLS8uIzQZAGXKVJeND/tt4bUsaN9x3klpvBoGi8N6JDi6qicvgnR6dU/3gBfquzxQpsop3mHyo3RZHmHjpwkb/AOYNwRhnlYnKvY2Nb4TOLjJp2m2DjWYNV1Vv1D2wT7BB1qq5yjEwnSMY4WPi0x4eEdP5Q+jYZUWYJ8fXR0BK1WC87Pz8Xxxmn2Biw4PIFvmp4GVTUdKumWTQQWePnaosNQP/KJTEp7KIhcSs+XyIvnsyuO3q6idHtTlPKFUvORvuXyOuRX7jLvhNolRb6XQMg+1XzAFPDFS1w+W6H5aqm2I/e3eV2t10tovk2OD5uKEvGCTei/JoF2CtX/FltN4imJRyWZJMV06P8cVp6wyoZce3SXZOdgMIDhcLg2+bVavVqkTBdG8IXsHJpMo7+1tCHcBP0TooXSH7IT8bnX/pae06Pq8USUUDvGYj6SvRiyd0PfV1Ul7qRfrVbR+IulnS3+O/+G/x0qQ6p3Cr1aWhpX4ceoUj237RNONBms/S6ZN03n9eM0eHw3i10c4xFrHIrbYFo6GsOMxSBzkGJDhuJuFj1JxwQfszzfTqcDd+/eXRsfT58+rf/udrt1nErK00qnRQ5IfByT8ZYY5abhGU+uY4pLGNAhxIKdFkcR08QcNKp0pbKkvOlvLtAlRRWjgdZTY2paH4kuTyBUKpeXF4K1Xl46aN4pabjQsjo0VvpS+N3y7Wq1gvF4LH4nfU/bXzpmQSszVdl70vGgCOVLXgca9AgJcylobaHD+33sG8yX7ozg31vHIB9z+K1lRTCXcbFAZczgkr7jZWj54G80ZKz3IUh1scIjp0LKPZX/Q2PTCk9/0zJSHXKaHv+nk7F8zKKzZ7l3xyND6e+cIAGlNybHPXoq5hR67QP81lrfdrsN7XZb3B3A85DK47LWq9OtaVL6PFRWDi9o32CeBwcH0G634fLyUg1UeG0niibsYMkGzhn7Uv4hx1R7hu2EAeSY40NtMppW0rUoi+i3IbokOr3fSHnEvtfSlApqhGDR95yuW8hI6RPJttTksAZv35TUb5ayUlCS32J2G/XVNZlSomzNbwi1t6SDvbvpNdsG7TJtkZZmS8biKSn2AoXmo25DBqWUK33TJP28/bE/rb6fpjtpXvQZ/U7ygT38baXLk76Eb0O/b8IeC6HX68Hdu3eh0+nUO5yXyyWcn59fm4xNhbVuMd3kRej7JsZHyL+hvC61pfdkOD4meCwGY7vUB5b0EtVBmv0pyZcUn4fSxmPPdOI4ZpdzhOjhZWvf87RaGVpZUnvF+E+TY3TjBJWN9A5PqU9SEPvOE4eyxukssG40s/gTHqTSy20eT4whh14aw6TyWipLs3U4LaV4q2Qe1thsu92Gu3fv1nFufgIAnkRg5SstLialty6Q2LSOT0UKf278zthceA0NiXHo4KL3btJvrPnyIwE15U3fh5wpSyAIy8e2sAgvWjY1Pix1jTFWCeOPlxUqr2QZu4aYs0LTlYKlPfjqbK6UQrtHpbJoHa1BrBKKV3tuKR/v0txWsIHSgs9oAAh/SwtFYm1H5ROXFbx/pL7udDrQarXqiVl8b+ULWrdNKFwuC0OGg2ZgefWQlJc3bYm2QccNjziaTqdwdHQE3/3ud+Hk5ASePHkCvV4POp0OjMfjmu8tdDfd1yFHN5R2U+B9RxeeUD1P7w3H+zpwrC2Xy2srezHvXH0v0WlxqJtATiAYv4u1R7vdhvv378N8PofRaATz+bx2vKzl8na36gz6T3OIuB600hWSTyGU6NvBYADHx8dw9+5duHv3Lnz22WdwcnLiPmqbpkNZxPUPRS6/0DyovsNJEyxzOBzCarWCwWCwdgSTNFY27RyuVq93QdD22GWbdpcR0uW0z0vwnhe7qN9yIQWwpP9Lg/vfvF9j0MY9lQlW3RzKX/N/vflymWD187mdT8v2xAo2jZRypW82QT+1CzzI4S+eD8D14xBLtWEqPTFsc0cb7S+6k4ri+fPncH5+Xi+wxyN0paOMNWxjMuQmgNteKM9TruiS2glPrJIWIc/n82tlU2j2Qc7EDB3r2pU9rVYLer0eVNWrE5XQjs3xByQaudzRdLUWryg9TqmPEJpo2tvbg7t378Lz58/h5cuXNY3U3m9ShvD2oL85n+XY8LkyHCAc228KofbJgVQXvEqHtvtqtbo2tqVYibUMzZ6w8Jg0lqz2Gy+X7p7nR+kPh0M4OjqCBw8ewPHx8bVv8CSxjz/+GC4uLgAA6sVG/OQY6yYcCaWuIXuTfN+NTcbyYFaq4VciAM7L9zotNB3NSwsO8vxDDKQpOE0Z5t7vEvou1EcSnXRyKPSNxAcWo8AqIDkNXoGYwpvbCNaE+i3VyIgFmLWyvWOaGkMxvvHSmYLYGJAMNy1IEWonzvuhdovJCN5mNLgcCu7wd16nQSoT4JVCR+MGFbsWWG8aljKtdKXwJ/8eQDY+Q3lynZkDqc9wwm+5XEKn04F79+7BbDaDZ8+e1Su9Z7PZ2m64EpDGQEk0wW8WucjbmDrHUh3pJLeHXqr3Y+ks9HN4dHgqQraZBVx2Su2IjsJwOIT5fA7T6dR9BLQVmmPt5Rst7xQbtSl0Oh3Y29uD+/fvw6NHj+Dk5AROT0+DNpumj0L2bRPQ7HNqR6PzSZ1ajW6OmM1cQi7hnb1Y3k12Rq1+YRMy3RNU3CZK1X0bdpgFlgAwRU7Q0mPveewz+syavsn+SA3khVBSD21bh20CuTws8Z8Wd9Hy18aWhUYLUvoxp+9zY4i55SLQtkRbAReunp2dAcDruz0RIVs818eztsMuyP5Ue5/nQeNHXkhjCOmSJndDp0RJY0lqZ83WiNEpna5A8+ATsHRXZKi81Fg6/x2KJXn6x+ufapPwOOmGE9XD4XDtXl2pDtsAb5tYLDCGHL2867rYOlcSAp48Rtt9tbq+mAPHEpfJfJxbYElnsc0oDZruoH/zUzPx/3a7DcPhEA4PD+Hg4AAODg7qbzHeN5/P4erqCh4/flzruFarVS8sorRI15yFZF9OWvqNFmvZdT6OYWOTsRLT5OblGRSaMZWbv1fhSHXvdDprRylIzBYyIOgzS2CPB3OtinkXjDkNoQmPnDybrrO2Awr/533VarXqI6vw/l7KC7hSDuAVj08mkygNoQA7pYG2R+gODw5LWir4NaRMXPBvcwU2bw+tnND3PFifSxPmh20Yu3vYQiemjU3oTCYTePHiBXS7Xeh0OvVqqb29PVgul3BxcbE1JRkbv962SAEae9qRdZpsxzI1Ayw3oKHplfv378PBwQH0ej1ot9vwZ3/2Z/DkyRPXSjZPu0q0SXnl5LENxPraG0AJ3TXMoTkOu9AuTQAn03CMYVvhooKHDx+q30oOMX0ecgRpGi09PufXYsTqs2vIlTn4LdY/dGxYKn3cMePjoIQeopP5VIYul8s6+IM7VyeTiXhsGsWmg8q7BqtfuCtt5A3KxHS5BSXqXpLPttUX3P4vPXam0+mafU9366fSS+1ySV9YoPkZXKbGaAnlJQXRpQDvTQ94NYVYoFRKn1oO/o96B+2fEHZFflqQ4+c3jdlsVvfB3bt34Xd+53dqu/P09BSeP38Oe3t79U4i784hb50lu0LSUbvYll6gbQ9QTg7hJAPHarWqT9AJlaXpB0neWmKzWj9Jd8Uul0u4uroq0hYpefC6eSdUvYjFrA8ODuAf/IN/APP5HD777DM4OzuDjz/+uO5HXGDJaedoyia36F4PYvplV3X1JmRRp9OBfr9f/5b0I04oYjvh9V0hxCYWS7S5RgN/3m631+QXt9vQ/wQAuHPnDvzqr/7q2uIhgPVFQ6PRCP7yL/8Srq6ugnqL7yYOQYttpqBUrGBXkTQZW3Jiwzs7His7FhST3lnK1fKX8g0xoGawx5jMGsi1Onq87b3BYU+amOLzlG9BKSUkOf9SWZLTSvOICXApLQ1WShN4fDIFf0t3SnD6edDZOhll4cFQXamy8I5fXhcPtP7jbRei3wOPHMnNOxbgTaEl1F68vMVisXZ8M598pP0eojlWp1RY5EtIppekgSJ3coPmK41vDdq7xWIBl5eX0Ov14PDwsD6mGI220KRSk0bSTTK+eOBdcoi08ardaRoqJ4QcR7kpxHi+pCNTVVXtjKADTnfue9qD9iPNPxSgturLWD22DS3IjCuN6SIBi0zjbVZygign+E2D27PZrF5U5OFJGizE35ZvPDSvVqv67h66+Ap1bpPQxk1pvbkpeZWjg3O+28bYLlFmTtDQ017etHw3EM+H+2eS3xvS2R5oPnVIV2jtw/01i28Z82U8Mlr7fYvr8AZxtT4NfUOfx3j1pvYZj7mE4gChMdUUXShv9vf34ejoCI6Ojup3GBjndpGWV+y5JQ7KkSu/tolt0B2KwaXQkyIHQnnRmJl0PDJdeO/Rszwek/Idp7XkN1paTisufAB4NRl7eHgI0+kUBoMBnJ+fw2g0WsvDUtcm7TNL/2v2SQzclrGmDb23wBM/9voK3vFEv6PHUdO01Nez6s9NxAQBdD7nCB1JLtWv2+3C0dHRmq2MPjvqqPl8DmdnZ+IGLt52IT+myfEVs5W3jRxf+MbdGUvhMV62CbrrL2SI8R2yUhqExVDzOF27Evyj8EwKWd41gSbKsgTScdJ1NpvBdDqFbrcr7rKNwTIxRifZ8BnyMl31rTn/HHxXDM/HQtc24JkE8Uz+4d/c+NYUrfZ7E21H+VEqD3lwNputybFd6tfSwWML+Pigd9RsE9gWL168gD/5kz+Br3/96/C9733vWrrFYlEfc7JcLtecHAnU2JN4meseegcQpesmgwdjpIlsnPyh3+DdJji5kzKRR2Uq5ttUm+bknfMt/Q71E7Yfvmu32/XO2OVyCefn53B+fl6/s9LIdR+AfAKB5qikOqPbhtQ3vV6vDkTeuXMHVqsVXF1dwf7+PnS73XqHmRfWIFhKW2pOOcB6P15eXsLnn38O0+kULi4uYDqdrunlbQUM2+02LBYLmM1m8I1vfAPeeecdODs7g/F4DF988QXM5/Piu0YkOjaJJmUW5x3NJsvFTRnnTUGzYT2Lj0qDLySzQLNhStm1/Dh0iw8o5ZGjXzY5ufW2Afsl5YQZ+j1/hhMR/Du0g/g3NxHarqZN1qvX6wHAq93z9+7dg3/yT/4JDAYDMS3Kt/F43CiNKRNgu4hNx+wk5PrhPLbraX/+Hbdv+aQRldOeidQYDbH4naYf+HHcUl6l4z9oE//+7/8+fO1rXwOAV2Pz008/Xdu9zlFKbqTmgbIB/frUOzclWrY9hkJIoS11sk9KQ+83Xa1WMB6P12JNkh6N0VaqvWkcwjIJXFXV2gmYPB29jkkDvX4MMRqN1r7BUzgxTw9K6h9LO5eSg9vEGgemTM7lNELuDDmFh3bLpJE1IOT5JgRtYNFyQo6WlRZP23gFjkWhe5CTnzZh5BHkmw7G0HIlHsD7EPCYYnpEESr5+Xy+VldMy+mIrTAJ9T3nkdCEYMzQDtGhBXJCATPJYOTpQ/Rr+ZYC7+MQbZyWEC9ZlbhGi6csCXwRybYC1zFsajJEK6eU4xnTEaHveH/jxPB4PK4nXXFX7IMHD2CxWMCzZ8/WJld5PWPlWfSplN9NcDQQoTFoCZxYZG8JfWz9ltJkSVsadBJMKkPT8TwNBgtCi+EoLHIW+yikS6T2lyYFpbSxOmn0akHb0kA7pMQiihTnWnsXs1li8mi1WsF8Pq+PGqa8R7/F72nAu9PpwP7+fv09TkqX3rHabrfrkwtSFmuURmldatVl2wT316z2rjXNTUGOnPH4ZnTMWnwOD704nkO7DehzTTan6ttYu9HxIOmOlPKQB+k/brOHYhxN8u+mbPRdgJdnNJsCwO9r7KoMkuR/yVibB5JMaLfbcHh4CN1uN7ggj9pF/D2Avf2bqmuI9zSeaoJntsWHpcq16p+cfkRekuLEm2g/j96JxRq1uB59J+lWiV8HgwHs7+8DANSbU8bjMYzH43qHH9VxJZAS06Xw2Ie5ZYXK9cQTpe9TYRkfMdkfoh1PJqA2TWpsJoRQe3r7QkvD86HXMWkxCFo+6qr9/f3apwVYX+CxXC7h8vKynozN8b9SZFwuj++CnVhibGTtjN01Yy6HnlxFaaElhT7rnSASPOVtk6FjbfW2OGfUIKGTqCggj4+P65Uq4/EYrq6u6kmTyWQC0+l0bQULBgcXi8Xa0QNc2Fp2pWqGuzUAIgUztPxjfMt35aZCC6jxNPSO3hxYJ6TwbymQ651MaFpGU4eTto+00mzX9MW2EDMmpfQA9qCdp/yqqmA4HMJ8PofxeAytVqu++3AwGMDf/bt/F8bjMfyX//Jf4OTk5Fp5FjltuQ9amtzgkyE52FYAnJarBWZ4G5akMyS3m3S4QvQgvEFISxq+GwQn11LHhvSOTu4CgHhUWEo7lm57Wo/UiYISkORCacc+xsu0X0vIArTL6XGE+/v78NFHH9WnlYzHYxiNRtDpdIrYK7sIPl7eRB2vBQYl+5nzuHeC5CZP1DZNu2Y/5Mpb1A/D4RC63S4MBgMYjUZwcXGR5XtrQWerHJZsKypHqM3kqT/l39g9fBqsbb5NvbPLCAVQQ4j50VoZNwFcrm5bn1RVVS96Alj3Y4bDIVRVVV8R4PXpmsZN1SFNg/NXyvcUJSZeLWmR96TFd9S+b2KiP5TG6u/gos0U8Ikn9Le0MkejEfzsZz9ba7OUUwNLgct6vEs6V15gu/OdydY+3SV5heBxIC/a7Tbs7e3VC4Vns9nayWNS+tLxFgDbZKxFlvC4ON0Ri/4nx3g8rv8eDofw27/929BqtdaeU75ZLpfwySefwOXlZb0RIweeuNIu8uC2oLb6NgJ1OdAcn1L5peZFB9JyuYw6TlRY8zxCwSyNvpyJzE0NqpAy9zoqJeiJ5d+0AOGrU6Rg12q1una8JQcegblardaEtsRbCM0B4nXnR5CisRXryxifar+t+WkBMGveUgCXGgio5BH8ON5QPpwm3rf0f+vEd1O8GON13s/86Gk+QbEr4LK06QAi7WO6sjW3zBJBLrrQB+nBhRudTgdarVa92COkX7nMkPiTOm0S3aF+KGGLbJMHLQ6yVb95JzC9ejOWR2k7y1KuJCe1ckNyy9MWsYkVi81C08aCNlb+tOq8EEpMilJdT++pL8XrofTU5kgJalB7hee/WCzg7OysPmUE62i1R6RJjhLAo8sBoJ4w6vV6wUDDTUbuBBuAfvyXZnPxvz1l5o7JnPJD8MoXC1L1SsoElNfn4mOay3NLe2jj3SI3Pe1MA8z8+1g+lgA5H0MhH0vTUbn8cxtsu45SbbILflWJmAjl+Rj/83HcNFarVb0QGydeqZ4HAHj27Bk8e/YMTk9PAQDWJmi1PL1yIlTfmO5JjdmVbOOSvJrLayFfNdRvMbve65ulpl2tXp/eoslnSx2kGFSMbzRfLKUenu/4tw8fPoR79+7B4eEhAACcnJzUO/twzK5W2zuqXfItqurV6YadTufaMbGaL2sZo9Z2LW0LpvCw1C6xPKUxGipHOzKcjm8uw2PtGIt/SXW05BWLV+Bz9LGlWBzyCZcJmAePT1dVVe+EBYDa19XqytssFzljkfbTLtuWFnnM0+zcnbElg+MlAtap0AYXHgOpGZ303abufAuhpACPBdxjZWyzPzeNmNDBY/BCWC6XcHV1VQfvEHwCUTPCKA0oiNGAoDtD6DeW+mjw9i/SVGLHSUjR0PsbB4MB9Pv9+t3p6Wly+byPrYEYKZ/S0BwW/M0NGSrbAOTdYruKTcjWEhMgHLntijtC8D4kgFey4fz8vA5AoLOD5dG7zbTgpsUYlXgqhCaCypsAdQT45IDmoMScjRTk8EpT4zfmCNFn2jG4qUH6EE2oUyTHzTuOMX3OCScSjTRvz3eaLNcgvUdZD/B6gRK3aa0THxqdtCz+jv/zgvcnbZf5fA5PnjypHd8U+kuD13UwGMDR0RFcXV3BbDZzBwNuAiSes/YDBmO63W4dpOCQ+OpNx7Z8yBR9n4NQYKtUG6TsRuHfS4tJJNvaCrrY21NXGrwG2K4cedPHoXRXcigwva0xuwlwveWZVNgUb6LdeXV1pfr5P//5z+F//+//Xf+mOrkU3lQe2DYoL2l8pU3EaEdUl6SL3ttI39H7iFF+W2U9t9O9PtUmeVGz8X/lV34FfvM3fxMAXtnsX3zxBVxeXq6lwbbjE1KpfoNXFnNfsaoqGAwGMBgM4PLycm0hZc6iypsyQSWB0xvarGaV+1JMGnmAL6hBaH9LNMbiFiFovCfFgmi53W4X2u02dLvdtbSUr6fT6doJmJhmPB5Dt9tdK//58+fw5ZdfrpWP7cbrhbZhyu7yUFum+u43ASm84bozVmPKkoKgSSMmh74QXZb6c4crlCffGYvfSELEG8RObQMetEJ4+suSNkZnKDAstSvPL6fttgWs8+XlJXQ6HRgOh9Dr9eDOnTtrdyN0Oh34+3//78Pdu3cBAOD58+fwJ3/yJ2u73WjgFHd+YBlauWgUSpD4mueB77SyJOUmGY00fQ6fhJS9pIQAXit4DOzh/b3aePQEQihNnO5cmRrjYYtc0/LENFReWcbZNgIMlrGuBQVy+yCmSzVejfFwDl0aX5yensLf/u3fwqNHj+D+/ft1QJvqo1arBf1+HxaLRe1EcGeHlsGfW++XvKkOhoZUQzQ0XixtlGP0NqEDY/yBiMlvSa7w4PZyuYSXL19eOyYrdnS2R16GJlit41RyqKV8aX4WHcjzl74J8SVP3263YTKZwOPHj2ud+PDhQzg4OICf/exncHFxUcsMvDNVums6VIZUVyu4nao52Z58Q+1M7RpcYYz/qC3wpoHyAwa8MEAZsgFS5UjIpk+FxSeTfDFMH7MjLXy4SVhtPUu7Wsdmqn9okQWpNhDarPj/4eEh9Ho9ODg4gOl0Cs+fP4flcgmdTueaPpF0VMwf5b4PtYOkOtF6ldC/1I9DUN8lVAetXp54iNXu2bafvSlIdgtAvrxsqv1ybMxQTMCTjzXvJtHv9+E3f/M34c6dO/D48WOYz+dwcXEBL1++BAD7JE8sTY6cy/ULY3k3hU30ZcwP93zL4wXWtrHa7NiPXEdg/MkiQzR44qcWmr3lS5DKpM/a7Tb0er1aV9HjWrH8+XwOz58/r69bkmjO5eFUPu12u9Dv968t8NRsAF6WZA9wf85K2zb8EUqfhY8orDKVti+eCkkXVYfy5P4xp9vC31r9pG+0WIeWPz+hDmUD9be4fffw4UPY29urjyg+OTmp05yfn4u0UF+Wvo/JOI3/SsdOd82XtsaJLDwcPabYwnw3BR6DMSf/WH60bUMKMOaUeZRjzIGy0C/lYQloeBAyUqxBSJ4fV1q5BmsJg1dqSy1fTHd5eQm9Xq8+oq7X68FyuVybjP1H/+gfwbe+9S0AAPibv/kb+F//63/V98lWVVUfs9tqteqAoWS4UCedB1NpG1onVqT6a/WkPE+NU5ou1AeWMULz1XagS8c541EQ9GjGkPEUkzkhpSy1w6bB+53+j6BHVPMd07xNdiXg4pEhOU6cBGmchcpukg942WdnZ3B2dgbdbre+N5bTiIbvbDarZQg1xtBo5CuHeT7WoJ5E5y7Coz89jhPXfRbZmYNUWZ4TiAoFbLXAg5YPdXBXqxW8fPkSOp1OvToUn+OJB9J9Rp424LukLHRa4A3a8WcxR0Eai9qYxLQ4GfvkyRMAeKUjf+VXfgXu3r0LX375Jbx8+RKGwyGsVqv6igT8NrYrOMWu0hzoGDyyNMQbvA03NRmbq39K6JHValWPq+Vyee1oZ4Bmg8MW+qzvpHETklXe4Cv+va3gQqqdE3ruLbeEnpDeW/xtmp7a7q1WC+7fvw/D4RDu3LkDJycn8Itf/AI6nQ70+/16LGOZvFwLj/HAFuob6fi4UL1KyBPqD1uCbJtCSRp2yc+IwRPA1ALIpVDaz9HyTPmuKV2qtaE0Lvr9PvzgBz+AVqsFP/7xj+Hq6grOz8/r44lxbMdAYyuWtCHapXw9sMZEd308xfyfUN942ozqMKpD6DtNz6XYDNpkUujbkP+p0bKL/jWlsd1u1/c0A0C94BPgNe2z2Qy++uorWCwW9aQcr/M2+BhP2RkOh/UzahtoNPJ+53/TXaSWmAOHR15wOzYEyv+WukjfhsqS8qT3eAOsnxzp4W2et0a3Ja6ryQNru3D+51cN0qPz8RlN/95779U8Nx6P4csvv6z9NGoHcvqlPih57Y5nDO6iXEKUliU7d0zx2wDp7kAuwFDQ8jPALQyAA6pJhas5iiUc9yYVJlcq2xrsmzAKHjx4AH/wB39QT4r86Ec/gh/96Ef1kQcIfoQibyN61Afvo1AQF3k5pY1D7UOD6PRYLu3uVs3hxXdc0WB6XBmP/2azGXS7Xeh2u7C/vw+DwQBWqxVMJpP6vgrJOAoZTJSOWL015EzEaOVq/WmRK7QvtGPY3lZIhmoOcmUYTiBgYF3ih06nA9///vfh7OwMfvKTn8Byuax5n9MC8Hp80vFPZUtot1GoXm8631j6MbWvU+WLh7+8Y1sKbDfVx8jnVVXB3t5eHWQvNdFgtctCtl8OSuZlxWg0gmfPnkG/34eTkxOYTCZri7y4jWAB5zeJ/0oEITld9H8+ac/T8W+aBre9Li8v4cWLF3B+fg5XV1c1LSmBlTcJ2Dc4eYZ6SLvz/BbbQWk/j9oaIfCTbObzedKd0xwpegDTctuYBhdpWi1IRoHf0CPkOX0aPZvwvT3I6ZNdqUPT2EQ9d6EtLUH8VISC/QBQB7z7/T50u1349NNPodVqwdnZWdLRol77mNoa2jHJ3L7a5QB2CXhtXW3Sgech5Sf117bbt9VqwdHRESyXSzg7O1t719RY2YZ/QX0lXq9PPvkEPv/8c5hOpzCfz+Hly5drG0443dsA2p57e3s1TUivdMR1UzTcRCDdfKF0aBKU+vO8fb2LGjDPUNk5sVorer3eWrx+sVisTajiM8pTnU4HWq0WfPHFF/WihMlkIt4ny/10Xt+Sk7C3CON2MhZ8q2zpN1payyQoX3XBJ8DwX+g+Sk1ReVZyhOiMfaPV39ouIeROMMXK8vT5LjiqmpHFJzyn0ylMp1Po9XpweHgI3//+9+t3L1++hB/96EdrecSUDZ3oDPV3zKnx1jH0PfI4HreM40Qbk6F8pDsKaH/Te50Wi0WtGHu9HvT7/fou3vF4LAaf8W+kLTYhy+WAhm06BJYgOz+2mH+7beQ6FyXqUaoPtf6wyjh+ZCvyKa6+63Q68OjRI9jf34cf/vCHMJ/Pod/vi/qL6jU6Pjm92njgEx88/13hHytCskV6LkEaZ6mTW9aJsdTxEcufykMpf63/Y3TGaEL5XVWv70j23PWt2Vra8xAtmB/VXbmyIESfxX5JsQ+n0ylcXFzAyckJTKfTun21oz2pjuOOIKfFOsHBdXQMsfHIeZPaSbTPJNmKMpM7yyVA85tOp3B5eQmTyaTefUzp2ASwbfBeLt4mm5wo4GMKn+EdmtJ3KXKNllkq3ZsMTT7m5glw3R6QeE+yPSk/YGCrZF+E+l+y0ygvSvRK+pHnx99bfA5KR8hf35ZseRvh8V1LomQZHrtWSy/5wtviQ7QRe70etNvt+kjiq6urazTFxrwH3M7YVL1Ll9Mk/+bGnGI8JfmuoXxieWnpJXsypsOGwyEsFgs4Pz9XY0oxxOJlHl7QdFEsTSwf3kf4/7Nnz+pNEHTiDe/ULMl3KWMCy2+329Dv9+vneGWcNe8YP3l5z5K3FZbvU3kTQPYbQ9+j/4lpeNt46Y3p4xA92rehuIcEeqIXxjBQL+E3eCIRAmPaZ2dna+NGK8Myx6ThbbXVmsDOTsZag3pNl1MS/FgBi+PO76r0BNZiSj8HMeOCv7tpQfRtIRYoms1mcHJyAv1+H/b39+sdmqenpzCdTuE//If/AF/72tfgX/yLfwGHh4cA8GpVzOXlJfzu7/4ufPOb34T/8T/+B/z0pz+tBTpdUY3GHlc62kqu0CQJneTRlGQqSvCTlge2RyhQc3Z2BpeXl3B4eAj9fh8uLy/XVsqGxoQEzQnV0u4KUuTnLsmClMBsCVC52ET5njaW7nT86quv4Pz8vL5nejgcrh3Zp5UpyQoe9AvVF2UQ7san+e4S3+8amrRjNh0Qksq01I2upAZ4vaoW+fjg4MBVds6kjQda4JzqY09elA7ujJXikVarBdPpFGazWX1HfYwuKmNCVyRYgI4pto929CengR6pXwJYXrvdhtPTU/jRj35U5z+bzd7YXZnY1o8ePYJ3330XWq0WzGYz+H//7//BeDyuV2SX3gEg8TD2P05Mv//++3BwcADvvPMOXF1dwV/8xV8AANR3jiFdEm3YdzjBX1VVPbnOjyOXjpnF55qvdavHdITkU2jMetoU86HyEHcW4K4Vnj4GLr81Wj3+t3bKT64soTzMg3gW3PLuLUohNHEb8hc2wYMheTOZTODTTz+F1erVglPU87nlIUI2X+4EWSitxT8riRx7lNvoqRNDlm+ssVYpf+0KE/pNyL7HNP1+H9rtNuzt7dU+ObVftHhsCFJ/a5NNnoWrJdFut2F/f7+2x+bzeX0XqAQrT20q7i9NCgJcjy1yPgnZOtLkfQpdTSKVPqx7yG/i7TMYDNZOSMQTT+j4CNEgtad0Z2qMbiusV/uhbUrjyvwKJvQ1cIG5lC/fbMHzoaBprOPjbbQJm5AdUQtik5OVFBZGbaIczyoSa1rNKaeDUgrOUyEQcjj5Nxq93onRWJ01mjQ6Le1iKbuJunrRZIA61Nc0yAfw+ix5NFY+++wzmM1mtYDGnZvT6RTeeecdeOedd+DP/uzP1hQVnSzV2ivGf5Y6If1WxPhPe2/hD14Or3/sG3p3LK5ewgCx9H1TzoIVTcpxbaztspLWHJBt0qGhxGR3jK85f0wmkzpQ12q1YH9/fy2AaQ2Ohhx8iSaaf6g+u4wUWZcbpE9po5j+pPYH70epvBQZI9U7pINikOqCzgxOwPDj9i26LbdvLDaKx5bS8pWexWiX5LYlAIUOL57GQU9D8LZXbMzToBX+3ev16rsdR6MRjMdjtV4xW5rKHU2+hdoFJwNx1XtVVfWO0VRo39KJo00dd8aB7TkcDuHo6Ki+Sxhpth4vllKuRgv22XA4hMPDQ7h///7a3WLaWA/JvxAvh/iBy89dhxSEDcE6xr1ygLdpzG6wti+3SSQewEl3LQ1Pb3nuiRvw71LsOAsoX/O4g7VetyiDm+QzpdpfKUjxn3PyR4R0/3K5hMlkAuPxuL4eADdLxMYltT1oGZZ4S0rdPTGZbemo1HKtdHtiuSF44pYxejQdpMkBak/hiWw4EcttP4sPaZE3JWSS1/cNfUd3BqLPIfmhUuxPy7dJexTLootE8XnIBpFkiNc/3oT+sPCY1KchP1jy1bTYg1Qe9Q21k4m09qV/h/pFotsDWk9PG9L6WxbpSXwW8+e1NrHEF2K4KT6QFSXqI/WJaTlXSpBtl2GtT269pcFEg0poyFHmpquqLUG6UIBJQmml1ES5mkJNRSw/j4O7K2OBC1wJ3W4X7t27BwDrx8bijlmAVwbD4eFhzYuz2Qyurq7WFBwA1PdJ4o6W0Op/Cv6eBjxDtPO6SnnxnUPeXS9UUfExV1Wvjz6md8dKaLfb8P7778N4PIYvvvgiaDRgvlJ9KF0pPJYTqJHa2DIOeZqmjN5bbBYY6Mf7JwBe9WW324Xlcrl2RzI35FCWSDuHJNAARWg3eolA5DbhlZXbqqcmfyzB6RL2RMo3KFc12ufzOZycnDQS1LPUnY4TKv+le9o9yHXAQwF/K7788kt48uSJ6Pjl0MfbFo/7whMpfud3fgfeeecd+PDDD+GP//iP4U//9E/rAAh+Hytfekfl1q5MUGBd2u02fPXVV/D06dM1+jZ9tw9e10Dv53rb4bE9b2EHty9CY5raCNw/8ci11er1kXDcF+f+T6ngjJdGBH7j3b3Eg5j4/63N/nZjUzwQK4eO8W3JVRzfs9kM5vM5/PCHPxRPSvDkRRGLFQC8Pk49lG8qbupY3yR/Sn6sNvkRyounl67I4mnwzkiabrFYwPPnz+tYXNPY1CQfgrYnTr5Kp5Lgc4xJaHltCjR2iLuYke7ZbAbj8Vg9kYXnE5uQfRNA64X/48YiLa3Uz7PZrG5TviMWIZ3ApNlufCGpRgvf0BQDfqOVS5/h7neeznKtRmzXtdSG3tO3bn2dPEj9vzYZq82O83ehDG8CrHSnOnLaBJSURptotaxW8Bh3peAx1GPB8xhPNeEUcJpSJgU3gZCRBvBK4M5mszr42G63odvt1sd4fPzxx3B1dQUffvjhNUH7wQcfwHe/+1347LPPYDwe144FV4TShD+nJcSnEt25bch5IqUfU0ADHvP5/Npdad1ud+3OAu37punz5J8ycaqVI43Vm6ofQtjUZLNH/6bwlPQtDTzSoCM/KoV+R9Pi36ExkCpnb+JEbKrNoNXfUnepnVJ41Boo03QCp0VKH+rT0rJEch5CukqjzUKHt+1DfW/RdZbvm7Lfq6qqd9CjPpQmZGNla3YwBd8Zu7e3BwcHB3B8fFzfYY16ma6ep/lR+qT31jprz6lNHps4SgUG4TD/UFAvF5qvQe1OPB1Esn82FSykx5R1u13o9XowHA7r3brSanl6FHETdG7KVigBr+/P4ZVzVlros9T2i303nU5rXp5Op0H5GqNJ+ra0H+u1oTh/cx1t7d+bZHvdVGxDRsT8/E2UjWhivOSA+v34vzSRliIjpbqjLpPSx+ANkEv2iTWes21IcUKP/WZtq1iakF+RohOlvOjpd3h9jzRBH6OV2+ReXrH4ECX8DJoHjXMCwNqdmTRvOoFWOlYQ0v98rHAbGW1PeipTKH8eS4nRgO/eFN3MF9MCxOsOsL7ZSEsT+50TOy0FaTzR2HmoXCnGLsVitLJKxQNuErzyKtZmOXyxs3fGvmmwdDBXQgCvBTpVRtZ8LELGIvBi36Tcw5VS7i1eYzKZwGw2g/39/fqouOVyCc+fP4cXL17Av/k3/wZ+4zd+A/7Vv/pX9VHFiH/2z/4Z/NN/+k/hX//rfw1//dd/DWdnZ9DpdOD4+LhOwwPoljtMQkYLzzd1goCXowV6U4Qi0kbvjKXAowin0yns7++vGcj4XjuWRKIvNAa24ZBqZVppeVMMwrcJsX5Ffh+NRrVjqIE7EXQcUUfF6wS+reCG9C47XVSmURmqpY31K6bRdrtabBr+GwMZlh1EKTzqocmDmK6I0dXUGELbFO/o8YCeCiPZEN4AG2I4HEK/34fT09N6Zz/mB7B+mgYNrCKsATqpTVH/4z/LKuabgqp6vTMZ2wyPih4OhzAYDKDb7a6dUrKpe8ZwMhhtr+PjY3j33Xfho48+guFwCFX16u4lPFoSAOojrpF3JV6jsof+04B8JQVF8DcNtKeO6zcdTQVVsT95/i9evFhbUOA9Xpz6NFzvefximlbbHeKliU/sSPeHxXDLm7fYNLalN+m4oXyPC8729vZqfRI6LSuUPz95A+C1vYtHsqbS/qbAM9FdagI5Vqb0XqMt56QSyh94NPHBwQH0ej2oqqq+hswDi7+1C+DtuVgs4OXLl2LsgccBvYsjNoHFYgGj0UjdEetZ1BHrI+6XxPIq3UZSH3gnu2g8FRcdaOB2mpTWEmvwgMvvFL7j/SQtLJnP57XOkcqRaOFlN31a0i7Ho5pA0zIyazL21pG0QwsmxhxOLbAYKocOdim91m+lnd8Up1r7RhJelvw9NKSscijdZh5owb7VagXj8RjG43G9UxYA6iNPMGDEj8lG5TYcDutjefC91A9aIJXTor2zgrex1Ke8HUooCr7IgNYBd8iORiNYLpcwHA6h0+nA4eEhTKdTuLy8XAvShOhLDeanGAH0u1Abaf1Kn79NinjTyBk3oW81XrPIUB6Y1tJL3/KytO9o3rvoXDUFbYKHvyvtWNA8U2QIhUXm8nrE5I8U4C6FUJuHvqFI6Q/eTp4xZB0Hmm1ngVZHze7CgAJPR+uJjqPVOeb6kX9DJwL39/frICZOEkr1D8k8TdZg2R47vGl/iLbvNnwvWuaLFy8A4NVpK1qaTQNlBl1lXyLPUtimz1AKVn9VQ057akE+SZ7j2KX/OA1815uUrxU5fdtUcEuiKUX3WQP6tz7C2wNP/3psp23yjSRDcFEXfeYZ69SOsNrIpWCZqGyqvUvYy6XKTJHNWvxHQyhO6SkXj9/tdDprPvd0OoXpdGrqUwtNWjqOWD+m6jvpe01na3a6p51z7Y5YvpRGXOgXO2bcAw/9Hr6g8PalZx5BK1OKK/G+T6HLK6fpt5IdI/mGpeNU1niAh99D8sIj10rIc6/saQI5PB6iNUcu3u6MjSDFaSldviSQtEASvpMGX2mD66Y5WjkTHLsKzh8Uy+USxuNx/RuDl6PR6Fo+VVXVK++GwyFcXFzA2dnZWl6ScrPc1WAJjGqQhBv+k+5cLgm8J5cf0VpVVX1cyosXL6DX68GjR4+g2+3C+++/D2dnZ/WdmkifRZhr7dLkOJOMDsv4uGlj/21BCRkXCqbhzjIcGyEjWZpMkQxXycCN0XWLzcIqs0sZ5/ic777kO8tyQXk0Nz9LHlL7hI5Y2nVUVVXfaUWDDnxCFv/hRJmVT2g+dNdhu92Gw8NDOD4+hocPH8L+/j4ArK+sjuVLT5tB3qqq63e680Aq1iMUGGoK256IpVitVvDJJ5/AT3/6Uzg6OoKjo6Ot0nOL7cA7lmNpQnJQWxQh2dq0PE8wNOTf5AT2Oc08X49PVFLeeCccPPne4hY3BdQ+4Xq+3++v+f0pSA3ae/zxpiabNgUP/Z5YSapfEouNSHEdS1kxGxh3w3J6zs7OYDKZXLNRNZpCsPT3Jk93wXKwbXjcjacDyJv8KBXb57Y4+hXYT3SHY+g7/g5ppL9DNNxUoA9J/TYqZy0nEEiThKljQ7PtON+VWugZ4kPteewO8VCcwZL/LTbfNupkrEe5v4mTXIhSdSq1GoA6YppSkiZqrasttJUkFiMn5lA2NSmcAknZWemKGWU036YxnU4B4JXx1m63YTgcQrfbhdFoBM+ePYP//J//M3zrW9+C3/u934PpdArn5+fQ6XRgf38f/r//7/+D7373u/Df/tt/g8lkcq0enL9yeLhEe6SWZeE7iQ+07zBgu1qtYD6fQ1VVMB6P69WzaERqjp1GS6nx4Z1YkCZkKWK/tWeYN69XKVm4C8jRfRqfetGUXK2q6tqCh9CxMbG20IxOy5i7qSipF7iO3kQbhRyTUhOYWlmh4IZFJnFaLbRsmu88MpHXQ+ob62RGaIxantHn9JhXqwzDUzhwlb9EV25/cJ0m8ZWUP530jUHKgy4aiNEVyzv0vEmdSWlEHYC25mq1gk6nUy/IWS6XcHFxUdtFAJsN4nGakSZa/p07d+Cjjz6CxWIB8/kcnj17VtvCtG4A4XbV+MhL4y7D6iumQpNbofSeCVotP6o36Tf0+OLcupXUh9p7i5zFdN4dOU3akrfYTTQhv1L5Z1PyMWaXa7KdLpxL9WNDfp9kS4Tsu9QYojQZuIk4rlV2cZroO+m9JT6J6bR6WuIU1jK0OK2UXqINgcfb4iJDvJ5M44GSfSjR4/FnPTSE0lJe9fgnOWWG8rf2J04o8r7KaZfQ+PHobs2mym3LEN+HvqN/x77TZDJ9L7VzTBZItqE2zqxxzRjtFtByQnHaWBkxeV9a9+6ir5Mir0rEdi243Rm7ZdBO0+5elYR/TCFozmjIOVutXt8xk2N0e4ytWL5UUMSMJ4vC9iosa1rtW4mGHHCaZrMZzGYzaLfb0G63YW9vDxaLBYzHY3j69Cn8p//0n+Af/sN/CL/3e78H4/EYJpMJ3L17Fw4ODuAP/uAP4MmTJ/Cnf/qn8PTp0zpfjXap/S2GQU778X6T7mSi71NA80B6Y0YTpkPDeDQaXQtaVtWrySy6ysvCmyUM6dRAttaekhFgHR+7qJR3EbmGdinnh4I7QqHJWEwj6ZCQntDGBG0Pr+G5K/DyvtZmtC0wmMLvwMN3qTRKbR0LgsdkZAq4TVQiTwS2nSWYtg29bwkQaTZRbIxo73N0aCr/4X3r0+l0zSbFiV1vfjG6LKDji67G1iZnQ+2ZeizZJgKiViB/4V3L/EQV2i7n5+dr92Lxu56btgFo/th3lAfu3bsHP/jBD2AymcB4PIb/83/+Dzx//hz6/T50Op16UYAW+KPP6K4UHviRZGJInu5CP28C3iCk9H0pOjiwP3EHi7SQItavFl/IS6PFp9e+R9r4ZE5qYNuiZ0roy1tf4WahlI2Ez7fV/5IMl3iTjifL+NHicHwSQAK1QThtlgmA0FhOtas98T7NPrXIMU0He+imbev1I2PtEauDlS4KyWacz+cwmUzqCVm8FsuTb4gujc+1/GNpaFpqH+bELWI6i+eVEpPOgeb/pCxIDPmmkszwxlX49zRvb7txPw1/SztZPTH/ED2YF40xWXia58+f8TbVdpFqYyDV3/PyJa8vylht8a+mZ6gesfBojn4IYVf8H49/khsj0nA7GbtFcCGeYljhO+t9XB6G40ZjSoArF7GA767kuWlw+tFg6/f719JOp1N48eJF/c3+/n59rB9iPp/XwanDw0Po9/twfHwMV1dXazsiUgILOTyzyX7idKKCxR0g0kTUavVqd+z5+Tl0u13Y39+vxwk1RGMBa+o0NDnGSjjCngDrLgWXb+EH8i46RNLR4CV4VnIO3jaesTiumwTvg5CjCJC+CAsne6hDI00+huiMtRnKby2gk2qIp/Jp6iSVpjtSnEFq0zWld7guTC1H0qnz+RxmsxlMp9O1ScDQEW5WoKyjQSVePi8jd8LpFre46ZDGd1NjImRHU+TKNa6LqK2eE4SLBf80OiQdxPP05JWjx25xCw9uCo/x8RFbhBqC5Q57er95k36AFJRv0t9IsW9524Qme615WsHlqTX/0m04n8/rxW94byylKWccaZNSpScZpPiXNCGklWe5bmQbCPU3lRXSrnbp7xBK89Wu+Sgo91D2aRPYobajk/6x+vGJzFgaqbzY9/zb1D7UbFle19T+3JU407YRiolvEmuTsbmFe1dWaHnskrBoGjQQlqtgQ8o0xUlNVc6lJ2B4sNAqbC15UmPgpk4yVdWrO/UWi0V9fxvFdDqF09PT+qiT2Wy2Nnnf7Xah1WrB5eUlrFYrODw8hF6vB91utw52IkJ8uok28QZ6JGPI27/tdhuWy+U1h4wGMkajESwWCxgOh2r5vO2sE6Mp7WmRxU0ErkL0WMbtLoynEFInUVLKsRiOIeS2qRSk47vEqO6yjiuND0O6sOlFCruCUoHjUnxK86O7cWkZHFLZUh/jc/zHA9LWQJE1gOKxDbyQFhPE0nr0UC5i44eOOU9dvLDauRK9/DfuxER7BtOkTpDw8gGur8rX2lFqs9K6bNu6kS5i4LwSanct+JcKK39KgR0evCjZpqXruSuwyLKYTNsE727CnqX1lfQb9QmseaXSgNAWn0gTGwDptuS25c8ttoOmxtAuQrOfcydjaV4I7lfF4m2l+8Grs5voN81u18r3xCxTaLH4ESXkdkyeLpdLmE6n9XUQUj7eSeYQPaH2t8SBQz59KAYWog0X6fJ0PHYbg9Vmp2VIbePxHyUbQOq3mE8Wg0abtZ9K+3ZetFqterMLgL6rNhZrCPGflUaLnWt574lRe+MW/O/Y3dOhvLaNbdgBMT6ivz1zC6FnVuzcztjQRM8uG3EhhAacVTDnBFetyg/fhRhWU7JN4yb3/yZAJwUBXq2mw8vjP/74Y/h3/+7fwe///u/D7//+78MXX3wBz58/h4cPH0K324V/+S//JXz88cfw7//9vy9GS44xI+WRmy4H3ECQylwsFvWkd6fTgbt378J4PIbLy8skektPPmmBmdQyd0mpv6m4afLOokMs34fev4l8J7VbyKDHCSiE1yC3ImUy3yqz0ZHAb0ITKp68JXpwh2On06nbrsmxxfuwqckfDz1U/iMNuCCL32u+CdDV0E2CHnscmziyBnksE9va5HZoXIcmxDeNqqrqhX3T6RQODg7g937v96CqKlgsFvD555/DL3/5yzpY+POf/xyq6tWCChxnVh8hdKpPTAZhGbQ8vAu21+vB6ekpLJdL6Pf78ODBA5hMJjAajeoTZNrtdr0YkfO/dDw1pZOOK6n9KP0psnQXsA19W6qN6DjkOrKEfyLlFQPnGXqFSUxPeAPQ0t90B4oVt773Ld525CxooBO6mj4pIWdjE4gxHRpDqnxEcBnMbXtsh6ZoyZ1gjtkoXnq0MnAScj6f10fnow9TYqFhCNS2SeVJS0zbq8dKxZutehv7WlogLNEXQ2jsWcH5z6OXQ8d7l2jX2F3aIaxWr49/1xZQNgWJv2Llx+pXgl5pEUOszNvYbRlsy9ZtfDK2lBN6k52BUnWPDaKQopHyCKXhgzvFCCkdgJDoSsmD0mRRaCnOepP5cNA6zOfzOviAODs7g7OzM/jwww/h6uoK5vM5jMdjuHPnDuzv78Nv/MZvQKfTqYNPeD8F5oM7Qz3KX0prMdJieYTS5qThvKWNl1AeuJoRA5l0RzFHk7wglWOFdTIlBW+SEZAi0zyOiUV2ljRavU4BfqPRqRmSfELobUUoABsLGvDFId4JHD7pK00eWoJPqbo4NOkktUtuAILqMcqz2l2glA6JRnwm8XjMwbfSK9GRgpAOxvy9x+OVGrua3LPIPHTcMWBFd66kyFmtLI/tLbVtaKIu9rwpG8EKDADiiSsffPABAACMx2N48eJF/bzdbsPFxQUsFgvo9XquoCpCa7/Qe4DX45AGcabTKUwmE7i4uKgXw7VaLej3+3WADY/Ao5NjXCZ5+097Z5WlXmhyvEloMj+FR0PjwCKLQvqH845ld5omd0N1lvSYxPu8HFq/GJ9Z6qhBkimxNpXyTuEvjy/hsXND+afkg++2aZNuu/zS2EZdctowNr61NADymJJ0Wci+DuXvTaPRqOmmHF1t9V94Wp4Pfx76Tnqn2QolbSepDa35e/qb2zT4z7J4MUUnaO8tdU2Vt6G01hiBRXfQdBYb3osUfkjVpZT/LHWyxGZC5Xnfxeye0HNuw+fSpsWfYvnljGfMy0JDqA2lZ9rYs47lpmGxKVPy3LQdYWlTD2/FvqfYuZ2xtwjD4qDFhFVKsCRECy27aZQcoJjXtoJdpWBtjx//+Mdwfn4Of+/v/T341re+JaYZj8fw5MkTODg4gKOjIzg4OIC9vT14+fJlcHJRgqevcoxnq1FmKR/zo3lKRrDmROCRiYvFAubzeZ0PHvEZq0eTyqdU/tqYeRPG0i3C4PcnWu8qR3CnS0KMj3Ac7eqdMjF4xgjuIOx2u7VM4cC7UPlxVhq0AHSIXm4zWL6zBKl4OZZnWln8b5ygC/FJKGgW+obaUZTOTchwLAMnllarVV3HlInrEragtzxpl0gMlPen0yk8fvwY5vM5LJdLePHiBQAAzGaz4ASHl06Ub7gAgi5So+nouOA29k0MsldVBYPBAKqqgqurK9jb24Nf//Vfh/Pzc/jpT3+6bfJuDLTJ0tI26y7wmDdYmwMaMKbykNolOTTwvtKCoHy8x+TvcrlMPtWCt2/oygBOC5ajpd8F/tkmtl3/bZffNDZRvybKaEp/e4LxOflxhGzhmPxGOwjTeiZFaFppkrH0pGnJPLSJ3lLgbYQ2bOoiVIvP5fHZN42YbZRLtzZhhu+keB/dqBID7zfpBKgS/G6JpWA66ehf+ndq3DXXfl2tVrUP16QPmuLjhnYT09+lFiRYgLwbo02iq+ld9aWxq/KpKWxsMraE8/m2IzRhpU2MSkaRR4hYy7ypE5vckQfwTQym8HXpSewQ3bReFxcX8PjxY/jqq6/g6OgIut0uDIdDaLfb8OLFi1phzWaz2uhAJz5V4WgK2xuA8EwalIRnMgGBARc+5rgxFssrZ4IaIbWfJ19r2pss129qwJwjFJjLkU8peVgQyvMm6pJcaJOX9B91WnBX2nQ6Ve+NK0WLxfGT+jPWjyX4Kiaj2u02dDodGA6H9TGlkkNu1fexSRCtTtTWoM9CiNXNY6Nok4NeG8ajN6juo6D8almoxL9BO2U6ncJoNKpPBOETo5yeGL9RPS3ZzBaUSF9C96eAtg+dKGq1WjAcDmGxWMD+/j70er2aTj5B3dTkvjUAPJ1O4erqCs7OzuDy8rKmBxezWBcCxPogNl6swbKbBolfPXayh9d5WZsOLHNZHaLdwvc8DdcJXn8nRHen06nz4cFOb3tZ0jdhs3n045s0xjYFKYZjQYz3LM9jMmRXkKIrJFsvlT95bMoiY2KwyCprnEqy+Wn60v1e0r6wxFKt72iamM9jycvLLyEfwRqDk9rW20YWPikprz3jYbUK7zDmupj7AjxtDNQPitGtjaPQN1bw9k6Ja2r55iLEL9I7K+9o8QtL+bG235auovxp8RFL+ZGhmMZNxib5PvbN7c7YGwqLMkxhtNzB+zYG0XcJvO3x7tjFYgFnZ2dwfn4Of/zHfwx/9Vd/VR/deHx8DJeXl2srtvEIQMwzp089hte2gpAhSIHi0BjDtsP71DD4pxnEUnBmW/BMvlqMmF3qRw2baG+P47uLbVZ6VV0oaIGI6RLcEbqJuyebAspWSx2oTAYAeO+99+DOnTvws5/97Nrd1NuCd6d002i1WrC/vw8HBwfwwQcfwNOnT+Hk5CSJZzyTth76PPo15NxrWCwWa8F4rPumdpZLOg6P88e7O8fj8dqEhlQ/5H3Uq6k8Ru+RBbh+j6K0+t1i12r0pNg/20Ks/Dt37sDf+Tt/B7766isAgPpuVpzkxLbz1CO3zrhrGfn5l7/8ZZ0vnYQ9Pz+H6XQK4/G4tnXxWy6z6CJEOn64rN52f20TKXVv2raJ+cXUbrdMpuPJFNJkJrWV0RbxtgnyX7/fh1arlSx7aH6r1Qr29/dhOBzWR3M/fvwYZrNZffS4BM329+jKbfn/b/M4LIUm2vBN6ZcUnuYLNULprBO+JcYW351vmTwPTUiFgvT0Hd1VGypXysvalh7EFqfk9HloEo/nL8ldz4kJJYD9SE9z2xVY+MWy0IjHHDTwxQ/YLjxNDFYbw5qfZZJ707sfrbySO5lN8ykxLkJ5SPaORYaXKDv0TSjWRdvlVo/7sQv12/hkbM5E4S1eocSEh8ewK7GqpCRCPCQF/iTaQoaQhl1I64UkxGezGYzHYwB4pXgwmHZ8fAzj8RguLi5gPp/DaDSqd191u936Wy+dMeNIShPqRx4IiZUdW9lGy5by5WV7AiOWFelaXWMGI6ct9Jw7NNY8Q/lTuiVjwMMnb7I+SDHiePuWpkEab1K6GEITqZifVedb9dq2An7bALYv8gMursEjUzudDgwGg7Vj0WOTBaltp8lQz0Riib7T+ERzRjCgjvei02+skOSp9g6fWfndYyPwvzU6MQ2dRJJoa9L2oNB0nFZujJ75fA4vXryA2WwGs9kMzs7OokeJNVlHHrik/4d4PiY7dw14ZDqdyNfshlDdaDrtm9R2kHa+rlarWm56A1YWOlKC7TfV5impP1LzkMabtT0l2afZ+CXsMFpOr9erTyPqdDrw8uVLGI1G0e+09yE9g3qP2+xNYRflFWKXads2moo7SH83VV4uYjZlKG0MHt3vLSeFFq+96UWufgjF6Lz2oiX2hL9Dk2cWHrZOFoa+i9kYIRot9pdGq5WGUDuUGCta3piXpKtT8tL6z2N/xnhCa9Om5F8s31L6PzemrcVvY7xlKZf7XiVi1bH4Mf9tGT88bWqMMPZtajuUQEyWbssOsMp4jqbb8nZn7BsKqyHnUTQ3NXgQg9eZt+a5K+2FO2Dpb47BYADf/e534cWLF/A3f/M3MJlMYDwew/HxMezt7cHe3h4sl0s4PT0VV4lpStVjaPL0TSMUMKyqKhq0i9G6XC7rHUCx1eXeSY1UlOZLbUKWvqdlvy2gE08WGUvbLtSeu4SQYyghNsat9S01qbctcGckZOij3F6tXt0Lure3B5PJBCaTSZ3u+PgYBoMBPHnyBBaLRSM7hb2TDZoskHYZ5UKbhLXwZwodubqq5LgOOTZ4IsY2EQpQAIC64jy2w/ry8hJ+/OMf19/g5Aa9V5mPsZw2jwXqaBl8Bwil5U0At++wzjftTqJUcF2tBQ35M+n3ruswXpdN02stzxogpAFtKmtCQf4UvqY6CXXebDaDu3fvwve+9z3Y39+H/f19+PM//3P4+c9/bs5X4yur3ZS6GGnbeFv9iJuGN0nPAZTntU23Dy1PWxxO7dlc+jztJekViQbrBLIFXr1rbZOciQcqw0OLgqyIpaWnfpSenCsdQ43l65mgC4HHSCl4vCFWx1C7WiffuL7L8VOl/EvllQIan7BMIJd477EfuH0v2X9ajFsrI9TmnvEjxQn5d9u01990NNmeW5uMfVMDFduAZ6Brg1nLlw/smxwEB9BX22iTcvybWL6bdhq9Y6eqKhiPx2vBs8lkAv1+H+7fv38tP7qLVgtqSgZGiTEdan+PsouB1sljPIfoLDlOQnXTyrG0ndaPse+tuCkBxyaRUnfJCcuVTx76QnzhSUPThgxH61jmbfEm8FVMTtCjmNFhxPoPh0M4Ojqqd8laZWCs76wTVzSwTfPhdoLFkZYmOELfeYMfuKOv04mbvB5d4uVBjb4mbeDBYAD9fh8GgwG0Wi148eJFfccqLb/p8WQNYsSCD/gOd8Ii/zcNi963BFti73bVzrYGozx5xdLwQJglz3a7vSYj5vM5XF1dwaefflrbsxcXFwDwWr4CyHoX+SsnGBrSV7vg+8baV/JptLGgoSkfgZch0RULnFnylb7Vyouhqirodruwt7e3po8on1SVfzEo9iM9NaPX60VtA6n/eazAUn6qvErxYW9RBpvqs1LllkLqREXOpJC3zSS73AJpPJdo75D947FXQmmt+VC5rslJT3uH/OtYfl5fhNqvoW88k3Ca3anpQ23Cz2qjWOxcK82etJ5xq6W1+reYVtL/Hr3I6ZFsIP6/VH6IxtBvWlYqr3pgiStqsPSZxxcI0Wflde+4D5Ur+Rc52GQcIVSuhYaQPI21gyetBU23UwqNtztj3yJYlJAngLqr4IHgEkq5BC0l02J6K2hdr66u4PLyEqbTaV3ewcEB3L17dy3vqqpgOp3Wu2tixhp/nyJ8tQCHFri3QmtbmlcuL9AABg2MbBObCrJbHahdDUhuE6Fg2DbAxxenJdXJ5XlUVbUmW6S8pTbgdzzedITqQydjq+rVDkBMf3BwAPfv3weAVxMQ7Xb72k7DVFj5MWYnhHiFOyTe+1MlWjVnqt1uw2AwqI/bl+ANEnkCcLw9UurJYf1+f38f7ty5Aw8ePIBOpwOXl5db3zGrIaaLaTt2u936Pk9vGbxfQm2ZIvusgZtt2qa7hhyHm6bHBSvtdru+Z/vs7Ax+9KMfwWw2g+l0CqenpwDwarEh8o/GE3Qy9m3rE0SOPYLfWgIupWQi9hPqylI2DILLHO9ikF6vBwcHB7U+igXHLSfr0G/x+pl+v79mM3iwTV63TAbfYjdx22dl+ZfHPnLhDYJLk61cnnjpkiZEYhNcVLbzq1hicakYHSFYYlIp8VI6KarFpnj+JSZGpTykqx1i2ER8wuNjeb632nPSQrwYL3jo4H4C7WfrIkCLfWWZiC0By/xCSC5aJ9ut8QXaninjw0qnNxbvRakY9bYQozsWe7GmtZS/q224E5Ox1k64RT48QUBuDFgVzqb6zSoQLROyVEmkKPdS6ZtEqO8nkwn8/Oc/rydo0eBdrVYwn8/rIzx4W2EaqRz6jhqeCNovMRnADQ4puE1/a3l5ZI1mzEu/JWFP0/FjF5swgErKUckBLBEsywmK3URgn/PgnWRg0L+bDkSlOA+p9HCep/zKJyL5GA+1w5vOO3wMWnQ3ymvcGZOi76161Nr+VK9SnUFp04IM3j5erV4vgMEg9HQ6hel0CgAAd+/ehd/6rd+Cp0+fwldffVXvOLbIOC2IJTnQlMc97RRCyDbh3+LRmACvAv/7+/viMVzaBJT0jj/3QtL3qZPCtJ9xQiPGmyV0l5Qft3H4s1xYgopNgO44Xi6XMB6PYbFYwGKxgNlsVtPkmQynbSa157ZkOpeTIZ6XxiG2g/aOB5A9cnkT0GS71weU8k2hQ+KT1DGl2Vop+ovSoaXledPTLDqdDhwcHECv17NXgNBtCbxSoN7jd4fHAreIUFm54zXkc2nPd2nM3OI6Qnp3kz5HE5D8l00hNAYpTdx31GwiKst5bEbyO6RyJT0XkwmajvHE3eh3tEzJDqMI1V9LFyvbY5NrzzyTbpb8pPdNjKNYe5fIO1Qm/V9DLB4oxSXxXUweUV0co5eCx0wlv9Lrt1t8R608b3yA5xvif15PLX2s/ahc0fzwkM0uXR3D0+FVN5gOFyhIvKDZ+bwMni7FhuZlWOzPkr6Uh16PTZeaDtOmyExLLNFqr1jTWLETk7EaSgWBdhkW48UbtCgxELmi9RjSVoVZ2pi1OJhWwzKWX4yGXeTVkOKazWbw+PHj+jcGqfE4Y3rUFeWH0B2ANEiH3297TMcUOXVmtMCHVA+LA6Sl1/LVxtEmxw2nx9JfsT4O1fFNgeYkW76h0PrcwmOlESrTqo+0oK9URgzSQpA3FdTpkxw27nhYg8deePWkJueqqjJPxFmD4Nw5xiMaZ7MZzGYzWK1WcHBwAAcHBzCbzeDLL79Udwx5nabQOOf8niJTpbx4Hpq+6Ha7MBgM6p2CTYCX7dEpCEs70PyRz7FeIbszR+dovLBN2dO0/McxhO26XC5hOp3W9xCHTkuxBlU5tmUDxAIcmvzieWh5A8Ca/Sy9z9GDTcKj5yV4AxramC1dZiyIWMofBFjfRdbpdGBvby94QkOpQNpqtar1nhRg2oYNGUOsjXODmbdoFpI8C9lDuwLrpI40qWHxZ7yyhn8fw2q1WjsFQPpWy4vrJk+Zoec5E2WW9Fxva/FG2jZSftw/5Wmpn8LlqEVXxGKosTspNUgynb/XaJN4xGLDazEKr+1uhcUu0/KNlYd0p96jHvLDY2WWGPPWtB7bMjamLdB4XbKBaVoLv2n+utfOlIAL2DGt93oSqQxrHMYqCzX7jeYRk01WeOsem+9pGinlenRl03bLTk/Gvg1IMVhKGzlNoZRT+TbB42zmtG9VVWurs1erVb2KmoIqUF7earWq756jR2F1Oh2oqgpGo9HaiiRqdFoNOE6zNkGaA8yPOzMxWiyBg6rS736y9rXmTEj5YfqmYHUeb8d9uC3epnaytAP+jfwVm9x609vNMoZnsxlMJhPodrtwcHAA3/72t+Hi4gI+++yzImWXbGMq/yU5bu3TGC/R57PZrJab5+fn8Fd/9Vewt7cHx8fHMB6PodvtivzlCSwAwLUdbxIWiwV0u1348MMPoaoquLy8hKurKzg5OakXPlkQc+hC74+Pj6Hdbtf1bgKlxqYnj+VyWdsf8/ncPOFsoZU70zxwkDs5xfPnR+Z6eXEXA91WYGAMj1uXFmtY2h3TzOdzWK1W0G63YTKZwJdfflkHWBaLRW2n3mJ3YOFfelc08gwuGt10QIgufLLQPp/P4fLyEubzOUwmE5hMJgDwWrZYg7r0G17nqqpgPp/DaDSqFyQ1hablze34vNnYVX3k4asmedCix0oE8S3fozxBGyQkN6RYkKUsydbR8swFzV+bgKS0cfD2SKEtNmHc9Pig9ZYm3eliO0+e2xzXJXheykNqA83etLTXpmM8kg3SlO5PkZ/eCUdaF+RdLR4klReauMR0aD92Op3gwmyLfRfbHJAzbkpMNt8ijG23342ajA0p1KZW5rztsLaVZTWVtCrGW05TiBlrm4RnQjYnX2qcYVBBMhw1oHLBY7j4ZCxXTlYjWHpXcnWRBZZ24O3F+Rzfh/qTvivd55xuy+ofCyxtI42n0ATbmwxPgE37timaELljJ5afFDTE5ymTrVKb3oQJbs+EY+h5VVUwm81gPB5Du92GXq8Hd+7cUXdgeWhL5U/te/obJ85CeWlylae18AgGG2azGTx79gyOjo6g3+/DYrEosrM6FkyjbVJVFRwdHdW/cdcS5sPbsqS8Xq1e7RTudrsqj5SSy1rfWPP36npM5wk8SHrZSl8pmUyDATl5xvR8KvgYpDtj8W5qPolkzU8CDYzg5Jr0naRrtDbAfl4sFnB5eVmnT71Hk+efKmtpu+2ivgrR1aSejY1BzYfk/R2jL1S/2Pcxmz5Uxmr1egHrarW6tusqpPtDPM7pXywWMJ1Ood1uJ9Mp/S3J3Vg7Svmk4m3yG24yYvZbDE348qF4Qsg/t+Rdmj4vXamxNMkXk+RJKE9Oq2b7WemM2X85bW7VLVVV1TZILN4R8u+1b638HSrPCy0v72k5Vhs+1X+J9VGuXtHysI45y1jQvg0hx4YO8VYO3SF4yrHwcWjcxGxRDZZ64QJQTc5xmSWlQxq9Pq4HKX206ZhYSPZzmpooK5ZWk9VajGmTuFGTsbuOXXWsLbDQnhOsvSntctPozQEGAnBV0GAwAIB15Yfn5iN439N7xSiqqoK9vT1YLpdwdXUVFHbeti4pzJsWuBbj0UIHXYFvDViljNcQSo6Nt2FClju2Wruhw6cd5Z2C0n2vQXLgtSA3TsTxY0W1tCEj/G0CBm3Rce50OnB0dASff/45fPHFF/Brv/ZrcHh4WKfF/62TJJtGE3YS5kd3S6F+wyMhZ7NZ8h2lHjro5Bo6eTh5ZQHKAX7/LEDaeJ7NZjAajeDs7Ay63e61CYBNjDGqk0oHBQBe2SmaTJHGQSldptlG9OgzOulGZdpqtYJutwu9Xg+m0+naJM0uYDQa1bSfnp7CH/3RH9Xj6vPPPwcAqCdoYwE9qZ3omMUd24PBAPb39+Hs7AwuLy+LtQW/D8oaOKF8y+/dpHqO9y2HtItz1yCN0U36tKEJBj5upPSW/Gke3LeRyrMGSLVgaCr/Uv1Bdy9Z6zyZTOpduABQ3yNP2846oczr4Qk4YtqcQPMtbrFpbGISNpZnzsQOT091rfQc31E/lILbMyGE5GEurDFK+ttafrvdhn6/X/8ejUa1TRaCpCP5blptkoe+L81ToQms2MSjNf9SfWuxM7ST63LbLWSLeWwNKa5H/y5hF0jY5RgJ2rxa3TnfS+1N247bHpZJXgmhhZjULtTu993lNt80bmJb7KKt+cZMxlpXY9DnuR3SpNGxaZSaYAHwT9Z6HN9ceGiU0nI6NSNiW5O6MaNGMv54oJD2R2gM8cA/wLqSQyWMAYXQcS9S/9M21Port515PWJpPOCBj1AZ1vwshqjXSLbQFuN5j7EqBfssk5Y3HTFepe2aEwRN+a50+1vkUMwp1Iz0TQaIS8MirzRZSI8Pa7Va9XGHeBwhTujwsmJI0YmhMrzyxFKO9I01WEV5bT6fw3g8htlsdi2fpmwg7kxKDqqmc1MCb7T8qqrqydjpdCrKl1igvfRYi+nz1PKs/RiTNTnAYKYlb+SD0G721AmTEqD3wi4WC3j58mVNz3g8XnuHtMYQohHbg+9alfjUwyfUpqX5aXIqxbaJ5evto1I+qhepdY8htR6lbBGeF++PUDkhu5varzFaq+rVjtXRaASz2Qza7Xath6SgpBaAlPKVaOYLgEJ0WvtHk51evgn5gNQf9eZxi3VovLuLbbcJmjTbMJY+xV6VnpeS56l0SbEenk9s7OXIDy0fT/zWm4aXwctCG4zaYly+W/O2wMor1ncpZQFc12Hat5Ku1GS0Nw5koZ+XJcWLcscV17+UTv7b4z+E5I2F5hLyIscP99Cg2dG5vCv9r5XlHYearONxSSk+po0PKS/+7S4jV5bzZ5v2YSRIYzmmfzaNN2Yydhu4CQNrk+BK1hp4pn/vwqDwYNd4ICV4S1eGYTAMwVfx4zvaT4vFAhaLBQwGg3oXEs1/b28PFosFXF1dJdHoNYi9x/6lGN8WxJSw5W4WitSx0sS48rRTrB2aDv7fBGCdrYFtb4BYcjYociakuLznd7eFjDK+SKPb7dZHYWp04rucI3l3HXTM0joul8v6PkVcyf7FF1/A8+fPYblc1jvVSgWxd9XITpUZZ2dncHJyUo+HEjzEgxQaWq0WDIdDqKoKxuNxvVNPKx/1At/NIE2k4v94LCWm6Xa7cHp6CmdnZ/DgwQPo9/trO0hD/ZuDXXR2YpDsV7RtUI7xe4/5t7ngu9fw/xC/0+Ouuf12i1u8DZDGSGqAn0+KarLS62O0Wi04Pz+HH/3oRzCfz2E2m8F8Pq/vSMZ0VP7wE3EA1newcbosk5gx5ATjboKcf5vQlH5/k8B1u/YeIO5HlYR1N2pIRnG6qZ3AUUJ2SDaRdXFFDKF6SmmtqKoKBoOBuoguFuugbRuqJ5fjKN8t9OUgJJtTebmUjxDLT5ow89BM08buQOZ9gTpby2/bCNkjTcl4T76WWF/sm9A9rpb8OPgiz16vF60T978lcBndlH+4S7jJdsQu0n7jJmNzmNqiyEtOxmwi320gJGS0IDJNa5mc3Ybw0iaTOTYxaWyhoUT+vAxutKNBIt3fFQsSdrvd+jfdiaTVIdSudPyEAi+hNBJ4cFsrOxeWiTD+u6S8CI1Z7kQ0zduxlWQ83U2Vmx4eBPC3e25/5QQXtUCnJSDKv+Hf8YncN9GQlXib96fWP/x+78ViUctXPDaeOpLoaDYpV6RAieaMpdpCFl6Q5DmWie3W7/frYHhJu0ziYVruavXquNdutwv9fh+GwyEcHBys3cGpTbbyOobA2wlpOD8/r/PudDprxzFJfWYZdzG9touyW7NbrPooBqy3ZTzgwhOLw2+hqwlZiYsGLi8v63rNZjN3YCbG101C6pOQrYlprEHfpvpg1ye5cm0X6+8QQnot5BdYbHKvTSTpc1w8hgtlxuMxzOdz8eh6jc5QsJr+r40xiS7+twVWP0EbO5vWCbs6bm6xeb+uicmKmE29K/zHJwvo89h3AHG7UJJDofykyQsPbSEarHE8AKivzaHl4wI8y0SpV0+E5LjWHtYJLK/9qsXuYs83NW6bin8B6AuuPPmljG0Pv8T0K/0/h5ZQ/hb/05JWs489Mjlku/N8LDIKbRT8Ta8h0fpJs69CstUrxzi9UjnchtuWnpH6bNM+i1aOV6dsGzduMrZpNKVodjEoVRpvUh03bXjsClar9eOt8K4tfjcYBhY0VFUF+/v7dSAP76zLCcbT73ZlksZiNFvr7AkINzWZESqzBCz070K/lkIJY5kHtkoHe5Evcu7TDAU7Q32NzvB0OhXp2vVg9CaBbcDvLqTAibZWq7V2SsF0OjX3b0xOeIId2vexO4NjZdPytXRV9Xoh0WKxgMlkAnfu3IEPPvgAnj17Bk+fPnWXbwXd1bparerJz7/8y7+Eu3fvwve//33o9/swGAzgyZMn8NVXX0G32613RkqT5x7ZT79BWn7xi19Aq9WCXq8Hw+Gw6J2cXmgOtTSZ3kTZORMSGqie1xx+jtlstjaxuSt2DaKqXu0aWS6X8Nlnn9XPUb54Alm8zfE3PRoQbUwpEJrbT9I1GdrVGVR+IF00Hc+D6lELDVKZu4RQXZri0RzfIJQngGxDSbrEUy9pXNPvka8nkwm0Wi0YDAawWCzqI75pekwbCiBZA7kSj4boDD3Tvo+VH7IHPXnEAp63uIUHIfmy6z6pJB/oGNFkB9VfEnImHfG3dGJaTnk8f4pSPiGeVMN3300mExiNRmb6YhNWMRtQ+iYHWj6hSaZtg/OwtS1KxLM0W5P7Iil2LgBcsyFzYTlJL2ZHNdH/lj7z8l+OPSjZYiHgqWP4bSieK/0NYLOzUrFrY/YWZfFGT8ZqRgoPmNwyeTp2OaAQwqb6Pje4sOn2lQLAPPhPDSY0NHAyZzKZQLfbXZvA7fV6ajk0PytiK59CClL7jtdPyytEd+oEKaeDlxUK0MToTAnySsH/0uOEBt6ld5yWmw7aphp/eusaMxY9Mg7Hsvc7LS/Lt1R28OAbd15pWu4gpbbfTUev16sXu+DuWFzVjZNwoSAvh9SmHLEJwSacaKuMs3yHbXFwcACtVgvOzs5gPB7Xq+NTJpZpvjGgwzcej2E6ndZ9RvOyjldOA3/P661NPDXpQPJ8Y0GOkF5oEnwCIZRO6qdcenEBBT1yOAZMd3h4WPfvYrGo7wb2BEdCdoJVH5SSv5xvc9q2hJ2/rcDVpuDxUVIDlE2h9ORtrKyUb5A+3G3Fx5p3XIXGREgvlOizmO7gcidko+baELe4GdDsMC0dT9tE+Ry59qjHZ02xobUJPY9P77FXQnGPEK0p+npT/ptmJ3O+k2z63NhOLI1kA+P7WF9INEp84u3z2PPctKHv0X/VYNVzPF2sT0KxNo1OL30xhGKbUlpKS6h+qfG/GA3S9034SN78+Hjg9cKYNcI6WW4dj1Y/3qKXvLorRV6l2re0vKZ996Zk0S7EnN/oydhb3CIXm3T2dxHSLiwqgDudTh1gnk6nMJ1O4ejoCKqqgqurq3pnrQSpbUsFz7x9xieCmiqHliflVwLeelgQCwClOGC7FNRrEh7D3OrAWdrL26bU+cntD26Q02CC1B50J6HmVHIZRPMtQfNNw97eHgwGg3pS7/z8/No91J1OR5W/NwHWwJYlLcW9e/fga1/7GvzkJz+By8vLejIsdXe4RxfM53M4PT2F+XwOo9Fo7Qh/S9AEIY2NTdsrqc7XJiZcrW2BafhpH3x3M09fygkGeHWlQ6/XMx2Ph2XM53NotVpw79496Ha7MJ/P4erqCr766itotVrQ6XSiwSKpXtuYDN91vMntcVP9m9RgYWpZnvwlfwLlPL+3LMV2ti62iNGG8E5GaT6G5Y69FB21yb6+RTMI9dmm+tPjL0jB+xw6pQlRj32ivUvJQxq/KTGTTY/Dpsuj+Uu76ayT0hKwvy2TniXteI9PsQuwTmJZ01rzTp08zynTUl5sgrVk33oWiMSQW28pPxr3iX1viR2gTZZq2yF43CUX3sn8TfpsWt/skk12E33YmxulcyA2OUEFbBMTGW8brAaMJY9tDCjOA03xRCiYV2LSJgeaYajRzO+gA4B6ZxYGut955x0YjUZwfn6+ljfNP1cpauloPWJGLz12LmfSVFshxukKfSeV62mj3EC51u+eSXTpXYoxe1NlssTfVp2UA6ksHnxvok1DvLBavVqNaDGmeR5avlr9bio0/dlut6HVatX3zT148AAePHgAn3/+OVxdXdXHIE4mE6iqqj4CutPpwHw+b9Rgtk5W0eexiVRJxnj7GPmNOku9Xg8GgwHs7e3Be++9B4PBAJ49ewbT6XTtnt0chJy1+XwOT548gU6ns3aUNAe9+xd3PVI54m0LnFScTCZ1u2A5iBT+0L6J2dNehzOHLj7RqNkAVfV6B3EqTTFbRsoXd7ZrgV9uV1VVJd45WQrSJEu/34fVanVtwUypslB2LZdLmE6na4ttSvNHaDIK+aPb7cLBwQFcXl7WR8tKdiH+xtMbpPx3GdIYtcpoK1JtVo+dGSqXj3tpooU/twTNEbTvrXTFbGWL78HpbWJcxp5JQHpCR0Ba80mloQnkTMa8iUiJ0zQ16WHJM7efmp7YskwgxPwrTQ6UmlCJ2TWUBi5/tXz4316f38pTmG+v16vtKNxMgHRrdpVkN2q6Kka/1U5IjZl4ULKNPflo/CuNU2xrjCmG6PK2k8aHoXT0Wai8WNzMCotdUqoM6blHnnhtJ2s6r82Hf1vGmhQblvJEm8bSr7wd6OKO0vZ1ie9LlN20n5b73S77ZRuZjG0yCFgClsmCXaZ/11HCiS81iDgvpubv+c5jWIYMlFi6UsY25iVN3PAjFfEdBiPoziJ83m636wD4ycnJ2mRsiI6UQK41gBFTzKvVqj66MqTQLbJN+zbUpx7Dnr6zyDAtbYynQ8YazSNlrFrGkxQwu2lyuSmjJVamxEOh/pQM6hD/aPlwxBY6IDz0Uj5oInBfCpocj/Ewvsd7GtEZuHfvHnzwwQfw8uVLmM1mMBwOYTab1ffvouxFOWaFJlu1OqU4FCnBu5DOC5WLgRaA123Y7/dhOBzCw4cP4fDwEF6+fAlXV1fQ7/fX9FwKJHlPy5/P5/D06VPY39+H+/fvq/lgv9GgUayuFpqQP/j9lTmreiXZINXf49RbdLmHNg0SbVJAsURZGiS7KhRUpWNaopHbLSng47rX69XBylDQ1wvMA49Yx8UC9F3JoAUiFKRZrV5Nxu7v78N0Ol2755OXry1m4PYQrVMpPdWkDbRJPeopK0V30G+5rOJy1ev7W2yPUD+FZKI1mEjLsdCslafVPSWIKtkGXFZxei22R2odS6EJWXRTUCKWE0KTMpHyXozPQ76Gt1wNkq7wIBQz8fgV/G8tbykdTW/5JjamJV2a4mdKcT6aT7fbre+5xcVf9K56qT1Csi1UJwsvhWSKty9KfbtpcPtIg9V2ssZILW1hib3FyrbCyy8xhNJ66s7Ho6a7S9uNpeOJVv2t2V7S2JcmWqVyY7LQ0oalx663fSXZuovw1ssSX2wSG5mM3YXO2gUabrF93EQ+2AWaqbG8Wq3WJlXwPa5am8/nsFwua2OXAoO+VsPCEhTNdWJKTQyEvpHS0za0BDdLKwVOl6ZkQwY99rnFObEEVj1Byl0YF1ZojpnUp57AFEdojGwyuOqF54hklCvcWN51fiht7H388cfw+PFj+NrXvgYfffQRfOtb34KzszP4wz/8QxiPx7BYLEQZvOuQnBavMyyl6XQ6cHl5CR9//DE8fPgQ3n33Xej3+3BwcFC3U+rOWM1RDWEymcDz589hsVhAp9MxyQYLUr4LBa5KoeQEnrdcgHR9YWmLUECmyfq22+16d/d4PIaTkxN4+vRprZsB5LuQkCZ+NDMH1esYrMSJ412Xt02B7pym9ux8Pl+zU6ldJ/FCiXHW9ETsNie+NLuotM633k2XitJtmJoftlcOz3l1M/8WwO5D7bK9eovdhZUfPZOVVl7V/DlvED4U88CFWJb75bls47YA1e2xSTBOq0a3lL/0ToJVnsQmWWKYzWbiAjgpv9jEiNdnsMRK3jaE2gN5E/l+G+23jf6KxYE4TU3YaNax6JG5TUxUe9N44F2Ewb9Bmry2/62c2A1syvd5K44p5kgNcKV+e4ubCc15LBWsLL2SKDRpViovzE9aQUh38NBjGfluuHa7vXYXLW9PqV208ScFsCV6LZD6NWTweAJWGs+k9L1l1VSorFgaT3vRyeTYuLA6t7F83gRZHJtIlH7T4yGlNtImBCxBh5SJkpTJYk6blJeUn5b2pk3IlsTz58/h5cuX8O1vfxvee+89+K3f+i14/vw5/Pf//t9hPp+v7TBrAimLLzx5S85oqCxLYGo6ncJoNILBYABHR0fQ7/eh2+26ygrR7KETFy3Ro7e4A2aV0bStaRmePijVXzQ/riNzxmiObg+VHQpCWumV5FcpPRUKClZVBQcHB7C/vw/dbhdGo5FKU4hmiV8oL8UmFj31iNHAv9F0Q0r5dPGYVqb2rcTP9L106kMsoLLL+qqEbZrKIzF5rNkDqfou1xej44RCaw8u4zXbjf4t8VJsIoHTFvIRrf6JxRez+G6hPHc1CBlqp10ey01j1/uNIxRjiIH3tdUOpr9D/pbFjrXqGMsYtdab6zYrQjLKIhNyoPElvbpEeh/jZypTrYvRpfxi/eZtg5skgyyxKim9lsYylnPtE/rdJmSd5hdK9KT4evy3JybD4ZUnobJj6UvYprx8nrdUn1C5ofy9p05Z5Qnmn4KUNkyNMXrhoe2m2BwxvDWTsRaHAAWatJLcU04TjNmkkk3NnwdrbvH2gDsEGhaLBTx9+hTa7Tb0+31ot9v10Zqnp6fRSSjruxBS+RPv6LMcQWEpJzZWpCC6twwvNIfOGshdrV4dTY1BTn68p9VJfNtB+13jgdVqVR/5jZhOp9EjVflxpPR5Vb1eHIH9SHme3o9Rkvc8eUmG6dvIP3icVqfTgX6/D6PRKGqr4PjEfrTIIPzOA/5dU/3Dd/vxY81i8gb/n06ncHl5WR9b3PT9m7R8rjctNikeOU3vjvU4pVIZnU7n2uSap983EYDlwUOr3LCk6/V60Ol0YDgcQlVVcHp6unYv7yadPLwHGhELtNJneLwv/W7X4Al04wIFLUiSgzt37sD9+/fh9PQUrq6u6hMEQsH1mzJRVAIl6hbSAZqe8ASfculC2YA60Rso4zYale3eOliDxpZ8QnZjilyQFtzGJk+QBmsMRRpruyrDer0eVFVV21P0+oNdpblp7HJ/lQAf5yE7MRYP8d5FT+2dqnp1sgvXi1ZatKPYtf7z+GZSvjF6eFr+PmVCKfZcypP7t6HveRmdTqfOw0ID78832Y5IgcYDUnvl6M1tyWwrX3nSbxueMdu0b8ntuNTxhWVrd8OGTnGz8p8n1oppbgI/5OJNtydCeGsmY0PgCjJHUTbBSE0zZ8zBihk9mxg8lj6JrRyK5W/JJwfbMgJCgr9UgEkKsmBgbTKZQKfTqe8v7PV6puMzpT4PGfRW2nIQy4uPlyYmKSwKKzamMU0o0GsxDLX60nys5cbof9OclxAv8TGLBhzVVTQP/CaFv6ju8xqJnB6eb6jPNEfeM8EkpX1Tg+bYP51Opw7M0CBLt9uFbrdbv6M8g2loXpIusMiEEjrEY2OF+ljLNzYWVqtXk9QYXIsFpzwIBaTwf+vYonnR/g6VY4XUbzE7qGT7aGVZgmkWnpN0E+UPvMeeLm7xQOJhT7CNpvHIXalMzxjR8gzR7NENpR1qHoRL1XGr1et7YMfjMUwmk2t5Ut5cLpcwm83UYKsUxKX/pLRUBuyafrLITP73LuhaC0+kBM1C8JYnPdd8G208W5Ez/jz9SWXGJvznEA2bKAMDsbs2bjcFzcaPpbFiE+1qjSHFJoBKy2+LrUD1Sogumt6KWIyP06rxgrf/Y7agVmZO/IPn67G9aPuiPR6z91PwJsoYzc/P8QM935XWEx4ZYClbi+lQxHjV20bbst9S4kU87mWJLfG/Q2k1+Rqiu5TdYyl3F2xtDqu/EPvG01/edBY0bUNacDsZ+/8HVfZacDo3312Bh6YStO9iG9zCB0+AFIE7DujE63Q6rY/QDOWHYxDvNLOutPYoaY1uSxmxwGXJgHWTYyc0+WIJznH6cNVYbLfm2wpucIccEhrswjGAweFerwfdbvfa/UGYj7TbQzIk+TM8Yhx3OmMabfw1zZuUTk4DbcO3Xb+022342te+BgcHB/Dee+8BAMDp6SkAvOKFXq8HvV4PRqNRvQOaw2Lwp7R1E4FaafKElhEbCxr4Pd5W8DKlSZnY9wg6kR4K9sTAy7foUBpwpv/4DgJrm0p9z+UapQ3L9oxtPoHG645ltVot6HQ69WkCjx49gvfeew8eP34Ml5eXrrrwZ9IuMqQtFAxqalJOCuzQdxKdPD3+Te9Ws9Dq9S1o22Ef8WssOK2p8r7X68Hh4SFcXFxAt9uteRt1HZUZo9FIPH2A8/RsNoNutwsHBwf195PJBObz+bW7qPn3NxGWiUYP0M6n15tofVzCJ6fl0v/5315otKXoP2miVgrMeiYPvDQgqA+WQ0Nq+Z68m0CI56iPuktB0l1Aadldgh5EbDygjkR7ZLFYiGOS55VLmyUvukBImkyk+l3bEVuKXg7Lkb0hXzdko1r6zyKLeNtY6cTv6O7kFF/oVk68RmzyrYmyLGO/KWg8FUob45dNxvI5Sst4SU6hHJbKlkBPusmpc4mdttqmoxBdnvu7b/Hm4I2ejNUEn2b48CCQloYjNGh2cUBtmqZdbIMQrMG/0uWl5htyFFPTptCiGTt4tOJsNlsLwnY6nWt3d2jQxqU2hnMCQxKobOAOj+ZchPKLlUXTYH1C/cnfW+RUTD42iZTg0E2TIxJ4P3l4lTuRGAQCgOgqXS0vy7McfrD0mVWnarRwXnoT+MQCbAvc4YlH2eLpA3t7e3UgSXNoNFCZE3OYPfyhOVsSrH3pdVyq6tVxc3i/Jk4E8DyaCGBZd9ZwmZ86CWb5nuozazta9E2MNunbkA1OeS2kc63ldzodGAwGcOfOHeh0OvD8+fN6HMXqEpqQSpU/3MbAZ/R//Jv+G4/H0Gq1YDabwXQ6vfYd5luKv5uUr03nTYPssfrj5CBtO6lfKJ9KvKHZqm9CYDYUWI/50hwxW1dKH6LLkwellfooMdsiNxBK28Y7gWGFZ0x5gsWlyy6BXP8vlO9gMIBOpwOz2QxmsxlMJpO3wtbMDazHnnn43jverHyQYsNK9k9I1ln4MiRjaJ0ku8Brw/HvrJDK1N7zZ5aYSSlI/aPZQbxsqy2Z6vs0Ic9T6doUcmgK+YtNyHoObs9446gWGiXd5YnnNBFHs/rp0t/ecmMyW3ofs5889IR0TciusPKClq/0P09X2s5o0uez6LgclBzvu2S/7eRkbJMBVatjeIubgbcp+L5NpI6b1WpVO6/j8bh+tre3B3fu3IHz83N1l6yUFwa0Y4hN3HgEOg3I4fcYzEvdAWoxbCzp8ZvccUDbK9WwCzmS23YOdkVOSDxsbW+cfMWdjb1eb+2eXlzwgOXQ/OkzyQitqgp6vR6sVvIu9F04no0GJTw82rQ9sY2AIzXeLy4u4OzsDMbjcT0Zs7+/D9/61rfg2bNn8OWXX9aBRI8c19pYWrkpBTOszpf2PMSvPL31BAXc8X11dQWXl5f1AoZ2uw2dTidJv3nh5V/+bQ4o72Bb4N+8Pz3ji+ugEnTSv6n+LXk/aqvVgu9973uwXC7h008/hdFoBN1ut15AhihVLw28/ejdyLwf6K7RxWIBX375JfR6PVgul3B1dVWnsy50u8Xbgyb1VYqtl0oPt8elYD+VG7Q8DzxBeUvedKKX5k/bYVt2Fi/Xej+l9C1+bznKc9eDa9g377//Puzt7cHl5SWcn5/D+fn51m3iW1yHJBc0eCZJYryV6ofHaKiq14uHaN5Ut1snqEoH+L1Beo0ua9ulynLJf6Xt6T1umPoaWszDi12IT2wS1kUA3A6Xdht6bQ6JllCa0n0Ti/9ZJvJ2CaV1eEhOUX+TP5PSW8vEMR3jS6kcjV+4jLbGXfjvbduGt7Ahx7/aycnYHIETYtaUiY5YnvT9rgrKNwWSQJKEdmj1Sqk+yhGOu8gvuROX1ok8VJp4VLG0IymGkHKiz60Tg7kBIQ5uJEg0hPJMVbi5ilpqHz7WtIm8GP9Y21ga2yUMEU//Wh1b6Rup7UJBQXyuTXbGysagPTooeFwxl4uhftLSa3XcJlLHaVPYRpvgJAzto+l0Cj/5yU+gqir4zd/8TXjx4gX84he/qPnCOna8E6HWsUGD0JYAtzQZ5ymXf8PlCjpeGIThx5SWBg++e4KF9JhYAFjrUy5jed4p+lXrJypH6N9WeAJtSAf+T8sM0c1/82Pz6ARDu92GbrcLe3t7pnbyOtIpdg2lnT4PjTvsZz7J4w1Ex8b8JgIBKWPdA9wRj0dVA8h2iiUohry0XC5hOBzCu+++W+fx5MmT+iQYLvssvNwUvONV4xFJvuboQu0+7JJBKKvssOoo/q32jbZ41GPvhXwXiS6LbxJ6XlUVDAYDAIB6EW0Kz2rHllr6NccGLTG+sA1RTtCrO7BPtzGGN4Vt2vsp7VqCXuxzj4yWxr8UD5HGQSg+wGnRbBTN5pD8uhjdtFzpXWy8ctsxRK+3j0P964nhpugqr+0nlZuav5XWN0UWhezgkvaAVnZMR1r0ktc/TaHHWp5FBljy8ZQdkmtSOsmf5HxgkaMe+yBEr7ddUuwNCx/F5L2FtlxYaLjFK+S0y05OxpZCTLBisCb0Paa9xS3edngETczYmEwm9TFPJQO6NF3IAN/lsZ0aSODBvk1BckK1dCV56CaA9on0DPUPOtuhtpTaAgNENIgstRu+k/QdOvmeY2x3Cbs8lpsA7tqj9R2Px/Bf/+t/hffffx/++T//5/DJJ5/Af/yP/xF6vZ45Xy0Aldu+m3CiKWITWSHk7iTEemr15WPN4rTP53MAgLVAMO56jE0ic2c3pw+1/D150gms0M6OkjRSR59Oxvb7fdjf34fDw0NYLpfq/T6pZXM9nDLB0xQsuhXbLWV1t5aXRIf0zDNR5cF4PIaTkxO4urqqTxHQJgLxnQQ8mWI+n8NsNoPj42P49V//9Vo24+65drtdHyFNA9W7oms1OSUFxxAlAnicH0I7wXlZ0pgqZSd66hKbhEVYZYD2TehZ6HvatxY9Q79tt9twfHwMi8UCLi4uoKoq6HQ619LGyufy4ibZ89JuxFtcx5vgpyH9eNWHF7E4o+U73ob05BJpkjMUuLfqGUmGpfYltxVovpo8S5WH3sku6+SQ5b3H5pXalX9L++ht8WE1aDwd8plKtJlVhpXsH40npbGdaw+XlM9N8GjMjrOOOYs9aF004fVtY2Wm9sFN1623sOGNnoxNUZiIlOBhacfwFjJifWMJTvK8UsqPlZWSb2pgA0A3UqzKh6eNpQkZCFIboaHOA8QWaJNZUjop/9BEbCjwEWtTnAjTAssWwzHET7SuPNDf1BGEsbpzmmN8JuVjHUOS87lrDgu/f06rM8Crewrb7TYMh0NYLpf1vZUAebLEMpkaCoohD4ec8021u0dexb67KfAGtFarVR3of/LkCZydnUG324V2uw2np6drfIXpubzQeABgfUdLLFATGrv0GFxMZ73b2NoeqTqdTmTmOkpeO1FrW4tuxbTaMZJWO5TqFpzYDZWp5WF9ToPznuDfavX6aHaeXmqvXJtMc5w9ARtPOm/gD7/D/j87O6vHF955S9sqZqdtU65LaJIeb4AlhtRJs12zYayQZBQf1yGejo2N2FgIpaN0Ub4OtbUkP/h33O729p00oSLJ6BSdGPMnrEAdsFqt4Ojo6NoVGNYyqGwCeK3rNdvT26ZN2nicLl5Wt9uFfr8Pk8nk2oTdJuXoLsATa9C+QVh4IEXvWmIcIf0Y0xVUTuT2fYrPE/rGYrOHZIe1Ppb2Cfmd/HmofA9tnrRWvvP6Z6E8c3yONwWxPtL4pwRvWmmJ9VFuH0r8JcU6c/Omv1N8pVz95ukzy9i1yHbre26PWcZmzIbR/PoY/bwMqz5rYkxoZTWRrxUlyonpoKbqEsv3jZuMTTUmuCO3K5Do2QUad4GGFAHHUaIeb5IjZgmSeutqMbpSDd0cHogFQjENnUSgZdIglPROWyUqlaFBC9qkGLLWIH3IAKCBrpRxo30XGkNSgK/pgC2njT+ntNDADE4caHl2Oh3o9/tw7949mE6n9aSZFBzX2kSjxxPklPK1LijYBlJ4roR+2GUg3z1+/BgAXt0T2+l04OTkBC4vL9fSrlbX7ziSbJ/VaqXe9Zaq5yhvWndAecvSAtwWmvD7UrRYyufHylrtVpoe6dICcNJkguQwUpnOJw68COk4vtMo1F+0bphOmtiXvssFz1+jD0Hbb5PA9nj58uUaXXj3MW83Dt6+FnuoBEr5DpZ237aPomEX/CcveLCQH/FO34XglesWmrTnMZ0g2bfScy2IZwH3EbwBX5rG8q3Hr6G2Nf4+ODiA4XBYn8gQy0N63m63Yblc1nmE+CPWth69HqPXmo7LzKqqoNfrwWAwgNFoBO12e+ds5Kaw7bql+pk54Cd3hMrJKYsH9WP+vPYtlVtaWiq36Xf0nddn0uxJ/o7GSug7HkuJ1TNGBy8HQPZrNfmiyZqQTJXaLGaTWPOywOo77Co0+kMxLMv3nvJDfJmaJ0LiNVquxGsAso9coq9DY6AEcmxbiQ4rnVpbhmw/baxKsVtrnTwyU8Mm450hGjTcVFmD2LTvZWmvN24y1gvL5MI2lZ3Vedk0doGGXUKpYFzpoN62+kkzrHLya6Iu1vYOlc+dj5SJBIku7Z0lv1JtpRkEmgOiGbG5MnSXgpe8jovFQp1sCNW72+3CgwcP4PLyst7dJE2CSfyFd94Nh0Podrtr+WIQjNIk4aYZVCX7Pye4um1YdpbipIw2EYPH5VqDtqlYrdYngXOcNClYUqrPmsiPBuDp81R9w2WCxznk8lmiV/odmvTkgbyUwCTnT/o9353tyVuqJ8pF7JOXL1/CF198UY+n2WwGAFAfAa3lswmEgqtS8GiTdJWeFOE2RohHabvE9Jo01vB44sViUR/1rumCkI5YrVZrxxt3u104ODiAxWIB8/m8PtL1piHET1QGl5qEsPgJ/JnniOem7EZpooZPrOCEHbYVv1pAQulxnZLP3t4e7O/vw2QyWWs/yTbVykS9z30CS/2kyZxYWopS/Y164MMPP4Q7d+4AAMDp6Sl89dVXa4vdmjqh6G0AHzMp/Jpjo1I5ZpFt3NaRFmHTvPkzKS8rjdK44OVJk0maLWSFdYxp+tk6seUZ99r3q9Xq2uJo3l4xvR6jky6q2ZWYxJuCJmKfuf5rUwjJGLRxtJMprNDGXspY88RMLGPDM9looTMlvlCiXFo+l6uh+Fson1uUQUpblp6DseJmeoyFEQp84QDXjCFMo32bUnYu3jYjQaqvVxF7BmBu+zYdAC+Vr7WemrEuTSjR91bj3JPG0y/eoCYNRmn143JDo1Oqg7U9qIGVYwx56PHyAneyrXnEJiBouk0rTKlOnC76Ltb/7XYb9vf36wmCUNtwvsK76nr/P/be7Eey5DoPPzf3rLWr94UzHM6MyCEpLhC1eBPgnwTI0IthwDCgJ7/6zfA/4TcDfjXgFz8YBmQIhgHLhmVqgWwatASatDgiKc1ohjPT3dNLVXfXkvt2fw+Fc/vkqXMiTsSNm5XVXR/Q6MrMuBHnxnKWL7ZW68xkLIB9sk2TXQv4q0RVtlArQ2of+vs621FKCHCSfDqdFgsEfH2Kj6OQ9/XpLeoz4Z2cPn3rGuMxxOt5+WAaWYX/W+wBfUYi2kL8FYt8ElzlU1tokccih/buvCyaVvP9uKwAsDQZOxwO4ejoqLhXGSdL+CSCpX9IhK6rD1iQ0ncN9TF8aVKNF6nvSDYp1G/VyhqPxzAYDJaOcnbJxf/mafA3eoespHc5KbyOsNqBsu+i+YaSrab/az61xaaUjQ8luXyg92Pj+6XqA6FxDx1Dkl9P9SQex4u+BH5v8Sfxd9euHtd7+L63/G7N0/cuuHhnb28Pbt++DYeHhzAYDOD4+BhGo9GZfNfVV4xFKBEdCtczVp1viZn4Z5fOAbBPVHI77/KDfe9K5ZP8HE0m+ozkn8WmlZ7j8mrvQtNrNlbTv1J7xPi5rne1PM/l9JXD065SF6y7X6FBGheudwn1A13jkaeJqcOQMW0tA20sXehHEaoTqc22jDVfftpv3FfDv61+iY8rs8oZwlH6fouNm/E5bSLW0o+lNC497BtHZcdNmXGSEiH9xNofqkRIfV1OxgrQjDddqZ8KVXSWVXfAKsjMEJz3gEOsi8KyIIXxCwW/8w2JCgkupzykvS1tgkrbeiwRwPJuSIDTiTUpaHIZXu4UusaRNLmG5a8j0ZdaHhfBfd6gDjTto7xt8jwvvjs6Oip203Dwe4jpZ1oPtVoNZrMZjEaj4vvt7W2YzWbQ6/WK/Hj/cDkpoYRVSlRlC63jQ+pj69rnEFmWFSvBB4MBfPbZZ/Dv/t2/g/l8DsfHx/DixQsAOJ2Ems/nxW5ZbcWtFoBoRO46IM9fHg0eqhNDyJpQmco8m+f5mXvpXAixYS7wozT5LoOYnb5U3/BFJ1IQ7wKf1KCTBDyPWq0G29vbkOc59Hq9JR26CqxCd+DkCS0T7/+lZeOxi9ie6xCohiCUiEtZroQ8zwudCgAwHo/h+fPnxc7YyWRSpFsXPRmC0L7L/RyA8voU85Tuiqa2mvaNMnVN8+L+uDW2801u8H58HmOQ1inKQO9P156hupO+Z2idx7QRvd6Alh9bpm/yCcup1+vw7NkzGI/H0Ov1iv8x/rtEWoQQzBxWX46Ob1oWj7skOaRnpPwlWHQI+kfW6zy0Mrgs+L3v6HH+rMbDuNom5OQC6XnX75I+5u1Ov7NwL1r50jteRFu+jrD4F7h4t2xM45tQrxKafUR7i1eKcF99MpmY+25VsNi3EH4l1J905cPzivEHUtYjz4/GYanyv4QNlgUAAPELAavC0mTsqgPeMmSF79nYIMHnzGjOCU3zusG6WmQVxBSWxb+T5HF9dv22bitHKCnhg9S/fWPFWoeW3zh5KpVdxrCvcixyQoh+LzkLvvryyezK19L3aZqq6yeGzKsi3xTgxD+H63upb6Oz7RqzFmcTAxV63CIl2zUZ6DtZcB51vgrEvlcIsbcKYPnz+Rz6/T58/PHHUK/XoVarwXQ6PUMyxcjrIl/Om1xGGTiRp8mIv+P3FhsYK5Mkm/U5CVzPl/WBpXz4M5Z7ZDkZRvN0+dQ+4pJPtkjy8Wcoms1mQXBy0m4+n8NkMoHRaHTGjlrzt6LKcUEDfn6EnkROuvzXqlHWB+L5SP2jLEJkwHLn8zmMx+Pi+GPtGNt1s6Vcd5cl1aQ+ZiVHuDySXfGVbcnfJxtvJ6tO8MVg59X+oW2qTWaUia3KjM8QMj1V3dJ3HY/HUKvVoN/vw2QyKU5X4BParyOqem/NZ4jpg7Hxj6Qn+JiI4VyoTbbwAvyzL2Z0cSO+/ELGqYvzcr1XWVvNy9U42nWbwIitZxfWzZ+gKBMnZ1m2tAgrJGaw5p8ClvqXZKY8KF9shpwOT4vlxcjo+uyT3ZdnSDwR479Z8rG0pyWGDJWB6hrNzsS0nUVW33M+WMfAuuoXjtA+IenjVdgMTa5z3Rm7TuSGpFRXMbFThTFdFwNtDWhTlnOeOC/n7zzf3TVGXPepIFwkvwaLQcf/fSuTyvYdzWjSnaxotCmpzdOHlknJVgllSeUqJidCwZ3QWHlw9SHmg45urGMrGX3axxuNRrETifcPPCJxc3OzONoQ75fDZ6i8FNJOOT628D48LlMMISHVubRLJRWqsoXSd3z8uMbSutgXDVJ/xn7ebreh3W7DYDCA8XgMAOnuOOPBCH4n/V4VYoPUVTnf3A6FkGscPrLf8ryGmD6O74J6jt+Z7SvTJaeUB/8/tu3q9To0m004ODiAg4MD+PjjjwHgdNdIvV5f2mVdBqvSGfxO5rL95Lyg6RCAl+MHFx654jX8W/PBtLG4Cqxzu6QiOgHc+oS2H+5+mc1m4gRgDGgeKXYmaJOTAGd9vxCbJ9VPqj7JTzjw6X46robDIWTZ6STkcDiMLp/aWKyXKv27Ku0o1gsubtOOkbzE6pDCv9RsCQfGXpY2l/q6RvxaxyfAS9tHr/ug+VdhW3gda+X4+AYpjk8lr49fsnJMvjrUJn3PE+vsT3C4JsDob7iQOAautqmivVyxjmsyul6vq3xOija19mXX85bvYsqm6XwTxWXk8JXtKtdSHo83eB8OlRPrw3UywyXC4au/KvV4iI/ySh9TfN5GUypXcqJSY10Gb0o5XEGXpU5DlLxlksL1jOR4S89bJsxS9l1X0JG6PG6oXMaPl+2qv1ACwxdo0TJRcUrBh0bE+MqX0vJgTfvbJS/maakf1/eWcizPuxwrV7DE86/aMOL/rvb0wUoqSRNV6GjRydpGowEbGxswnU4LUtJnxKXgFv927coJgdQmVU5MroJMiJWhyvemZbhkoOBtQ+Xjxwny8WepDx8xLvU/TbZVwKI/+W9V9mtLsKv5h/S3MsSVRY/w9K7vLe9kCXx89s0XgPveif6GpA49uhrlxGNmMb1093YZQkNKG9OOFoLJR/wi+cP7vFRWFYRpCGgb+dJp4H1E8vPKvhuVsdFoQKfTgUajAfV6HTqdDgC8JGVi7O8qIPloPn9U0gchfqdks7i90XSXT0e5ZIgh/mja2PbTbGSonQxNJ9WzJW/0TaUjUlPphjJ1WabcELIb+x8eO4473nHx5LrwLOeJsvE5fzakz7ryD+0n1DdAWahc/DsffM+EjGWr3cfPFr0cIpM1FkXUajVoNBpFPOvTcyF6mPs21tjD59fE+HmaXbTYy9cBKXwel9119XMXhyilC+nfVmh9E22QpGPQ7vry8sHnd1nSazEFfq6izlLllWqsWfV4qH8XovM0mVz5WZ7xpV2l3oqxk74+Sz+72oL2ZaveCElrrc/kk7GpSa11Q5Zl6v2Ql6gG6+jEvOr9PBS+AF0il12Bj/a8pSztOQmhToaWPyez6O8uogr/oRMWEiTwfLgsZY4lrRohBFFZ+TEg5HfrhcInj3SvL4J/N5lMoF6vw3A4hE6nA2+//TY8efIEDg4OlsqSAkiaF94BxMlM/I7fbUzz1iC9g3bH6EWBlfhcR1tD4Ro3uKIYd8ACnPaP2Wx25g5JF9leFehxsRZw2VKQ1tr7xhJYPhli+hO9ezoUVPdT+8J1g9Wu+H4PlVPSZzwPvtMzJv88P90FubGxAYvFAvr9fjG5QO8DbDQaMJlMSvnyKQinsn3O1693dnag2WzCycnJ0i5EivP2E7h+knwal4/DfTDtPr8U74mnWqD93dzchC9+8YvwxhtvwJ07d+CTTz6B+/fvQ7fbhXq9vnS/bCxCJyhiJzM0Mll7FsvibWYFjkmunyQixUJsWcvk5aW2hXThHcUqyUV8jsYWkj1wQbpLM0SeGHJPiqPo86F16CNVXTg8PEwWi7xuoPoh5BmEiw+I7QOuyR20G/QEBZccZcHzpSdA4GfphCULZ6KVR/uyNLatsZKGjY0NuH79OhwcHMDz58/V/EJthc8O8DqRdh5y+Gzbq4yq/AkXLKeSaNc8ALgn29cFmux5nkOz2Vzql/yKkdFolCQWtcS5LoTaS9dO5jL6qUx+2rtqMXEMQu/01pBCllcRVhth4VxTlBOTtxVnJmPLGuJ1UoqIGCJWC0jL1o9LQawK6ziRaFGclrRVyeD63ZU2hkyuEpoTo/XvUMcglhiRiFf8PobcQbhkpu/sCtB4nj5o7+FKI72/jxTzjeNUkwpV6IqYPMvIkef50sRlGUgkHgUPCunkCk07n89hMBgUO2p4ftJY1HQRJ6to+TETGvw9yuRH8z0Pu+PS30i+SGQ+9hcpP6svkfp9LQEK7yc+PefybWL0r5ZnaF6WOvQRNC5w2cpAIvNdBBqXwfU3zUuzERZbJuWHf9OjF2Nsni+9tQ1pXnw8Ss/Qcevz3zRygi9UcLVjFSjT92jdUDnxnXDn7+bmJmxsbMBkMgGA08VA60Zo+coPJaBdbRir11xl1Wo1aDab0G63l+5uT1WvoeRC2XIs+ouXRfWQKxbiejskpuPxQsizmo3TfrM8x2WTUPVYC7XZWptk2enxxHmew3Q6hel0uvSMS09KZVvqlkOypbFIFQMBwJKdWIdYviq4fKqUekXSFRyavyr1cdcY4P1c8k95vqH6Q5JXGjNSPKfBIhNPL8G12CyE1+JoNptLYxxP4BgMBku6g/uWPlsi2Q6f/6zla40NUunki6IbqvQnqA7XbE1MzOayzdrvUjpXnpqeCi1PK98Vw2ncjaRvfLrZpR8tcvJnXfwS/Sc945LN9R6u8e3TuzEI6eeSHfL5pTH9JUa2GJyHbxMax1HwvhVjH2ifLjM+fGMP07jKeKWPKY6B5CBZHaGLglflPS6xGliIGJ8iQ7JKU3ouZWYl6WKNiGt8W/O0kh8aMJAJMQo+4mddyIx1QJ7nMB6Pi35Y9r3omMA246sDqZMgpZlOp/D8+fPi/tj5fL4UtCKhyycFrWODjjnfLml0IufzOczn8zN3muD74ncxgdR59yXuDFGSjZLnzWYTFosFnJycqM+7HCtK7MQGbqmBfcGyO8u1wzukvDLvS+vQVUaKAMIaEFh0uAbN5oXKrwV+IXlIyLKXd127VqZrzyLoc3w3vo/IlOCaaJHIcWt9Uv2FR8nSI4tDJgPK9vVQaKQH1Weo01Cf37x5E65fvw7j8RhOTk6WJmPPWy9f4mKCE3BWnUGfoWOuCtlC0iMskzHa7y6sarzFEkuoTw8PDyHLssIPdeUl6fIQfZjSP6oiTkSfF+0NQLrdMBcFIfa6qnJTPCuNXeqnh0zYufwSTQYp9rD4GbTvcbj4FM0v077nslnedWtrq1hI3Gg0oNvtwuHhITx48KBIZ72nneoPza+T0mtw8U3WPC5RHinubaeg7Zk6b1dZAOExHn+O9u2yfc/HQaScXMM4goOeNoeLERG+02B8/qJvIpbrzvOwyVQ3l+VMeL6XOIsQ/9tahzFcpg8xeuK1moy1zF7z713kdZnj5Fxl+sp+3WAN+F3tFmKYQgi9kGeqbs8Y4+tytK3ks6vvSitPpGCAGjVJOUryWAKZkPagslYFLchAIoTfGSE5IFJQJ/X3lM6YBVWMMZo+xXtQ4jrGMbaMF97XpWewjXGS+Pj4uNi1ROsmZFKAykL/DwENbubzOdy6dQu63S6cnJzAdDpdOkZn1f0rJWhbYcBAJ2RpOo2sKaPPpbxi8pOe4RPvKLuPRJT6bEqbJY0LXzm0/3O5JN3og+t9yjj3FkJM6z/4jvR/izyhiCFVqQ5y6bUQIl4jRel3rnwssmManHR09f1Y/VXG30o11q1psE41mUPa7zzA5QslxasgbSjJ3Gq1YGdnB7a3t5cIan7c5bpBG8dlCAqXLtfSuPwcV+wntWvouNR0Wqw+xvTaMcVWWVJC82l4GoxBuDyh+XPE+LGuMiRIdRdbnxY/6SJDs90uSGM2z8+eLBECqa1c7cgR0hbUr5C4BN5HuS6k/2JRxqeJSVsVycw5imazCY1GA1qt1hnbZ7F/KeMfKX62cEeS7auas3uVoNUnh5Uv9OVjyVeDy0dIMUZ9z2FMQmPzmLtiQ2JSV71Ln/GKK5ccuIGg2Wwu8bfS0eox7eOSkXNu1jxjnuHQ+qdkI31/x46bVPzbefF4mu629nnLONXS0v5Y5XtLPoQGdTL2IhOtVvgUsqZEfSRbKrxODoGrLWJIVws5qqXjbewK8rV+cp6K0vKOlnJCCBMpL54nOh8YvKFyWiwWxa5QWhYtTyNoadtQok4yfD4jF0M8aHlpaXnfov/zOsDvtX7nk28VOioWPkOqjV+pfixOJgW/T9Fq3F19j3627j7EPj4cDotdu1RuaTerpd3LtDUGz7PZDBaLBdy9exeuX78Ojx49gn6/D48fP156v/PoV2XsouTA47viGMTfYsuxklsu+PSI6zl63xTqW/q9NT+fXpR0GKbX+izt09a+w+2ARWaXnFVAG3vYBnR3O68nWhfaQhyOkHFXhkDU7vl1kSZWf4P3EYtfbW1DTIdHbvLjl3k52lj3vYv1XWPqP7Q+Y4H1ft6ThhIZyn/DvyVCRktfBbLs5U5ygNPJ2CtXrsDu7i7s7u4WOwTwXuJ1juG4HwSg6yH8WztpwxcjcL0hxVj0b94nrbEf70t8Z5ZEzMXEWDRO0Qgfn460jPNQHSLFuloZVPdmWXaGSPX1XYsPTcvx5Wkh2aR0+JmfyPAqIcYn9T1j7Sf8dz5pL9luX8zKx5HFFsdyIi4OQdJLdGelNlkilaP1S+0zlQ9/d9lCrRyaj/ROZcHtA+oJvD8dj+jHyVi0fb48JftCP/M68Nl7aqN8+oimT11frxtoW7ruTbV8Zy3PmgcfLy4bo/mfIbGB1I8peDxCj/R2PR8SC/jqWiqDtl/IKVp0R+xisRBPc7PadZd8EkJ4hNBnQsFtjEX343M+35mjzDuExrkpIb2jZgMkOX32k0N7N6k/uGTT+AMJrvhCs92v1c7YsqBB1zoH1xcZ0qCSJk/w6CAA2ZhJCGk3V9pYcu1VgFQvLuPvUpIUs9lMJDho/vh3FeTkKtvT1bekIxMluOqB5x8TvK4TLASP5Uiier0O7XYbrl+/DtPpFIbDIUwmE/VuUF6G6zcfeaU5aS5nTctHchx8Y9ACfBc83pKjVqvBlStXYDwew+HhYVDeqUDfnU+clunfi8UCGo0GNJtN6Ha7MJvNzhxTzOELBsuMX+m7Kurap09T/hZDJKZASD2vGpQIDw0q6YQIJz9C88TVzbgaejabndFFqepL0pn8dyyTfqaLuDjpSPPCo96lo8ZTIoYESFUurQNO4vrITZqeHmNPV8JfIg68fk9OTor+WAVwTODEsCUOCgG+i2WCi+ojbTIhtn9ZfX4+icwJF8k3Rj/CcizveUEih/lvZXR0bP8Mac8yZGoZvSS1u08ebk8A4usoFXhfttRJTH/gsYlWDj8Zjsvk+00jrbVYxvW+2hhAXSQdk8snjrh8aBPxb/ze4vf6ZHfZaAti/XILNFlRv9JJ2GazCa1WCzqdjrhwhk/Y+/qUT3YfnyTZnZD6WEfdfxHBeXLqq0vpuN32xdZWXtGVx6rbGt+1qqsZpPI4Ysu9ffs23LhxAwBO9eXHH38Mw+FQzF/itFLrpBg+JEQG62Sb9NnKR0l9vCqeRyuXln0RIPlmFr+gCjlCeFXpM//eOxn7Okw8uYhsiRg6TwL6dYCk2PB7/NdoNArnbz6fm0kIyVHn30tpqVwSmagRiKlgybdMPykjL9ajtBJRM1o8nRboxii8UGPjasdQOULkkn7ndalNyFnlDpU1hY5ZtZ7CYJsHzVKaTqcDN2/ehMFgUKTzTcbSPKS8KXx6wBVkWMgHrgtdz4fKjum4g4Nl1et12N7ehlqtBs+fPwcAWLpXtkpIclMSla80Rbk5qN6WJntwwt71LA8yNfmsiHXqYvKQnlkHH69s+auo/1XASlLRvq75SNy2+PoPXdwg3S9s7SfSmNDImNAAmY87qRxa3nA4hCzLoNVqmctxlU+h2fbQQD4EUp1y4ssnj/Qe/K7fFLtkY/0J7l+HTDr4iNqUek7Li8owGAyCicMQ4LjFhRRlJmN97+OzdZpd5d+XIVGt/nCIb0T1nkWWVG1Jx0eqfmnR85osLt/SBykWkcq1xECh5Vmh9U+uK139u2r+p2z+mp0NLdPXJtzOhvRjjYzkZcWOZ247qD/E68bFT8zn8zM7Yn060lX3kl/Gn7W+owu+PqD5S5JMHLQ+kIdrNpvQbDZFTsy3Q9IVD0uQ+gF9B832WPK6qEhtQ8pA41fxs/YM9z99flzZtrOMjRj45AawLerx6eQqQXUm4tq1a/ClL30J8vx049PDhw9Nk7GhtgjLd32mefPfNZ8zNs50PeeKkSR/yCpDFT7GefUlCRJ/xr+n3/HPXFfwtK62s9jYEBuiPev6TRsTS5OxMU7xqwxrgJ9lZ3cmXCIefCcsriyfTCbQaDTOTADUajVot9uVrAx3QXKsqw7WXhVgveGRbi9evFDbDpUXvSid5lGlfLS8VYGWh7tV6K4gK+g4Ci33IgDrYj6fw2w2g3q9vnTUc6vVWpqw6/f7ZyYY8FilXq8H0+m0OFKwTBAnGVuN0JBWbFvK0OSSHImQiQKOTqcD29vb0Gw2YTqdwvPnz9fO1lGHzHqUGCUsXHWCzl/IM6GyU3uGq2ZT5O87pisFyky2WL/35UVlWSdfTOo7sflIf0ufJfB6oQt9qG2x5Ed3w6ySHAB4efw7P1LchzzPi52+52njsHweQJbtF1gPdBcPL+c84CLxAdzBMtez/G/8XK/XxSOoaezWarWKenERxBcNSIxNp9PivvkQcEIk9Xim7eIjXSRY4m8KfmcZfldmjGky0bJS6RSXr+aT3+fj+drYFWOE1F3qPqT5CZLdl+ySVR48kYjGFFZ5UqJs/lI7a/0hVVuVIXpjJuWsZCmPhzQ9QHkF7g9xmTC+dNkQrFtr7O1qK6l+zmPyjduKa9euQbfbLRYBPXv2DKbTKfR6Pa8tCtXrvnwucb6w9HPp5B4OHHc+vp3vyE8JjYex9FVrf6a+aKo8rdDqDsvpdDrw3nvvQaPRKPTlYrGA7e1tAAD4m7/5Gzg4OIBerwdZlkG73T5zuk6ZtvFNxIbmXUU/sfB/vu8uGteaElbuRxoj1P+mdpr6+z5oY++820TdGRtqMC1BSUoSrgqEOIScHJCeiyEW16EeUiL2nehz6NzSY6SoQ2wh5lIoQzomXONDkr0MeH6STC6kdt75u7vkk+Sg+TQaDeh0OtBoNM7cRUmDGl6OJosmq0sO3p6pJ1xcZVvSxbSbpofK6KcYGaoqg74HrtbNsqxwIgGg2DECsHwvaLfbBQCAyWRSPDsajWA8HnvL1d7HQhD4yGn+fq66c+XP29uXl0tH4fNbW1swm82g1+st3QOUktQpixgn2ZUXHtcc04+teopPmljuaZFgIVAlmarwxzgBJkGyIaFlu0g412/S3zTPlDprlfpWKpOC1wtvA35cn1aPWZadSZsKPr8K/T4+bsrkmwrWtg7VmZr/phG+0rjDBUuWQJT7XVVB64/8bwkuspv7o3SBVqx+lcqg9UzJKH7Ed4qytLbA98FFe6H30/piWC4Hl0nz/aU+GBIb8HJcyPPcqQukeM0as2jl+eSWxrjVnyvja4RyGPR/Pp6qID5j9LDPnmv9LwRa/6kyFsT8LX6ZheCl75DKL7f4S1ZoPmoMV0LjdO13XpbVJ/TpKUlOaaxrttkF3/hI3Q8teldK0263izh6Pp/DeDyG0WgER0dH4jOWMRTS/ppuLdvnV+WjxyBV/aWO+2g/l2wK/ezLR1uczsux5onPuXgZy/MUZfoYlcOnj6R6tcpIvwvRKfV6Ha5fvw7tdhsAlnfCAwAcHR3B/v5+8RxdxMT94ViE9EGLXYwpL5UetvKAofnGPh9SX6uyNfibpDMsfh+mtfonPt1i1VWuzzH9MtmdsZaGW5WDkRKaQ8W/o0fmlinrVUPIO9F7YHEnbK1Wg0ajUeyInc1mMJvNllbf1et12NjYCJYtVRCq5Z2qPV0O87rA4izQSZzZbAbz+RyOjo6g1+vBzs5O8ftisYDhcAjT6RRGo5Fanos0CjWWLsW+inGJu7rr9XrR5+v1OkwmkzMEtPbuuFKIr0I8r35SNfFNCVncITMcDot6wF2HVCffunUL/vE//sfF9/v7+3BwcAB/+Id/CB999BFMp9MlUjNV3WE+fEeFFtRz3WRxGHkAjSQlJ5Tws7YCnJL2/+///T/44IMP4G/9rb9VBN88v1SBsBUoNx4jhjvq8Z1id4Rh4IH3x96+fRsGgwG8ePHC+VwoIeUaF7iYgBL6qccR6hOa/6qOmw7BefhDKW029tE8z5d8GwoX2Zta97jywx12rVarONIXfTBqb0J1oo/w1wIvqU7ws+sYM21SY9U6ioOSuNSn4Tvjy5aBeeb56a5J1IkPHz6Eg4MDODo6gtlstuRLtFot6Ha7hYy4u4XvFqsCUv4p2yrLMmg2m0sLtlIgz18eYwkAMBwO4fHjx8U9xXhXsY/ct0Aj2rSJgTLgfgr9XhujrlXpMe9vIWO4DPR/1zNcP9RqNWi1WsV74IR6GWiTGBI5uiobJ8UEvvJT9a0yts0nn+v3UP9psVjAeDwu4q9V3O3nI9Fj+oePywipe2lyBPkY/H48HgfXkyu9td+52p/rKemUKK1ucPyXeafYcYW2mXIlWh7c3lfRV7kPhf1hOBwu6Umejvo0XDZXn3fpfkl/0jIQr8rJF1UhJQ/ve8bSFpI/r/Eevn7uswc+nRpqky1pUV6XXrHkk9rXQ45xNBoVsrkWEmp1j7EGlRO/D4GvDiy+4HlD2gGeci7gVYbVhmGdYp/V+KuQ/KwISRvqe3knYzmJ+7ogRMlq9WN1zqyoipytCpoz5YLPKcP7/IbD4ZLiQ2LEWkc8XVWk06qJLFpm1f3EUodSGvobTvx0u13odDowmUyKyfbFYmEONEIcHFe/pKQO/iY5hJbyLeD9nB+ZxPPnQY9Lx/j09jrrE6vsmBYDRbzrkE6s0TRIuOzu7sLNmzcB4FR38DsFMRjG+2RT15UWSPI2jXHkYiZLNKKw3+8XxyAiqZ1lWXEsPJWvauIeQccGEi0SQmVBInY+n0OtVoNms+klRaz616WrKTFK05Vx4n0+Ce4W0+5LLtPfLfWu1QWvs1Rln5eOkyYxfGQAPucDt1M+OVz54jiSbCPXRxbEEiY8DzrW6ekHeKLGdDoV7y6qAqlioTLPaj4W14m0z6G/PJlMYDqdFrso6bO4CMxHRlU9jrSJCFdspQHToA8ZSrRZ8scycOHCaDSCwWCwpFct/mMsms1mMaGIvk2I3Uhtr8sSvZLstO0k36isneTXn0hpYurJp0urGEuW2ITbAjqpk2XZmUnIWAJKsuUWjsRS31p8FAsaL3A9eF68V4r+IfEpljJcZWvHWfvaLSSG5/K6uDZNv7reQasHi98SE1/h89y/t8LXTpYxo+lOV/7S8xhHI3cDAMViaCtfEtq3pf4g5RHTruuMdeRmAGw+TYgukN5T60ux488SV/v0vjSetd9pOtfvLlj1teVZ6XkaK2xsbMDGxoaoo8bjMYzH4zN+raafQ+HyzS3xpzVerhIW7kHS/WXjkthnz1MnWnS3a5e89Jx13FrlsaS12nIqo5Y22c7Yi4DYoK2solk1ygSn5wmcRGk0GlCr1aDT6RRHoACc1v9XvvIVuHHjBvz4xz8ujkTB+yABTt895W6DMrio7VAGrkkH3PmJEwF0Zcvdu3dha2sLPv3008LgNxoN2NragslksnSErJY/nZTBXR0xzjgNmlK2nyUv7QhGzQmV6psbsVe5H+J473a7cOXKFbhx4wZ8/vnnsL+/D/1+H4bDIezs7BT64OOPP4Z/+S//Jfz6r/86/NN/+k/FPGu1Gmxvb8NisSh0TCpZERLpzJ0yukpRcspdxDwHJ8YwoAaQd7TgOJ1Op0U94MRHo9GAt99+G168eAGff/750kp5mm8oLP3UMlnA7xH05YcYjUbFiQvNZhO2traMkoeROfRznucwmUyg3W5Ds9ksxnnMHYAW+XAi5urVqwAA8OzZs6TlUMQS2NLESUof7Dx0oetoXfw+hpxDYhTHH+6G9D0rpanVasWkEj2em58u4IOLEIupe+wLeKf3zZs3YXd3F9555x34/PPP4f33318iFV518D5Ed3zyOsC6GwwGZ2zNRQKdQEagz6fpBnzGEihftPrASaM7d+7Azs4OvPPOO3BwcAB/9md/BgAg2sCL+J4xcPk/q9APfKJDk4kidbtY3zPP8+I6D1yQ0e/3i/5VNTR9FOJHUd1PfQdLneJJJKPRaG1sR5V91TKZqdUbv6cN/QT6DI09U9nj0AmJGHLbpxt5TM19U42TsNhbyl3QY+ZDJ14s9R1qCzmvwtP2+/2lPkAXr3L7Y60LDtckzetgz9Ydrnaw2sAyk4y+iZ2yeiikT4ZiVf0XY0w6PvFo8TzPodlswi/90i/B7u5uwUPQcf/JJ5/Az3/+84KbRX4Vd8RqPldKG0bb0dKXQvmfFLJa441LvITE1dVqtWJhAMV4PF7ahS0hZLz7bJFlfIb42q6T+4ImY1cZ0FQBixNX9t1SK6BYGdYRIUYUHWp+j+hwOIRerwdbW1uFYcGV4aPRSCSXXe3hC5x9TrY0GcIhOaGp+khIf6uqb4Y4xbR9kTBaLBZwfHxc7JDFyR1Me3x8vDQ5UYWR521UhaNvzZOSq/Rd+QQx/eybxLiogYs2Nvnxu9ifms0mbGxswM7ODoxGo6WV7u12G2azGRwfHxe7qer1OrRaLfjCF74As9kM7t+/XxxVjL/hPXAhQaTWR3k7WNuE9wONvOLptDJCx8/x8XGxmILWN82P3x8SitBgbT6fQ6PRgN3d3WKlNh69gzt6NTm0tsnzl7tFKdlEn9F0hEv3a79pNrHqYA+dQjzeH68AGI/HUWQWLctnb2NgCcK4LOfph2HZm5ubS4sapElNrQ/53pnrEa4DpOe5DcFyNJvhez9JFg0xfUqSAUmFdru95CdobS6926ptIS0Xj3sHWL6TqcoJG94fqP1stVpw9erVYgHOaDSC0Wh0ZqecZFtSw9WWkv3T+mHsOAqRE6/aQHvz6aefwuHhIWxtbcHJyUmlfQzfqV6vF2OBn+7B4Xr/UF1Z9t1C/SCXfBZ7xX1lWibVd7E2g9ehlYSW0lQ9xjS/Q6rHsnY0VKdJ7eQC16u1Wq04VYmSyVI5AC8XNezs7MBsNismoqu6E53LzRETR2v2nffH0LiDp+f/eDrrGJTy1/q8yw6UgZYv1wn0XTV/i+cr5enTX+gTIDFt0QESR1AW1v6HPgE/HSlV/q60WuyWqtxLhKPMGNXs9yrbTONTrOn59yH1YRm/IfL4OAn6G9Uz9Ioa/H44HMLJyQn0er1iEsx3go6Fc5H0vMt39/lmLi7FCks7WDiOmD5QdTxd1j6Ejg/Xs9yeSpOTfOEXPbmE+nXalUWW9vGlLxOTaOW6xk2ynbFlyP51mCiwlG9xkLBjWXfm8PzPux7WAa6g4bPPPoOHDx/Ct771Ldjb2wMAgFarBbdv34ZPP/0U/viP/7h4zkUq0ny141V4PjHQ2jQk33XsFzxwCTUmzWYTms0mjEYjmM1m8Jd/+ZewsbEBf/fv/t3iuGLEJ598AsfHx2fy4GVQgrHMZJCLBAx9lueT57lzxTknELJM3k3lKl9bxXuekxNlQAkGfDd6Lx7HjRs34Nq1a/Dw4UPo9XrFTvsrV67AeDyG58+fF23Rbrdhd3cXfuu3fgtGoxH823/7b+Hhw4cAcEp07u7uwmg0KnbIlh2HdDeq5hRIJAgtmzu1IcQzhcuZ5qT4J598AhsbG/DVr34VAKC4E4+Wicf64h0kVd7dg21/5coV+JVf+RUYj8fQ6/WK3z/55BM4PDwMvv8tz/Ni9R1OwuP3riAnFYm7SuC9uPheR0dHMBgMivGSWi6XHaZjWyJRY/X5quuWBw/37t2DK1euwP7+fnH/sG9cSLYUiS9ahlS2dKw//k2P47TayFXdv0XbGXUevb9Z05c4wU2DNx/hWwZl8pjNZtDpdODOnTsAcCr74eEhHB4eLu2IqRpZdrqDBXdBX7lyBX7xF38R2u02tNtt6PV6cHh4WByBi7tqadukguSju4Jl6hPRMaG9J8CyzU212w9P48ETfB49egSfffbZUrnaPdGhqNL/jyHHOXEWE+fi/9a4W0tH29RKpPHYEH2EmDtCXSSoK461oOp2D6kvlCe0DI2IC4VPhizL4N69e9DtduHzzz+H0WhUnJbFFw3id1mWwWg0gna7De+88w4MBgP467/+6+K4b4xRq7o71hozYz3SPov8El2QztsLbagvfytQ79Ij7bW8acwmTWy6/GctnXaqCP3fFbtbdU1ZUh/B/TWXDkM//OnTp8UiHw1SfBgqoxZjWp/Be+/pMcU8Hba9xea6dF0ITxZbxuuEqupBijl8cOk87FMWLj3V+6zSB+djMIWNSZ3v06dP4f333y+ubUJIetZVdy677eNVrT6mte188QX9nBKp7MpFhvTOeCoLQjrVdDabibyiFjenrmtLGb7nfTKYJmNDJiNicF6dUirXOhhdxGIZYtaCEML9PGExBNKgwePFMNDGgAiNMj/yDwOE3d1d+OpXv1r89ujRI3jx4oXYLlId8vrkExKx78yDElddaDLEtLn2jlbD5krn6+su46a9JyXN8H7KPM9hZ2cH7t27B8+fP1+aXNOOweHy82CWy0NllAibVUILYNEhkSZrNXByaBWoytHXxika7slkUuxG2draKnb80bScjF0sFtBsNmFzc7OYgMO6xuN4O52OKI/WfyQZXb9xksX3ziF2x5XW9x1/HndN7u/vQ5ZlxRE3lJRB0gq/w52pGokf2yf5RCHqi42NDZhOp8VdRjhJw8tylUvHmDapJT1DodWxqw/QfGII7hBg/14sFsVRMKkn3WLkj9W5rrHo00W+8RSjy/jz0iSoRl6G5I9/0/JC+g6vI5SBH/1aZoKiCuBOwO3tbeh0OoV80mR+avCyYvs5/T+VXLz9KVEr9Tf8DvUnTsaiTY0heVMipOxQMjk18jxfItDpAoKy+lUa75jf1tYW7O3twd27d4txS69pCV2MFCKLBO5DS763lqeLsPPJ5IsveDr6O14HQXWzpKe5rpXGsYU0luJBiw+WAlxWGktTX06K3yztGCKv5f25DHThNNXFVH5XXqi30Te8fv06dDqdM8fDhkwEpILPN8d3w2tUAE6P7ZN28qbwITUeQwNeP+SLy3nekr2SytcQq/slXaD58prfJuXv4n+4bgQ4e6USwNmJXF6Wxe+L9TGtcSON67QYT4r5tDrkNjLGd3fhPH0ZDXyclJEx5XgJfU7jMFzPSf0dAJZO2KKgu8ZddaXpFp9cFn7CWndl4iZXXUqySTqF/kb9fAA4c9/zzZs3YXNzE/b39+H58+dF/nmeF5/L9JnQeJR+Du3TFj9TSyfZKZ+MljSr8h9CYK0n6TP9LiQf3p54EpPUbxuNBuzs7BTfHx8fF4uCAeTNLNifpVgrdCy7/HwXJ+jSdb46e63ujE0F7lDEknavA0Id6zw/Pf6LBljtdhsmk4n3Hr3r16/D3/t7f6/4/L3vfQ8ODg6KQCs2UAyFZlQtpEKMDKHvFuMoVAGXDKikZ7MZXLt2Da5duwbvv/8+HB0dFYThZDIRlaEr8LLIJBltbqhdxBF3lKTPPgcVSQdKqnFjZulPlFgqC4ueW7UexKOuh8MhDIdDODg4gLfeequYjKWgk7HokLbbbeh2u/DixYtiJT0em91qtaDT6SR3RH1Otkb0SflqjkJqmzSfz2E4HMJnn31WEEJ4TDACdynjBB9dQJMS9GhSBO5i6Pf7MJvNYDabwXQ6hU6nA7VardjhinCNYW28SHUa4ozy76kMqcaoBXmew8nJCUwmE7h58yZkWZb8jtpYYN+yoOr6sowfjbB3BXMaKcd/s7yfRuLhbz5dQ+XABU64GE7TQT6dFuvHWJBlGTSbTeh2u3Dt2jV49OjR0u5ZXm5VfYSS+ucBTXe4/BKalpPBrVYL2u12oS/xmcu4Jg44nuikTgqgD4P2bG9vD27fvg1f+cpXlnxLtJG+Y9FjIfm02qRK1aDlh/o/eZ4XcQQfF5L+4Hdixrxj6DOhMbQ1P95faLwQ0l/p+1RxogaCtjEnmZvNphr30QlcHJc4ifnGG2/AxsbGkn+I153M5/Mzd6JWgZCx0mg0oNlswu3bt6FWq8Hjx49hPB7DcDgs9A0/yg9RJU+FsSr6D74+IMWlUj1YYmUpX3xWg8WHofLwncguWPo/JZP5CQq0z6IsEvB7GmdpadEOWXyFkEkgjQd19TPJV+T2w4p14LFicZFkL8NNur7PskxcvIGxCC3P4mvH1qm1z0mxu/Z8DDcQA24PeTn8N1xYj7+//fbbcPXqVfje97535gRCfs9sTP2G6mGJf00Nn91Jka+rPBdS941YVOEr8EUXmj1tNBpw586d4vfPP/8cnjx5svQ7PwUs1G/1+RYu7px+57NbVt0QNBnLj3O9SMYkNXyOLW3MKmXAstYRZfoJH1i88z948AAODw/hrbfegizLoNfrQbPZLCZPaHpcBUsDtjzPlwIwKWijv/E8fXVvJVJdaaX+o5Ub2tcsRG2KfKR8kewFgOLIo+l0CtPpFD744APY3d2FL37xi0sBHu0Lk8mkCDxxNS5tT06O8/+twUjsuKIkh5aP1Kck0BWydMWgy+hI8qfQ2eugZ6hxREcRnXkMSm/evAnvvfce1Ov14rjF2WwGDx8+LJzQjz/+GH73d38XvvWtb8HXv/516Ha7BanvKpPutuTgfUvSIzxfF/izUrtyApSn5eklhBAedKGM9i44prXfQ4Nt+l58zPR6PfjpT38Kb7zxBnzlK1+B4+Nj6PV68Mknn6h5Wpx9PKpOqnfXWAoN6vBv1F/4fbPZhDzPl+69TTH+kKSntq/VasH29jbMZrNi53O9Xg8+ns9KwPFnLD6lZn9j4dK9IfWtkRRZdjppeHBwAP1+H65duwa7u7tQq9VgOBwWQS+Vg+sLbTzzskKgtQG/q0x6P/zdSjJYg2qXbqD2DsueTCbi8fQUfHevlr9Wr9YA3dLnURfOZjPodrvwzjvvFEcEz+dzODw8LAJT3KXnK8sXf1xEWPQpJcfpZ2536W/0DnipvDL1SEnCVquVlNixlo/6nOp0zUfhcQ7AWT2T58tHS1r8h1DiUerLEsEZG1/xfiH54rFxKc+X+iVVxPta/WD5VB5rfnhX6sbGRhEXo17N81ycvJHg8lFd/pLmC0v/+3Qd7urvdrvQ6XSg2WyKC3U5Go0GvPvuu7C7uwsvXrwo4qtarQatVqu4e7YqSO8k+YUW0B3OPj0aymUAvJw8pLtPtHJixpjFLnP4+gXXayG+uaZ7JF9F4op8+eP/d+/eha2tLdjc3ITpdKpeYyG1Fz0pTrJ/9F1cckhluMrXnpdkc+Xj42Kq0KXrBs0Onqdv5yo7hLNwPS/tgtZOZ7CUGxp7lvUHXDGLL04K8Wn4uNaeRZuFkOIIfJYeOZxlGdy/fx+ePn1aHD2O32s7lDVw3RPKj7h0gfVZn3xSnpLM3I+x+llcp4XGGDGcQwhC/XT8voyv7Co3yzLY2NiATqcDrVarGP+NRgPq9ToMh0N49OgRnJycODlF7XurPqJxOn+O/o28mHURNtUzvv7tnYyVggzNkb4I5EDZQWFxWHDwruq+rbKoitjxDQpfXbomYx8/fgydTge++MUvFvdaYUCG5dEAFo8kpTsa+G4pyZjEBhfaO6Fs0ueQ/EPaLHZ8+gyQRW6pTmm90h2ws9kMPvnkE7h69Sq88cYbRXvhkRqYD05a0LPm+cS69L4uB8z1jJVkofVlqWspcOL9HNOgkcIdia4jfXzvf5GDHC47HmdNSYLr16/DO++8A8PhsDhmuN/vQ7/fL3YA3r9/H+7fvw8bGxvw3nvvQbvdLiZ3NedDC3gp6LNSf5AMsjX4CAn0ad+RyqdptbylIAMn6LT7Q3BMa8eIlL2zj9ffYDCAjz76CK5cuQI3btyAVqtV7JItWw6f8LEGySF6lrYL3YWB8iM5mso+o77FsvL8dLX/3t5ecQ+w5T1DCb8U8I1Li4+xCh2Y5y+P6n7+/DnUarVit/5sNoPj42M4PLgvkUgAAQAASURBVDwEACgWf1CbSI/rBzi7+5K+bwzJqPkhFn/EFWD6PqMNDyF0uP3N83xp0kAD1X+aPL7nU405qvPa7Ta88cYbsFgsYDAYwLNnz4o0MQsgXLCO4RDSaxXg/Uvq53S8aDYV6306nRYL93gZsaCyzOfzYjcdPaJ/FfEfxja+ewYp6D1/0viSxo5ULvc1AMJ8bp6P9DxPXxZl7JLmp7n0ZSodYiGeeLkuXw/7LO6Ez7LTydjRaFQQYT5IcR0dl65Yyhr7Uh9W+w139nc6neLIYVyk60K9Xoc333wTrl27Bg8fPoThcAgAL4ltzg+kRJl+IXESrnel6UP6PqblkyTUd9TK43m4ZON/W7kES570Wd/zVFdp6awxmGW8ZlkGt2/fhmvXrgHAaSzTbDbPxB3cvnFd7bIzrsktl/30wVU/1nx8ujKlD7ZOcHEB9HcXtJg+Ro6UcNlv+r903RY9SSSmT3IZqI2xcBuuOJKmk3QWLdM1Hq0cQqhPjv4nrTctbsTJWPz8+PHjM2mzLCs2OoQeH+7yyV16Q8urLHy2kaaT4l2fz2jto658Uo/FGF0uycBjMC1/nz8njS/8f2NjA3Z3d2FjY+PMZhg8jQ/g7NHEqeMC32QvpikT17lkNu+MXQWJVTWqNOxSZ6yCkKwC6+rw0BXcSPDTs+45ut0u3Llzp3if3/iN34Bf+qVfgj/6oz+Czz//HIbD4VIA2ul0zqwopyhbL5JRKuPIc7iIjIvQ7wBsx7eh8/D222/DrVu34IMPPigmDlzg5ACFhUgKcQhjx73Pqeb3I0vya33Kenb+RQddFUh3wXzxi1+EGzduwM9//vPiCGKOR48ewV/8xV/Au+++C3t7e/A7v/M78PDhQ/jd3/1dGI/HUKvVoNvtFqu0BoPBmTxCnDFfeklfuJwkLS96hAcnY3zEqa9P5vny0X4+UFlSBNiTyQSyLIPNzc3i+GQJWZZBq9UqyLr5fF7sjPaBEhWh49+CPH+5+0hqE2mXf2rM53N48eIFzGYz2NjYWJujilPAR4hJQXRKYJvyY564jPTucxfpxmXFv/muCC3gsYLuaqfEghaMWfOnxKEv6LNgOp3CwcEB9Ho9AICl4xGpbGXudnXBlx/vY7yNkOwouziFg06EuPQXXdA1Ho/h2bNnMBgMoNVqFToS63MV8QEnhiWEykLHSJZlztihLHBClOpvetw3Egnr6n/x8Uf7EIfVR6kSoSQoQtJh2K+su0FjwMs9j5gb2wnrKc+XrwTy1Z/PJ/SB2zlLvErHMH/GV640IYsnELh8HYwn8LSmVH6rBKtOwF2/X/ziF2F3dxc6nQ5Mp9PC/vH4htsACzQCnadBgp4vlreMm5TjipdJ9awPfAcxz8P6PhyW+s7zvDjFDRdXf/bZZ9Dv92E0GokLyzFvaQyG+LB8POFzWptbfGgrYuryVQKOGdxEQBeLYaxgfeeLVjfY9vzEGnolhgbXHdQuWGJ4K8eXqr5dMRrVPVQHuOIl5DbwOfTrcXzz01JoPIQ7/NAmcn2YcmHoKqDxXK70ljxD4NKlVSNGJ2vpQ/Jx+ba8DfI8h263C7du3Sp0YLvdXvp9MBjAeDyG/f19GI1GZ3asSvlbxzGH5jNInDueZiUtTnCNUd93CO9krI+Y1dKWQap8qnKey6QPURAhTvRFM84W8GBfGoh4NyAOKLxPtNFoFEcv/vmf/zkAQEHG4C44KQC1tI/kxNPf6f+WPF1l+MZeLLGcIk3Ie4WMAwz46E6xLMtgb28Pdnd3l44gxfd39X9pfFiDVClNmbb1ycfz1oJC33iX0p+XY1WlfqJEGiVCJ5MJbG9vw8bGBjx48EAlvXu9Hjx58gTu3LkDu7u78N5778G1a9fgP//n/1xM+qE+8R2NKckmAdtCGq+S8+JymGL6p0SGSc9rcqGjLsnB/7a+oya/BDwqWrvPN8tOd5biRCzahizL1MlYqS6p7LQc3n4cvvfxjYdYh17KV2trtIHj8bhYjV/2/ssy+mXVAYxvXKUC+hlo03gwzglyLqMPlOSQYA04qUz06H9fQG4lHy1wBVk8v+l0CkdHR8XiGKzfkPKssoSmt+hkC3HsI5Bc/VfyI+gz9Dtc0IL+NBI4tE6rGpM+HarZD/xsnWyn489VbixwrGC+dLIbxxQixKe3lIsTwb57IiW9w0H9UGssY+nDsfVt9Q185JtmF3lf4n3e56vE/pbaJ/bFi1J70neV8pPa31VGaDzlGwdSv3P1WT4OpCN7ud6VxgHa7KoXUGj1C3BW3zUaDeh2u3Djxg24du1aobNxQY9WL5Y+7Brf0rjS7qQtC9+Y0OqJjmXL4iaq/1x6w+eHu+IcV79Be4DHg+OiyF6vV5yo4Orn0vdVxNgp/ajQGG8VqJKX4OXg/y6/xcdjlcGq6jvEBkp+iIWvsL6Ly764+Aj+vPYZn3XpWJ+sVA+hbZLicE0W6U5XbaEF7+/IsUonSVD+1fX+Enw6U+JSLND0L/3d51O4ZJXKs3I8+J3PPw4Zh9q40PqWNda3fEe/d40VCzfA+0O73YYrV66cyQf/TSYTGA6H8OzZs6WYSgN9NkbPST4DXSRC5dfGpkVGX5qgO2OxYMy8KqyDoU4F2iFfpfeKhdTxtfslAF4aF6nDTyYT+NGPfgTdbhfu3bsHz549g08//RTeeecd+NrXvibmR4Mxl0J1DbAqArTU/eMi9DX6zrgyazqdwmQygUePHhV9BY8d3draKo7vzPO82OmMOxe73W4xOS+VxYMneg9ObHtyg1OGdKK6ledDd8qh7D4CSho3VZILGrhTkapvIiGBqwPxvf7P//k/8NOf/hR++7d/G9588024evVqsQNAwwcffACffvopXLlyBfr9vtiHpLtSXfD1CWtd8HScKHM5gBJRg+9ASUctoI9xbtGB6na7zp2rVljqCYm4er0Om5ub8Lf/9t+Gfr8P/+t//S84Pj6G7e1t9VmJpKS/UcdMI7h88rtAdYglSHTlo6HVakGj0YDhcAjNZhN+53d+B+r1Ovz+7//+mbR0l+FFAtZfzBitEovFAvb396HZbMLz589hPB4XAbTV9rhIGxp88x3xPA8XITSfz2FzcxM2NzeL+0xdd5hq8qGMWFYoccvlpERFnudwcHAAL168gEePHhX3x0syhALrFYkJn1+aEhZSSpLB5cfy/Ol31nZdN9B78rTTQrSjGS8KXHqc74R/9uwZLBYLeP/99+Hx48fFuJGussA6QyJkPB6L17WEwmKfY8lKC3zj1GWzs+zlDvVms6neB+WSM0Ufi/GLfeX66hhX+tMFQ3QhTshOLUnfuJBlWXFUYugiR5S91WpBu92GdrsNjUYDPvroI5jNZjAajZx3VlLfBp9fh3iZ6yxqBzkh+OGHH8LR0RE8efKkOA0IAJYmon3ktRW0zqR2xqtdpDQuX1mb3FgleNwTE49JeUpp8zwvrtLCjQAnJyfF8eCTyUS96zhkAoraRbzHHHeC0wXuKJOmJzhf4vJPOMeQihepEquSyeJLcs7xIvotErguwP4I8HJRB/XttaN1y8DnI6fqB9Q39eW7tbVVnOa2WCyKxZCxwHJdsRavX9xkkOJ0nlS2JqbMmPareuxXceJRFXVqmUgEkCeaXfJgvjQO6XQ68MYbbyydYjiZTIrFAL1er3jGJwuCH3eOkOpfkrdery/tzEVQGfL85UmA3M5Z5bTUcdBk7EUzFOflCJQp1+IYXpT698GqYDTnN89zOD4+hul0CtevX4fZbAb9fh9u3bpVDKbFYgFbW1tw5coVOD4+PqNUaCBqIc25PJKC0iY0aBqen+/9fb/TuuRyhjj3rrQ+5etK4xoT1HnHtuj1eoWjgAqdB810Bal2vx4tXyvbhap0ni+YoX9rQXCZ8kLziCGLJKTWxfQeQnTqj4+P4eTkBHq9HsxmM2g0GtBut2F7exuyLIPhcFiknc1mMBgMCkcAA1esc5zETeEMaQGB1PYhjg9HrJPKx6g2OekDTsbiWE7V5lIb4Gc8ghh3RuAdFKg/6HNW8kUiaujfrjYp6wOkBp1kyrIM7t69C81mE3Z2dgoCE0lR2nar8DVcfcTSfyQS06XrNbsY208tMg6Hw4J0o+QpldsFH6HA+6krLc8zy7IlAgHv17TWJ83fStjFAOVFYhH1uDWgdOWJf2eZflcSpgHw+zna92hTsmz52Fw61kLGXEgda22IC2YWi0WxQ57rvqrg8qX57/QzTgBIcmqxAv6ful9KwLiC34FWBlI9oU7p9XpLi55c47/dbhf9kBLBKWDxly3t7HtW0vlcBvqZEsAcdBdkjM+k+eihKDPutTRSXWhklg/ae8aOJ+1oZFdf4PoaTz6p1WrF8Xbac2jnsiyDnZ0d2N7eXpqsoicC8PdaNYfEkecvd8BPp1M4OTmB4+NjGI/HS4tuQ+2SKy3Xu7TttZglxoaFQPPhyrSPNbbz+ZTaMzR/3MmGfXY+n8N0Oi2Otdd8DqsPzGMU+llqv5TtZGmDqviUdUaj0SgmIABetgv6f1ofjunbVeqpWG6QpqUL2qnvhro5xXiWntfqVvrd2je5fXD5ADwt7owHgDO7/yyxliQzPxlIkoVzpnTSKtaO++rW8kxouS6+wJpW6rursCNW+PKS5A4t32VbpJjJlb8r7gKA4jS7er1exNd4yh3l6bQNVa68JTl87UHto5SWvjPfuOJ651gE74ylQqQ2qKsI/quGZkx8jnLq916XuuRyaLv1+DMcdAUVJYqlybfpdLp0h8pv/MZvwC//8i/D7/3e78GzZ8/g+Pi42GnZarWg2WzCeDwu7m5YFVIGe64g6bxhdbCyLCtWjR4cHEC324W9vb0iUMnz05XbMSupfeXSYNO3qqns2ArpY9quH+0uWf4sNySxWJe+RMHbAcfycDgs7hTc2NiA2WwGm5ub8P/9f/8fPH78GL73ve9Bs9mE7e1tePbsGfzgBz+Ak5MTWCwW8I/+0T+CbrcLAKdE59OnT4v7faTVUalRlgSX+nAI+VlWJ+V5Dv1+H+r1ejH5zfthCuR5vnS07snJSXF8eZ7ncO3atTNHQ1J7YV25qI0/GkDGyk/vFEwJa//Z2tqCv//3/z58+umn8Cd/8ieFXm2327CxsQGDwWDlNlFCyokMa7qQMl154/Hpz58/h8ViUZDF9Fh1ngf+TXcp8R1xvnKt/dvnl2LQxMeSNqlhhVTP2vtZx1is7qLkhO+EjRjQHUP01I/5fF74qXQCdFXA3YBHR0fwwx/+cKlNms2m996qsvAF07Q/0PLb7TbcuHEDRqMRHB0dAcBZQkvKD3WZdtJOCiChfvXqVdjY2IArV67AYrGADz/8EGazWXGCR+xkWgwo2ZBlp3eto/3E8U0nI6lfaZU1RiYOOsGSipSlk+LaQs0yk7EotwSu060TZSnaXPNXsF2pPveVLb2Hq0/4eI6QHbcITV6ePyX36fe4Cwjj/H/yT/4JfO1rX4OtrS3o9/vw2WefFTvLtbvBUiL0/XHB3P7+PvT7/eKIfnxfqX5CJkalNrXqHxxXGpkZihAfDBflaGWG8CL86hWNpJX0BK0rbTzT9tjZ2YGtra0zE7L81KJY4L2kSHij/2iZpAod26F5xCBl3L1qbvTmzZvwa7/2a0WZjx8/hmfPnsH9+/eXxjAitd5ZFy6YAnVWvV5fuhpDS+uCq0+GTh6FgvZ1X7tZ9LF0z7kEXNSRZVmxqI6Wry3swGepvZAWq19EWMZN1eMg9Y7YqmDxdUP0OJ/Y59deYX8bDAbOk6wWiwU8evSoWGRW9h20cmq1GnS73TPP00liOl6lKy80OWKv+zJNxlqD5rKoaqCkCuxiy/UhVC5LemsnrbpOfARJiFOL6Tnpluenlz6jcT85OYH9/X3Y3NyEbrcLGxsbAAAFwQwAxa44NEyxg9qHMgTbKsm5mOBagisw8uVPA/X5fA6TyaRoL4DTY9XwSNqtra3CkUXHg+/mcvUxV9+npFDoO9PvrMaM1xmXm8vjCjBdZWp6MDUZtCrnn76zZLjpEXxZlhWTtfgMGs35fA6DwQDm8zk8evSoOF4XQfN3Tc7Fyh8CX9tr6X02kP4u6WBtPEh9FeuLH60t5emT3/Ub3b02HA7hyZMnsLGxAd1ut3AG6dFBoRNaXI4YXcxtFc9rVUQ3rf8sO91Z1ul04Pbt2zAej+HGjRtwfHwMR0dHZ8j4qmWrAhZSaZX+IPZFXAkqEdySvdJsGH+Wfxdif+gzuMMc+wjA2T6s6QcJPjIkxrfg9SP5HBIBKj1rJVolOSyy4vNUDuwL/Og6zS+RfBoNMeMVd8Ri3j5/OIXtC/WL+Pd4tBXvExrZnErf+mJebKtOpwM7Oztw/fp1WCwW8NFHHwHAywVyloDdVa/422g0gnq9DgcHB8XENJVDgkYsxIzhMmm15y1xX1lI446PUx9CCN9UepDq3xC9QJ+P0XH42XcMIo9Z+G/4v3Tlh8/HlPLCiSzXEY2YlvqCyBW8ePECDg8P4eDgAE5OTqDZbC6dxlQVLD47/y7PT0+MGo/HxRHjGnj/pmWGyGh5xkKaohyh/ADtE5pfhLFdlmXFCQ98UkOLsfGzZQxrf1ueRTkxLhqNRkuneSH56/IBtXfhoN9xP8Micywk3yWV/U3pq1fp99N2Bni5EAQXheOx8DiRRvWhS1ZNX1vimCrfV2pXGn9g2ahXkX+xTlxypIqdLb5VCKz+FNodOvbpblXNjrnGlhZLWN6Hy13Wl/G1iWZTQtqD6+sU3IxVnrL1c97g9ihVnq42zbKsuA6Cth0ueJ5Op8VkLfpz/Dh9yzshrPqB6lyJJ/RxhZJuLtP20TtjL3HxUaWR9pXLBwKAHBBaBtRsNoMHDx4UO9jG4zHs7+/DN7/5TXjrrbeKdHfu3CkmZgeDATx69AharRZ0Op2lMsuCD94YJV2F87lqI1GWQOn3+/Ds2bOl/LIsg1/4hV+ATqcDf/VXfwWj0ajYiddut88ENRpcO0slY79uwDEjrYjmztyq23/V9bVYLGA0GhWfpVWWSGTg5D7ez7O1tVXohNlsBn/0R38EWZYV94/S1VONRqNYXU8nGlMjhXGPDVhcQRUNMrmcUj79fr8IwHzONv4eMn7p/UpPnjyB/f19eO+99+Dtt9+Gfr+/dP8b3+EZszuqrD7jZIsWPFUBuugoyzLY3t6G69evw7Vr1+DWrVuwsbEB77//PvzP//k/i2fonT7rqANdSEH6VNkm0g6I2HrmMuOYowsifO+CO4fQnt64cQO63W4xwWMZkxyaHfW9p2ucZdnLuwbpjj4+mULrlfpjIe/A89SCPu2zlEcM8F1RhlRjMc9fHpmMZHaWZWdWyl8iHNevX4d79+7Bu+++C9PpFH70ox8VO2O1e0lDgPrj0aNHAADw0UcfQZa93CGHE1RloU1Q+sZC7KSFKy+aj0ZGx4wNvjiiir5f1nfAPLS8rPoZYx46Ia/tmrPCWmeoXygxj4uTaF7Wd0C/Hxfl4m8ScCEUjrtHjx5Bo9GATz/9FJ4/fw4//vGPIc9z2N3dhdlsBsPhcOV6kNcj3dmIv3/22WcwnU6LOuN+BLUPku3xtTE9QpTKZZE5xaSQdSxzO7i3twetVgs++eQTmM/n4kIy+hn9JF++1t8kSPnjtTjHx8dLkzDaZE7o2MA02Hd53GO5fkTTL5ayX3e/ASfaaGyK/x8dHcHDhw/P1FGr1VIXv3L/luO84jL6bhJnQP+u1Wpw7dq14qjm2WwGR0dHpSb1NFA+7Dz4Tvo/gvphGxsbsLm5WcTiaGeQW6E8lpQXBy6k5HDFTwBn78RMgZDJr5TlxUyqXiINaMwB8FIf0AXn9Xodrl+/fuYUi16vt8TvY37SySnSnFGKfouxtbb4jp+W4erDPKZzpZVkTzIZe9nhT5GSJKki33UBDgA01tQh5c6pyzGW8szz06Pgjo+Pi50+AKcOwJ07d2B7exseP35cHFNK78nSHHSpbC6fy/hZ05YJiGketGz6P/09RpH5CBiahr6zzzGgf/N+0Wg0zhyzc3x8XKwsRQePThrxgMNF2JRR6Fp7huaptTm+AyWg8UgS/J0GdNT5tQRGVfbD8wTK/vjx42JStV6vLy26QODuWdxxDXB2DOX58k4WbeUiLVv6zfq99C48vbVttfGXghzUyqR/UznosauS04bpXPlKwH6f5zkcHR3B/fv3i3sfx+PxkgyNRuPMuKHlWkhOmp8WKFsJKl9ZKYCkDMDLo7x/+MMfwpMnT+Bb3/pWcWR/u90uZI45SvC8YfUVQhDTjvQ52qa0Xn3jU+pTkgxl3o3aTF4ukuWbm5vQbDbPBPzSeAmZoNHeg9eHVI+abbcShi45Yghsa9m44+rg4AAAYOmYYp+/IgWnqVFmMqYsqK8jgX6Pi6ToMe9af0hVT6H5UF+MxhTWyYZQufjdtC47NhqNCp+GL7aJ9V0tPr4FKKemO1zlSL4SjSskv04qX5OLy+LLy5Vf1Yj171yxiPS36/nQ8ul1Fr5+o9kfF39Ax8aDBw+g3+/DwcEB9Pv9ot/hhG2VE/Ncbukz1xOUp9AWyNG+LuVJ01nb0PLZ9w7a99ye+/xxGot1Op1iES3A6alZo9HIuavFZ9NjfTzXu2rP0X4e4rdq41Dy4bRF2ZpM1rQhaazcyEWLNTgoZ4VotVpw584duHHjRnFPcJZlMBgMiquU8FmAsz6/xkXG+KdlEKL7XX2ZLyzABVAhd8VWpY9j/R/+vC8/9AfpYihaFzwPPq5pvqHHC8fExyH5xyBUZs2/tTwbI1cofyM9U7UPaPH1LHGHpW4tNonXQ56/PLmUpsM4xCcXHQecO5Fk0L7D9PyqS+k5l0+ilevzKXxttDQZu+pO9DqirNJ/FYCGhO7UwUEWUi9aRx+NRjAajeDJkyfFBEu9Xof33nsPRqMRHBwcQKvVglu3bsHh4SHs7++fyXfVTqNL+Yf2mZQkVAqEyEJ3fOK/yWRS3LWX5zl8/vnnkGWnu7uwfXEXECpavGcWgXXiU6SxDk1VwHHS6XSWdjoBnB1HCO0ovHXqE1UC3/Ov//qv4YMPPoButwtbW1vwzW9+80za2WwG4/EYGo3GUl+idYdHd0plrBKolyxkM+/vUtpQ4iw0De+TuJuBHstFv8fPEpGgIcuyov/XajV49OgRPHjw4Ewa/B93z1vug5SIYdf9y7E2nZNHKfsW5o028fr169BsNuF3f/d34c6dO/CVr3wF6vU6bG5uFpOxIUf3X0Ss8r24T4M7NiyEM+p67T5D+p3v+EgOKbihwFNGrl69CpPJBPb398/0fTo+XOSwdVzgGOa2iwd71t35HJYJFSxbap8yPjvqqclkAh9//HFhy7EcyV7z58vKsG7gJCT+8+1YarVasLOzA3meF3eBakQC75cW4oIjdHfSKoG7DNGuDYfDpd/p++J79Ho9yPO8uJeJ6nqNiKgSLv1khTZWUZ+47qSLhVXGmD4T6ptJstBdji6i3FUu9zetcXEomekinkOe43JK+iTPc/iLv/iL4nOtVoNOpwNZlhVj4jxPB+C6Hhfx8JhWegYAzkxuWNvAuhDdihTjWsoTJ2OvX79e6LfPPvusWNjk0/HS8dj0OdfzZfSij6zF/Pn30riTSG8Kfge9q20l39EVK17iLOjRs4jNzU341V/9Veh2u8Ui2Hq9DkdHR/DkyZMzefBxK7VZlUenl0VIn0H/N7VdtozPlH3Z4k/SiVd+XyvAqcy4k9qXH/3NV3cx9ZBl2Zk+pk1qlUHVk6mX+kqGzx+I0S88PpfypDtgtbbXrq6QTuuIAfIolqPS0f/DtBaUlU+djA1xvFOiyiAwNEDwISZgjHHwq1CG6wJpEslyfAsFNWKTyaT4/cmTJzCdTuH27duwubkJh4eHxepJi1zaqomyQbiFWEsZCKbKK0QfaO9Ix6AWeEhOHT12CJ1WeocszRvzwEkeqfwyR2b43i30eU0voeHE40twMomXNZlMxElZi8yvIiQiazqdwv3792E8HhdHBeIRjQAvDTM6BJ1OpyDxKGHOwduuKhuj5as58BK5iu9nkZ/rYQm+vkRXveIxqHRc0rFOCUM6Ge7rz9pnDkpOSJM5GpnvImU4UekCfU8feL1Y8pee9T2PxBZObkg7x2OwSiKflwvwsi+5fAerbS77LpZxRNPSv/kEVQixGkuOYxm4YAEJE+3Iapfe0WSRQOub6zRfH3bFKr7yfTGP1I9ibSjmhQtBqJ/i6rOaHCkR0k/LloPQbJs05ui1EjjpOBqNir6plUHzRVh9P2wTbB/fZDlfSITfSVdJnDeoH63pFUvcKRExKfoQ9ncrQUnfAfUlwMujXl2LqKh/V2aMWWxL6jEcSrhK+pL7MhxcN9N8pfbR4jlsg1arBa1WC7a3t2EymZxZQBADLKNWq8GVK1eg3W7D9vY29Ho9uH//fvEb9guqN6js0m4jX3waA8l3lMYP50fwZBeXrtTicVf/tryTRUdYYPENLGmk8eaLgS1jXNN7Zf1A/J/HYlrcL8lC0+DVAgAvJ7c0WSU9zf+2xFqhvp8mQwiqiCdS58nfrdlsFv+o/ac+BULiF6g/WNYuhSCkXqS+w/tKt9st6mCxWBQ7glP3EVe/dCFUF/AyrTEmXoeXZac7o+kpjmhzYvwny7ta4h8eb1ryj61zCzRbY7VfPK2mUy0+bihCYtHQekvpf8TKQGGJCbT8facGaXVllZfnQcvjdpPLqckllSGNW5+sUp5Lk7HWBnIpjVDy0CLkuiK1Y+vK83UAJTNC6oH2Obrj6enTp3B4eAg7OzvQ7XbhxYsX5slYzFcjAF0y8DShZ4e7YHGeNUgBXIr+5qoPazmSkaFBC52MRWcOJ2Nx9Qqte0qOWR0m+r0Ei/MRG5y6Auo8Pz3mASdNeFq8CJ0Tu1qer7qOkd5zOp3CgwcPIM9zaLVaZyZZKSFVq9WKYxBxtTWdQLSgCqcpJg1/N5/DT9No/ZKXJxGdqMcBoLjDCSdjuWNMv/MRllLbWo7URSI9ZGer1oah48flWGqI7T8+PcLLwDvbtre3i4UeZbEuPpxFDl7P1vb22Q8rgcvHGwUni12TOhYyx9ouWfZyMhYnZJEwwKPGNbjqCn+XxrhWB/Q9tB2x2rHxvnYNkT+lzaSTehggnodt9hEYqwK1Sdr4wX9ohweDAYxGo6UjRV15I2J8Zmwj1265LMuKXbq0HCQhqyB+y+SJup/bJqne8XveNmXvGuXySG3Pf8PfNVtN02or7Xn6FP3eEjecl/+ttamF73HVjfY+Up8BeKmn2+02bGxswNWrV2EwGIi7xKzvw8ut1Wpw/fp12NnZgS984Qvw6NEj+OSTTwodi6ctSRP03MZIfnBVvo2vT2Bd0uPIXbZd4+YsvnWMbJY+HVt3Prlo2ZYTXUI4FJfvzuMYHyzlusqj5dLd3ACnC7LpSSp8bGs61BUTluGapDz4O1jzrWLMVR2jNJtNaLVa0Gg0zhzPSccxfmfRv2V9GQss44HL4nqm2+0Wx4kjn5JiN2yKuijDrbh0nlRHyN31+30YDAZnFhFyX4v+T/OS8pbiPss78XeQbJ+GUN2H6Sx+kvaspc/RsULfR+LgY/wwV/1r7RXCIfni51g+Suo/mm6WEOMb8DbgwKuQMA/pKhGtLIsvw+uenwCEZUqn5NH7bTUuwec/h/YvdTIWCz2P4PwSrwforikXCaBBUn4UeMfKT3/602L3ZLvdhi984QswnU5hf38fNjY24NatW3B8fLx0dwxO/sWMAV96zSiFBBGufC4qaHBAiSJ0XrG/4OpggJfHGef56ZEC9ChfDFowb4SP2LHIGQqpHIszg++Gq143NjZgPp/DZDI5kxaJSVffPS9C6DyA70qNLR3bAC/rDPsJv7MYJ2Vxx/1Ftol0dxHAWWKSvpsWALqAedBdxlqgid9jvw45DsQFXI2McBH1GoEVQj5pgQ1+Rx3C8x572Dahi51eNUgOOf0Nx4hGhMTYXMsu81arBfV6HabTqRjE0InQMuOUlqkRdb1eD8bjsTpBz3UGrytXcBLqt/BypB0lFn/RgjzPYTgcqu3tIkVSgdbPOh9Ld4nzBZIdeZ4v3Y2uxU/4N+/fLoRMGmgyuj7HQLK5dDyiP4c6N2QMaTEl/u3bVW0htCSdbc0f05atR95H+IJWF0IJefQ58F76vb09qNfrxUk1mBffUW4F9kU87UYjNNF+TqfTYnEgpq3iGOtY8D7Nxxq3txxlY5RVxMOhQE7AN5Zp/Gbx43ndSnc3Yvk+olx6Rvrb9awlv06nI3Jms9lsadG6i0fjcYkma0p+iZfxKnFXCLqwbjQawV//9V/DYrGAfr8Pw+EQBoNBscAbQeNl1H0uu7uuoONJmzTCxZ18wUAIUti+2N/5mHGNFWrDZrMZ9Hq9M3bGspCUp0/RB9DeWvLi74qcfQhCuZYyfqN0TL9rYk+TNeSZUBlTIVSPuk75iynbCj65CWDjB2Og6R/Jx3Pd02zhFKjfWhYN149lCIfzJh5dSEXc+PKnsBKymhF7FUHJNa0tqLLRFKxGSOLdhI8fPy5+29nZgS9/+cvFGf2NRgO2trYKggLT8TsgXI6t5T3pcxJBwtNqeUjfu+qOlrHKfhRSVxK5wklXmg9tF2wnbEuucK1OX5V15Aq6eP/GOsB3ppPQSJpkWbZ0HDeOH8055O8U6mRcRNB35DuRKGjQirtfEPQIbJ7nRQW+q+ZwSjo11JHm+Uo6HIGODHXWfPlJwHwbjcZSG9OdUyFEqSsdHafSb1K+PvlX1be48ygRe7SPcIfZ6secB2LrkL4DEvnYh6Sj7q15hQKPNOU2DFfX4/HqqKN8fdpHfvEAG5Flp3fnIWntG5c8j9g7XSXZNd1T1XjhZGzIuLXqQ9d3Fv3zukAjDajOChlvrrhMI9WkMWP1aVHXUnIotb7E/OgCRKq/pfLosVzWse2LXSzvFfLuVsJI02m0vrkeDJFBesYVb2n9yAVX/pIfZinDRyDRPNDeWcYUxiWueJjLh+Og3W7D5uYmbG5uwnw+hxcvXiwR8/hc6B1hUnzIOQVMg/5gq9VaOokLF7eu0g+TxhKvV1//DimPl6OlicmXQypH6i+u7/j3/Jh4SafyxbQ0reRL8HTUv6flS6QtzTuGG/KNUSojfcdms7k06SrJQf18zi9I/YqX60LKfnLRIfUxehT6kydPYDKZwPPnz8/YavoczU9biLLqmCumHNq3qO4HgOL6ITxhROrb1jIkG5NCd1v8NIvNlfTHaDRSy5Py5TJoslm5kdDfLKB6ymULtDiO5sHbMFY2XqehfBXASx9EawNLuSEIaSMLf2uxLWXhK5fWPeVUpOe0RQla3q5y6Xc+318qQ+KItf6q+WIxusg5GRvj9F3i4iCVASsLNNBI/PEdjpJC5HJL9znRe4MATp2gfr8P3//+9yHPX16aDgBndhpyAxK6upoPWMnBCnVEQpwxV3CwjkS6D+jU4Y5ZADhzFwc9Jg4hBST4feq+LxEVtEwriedLhwsIkKTf3d2F2WwGn3/+ebHSnMrE5aga66JXJCDxYhnPeMcJJ8Iu4vjRiB8KFwHgy5s6JryucJzSIxxxEYW2k4HnzyfFNKIKd9rySSS+G1Qi/6Ry+d9aECj1D1/QVhXxoZXJ5UGyAO+Lxfbp9/swGo1gc3MTut0uHB8fO+9LfJXASdEyARaHlBcdI3gsMB5vNp1OYW9vD37913+9+O7jjz+GDz/8sJgslYCBf57nSxO3fGe8b9Ixz3Po9XpLBJ5EhMQQKpKNoOPX5bf4YLWzMTKmhNTXXGTQutrUWFjIG06GY99++PDh0kIb+gw/3tt1NL0LmCe991XrEzjWsMzj4+PilAZ67zKNOaqGr/+iTqALFrVYS7KFodDqzZfWQvjxeIveEe/KP8uyM5PlqfS8a9LD8iy3P6ExC/dLsL1TkIYWYpPnjfGbdvIDldkyRnBsoh1899134erVq/ClL30JOp0OtNttOD4+duZBd1tS/7UqXRvSnpZFQZqdlPpPalj8dimtNMY0gjnPl3dh4ZVFo9EInjx5UqTDXaFWu845GfQ9JJl4n5QIWx98fVqyXTS+oOn29vag0+ks9Y+joyPo9Xpi3q5+bZGpLC5SnBwKGpvOZjNotVrQbDah2+2Ku5epL4K6mF9TofVDCefFtfj8AXzXk5MTGA6Hhf+TKo6MiTmsiB0TGk+E/hXWQcgkjksWy/UmnJORynHJQfssLTMkFgvpn2XbNMteblgBcJ+MBvCSQ/a1ayhC7UMIXPKU0QfamOJt6KtTyhVI9Uv9c+15CZZ3cz2rwXI/bMhpGbFQjymOITS4wxKKdSbxy6JMo1VVl6uoa4scUj8K6X8uQ0R3DaLT9OzZMwBYXoHrI/o1ea1GTqsHlwKkefiMrhVV5RsKqc2lNLR+pP8pyUz/WRRliK4KJUHK1KcmOzp0eDQzPZJ1Pp97CUOXvCmxKh0eay80Z0L6jgcP1vGSgtBLVY+WAIKPBR9x6tJ7mo6h5BMfq678pQDF5XShTpCOddWe0crTdLb0nU8unm+VwaT2DjS4ms1msL+/D+PxGDY3N2E2m8GVK1dgOBzCeDyG7e3tpcDmVUEIYYfg4yJF23HSHidzaMDbarXgzp070G63oV6vw8HBQfEb38nPZbf4RwDuu2j5HZgULl0RA63O8TdJ57jsvI9wsMqUsv9LetZFzrxqKFOXWEd0d4WUr6aLY9vS6rfTth2NRtDr9eDg4GBptzUlY13jMraerH1IGltUX1jHTowd8+lQLf5yyae1B/c5JDmk8svoCy3PFPmEtK/U/1McqRZbNzhucTFkWZ3HY72trS3Y29uD3d1daDQaMBwOYTqdqn1pHfSutWyu69aFK/PFDTFjyacXkMcZDodLz/jK0ngE/NvFQ2lcAe1DFr7NwglxPcc/t1otaLfbhV1xEds+WVzckwSffottawtHmNLPTDl2aD+hcS0ALPkqvL7xs2tSzdenLe9Rla5wcXb492w2KxbguPqOlU9xcRDrCjrWJO5J80tctpr3Mw2az+TKlz4n/e7a4SjJSPPlskl5lOHWqHz4meoY3n8kHW+RwZKuTL5W8PFmlU97b1c6VxqeXuon9H+q+7gM1j5tkccHl/3V0vh4lVg4d8aGoqzSvyjK9SJgXeoyRI4QpcVXu0vnj1NFUqvVoNVqLTnx0uQAv+QZv280Gup9ImVRJvj35XuRgcSbZhBwVTNOUDabTajVarC5uQnj8Xhpt/OqA26pP1pILvyO72ICABiPx/Dw4UPY3NyEa9eunemLWN5kMikuR0+FdQn+KULloau0+Gp4Cb53rmrcYt4p87GQhBb96zoGzPes5nBlWbY06YOEAz2SFX+THCGqw/F7fr+U636KEPDgAvsIEkSulb8WIj4FXH3n5OSkkLfX68F/+A//ofj8jW98A/7Fv/gX8Ad/8Afw/e9/v7iD7VUH9wEAqr2rk5J3UiDjurZhNBrB4eEhbGxswObmJvT7/VKrzev1erErmu5Sp34PAKi7cCVQIgp9Ki1NDIkn1Q3WGydGaf6xRE4KvbGO9vMSNnAiFceGRqzWajU4ODiAg4MD+OSTT4p2bzabJuI8tJ9IpH0sOGGC8vJdZFTOWCJeA5YnHRGvTVQgyUltbAypI/kS1N+xTrxYUabONBmk762LAFzw+VA+gm8wGMBoNIIXL15AnueFTZH6mAXUVvLyDg8P4b//9/8Ow+Gw2EWI5aG/qdnNqnS1pa198SH9nZ4KwG2s5I9XaX8km+uDRHJSubkfJF2ZoNl1F/mPv3GfhvteNG/8n8sU4xto+lMDjSt4Xx8Oh/DgwYOlU+SkCR/p2G6rHvDFKxZ7liruSoGUeSEn2Ol0Cv4Jr0ajC4IluxRab7Fyr9LvRJ8Bd7BLMlx0PzgklqB2LhZavGOVT/qdcyMSJA7Sx4dZZUQ5NEi7xjno0bc8P+yHLhk1G2FFVZNyFlivlbBC8zUkf8NV7xosJ+BpvEgZYD786jKXDNLzvnQhsmh5qJOx1GEI7aA8kHHlf55YhZNKy7roRig1uEGjRD9+ZxnAviCQAo8c09reFRT6lLfV+EhOsW+ghuar/W7JN2bsVjnOeR1LJFisw1/VmPT1R0uwzANTdOzoSkt0fF35+36z1EFK8uk89S3VLUj2+erK4oCugz0LQSwhRxGqs1z9jo5hrd0k0tkXlIQSEKF9U3PuXf3ivPoKddzxLuqjo6Pi+xcvXsBgMCiOisX/L6LvItW/j+hcBbje1+SkeqrRaECr1YJWq1UcxY/f+9pH64e0v+PuZ7p7z0IaWXSjTwdL7y7JGYJQUjhEhhAyQisjxF991cB9mhD4+jj/Tqtb/E3qvxY/1kKi0qNYs+x0cRFt8xh9GuLTSd9L9panq4o41/K36C4NVjklTiLUB7a2V6zOqQJaG/M0EqGn2aMQ8Gf4hLkV1vGCC3MnkwkMh0M4OjqC2WwGnU4nyK6cl88TWx7XZRaCVkrr04WuOFyTqww0eajM2rtafH2ss42NDcjz/MwVP5Z3cNkY/ruvXTSdhN/zk7BwknY8Hqu+JM8r5B3o7zE6OsRmXnRQPgYXfuBELdeftP/x7/DvMrpgVfwKgK4jpL5exnd2IcX7Sm3iSuf6nfv3oXpTSivpQj7efTZNkkeSX8orNHbWYjCLzPydXZ+5T43+RYgO9I3H0O8sv4Wk4bD095B8fbESTye1KW8jl+8Q44eHxMuSLGXibasvFZqGf5d0ZyxCUyAhz79qxvtVe5/UQEeGkoy4GzVk54fr8mXMv9vtFt9h8OaSyzKQfYQQGsFV3x27inwwj6r7ONYdP6KOAh1g7a7Y1NCME7+Hy0V2SN9xBw53ddO+incMbmxsOFeQ0TrgRMiqHPcYgrwMLORa7LHOVUGSowrZYvP0BVP4u7Zjm6+mw2c00o473XRM0XwkcB9EOjIF87XqBh+5gDLyZyzPud7FCkv/4bYQ72efTqfw/vvvw1/91V8VK7qHwyEMh8NoMnYdEUoSxKQLlceVN94Jvru7C3t7e/CTn/wEAE6JuU6nAycnJ97xzMcd/sP239nZgel0CoPB4MyJEqHy07qVdmO4QMc4H/+8TOl3ifiyvoPUJ6RdDdb8XLbYR8xJn7XfLvK4RPvrmpyhfVULqrHf0J1i+L2PfMJ0rjZeF/8gBWhdYP+m//Au95jd9qGT69wWI2JIW4mYA1jWCTiWsb+Ekig+W17Gjof4x3Q3qK8sy8Qnjb3591aZeHrat+h1QBK436jVKwe2JZaDR4M/fvwYer2e99257j3PMe4j63ztrPnYWt6pZHTJQ/8PgWtsYl9FeVxjTiKJAZb5g3a7DV/72tdgOBzCX/3VX4nlaWM+1A5LNl6ST8vr6tWrsLm5WZzutlgsiglkeq+5lIcWG5Q5Aeai28QUdh1tyWQyKdqC1yuNs+hCekke6e9QeaqGRTbpVKt17y98PGv2UHou5N20UxwlSN/Tce6LG1zvwPkP/qy0I9YVl/nexQU+gWrZYCK1B+pErg81pOaFuT1K0edTjx1LfmiDeTu4nsNxYI0D+Biw+uQStLgw1HfVgPo8pD5C38U5GcsDhJQd1+dErRIXPdhehzpMBUuAKT3jGniSk0O32nODxI8v5pMCPE/6WQqqLe9jnRQoMxZ9JCHPNyYYD8lfet5Xnlbv9O4UOmljrVdJTsu40si72PJdMlHSESdJarVacZ/g1tYW1Ov14ihS2l9dO0B9DlxZrIsu0pzfVA5TFXmsS91JCB1XvP59zrWmTzh5J/0m5YF/h8htDcDwbzrpayHQUjvZru8kshr/bjabkOf50rHE60BSlkWK9va9fxkdL/UjboPxNAQarIROJPDvaDn0jlprHqHvy30s7g8gkUwX4MW0mxQMu/IJeRfreA0NAEPsb2ryYNXIspcTn0iW0ONDEVRXS/0G07vGq9RenICSnqXl4T9qa1z9gPY7jDGqiJ/LgMsvEYPcntHfLKRY6DtLeskaK4QQYK4YTso/FJJe03wfXywREg+6QOPjUB/IYvuksuhnVz5lfQtuK2ezGTx58gT6/X6Rv+/0m9Qy+fKtIs539TOaXyqkGPOSbDRudfnQLr5H8nlpfhgvt9vt4nhZugAN+QO+OMA6FqTypYVCtA60eILnT2UbjUYwHo+ddUHh48m09NbfY3TmecYWZcvmtgTrgx7Ri/Y/VAdhniG6NBXKxkuSP5uab6kaUtuGwOXba2Pd5w9IaSVOS4snQv0dzR/X4GtXXo8x8Q/+jrJwvgLjSP7Olom+WP3lkt8ah1rLwjy1PmmtOwptvLr6n1Q+f47+zjdShJQZA+kdfbrK0j6hNtQVZ3FUsjP2IsJKtFzU8i4S6CrdsgqMK3wkN/GuNCk9H3C0nVLdPSghhcIOxToRRAD+yU2t7nFFVKPRKI7yCQlQXDIhQsYrXYEf218k56zRaMB0OoVnz55Bo9GARqMB3W4X2u023L17FyaTCXzwwQcwn8+XVobxI3O0IPBVhnQHxuuCEN3i6ve8P1v6juTUW8rVgO1H7/3VZEmhq3077mif8t0duw76lr4H7oLtdrtFXU2n01fqrtjYvh+ivyXiM3a80fLm8zmcnJxAp9Mp3Xe43vPtiuC6ko5dvtPcCqmOaMCMd0Uj4ViWBHEFrCGkJH82Nc7D9zsv4HuinzYajQDgZR3QxZDS2OA+jJSO5ucirmie/DmpD/r6PT6HO0xbrVbxjiHBfhXg9aWdQEH1HrW1fDIA8ykzPjSSVhv7XF5LfXGSjsoPcPbkgFi4/JqyNsH6my+ti8zl0IikEL3JYzeef+q+Pp1O4Wc/+1kRC2ZZVupO9VXBNYZcNszil1gQOklnjY1DJuto38QJLFdafs2Mi0DG3f7z+RyuX78OW1tbcOPGjUI/I3AiDe+4CyWJpbazTLJYfqN5zudzePHihXpNkfQM9eescZHVHr0uvgtC4xEajYZ4Eg2Pp0LGeBmk9Ces/YWizG63VSMmHoj5PTT+0HwkX1ofrLYf06bgUXygixc0mXDX63g8PmPbkSPFv/HY8FartTQuNVlCfFmr/xnazpZ6ttZlTD5Ut2FbaL44fca1E5nrRKoPtV24vAwXJN6G/hbbf6uwa1qeQZOxZQIKl7P2uhhyOnDLGKgYo4hYJ8Poanved1L2EcwP73XgJIUUQFCH3BVcWwy1RP74nrFAI4NDAiILQvVASFrr5A4nZGg5NPCIPYaHtzfmGUM8ha6O5KSURBRS9Pt9mM1m0Gw2i0lY7N/ScR0x+mOd9EZK8OC0TNC97kjRhjG6SuqzvrrmOlY6+jikfBd8cmifqQ7iOxeltBKRr9kXl3ypbaFE0GrE60Xo5wDyBIsvDX6npadI4ZNoMtG7ejXEBhe8j+FkL11A4CI1pTx8ZdG0+F6U6JTy4s9K6VyTH9L7Wn0u/v4x/o5FT4bY2FfV/mbZy135KQgfKX8A3d6gztYWn5QhMyUSlsrkknfVkCYdtHiHx7GuOIOP9TJjyWfb0eeP7UNU5pD0qSYrQiY+fGWHEssh8agL2B9csY5m92LKRr8qyzJ4/vx5sVg1pa5OAa1tLT6XBk46WtswNP6z6KvYuImWJfkdXA58ZytPoJVZq9Xg5s2bUKvV4Gc/+xkcHx+fibWx/DzPTUdeWmUIHbP4vpPJpDh+GycZYu2T7+QRV9zjakP6+6vqs0iQ7Cd+77MrITErluFru/NqA+n9q8w/db7cb6GI4RZSycV9K9e413SYlo73T02/Wjgb7RmJ83DJy3+nafhVdACnp+zs7e3BfD6H4+PjpWfpAgnMW1rE4xufPrligOVauIoYOUL4G+5PSOktMZqLA8R6536Lj1uI4aytaS3PlfVzLPGtczKWDk7tNx/KBLOrRtWyauRUVdDIRkmOUFligmpXPlQea4AYMogkxcvvRvMFAiHGiMsuKVL8ngaUmMZSvz6nzCqflG9ViCVjNAMuGXv8Pcvij6jCNpGMYAjRQYmoGLLRR2bleQ4nJyfQ6/VgY2MDAE4dE7xfttFoqHdMSGODp3nVkWWnK7r4/SYAr1c9ANh3/UvjzadbfM+4QHem+saepAd8OlTKQ5NV0+P4Ha7KpE6/Dz69IhFSrjRWuN59sVis5RGbKRBqNxGuoMnq3FtIOcsRvdxPsvquvC/NZjM4PDyEer0OjUbjTKBE0/pIJd9vNC9Mi/3Zt3vJR4RINrqsH8PHpS9gjMnfIqOlz6wDYuKnLMuK3dB4XHFqmVzAo4RDj8W2lIt6FBEyPjUbStNoiPWxXSvpKZkCELYzHvtF7A5UfE7SEZgv14W0XOk9uHyWd8Dntbx5Oa68Y20QwNm7VbketBJzrr5pISe1ZwHktpJkDek/0vfUXu3v7wff770qpCBt+eeYupTyLdMXJdk0HcbLCYmjAV7qAR8HQ3+nu+EparUa3L59G/I8h+9+97vFsdbSjhqaj0VOCp+OcHFOiHq9DlmWwWg0gtFoVEzEanliPi5imz9P0/raKMbOx2BV5cSCypfC3/SB2lBrjBHCWblsla9Mmnad28wCi32jv8Xwi7wczVeRPvMTwSxyh/wmTchJ7yj1LSmdaxcq7S/I10qgZfD7iAFOd6TfuXMHRqMRHB4eFnI0m83iBB58jzzPz/B9XA5NH7qg6XLfWPXVH/1NszHI8bp4KqkMLrP1rl6t7V32DOsd5eVxbUhd+9Jppyv5xoxWv1ZbTdPztD6ZlyZjL7oSvUhYRV3HOI8XHSEEF+4gdO26kpTEq0hQrwtCnEcK2k64s8jqKIUQ2THjlspAiaOY/kPrhzolWZZBp9Mpji1GB6Rer0Oz2Sz+n0wmF+LYrqogkfaXOEUqQibEUbLaKFew4tPNLn0tHUFMywxxDuk/FyxOoqucMkS9liddmMSDpFcVviAbJ2roKtwYG8D7Ig/2XJhOp/D48WOYzWbQaDSKVb/T6dR89KkkB5cHf0e/yHU0kRRExYCOFWn8uPJuNpuws7MD4/G4IFIt8I0dl/5IDdoX8L1dfsu626xYuVz+EG+PEFLJ0i+lfs4/o42wkpFlUGXb8n7O624+n0Oz2RRPeIjxGTEPejIMJ7xc5F2M7XXpplarBd1uF8bj8dLuSavdlt6Ny3EekPqvj9i15BnjU1j8Nfo5xZjCPNBev6rXkPC+DWAjfH354bPSzlAOl11M0f8t45Df362BHjk8nU4LHba3twc3b95cuiu21WrB3t5eoevQ5xsMBuLpBpT8ljgkLl+sfy+1B90RaxlDIe1E8ztvP+O8y7eC2g8cQ3yyAaDceIm9FuSi1OFFRSqbr03euHw2LoNLN4f0A6sfjTK56sDCcfh8BloH8/kctre3YWNjY2mM5XkOjx8/hslkcqYeqD/AJ3Ix/xCfIfWYsk5Kau2fYp7HN4Ho4j20ukN9yPlvrQ+H2EgNUlyj2eCYeLFKqDtjfQ0calhcBv5ycqs8YkhCKQ8K66Sm9GysXK60WhlSYKLJxRWf9ex43CmkyakNbJex4mMiNqCyjj3fdyGyhAbr1j7g0hM+sg7rgh4ZmjII8j2jpeF5+gyuJgOtmyzLllbI0nfF+xHG43FxdxkuPKDOSMjYXJcAjSJW/pjx4sOrZMNCHfeYPuHrT9r3fDxp49YXBEhjS3PiLKDBuJWAsQQymh4MrTdNHo2Ivkh3/Wiw1pMr8KH/LEEvfufrPxa/AACK+8GzLIPNzU0YDocAAMVOQquvY/md7oaWFqjx4DtF/+DBkqXeAE5XQm9ubkKWZcVkbIw9kPLmaWJINF9dS8GvRgq8CjbFB003SeNEaheXvqf9gvdfvjtQK8tCKtF8LOliEJun5ldSWbl/6SrPKoekOzVZuB7QyCcJ9PgzidwCgGKhIrXT+HfIO2nw2QVrGgqpT2q2yJon78uhdkJKI30XE/uXsSnY9jhRtq733pflQ2LskSt/bnetfdfnQ4XIYM0j1C+v1+swm82KvlCr1WBrawt2d3eXFkY3Gg24cuUKTKdTGAwGxffj8Vi875MT/C55pe98frpGKtP2suwU5r9bxramPzVZLUjlM8bGm2WfdeWJoLFfqgUhVr6ySlh85fNGFW1L806Zly/O8Ok4HvP5fDTug/Hfted878FlceXhy1PyPaU0eZ5Dt9uFq1evLp36NxqN4IMPPvDqal5f+Hto37H6RDH54TiXTi6RZLX0AR8sp6BZfE7+Gz8O2nXcf4px5osJY+rJ96w1P1/9Bt0Z6wIPcmmlrOvRMa8SVl23VuNXhVzWoNdCTmbZywu/ad6S08PfuYzy4AYYV9RJR3lVSe7Eour+JtWzqx60oAHr8zycWAC34YoNqqnDT4/Y6/V6SysoJceGj4uLvIo8pg8i+aYFu2XyvkQ4sJ/y4w+1tPR/F3wkAs2TB9Auh61Mv5AICU3OqnW96z1o8Ka9M9oqSmavIyQC0VW3NA3dgdBoNEzHw9FyfUS3NhGB+rxer8N4PIb3338f3n77bXjzzTftLx4JHjzhSmM8bYIew11mPGA9oy7G4HM0GgWR8vV6HTY2Nordbpg3ysjBdcg66fl18u+qBLbvdDqFLHu5qExrE9ydrk32+CYSXL9Z7I6Wn5ZnVUjdP/iuf4CX9TGbzZa+d61+l/4uQ5jTCZJ6vQ7dbheyLBPvdfQRl1L+8/m80Gdcbin9OumILMuK3ctoJyyTjiHvETJJzG2qbxxS3U7Hb9mJWAAQd6NdJFh8sqoQY89p+1GE5BGSVjutwzVpSXHnzh24fv06tNtt6Pf78PDhQxgOh8XibYrRaFT4FFj3aKtonGA53l7ayYuxO8or6TFu38rEPzzmqIq7Sz1JYcl/Fc9q+Wjth5+xf2i6D/92gccEF1nHVYWUdeKKEa1XOYXClyfVQaFXr2nl0bzp/9bnYsH7vWZ3uH7d3t6Gvb09aLVa3jIajQa0Wq1i8g9PBOR8v+WdU3OkMbbc9UzZWFzLUyuHf4f1KqXBv6VJ2JTjCMcs9YVT+EwaJ6hxYgBn5xqsMqiTsa7G1YyIdVC7nquSkLB02FWTNDGDqOzkXEqFugpoAb/rO1deXHYtoPTJElqe5dmYtgkJsi2OXxXll+nnUl5a+hj5U495FynlIuO1tJoDTx20PM+LwBGf4YsMrO/nC3gvOiyE0bqRcKlR9v1iiD1tfFrHbOjYDvVDpOdjxoJvcoB+77NtobD4bT5Y9Ci3matGivEpkcAS0YIEiG+ix6VPQkAniObzObx48QIODw9hMBgUE44xBJ0Fef7yvmCUxRU0xZYr+fwY2OFJDvx3PmYajQYsFgtotVowm81gMpkErfDl8rjSp2pbCyRZzmucpQatMzoR7/LpfPm5nnPpbz52ysZVWjkxOC//g5LIdBG1a8e2zw5w0s36blguXrlBv5eIb/pZm3zAyWdpfJX1T6oCl6vRaECj0YDpdAqLxaIgoELGSigRxu2i9L1L5qrhirM4zrs9JYRMjtHx5CO0tWetZfJntN9c4yZFDMD7q49rlPLrdruwt7cHAKe7WQ8PD2E4HC6dCIKYz+dLV3dIeaOv5JJZg49zovpIam+aj1aerz9I9RlidyTfjOe1jmMtFbgPjqDvr23qkNJrZQC89MP5ZGxI7FzWnwjRURcVmn8Sozc1WNpM8l9iOJfQ9DE+cKz/LPHwHHSTUrvdhp2dnSItnvo3mUzEHbGU/1wsFjCfz6HRaIh34kp/a+/k43Z845u2pUv/a3mkjsWtz2v63OJXuuT31WcIQnSrBVqftsSVoXIk2RnrC25Dz+OuyoCvo6FYR5kuEjRnUCJ5XI4jh0Y+oKGWFGpZY8SdgFfJkU3dzzXnkgcwKaDdLbxqxDiIi8UCJpMJNBqN4u7Yi7wbNhVoIEXHM67Ee9X18rq8H69radeyBZLDG6KHrbqbk0Dcvki7VHxOmqSz+I6tqgOxi9bnUwfErvyQwKc7ZWke1M+12h5cTSr1U0k/379/H37v934PJpMJNJvNpaP3UoAe1YnyYAAMAMVRwHx8SvWYoi/RIHw2mxVEFMDprr12uw1f+tKXYDgcwvPnz+HJkyfQ7/cL++YiiTVIp5LQv1fhm9HrFVxB90Uaq5cIR8r2raKv+Mgi9Jc1+8ZtfOh44ifeUNIaiTr83Gq1YGtrC2azGZycnKzt8bVW7O3twcbGBhwfH8N4PC7uDrcuvqRt4YpjXaD1TT9T+Hwqfg+76wg7izwx9xpfdGhEsq8NQ9rYmj4kHebv6nMu0pb3W6mPLRaLpbtiEa1WC/I8h7/8y7+Ek5MTmE6nxW5zjJNRv9B4meo0fqKAJLuVLwjRfa7YSPIlfZwBj30vYYfWHzVeSvpbS0MX2Ujgvqqvr136i+WwSs6Mj/EYPkTL97w4ZZ/89K73PM9hMpkUfbrb7cKdO3dge3sbrl69WvCYWZbBbDaDH/7wh3B0dLQ0XlD30/z5oj4Oy2Rk1fCN5Zi41oWQOQuXLZHSWvot918s/VxKYzmhAp8NeVctLc0H/+f2M3TMlpqMLUOAUqSYGQ/pKJewwRfQcVSt7F15S7KGKJrYlQ6WiVhf/6a/V1F/MePKKotVgZbRCygP/45OpEnyhJYplSdNVsSQFq58Q/Ogebn6H51sROCuI+k+gtST2KlQFfmM+bpIb47LoMYPVx1J9S19tjpxoe0R+pwvsHaV4UprlWOVEy/SeNDeHyfK1lFfAIRNtvp0si8Aig0ifLaMfj+dTuHFixdQr9cL/c3vsdfKkWTU0mgTw51Ox0tASnlrEy6avybZNElOnCjGyZYyRH5ZWG25Zmv4O1smqS7qhKwUxEpjlf5m9bMsMWBoTLNOCLE7lvRa/nl+ei8XTk4sFgsYDAZFmhCf1aU7Xb66RnRLMruulMF80Fa5jpq3QvO5Xb5C2b6F75LnuXdhpcuvjZXDF3tb5NZsDv0b019E3ZYCkg6j9WJtP+5PWHxS/E0aU2X0ZhkeIba/8vfIstPJxvF4DPP5HObzOfR6PRgOh9BqtaDVahXlW2Jjbp98/TWVzSnLc9J6tuhWTZdwXy2FbBcdIX3Axzvgb61WC5rNZnF3Mf0tlW3h8r1O7ebi/GLg4ilj87LEA64xzGGRLWYs+/wALS23U1zXNhoN2NzchG63W/g+dGJ1MpksnWIg6SafnCFpXWlC7LMGqb1dvnJZhLS1xIdr6Vy8Slm7zuXV4uqQ2NzyHS0zdb7J7oyVCiobHF7iYiGU/PDlQQdzzODVBqO0+4rvoj2vvsqdZfxu3WANQmKBO4d8K9IkkrkM4YBEb8gzWG4ZxMitjS0MJvHIRyTUAE5J9Xa7Db1ez7wSNvbdUpEqrkC2TP6utqvadr3OhFNKWEgRqkctO2+5w+kiwlykJy8jZIzzXZbr1lfq9Tq02+2C3HoVQftWaDtwUjmWrMuy5eOWMBCVjmaKyV+SmaPVasG9e/dgNpvB48ePiyOBy9h/7mvxYwJpmir9DF6eNGZT2HafL0uJUR+xso7+YAjwPfjxqi47r9ljPjZDSaRV9a11BOrtLMuKRR54R/TXvvY1uHr1Kty6dQsODw/hu9/9LgCc+o/T6TRI90h6ULurl44P3C3RbDaD24n2i9lsBoPB4MxpAqETW9bvUwHzxnrAXX4uQlYi76i89H8N/Fk6oWWFdIKCNGa197DIVRZaHa1SH/gmObGeaEyX57l3l48LLh9ZsjEW8tP1Dq7feR70HmtXP3HVG/eZUIccHx/DZDKBk5OTYnKr2WzCm2++WegY1BXz+bxY4JXn8t2wMX4h9XN8i0Is41Qr2+crSM/gCWDSe9LnKC9Thm+JgWV8rkJfazEfr78Ykp/u6Lt37x688cYb8LOf/Qz29/eLu84lf3kVWFfeooxcIc/G8tAhv0t8ps9m+vJ0jWkNrvjVN7FmrU++oEw7yeDGjRumPl+r1Ux3ylKETrjG5gHgrxd6RQ/Aqe/qOn1kFQjtdz795ivL0nd4OroxQJNhlfUXY6Mqm4yNeXHuXITkkZq0XFcSlILKVlVHC3HmyqSrOi8pKMTPGmJ/szzjU1iaE7cqheIK5lGWVcrha4sQeWL0S0jdW/J3OTAxeo/nw50lPPbGeuypFICFouo+kqLNrXre1w9dZIYr/SVkxARXtC15/7fqMs1O+Mr0ycO/dwVgWr6rIH5d5V80WMa2q8/4gM9odeebZNLKkvrjqsDrARfzbG5uFsfdhxzlbrWBPjKX/43H7+PEUOxutxg/P6av8OdCy62iH5x3jOPyMWL1j2syQbLhoT7uqvViiM/te3fXc/SYOACAra0t2Nvbgxs3bizlg+N/sVgU92/hjh16zJxLPh8oAWnZjW/1t32EZozcVj0YGrtp/gGWl2WnpyX4FsXQupRkkYjfVYDazlREZowMVZcRIwNCsjG4OwgX2PZ6vWTxrysPy28hMmj9z5q31aeiz+O9gXx3PJL/eZ4Xi1FonUr9U7sCS/usyZc6TrTaCzqxgf/TRRcuXajZUJ+NSQGrrk0tg8sXcPktln5K86nX67C7u1vY462trWKhgJSvdP+5FTHPVVG3KVBmnLh+S5mvCy496PJbLHrZGsuG5G3NV0tL89b8xnq9DleuXCnGw3w+h+FwCI1Go5iw5JO3Ph8vVP4y/pA0Zl1twnWyzwalRqgNo5B0YIh/F6JXuO3U4tgyvq3VL7M+Kz3Dv3NOxnJDEaqYeEd6FQi+1wllg+qqyrc+6xvgPmfaRRDSoJjnl0KBXo4VHVjn/J67qldr0t1qZcdAVZMtNFiiASfuCsD7cC7710uEOHCWvM47MLnoKEsQao6PFBDEtFWKviL1E8mhjZWxaqB+eRX0SBlSgrYNnzSwtBudJAhpa26HUts8zL/ZbEKn04G9vT0YjUbFztiYu52pjKETgXwyZT6fFztchsPh0m4Cy8RLCKS6jR2TKdupKltT9Zjm7RN6L3ZK0LtHQ2KAVw24ewzv6rp+/TrcvXsX3nzzTWg0GsWEbafTKcZ/vV6HVqu19DkWfFwg+ZbnOQyHQ5PuoPFYCp+hCsT0J/peSNjX63U4Pj6G4XBY7JIM0XmhpDq2P5bDJ3As8J1+cB4IHePnpRNQP926dQt2d3chyzIYjUbw4YcfFgsjUL4Q8D7j43wkO6gdle0rl+arlYn9HcvBCVVJDqof6A5CDpzcwonX4+NjAIAzu/153WAZmD/9XnvG9/4ucPm53YwljOlpAxTT6XTpOem4Zs69XOIU1naX2oz6HhsbG/DOO+9Au92GbrertjHa2ot+//l5gvuf+B3v96vU95a7gH2L3ujznKMGWP0Evgt8ESBFt9uFb3zjG4Wu6vf7sL+/DwAvx9F8Pl86ohgACt2P6VZ53y/CVaY0H4Z2LgVc8xa+NKlh1YmaX+jLO3SC1ZU+Ff8ei6CdsSGERJkJqRSTWKlIj/MOFqyI6cwayjqTZeqqTL+R6kAjvEPeMZRwtOa/ij7lev/QCcGqVuloesUVGPpksMgqTX7g35wcT9VWZepOm/TX8pfeT/rd4tSFThZcVGh9y/rer3r9pEDIBIwvD4lAd5XH+7CFXONET0pn1zXpuqq+5NIDmm7GnfZZlkGz2UxyF19VkPSlxYZIOpPCVW88/xR+DQbn0+l0aSFSGYKbp7WMBU02CywTm76xlmWnxwm+ePECptNpcaxgiI4ObQfNV0gNuktHIoNTwJVn1X5raGwRo59TgpdflU52jQmUgY9V7ZkU9SGReIhGowHtdhtarVYxUWvtq1yuVLG+Ky+cPEl1VyzCEitpz2rfSc+ibd3Y2IBOpwMAAMPhsFgQE4rQZ/gkqvQ3jw+0cVNVDGlFSBtKWGXMTo/svXXrFly9erWYeD88PCwWKSChHUJOusaKJI/Ubpp+CPWXNBuvfYf93scbUBua53mx0ITqgTzPYTweF/kipIV1mn7DeijDm0myl+1rVj/QdyQ0R8j7vmqQ7JZVj/u+p7+3223Y29sr8sejV/E0CqvNfR3byAVrzGdFjD2z8Jv4u9X/12Lc84JPHmq3AKA4sYC+73w+h+Pj42Kh0XA4LH5bLBYwGo2KBSRS/FqlnrLUs9TOFllcdkjL15fGxYtZOLSY/K15SP6Fpa9LeWmfLbJIPrt1nsH6PeYrwTwZW9aJjcHravDXHSkcRR9C294ijzbgy5Szjv0T666qNlrluESFGLu6ySerRLKGkNkpQct16VsfCeQjRsrI9Trg0u5cTFjGemigIxHcHJLecOUnObDrOLZc74sEMd5huu4TsVQnxhLCvF1D8vFNlLjanxKt8/lc3MGRAhehD6KMs9kMnj59WiwKmEwmxQ4aC9ZJx9P+4NrpQPvwusi+CmgTWbSt+YTRq1I/lHQNGZ9VxE+IZrMJm5ubxXFxmowWcphOKJbRPxoZh3LxXV/noeuob66RWJJcaGtv374Nt27dghcvXsDJyYla36ljP3p3potApvaR20bXfW8ufyklLpJOoHp+sVjAW2+9Bb/4i78IH330ETx79gweP35c7Iqmdo+Pe+md+SQ+/Vvz46TJSI3AxP9jJyh8fpWPE+DjDCdgcaFTq9Va6tODweBMv5X6Y6ye0upIK4NOINP3tcI3ycPLpXXjwqrG6bqhKs7PVZ/dbheuX79elNdutwHgZd/NssvdybFw+SDrBM03COE06XeSHgl5b8uzVrnq9frSvd7T6XTpdCOA0xhvf39/accoHTO9Xg+Gw+EZWyDZJp/vVzamsk4G+srQTn4og6r9Hp+90b7z9T2X3uVl8h3lsfJxhMQMZXXI0mSs5ARpjpEmpORoWJVHzAx9arjq4BI2lOn8PH0I0WmViypq3z0ZZQkCl/wxk1xS/wwdJ1aZfBOCVY1PV73wcclJIE0XSfVFn0HnNoagd/0WU0fWfiHlrxGXmH42mxXkjjQhVUWfXSeEOpA0jYXsvaj1clERW9++nQSSbpGOKaf2w0VGavraRVCuGlxml62hv60zKZDCfnPyPNSJ98mm6VTum5yHP4zlIqGpHefqg6Z3Y20k3h9kJQj5pM95jS+p7iSd4SOkU8q/apvO/QwL+a597xuPViKV63PpWen5VP5EFfDVK09DdQzeRzoejwuSjE6C4HUXVhnweW53XYQN6p3xeOzUExpJKU1mWOokFtK45bJZCR18HicxsyyD8XgMx8fH0O/3YTweB9cH/43KHfuePC+ep0+XpRoD52EbV4Futwt7e3tw/fp1uHr1Kjx+/Bh6vd5Sv8DYFcHjWdc4jfFtpD6EzwP4j6522V+pv7om8n3PS+XmeV6cpKHpFYvdDakrKX2sDYgZu/iuuLNSgxSv4PMh7cDlvKiw8MF8/CFc7cv7XqvVgi996UuwsbEBu7u7xQkIn332GTx48AAODg4A4OXYkuKBV1UHrgLUl/TxhQDuyR9LWdpnvmufl4tpXL6vK26nMSVPXwYaj6j5H6iDtee3t7eh1WpBlp0eJ9/r9c48j8cTx/rgXCbX+7jylLieGN3umoT12VwOi/3SOCnpGc0u+MqQvtP6p2ZfJL/C5UNoMY1PlhAeS2sPSXZrDC/ujA1pcCmolp6xkC6xQbkmc0zg5SMmeENbZDkPVBV0lnm3mGDM4nhKbaa9v+RIWftlCHxjQUJI/3bBZaS5kQlpEyupEwrtWdqu1t9W4ZCuw/gGCJuQlwxaqDPvIpsuMnwBl4WskGwhd2Behbp6FWANuOhvksPNn9McRNczWjmh/a8MLPZT8/HQiV1HIkDzY2kd++oW01jqXQvmY2Sm/iU/gtfq2/hktaShbRx6nJ2rPCm4C5EfJ2nw3kqpHKkP83qMiQ20z6HkrCVN1TYjpU6xxGDau8X2K61sK+iY1eRMjar1OYfUz30EFO42H4/HS3dyIWlSr9ejCQzr99gn6I4JTae77lGLJcdWDR9xPx6PodfrFcfzuXYxWj+H+LaUYHWNdZ63VqYV6+hbrAp4XOmVK1dgd3cXut3u0n2f0qJCq6+iffb1H+k7yZ7TtFzH+vQPLUObPPSNaSk/aUGli6sM4UJdtiOmTWi+KcZAlmVLu9G0sqXyXOQ3TcPzuuhw9Wf6u8uXdNUbTkC0Wi344he/uLQDFgDg0aNH8P777xfp0Qc/jwWwko5Yd5uK8LWNFjdIOmYVviEHLZNzeD55LLytZexaeWFXDEx5Mtdk7NbWVnEk/2w2K+71pnDdN0vLCpVfg+V57W9Lni4eRdI5vBxJR7tk8MmncUC+PMr0R+szLntE5bXq5JC01J/xcQIaJPmXLLPFmZAKDxmk1g76qhj0ixAEviqwGiYaXHIHHXHRjz2zBDspUXU/98mODqolaACQ6wf7wTrv9JKgBU9lcJH7fix8dqcMkX+J9UMouWAlWXg/oauZNVj70nn7E+ddfln49CR+5jueXWQV2h3fTjFNp563LpHeDWUdjUawWCzg6dOnxaRw7JUBFGXemY5LnJTlAWnK+lz15FlqW35ewHa4qPKfJ0LjZBepGIrFYgFPnjyByWQCR0dHcHh4WKzaPzo6glarBe12e+n+RdcR4aH3WXJQ0s43YcjTrVqvxvZ3l97C3waDQaGPaQxLy7bIQAlR/Ezzs9SZj5iTCMLXMaaIAd4VO51O1eNjsV7579h+WL849ujvFFZC1kUUu8hPLR6X5ODfcZ3i0yEuMpUedYnf8R1mrjHjmnyK0W2a/2fJi6bxTYpp8lKOA+/T9ukM10Lu1xnYHlbdj30N6523xWAwgH6/D4eHh3B0dAQAp2MhdGdylbByresiL0LThb7JHYx5eDrKOZaJZ0Lif+l56W/pudTt4YqPuazUV6Tf0R2h2M9fvHhRyCrZOCvPG4t167ccWCeh/n7smLROVLqed00au9Lzd6TPu+xlWZklUD3gKy+0fOedsSEKghM0LkFcCjGkXKm8kInk2PxCnl33QS1hlUGTpcNyZ9nnkEvGTSItqCPLlRR1fKQBH9I/LIrHhzLtsKr2LJt3WQJFaxNLf7E6MWWcLt7nfLK58qF5hMAqf9Vk1ro46paxodkoyQnl9Wa1g5eQEdJPquxTvr7hI3J8/YGWw/OS+lQV71lGF60bXPpLI+753zw/zQcI8ZO5H0N9DwuBzmVKBUreUqIS7zDt9/tFmanKddlpyd5K/lqen66wthJVvrEjyRDazlUjNAA/T1jbJOR7zDe1n6iVkxoxdUL7fohus4Ln1e/3oVarwWw2K46Io0cG1+v1JSKZ39kVQk5b5Qrx6635hupcH3xxROhzFHjvLfYBbQK8zJjD533EklY3Wr+15rUuOvY8IBH9SPbn+fLpFDSNRlCWHXs0TyR/Jf4EP2vPU33A83CBczAuuGwIr1f823IkKP1O0j8aGazl4+KS+G8Wu2jxCyVZ6AJR2qesvpELqxjL5x0X8jYLjc3Qx6a+K7bJeDwu0uHfvl2Ase+Qyj7H2qFVwjVOrZwY1SVVb9oI8U81XSz1S02PlZGR+wzWY7tR/yBwLIxGIyfn4jt63/WZf++K+SzQ9HmV/d/n+/s477JlIUJ0sJZfiM/MbXnou2hjQPJ5ff2GPufzl2l6LV9xMrZKAt6Ki+CclyEELmFHqFKztknISj+q/DUjXOVkQChcu0R9Y2ud3sOCWAPqI96rMKop65YGmtSZlxyeMkTWeRGS6wCfnCHvwZ2+S/vhR0j9xjiGIWmtTul8Pl+6kyp1EL1OKHN07SrBxxvKHNs29J1x9wndOUp3g9HfcFUw1wVWQi8lJJtw7949uHv3Lnz44Yfw/Plz9dmqV+lrbaMRvPQ3mkdKW5siT8tYubQLLyERJRoBRKH5Q3yigrYrT3veCJVJ81ktfQl34kmxTa1Wg263C5PJpFic4ZKX20z6j08alYGkz7k8tD5Cy11FX9DsTyrCN0SXuOJBSdfSZ3wEqE9vXrSYMzXQN8jz/MxJDwCniyMODg5gf38fDg4OzoxDrtfo97QMH6T+aJkUlN7HRTy6wG1trJ7QdDu3Hy5d6ZM/ltPUeBnu1/BJcE1ui4yLxcKpvy8SqogLrZDsGy9La19cxIS7AWu1Gty+fRs6nQ48ffq0uHYDn6/VasXR0qkn/1z8Fx6FTtNMp9Ol/vOq6WzJh3DpsBTvHqPbXDGrdoJBGQ6C6x4LfHw5TsJmWbZ0zcxsNltqB+1Y9XVDVfEaveOb+oR0HIba2arjSyoL749lx5LvBAcXfBP4fMe2FWX9E0RlPZ0HSvR7DalJiqomU2JkceVXhbPAnYIQsi9k8FQ9cV9msiNF+RK0vk0/WwgjV74h0NpC6ltaEC09a93tnhqhbceDEy2gctVPaBCmIaRsqRzu6Kcmk0PSV+2I+spOndb3vG9SxEfclh0fnDi8JOSrg4Uc1OBrGx7UWfqYtWzMw/XsKgNkzQ6uCyT7V4WOxcmfMv6tlCd/rgq9QPNsNBrQbreh2+1Ct9stdmNhkIwkkqb7LHUZ68dL+biIAqssvrLK1HesL7Mq+PzDVcFHvLv8kFByWiqbyiDlbZUnplxrXjGTG1a/FskxxGQygdFoBFl2ukuBPotpJeIvZvy42s6nr7X2ifHnffFjTB6u+nHF6PzZMv3NNa4sfTA2NpL85nXyXdYN2E7oRzSbTWi327CxsQHj8Rj29/fh+PgYhsOhuquTjxX8XoKrXa1tEWMnfL4z/2z111zxfEg8q6W11EkqX9KaJpQfs/rrZWzqusYCq4LFN5Z0e6/Xg3q9DhsbG8V3ZSYfrKCy4CJLvtiSLmxbt/YNjeVdeoJD0wNl5NT6AS1T+pt+LsMTa7K50lltCE/r8+ulvDkPpvFvLoSMGV97uGTE31KNCam9kYdH/W3hKF2wyhrSZtr31rJi+nVZngzTWPoopk3pE/G8GtKPMR1L2okn5RdKtL/qqMLQvs4BDaJsYEeP35IUJK5wkwzEquu/iiD2IvehUJIrNL0LFqUeW541iNXyp84g/22d7sn11Quf3DpP0Lp03asUmuerhFeRZOPj3HJfNb+/qyq5Vg0r2boqWUICRw3YvvSfr315UCeRnfR+WZrGdbfbKv3g58+fw3w+hzt37sBbb70F77//PhwfH8OjR4+WZImZGMLn8P8ykzSpkNL2Y36u/mclElwEUiqcp66g5bve1Wfn+Q50C1me53nh13P/nRIfqUg4noeP7DqPuBfrD1eHP3jwYEkuGg/N53MYDAZLz1sIN+vdsXxMliW7eNna+EqNmDFL9SqXE+8SreqkjSr6u4tIvQj8zip9Glof3W4X7t69C/fu3YNf+IVfgB/+8Ifwp3/6p8Xu9VqtBvV6Xdw5KeXra1uNq7PaLJ5P2TqjvhLKoN2fi7L68sN/IT6M5pO5ZDlP+OwIn5C12N6qsA7xQlmEyC/14cViAY8fPz7Dm+OOWF8/S1WHmE+z2TxjX6bTKYxGI2g2m9BsNou7btcF0uQfB43fcEGpy/eXxkCZei4bN7nyBDjL3/F6iJ2c1KCdwqflR/Wu1Kep/8nv9+bp1gHSnECZSdIsy8RdwLxvTyaT4LFXxUQtwPLdv9yWlOFCQ95PSquNMWvsJcntunPeCt9YOTMZqxlw/N0VGOEkFUITtkoj7Mo7pFPS/Oiz/PvQZ2NkSIGyytjV5rzO10VhuoKQmP4XEsDH1EFsvVkDCiuRHJpmHdrbpZcs7cTHqNbWof0mZd1oAXOVOC995UKVAZzPvlmcqpBJlSoIsHXDOgfcVtksthztTavVKogyDPx85YX4RJb8zgupJ7dCUdauW5/npB7Pz5UnbWuX75SKCLAC32k2m0G324WdnZ1iV06/309OKFh0n9V2h+jZsoQjJXY0UluT1SWXy9aGkMZaXqkJJk2GdbNpPmJqlXY5xM8u44e4nrcAd8Jjea77G0Pslksmrc+6CFbpb5qX5tevm90EcJPCCL44uAzpmtKPsPRZKe06twfAauXC+sAyZ7MZ9Pt92N/fh6OjIxgMBkv92mWHrTrCJ4/lu7Lw6Waf3rDk79LnvA+GkrlamTG+nM+n0PxGq13xjU9LPqn423Ud8xQ+mxcbt9F8pMkpXHhjlS8GEsclHSvKFxrTBWurhKWuLX3citAYQSvb5/OU4ZG1PuXyJSw+mMRt8DT4vYVXjpm04mWnmLfRvnPlr+XhkstVJ1Q2yfZgGun9tXiuqrHo8i9iIPWXUP1p1bmh/m1IPYbWt4UzEY8p9hEbGur1OrTb7eLzeDxWV/a4AqyLYKQRMcqmaqy6Di9Se5UBOisUPpJAS6MhtWK1GKV16rtlkKofouLEtj6v4COWWNHyKeMUvi7gbW8B1pt154eLYOTpaP6XuBjY3d2F27dvw4sXL+Dk5AT6/T5Mp9Ni5WOV7Vm17X/Vbb1PR1Knmvu2OK5dq4Yxf3rXrs8XXsWdw3jPLZZ19epVuHXrFjx8+BDq9TqMRiPvfWPn0Tey7OyKYil+Sa1LXwXdvKr2uvQt7MDxLsUaFHySwjc5E4t6ve4cT/Q7V9xTZieNZaxZJ3AvMrSdCHRxCIWLJCy7s4nulKYTxGgTQ8nQV7G9QoE+Qb1eh9lsBvv7+/D48WP40Y9+dKa+EZy85f2ATzpyAvci1Dl9Nx/BKukKzYeSJqN8OtTiT8RM4vDPvnxD2y2lD3kR+syqYdG9/HtsE8mvXpW/xPXDcDg8k6bRaECn0wGA0/fE3Yur3iEb2+9CxgufcC4LCxeE493SZ3z5hNQRbzvtnSU9mRI+P/e8YOkDaLMtcbprglva2Sx9p+Xp+s5Sh1rekq8hPcvlDemzFljnXqTYydou540zO2P5jL80U8+fwd/xYmF0GDGQ44EDJbG4Q+gL3K0kSOoKdgUXZfKpQtlU0blCJxQlxLyrVO+aspH6jtZuISsgpEA/JJ/Qto4lr0JXi1jSrouisgQ/CO0dXel841sKBlOAl5ty0pwH5TwfKQiU5ON24XWDT4dYg2/f85dYLWL0m/QMHxu1Wk087omuMNZIMkv5WKb0uaq+FGJz1w3cQXf5EhQ8HQ0eeCARqqMtizY4LMFIGWiTO1hOvV6Hra0tmM/nMB6PzfVohaUvUTtstU3SWAlpJ1eeoXCRydqklks/pPATJfK+THum8l21duLtGKtLzxuhBCGfTMHvJPDvQ+ukXq+X0usWe0Tbt+x4wrxcfTn2fVLG6pxPkeR2PafB5ZeE+heaftD0k/Ydfk8Jy4syNs8byJNRnwXJURd5r7W1q11pGhcsdlPKU9JfFlThV2K9lc07hqcsE79b/fsyZVziLDSOSOpDoXVJ/Wru12LMUlX7oOz1eh1qtRpMp9Mz79PpdODatWswGo3g5OTkzMIs+g7ngRAfXptjsIwrix+h8c6+vF0+UIi+5bGpTybfO6TgOy36MfS5mPzKwOf7peA/pFNneFtY+5OUxseZa7+7xgaVU+tXnBNzyemqQ0nXNhqNM3lSjkd6D0yjvZtU95LPKrVFSF/X0i5NxuLL0XsouDPFgYYEj+Sbz+fQbreLM+855vN5sfrmIgXOrzpelbZIGTjzfDAYSnU35CXKo2pnlX93UcbIRZFz3eFrc2rcrUcLabhss/WAdUJIcuRwwlVyFrFvNBoNJ6HGkdqmvW5oNBqwWCxgPp+bSS2XE85JlFUgJiCz5Gkh2hHtdhvu3r0L/X4fnj59GkTKW2GZnKAnVljzo581hNQvj5Us8I133gZlyb51h6RHefuHEGA8Xw2uSSHU37Ts8wSV1dV/XDYpBs1mEwBO74sLkdX1vY8U0mB9D5/OwPpZBztK29LXV0PytBBHrudpPtrY1EheXhadiA19l9cdeZ4XGxuazeaZOuQ7kBGxdRwyxkLHT2xMZCknpH8vFgtRFj5uQt7PVR8uAt9XjjQRK6Wx2Ab8/XL8xUOaZAgl5TloHEFtE128UjVarRY0m82Cu6fY3t6Gb37zm/DZZ5/Bs2fPoNVqld4xel79MERPhvgkoRNjKRDqE1ifl+x6zAIDK6+hYR38s5D3dk1WWmIJPPHE9d5ljiy3xMDc3rjkpqd6pYQW40nvjnqLYj6fQ7/fLz7zKz3o9xyab1BW34X0I/HOWHrcom9Wlx6fQtPMZrNi1Q1FrVaDVqtVfOZGIBXJxPOyBvjWvCl8Qd55OkJWZZxSPq1+XUorRXmuPFMELRbnuez7VGWIqjRwqQggS/6WdkP9xeXRDKSL/AwNCKuA1nd9BjZE71jelaaJJdbKogpd6nOssUwr+V+v14MWbEi2ySIvLfMS8UD7Le2cpH0jNFjZ2toqjnQaDocwGo2STdaXHQcpdcO6ENwSssx9fJA29tEPbrVa0Gg0oNFowGAwgMlkouZTNgCV7BInyC2TeYjQ/oF++2g0guPjY2i1WjAajYpV87VaDbrdLty8eRN++Zd/GT7++GP46KOPxLuRLe/J5eRtEUK0xqQPhRTUWic4rPJIExqpwOu+DKlT1SSappcwL3pfmau9JYKdfufSfyH2Pga+WCHEF5CeTSG3dtQ65m05BszX30J0phbTU/jqFeWpOl7hZVoh6X2rrK6+wm0L9+HL9jNL3CDJYr3W43WDNoZ98amPh9IQmj5k/IT2f2uf4mm0d5dsdKgNx3T0f8328L9jx6zPNrl8qNg2SRFTvIrw2WlfOhe0dqsqpscy6vU6NBqNYiL4zp07S5MbuND0ww8/hKOjIwBYPq4YY4VQGxL7Xin7liaD1ZeP4b4knel7Jz7pRSeXeL8JyT9VXUq6MFbfhcoV67NYf7fISv+5dL1FN/M0ea5fU6LN37jiJpcMrnelMsTGsK7npXfEuszz0ysbNjc3i9/wtBC6S3+xWMB0Oi04CPrO1neT9K/L5kvvanlnVx9fmox1KVasIE4y44pTWjl5frpTlk6K0HxwMjbLsjN3UVkJR2vgJeWbGjHKzVXXmnLzkVihZWtIVVcuhzJFWb7+4XrP2EA05jkXyaghtm19cqRwIKV8EVjvKcuRlKuVyLL0dT7eLHrjogQeNHizOmc+xyLWyUuhV6rU4wir0ZWAthAgfNcUPi/lGSLbKuroVYLr6DeqRzhZRD9Ldb6xsQEbGxswm80gyzKYTCZRk7G0DG33dRli1VXuKonrqmCdjKXvig5/q9WCdrsNnU4HZrOZczJWyo/WodXu+wKnEMIyFDgZe3R0dOau2Hq9Dt1uF9566y34O3/n78Af//Efw/3794t+XTaY9vkMPrKQ1n1qv8l1zJLFfq567PjqSvKlQmSM9eFDiG+pLAtc/iIfj6uIHyXdjHqc7sSlv5WJKS3prMSYKz7lR6j6yvLFY9x3l57xEV+xSEkUpoSl/lx17yOLLOVrz2ixnk9GGpNkWVZqgdqrAp8N4cSvdQxUQVqnSpuSI/DlLZVjlV3Sb9KYtPATKeDivMroxsu48Syqjq01rrdqYGwDcPpOt2/fht3d3eJzo9GA/f19+MEPflDI1Wg0imfyPIfBYGDW/xach411+TcSl2jluHy8oeVdcb7Fl4+VX+a/+3g+i3zrgpTj0qrHad27xoHUVloa/FuKp116ny5SleQrC19ern4U25cWiwU0m03Y3t4u8phMJkun9aBc4/H4TJ35+DwXZxFqy6Vy+Lv78hEnY7UHUUlbkOc5jEYjVYBms1lsNa7VagWhw2fiL1dPykRCiCP5qtbdRXEeUzosKVFVv1ind3URozFkeUi6EBlXgVhdsK79t0rE1BU9Ci+VDBRI4IZM8l7CjTzPi51/OInugqVtj4+P4eOPP4bt7W3odrswHo+XVhGH5F+WTLWWE5vmoiDLMvOxwlqaxWIBs9msOGYaFxxubW0V+mIymcBoNFoql/5dNmjheYb85gLKhStMP/roI/jss8+g3+/DdDp1EubSEWcpIJH9fDKGBlWp7JQr6EVg8OvyHUJJXwn8eNWYiRSK0PjhEumA7YdE6HQ6FRd3YF/WYl86IROD1P6JRPLh/ynKCrWbVU3WpsiTTkBaiDxESFqrHJifS3fRtFIaWi+W9qblWfyt1x1W7ovW/UXnfFKNMytCjiIMkS3lRB59lscS2PbaeLq09euJVY7RLMuWdr7SIz0xlgF4ueDynXfegU8//RT+7//9v2fkHA6HRZyQClXURWjsrPlZLt7dF9P5bGsIUuaFeJ10g+Q7xfpTVrvsmlPDcqUdmmXaVcujbOzo+y2FvaO+4fb2tjrfiBzMyckJzGazM9dh8COK6Vj26S2f/2Th6GLyVidjNUhb5XESlT+PlaQJhWfQ12o1mM1mS3fV0nQu2VwV4xto1tUPVQSUvlUUvs/UgfQZmFDnvCwB7COhQlYLxCDkfVNPNFnIufOQK0YGyfHw5aG1vfQusRODVvgmW5Hw4nlbiIgqUEbJW/L26RbX9ylkSUFOrxKhegT7Wpl7BlzjJ+aewpSoclJ+FXlLdYvOGeoCi82S8qcYjUYwHA6LNkPfxteXrHVAJ2e0ALIKaHZb0y1WOaqUmcI1qadB8tvwu8ViAbVaDdrt9pIv7HofqUxOpFrld+VJ04S0Q56fTm4eHBws2Ucf4YB1kYIIDm0T386qFHWDiJnM5P1BIwVCZfA9x9uiqonYkCDcldbqn2j5Wn1Mq75x+YFldFaWnS5q1uw475v0s9ZvJXmq0KlUJt8kHV2wQP0jDaExsqZLQ0mylGl9QF1vmbjk5Vv8dStZzMddSH/OMnk3q8tecF7GIuPrAFdMTX/T6i+kzWJ+K4vUbRvCHUlpqe8spQPQj2j3leGTKcROutLxhRwAUFyHgum1WCclLvqYtei82LER6h+kjoGkvkZPr5zP5zCZTKDRaECz2SyOLcajiG/evAnHx8eizzidTmE8HieTzZUupk6q6Je+mE4Dj9OlmF3TIaH+cJnfLdxuiK6LiW98z6Sah6H5aH+7no8pU4PE48S8N3++zBgIsWEayvq3eCWSxM/j78it0Z2ytHwpf58/oj1H38kaX7j4Ggmmba70YXRU6CosVPTT6bSoGF+HmE6ncHJyspQvdeZ5+bQ8zHsVzsB5TxxgffA7eqQVAy7Ct0qn7KIjlSPkMmixZbwKgWqq+g0hUDGNNH54Gvr5POqaGonz1jeXeAlrX0i9I5baNkpqnjeqJm1WlTf6E7jLGHdMUvuJhHkZcAdM821o2tR9qSpIhFas7qzyXfP89IQWbE++s5wTnjihWKvVYD6fL6283N7eht3dXdjf34fhcFjcuRQqjw9ImuCuOZSr2WwW8nOSxBJA+YIJX155nhcLL+lE9GAwgMViUaxWDT2y2Cc3tYt8bPgmKmLKq4qgi0GsLtAmJtdNr1gCZAQnTvjY5f3EUi7PD20BxrExBFwKZNnpYuXFYrGkBxDShKSvfVfZ9vV6HTqdTqGvQif8AOIn49etj0tAO0N39dOxwNtX8ws0kkcjcrWxhmUAvLQ/PgKa2xUA98IYOnFEP1/0+LZqSPV0Efo4x3naH9pf+akWCBenGCK7Nr64PClBF5RaT4B53bFO8ex5jYvf/M3fhO985zuwubkJ9XodxuPxGX650+kUv6+KdwdYTZ1YJzBDZNHSoo3lk0qh+XCsCz903liVfcH4O3VZqSZQpXx8viP/rmy/D60bWt7Ozg60223Y3Nws8pnNZjAej6FerxcTsZL8vsXjLpktMlp8sNjx6N0ZKwW9XBBpspYCd8BSzGazpbtiLeABgCav9l1VRsSXr4sYCQ04pXxp4ORz+mLrwDLJ63tGa5vXxXGMUXCYvkwd+SaJpbT0t7Ljx0USaGPDBZfRlQiC1P2rinxj9EFI+os6xlzk0bo5Q7GkuYuU4v3ZN6Ei5XMRiZuqwesT4CVJGOOXUND2xOCLrrbX2kebfJLSxxLVkpzae2gI8b3WAUhk42QhwLLPhGk48vx0gh4nY/FqDf7+eFwx7k5oNpsiaeEi+lAm/r82/hFlSQLJxtMyuO3Glah4RwsPflJNtvj6ly/msJThgmTjXX5MCoS88yrKriJfnx4KjTMsMY/2HH82y14u0qkKfAxLuhm/o+SnNY7z2Q4XQnwYX94ovyQrf3cryRGCVceVFt2Aaejx06nicwmuWMhni6i8Wnre16R0Lj26SmK/alRNBFt9CcS6+mKWerKMJd8Y08aVy576dKpFT/nGVwh4/vTkEVoOxiuLxaIgqzHmiOkHtI1elfF5iZfIsqyIV27evAnvvvsuAJz2H7yW5OjoCHq9HuT5y4WgZfnq80QKfajFaZbnfLZO0+9WXanxSDFccxVpY2D140PSW/PQYhJX3VrimFi5fHD1n5D3k/KVxr0l5nLFbDQPOjayLIN2uw2tVquwZQBw5tRcfqUp/S22D7t8ilAO2sK3cSxNxvIdA9pODiS2+O/SsUuNRgO+/vWvw8bGxtL3jx8/ho8++uhMetoAGnhQwxE6EFYduCGsJAJX5LgKDo+WoM/zursIAU9V9b9qh1JTgCna4Lz6aBlUHaCGlC0ZTkqIrGvwel5Y9/6WyrlO2e7cGUZi10KcWNI0m81C91/eHVseuMKu2WxCs9mEr3/969DpdOCTTz6Bfr8PBwcHZ+7zCOkvw+EQ8jwv7tjRnEf+Ny+r7Fgs28dTE+XrCOl+Rs3PpZjP5/Ds2TPY3NyEO3fuwNbWFly/fh329/fh+fPnxULEkKN0qU3CZ0OCcjrRxPuvFXTSOc9fTkofHh7C48eP4cMPPzwzPlLBN8nD0/JxWbXdyvPlnZOpbGWVEzO0DGlyJiWsetJKOFnTWNLT98fxhYQj3pc2nU6L3fQxZfuANofueKVtgnYd7RM9ArwMfO0SMhGbZel2wGvjp8yYXlffFY+BDDnqMTY+0fwLbWJUAk/LiWX832ejpHdY1zaKwavqF503YmyrjwiV9LqPi3P57q6yUgAXA16/fh263W7xfa1Wg9FoBE+ePCl81U6nA+12G/r9fmFfQuvwsi+/WsAYJs/zoo90u13I83ypPwGc9vP9/X349//+38PR0ZF6otzr1kdCuHr8n8d0tC65Hx5SVojuOU8O9lWAxN2X1f10/ir0WReoL0Zh2alpKTu1XaO+JM0bbZhUz5PJBKbTKUwmk8IuWucLfQht15AJaAu85/ChEsHAkH7Pg0g83oAflzuZTKDVasHm5maRx+bmJuzu7i5NICJxaTmSB6GRmNLMv0uBhjosVQYSkrxcProKjqaVlAcPnCx1FiqrBK39XJ04Vb2ueiLWV35s/fqMfsizFhmsBBmfLLCUnxKuVSxaGkufCCERU8M36eHSf5b6wM9W+ddlQraqsazVccrJqxBZLBOySBpjOSkWeryOkBZh4HFMrVYLRqPRmYme0H6B9/KgP+QinenvUh906TWus7XJKav8luBjXXRDCHzjhb8Trc/5fA7T6XSprehvdIGcZUEhz5/KqKXT/Daelk4QhupOzV7gZBBOytJ+fR79wDdGyuTjSsv/ttppipBJCd72XF5pHLp+5zpP63tlbGCoD7UqwojWpTZR5SIaq9R5ms6m/4fUUYr69JVpKcPlY4Xqppgxn6LNrGScVBbVE/ivXq/DbDY7Y+9d9RFru7VnaV3iaQ7T6XRpgZ+PR+B5xcSklzhFjE14lZDCBoRwJVzXumyf1hZWe6mlC9F/WD/NZhO2t7eLU15OTk7g6dOnS7sX+XUrvnwv8eqBtjtdyNVoNGBnZ6f43Ol0IMsymM1mRb/BRZf9fh8AYGnhtxafItahP5X1XUP8kTLllPHnXPqLwxcfVImU/aEq+0Dhi8VTyKHlwe2EFrdpfpn0Gy9P+j20jWJtNZWB/wM4XQCO91ejTgI41T+on3BHLP5N87WUHSon/T8k35DxiFiajKX3KyLJhGi320u7MJGYarfbS2larRb0+/1i1edsNoOf/exnsLW1Bd/+9reh1WoBAMD169fh6tWr0G63odlsFmm///3vw/HxcZEuNThBFesclYFlUEnPZFl2ZnWNdK/deDx2kr6aPJcoj7LkRZn0q8Q6ywbgdxolrGr8nzcu4kTKqlC2X4cQ2tay6OqvWq0GrVZryVG5nJQNAzp06PghCcl3EeLuN/RP8HsrptMpzGazM4QslsMneq2kDKbnz/km3/L85erckNWSWj/lx6Gts/5EkiEmWJnNZjAYDGA6nRa73fmpLPP5HAaDAbTb7TOrzbV8Q9IgiU/Lo+1J24D+i20LGuign0/HgSZ/lUe8YhnYz8vsFrTqaZ/PXGVfxzbn9eqakPVN1EpYx/G6bkjl72L/1XaVon2gaUImalIiZAJQSuua8JbShkxKWH7H+LjqU0RCJjzognU8LcM1nqsElru5uQnb29twdHRUnOYRQ0BJPsClbrGD2jP0V14HlJ3UsOZL9YKWLnQitkoehPpxiHq9Dt/85jeLjSwPHjyAv/mbv4FGowGbm5swHA6LSbRLvN7ARaE0btjZ2YGvf/3rRZ+6ceMGNJtN6PV66kkNs9msOLLY4t9bFy9dRPh2M7relT6bkie+RDpYJjbLgut0vnkxFtxvw0lNKV0ZpOBIJX/8xo0bsLW1VSwoOjk5Ka5FwueqkkmDdjKAS4bY+hXvjKVkBzYwXlqMDiMle3jQg3dmTafTJQW+u7u7NHmLL0sdm1u3bkG324UXL16caTAsn36WlKEWsFmcsyoGYOxKAu7wcdkWi0VBENLdUkjg4Gc86oofJaTVR6o68E0Ir8roWILb2DaiZfD8+G8pV6BUoWS1sn3tFfJ+lrRSGh+JrqWzECWuiYSQybXzQGrHd1UkEIB9pdp51XsICcr1qo+c5LDop9lsVgRX1BZz5+aSAJPhm6hsNBrQbDah0WhAu92GK1euLB1ZqfUHSX9Y9AmVS5PJlQ+Xx2UTQscQ173rqPtCQevCN0b4eEb/V/KjaDpcxUkn3H3gbaz5aVpbWvVKWb8L75Ta39+HVqsF+/v7xcK/shMI+HxIHnxMWn0Ll7zSOKf58t+k4635cxpcz/A+4JJXmsxxIbWfHwIXuR1CkseWac1HI+5TIWYsWnVJ1bqa90VaV1RXoR7E8RHjq4fqFd63Q3aJlYE1b4zZ6U4j+r+ke6z21xIvakclck4nFtzeSP7Qq+BLpIK1rte5zlL4mIhQ2xTCU4T4fJjeZzs0P9zlW/jGmsSzAgDcuXMH7ty5AxsbG5DnOXz22Wfw5MmTwlfgi9NC4tdLvDrAdsfTLOmiDlxIurOzA7u7u7BYLODRo0fw+PFj6Pf7MBgM4Pnz58UzyDWE+ubrilD+UeLcXflZeUpM69KZFu7XwpG6sGoufp3g0/dl83OlSc3VS+0o8VIh/SVkrPi+86FWqxULFAGgOIGLT1RLd8WGyBL6Lq7fU4+ZpclY+pJ47AVWCv7rdDpLk394XG673S5WerbbbWi323B8fLy0u+TevXtn7o59/vw5HB0dAcCp4v/a174GvV4Pvve97xXPFsJ67u9CnCfZEIIYp5E6cLxNENJu2dlstrTy6bzq5ryCsbJB5nkAlax0FPUlZFgmLQDWvz+cN2lx3uVfdPic81AsFgsYjUbFbk7puOKYO9wuYjtXEUBkWVbsasSjm7a3t+HFixfw85///Mz97Fwey/0fIc6+a8Io1SSF9Vluh84TKfqr1Y5SAptOyLown89hPB4vESC8LbVgGtNwIgTTcSI9pD3o87E7SqfTKezv78PTp0/hr//6r5eOY6a6KBYWm5yi7/MJDvxbm4jlASydfMJFqKl2BPPTiVz58n60aj2e2odyjUvt/Xw6VSMqtHIw3UWziecpr9Rui8XiTLwZO0kSKgeWTyeBqe0O6V+pgSco+PqtNKkixTY+8L5MxwJ/X3pHcQxi5LvEJTSk7j80JgtdBBOqG6Qxiz4bv+6NA7lX+lyWZfDNb34TfvEXfxGeP38O+/v78Ed/9EfQ6/WW8qYTcWX02UWNCy+azFUA+xj2ocFgUOh0tMm3bt2Cr3/96/CTn/wEPvjgA/joo4/g+fPn8Nlnn8FoNCrywTxeV77MNXmVZcunFbkWl3BIp2P5nvP5r+veRuuKKmIYKW/U4/yUozIThDQP6tNpsdI6ArnM0WhULFJcLBbFnecAL8cJzkcC2CZPpXg+xL91LZjiKFu/3jtjucLB2epms3mGDMK7RxD09+FwCD/60Y/g+vXr8OUvf7n4rdvtQpZlS7tmcfX9s2fP4OHDh8VL4q4DPikrVW7IChUpjeX5lKsoXOSrr3wkChEWR8z1HlVP+knvWpUTtaoJTI3wkUhYTQFbVkmVVdw8nxT14yOZtfxTtHkIeetKo+12klCmzkJW6vB6TdmXXeNP+r6K8cMd0VXog1VCGwPau0n6n9c/nj7B64rfs2DFRaznlJNx6FNkWQZPnz6F0WgEk8lk6WhofEbSnVIw5fMfXLqwKp3CJ598z1I5NZmqmBT3IRXB5GoH7BfNZhM2NjZgPB6fOcKL1iUS2IPBoCDFcBc7ptFk5/2H1zvmBwBFP3UF6jQwo+XSXfQxwHwxHz4JGeJ7uMqwpkVwcpPnJbWB5mtrEyCuSSTqy1nl5+NQGnOx5K9WBpWZ+jraGLfKETMefYSFSwfx9qR5SEQEz89VL3meF0fL83xS+T9IBuDCZQn0fmZsK+vEm+U7gDgiz6WnpDTa2HERnK60ZXU/gN5/UpMrUv6tVqsYfz4SDp/h7WKRW5JFGs/oN7bbbdjY2IDBYHAmb0lHSTbI107cpl1Ev7NqcL1zEevI4mNKSOlLSn02BD7fIBRWHczTop3Y2tqCjY0N2Nvbg62tLej1esXiknq9Dt1u98y1bpq/X1bmdcZFlLkK0NOzsO1brRbcvHkT9vb2YDAYwNOnT6HT6cD9+/fh8ePHMBqNCtuEeWBcg/mE2qF1iQstsvliXQ2hfKw1f1/MqOkOH/dwEZGK7+Fwxf8atLrnVwy40vI0PjklPS49R/2qKto6Nk8pNqUxe6vVKub08jyH8XisXi3CF6S7ZOPxXujY03xmy7M+uSR4J2P5Ebij0QgWiwU0Go0zBeN9dvQzYjAYwJ/92Z/BW2+9Be+++24hULfbhY2NDXjrrbdgd3cXAE4nY589ewYPHjyAR48eLc2WY9lUphSr0qWKd5GaIY6ONEi0vLkMPB8uB8DLSWpelgsSeeHqSCFGyhJk8nd1Ka1YJZDSoU4FzehTktD1nARLHYbK6KqrVPVq7e8h8kvkBX8fyRGjRLMGfjeilSTjZfl+cxEd1vwtbSKlQQdca+NUpCTC12dj6hifo/n4Al9ets+IWmQq0281+TBA531VmoxdB323zsB+jnX2+PFjOD4+BgB5ksdCNEnOML9/UwpuXYFbiE3QiFf+m1Qu15X4OdSJtcgsjbGUhFwssG3m8zm0223Y2toCAFDvUwJ4eVRtr9dbkh0JM4sulXQL/o/31M5msyV/XMpTu+OETkJIbeBqO/ob3nnY6XRgMpk460VCiI9i0f1Z5t6dSt+P222Xjrf2+ZjTCCj4syiXb/eMJV/NfmRZduYqE6t8COsY1drQVc/a0c8W/aL9bomLcFd7mZjDIguu+tZ22qOseMd1iCypZXflHao7pPwoQglVmofvnfEELytS+rk4nlutFszn86UV/65nLPJocTQnB6W74lEPtNtt2NzchMPDQ9P78JOaAKDoq9pkN8CybUodR6wjfLaEtzG90x53pYX4X+sAiTAOITB97+rizVzP+HxNrtdcPltILOnSWz7eEk+zu3XrFty7dw+uXr0Km5ub0G63odlsFuN3e3vbGT9cpP5zifLg98QCnE54vPXWW9BoNKDf78Pjx49hOBzC/fv34enTp0tpsV8ByPGkbwyuI+9g4YMoLHGHK46X9Arma/WJpNgFQJ+Qcn13XrDEU6uQl8d/Lpkk/e+zUbyNLNyJZGMk2VyyIHwbB0IQ8qyrf7tsItVPrVarmDfM8xyGwyHM5/Og0x0s8V3ImA/VZyls7NJk7Obm5pIA9Xod5vP50gw1OoiUhBmPxzAcDpfy6XQ6sLOzA51OB46Pj4s8Dg4O4A//8A/hzp078Pbbb0O73YZWqwUHBwfQ6/Xg5s2b0G634Rvf+AZ0u134/ve/730JJBak89y1jlxGAYQMbFeZLjLV1xG5cp5Op9BoNCDLsqX7fREYDOI9Pvg832WM9Ri6wyoEVsLARdxan11XSM6B9o7SJOC6I3Tiap1QxpDFYh3qaB37VQpy0UVkrbszq4E7CxZn5BLLoMQXwKlv0mq14MaNG5DnOQwGg8Kv8TnX1MaXGct0IsJFIvmA9p/nox2n7PM1Qux12X5Ytg6t+VvlbLfbsLOzA6PR6MzVGYiQ/GIIRQS/i9YXJGqTUq4+JsmVQrekaFPaN/B/1+Iha1+KJZOqJMvr9Tpsbm7CfD4vAtSQsixpfcTOJdKBjj068YLgNoQTG1ZCK4XPJMmMeWP+vpi36sk3lGGxWMDW1ha02+3ivQeDAdTrdbhy5QqMRiM4ODgw51uFrIvFAobDoUjehrRViD5z5YsxJR6b/OLFi6Vj4lzxm2R7cOFRlmXFroZ19Elj/amyZbrKQeLxrbfegjzP4f79+8VxfMjDVWlnyqCML6PlV0WfsZDEFOg7p7p+QJOFIsuyYpPLaDSCzc1NuHv3LnzrW9+C9957D27cuAGLxQI+//xzePjwYcHl4a5GeufeJV5foA7HUyxpH242m7C5uQkHBwfws5/9DPr9fnEsMfrRrutP1lEHhUKywfx3Du4HaWl99Wctk3OQISf3XWIZofMIUptq/Z5zb9xPpun4c67PVtksz0p9q8pxHGrDx+PxmSOJrVcwndeYiKk/n6xLk7GdTudMAk50oGM4mUwKB4Cj1WoV98Y2m03o9XpFul6vBz/5yU9gOp3CnTt3iqONT05OYDAYwNWrV2FjYwPeeOMN6Pf70G63xXKwwamS5MSCr8IsqxBCn9dgdQQtJBn/Ht+bOu08EEJHj27/Rkefr3TFu2it7ybJ53tOC+i1Oo1RQrEoMxnH25m2o6Sced/T3kn6LeXqF8mY8LQaaFtqixRcslonBKTnLflTGX1puByueqkK2phImSfNd1VkfAgkEjKUJC9bNiJ2wjZmfIY4ZdxpWUfya91B9cLJyQk0Gg3Y29uDWq0Gw+FwadGZi5jR+qjLjnEnnvoykl8VopNpOleZkq/An6f5aKS/ZMcstlxLI026pejboZMWWZYV9zTPZjOYTCZOGx0iZwyRiX6uxZ5qwLYJIRpXTcJotkny1V3kppQHfqfVneS7aPlzXz1FPWF+tVoNNjc3ix3I/D19vg4ds+tGornk8dW79kzMuDsPe+kid/B3gLP2xjUWJD9VejdLHCX58bwtLHW4Kl+ZHilPuYBmswk3b96Eo6OjYjLWNZarlhknSihvwW3vKvsm1tN4PIYsy4rrGXj844uXAF7uxOX6hr6fpC/PA6toa6lMV3m1Wg2uX78OeZ7DgwcPAOB0UoUfN7pOSCWTz2e2wjV2rDwLlwsnZVOA+7SSv0j9zL29Pbh58ya89dZb8N5770Gen/KuL168gOfPnxfc7HQ6FSdi17HPXKJ6YPyI+hyBur3T6UCv14OPPvrozLN8cw7PV/obYD0W8lljIiketXDt1Kf2+XA0nZanzw7xPFz6zWUjLLxq1VhVOSExuGQjpLr29XvpNBCfnx3C1fn6Gc/b94wkTyg0n1WCz97ioiKEayOi1O+5HCGyafBx4r5+Jsnpq2/vMcWz2axYOYPodDrwD/7BP4DpdAp/8id/csYJOD4+Lu4fyfPcucsS72gDgGKyEDv3m2++Cf/8n/9z+PGPfwz/9b/+1+KZyWQCs9kMtre3ixWZ2JjacWU+nIfDKyljjZB1HbHEyVWaJ1UWAC930SLwbjMMZFPBEvCcd1B23gjtb7yfcBIwtYMUSnC5yM+qEUvYSwGSb1f6q9xvUVdIk0HngVe5rmPA9TdOFF2iPLAeHz58CFmWFTvR8EiwKkDJyVSTjZgn35nkIs3pojuL/yTZmrL+E8pHT4JI7ZPxOxhd9dJoNGB7e7tYwNbv92E+nxeEha+erEQ2f0YCDfhijsal9Yn9HHfe0OOUXSQDbZ/hcFjJrhFajg98l7APvK2l9rEQOugjxMAa5DWbTWi327C3twej0ahYPYztV6vVnPeOIrQjf9cV3MeVdvdjOmkyiwK/xwkNnj/3GZHYvgjA9w4dAxSS7lvlZGBqYPtlWQb37t0rdpZ9/vnn8OGHH0Kj0YB2u13wB1WUH/OM1gYx49Y12SwRjRKkaxV4vKm9C3I51F75Jp1XAan889KJKAvuWvvCF74A29vb0G63C64ty04XgQGUPwq/KkgcRFmscpLHl7ekC/F9LfaHl4XPSTa72Wye8Snq9Tp0Oh3o9/vw8OFD+Pzzz+Ho6AhOTk685cXyIZe4uEB/ibd5s9mE2WwGP/3pT4vNT/1+fykNP9bep+el79a1r/kmyVKB6wNrWdxmh0y0XkKGFOvF5BEK11U5qWG1XzETtSHlxuYXy2VocrjK8cU6PlTFdVAsTcZK94oAgOhA7O3twXw+h62trTN3oIzH4zMTuBw4yYvEAgbd0+kUptMpNJtN2Nragq997WtwcnICV65cKXaq0OMUkEjCo17oe/iUmBSMU/jItDID3FUmfs+NiGUWnuYvBXW882NAwIlbKR8LQgMurT6kevANJkn5xgbIUnlauSnhKlvrn1obWeS01JPkHOAz3IkoY3hSBXPavUW8bi3E6zqgTGDlew8+ZqwE5yrrR+vjq3L+NXLLCmtaq+7kdmGdA6GLBKxDPE4Qg1u+O8EVOFkJzzLyWSHpDW2SUwtYq9bnLn/I6ntYfIjQPOnz6J/ifa3ahJ4W/Fn9UJpeqnfLBLCUjy+4p/aQHoXr8n+qWqxjJTZRjlBoz6SyrSH5uEgt/NdoNIp+h4QZ9sV1nTh02WnXJAjVndp93Tyt5pu6vsuyTF2okkr3+aDZ7LJx5bqkt6CK+kUeYGNjA7a2toork7A8baFlSPwjwWf3pf7qq1P6TAq/2xUnSkdKh5DElF8AgKU7B13vULXfukr/TCtTS4O6cGtrC65cuVJcI4V1hXfFr4IIjEWK9ltlLOniMqTP/BnLmODPW0B3llNZarUazGYzGAwG8PjxYzg4OIAsy5Zs/zpxFZc4P3BfHz9j3IB3gkt91srdrXNf89le+jfnAClCOW/6nNVPlZ7lCLGTZdslZVy0CoTwAgD6HAn9bOGBQ9pB4wMkSHbD0iah3GJovbnKDoVU37FzSy45zlNHuTgTH5YmY/GYvp2dnSLTra0t2NjYgOPj42KCdTAYwH/5L/8Frl27Bv/wH/7D4vJdxP/+3/8bfvrTnzoLvn//PhwcHMC9e/fg5s2bcP36dajVavCXf/mXsLm5Cd/85jeh1WpBrVaDb3/72/DWW2/BH/zBH8B3v/tdMb9arQbdbhem0+nSqldtZbiLQLM2Jg2ctWel+1j50ZK4ApKCvwfewUJ3QfGGlwKh+Xy+dNSipnD4SqnFYrF0ZEXIxB7/bp0NeFmEkie8v0l3wFnzo2ktOxrPw7BSB8V3vGJs/qn71+syucVJT0pWcWKeY9Xj+nVpk1BgG2G7NZvNYiffq6x3qwRd4KUBfQo+fvA37ZlQ5zkELkIJJxQ7nQ7U63Xo9/vmO/14IGORjd9zLuVnCVRXpWeoTLVaDZrNJgwGA/jwww/h2rVrcOvWLbh58yZcuXIFHj16BIPBoNgxTRf/xcrvChxxt5d1Bzw+32g0oNVqLfmSWZYF7QqT2ntVeqUMae863QLHrqtvxrSbBb7JACwfF6s+efIkCRnPJ05iViRXbYM5EeEizDANPoP6jX7PSUbqf0rt65swiplQc4HXZ9Xjir+TtexVTGBdZFj1BPY/7KuhcaM2SWp5Fp+hYwJlGg6HxUlmlvfAPOn/uCCfX5XEFy+FIJW+wViGnzS2DvFElmVw5coVuH37Nuzu7sLR0RH86Ec/gjzPix1tZfS/Zr/X4d0pXP4ihdb3feNB4vli6yDGJ9WIZz4WR6OR2N55nsPf/M3fwIcffgjtdhsAXvbh6XR6qZsvcWbhBt4/TPtHo9GAbre7dF0dAJj4gos2YUch8f+a3JofCLC8Qw5tuRXSJreLinW0IS745A21KS5uI3QCl5dp3V3ri8tT+U4afNeoaNDe0TWWLL4Bl40+o8U6WXb2+k6ejyZPKHzj/czOWOqwA8DSzlWa6dHREXQ6Hdjb21u6azbPc7hz586Zyb3JZLJELOAO2L29PZhMJjCZTKDRaMB4PC7uLEWya2Njo1jpSsuhx6yhzLhblhom6wQQJyx88E3EaqCOmRYk0YkRK3wBNf1dOt5ysVicuUgZZfTl7yNUQ+W1pF8HY+B7Nx5E8zQpyOaQ/kfTasGB5LjQZ13QCJ9UxJOlDkPGIR1zsbKkcKpSk3IWco3qGi5DmXpZFSz90hJglDGsqXVQSN/F/6Vj5S4RD4m44XqNLqIJ6X+aHoxx4kPJdPSV6GItl/0qY7dTjo+U/VmqY64D8TPep4fHwWL9aflY5NXsq7W+fTab29t6vV6cfsLzQL/edZTtKieLfO2slR8TaK8aoT406nUk0jA28+2Uco07Te+EvgM+v2o7I5Xneg9Jt2r+Dv2cyh+ncvj8bklu+nfMJEUZn1aTY12BYwN1nVRvdBxZUUUf1/S95m9z2xIbB0s2iuoV3wIW/plyL0j8hyz0CfFvpN9C2rHZbEKr1SrqHicfzsNX5j56o9Eo/LJQzsdSluW7qmDlDPh4tfBJGlen+WLch9dk0TgLfI6nkWSSyvSVS2M55D4nkwkcHx9Ds9mE4+Pj4qoMepetxXe7xOsJ2gfwRBV+gmSIHtX6c0ouLBau+MAKibPUnudpXWXG+NmhfK72mwspeNgQOUNQdV+S8rfGZ/Sz1f64bFHou4bWp8/2ueTxpbfKZemjmr8ixVRa+SFjz8f1uSC1Z0y9IJYmY1MQuVmWwW//9m/Dzs7O0veff/45/Kt/9a+g1+uJzz179gyeP38OAAA7OzswHA6Llf0ajo+PoV6vw9WrVwuCEScZ+VHJ+G4x96GVAZ2hx398tSNORNPjlJrNZvGPGs9+v68GEZg/XfWJzv1sNluaaL1x48aZNhoOh3D//n11ZUZVyjGGaLgo0MgU+n1V7xdKrtI+gw4+/tNWrXCSyWWIqmxDnxL2GVmLbrjI/VACkhKoMxC0T75K7/sqgq7myrLMaS8vEQbfPe1aAGYh212EfQh8+hwnb5Dsa7fbS8cuh5BevDyfPpRItlBYA71YPYXP0V1zHNPptCDB6A4bftKDj8ST/qYySL/RNNLqdUqqIymOk3jNZrOYPG40GjCZTJauIul0OsXz8/l8bY+91XwkV5u7diunwCondPL8dHcDLlqdTCZFjICT7Rz8BB4pz0usBin6INcp+JmfzMBtUJmyU+jvKkFlm06nMBqN4Pj4uKgTesoLwOluc7yCwILUk2LSKVn4mxbPx9xNbeFxuH/Pd5X7nkVbtLe3VyyUn0wm8PHHH3t1D+YRC2rnrMflX7t2De7cuVPozwcPHsDJyQm0Wi0zL5QKuGFgNpsV8uf56QaH4+PjpQnyi6inU3CIVYBPHGmw9IUq37HdbhcnBT58+BB+/vOfw3Q6haOjo6V0Ln/wEpegE/t42g/vH3yhpgva5NU69bnUE4Oh44vadUyPtjA0huHlWiekLrEMS5vxz/Q7yZeR2iKmr/DyLXlo/JElnYaYMVH1uHf5kNz20WP+NdA5OAu0xRhVvfeZydg8z2EymRSraIqEjQa02+1ilwDA6d2wH3/8MVy7dg3efPPNQsh2uw2tVmvpmNurV6/Ct7/9bXj8+DF89NFHxQsOBgN4/vw5bG1tFUTyeDyGBw8ewN7eHty9e7fI99atW/Ctb30L9vf3odfrFROTtIJw4qiswrUouthOKZFLi8UCZrMZtFqtM4Q6zZ/u+tVIPLrKFY0Bl3E8HsNwOIRut1sQdp1OB27durUUoNXrdTg5OYHhcBhMekpkrvZe2nfWCTX6u0R8xhiukNUXoflJxApNYyFoY2Tz/eYqi9evVLc0jZZfSifCRYC70tO/qawamcXbq+qJ5SqwSgK5LFx9S0oXkg+HTz+to9OrOfbrKOtFh8/Oc51HcZ59yEXy+p4DcDv9NG/JftH0Fhsg2Tuqk31twPW6zym3+hK1Wg3m8zkMBoMlv0sKFFz1YJVBel7yDSxBRbvdht3d3eKkmcPDQ5jNZoXsePyxRd7zhK+vufwRV7+kv2vlVKFTrfnhzmycXK/X67C1tQXtdhsajQb0ej2YTqfiTgf03VF+K0m16n7gG6eYRvInuf/Gv6dl4D+Lf2vRN1pZVqTwrzQ9YHlXnt5a1roB41scIzi5NZlMYDQaQa/XKxZlhxCfKeSi0Gwp7buWvmaxK64yLc/RXXeYjwTMn96njt/hdRmuOCoWkg7gclKOBfUiPzGNpksBn27Rfp/NZoV+t14dcd44L7/BZeO1tBad7/pdsy+a/xbjM3A7TXUaLiAAeHn07OU1NJewgOo3qltQN7t0Oz4fwoVfFPhiectz1rrx2ReuW2K535SwlHtebR5SPy77bvFxeDnaMxaZrBykxiFpn2PGp2+OxPIO1r4q8Rexfdyqs3y8F5VJipGt8lnHgCW/Bv9iPp/DyckJNJtN6Ha7xYMbGxuwubkJz549KxyDw8ND+P3f/3345je/Cd/+9reXCKper7c0wXrt2jX4Z//sn8GPf/xj+Nf/+l8Xx9ns7+/DwcEBfPnLX4arV68CwOkOze9973tw+/Zt+K3f+q1isvCXfumX4Nvf/jb88R//MfzsZz+Djz/+eGn3K395any0WXYXKROzWlIbtDR/DFzoTlW8L6Lb7cLe3l7xfa/XW7rva2NjA2az2ZljoGnZuNoJ76Llx0wDnO5EfvHiBXzxi18s6ndrawt+4Rd+4Uzan/zkJ/DgwYNS9RKKdQ3+Y+F6H67UfMo4lTw+hJaLCo2vsqYr1asgNy2InZhwwUqiXARQh53vKHhdsWodFDoucDxRfYxH918iHrH6yeVwWXV/GUh5IVnqcq61CQ4kLn13efD8QqGNMzoBE5qvFjRrEzgcdKfpZDIpTm1BeX33t/p2PVlkwDTUbtKrRHzY2dmBt99+G8bjMUwmE+j3+9Dr9aDdbhf+JpbfbDaL79cVNJizgk8s4POS7cY2XZc6mM1mcHR0VLT71atX4caNG3Dr1i3Y3t6GP//zP4eDg4MiTsMjjbF/ttvtYveVdnRrKqS0lSgnn5ig+kAqC5+jYzPP86X4if4vwXI6Ci8zZNIzhb8pyaNNSmk2yUqcrDuwL+C1R6i3j46OignZFy9eLMUhKW1uWfjsGz3JwJdHWfC+FKsH6/U6dLvdov5TH71rBS6kopP0HKuIc2jbItdCJ0NGoxH0+/2la7guImLrsYr6T5mnxUcL1Zt0zKKN4s/iiSwI5FKHw6H3WPFLXIL2D9QzsdD6NfXJ1g04LjV/nyPEJ7C+bwyH6nt2XXyXVwVWv9r3TNkyLfnGnJRSNULGv7QIJMQH813Tg+D15IoZ+dUaVcyNWLA0GUtXXeH9ofV6vfge4HS1fa1Wg/F4XJAET58+hT/90z+FN998E959990iPzz27M6dO8XE4GQygd/6rd+CTz75BH76058CwOnL9/t9saP95Cc/gWvXrsG9e/fO7Pa8cuUKTKdT2Nragvl8XhxRhLtyO51O4Yj7KljrUC4jxNO4HDKN/JFWC9B88F22t7eL+kFSjcoiEU48AGm1WkvH7AEAbG5uwvb2NgDA0jEW3JDxvEJICasBtJAFFxm0fV0ENE/vcyQkxYakBM+Dlqv1G1dZvDzf55h2rGIy2joRe5H6nZXMB/CvyuIXngO8PE5L2okfkn/VqJpkllBVP4kZO9adDJcoB647q8jfkrfL39AmZLkdl/oLtwv8XX1jIXW/89kqlyw0D+l7qRyNGMe6s+QdY095PaOfhyel3LhxAwBOF9n1ej04OTlZSq9NUqI+Rx+e5k8XckjBiK8PpmhzV79N4Tf4wMso804hz2rvKY3DRqOxdJQctmksGYQxVOx1LZa+Hgu+WI/3Q21Clu4IxpgJ70bDyRh60lOInHmeF4tncbIbY1kaE1nHeaivnEq30slITZ+55F1nv1iro+l0Co8fP4bBYLB0dQ8+s0o/yVWe1t/pdzx2tILbeTpmLP48b3+qP7Isg93dXdjb24Pd3V0YDAZesjCGuOfvwP9pxwhSHdFqtWBnZ6eQEXVBiC4tC1r3dLHX/v4+9Pt9aLfbxQJ91F3r5su79JF0DDetX40XC/XrQuvE5btp31n6hGssWvwZzQfHDTF8BzftD9SnX2fdfInzg3VsabDGAOsIybennDbAWT42NG8t1kZoiyW4j2uR35V21YipqxT5p9DZljy1uNCFFFfC+GQJ6ROx8agljavPu2Ic6rNp8mqf0Z+gY9Y3bvlYt/imrvL5b6nH49JkLB4tQ+/GwiOxsBI7nQ60Wq2l1Yaff/45/Kf/9J/gN37jN5YmY3HC9vbt28WE35UrV2BjYwO++93vFpOxAKf3v47H4yXher0eTCYTeO+99+DevXtLv9VqtYKkAjhdLfb48WNoNpvFUb/NZhN6vV6UU1vWkEn5ScQI/Z2TYlmWFZOx9+7dK1bG7e/vw2effVakoXlQ0F1SeEfYeDwu2i3LMtjZ2VnaiSsF3/P5fEk2XN1peUcfJHJFeh+JlIkpZ50gvTd9N8lp0Ihy6W8eyNP3R+Kr6nrhAUNVZaV4D0se6+KAppYD747FsZ1lWUHan+ddglJQqwWxrxp87yaR1fR/17OXKAcfOSS1nVVHlXHefelxBb5GtlJw26QFsquCVpZmEy32jRPhEvFrkYHKIZXhmmjhz9FjZ5vNZnEFyHw+h4cPHxaTsb4ysP3o8ZGo45GQxiOMY5HKf3DpeP57bL70s6s9+Heh5IOkf3kftaBWqxVXw6SywfS+aC0oPg8/meoaVx2hbJTowskhDNYx9sMJVNxd5LtnUrKneZ4XV/TgxC4ubMDfU+2kLjPh4ALvj5zk52l9BNBFwXg8LuJk6teWGc+W9IiQ5zSSCfsYJ3ZpGpd/KMkhkWK+dqb2A++pzrKsuIt1b28Pjo+P1TusNVsaWkeckKNxLAce9QpwegXT1atXl2xfleDtQ98T9Qje6f7w4cOlxTZ4j631Ptx1AeWzrLJXdWQ0RwxnZIEkc6itp2MD2/3w8BAajQa0Wq1i7KOvhp+xjukmFReHdonXB2X5a8kX0+zFuvgIGifKfUZu/yz1JI1xnj//jZ/Ewe2Xq6yy/HaZNlmX9iwDSyxhzYN/p8VNNL3lhB1fzOs7+SB13E1l0dJK6Wk/d+Vr1UlS+XxHLMaxoXN72ji2yJDCh3A9f+bOWLzoG8FXlLowmUyKS+azLINut1tMIGIeGxsb8NZbb8G1a9eWnh2NRjCdTqHb7RaO8nQ6hefPn8PHH3+8JNOzZ8+WHG2A04nk27dvw3g8XrpLFlczWypEC0RDCDmaxkIo0bzq9TqMx2N49uwZtNvt4p350XRbW1vwta99DZ4/fw6PHz8+Y1Qo4ULLns1mUK/XYWNjoyj7008/hf39ffjSl75UtNX169fhq1/9apHHV77yFXjx4gX8t//23+Dhw4dFIGY9JsUXdHHyVHvO6uS6yM+qFFiZvCQjalV6NK00SeUq1woqk8vgWw1gzCSCJhP/jjtZnNzwyWZJ62qjVSCk/BgZNRIhVf6hWEfnMMYmWFCGkNUcCF+aS9hBbQu1R3zMcD2p6SsK3EkglcnzsgaSVFfM53MYjUZqIIlyuxzWLLPtqqNl+MhiyZ6F6F5OXPMyXQEUz8en81yyWcerLx2SbM1mc+m0Enx2sVgUO//oMZa8bkajERweHhY7BbkMo9EItra24Ctf+UpxP9mzZ8/g8PCw0gmL0Oe0cYF5ALgX7pWxgalg6Vs+7OzswBtvvAFvvfUWXL16FX7yk5/AwcEBtNttAHh5EtFisYButwu3bt0qdtU+efIEBoPB0gJNzddJ5SdXlV9qSH0Ld6bhgoiNjY3i3mg87g/HHj/eOsTGcl0eUlda3BQKSQ9eJFB5MfY9ODiAPF8+Tt5FoK4SXGdJOirEDnHfw2W/fXbQF4NzGXBiEf9xoluDjxTT4t9utwudTgeuXLlSnBA2mUwKvab5G5PJBHq9HvT7fRgMBoWNddmWMtDaE8tF+83TcF7rIkBaKIB+opUjqnpyHCBscZ2PcygTp7lAeU4AWFoox/sqv07oMra7RGrwq/5oH6Mnkqyy72njTYr7siw7cwKlBtc7cD+ZfpZ4R/6/zyb6+GqNT3DxsTFI3Y5W3tWShwUuP0LjsS35Se0LcFYHh/jRvN9IfVd6J/58DKzccYo5Ba2+Xf4a/47rHq3eJB6ElkN/41cD+Mag6x1jxiP/fWkyFjPik7FWTCYTODk5KZzKVqtVVBo6Eu12G27fvg1XrlwpjuDK8xwmk0nxO135dXJyAnmew3Q6PVPpdJVJo9GAvb09ODo6gmfPngWRZlojSMSq7zn+PQ/QXUoddyrgO/N8MG2324U333wTAAAePXpU5IO/S04+yoEEH+LJkyfQbDbhC1/4QvH99vY2fPWrX126a3YymcAPfvAD+Pzzz5fklt7HElhpkMjUmHzWGS4DFWKwaT78fi2rDK7fJeeG9mdpHJUlqjEf3zOhfYrm61L+PjJDyi+FjBaUdZRC6tVa91U54a5gN6ZMy7ufN/g7x5K6rndN4Rxf4iU0ApTD1YddZGhseRT0eEp6T72kwzVdGTN+YvqY5lfEPOsD9/F8wQ2t9xT6RMsPbSxOomo2iR7rStsYMZ1OodfrwdbWFnS73TNlT6dTaLVa8OUvfxnG43FxOs3x8bFpBTeXp8z7c9ktaWndac+WIbapDySNk1g7JLWlpa43Njbg1q1b8MYbb8DNmzeLu2LpEdSYT7vdhqtXrxYrip89e1bEYBpBXia4tyLFuLEE76mQ5y/v38XxRnUoXuVgzYvCpX8lPawRS6usj3UG9m2A05O2AKBYqBBCwFGU7acamUq/1/qAJo8rfcgY9sVqlrxwp/lkMlnavW+tb+4HSXIg6vV6MRF79+5dePbsGcxms+KuYG3iHbmkwWAAw+EQRqOReF1D1eAcjUY4xtqW84LEN4XAxRv4nkNYOQ9X3YbmlxpoyxF4hQTdjEHrSvMlKNY53r1ENfC1eawPRu0rQDnfehXgYyXUB7Dw/nyihn6miydCeF3fMxp3cNGR4j1iuXWrTFIevD+EluPyCfD3UPsY866xeoHKx8eD9Dcdk9Y7cLmtc12zoflVVI48P3v1JpVNkluTq8zvFEtRJN6tsrGxUXQqfGlccZplp5OGOzs7MJvNoNfrFQJ/8MEH8Pz5c/jOd74D7777LvR6PRiNRvC9730Prly5Ar/2a79W7L78+3//78O/+Tf/Bv7jf/yP8D/+x/8oXrzX60Gz2YSrV68WzjU+wzEYDM4c34WrHmMdPAuqcJbREZOO0cLj6drtNty8ebPowNo9rvR7qR7yPC+O6+l2u9BoNODg4KCYjD06OoL79+/Dt7/9bfjVX/3VIp8vfelLRd7D4RB+/vOfLx2VsorLpS/CpEpZaO+Gq3/pfTdc0fDVHogUilaS0TKB5CIeqgY3FDGB4usG1Pl8TJeZkHmVx+slXi9ozqcvPXdOQ8kfasvLOomSjBZwh5hPJob4AJbJTzqBhGVa8kvho6UK6GLLrtVqMBqN4Kc//Slcu3YN3nnnnWJyAXWz7zjAPM8LAhp9ZXpaze7uLvzKr/wKDIdDePbsGZycnMAnn3wSFChZYW2TkLYrY8+loG3VdgploMcuUXCfKc9z6Ha7sLOzs0TcUrKW5kt9RLzapVarwdHR0dJdtOcFjVi29hMpPb4rXq+Du8vX3ZeL7XuoJ2ke3OeVJnn5+L7oPhqdbEEddx7922WjsR/yvmuZILKUSaGNj1D4np3NZvCTn/yk4IKyLFu6xormo/UxfgwdjT3wuPZutwt3796F2WwGDx48gJOTEzg+Pi74DFqPuIN9e3sbvvzlL0O9Xofj42N48uQJvHjxAobDYZHuPPQC9W2wr5a5LuA8gG2NbYVtOJlMivhx3XXueUDiTDiPM5/PC35uPB4vnfDnqtN6vb60yQUX8120vnWJ9OATk640+LfE/4Qu1KwaPh2DVy5q8UysjpJ881CExJjcT1hVG1y0xUEpINUt96cwXgzdCEURG2dX3faa7+rzKcty/L5+xuvb8izOByJcE7m+dteAz5YZJ0uTsWiwqVOA/6hzjA4k70SHh4dweHgIb7/9dqEAAU4nSEej0ZLje+/ePbh79y784Ac/WJpsRcIInQr6otRhz/O8cFKokqIVzysxJMBPrXx4J5bKoWQQrXuA05W+uNqdkjA4gUs7qEs5cPKn2WxCrVaDwWBQOIT9fh/29/fh7t27S3JeuXIFbty4UUyaP3jwoHAcaSBcBr5AVvstRf4++FbFlM1PUna8P0hHAuHkLDrd/B1dk5GW+nC1q1SG5X0tY7PqiTxXvqtyPlZF+PsmPmjZnNjF5yXZXPrydXPgUmCdgpxL6IhZ1CJ95xojVv/FqsckR5r7ehZok55SWT4CwGWrtPdwycPLt+bhkos/Z/FzQnWfJu98Pofj42PodDrQaDTEo4tdec7n82KBFvrGdAdRu92GW7duwWAwgCzLoNPpwHw+L8qg/WIV+pxOHlEbFNIffO3jslWWd7TWfUgfwWMrsb4xYOQ+E5JK1j7A0+A1MCcnJyubiAgdixbSUMpb8m0ti0RD/CIAWLo+JtZHrSq+pOPGEnNKeVQh3yqBkxAAZzmNKsF9Zl9ariNifWiX/S0L3zilx9vj3cz4PX0/re/RfisdiYl5tNtt2NzchKtXr8Lx8THs7+/DcDiE8Xhc3A/N80VdubOzU1xf1ev1xDvXVwFeF/huKHvo/WfrAMpJcA7OMhmLz63C1wjRb9byXRMnUv+nv9FyuK+Dz2r2S5MP09PxJNmDS7yeCPUZJZvG+9Yqwf1hadcb/R37Pb3ORYLLj5N0EtXhFrj8L6sPuUpffVW8pJUv9sEak4XI5ONVuM2ywGcPVomY/hTDQVnLkuJ9SfdI/LQmi+RzWRdoWnm1EO7ABfV8JU7a4E5K7mRLODk5gadPnwLAqfK7evWqmH+WZfDlL38ZfvM3fxMATidi//zP/xwGg8FS2ul0CkdHR3B8fFwcPwQAhbO9t7dXTFC22224fv06DAYD6PV6Rdoyd1JQkiTFsy7DgKQMHqszHo+L9LhjGXHjxg3Y3t6Gzz//HPb394vvx+OxKiuuht/Y2Fg6wunk5ATq9Tpsb2+r77KzswNXr16Fw8ND6Ha78I1vfANevHgBH374YTEh3Gq1irbAgCg1rCTNeRMKqWTg7yqtVqsaNDgAOLvi3EcGrRKxBFksVtnXqiyLEhjUiaXHxsfW6arbJATroCtisY71+bpjHfqSr08jYdZqtYrj0Dh48OmbMOXPUntRJngNTc//dzntKKPPQS9rz3xBpxRg0J2L4/EYnj17Bru7u/Cd73wHfv7zn8P+/v4SGUH/bzQa0Ov1YDAYFGUvFovCj/eh2+1Cu92Gk5OTIB/O1e9ov6EkLP6W5y9P9nCRASHjSyNgpfaM9fFDwNsZ/ebr16/D9vY2HB0dwXg8Luqd9oHBYAAHBwdwcHAAW1tbZ04FuuigY9DXxlJbYYyHx5Zi3WE8hfdlS0G/pNvwu9lsVsRhjUYDvvOd70Cn04GnT5/CyckJPHz4cGkn7jrY5FB/y6oz1xl8QojivN/LN1GbkkzE/Kroh3RXQa1Wg/+fvffqtSRLzkMjd257XJ3yVT1dPa7HkboihxwOh6R4KQoSdHEhQBIucPWiV0I/QdCD3vUf9B8k6EmAAIkyFCFxdIdDzXBsj2kz1V2m69jtTd6HrMiMjB2xVqw0e+9z6nzAwdmZuUwsFyvMMp988gmcnJwUju6mNFhAT3NqtVrZQvwoimA6nUIURfDo0SN4+PAh/O7v/i48ffo044/0ZDaed6fTgeFwCH/5l3+Z8dkkSTKZp2lY9YqrvGuROl2p88Pa9r5xwbFJh4VLDrE4j0OMxXQTShzHMBgMYLFYwHA4zPLDjRMWPRyPDcdNM7hDtgl7nAtXWbe+LpCcBSHzA9XjAIpza9X2LRPfRTff9Ybpl7X/S85fjQbKB330WsPSuqFl43pTE2PM5/Qqk9auIlRWqpOXSv0VsY06a9p27+tT3HHK58uQuTYEIfywiXYRnbHUIO9TIKSjdS8vL+Hly5eZw28+n8NkMoGXL1/C4eEhHB0dZenev38fvvzlL8PZ2RkMh0O4desWtNvt7I4rakyaTqewWCzWhHcuzErGJs0og9+kdzwsHzSu9DRozBc7HlWi0RiDdTufz2E0GkG3281Wxg8Gg0xIw3j8Pl1OJ+aF96xEUZTVIVWqXr16BR988AHcuXMnOxptNBpluyh6vV521y8tBze2uQwUlnqX6LcyDB5O+t0Uw6tTyODheL+kxu8yx4hYjTdc6eLxKU0a7Zb0ff3F2vZlaKBhfP3QRZPkIPDRxr9pfTc0/ZC2wvr3KZtWhBoGaVjJcFqVHo2+KqijnjZhxN1lgfiqQmp76/wUOiYkmSxE3uDv6hAsXfMBP+0jBD7+baXbpQhyOcVHT9mylAHlv0mS3/Ha6/UgiqLM0cTjIK3L5bJwvB0a+vj8Ii2wpAZxTd6qohRR+Z3KLWXha7+6nR1W0PaQDCkYpt1uZ3cEU1me9gHchYZ/cRxDp9MR6cZ7HDE+HvW5v78P7XY7u0OWX2lSpmw8vo8/aQbuEPlXAqbrOsaK8juXrIl9Hvsl6pxxHMOdO3dgf38fJpPJmi4qyd4uWbiMfBgCi9FDe27aKLMJbLIMFpneEsYyD5Wlpy5ZF3fg4fH39HQsGs7S/3CnOX9P267b7cJgMIDDw8Nsd7+mJyFwDpxMJtmzNAc2hZA8mrZFNA1Njqzal108OlSvDOUFIbyzbDjK/1utFhwfH2cnoAyHQxiPxwXbjnQ1BaUT7Xp08QENs2meflX781WEq225HcXHm2l/abLv1Gl74fIy6jCSg1ZLQ/tOafXxo5B64nqB1U6H/EIKVxfqTpf2OV8bbBuabFGHrcT1bM3PJ/v44vtgTZ+HCaHFJy/4xqHlfZ19yiLDV0HBGYsGnsvLy0z4RaCzjh4JgwaE8XgMJycnWdgf/vCH8LOf/Qx+//d/Hx4/fgyvXr2C09NT+Oijj+ALX/gC/ON//I+zFfrf+ta34Dd/8zfh3/ybfwM/+tGP4Jvf/GbGaF6+fAl//ud/ngkfR0dH8Pjx48KROKvVCk5PT9cqiAssqKBrK2R8k1NdcSSa8De961Y6emcymcD3vvc9ODg4gCdPnmR581WpuPJzOp2qeV9cXMBwOITbt29Dp9OBbrcL8/k8O3oYAODZs2fw7//9v4c/+ZM/gb/9t/82fP3rX4fRaAT/5b/8l+yoH1R0EPP5HBaLBfR6vcKKvNDVnxZhwSWo87CSomjNa5NwGT3RcDqZTDKBHd+jEQ/rmy5i2ATNdafTlHFK25Vu7QNl+USTqDt9HCu+o122hV0ZqzfYPLhAv0t9YRP08DtUXWNfM/BxpwR9L4Xn36myS49T5fwb6UySZlbkS/UdaqBDSCeYaAp3XfzWpWxrbTAajeD8/DyT7ajDiNcHygOLxUJ1UK1WKxiPx7BcLjNnIKaL+gD2Oc3g6oPUTrQPodFksViIO6wkSMYlV1j6n4bfBf5Rpj9FUQR37tyBBw8ewGg0yq6nQIPt5eUl/OIXv8jS3tvbg7t378K3vvUtaLVa2SlDuFt0G3M8H6vcKCW1keYwRBkYHTB0Jyz2sW63mx3brfVHPn6wX+IOvG63C5/5zGfg6OgIxuNxllYURVlYy6ICi5He5wxw8Q8reD1jmpb5ZRcRSm+T8sRVq7sQ4CJw5D0crvkex+xisYB+vw+PHj3K+Nann34Kr169Eu00GGc+n2cL8yVIeguOZUxHSnvTc8EuzD1NIHQzhA8WmcuaZtU6t8qXVmcXnuIAAHDr1i34R//oH2X3G//0pz+Fb3/729DtdgtXudH8+dw9n89hPB6r9G1rh2zT2GW9cFuQHKoAtnkJF2Ja0t80JLlHOqnv6OgInjx5Ai9fviz4J+gCVR5H+g3gPlnTdxw7/ebToTSHEqVn1+xxVxkupzp9toQrI3v6vlv0gDpRJT1LXGtZLH6dMmlWRZMLU9acsQDF1fI+IwddyY1YLBawXC5hPB7DeDzOHHOLxaIgKCRJAp1OB9rtNvR6vUzoQKE7juO1naG4E5MKJ5g/Fc7rMrZoQqTUyD4mKxkspbzQCMYbPEmSzNlJd0V0Oh3Y29uD2WyW1RU1hGoTDzqA6dGzaFDAtsJ7WbCter0e9Pt9mM1msFgsYDAYwOPHj+Hy8jI7Qhrz47t1JVq0/sXL7ur8moAcMljKKgtl+pmPiUtCpVY2Tjf2HZ6ORmOIMd/iIJUMn1ZIZQqlKSQvzRiI8I13Sx7WMJIjxDJZh3wro7DSMVulrutAiOMllFdcR1xHhZQrNrsAl7Ae0s985aki00j9nhpytLnB9R7/QvhcKL0+Wnh/qML3LGn4+Aqltyoo70V5Go3R0t3wGk2SAYDydHo0sKUPan1Jg/aN9iGNt0s0c2edK07oWCnTbnXl65vHZrNZdgVMt9uF4XCYyep8h+tyuczk9iRJYG9vD9rtNvT7/cwxiYZZKa+mYeV1ru8+JVySjS19XAI19uHiAUn39dGswepwsBhoeJ5lnB/XAbxvSzp4nfKES1+TaLLOnb5wm2wvfuQp/pUZV2gXwPvQW60WnJ2dZd9pmq751TcmuMMK35XV+bU8fJDyu0p6CK8zfl+jZKOw1IvWxphGGUh1XbaNy8rdLjmS9u1WqwWPHj2C+/fvw8HBAURRejw3Lh7A/osL4yT0ej04ODjIZAH8j7vW+WkbXIa66jx/F/XCTaOq7sPj8bjaTutNQrNN4VgBSMdTp9PJToFBRyravC0ylEum13iLy05mmcd4OloYjZY6oNVJXfmE2OpccM31vjhlZCmLfmpB0+1lnYMtduaydh1f3fi+S0d407nP10eldq6zj7nSs9gkNKh3xuKRWGsRXq+YsWTy6tUriKII3nrrrex+UgRlpKvVCvr9fnZf6XK5LNwNi7i8vIThcAiHh4dwfHxc+LZYLApxkMY6V5FUZYCaAiClR53QPkZw69YtODo6ghcvXmT37aKRjaYjDUy6whTv351MJoWVRDyNg4MDWK1WcHZ2Bvfu3YM/+qM/gh//+Mfwne98J4uDK10ptLvpyoJOfq4ByifCXVWALEyMMyjEpstUd102RT/nVZu4K+i6gCvYruP/bnCDNxFl5payvJPOd9a43AHB5Q88xoket4kKq0V2sshYLiVVCluHQljW6aKl1QSoUUz6Rp2kk8kEnj17lrUVLkrUTi+gNLuMpriDEB1LNFyTc6XWPtb2x/pB50BZGmh6WN5tyIf0WEFaB3THM71P9vDwEH75y1/C5eVlVpdINx5lSHcAJEmSORHxGhi8j+4Gm4VmAKdtWIbncF4ipSU5sVw0XgdY9MS68wuZn68S8MS04XBYOH2J8q2QMsVxDEdHR9DpdKDT6cDp6SkAFHey4rNLzpDqHPk5PwZ5F3GVxhvSSk/SsGze4AhZUBIax5VfCI0Wx0gZ4Fw8n8+h0+nA3//7fx/u378PrVZr7XQQ7PvoWJVw584d+LVf+7Xs+fz8HEajEfz4xz+Gy8vLwtUWN7i+qHOBCQc6+XcNURTB3t5exov6/T48ePBgbb6gm5UAig5cPq59u10xX64zWeELe5Xmg+uCMg7eOsHHLj/ZA6Ae+3XTDvfQfDn6/f7a2MXTUCy4qmNHdcZSYwetGDQQUQE3jmPY29vL7jLC+CcnJ7BYLGB/fz9zxn744Yfwn//zf4a9vT04ODiAx48fw7179+Czn/0s9Ho9+MUvfgHD4RB6vR7cvn0bfu3Xfg1evXoFv/rVr7J0UVjhx6rR+8lcK6UsCmhV774WVlOYOR0u+ufzOZycnIjv6cRA7/yihhoqlOEu23a7XXDgUvzgBz+AVqsFX//61+HWrVvw4MEDGAwGBeGQH6OC/YQ670PqjLeFq200gyYPQ9N1TaBVDCIWuFZPULok4wwNiyuS6b1W+L3J42g0GimqMkQtXd6fy6SLkJwEVl4Rmqc1HWnxgIuOKgKgtlqPh6V9MGTlz6bHUVNxbpBi1xez7AKsc5Fv3nelIY1BV3hNlsD5HgAyp6x03BOPGzKXlgWXgXyGdPwuHdnrc0ogsB7p/xB6aR5Wns/nUClf/D6bzQr3gUnh6PyotZe0yJKGaxpchkFHIX7T2onv7sDf9Bjl0PwpeN939Z9QuMZsHMfZdR94DynPC/v1bDaD09NTGI/HMJlMxCOkeX+S8uflCZFRXChTR7Q9aTks9PjkeNx5h/flXlxcrC30dfEFqjdhXxuPx9DpdNaM4z651CU/Ve1jnGdJtPh4nkTPJhAiU4ak4wpXh1OnCg0h6W9T3pLGpfRc1QknlZkujplMJnB+fg4ffPABfPzxx3B+fg6z2cxkNN8EyvSp6yJH4xzOd680WR9l7HuuME3xA+07p39vbw/29vZgPB4DQLrTlTqLeFzKp7H+8fTB+XwOe3t72Y5zgNzxdN2OJ76BDS5b3VWENH7jOIbBYAAHBwfZ9R2vXr0CgNTBI9m2MS38w/nEx1M0mzbXl122NYu/wScvvkko6z8ISVOrX4u/wJW2y4aq5Uf9br7yVLEDh8bXoNEb0m6aTZrXh5SP6501X1f8puVypzN2Pp9nx8cg8Ig0ekRTu92G4+NjuLy8LBh6PvnkE3j58mUmaAAAvHjxAv76r/8a7t27B0+ePIE/+qM/gvv378Pf/Jt/E77yla/Ay5cvYTQaZXEePXoEP/rRjzJnLEBqsJhOp3B8fFw4aosfu4Xl2BXGhcyZTwhaZ9UG7nQ6hY8//njtPRW+oijK7kiix0tQ5QV3P+NEliQJTKfTNWPdn/7pn8Kf/dmfwb/8l/8S7ty5A5/73OeyY4kxbL/fL8TBnRv7+/vqQLKiqvJ8FeEzCKPyg0ZMalTHYzrwGOqqdOwKqLG5ShoAurORog4jLDfwl4nP6ZHSbxLU8F9H/e8KP77BDaqiLI/Y1jjgxvrZbJYdW6rdd0h3X0rOEo1vlpW9tHmPyjFa2aS7DkMcDRK/riJ/WPuHqz9EUZTdFU8NB1pYACgYRTk9s9nM3DZljKpWoI6B8oqvnul1JLRt8Bg+vkOWz53c6cTLH7LquGqdcHn88vISLi4uCkYeSivezzydTrOrXngYuvgyBDhufONLilcmL4qySjsPrx1DGkURHB4ewuHhITx48ACePn0K5+fnqtGMy8uYBl3ciPHpqUIoj2+Kp2sGfsnQ54svjXG+SOIGbza4o5/PtSF6pmWco+6K42o4HGb879NPP4UXL15kuwt98/kNmgXamMo6YuvmmdK8FDJXobxVN02ubwcHB7C/vw/D4RAA0jve+WmCCDrX4ZjAeWg6ncJwOIS3334bDg4OoNvtQhRF2eYZvuv2BtcDlv5dxRbepB5QF+I4hjt37sDt27fhc5/7HHz00Ufw/vvvQ5IksL+/ny10QPA5jcrkPJzmjN0kbu6K3RysbVvW6SvZn2lY3r+aPNGgjvnXsoChCrQTsFBGrIK6bNtVId4ZSyEdLRtF6Z0GcRxDp9PJ4vV6PTg6OioIB1EUwfPnz2EwGMC9e/cKFZokCfz85z/PmORsNoPvf//78OmnnwJAKpA8efLEWwhUDHq9XuEoBc5seTldFe8yEmjxNUWYh5dWEISsrtAgHWPiuj+UtgVv416vV1hJlCQJ/OxnP8viT6dT+OSTT6DdbsOtW7fgrbfegj/4gz+An//85wVHMc0HhcKqTsKyBl5KUxXHWN0DVlo1Y53suSJMnfESeH/ylclCjyTQcAO4FFbLS6LV975OB62v3ssYIDVeESLQuepjE5MI5hNKe1VnhsWRwePc4AabRJm5ocy4pY5CblDn4Xgc6btklNfmIZ/zVfqNDgqfMlGFH1Zx6HAnnY++KoZfTq+rjqX0JAdSVQfiaDSC9957L7tbCe/soyfcNGl0wLTn83lQWTqdDhwdHWXH8dJ7dF2yis8hWwdCnGKULv5b6hMhyj9deDmbzeDy8jKT2SeTSWHRZSi9NB/tnYsH0fw0XuTLR/pG+SP+brfb0Ol0st1G+B0XmfE+QYELVheLBdy5cwf29vbg7OwMLi8v4eOPP4aLi4ssrGYYCJkb6hxrrrR87YEnYqERH48IK8OnfcAjaanu3rShs2kZcdcN12WBd1HTvh46R9Axv1wuYTgcZndkas4iXPxwcnICk8kkG8cUTennodh2/k2D8ldpAcou933rIhWXbCDZkixlposZMXy/34fBYFCIf3JyAj/4wQ/gk08+AYD8eFieL/LmdrsN9+/fh3fffRdOTk7g1atX2e7xy8vLNZqrOOVusDvwOXS0bzyMpldIstAujG0cb1EUwdHREfR6Peh0OjAYDOCtt97KNgAhqFyhOVoleZSGcdEiQbKJ0vdSWJ6epMdseo5rOp+y6bv0uzphmQNC2kzqX1zvkU772JSNF+m0QtKbLPqc9O7Ro0ewt7dXkO3G4zG8ePEiOwUU0+d/ZaDZCeqw/5fhk+rOWIR0aTf+RiUXv+O9H5zgTz/9FPr9Pty5c2ftqLH3338f3n//fYiiCBaLBfz4xz/ODEJ37tyBz3zmM076MB90xqLiTOFTSstCMpZpTibakbQ7vFyKvIVe7Ux/KQ0c9PhM4+FOGUwTIO0H77//fnac2nK5hMvLS9jf34ejoyN48OABPHjwAIbDYcEZS8uKyj06eUOMqFWMHFI+XIguw4CsYZsy+KHQZBW0NaMvfqMow3C0vk/Duurb2hb0OHItP9d76nCQBC9pEikrBIUYY+sQdEOMZSFKtKtey+S1bTQl1FYxVm5S4CoDqgS5wryJ0HhhCL+z9pmqwqBvfuAGI+5cClGE+DGe9L/Gg335YFyepsWQJsW15MfD87T4s2SkDGk3nzGFtpFFIdHKNh6P4Ze//GUmu6NzCe8bDZm/XPn4aNKOTtbQ6XTgzp07MJ/PYTQawXA4VB05vjm+CuqYR0LqzjpHcD49m81gOBzC8+fPod1uZwtmsY1dx5M3BZ9hgoP2d5oG3w3PZT3UU+m1Nho/k+oXx8Lx8TEcHx9nR6Q+f/684KREXudrR99c4foewqekudrV17AfJEmS1VWv18uOx26qT1Cn7y7eSdcUtDbYBYO3BLQToO4eor/zdDAuOmNxl6tr5x6eCBZFUWZ3KrNjJER3tOo2uy671w3J9iDB9X2T9VUmL0nGlNL1yWqYFtrc6CYIvIMZbRpJksDZ2Rl8+9vfzvo2Lgji463T6WTH8N+9exc+97nPwWAwgDiO4a//+q/hvffeA4D1zR9vUj99E+HT0RFSP0B77bZkwhBEUQS3bt2C/f19AIDsJE3qg8A5azqdirIi/00h6av8O9eNtXCcbuk3D6PJB01gF2WOTdPkajeXbVt7L80frvkB/1ttSU3ZgULSs/gANL2Gh7l//z7cvXu38P7k5AQ++eSTNV4kXallgWXsheikvjxC4HXGAsgKAgrk4/FY/MYxm83g5z//eRb2/fffhx/+8IcZ8b/xG78B9+/fhy9/+ctweXkJ7733HlxeXsJ3v/tduLi4yBx9o9Eo69SXl5fQbrfh4OAgSxfPjaf317pgYXhVDOwWWJR3i3ERf0uTqG8Q0QuiUfmOoggGg0EW/he/+AW8ePECvvSlL0G3282Onn769GmWDq7Ew3xHo1HWJiiM7qLisos0aXAZj/DIIAD/sY6udAHCmTWdLMoq6hjeNflFUVQwqklMmTsUQsoSegddXXAZYiz9M9S5UAZSHrtsQLpBfbhpYx04LiwCooW/aDKHFI8aclyQeAg6Eaix3UdbnSukrfOuxajncn665oKyhosqcDmTQ+JLc7aPVpTtOp0OjMdj+O53v1s4LhdPL2nSAaOBlovnzft5HMfZEcUAab/kR/XS8Vi1z3LDi9UpVhcwPzyNCHUwbbxSemezGSwWC/j+978PURTBcDiE5XJZ+mjjNwG4O5Q6WutMG0A2+GFb0rypMZ/2vZB2K9vGyCuWy2Xt9YAOhRuk2FUZqym65vM5vHjxIkt/sVhkxvTlcpn9fv78eWab8B2dHbp4oQrKzt/XAXS3CkD9NpRNyWmbaDdOV6fTyebeVqsFT58+hdPTU3j58iU8f/4cAIpHM2oy97179+AP/uAP4M6dO9l9sdPpNJN7BoNBdnVVk0dd3mD3UMdYpH1mV2RESd7FRZkff/wxzOdzePbsGQyHQxiPxzCbzWA2mxXuILeWxWpzszh3Q9Pflfp+k1C2X4T4keqg56r0Dale2u125lei4bQ70mlZrSethdBUduxa0g6ByRmL4E4fXHVCCeEVhXEWi0V2mTZHFEXwuc99Dm7fvg1HR0dZo0wmk2wl5P7+Pszn8+xI4yRJsmN59/b2CkYcPPJIopvn6ypjXbCsdnDFtUBa8cPz43RwAwCdWNBQQ4+9PTk5geFwCE+ePIE4jiGKIpjP5zAcDjMHGd4njIMG26jf7zuNvGUc3nUOHL7KqSm4Vo5YjCy++uEKki9vK1zG7CrCR2i7837MFx/Q99qYcNWtplxLzuWm+gqvExcdFgcMj2dBiJNk20YI35ii/0PqY1Pzw1WBZaw2PTZ2FaHjsMxiFc0Bh+9cfM03J9AjXiV6pXihi100Gq3zVWifCumvWvq0vSxOgxAaLc54SzxfGfg3/N9ut2GxWGTH4eE7dHLWKZOF9nHpvdbvtW9VZQ0fXVXnvlBnLpYzjuPMKeda2EHbG3fBjkaj7DseDyvlZaG9rHGhbL/XeAeXmyUehnUVOj5Rp6HOUM2oZ+0PFr7p4tlNyFsaHdjPaH+zyoUA8jzCZXRX3922bPmmwzp3ApTjIbgzFuOjzQHHFva74XAYNCdiepvQ6d9ESHoVtyM1gapyhDWcVI4yMjvG4zIangaA/09OTuDy8hJevXoF5+fnWR70Lndev2gX/epXvwqtVis7FZAu0kKnL6e/TDlusBsImX+rpM/lm21Ak/kBijZvvE7x4uIChsMhfPDBBxnt/LRMSa6mcOm8IeF933YJ26IzhP9YZWsXqpazrM6jgdJrsbnUBZetQ0Id7YTpt1qt7C5zDI8LX2lY6TpLfB9Ki6tOy8itUjo8n9C51eyMlRgRHp/Bj96I4xjiOF5bWR/HsViZSZLAt7/9bfje974HAPkRuJ1OZ23bMtJAG3IymWTP7XY7O2J3G7A0gMbUrQZVX4fEeqYdTZtA+Hs6IFarVXaXCwp0s9kM/uIv/iKLh6tVHz16BJ/97GfhnXfegQcPHsBPfvITOD09zdJCgwaAvHN6V7AN5S3EqMfbje4KocY5fM/HnGas4mnjX5WjAELqkdPFlRdXWpT3YH+sqmQ0oaQ07aiSDJJ1pWd5v6u4KnTe4HqD8lTf+NQcr3Re54bssuMS05PSQtC8rDsiNL5NZQdMW6Kbz3UuZy7OcavVKqOVO6x8ZZTo5/8tjiTNOWrJT4ur5aXBZxzFfpgkSWHx3C4D+wuWaTQaBcsn1raU4tUpE1RJi55+Yu0vuwSNT4U44DS+SNNBufD8/DwzyJ2ennqP3+NjBvO6desW3Lt3D54/fw7z+RwuLy9huVxCt9ttbPy4dDgLOB+g/dhV/3hE8d27d2G5XMKzZ8+CaPYBeT4ursZ33W630L/rxI3joR7UZdDEo4ZRntB2RrRaLRgMBpAkSXbaGbUhcHmibDtzuxLKEYvFonLa1x3W+bFM/Vl3znM+Z4FVPqujz6N8miRJZoz+whe+AHt7e/CXf/mX2VULq9UK+v1+5mCi9pwkyRdWHR8fw+HhISyXSzg/P4ePP/44O+YbbbLT6TSzw+6Cc+0GzaIqf6J2wl3G4eFhtglrPp/DrVu3ssUNq9UKJpOJuSyuay4khOgCN/PFm4Ey+iG3RYT4jrYJn7M19N3du3fh1q1bBb/ddDqFn/3sZzCZTGp3Qu9CHUoI2hkLsN7pqEHNYiCi/ynOzs6yu2JpXvP53CtsU+OgZHyyGMEsDaQNuND8JGhGFSlPycimGRQko4XmmOV0oODInXmXl5dryvL+/n6mWON9Q7RN6FFblL5Nw+IIr9ORRX/7jKvWvsudpppRxUKfy1iOv13jo4zhv27wFTUhTgnN8EbT4++rGBFDwmn5udKUDPouo7yUDx2nFkes1akRoqxLvO1GsH0zcdWc/xRS362rH0vORZfwK4WlcSy0otGUygQ8nEt+4W0ZKndpafFy+GQcba6t0se0OTw0DQllFT2LQxeNfU0eY+eiQyub6z0a8bEfhtR5FcdqaPtqfbcqysyJ2M5Nzaeu9ELykurMKrvwuEmSZAbqOI4Lyr2PZ/C00cCNRnV0Gvrkq7pkZ04zPrvCciOPVTbE99oxwha5UKOJAo+h5f2yzr5pmXub4NkaDZb03gRZl5aRLvaS6pMfzy2lgXFd+otlHqLjRpMx3iRY6tKlH0thysJnr8Dnsu0UEk/ipa506R9fNH56eprtiI3jGPr9/lpeNG6SJNl1BcPhEE5PT7PjjVE24qcZuGwZbwK/uYHbVr2Lejbvn8iTcdMVbghD+zLeD0tP9nGhrF5eh7ygzWVV7bch2MU2p2iCL2n1v6t1UAa7ys/xVCdKH73yErFareDi4sJ01agFZWSCTfePYGesBLxfSnrPgatfOWaz2dqOyel0WjhCDQULfpQa7s7F44nxXtkmhGcudHFDUBP331BBSku/ivDpMnpFUbR2VxAOKHr0w7NnzwrHUMdxDAcHBwCQ1tF4PIZWqwW9Xi/rA3ikCs3vTUadSnjIXQ90nLiMFUliO6qRpqulIxlctPJTgxGPSw2MUpm5Ya4s3Rqu0wReBlfByPSmGlGuC/Ckjfl8vvP3HrkMV6GOE8mAUkV5lBY40Lx86c7nc+h2u3D79m2YTqdwcXGxZkAPcbJSUJ5etY1DVndTuSqKoiDHHjdqac7sEDqkd5vgme12GzqdztqRXpuAJKu7DOoUy+UyuyONLgCksgKF7zqPUFjvpLWWR0NVBzLGRd0L2/g6zYuSY3W1WsFwOITRaATn5+drRz76nKjUqHdxcQHtdhsuLy9hPB5n70N5xjZkIBdflnj3crlcO/ayDuD4m8/n0Ov14Ktf/SoMBgPY29uDp0+fwg9/+EPodDqZfrjr870VIeP3TdCDqTyDd2dqSJJ8N+A2QJ1oAM3YeK4SOL9rqr+GystVUaV/WfKnvAwdRn/xF3+R2ccoHbS/4xGOko307OwM/tt/+2/w6tUreP/997N+yu2x12mev8GbCWmMnZ+fw3Q6hV/96lcF+cXV3138W5PTd238vAkLtuosn6Zfb8seuSu0VIFrTEjf2u02HB8frx1JrNXHcrlcuwbVh7r1+6YgtXcpZyw3ErkMSRq4k4TeTcOJ5GdHS4ZJmq8vb8lQSn9zBV0yXPqUeA6fk4u/s6zu9CkwVkgdwxUfw9JjhdApjoI6ruxDxy22K083ZIABVDfUbgpllRVtbGmOy7KGPQ7X6lKrUZinKwk9Es2+BQFS+i7HrdbHqhpDXfTwZ1/7bQMh5beEKVOmXRKALChLb9l4u75SEaC5Pq2VnRrOLWlY5uUmDUhl207iGRa+Y0GIs0Dru9Q41G63od/vZwZ7dISFyl4aDVpYV9/jjrgQOqqMN19+vO0kh2FIv3E5LX1tx+nxoazzPxSW9uIyyWKxyP54uevkn2VlLYu84ssTsek50yLruXSakLTKIKQ+cVxouoPUbyQeNJlMYDgcwmQygel06sxPg2+O85VD+u1bBBCKKIqynVu40AH/QvLQeDQdS71eD/r9PgwGg+zYWrxHcdeus6nSj3dB/m8KdfFan3FPs81UWaSizZkhsgQNf90RYtvyfasjbymvELscf++TnVz5hgCPIJ7NZtnVGlIfl9Lu9XrQ6/UyGWg8HsNoNPLeq3yD64m6xthV6TvY72ezGcznc5jNZtlR3ChfaA5XiUeE2Fya0jF8NEj236p2hl2GS/cpI1+73rniWPqGVQ/ywaK7V4WmQ7gQai+Q0sXF3ugPSpL0ZAeU8y8vLzOacHGSdJ0M15O0uZu3mzZeLGVrgi9K+dayMzY00/l8nu12QeBq2MFgsMZIJ5NJdoQHBQ/HV6m7KloKaxHsJSMJKq88XR8d2EGknQi8fiS6Mf0QRqExF8lIqKWB9PX7/ewbOsyn0ynM5/PsHt/9/X1otVqwt7cHy+VS3EHtAg5ihLQ6sEnU7TyqYqznoEek0RUhIc62UAMhzdMHdMDz9pJ2sroMNzQeXZiB/QLTwftxOc1o4MFnKZ9dwLbo0AQAn5JNJ7oqhuZdRZn54AbNAfncLi7ICekHIXMApulTMkIM4hL4/EHzkRTbvb09OD4+hpcvX8KrV68Kqx2rzD+hhjRMI8QZyu9Vp3ORtoAIw0nOU5yPrEZJyjeroqrjFcPi6Ta7yM8ojQhU4Kg8QGVRGrdKeVxzHH3GRYiWI10taMqIvQs7YnfZ6CfxCmz7k5MTGA6HcHl5CYvFwsnvQgz8XJ+k/Z33u5C6K9uHsNyr1QpevXoFSZIUeINFd9DkedQJXHE7nQ7s7e2tnZx0g+sFi1PVos/ysWTRWywGWOk9l8feZCD/a8pBQdPk6fL658dcW2QyDNsEfHIHzsN4pRfyemkHOJ2HWq0WPHz4EPr9fsF2qJV5l+daH3ZRFr3BOjbRTrwfD4dDGI/HMJlMCjICv3c8xMHqktM0eaaKQ/Smb8tool6a4oN10Lpph2DVtELjt1otOD4+LozNKIrg8PAQHj58CB999BF89NFHWdrD4TC7AsYF6xjSTvbZtRNOanHGulabaGEkox+G45WEd/XQMD5G6FsBwJ0JljLx9KUyaXlIabsQx/HazlOA4j2uWj6SkiO1h9VoJ022KAhi22C74X1ymCY90iZJksxhZjWoo5CJwjb2jdB7wqR0kUaEpR9XycuVjytOKA08fUt+vvylPhXqUKC/JSNLyJiTwuGz5LCR6tMyNrU8LPS6aK9rArYoXjxMmf60CaXONxZ9kNrGl07IPMLTa8rwgJCMvXXnaXGG+fhXXcq/xK+wv1Jnn2Skpmlo9Lja2mJgrhNSv6RztbUeJdlDqhstTV5uS94om/R6vTXll8NiGA35rrWTlaf7xhKtO8nxQOvbosS78rcgRGl31ZcvHg27KX5fFWUci9rYoN8tkNr+KtTbrtPngkt2scgLVduHGsVdOmWZPKR5OFRelMJKczfKxpZ+z/V0zv9csoCUNi4ynkwm0O124cmTJ7C/vw/dbhfOzs6Cy7pNXOWxtG1osqPU5y3jNkRG1gzrWvw33XDukqlC586qeh1Pi9Lhs2Fpafh0Ahe08lj7C71Sw2WvSZJ8odd4PM7u0kNeijuLQrDrfXrX6dsW6qqXXUvHB00G4ZuWfHbcEN4j6YBl0vHlgek1WZc+2WzbcOllVpTRfy12U2me8NkYQ3wsV20savlqNhXpirHhcAgnJyfZggr849eT8Hr29ZOqdV5XHYbKBI3vjEVIxivukKGdl4bX7pmVlEqepwYU3vj9YlYnSShjtnYQBBo7eRq4WpjvpvVNNj4jFIdkfKTv8QirOI5hMBhkkyKfHHFFNQBkd8b67gKieeEKbdwhi8ZfPN7FVeYy2KXJyYImHUI4RrAdqMKAu4ssoIsrXAZfyZHiYmj8G90hS595vjStsoYzH2+pmkddsDplLOlobdFk+Zqsv20JLlahG/kpX9l11XhUVdA5ZbVawXw+N8/X2jxN2wD5TNOKUJU8XI5ULTw3ZvKxRMvto4uGRdlkb28vO52AG+0RPrkkZHWiNAYsCmaIIo5lwP5mkdvoSQ/UaIbfrHlzaO1i7UMuh5Fl3Gybz/icXigDl1nhSuuBz9eSbCrNo/iHbb7t+to1hPK7UGO61WHJ26qMzrcp0HKGnELjS4/yf5fRv27wtLvdLnQ6Hbi8vITBYADf+MY34PDwEFarFVxcXDRGRwiNN9ge6hiTZdPgcgKdB274+zp8ctUm+GoUyUeScluiL41QB01dWCwWzjmMyvAok758+VKUcaW5YpfmthvcoCpQfkHHTbvdLox/yadQ1Yla5xgKcQ5Z7fhvKix1UXbO1vTuUNnCp2/veluWoU+y649Go7W0JpNJtgATIL1HXToZomod7YItw4JKzljeMS1GL5/CjcfccqVUOlquDgFZMlByOi2NSe98oGlpg5E+02NKEFgHeIwJpw3fobEe752QIBliKR1cKXcp6dJAo0cPU8crlg0nzyRJ1tqW1wenFf9LR1ZpcULAja2bcP6EGkOsjr/QuK7v3JBvicvD8jHropf2Q80ginlK7aQ5HLT4VcH7nhZG4gdNgvcpjZ/Rb9o713tL3lXSQFgdMBzSuK4DZQRkaxxaviiKMmcDvY+zaaHC0lZNG3N96XU6nex4UkkOcPUTapDvdrvZIi+cxywnNviERWwnnyJYh6BL30k8W6oX6R2Fxh+wnqfTqXdHrI9urc6k76GGMq40Wfiuaxe6T5FytalVYdTmNAt4XVnqyzXvW8sdipB21PqoVE8h/Jf2Bxf/vQrKm1We0MJULWOVfhIyv4TQECpTW+Vn5Hv0juKyCB3j2twvyaBSei7eyuNzoL6m8ahQYBr4R++NsugJVWCV063xbrB5SDKMK6zL7uLSa31j6k1FmfnGFcfXHr525vM4vds6pN1cuoIUpk6d0gXa3zl/xIWQ2pHMTelnN2gWm7BBXjdoJ0ZyhOqSEkLmIFe6Fr3SpzdfB7j4lnXu0N6XGUvWPK38tqweXbWfVU0rpK9pdiRpnoyiKPN5jUaj7L12nLBGi69etVOMKE1N6cZl0NjO2LJMYzKZqN+40RUrVbtXxmUIpfFp47nCcnDjeZIka7RoSj9NH4/gpbtd5/N5dreudGwzXw3EV1FbjG3ScyjwrjGaHv3jzlgso4VBUbr4GeKdTkcd7BzW8oU6GVyG7BA6yiiIIXT6aLEa9Xh8iRbJMMzvc5FAw9C4PA5vc04HH5NSnhbjVV3QDMehfYfGDYXGg1wTnDZ5uya2OoWGuoXOphXTsmNIAo6F6XQKSZJkjq9NCgiWeaFsf6yCKIqyo/DpqnKJXq2vJkmSnbawt7eXfccFP5YySf3UpzyFGBCtBmLrPE/TdtHjMmBimnjEpEZ/WaeW695WDZLyLckEGr/leZZRfnm7S4sDrMY7i3JgUUzK8FFtDi8751jmGx7H9RwCre9JdPG5jo6/MvMbldW0fmdpn23w16YR2qYuOcklw9YhG/P/k8lkTf6U5DsJPnos77W8fH2ojKyPYfA4TP5N42ecJokH0HfojAVo7g4ni5zrap8qMqk1zq6P9Sq00X4bUpehY0ULy3VFH//lMgwtRxkarhss8ofvvRbGx0u19kBY7pqzgM7/Lhp4eFcYC1wyOrdb4L2xfDOEpLvjb43HNq0f38ANTVb26ZQ3SME3M0l15NrgocXh4aR2CdERokjeyS/Rw9s+VJ/2YRfGOte1+Dctjs82oukIPlpC8iiDqjqxK12JV5RJqyykOUay/cdxDJ1OByaTScEZy/1a1vxc36WFWdzXsCn4+PjGjim2wjUIqt4TaskboLoRCOEqh8VYiO8pc6aGPh7HdfyWJli6jAdl6gPppUZtq1GMIo5j6Pf7sFgsRAc93leLTllMU7pPsAlBs6l+6JsEuEBA45VJT0qXvuNpVQWm0W63s1WstL/w+x8Q/Ax53rfpmKALE8q0U0gb1JGeNV1fntzoULWPWgxVdWLXDVIh4AZby7Hs7XY7W7ySJAl0Op2Cso31U+Xo07qxiTabz+ewXC6h0+lAq9UqrKDT5kIXfHNt6NiWjI08Pc14HQKfccpnYKRxOJ2u3QRSvovFAobDYaFvUrkG/0vvOLA/W3iWJl9ZFSkMhwI5ttHdu3eh1+vBZDKBxWKxdgcXLQNPmyohvjamJ6hwHsHLZAXn96H9t8r3uuPVkQ9V7uvkjzQ9vvhRaz9sb0qn9YqHptpml+Az4ocYLzSDjmbc0tKgaVGZFOcdPKnCZwAp235lxnEZuOqeGx3xnes0qrJjbTqdwieffAKnp6cAkNazdMfUdcZVGct1yXu+dMrkY5lDffJiiFF927L3NrEJndCVh2arsNCDvMzHX6Q2dsmyVO6oEzy9brfrtG9I8r1V/3jT+/WmcVX4/i6Byl14XDEHt5FYeYjV/hYq82l8Q7ONc5rr7ie7MMYlG33V9Oqsp6vEC616TZP5SXUvzbG4gY+e6CC1naU9m7B5YJhNt30tzthNKY80Lw1W46T0PUSYl/KTnn1OUF+e3FDqYuaSkdDH/H2TSlmhmw9CixGVQrsnmKdDnRO+42ksk6kWnsax9I8qY8FnEKftaqlLl1JhTdciRLggjTVq5OL3vdKw0iIMLX908FLDuMuATvMpUy4JlgnEx5PKpEvDuSZLXx7Wug6Fhf4mjOgSDVL71+HQKwssdxzHmZDC76Jsok4s/Kppw4tPCUKFS3LGhtBlmeu4guAzdlTlHRof5mn70giRWXxhLPxrsVjAeDzOFtFgP+V1SMviamdqXJJkB0lesioEWl50N+z+/j4MBgNotVownU5hOByWUrh9+fvm7dB5lvNLPudpyr6W564on1qfttIn9beyZXOlIxk6aVtofaIJo+11gWS4Cq0rOs58cxsfk3xsoixJF3r6VnDzdH16I0KTx63QZHgXndI7ngZ9R8dmVX6RJOlis7OzMxiPxwCQyvBVjoIuW2+7hl2iqS7ZxppHGXnUyusl3faGF9thkXHKzt2a/cyiz1p0JI2PSXn73mlzfp2Q+qd0Wp4WV5JPpHBvKrYph9VhV/PhusmZfMxKtnGpTjlvcNWJz1YawsfKyP4SrVVsMLvU/pwWq03Qkp5v/rfaBkLjWKH1hSZRd38JtSVJ75OkeIKspk9peoiWV8g4ddndmgKnlee3cztjtwXayNL9r6HplDGo4q4oitlsBovFAnq9nioYdrtdaLfb2Q4iDXxSchkVqq5KtggB2rZ0dM4Nh0OI4xiOjo6ybwcHB9Dr9bJwL1++dJb5usJq3Gkq3RDhQGK80qTHFQ7sq7gTgTqlfOXFsJgXn6jRiVC13iz1gPlseqW/psRWSQ9gt4xEZVF33Uig/TQkP+z74/EYer0efOMb3wAAgFevXsHp6Sl8/PHHZoW8LL2bhNXwtlgssrtirbvLENIRuL1eDw4PD6Hb7UKr1YLj42OYzWbw4YcfwmKxyI5PlOZy6uzytXEThhqXQ80KLuz6HBjIw4bDIUwmE7i8vMyuUqCyBU2XLijQ+C3OD8jn8T4RyQlG7yGnjltJeXU5U30KB72vmX8rwwf5QrEqc4/UnyxGSJ4GNdbtIiw802pgwe9lnTQ+477EG27w5kEbU65+6lLS+Vi3jglpbqg65ml8rkdSSM8YFvkq8thnz55Br9crlAnvqS0rL+8qP7uBDkuf1sLwo/C4XKbNl3EcwzvvvAO9Xi+Taz766COIovQ+Tu0ktuvI2606qmts0RNOeN1pertPn5dokvQevmC1aR7QZPpaffB+jnxSit/pdKDdbmdXugyHQ/VEPlpnbxrv3LXyNmWzuW7g5ZLum+d6J+dHZerGtckoBFYH4w3KoYr8uAu4jjIGAGR2d7StAZSzoyC0saLZ7HzhNwFNlt2qM9Zl9HPFKZNPKEImRd7wIQIhN15K33EnkObFRwMmvXPWSncVY5zL2InfXe0rOYOpwo9HEdMdsnt7e9k9f4vFAs7PzzOHtcVAoLWVVC5fGrsEn1EyhHafcuQKJ+WjGZtoP/DlxRdIWMaYFobXQd0OlCq0WdJFWOLS+tba3tUedfV1XxuEoMz41CZnn5FUmwe0fu7ifZZ+mCRJYcdeFEVw9+7drP9TJ2HdKMvvNuHQoUaZMtcVuMLjHRa9Xm/NAYu/rTzVJTeEOI5oeK3fWJxPPF8pf5/zgMfBncqagyC0P1AZiMoE2iIrbjzS5n2LDEfzxbyxr1nqpM5+WDZNH6h8qZWh6vi11HOZuHXOG1I6ITxOo0mKbzVs+sbmm4AyBkhJvvTJLTScJp+G5G+RW13wyRacthB9UtMrXbJvSH8tO2ZxMRX+Pjk5gW63C8PhEKbT6VqYEITwsZA2b4oHaShDm29uCqkXX9g65T1XWa31wI3tUh/X6MUTMegiP34M+XUHlbmonG3VL/lvqe60tvHZinhYTW7l9jEr/a68LOltq38kSVLQgyR7YLvdzq66wTAu+8yb0t8lbEKHpbDwWPrfEofHv65yJJVvpG80jAtWvVdLxyfja99cPFCLW+e43NUx7tPFpPrRbG5V5LuysOqQV3FcWu0WIbqPJf0QPc03X2t6lSVvV7rSO02vcy0QuNkZC7kgR41yALkDSArPf1sbXgJ1SGqG5sViIebBaQ5N33U8bB1Mu4yCTGnpdDrQ7XbFuwHiOIbHjx/DaDSC999/v3Cnk3b36FWFZFDl/TBJkuDdcjRdixJWVUigYw0N3/RoVjTy83LQdzQNXmarAknvrJWUPEs5rPltE7SvhPQPTZgtOylXOW2gKsq2VR1tG8L/FosFLJdL2N/fh06nU7jcvtvtwuPHjzPj0SeffALPnz/P7pl9E04H4E5ACTiWpZ2VAEWjzenpKVxcXMDdu3fh4OAA9vb2RGFJ6j+8P4c6AasCjTFU+bTGQ1DZwSLIcjmCni4gLZYJHT/oFB8MBjAej2E4HKp08zJJSplL6cW6a7fb0Gq1YDAYZIu8mjBklFUU6PdWq+VdiKAp9pLRlMsRmrHRZfxoCpriTb9TWSFEZqGnZvhAFaiqdRDKF3bNoNYUPb4+G1pnPF2sd20+sBqBsJ/RfqfNAXXDYhjw8V4q59P+7zJKhhq1tHbD3+PxOAszGo3gP/yH/wDL5RJOTk6yUxbK1uMujZVtoor84ZoD6oSPX/v6uzbHAxTtNlznwBNlZrOZc+dr3brKtni5j+d1u13odrswn8/XFvNbaebj3mePsqRHaXAhZPdTGT1fQ1PyvUWP0MqcJOmOWPxDXoqyEvL8benhu4xNjU1JDtdQpY3elLlQsjPRb1o9WOpH08Ms2DXZ/bqgSr3uSpvsCh1NQht7Ze5yxrBWuPS4qv4LK8rI4LU6Y0M7mUtI1NIu04mrdP4yHaNKHIsThCu7NK7mQHYJeZpBt6xS5zKcckg7UNCRisoSCpJoGFsul/Dw4UPo9/sAkBrV33//fSetFuVOisOVPyt8Bk6JBhcsSqgFrvGlwWXc4fF8dEkGGtd3qY9zumgYF8PlaVgUs7oEsqrpWOJZ2oIqZDQ9yVhpMYZK/TykP28bZZRzK3+T+qeWDx/f1HB6enoKh4eHcOfOHVitVjAej+Hk5ERswyaxiTzKwMWb6THlSVJcTY47IdDJG1o2n9GwzHwUCst8YGk3HsZn0G8CKL90Oh2YzWbeOZfzfembJW4URTCdTjP5IoqibAEYD+eiXcvX5ySRvmk831VW2s95PI1my7xH6ZfSsMDa37W5iOdHy4xH8YXSF9JnLPRL6Un8n4evYjCyoC7l39J3XfIXXksiOUGkvkjfuerKpTNJY8qnkGsyEP3N+5u1fikfsfBbLQ0Orf/zMFIaknzi+26hSeNV+A53xi6XS7i4uFDTaRK7KM/sGiS7QF1pVUnHN2dS0LC0H9OF29xQyNO0yPouercBjdfhOMQFyfwKoDLjgvNNi/4o0YjvQviZKx/NviWl59J/tXnCJ3uXhU9e5M8YHo8njuNYPDXOlc4NmodmK7lpi3VI8n7TCGkHC12hfKwqQmjxycJlIPEt17MmD/M0y+hgVhqs6TTd/+q0C4WiTrkuZP4vS0uVvuvqa3VB06G0/Da2M9ansAPozhT8VhZlDUZaZ5JWl/nysE66UZTfHUtXwOFqbGnHJ9KCigXerSflw3cX+kDpLnMGu6tepMvXcZdKkiQwGo1gPp/D+fk5DAYDGAwGMJvNAADgH/yDfwBf/vKXAQDgJz/5Cfyv//W/go9pDqF9W8qUC5KgUlc/1OLxuxetKy2l8eIyBPN7ZtFQL/Vrl7FY2vnNy1VF0AutwzqESovhLlQxpQYyrGvMh7d9GVr5jmc+GWpl2gUFpaxxgvZ5qdzSfMfrYDQawX//7/8dnjx5Av/wH/5D2NvbgyiK4OXLl4VwvqNd60LZughFiCECIfG/fr+f7biczWZwenpaaBPrThytj25yd5SLNgvfdxljsO5Q7kiS9fu2LeNTk90shsxWqwXtdhu63S5MJhNnefg4KnMSBrbbYrGAX/ziFxDHMTx69AharRbcvXsXxuMxvHr1KqNLKpeWplRm/kzlH76bpwykPmhVOix9yEpDXWPAklan04H9/X0Yj8cwmUxM49lnyA8tAx//dKzRb9b5s846RJqahEVOTpIkOzZxPB4XdtVL/ZLKtpLsKLWdpI9J8TldGs38PfKY6XRaaO+Q02h8Dh+JBgs/oH3LJeMjX9e+0/e83mhdle1TNL3VagUXFxeZzrdcLmE+n5dKtwwdu6jTlUXdcplVx2iiDn3zlPSOyi0u+xEuCMF3e3t7sL+/D7PZrHAdkpa3lVf4wm8TtL5w3sR67XQ6wX3JdzIFgK1/8nQ4f+TfOC/x2eOwPZq4S7Bu+V/i265TgfB7q9WCXq8H3W4XWq0WvHr1KmvfXeyLoahSjl2rgyrOhCrYxTp0yYA8b8tJkvwOaVe6PjpCgfRJNITKi3VjE/abEH+LS4e20rkLNsIbpHDZerhdH8NrYTX/WxW49P5QlOWDWrzanbGaUGJ1bG17svQZtFzxLIK6yyBKDYqS4IUCNE2XKscuJURibpow4CpHaOe1GNV5/aBTlRpAl8tldmznYrGAdrsNg8EAAADu3bsHf/AHfwCnp6dwcnKSKVwvXryAs7Oz0pOfqy9b6iFkUuLhLcoNxuX1V9cYcvWDMgyN11tIPPxPHbK+8SYpNL6wlnL56HalofHFMnmVVQAtSgBPWwvjc7SEtNEuC1VVBQMtnqXtFotFdn82NSYB5M7zqseyu/qSa4xUgatOLXlo8SmfQQcAHk93+/ZtmE6nMBwOs767WCxgOp1CHMdrR7VL/dNn7N6EDGPNg9aFtU5d8xs3xrvkPCvNLhmFhtGcF6F1gf/xjz8D6IZBnl9ZxZ6WJUSu8oWrMmdxBchn3JTS3VTfx3za7TYcHBzAYrGA8XicfeeGG26ADaEzRC6zhLPoSNcBtG+g3IbXrVBei/CVn/ZPOmbpM09H4xkWYP/h6Wq8j8tDrrHhGv9V5lmfPBaalkSPb07hZeFtwOsBjTTSKUlNoal86kg3RNbk8kaZ9pf6aYj8tS3wucqns0jjFeeM2Wy2tgDMpReF0LeLwHLgInd6Z7PPlsTTkOrdJ9Nb+7Y1HM/DJ6/UoWta0rLySYRPFpTsPbzvR1FU2O1M39Pfu6xva6gypnZpPPJ+usm2uEp1KI0xn00K/1t0kybqvc40m5hvdmEcaLyzzrqz8riqeV4XmaAMNB0If+P/0Dp26dxV5/Ay8TVdPZR/u9r/5s5YB1ydSGIiSSLfQ0WFHym91WoFcRwXnI9JkqwZK5IkEXd/otGg3W6rnVhaOWgxfkjlCFlZ6KoXGoZ26tFolBnZEJeXl9lRVr1er7CC+q233oJ/8S/+BTx9+hS+/e1vZ3T/6Z/+KXz66afZas864WP0mzQqSMYPrb5dzgJuZJHKKPUby6TnMqJZ6aR5S7uqtX7JDc1amNBy+RTOTcFXNgqXk4G/u26CwzaBfd7Cd0MManjE7mAwyO6OvYpKthXcII/vEJwX9Ho96PV6AJDej3Xr1i14+fIl/PznP8/ijEYjmEwmmWEOIHce8Lx5Ppa63vTcE8IPND7Lnf4U3EFR1aCAaaBB3ko3jeuSr3he1ICF5cdj3TSFXWp77dlaDyFKgSQPSgh1aGi8hs/RrvKHQupzrj7Lxzy202KxgH6/D/fv34fZbAbn5+dZ30V68ZQZlJtpWazjpIyDQyvHmwg8gWA2m8F4PIbBYAC9Xq+wI8s3hjTDvwV8gQ3+drUHX/hE+4rkSLbwHVeeLh4aIl+XhUsn4HqBCxoPdtGPTnqa3zYQMm/uIqrUnTSf0/e7DMkZhe/xnYTVagUvXryAbreb8Sb6bRMInQtD0pHAecndu3fhnXfegffeew+eP3+e1R8u7uQ7WbitQfrmu9feUhYu71h1Jksd+OS5bcIiv/E2kO76nU6n4ilmmk1n1+Hr31V1nk3iKsxvddZ3FYTyEarXcVTVU0NokBAyP+/CvLuJNrY66q4Cj5KwaV5TV35V0pF0o7rbuKzvJXRcSWk11Z43ztiS0BRkyVhMQY81lAR+TBedq5LAmyTr270BckHOMpDKCKOa8dBikPXRxAV4NODgN4rlcgn/6T/9J/jggw/g7/29vweHh4cAkB6xIx2bi8e34NEtPF+sSxftvLw+o4oLlr6jKZKa4hYifPC22IRiQmmxCkVan3HVva9eaXxqjJfotObroh/TdLUFzVei21ImTMM3SdFjiH1xXX2KP1sMhlZo/bFqP5XihwgJrj7Beb5mtPD1Z2yj1WqV8Ss8mh0Asjs1Hz9+DK1WCz766CM4Ozurbdy62txSZyGOKV53dQhsnL9cXl7CbDbLFvZI/RfnHtwZwNvO16Y+uGSCkHS0enLNEWWM+Fo/t+ZbVgYASOfj+XwuyjchTgENvv54eXmZ5TObzdRj1UPbM2TedtHnmkuq8gArLdq4teZvUXBcMgoFyom3b9+GTqcDFxcXziOuQ2UHjUbOs6lM4ZrLXWneoIimDVIhde+Tw8vmQ8eQdV7VZD8tHl+4yI302vjl+h6Xk61GFg4aBxdLuMrgS6OuMbRr4xPldK6vSOHoN4sxqi6DnYS6jd4WPQQAMnkZ78iUwklHRy6XS7i8vIT5fJ7ZHGj8JvlQXX3O1+bIM9AOcnx8DG+//fbaiTo4n0qLOjX5l//m9euTkXxyIZV5pPhSeCk/Cx/WvlntAT5eaoG1v9NvdDMGd87yutP4+S7DR19d8zF+b2LMW+qbz7musFXyrxq2zv4S2t+1E1Uo76lSfyFjN0TnkdLFtKseXdzE+K27jcvyRE3XLosy8knZvK3x6uQ3oWlZZBCtzlw2iDJj0GLfqxK/DCzytCUNX9jKzliX8QGJuIrwGYp9nVMyHPL/kjMW6xMdsVID4m4oHo/fs2kpo8twxI1MlrSkOFRZlBgrfqP1gTtV+HuA9NjOf/fv/h3cv38f/tbf+ltw7949AEidsRJQAet2u2u7X2azWeFIaE6nVlZfPVBozM5atxYaQtvbJQBxw2KV8e0yElkmZ0m40trIN8nSONYj8uoyLFSJzxm5qz1cYTAcb1c6brFepPyqGCR9KFPPFgO3pvi7hAqpX5YRqnwTsPYNF4j0ej3odDqFUwDQmPLkyRN48uQJjMfjzBnb1FyrzWNNKIxl4DIin5+fQ7vdhr29vbV4uPNpuVzCYrFQ76vT5qwQhPShTcHCR+i71WpVMA5LCqTUJyQ5Rhvvq9UKptOpaFDS5Acpf+m7b9fBarWC8/PzQnzJGSvlJ8FnQNPkP1/cEPB68+UjzbcuWNvVFU8zFlrSiaJ0F8+9e/fg4cOH8N5773nvG/bJ9BKdLt7nQxOGvasMl85xVfTGMvN6mTxov+PjQpMLpTpMkvwOcK4najumMF6TbaLpeBqq6kpV5nAf6qofOr/yq4ukRUo0nqSzSfr4tlBFDnLprAAA/X4f4jiG4XBYqCc6h6OTkeuCFxcXsFqtoNPpZIsh+dgro3PvAtD+geN8MBjAkydP4I//+I/hww8/hF/+8pdZ2DiOIY5jWCwWTvlEek/ryCVfaO9d+lyZunbpeBq2YTy35qfVDS7Q7ff7AADZlTaaDIzxblAErZO67D40PZ/OIj2/6e0UqqNquosm3/jqV7PRWnmSz855HXQDa71K9mdXX/fp+qE0NYGQfK7KWK5Sdxov47YiTa/Q9G0pHscm6leTBX00UD6gxa3sjL0qHawJuBRY6Z2LgS+XS5hOp9kdd5i+S/nS8gx1UGjpuYypUliJ2brCarQCAMznczg5OYFutwt7e3uwv78P3W4XLi8vsx1MHJ1OB27fvp2l/Xu/93vw7rvvwp//+Z/Ds2fPsuOPB4OB11Dqg6U+dgmWyU8CddS50qVMKqRuLcZWDEcN5FT5o2miMsl3V4UaIsoYbbTxTfMOUfbKCI+hKOswlCAd7crT4g6RshO/xHPKwsoPEb46q0oD9l26uGSxWGSOIuow36Yw30Q9VAXSg3fEolNPGoOaooWQHDDS/LYNXr/Juqd81ldnPj4rjVc6xywWCxiNRup1DC7Zqkp9cMOrtFjHqkRLDlyXTOabY62Q8qPtpfV7n7wooSlFmddJFOU716nxXEtjuVxmO5zQmYGGaKn9LOOY8lntKOuQMvryuy7A3TrL5RJmsxl8/vOfhwcPHsBPfvITODs7y46Pn81ma3OZpieUMZJK/MY650sOBp+MI+XZBCxyG+333W4XACBbdBTCz/F33eXa1rUKuya3cCyXS4jjGPb39zM+eHFxAbPZLONtlv5ohdS2TdRRE+PCpXfRuZX2d5yjT05OAKBYhyE62i7zcGkXcLfbhbfeegvefvttePLkCSwWC7i8vISPPvpITEMzriKszhLXe/q9jJ5lsSe54liwSb5eBniijCQrUewq/W8KQpwLbwpC+qSkK1EZpizv4XRouh63QVpp9vHRUFqvKqIoynQybfE7RUg9bxq7Stc24LOh+cJJ6YXyhTrAZUnOE5rk1zfHFHvgEj5dRsBQwy0aIumKNlf6PkdESBxN0AwVVl33lErpu7BarWA4HEKSJHBwcAD9fh/6/T5Mp9OCM3Y+n8NisYA4jqHT6cDh4WGW31e/+lV499134Qc/+AE8e/Ys2wXb7/eDaCkz+ELK7ArD0ymjQJQNW6Zv4fcyzNFaD/hHHS1USGq329nqZs3o6hsDljFoKU9Zxl02nqufSEZJS34WXhbqZC7DazQHQ0jfteZFw5Wd6F2KgUvwXywWEEVRdoc4OiQuLy8L94JvSxiUnJPbyNvVPjgX0SPoqXEO4eOvZfo4De9rI0sYiTdVqXuro43n7zL+SnIRp11ScGmZkGfjMYN1zNEhDkj63mqclfih5OTQHLRSHIkeV35WRV8zMEh5+r5b3oWCz72SPIm0cQMM/uHuMXSaojLv649aOUKVL6k9ffV13QykWG6UyXFMP3r0CL72ta/BBx98AC9fvoS9vT2IoqhwDL+UDsB6fVnnfGq8C5WHabwkSZyLAFzykTanhM7fZfUzjIfyhEaLJT1NdgmdUxB4KpFLf3gTjV64aLHX62UneIxGI1itVpkMiHUWsoMRv9G5pwx/2zYoHThPuGjTZKbLy8u1dGharrqJYy2/0Dqqq39HQIuXJABJssq+AaQL1u/evQv37t2D+/fvw+npKRweHqqnihWo3MA4dMnfHBY9ROJPofKzT27a5JjQ5gCcY5fLZamFBW8ytlFHrj5VxW50VWGRbSTbHD5XvadaykuTiTgdlBafzCqFq0pnFWyyn1E51LLJjOtSWt2GYpfknU2Pc6k8VWnw2Qo0G4yPrlDaLDKbj8+gzUCDtvDR108s5bhxxlYEVyRDYDmiSVoZgsdYSpMCQH2DK4QR8bDSwPAJwNJ9r0mSFHY6UJydncG/+lf/Ct599134Z//sn0Gv14MvfelLMBwOs7vDpOMO2+12lhYe+4lOXquBs07j47YEL6vxhSrvUr243vsQwoR535CO4kFlJI5j6Pf7MJvNCuOLGsdDDHRWo14VJwmlr6n0EU0IGSG8UOIxLkNn6Bipq560tEJocjl+tH4OADCZTDKD3GQygW9/+9vw4MEDePfdd9X0ut1uwaFVJ3g9bFtpdM1TSCvOG3gnGEDRAAcQflQi5pkkydriqU2N37Iok7drnsIy9/v9zNiPTrHVapU5WiT+KRngqUyDSrZEC87f+J2Hs9QzVxTos6seaB5SXq4xzeuSyneaDNUksN9zxXfTdCAtFNKR+RTooPjggw+ycT4ajbI6xdNmaFoUnJdZaaQKm3a3sYtu+m1TbbwNntNqtaDf72d19NZbb8Gv//qvw5/92Z9BFEXZosjRaCTKj8hfAWyLEvgzDxNqCMNxgbRQWXgTqLOPtFot6PV6EEVRdiSrxWjh4gV1zP3X2VnA73AMrS/c7Ya8TZrrmjDq7rojQBrvuPAjjuOsf9Mjnuk8hzIb/qbfrEb9O3d68M1vPoB2Gx2gOH9K9BafXcnTb0U7CA+TZO+ShMoi+fflMoH5fAnf+c4LODubZXYjmu54PIZXr16tzZMW3sDlJ5/8a9EXyvIkbf6gz2Xm+10Cyth0/C8WCxiPx8Fp7foYf5PxJrWN1TZCZW4+rvG71R7h0/Nc9GmOGpeu6rIlc1qabvtNyK+0rXBupnUxnU6d8juAXs/btp/cwAbs13zODbGx+XwwmCb9j79D7fo8vTrh6+uI2pyx2iDZpNFhE3A5DCxhJUZMBUduHNPSduXTpBPCAp8xSjLGahMSdTyjEoWK6Ww2g+985zswHA5hNpvBwcEB3Lp1CwAAptMpzOdzaLVasLe3BwcHBzAajdbyRwPyfD43GdEkGnm5tXAuY2tZJUVqe4mOsg4tGl/L09VPQsY/N4xrtFCDqKYM4nHf2H9C7qRyGaQtjJXSX3YsutrLUt8uGkP6uZaulmYoygqfnG9yGnj9Vy0rd9b4eKOVP7iAfK/b7cJyuYRnz55Bp9MpCLN8rsAxIR3zKpXHF8ZHv4+vhNS/K6z0zdIGKNSjIxYX6PCFHGXGq0+Q47yEPjcp9NGyhDqEtH7uaz88ElarA4SPr3F6NF4cWkYJ1rHMaSojb0l5SGUoI0NX7UvWfuOak13vfOm46HKVGfncxcVFNp5RjkM6tBXYlrmbhnUZgDU6pXYN4V91YVu6FxpikAfv7+/DnTt3sl1Y9JQHXzr0f9m5NaQeKN+j7RwCi8xukfvLtJ/EMzh/pmn75Cj8bZkLyugam8AmxwHVT8rWh2QLoN/o/6q0SmlL35qEVZbkz7hzmOuC/JnGo4uxARLo9XLjcRT5dfNbt7rwzjv70Om0CH+S6bSgyBOA/S46XvE5IU7YVL1N369W+f/5fAU//ekZTKfpPNjrtaDdTgBgDrPZEObzMSwWY4jjFfT7MXQ6EbRaEczncr3R32V0K97GLlmqyb6n0V6n/FIXkCZccEDvPeYnf1Stv03JJGVRhb6QuHXPX2Xte01gU3VYFRq/0RZWctq0Og2xidVdVotd0YWq9ITafHzxNFmcOlNxfgaQ77236s8h75vGLsq3AM3PTRYbgC9siE+gTD4hQL7C9fkqeYXY5ylqc8bu8gReJ7iAiuCGWVd8GodjsVjAarXKVnlK6bfbbTg4OID5fA6DxrVyAAEAAElEQVSTyWSNDlS662AYLnq5UM0NudLEaJnM6a7F2WwGr169yu6N3dvbg16vB2dnZ94z5weDAfR6Pfin//SfwqtXr+Bf/+t/Dc+fP8/uokXHbdNwGWLrSr9quhajdqjR22JgpvmHgMfH3YCI4+NjOD4+hiRJMkcW7S+aI0IyTFNod8/5sGv8EQVaLgyG8A2pX7t2DNWFXavLUIQ6fmazGbRaLeh0OvD06VP45JNPsu/z+Rx6vV7Wz+mcUYWGEGza+Ip50R1w3PhJ707iZe33+/Dw4UMYjUalVpVzWixGREnQa9rYZFX0rGWg4fm38XgMk8kE9vf31/qgZCyy0MR5lO+bZlgLrWerLNfpdLI+p+1G5/Uqld83t/L0JPCdwnXCJ7OhvFk3z/e1QbvdhiRJsl09lC9wWE7C0OR63n8xHS09yncsxqFdQt3GNloHeIUEXVR5FeZybHPka5Z2tNSjJG+6wmkyqStdS3gNFt5aBb4yXxdIuy3LtAmOH26U5rvHr2Ldcf7Kv0njBI283W4X4jiG4XCYLbzFOZmmIc0Lq9UKDg878Md//BgGg/j10cMRpEHzY39pc0VRBO12BAcHXYii4rcQ8GaSHLL5q9wBS8PS5/x7/rvXS+Bv/+3PwGKxeu28i6HXOwOA78P/9//9AsbjMTx8OIJbt/ZhNnsHVqsEJpMl/MVfvIDh0D2fb7Kf+Yybmh7vi6+lwb9p9GyiDqTy4DVe0m68OI7Nu/Q4mnA+1S1PbCPuJrCp8XTV6pDy7TqPI+bjvmy6LnnLqntfByDv4ZBOtXSlAUAXGdWvz96gXkj9l7e3Nm7rXlwQMoatfTI0XUt46ftOHVN81RkTp58ylhBhEu9O04yayPSk3U8hnabMKgffxMWNwJJy5aoPSaheLpewWCwyZxqPO51O4f3334c7d+7A8fFxdjcs5nvv3j3o9/vZiny8Y/YqGst8aMrY73IoW41ToflZw1DDJ/YZdF4BpI5BerwP9ilXOWjfLVNun/FMUxa54aHpPqnREeKQDZnUtHzrAK3zEPo5fLw6FFbnq5Y+Op/QMTubzbKw7XY7O2aXhm0SZZxcrjLy/l5FOdIcaVgvuHNOc1byd5Y5UQpL+ZEWNpQ/V1EWKQ1l83LFp8I2Gj4t/TDUSCTVnzSHhziXaVzaB/n8IuVBjbxan5HyouUJUdi1clnbVpMPfOnzuFq+ZZ0OVcY81iHORS7ZUhurFtrKhHGVS/tWRm6raz5tUv/i40jiwZxvSuMZ29rHwzWUkZGlscLTqgO+eTJkfEoGfF8cVz/WeKAWXkp/U9D0zibB53TLka8aMB3UYyUHixSe/pbkql3UcTX9isJnb4iiKLMTSHEGgzYcHOT3otJFo0dHHbh/vw/9fgxx3IIownRzR2s+P0o0uMunVTl/T599v5MkgqKDFnVf/A2v+00Et293s3BpmBUkyQjG4xGsVgn0+wDdbhuSJIbFIoHxeAG3b3eh26ULj/P8JpMVzOf2u9Mor3bJ93XYLly80WfvseTf5PzI4eNf/MhpTr/Go7W5tglssr52GXXbFK4LrGM+RKbjccrYJ6voWK6wuzoHV4GmJ/Nn9Gto8TGO9N4VR0JV+bNOvhUiz+wC6ujnHJqdo4z+VQW+OZG/w/Hqo72Ocb1Tzthdnbh5pUtefpdy6puIuVHBZ7BG4MpQa0cvMyn5JkiLIlW2XamTZzqdFnYBU2fahx9+CP/8n/9z+Bt/42/AP/kn/yRro/l8DqvVCm7fvi2mTVcZc4eSpNBKaaASWGUgVh3IkqGqjIOsTH+xoIzjwQJcAY0ro9vtNiwWi+yeQkQURbC/vw/9fh8AAGazGZydnWXl4yu3XM4Vjirl0vqWRZCoo07rMAI3bbwFkAVlF0/d1XkkFHxOmE6n0G63YX9/PzvuZbFYwGKxgG63C61Wq+CodcFXTz6Db9k69vG6EMeHNH9K4zRJUic2PUmiqrGnjj6G/GtbhmvJ6UHlidAyRlEEnU4nO9UD7/C0AusDF6Hx+1RxrtXytrzTgPnw3TS8vV3joi4ZzJdmXShTPy7FsgqtuKCEtq+VR0lGRUv/pXRr87sUh/KaMnIWpZnSge/fNGjjhr6nO+HrnJt2QV6g/Un7hihDL/IRvCsd9Vepvpo00HNDW9N1v2nDJy/fZDIBdKSGlhN3/Z+fn2dx0ZgpLTjx8RDuCONxtHI0DZ99gd7pyoF9yNLGX/ziIfz+7z+EVit1srZalIcD9Hq4OJs6VyOQyAupHom09F0ihOFtmv0CdLBK6ebzWDH9/Hl9V22SFN/j79Uqgb29NvzxH78Fq1Xy+i99v1ymf9///gn84hcXWVp19pey6ZWRQUJ5g1VGqAsumZLSgldtSeHK5Lnt+fBNQ9Ny/lWBJo9UgSRj12nXrMOGVjbvpvOqag+kp3smSQLj8di7QFu7lqEKTZvCdeadITYqSRe3jjlrHbrsENZ86rYjW3RTFzbmjK3TiLlt+DqmRQm0xOVOX1ROqPLebrcL57BvipGFOGHLOIF5GrQuaF/C+hgOhzAajbL7AFGBWy6XMJvN1i4NXy6XMJlMsrtF2+029Hq9zIHrK5v03Wr8q7sdkHFITisprJYOjysxVUtaIXS76LXE1Zww0+kULi8vYTAYQBzHBaFAytvnFAkRFOuulyqQJhXfhBEyXrdhTGuax9VhpLI4EVxxXH2RGqmow4oLPSHj3QLu/AiBZS6QxrQlHes45AZon0AXomj56pnmW8f4DnHgYJ4SL6iLHlpOyUgq1YMEq+CuxS8jpPu+a2niPbn8+FJfP9HS4/3eNweX4cFRFBUUXlc9avNgEzyfO4iqQJITy8oaFCHldskZdfOCXQfVZ+jCRd6XNZ3C1S8kWVDK2yXfuWRBiT5rX9LmD6n8rrmuDCRase5dedFvWpldfVbj83T+8cl1VfTqbYHW29HREfR6PRgOh7BYLDKnrFa3Wlp8HqX156pHF427xHtonyvTp/Bd6qRewoMHfeh2pXEH8PjxHhwedl7XG5D/nJZivNe/FLry3xr5eZjcOZq+o2WQ40rftGf+H3+nz3TXbP4+SfL3+LvVwiPZU+dvev9s6oRFh+z9+32Yz1ckbu7Unc1WcHrqXhCq8T1NZvSlEyKTlOWpZeTKOhFF6ULE+Xye9XmJrqrj21I/IXqRNb9t86JN0bAL5bwKsNisrPMG/c1tAHWhLtuQD5ocFjLefbalkD7qk+Oo7C/J8a78qsqBTYw1a3+7SrDYj/jvkPrX+khdOk8Z3d7CXyx2ozrnr53aGduUoacqOPO2MIMqyg4e8Yd/mA4a/5COdrsN7XYbptNpdm8WpZfSYkUTwhEKkvS5ajujQ6Lf72e7E3q9nhj2/Pw8U4wRs9kMnj9/DoeHh3Dnzh3Y29uDwWAAJycna3eQ+SDtqvTF5xNpHfXexNjRjMG0TzYBn8DgMyafnJzA2dkZfP7zn4d+v5+tHpWO9kbQe/fq7P8+A5hLONwlZUVCUzxbckxY4jRpZNrU/CQJP/wZT0VAPqgZrHe9/1SBq54QZRWvKsKmRbgtY0iygqeN8gQ1iPvihgLHHt6dalkgpr3nd+GVoQURWh4LT8a67Ha70Ol0oNvtwmQygfPz88KYtOZPje58brP0D59hv4yi4TM+WpQZK5IkKcivtP7KpMXrsSkDjI8GvoON3zd/3UGNxgCQnUyA4wcXBfjkZC5/arIfvb/ZNRdiOtYyuOLsYntinXKjPZ4YY5GfpSN2se5DHCYSbQD6WNDklRDdW4pfBmV5xRe/+EV4/PgxPH36FC4uLuC9996D5XIJ3W53bUxYaUB+Qt+Vmce5zFSnY6UMrO0qyS5Yl7PZDFarFnzrW2/D22/vF3a/Rq8drq1WlD0D2/FKnaOu4kvfLN0sSfL07aAJR2v55M8JpEcWF9/nMmD+vvhufVcsQOp8xf/0Gz6vVgn8+q/fhq997TjbObtYpP9nsyU8fz6Bv/iLF8APMNH0ExcsDlCXwVdKj44nqx1P+r1Jvo/zGtr5tPG/i3PRDXTctJcNLt5BdaRNyfhleBnG2xWUdSpa7dsAkN3fjmGt9vC6ZJImbYHXFXWMHVrn0sa2Ovw/Vexmkm3Bx2Okd1yW18pl7YMFZ+y2hA0p/12HpjRqBk/fRCEpGjz9JEkyZxINi0cXSQytiiM2JK6PgVKHQchEINFChVHqgPn000/hz//8z7Pv1CC8Wq3gS1/6Ejx8+BB++MMfZvUYqhxzcMOE1C8sxovQicNnbLLG0eBzbkhhQxikz4CMYaR+xePS9tPGQK/Xy45C7HQ6cHBwkO2YDoG1LSn9kqDo4h9SOr48q8CqyHI6+HiWxmiT88g2hK0kSQrHWtM62AQtuLuI0sOxKSVdGvfWvtQEXVofrRuW+dFn7OFzfZVx7ZI3QtKgtIXKDdQZCxC2oEVzuLh4o/RuU8o4lTk0/heaHoXWh3k782/8HX8vpeGivYo86AJvx1arBcfHx5Ak6XHiePx6GflT63NSnwqdt2gatP0xHh0DvE9rSui2da4mge2JsvbLly/h5z//eXZ0+Ww2K9SL5oB3KcP0mV/bIo0NLb6Ul0U2c9FbV3ta0/PNx5LszIHftXrw0VCmzD7+sg27QBmjCva5o6MjePToEUwmk6xfLpfL7N5XTd/UdGj6nuv5VXm0pJvQRanbAOpodDzPZjPY22vDF794C9rt1mvHar7LNY5bcOdOD3q91usjiNPjh7FcWC0Rc8ZK1RUm+1QpqYy0PaT+pz+v/6ayAaz9x52w6TPvA0n2f7VK6cAdskkSQRynjtnlMn3XbqfO2HY7gjt3evClL93KHLWpfSWBZ8/GMByGzenF+vC/o5DmWYuMQ99tQ7+kkOQSgHVaXYtxfe9C28NSH770LfP5JuCbB0PjuKDJ3WVou67gtjGOqnXmk/c0OYu/d/XvMnaQEGi0hcS1jn+LPILvqfzukjFddekK76LLQuMmsOkx26QdjcJih6GQbKNSulV13xC9xBfPFd9lU5BQtlw7tTMWsSmjWigok+GGFxoGETpYfJ0+SdZ3ENDfvk4TamCtAs6QUWBER0IdNPHy/+pXv4Kf/vSnYtz9/X34kz/5E0iSBH72s59lBiLq3NAEWg2+iXHbwnxdaHIc+oyfGqhBlDqnNAPCYDDIjvmJovSe2cvLy7Xjq5uAzwCmGcqlMKGoo+0kIZnWmXSPVR2CgoVHSIJDU0IKpof3EyMWiwUkSeLcde0TcFzg9T6fz9e+XRdeUweoQVm7YxTDVckDUWaMUeNQHe3m45V15aGVFQ2ndDWsxZjrEtZ5OC0MF6it/LYs8HQSSZ4JAS0Tpkfrg5+4YTFsWfpUHXNCnTJ6p9OBR48ewWq1gvPzcxiPx9n9llY6+G+tn+B7vqLVCip38LyxHfnY5joDOmU4b9o1facqlssljMfjbL768MMPIYoiOD8/hyRJYDQaFRxALoOz1q9R9mi1WtButzMeJKXjg9WY5+MtVmXcGrYOXQyhneKj5RkyvkLD+eL5+HhTKJsnjul79+7BZz/7WZhMJtlpVovFIrtSyCUn+uiSeE8ZaHWL9GJ5NglqT2m329DtdrNTPcbjMdy61YX/8/98DP1+/NohC2tO2fQ/gORwLeonPO/sV0nqsT34fFwmrfWdsJg+f1/cFcvDYDq48zV9zsPlY5z/xnD5//V3dLds8to5Oxi04d69fnak8WKxgvl8Bf/zfz6H4bBcv9dg5ZfUUeAD58lVaKtL93bpjvS7TwcMtbFsG03z/121M+8aPT5UbaeyY85lf5VkibLQbEp18QqeR5PxLDv5MF1LnVGdJpQeX/pXbRxcV4SMH9TFEKmc4Jcjq4zR0Hhl/XFNQ3XGWpWtUJQxsO8SJPrLKpwhsDj6XM5KzNtiBLY4dqX0pbA+mixxXPGoYrtcLjOjTKfTgel0mn2fzWbwX//rf80mjsFgAADpUc/z+TxjIr1eD9rtNkwmE6chX6ojS31K9eeqU5/CIRlL6hJsJFpcxy9ajVBSvmWcVTQOXXGOxs4kSRcv4E4MPNIK06a7pheLReEIcEvZQscC/e8SgrTxGVJHrvR94H1bo5n361DDZ9XJrowzSytDSH+T+ouUhstR4uOxVMHGd5xmLayLdikvV/hQ5d6HOtpdShMhjU1fHB6XfrfyeAm0T7jqn97h2QTqqm/adlbDsIWfatD6eCiv5TRboPUPWtbZbJbdGUtPLMETGLQ0Oc/kjiheDo0eCmsfojRgHMmYZxkL+K7dbkMcx6+Pi6xuwEfa8AQCrCde/5yfuuSPkP6mPfM8pX4lxdHaN4S2qwRaFzguut0uPHv2DC4vL+Hi4iI4rU3Cl6drbubhNH3RohuVMTJofTY0LUlW4XT7ZAr+nR6ZjH/8+hqehs+4R+ehOtBkfws5LYLKmtbwvN5DdLDVagXtdhuiKCpc6VJXvfrkIN72X/jCHjx+fADtdgsAEpjN9mF/vw37++1sZ2yrlTtg0fkaRXR80vTTMPx98XsV4BHSVdORkTpLqU7GvwMAcL1N+5+mRZ/z8bZ+jyxA8V3qfI2g1So6Y9PnBOI4gdUKst2ynU4LvvzlY3j8eA9Wq5SOxWIFw+EC3n//MjsauVgefS726Sz0tyQb+OL68rGgDj7CZV6Lnhqqh1v0E0pDKK/l/LsOG0ZdqGIjKQOprjWZ+irJhFVolXSisum67CkufUDKJ1RPtIy7EB1As8GVoVHTnVz932JHkeL75JVQW5uWT1MowxNC6KuDt7j0Bmsf1NrBdzqRK32q5/JrsTTbB6bt098l+PT1sv2mrF2TpxGaTqmdsa5CShV0lSYWK3xCDIWvI2t15Bp0Upo+ButL3xVWg6VsljyttHEsl8tCx2+1WtDpdLKdkGgMms/n8J3vfAfiOIaDgwPo9/tZGrhqudVqZff60Ls5rGWQDKKS8Opq79D6Cp3YQhR0qSzW8oTWnSuOLy8E3SWBfWI6nRaO3cJdGklS3NW0XC4hivIjf6yQjFQh8SzhAGRjS5n+wtN00WYVQLjgZjUGufplWf5qqVfKJ0Pv74qiKHP8S0Z2Cy8PGY9S+4Ya21wImculbyEKgTV8aNo0XohyxKH1ect4wPgYnv4Pzc/Svr4wdfYRC0KVlVBhu0yf4AI/pym07ih/SZJ0hzoeP0nvxy3DWzT6Q8eX9M5V1rJjjdKHJwXM53NzepwmjY/S+44pvVIcKp9IO19pu1qMHVo+PLzEdzi/53m/CcB2wAULr169gufPnwPAZg0sZeGap3mfou+1tnb1Aan/a3lL6blolNK3gsq2lG5pTLlorcJ/tHrE303PdaHpSm2HfCGUz4TApf9b4+POWJeu54ovwVp/UZT/PXkygK9+9RA6HXS85vfAAuT/0/D5b0pH/lzIRXhXDjwNt27rT89VTWkdch7Bf6PjdD2M6//6b+p8Tb+lxxWj0xXn2PTdaoXPALmzNnXGxnH67XOfOyjcLzudLuHlywl89NEwo9UiLtn7kl/+qCOfOhBqCwAoxytCZWctvk/HkuaEqrzJV0dV5KoybV3GplYlvzoQqk80Vd8Ibscqo7NzmqT0pXFTda7S4vhkNQvKhnXJQbwOXJtqLO0gjWeMxxedlR37FpsLDYs0vMlw6RHSsw8h9e/aEetrnzrHfdNw6W5V5PvGjym+Ckp3CFwKrw9ahyxrCAMIO3aK/vG06urQPmawSQwGA+h2u9kzOkul1R98J6xrVyyCl5Wu/PaFvcqQmE9TRkaXwwLvlcMjMgCKK3IAAM7Pz2E4HGa7bHD1N/YD2heQftcdLBLQMdckqhjNyyJEGGoanHfSNsRveEc0V/54HNpfMJ4PNB/sG3jENf3TBE+6C40auix5c9TJr33wOU12AZQH0Xaqg1YUKqW2o2FcxmlOB/Idukhkl5w0ZWjBeuGOs7KKJXeYuQ2dabh+vw/dbjc7Knk8HtfGm7VdTUmSHxve7/cLY5rzHR+2qVBa2kqiL0nS3Y+uuxC1dJAXDwYDePjwISyXy2xX1vn5efad9wUE39lryZP/pnybftcMjpKMEGrkxDnqTUW32812k/sMWXSeB4DC/O4yBEuQ9K46dLE6gHMXgFuPCE1T08d88krZ/DQauO5JxxF9LoNtyqkS3dPpFC4vL2E0GsFkMilt7JdkXZ9uUodsuEn5EvN55519+PrX7wJA6rh8/HgPBoN2wQkbMcdr+jPsOOL8Xah843pXn4NXQpLkeYB6XDGGoTtec/rycY/feNhimOJ73PVKjzmOXu9ozXfKpv0m3ymbys7a/bItiOMW/MEfPITlMoHlcgUffjiEDz7IrydA3hG6qM3HS0J2qG8CZWVti1xblz0O5ZZutwvtdru2U1CssMqmN9BRp0OwLt267rmbzplWxyjvx1rZNNs5/qe/fWlp2HY/LuuIrZMXaLraDeqB1L58LgmRAVFH57bMpm3iALb5zOos3TZqd8ZaDUqakW2XjJJ1oa7O4KubUGOehS7eTtpkVLXNmkgXV+Qj6ITBmc18Pi/cxViWkXC6Q8pRF6PQaEBItGiGFBqHpldWiHIZ0FzCkyTgYBty5xqldzabAUB6HDUep0jBnbGWMaEZassaXXhcnk6dfUjKx+Lo4PRqaW/aMCY5012QBEkfzZrBkhvLfPUkOe00hBiJ6+LBGixlsbZ5U30jZKy6nHyusW2tX9eYpkZpfpyt5IC0KEahsPSXsgolzrFlHFUUWHZJMdPSxRMxcMfqeDz2yjUaeLtod4yiEoILfdDB5KtjH7/ZBMoa6ni/pMbNUNpxJ1av14Plcgn9fh86nU6WltVZFDrvSP1LCgMgjxcr/5bCcTlUy8+VT9M8v07w8qBcTq+MoN/pb254xhNMaFjalvhb4qFSvZYZnyHl5e/LGud88nkILZqhhc4/VfqVFFdLTzuJho9nrZ9YeYOURp2g/W06ncJwOITxeJwt2OP90kIv5X1WPliGZtd7aY7Qvlvrt9uNoaheR3D3bg++9KVbEMfU+Rpl4fKdsNwZqztf12U7E3lryONFa2nIaa6HC0FajbSO6bei4xerPIrye2GjKH2fh8H+B+Rb6kDlzzQMpp+2edERW0wr/Y/TGn3O+Qm8zg+vZkiPMB4M9rO7ZS8v5/DJJ7l+jjT71qtadVLKB8oseNk1Q65VfnPJRmX0UMneooW1pmtFHfZhrT6qtm9IHZdtjzpQpQ7rqP+683LJMogQeT1UtqZzomS7q1pfrn5p/VaXPMdlEmu5Q3TLbem/Esro6Zq8WYdeUFVfsfKdMu2l3Udct60jRIamz1I9a7pHHQhNJ8gZywWaJpQDV2fbxQmkDMPj4ahDwbdqT+pMWseTaLTSGmrc4nlxZbkOQdbVjvT9YrGA4TA//qbf74u74SaTSSFt3g4A5ZyykiGaGorqRFkm2lT+ZcH7jaUc2Kb0eMTBYACHh4ewWCxguVzCcDjMjqrG3VI0T9exxFp7Se8l5c5i6PWBj+NNCCq8r4b0W6r8NgmsB3q8NKWBGmc5fYvFIttlgN/5rhQeBx0uUZTfc/a1r30Nbt26BQApzzk7O4PLy0t49uyZSjffzdVut4N2lVXFJpUpHx2bSpcbEC11wPsw5Ut0ruD9zKIYYt/Du61dYTcxlig0ozFXwPgch7tR8YjDMvfjcfBdQJowjQai4+NjuH//PsxmM5jP5zAajQp3ykug6VM+4lKcOB24I58u5qLhXWXkKKPASvUTKnfxepDo4flxXeDg4ABarRZcXFwE7ZIdjUbwP//n/4S9vT149OhR9m21WmX9ioYvo4xpYWjdURmxiiEDjb2aIyPkjmjOd0J2A28KPr1wtVrBbDaDdrudOd1ns1lWDukYak2upd9xvGK98IUQPD7l1VL7SmMvlBeXmVuqQJujJFrwvbawhMaRxm+ZPsfnRirrYPu5dLq6DTl1g9Y1XnXzwx/+ED788EN4/vw5TCYTiKIoO8bdmqaLBzelS0p51Z12txvD3/t7b8GdO31ot3OH695eG3q9uHAPbPpHnY/5e/ou/w1rvwEi5b2LzmJ8Pe11Otxp6VhvShoxEb4X47julF3fBZumn/fd/DkPk8dx3SkLgMcVQ3b3K90Zi//TI4zT+2STJN8pm/9vwVe+cgxPnhzAYrGC1QpgNlvCeLyA7373U5hMlqa+KdlrND54FeCyP6EeKp3Egqhif9vFeqqDP21TB960PqfRsI24ErhcVzWdsnlzOjaxq48ipF5DwmJ5cOF3SD2hnOGzY1J7gGY3oLRIuzDfZGg6tiT3NQWLvq7lz096ctkM6oLWz7T5/yr0sSBnrNXRQL+HDn4JLmNclXTLwGd09eWnGQK076E0+MK46JaMbDQMd9CEwsWoLXAp7TwfPMIWIHeAUIYjOUCs6W8bWjv42trXLzlcSkzIuJbCWurUN064IACQCh2dTgdarVZ2FzDt3/QoBUnQCK0z13i18KsmJ4mqSofLwFo3XOm76ogaWC1CgM8Ia6UTjfedTgf6/X7mjPHt9sG4Et2WcaKNQeucs6l2bFr44U4KhLVO6Hzm4wPaOPDJK668aRo+p6NUp3XIV6FtROvLRwvtby6ZQ4tv7ae8/ZIkgU6nA3EcZ+OS3ufaBEKcaxwhsqIlHO07rr7q46mWdzRd5IfcmW2Z/5bLJVxeXmYONdfOUddcS3/zPkX7SUiaTRqfQtpkF4x4Wn34HEd8vqPPIXn5+mySJKJRoUq9WXh+CC/UeKgErfwW3dsyTiif4PRaddTQuuXznGQ8qUuG2JTeRtsljmO4uLiA0WgEZ2dnMJ/PodPprOmfVki8XOtb0ndrHWjyVB1IHa0tiKIW9HoxPHy4B/fu5c5Y3A2bjg/uhA1xwK6/Xy+nm9biWJfi6t9D8nGFX6/+fAdrMU7uPE2/F2krtmO0Fi8dx3lYfE7fJZDvwl3fNZtkzlbcvZwU8sjDIN15ekgWprdapTtmDw46sLfXfu2MTWAyWcJoFMPhYQfa7ZRPLBYJzGbyQj+XnhUC1xxNw+yCXaiJ8UqBPA3zwcUzLrvTNhAyl5Zptzrk+13oL7uIsvZBGrZsH6zDdldX/+dyj6tckn7jS1eT3X15aLCMuTKynM9+ZrHz+ehqAiFl9fWvEN3Iml8VejhdND1tR6wrfhPg/dxqO0FY+1BTZVhzxnJDxi5PINukz2ckdzEQXAkuGa5Q+OFhpTzxnW8ykxi3phj6mIAvDA+rPTcFqe7pDlgpnCR8+1ZGSQzRVS90p20VQdZiiCmTrg9Wg3rVPCx04+4rgPWd5NgOaBg+ODiAxWIB5+fnmVEej5TUaKAr97WJH9/jWG3qHhrfTi0XQibXspCM200C86I7YqMogk6nY+Y5dNLmO6Ndwik9inS5XMIPfvADGAwG8Fu/9VvZ0ZroXMA0cLcE79tIPz+q1lJ+n7B6FdCkMu+afyWjs2t3DsbV6pw6F6R4kqEbj9FNktSBtb+/D9PpNDtSPYQOiSZeTh8kJ4lmPPbJG1Uckz4aAYo72JFX47enT5/C06dP4Ytf/CLcuXMHPv/5z8N4PIb33nsvu+/KtQvdqlzyuQffdTqdgvOXxnH1jzpQxSBBwWVR6b0G3MUaotTgOGi1WrBcLuHs7KxweoUWj9LEf1P6tTu5JfnPl5/0nt5Rzw0jyFf4qRk0LIbZ5BxaFlUMktgW0i5YDZrCz8NgOFyA6Zq/Jdrof4kulzGL5u8zEnEjmzQ3UB5MZUuJrlDwcnB+ptFaNp8QY2UVOZfX2zaRJElB1wAoHq1dJV2Nz/DfZUDnNFxQWJcO/1u/dQ9+8zfvQquVOl739zsQx1HhHthozQmbOz+x6vA5/w1rv2lZfCimITtZ89/60cNNdzmp2tN3EYBwh6zvd8h/zCftD/gen+l8Fr2+VzY9Uhrf4X++a7b4P71HdrWC7D7ZJEmg02nB3l4b/vAPH8NyuYLpdAXPno3hf//vkyxfra3p+AvhQxxaHpvgM6hL+vKrwjs14LzQ7/fh7t27sFgssl3+oXLrtnnytrDNcu/CXBiKKvRabV3cDl82PR9PqWt8WMca190R2pHiUv5c9+P5huh1kv3lqvXHJtF0X68bLt2HjqNN7Si/jn1pzSNRFEo3I3CE5ONTEEJpDnWq+eAy3Gj5WeNKcfg7ibHis5WZlhVa60yvLCzGFRrWZVi25OObjEPqJYSWMgYPC7R+WmceNC3Ob7Q8uCELf6PRCo187XYb+v1+Fg+dZ6vVCubzeXaPoMt4Q/NwGaVcY43SVxZaHyrbDnUb6xFNlJGHsRiH6NGvGo+0tKOPXnSgzufz7L7DXq8He3t7sFwu4f79+zAajeDy8tKZFhdkXHmWQWh7S/VjcfKE5GPhyzxcWWhzII5Lbsz0GV0kY3pV2gB0h4zFIO7jnz4HQRUHi/aubmOxRTFGwxUeVdpqtaDb7a7dMelqT41OTB+Pl8aFPLjIi9cnn0Ot7VIWknPH13e0/iUp9T4ZBsP5nGFafPqbO+ukPsTHHw0vyX+hkPoFf5bqRuoHfO4KHQe8L236+LS6YJGVKKr0IVf6vrGofQuVEXyyvDaHaPSFGMK0vH1zFu9rWngrX5fqFU+tQRkK71StAss8aUHV+HQeotdaUBpdeflk1ip8xAUXLwvRSTudFty/33+90zV3tD58OIBbt7rQakXZH36LiBMWk83HnO4M1d6vf9fKHJ7u+rOtv2jB7E3oCsgTx/tZ02/5b5pOXr9p/0odrPw5DcPvoi3OjfgNXu+MjaLUoZp/j7L8kwSg1aLO3jQOrQesq/RdC1qtBA4O2rBcJtDtrmAyWcKDB/3XztsEhsMFTKduHSpUJslp2w34dCZJ/sOw2hxjBcq7aFtZLBaZPaWK/hYyn9YBSV7UaOJhXLYOS1qa/aJJ1KlfbBI+uZqH056l9nPpNFZ9O4Qul+7lS9sVh4fz9StXv3fJ4VZbjY9eX3pl+HMZ1DUmQtOpWramx7KFV2vyqqTzuuwhWr6avOnrRxJC9LuQdOuCRkPQMcXXEVUEFR7PynzRoOK6z8w1AHiamtAlxfPBwrCvG6oOQtdxxzxtKWzdTMDXTr6+UiVPF/Osq//galE07OA9ZNPpFPb39wv3zk0mE1gul/Dw4UMYj8fw05/+FBaLBcznc3WHrM9QuE3UTZPVIB+KbfCMdrsN7XYbptNp4R5hCslZ4XLgSuh2u9DpdGA8HkMcx/DgwQM4ODiA/f19WK1W8JWvfAV+/OMfw1/91V8500HDHXUi+5yzvE2aMMppz1ZsQ/iU+q8rLSk8X0UqrTjndxNT+BR4TUGUUJZHVzE81dmXXEprSD68PJbFC9Rpivwdx42vP2h3fa5WK+j1etDtdmF/fx9arRY8f/58TYajfWa1WhWeab+kO3zr4LO0npqY313AfHFHq3R/egioUuc6wUXrY9ywUkb25W3FT8twGdc0w1CoQQ7nJqwHPBGE36N7g2bg49H4TeL1/H/I2LQaIFz9j+Yj9UdfmbQ8ywJlm7t378LBwQEcHh7CfD6HH//4x1nfpnleJV2Tzh0WGc4HlAsB8nlil3QQDUdHHfi//q+3YX+/8/r+13QnbLsdQRy3Xh9nG7H/OIbwd/qt+CzJpiA8u/q09Hs9H3teeRquvEIgd/l1h6UWB52b/FsxjPvd+v2y+XPy2vGKTljtXtn1nbG5ExaHRnqHbPR6ZyzO9fBaDk9/p/8TiGPcKbuCfn8fHj4cwHy+gvl8Cd/73il8+OGQ1UGKKIpEGd5iH9kFcCcSPSHBZfCWyho65/A6QB11OBwWFhlLpwqFzje7jKq6KH23jX51Fepeo896jVxImjwMHR8W/dDShk3Vt6brhcgbFrnPF84V3xqv7HjY9b78JoEfT0ztZ65xpenBuzLvbguNO2PrUK5C0tim55tPfJLRnJZFMyhZyqvl5TJK+dKU0uJ5uAy3roks1HClPbvyoXFCJoVQcEOr9J0a8sqUkX/T2i/EMUPrRRPSqzJEnm6ZvhxKB407Go3g+fPncHR0BIPBoHAMLW8vVNZ8fdpl1KLhJAOw1hf5ZBUKq5JlhaudfIKT9N3Kb8r2N96X6bG/ljqhcaoYHzGd1WoFnU4nM8ZhX6NHG2vxEdzQ79oFVYfzJVRRdwlQvvGrpeHiZ65wrjjSvKoZDLijr2xf8M1vUrn5nzUfq6Kp0YWGnTp4R+j8Y/2u8UxX/8D44/EYLi4uYLVawWQycbaNTymQ+g3n2dIzn1Ossqtv3IeibmOMVDbKs8oaK7BPDodDmE6nQfF9RpuyhgVedy55mCK0zjEdbUyinNLpdKDX68FkMikcdb6rqLPflVHesd7onXf43hK3KWhl0Y4lRtqt8xwNq/Un+l8auy65NGSM438sE54gcnR0BLPZLFvoIF3l4EpXK9sugPJvFy+yyDSuNvIhJC9XXWrzYRQBvPPOARwcdKDViuDwsAOHh13o92PodFpru2A1J2z02pGKSef/i3lpZZO+y9/kXbDufNJ4YfmUA8YvNlWkfNP0NPoG+V3uSE1/F3fP0vDpe/suWeleWcjuj02ysKtVsQzFHbLF30hz3jfwfbpTNtXzUif/w4cDiOMIFosVLJcJvHgxhcVi/eoiK6xyGkXTfMhnd3DZ3ULsMFKeuNh9NpsVFji78rwOKCNDWuOUsWmWxVVrjyp6sMXO6hu7delLddvlJITuTvfZBDg4D/XVXd19LYR+axqub5Y5wyVXb0sXC7HBSHEoNFmP6haSPd1Sz1IfqrPOyvSPXcLO7Yyt23hUF6x0hdCPCihXviVjgaWza3e88d8+oye96ypkdZKr7BaGUYdjxkdjWdA06b1w3HAqMRtXG1gdIlb6dpkRSf2al79sOTDeyckJnJycwLvvvguDwcAbhyosXLiRDO++/BGScUvCLvA7H4/gYXYFdAzNZrPsflYXaPkWiwXEcZw5cK1GRtpmSZLAZDLJds3hDm1EHMeZk5bfJUnLgO/iOM4ct7tY5z7UbfgIAW1DbQ71GZklZ5ivHcqWA+dX61ij/d2lDFh5aJ28p+62lBxhErCdaT2enZ3BfD4HAMiOVAvJV8pDu1cYnSicL9DvPiN6GUO7hqb6Ks9DUlx9d6370lwsFvDq1SsnrdzASNvdl6emfNPxwudCXx/kd46HOKp8xg5Ox2AwgKOjIzg7O1N5x1WFq565rCx9k4DyQBzHsFwuxTu5d2GOpcYNbGsrT+C6n8vY4Zv3rAjRT5F34sK3/f19OD4+hvv378N4PM7KjE5ZK6+mY5Maini5rO1bp/EUT2OowtO5rKL1hzqcImXlgCiK4Ld/+x587nOHr3fCAsRxC6IIXjthU8drWg6q48HaM6WZkpL+jtgz/75GGUu3SLMrD3f6chg/PTZQR6T+Dds/dXzSsPkz8suIvS+2NaaZvHag0vD8uRh2/Z38nO+MjSIo/Me/nNfld86uVvlO2dUK3yfQauGO2RW02xEsly14991D+PznD2AyWcJotID/8T9ewHy+zMpKFzhdl7mSQuPvXE6i70Pqod1uw/7+PkRRlJ18AuC/6z40nxvcgMLlMLTowdJ7vpPPkrd1QXxTNmeXzOa6T7qOBb2heg3C6ie5atgFXQGgut0mJK40h6De2e12CzRZZPdQHe5Nwk44YylDa7LDWxXb0G9aPjw/zcgbqjDS9F0DwKKIS+nTZ0qzxXDscoxKE5ev7V2DN7T+qkCb3FFBjuMY7t69m63Cn0wmcHZ2lrURX0XiEjYA3EYVLY7kKPIhxOlWJV0p/TJMWBN+tLTQIId9+bOf/SxcXl7Cs2fPCjRpjhuJfp9jILRcrsnV4lDhNFghjXeepq+efe2sGcnK0Ozrf9QpY02TxvGNHbx3mBpM+XeA9Phs3OWCxuButwur1Sq7I00ytmll1mih8Sj9Pp5bFlYFxsKzXW0o9R0Lz+TpW5wzdEcOn7fLjMlQOWG1WmUOQ43fSL9Djrfl/cLCm/E5lP+40rPCWi7ez6MoXcwwHo9hsVjA3t5e4TvuJOQyh0UubLVa2X20R0dH0Ol0svj8KGL+W6OZPpdVfF1pa3KohR4AeXFfHYqTxguiKMruJ0uNr+tHDPrS5ceIcxnRKhPT8NIiLYku3p+k45qpjCb18263C61WCyaTCRwdHcE3v/lNSJIERqMRfPrpp+LR2FcZWhuE8g6JN3Y6HWi329DtdmE2m2WLpFx8XTIwa2OaO+Kr6I9c/rCA9kOf3kX7HO2XfO7D9xovkerHVU4uX+GpBe12G2azWfaN82aap5Y2D1NFxtH4TRlZ3hXXkp5LfvPVv5ROFX2N46239uCznz2AOG5BHEfw4MEAer0Y2u30GGLNCZv+BwC2AzYvF5D/1Ryj9B1PX8uDp+3OW06rKvI88mOC+Td0kBbfpXF4mChCh2eShUv7D5DvfDdsGn79mYbJ4+R5R6/DJABs52xCnK/8D/PKjyumZcI+gmVKHbLLZQuiKCG7ZNPArVYEX/7yEZydzeDnPz/PjkR28UZ3ezRvV6Kw6EQUmq4nfZPSd8mnrVYrM7afnp7CZDKB8Xi8dvWGBKueqMFq29kEytKy6b6zy/DNVy4ZMKTtpbkS33O9z0ovpcOiz7nSkN5b6NHg4mm+fDTdMDQd6Zm+8+mgmxzbVposaVhQtWw+3SgkfZcejHDND1zv4eEk3SjEjlOnXWFX4aOvsjPWqkBaOpCPWdbVaL78tbybSJ8ahK1AWvhKYmk1jNQ+lglEMhZZjHO0ja6qQCIJ75rRlJb17t270Ov1ACDdoYnOWGoIoWm68re8K1O/vraRvlcZcy7+IBnT6e86jAhxHEO73YYoiqDX68H+/j68evUKnj9/LqYhtVEdhnIr39MEpjrqwzK5l1E+NKM0T7ssfHFpPUl3+7nSoHEAcgOrtot1sVioR4+jQY86Y5G/d7tdSJIEptPp2jHGPA1KP/72KdKasZR+t/KLkLBS3KphaP6+/qPxM+t4cSkomvHXYiT25YVpaTuatPjUmG7JIwRSuX3G3jLGapehH//7lFceB8ceQHpPOO5Wx3HIxzSlRVO2eT3giRg4niWFw8dvrEaykHaswmOtcoXvXV158yNly0KSZaV5Xhvj9HfIHbi0LdDRFMdxwYCp5R1FUcEZe3BwAL//+78Py+USXr58Cd/5znfghz/8IfR6Peh0OqZ6kFCFvzeZhyaHueYzV/t1Oh3odDqFRRn0u5aHZrThfNdiYLLwO0t/t8iAVNeQyhEi22l1Y5kjJZowPO6GBQCYz+cFZ6yVtpAwIeHqQlP5aXxDmz9cc5AEC91vvbUHv/d7D6HTaUG7nTpkowhe/8c/dKIVf6d5F3/n/6V3GcWgdTPpvZY+DZt/4zxYSt8dxgKMY+sakRo+fV901kYRAHfSpt/5McPp+/y4YZSl8JvumM3j545Xnn46zss6ZfEeWUpnRGjKw6T/UwduFKX3yrZaAJ1OC9599whOTqbwwQeXMJvl/No3FjbNI+qAdiqbT6bh7/N6Lsq76Iw9OTmBxWKRLZ7x2Su1+dqFJvXNbUGaf3eZ3roROv/Qb9q4tOpKXGbxpeODT0bbFB+R7EMaLTy8pQ4s49TSfjQtSX705SHBx3OsdgsfQvXxptpcs0eUzU+rH1fflspO74YF0DfpWccwp+dNRWVn7E0l2mFR3qtA2i2DzgBXftTgROMhqDFJgtU4XdV4tyloRnOs23a7nR0nqhnGe70e3LlzJ3vmd6G5jj2k/13ghkKfEXsbaJI/LBYLiKIo65+9Xg8WiwUsl0sYj8dwdnaW0XB4eJgdH4bA1fi+421dgoyrr9O2rOII2xaPtY5rF+hR7E30STz+Do+5A5AXjWjQ2tFa1tlsBt/+9rfh8PAQnjx5kvGGy8tLAEgdQ4vFAgaDQWG3LC7aAEh3b7fbbRiNRjAajbJxjOXQjoSyCNOSU0IK50rnKs7xFuMLV/zKlFNy9Fjj+eDjMT7ji8XIr6W76Ta3KNQA+vFL0px9eXkJrVZLHD88Xdc32j+SJIHz83MYj8dweHgIy+UShsOhiedoiixPvyk0LRvUdTSWTwYKmZdCDQFaet1uN9tpGUVRdhcxyoUuBdPV5kgXlS2xv8ZxDMfHxzCdTuHly5cm2suWr27UmYd1fGAdomMPF6tS2SPEiUj/0zj8G+WXEu90GQzpe+RV+A13QNc1Xl18nRrkJVkoRC+xhsP+zvMIQZ28bNd0JwpNL7DwN4tR3KerPH68B7/zO/fh/v0B9Pu4Eza/E5beDRt5HLCR0/kasis1EsPIzlhX+JweKb/iczXHrCU8ba7otfO1+G3dWZs/J+S5eJRx7tgsxkfnrM8xC46jiykd0jfLH+a3WiWvy0jpSrJ+tlolr//Su2fTo4wB4jj9fnzcg29+80F2j+zz52P48MNRkM5jRcg8F8rjuE0H5wa+cAVAntdC85KwXC5hMpmsbfx40xyLIbiK+vJVgmuerqvu+UJbSZe25lXWrqCBj/UyTuIQXaiKXLYpHlFXu19HR2Hd9POj/31Ocun/Ddax8WOKd1nhqRuaga/s4LAYEiSF2mWsRbiMidrRb5SmUEgGC0u4bYHWPe7e4LvnKK3tdhsODg6yuNPpNDPgAeROKslgF1KnmsGYvtu2kUOCpV2tBjMMS9tlNpvBcDjM3h8cHIgTA+500pzjmsGCvnM58rixlre3VcCzOJd8KNMfrMZLX77cWFnGGWhxpqBzVqIhlGYLlsslfPjhh7C/vw8HBweZwX4ymWR3pS0Wi8IuPQAo9LlOpwO9Xi87wjiERknI3tQca3UW0jBN0VTF0RLyzTdeXcbuMqB1bHEYhtavy1FgeedL24c65net7LPZrGDQCjVW02+Ub4/HY5jP53B8fAxJksBwOBT7ukRjKN/3lXFXUKcybJkbJPnWZXjQ2sfXbhim0+lAv9/P7geezWbZXOPiub52o7RFUVRwyLVarezee8lJdh2h8SOffMxlaWyXJCleXcDrW0pHA29rGp7zaWtbSf2FLiyz8CYePyQ/jEP1Rq3+XXUXUl7qJMfy0jys6WkGnrLjhOZfRU+vCxbeRNuFh4+iaM2BIsXn+WHZ2210xEVw924P/o//4w7EcbR2L2z+O3cC4u98TBa/5fmvv8vfy3RK4Xg6eXDpXTG9dXrSeBotvvf1Q8pI4wuRI4z2TXofOcKth8F+IsurURZmtUInq7ZTNnXEJkkCrVa+A7d4ny1keaTpJgDQyv7v7UXw2c8ewHKZwHy+hMUigadPx1ncdAduvcZhKw8KdW5I/NhqOwuBRu9qtSrcte6zK1rpkuxe24bPrmpNw6dHWvj6mwrf/M/tSNI3LU1LvjStEJmzzBi00B8qj7pQl63eEp7LIxZe4Pu+KfqrYps2Lsu4kdKz1hGGs254sejzbwp8dbwTd8ZeZ1RhQlI6NI5rxwcFOpyoso1HRFmAuw0xHzRIAawflcxpdk2u10kQiaII9vf3sx1vSZLeLUedsIPBAE5PTwuGPNxpgXEwLfrMf9M8rbRdV4aYJEWneJKkxwKenZ3B5eUl3Lt3D/b29gpOOu24OW7ACBFypDrWDDv8t4VHhCpwnIY6II1lbvhE0B2rlnSr8gI8PqlsOrStfMZa/I6Gc3S6/uhHP8riHR8fw2/+5m/CBx98AC9fvszqA/nlcDiETqcDh4eHa8d+YB7IZy0COX3eJjR6Q4ysrrRpWiGQ8vf1O23ORYOyRJ+VRvy+XC4r7xovU7dSO4XOEyEGijLw8VQtbWrcrzoepLGFJ2JoBj2NT/KwUtr0/3Wdsy3QnGscfI4JORWB5oVpad8GgwEcHx9Dv9+HKIoyuc5ydQeXD/CZ372mKa7dbhfu3LmTHber8Z+rDmk8cZ1DGjO8/vD9ZDLJ7orlJ2houpPVGMjppO9ov8U29jlXpXR5+fiKdB5f6lOh0OaE0P7G6zaO40wuPz8/hxcvXgAAZLt/ty23AKz3v23y3xADMr/3ni4+CDHY0jYbDGL4+3//bTg66kKrFcH+fhu63fj1bljsb6kTNqWBOl2pAzR/n/+Xjwym4aVvnFZXuvz9ej7Zr7U81vPUj0n20WkBb2oprZwn5DQlSTFs/oz9l++ApWmt75rFOJSm9f953GTNUbp+7yv9Q/r5e/6HYZDl0D6c/s93yEYRlhOvicFji9PvcRzB5z53AHfudGE+X8F8voKf/OQcXr3KTykLHedleJU2b2h2AYv+oM1Vdej/y+USLi4udkq3vMH1QxW7pjUO161ceSO0Rf1VaLKOxap1Urf9700f9296+TW4dJkbJ2w4dtIZa3HgbbqhyxhzXWnVMcAlR4hWL6mg2irE5eGjKFpzDEg0UyNnqMOKvwtJY1fAnXfUsJ4k6S4KWr/z+Rx6vR5EUQTn5+draVSBS8jfZUHaNQZCxzg1UiHm83n2h/edUIcYHmmMxqCqsChPljYo63TVftM0q/Q5GpfzAk53WWeZRpdVOOVGb41+V/pl6h8NvDi2AQD29/eh3+9niy1Wq1Vh0cByucwMzJIR1aK8a/TwZ4sBmCK0LXh4lyOJh90Ej7K2vfSNlkUroyanuPohf1dHPfh4jGRo96HONvH1C5pfyDjUyuVzcFh4thQXHRM4njXnm4VWKU7TDtmr5ugNNUS4FlPR9ufymwtxHEO324V+vw8A+jUTCM3JZ+WLnOZut1u4/5g7Hq9Se1pRdt7C77jQhfYHrZ7rGBNS2r65jssempGdt7eUXkh/tpbFKhv55h78RhcBo77ZpG4SWheW8E3rrbzOXXKLNlfQvuDigzRMevxwBAAJHBx04O239+H4uAdxHAlHEq8fSwyFHbH5c5pP8Tl/p/Hp9XrJ3+np8jTX81t/v/4sO1+tzW0JR7uZKzyGk3Q6+ipJivWTPyeFb+lvDEj7uvQO37vCRez3+rcoSh2mef8sphlF6Y7Z9F3+v9VKnbvpjtf8GcuP+aW8EfOAQl9IknQhQa8Xw2y2hNlsCQcHHRiPlzCZLF4fiRwOy7xr0Y1DdCcNkuzIaZDi+NLkJ7/x9JqWOepM31ovZWioM63rBK2vWGxhrvAhczSnIwR1tJeLT5TReX16q9XGEVL/PLzEz3zto/E1l92yDEJsGpqOVjbdbSLEll5WJg6Zm940XlcH1pyxVqfBDWzG7BCjrCtNF9AwRHevSunStDudDnQ6HZhOp5ly3Ov14O23317bzTadTjOn1Wq1grOzs0xQo44EqRy+QXmV+hoKqPR40Xa7DdPpFGazGXz/+9+Ho6Mj+LVf+7U1p3av14NOpyPugrNOINiXLA4RS5g6sIv8gvbJk5MTODs7g08++QRarRa0223Y29uDX//1X4eXL1/C+++/X4hL67fMJGSBz9hWJT86zkOcBFIaUl+jRjqLQCcJdU1N1Dg+6zJKWutL4rvPnj2DV69evTZy9WGxWMB8PgeA9TrAPkmduZLx3lLfPgeBr17K1plkVNDS2xbPKJOvZnjFPqbdx25Viiz0lakrl6IhG/Z0eWXTBhjOe6T8tf7F5RwpjPYtZHytVis4PT3N3mv1zfmxz5C/ybquiqbkCQ5psZWFDit9uLPMAjruq5Qd+4Kvb+KcQfPjC3tCFORdk9V2BbtgWMYd99jH2u02rFarwoJBTc7X+J70niPEGOiCZe7DHbLa97phlQN32aDOZW5psQnVHzqdjjM9OtfTtv+933sAX/7yLWi3WxDHEdy61YV2O8qcr/Qo4twJmzs3+TOn0fVu/ZnLW/Q/dQC7HL3ld+BqdEhhy8CXBnazYriEvI8KYWm4tB9kOWVx8nD5Xaz0PeUteZxkLY28PwILm//RZ+kb7nrFd2n+xb98Z2zxffTayRpFCdkhm5YJd8bmO2XT7+12Au12BN1uDH/zb96G0WgB3/72Szg/z4/gdbdHzr/oGHRBkvt8YfE3hqenOPATdHyypC8/LT6+r3rKgivvbWKb+e+6TN8UuD0j1GZssW1ocV3hJZTtH5KNwEpLSJ4+pyYNFyr7WHmKy0bAv9clX2p0VGmvMjRtQo9qKo8q9rgmedeNbio4YzdVIaED9Co1FlV2EFXKKRm5tXypAKU5UjRnRZIk2f2Gg8EgM/pQY9hqtcp2fuJdEhalv2zb+SaebfQLyfGwWq1gOp1m9z7yyYj+8bQwDIf2TqvvEIG/Lmx7TPqM2th/EehAp0d5AejOC8054eqXrrhlYBW+QmHhwVrZywhYIf21qgCnxQt1lmlORikOv1t7NptBu93O7jLWHA34rd1uQ6/Xg/l87qW/LK6SMqi1hyt8iBIR0sdo2taxFzL+6wpn4VVVBHIa32rk99Gjpa89VwFv/ypz5mKxUPmIpW4kOYHSWFYx9qGu+mxKnvDVn7VuaVhLO7vqe7lcZnwZT0LQjirX3kn9muaJNGC6eJx9FOX3FGNYeq9o3Q6nTUAah9JcS+vIMi4k2cvizOcIqdMqc7Wmo9H0XfKmZJzX0vfJpZJso8m/VftS0wa6UDrqSFfi5WUg6RFWGmgafLzwtAaDNty+3QN4vUvx/v0B3LnTg3a7Ba1WBHHs3gmLvzHd/DcAOHar0nfF334nbS6DlXHC6s5ZGlfKV0Ld7JQ2rZQ2PXYYsqOIuSO26GQFSNbSytNJWPy830VRnlb6n4aNsvwxHsbJ00nU3zmNCUBhN23xXauVly+Kis5ZgNzRikdkp3MFZHfN4h/WRRyn4fb22hDHEdy+nS42WC4TWCxWMBrlC5w0UB2gSV2K8oBQfVvjPRIf98Wn+ddZ5m3KIi4+rc15VfO5QQ5ev7Rvh8ppId+tYUIg2XnrSMf1XYvvkxMstFn4TNO8j8NiJwz9VgVa+eusk7r6kU8/qJJXndgFGpqGr4yljykOMd7VgaveWGXpp3eKIqjBhoKvNqJhkiR1tGorkwHSHbAffPAB3L9/Hx49egTj8RiGw+FaOW7dugWz2QyeP3+e5RHHccHJRcM3iSbT1/o4rX/JyYKrGRHaCsMkSXc+4I5NANtEZ7mH802GT7gbjUbw3nvvZUfFAkBhp0lIHpiPFoY64nzKT12TucsQ7XMo+Qx2rnxccNGyC0pLVRparRZ0u93CuyiKsqOwNSfZbDbLxv/+/j4MBgP49NNPYTQaqTRaFBZX+zbFMzctE2g0IKxOrDLzVaiTp0r/qtNAQLHttioDTrPUDppTB79R41KZeqVtalFa0YFHHY3oTKPxfU4jCSFjbhf47KYgzXPW8kt1OhqNIEkS2Nvbg1arlS28045ZxTaWxr+Ljvl8nsWZTCbwi1/8AqIogtFoBGdnZwCQLijr9XrqnbXbRJk5gDtcJWMwvcOLhtVkYS6j4xwbIqv4eAMdz1L+PlmrCjBvvgBMOlqSfsf3VvmuLmOjlPauoerd7XUDeQinieqTdPxL7UPbkH975519+Lt/9y3odFrQbreg12tljtg0byj8j4wOWPo9pw3Yb93xSt9R56v8nOdbTEt65897nZZIee+GFt7VvXicYlh+LHGRLgwbrTlZo8K35LVjFdOg8XOHa37cb+6YjQrxpWcaB/NN+18eNv+jYdx/GJfWEx57nNOANCaM5vwu2ThOHa9xHEGn04Lf+Z37MJ+vYDxewKefTuG73/0UrNNpqHM0RPaQ3vE5Uvrusgu5bBRl5muehgVV5o52u702v1WFJrfdoDlgO2py6y7Nv1Xhui5FC+saw1ZZX9JLpRMZ64RLTtw1HcUKS7vtcn/dZdpusI7SzthNTFouw/K2DPkhDghEldU+9JiS0DJzo4ZEBxqTUMjBFf9RFGU7teI4zo7Qwry1SUMzAGgo036bWuHhazf8jgrzarWC+XwOL1++LNwv1ul0YLlcwnK5hIODA2i1WnB5ebmmSNO0rXT5BOPQ77uEMu1JFR8pPvZtPFrW4rDxOQC0764wUlpWY5mLF0j5uejDZ03B0yA5bX2OEckwVIdztkw/KcPHrWnydLUxmCT5MZQAAN1ut7Aow5VPlfmHt0lIHlq9acZn7gjTHBRaPlVQZW7xjRlf+lL98fHN31WpjzK8oirKODJ5fIB66AqRsSxt60tL469VjG74nstkZdO6qijrXA7hmWUMkKvVCiaTSSbLWeUHjUap3XC3davVgtlsBj/96U8hiiKYTqdwenoK7XZ7pxfjVZlPfcZRrG8+p1jkZU3GkX7XDescy43tvnnSJW+V4WlXCU3TrMlyTecl5cf7LrYxyor0yiCLo30wiOGddw7gyZN92N9vZ8cSpzth+d2w647YaM3xWv3O1uI7f3qyU5bPy+v5yjTl+Wq0ud6HwJIGNp1EW/4tKYSnYaUdtMVwUeGb9p7m63pHd9rid3SIrsePXv92ved9N32X7nhFnpmGbbXSHbPpLlo8xjkqPKOjmNYPQATdbvL6jmSAo6MVPH68B5eXCzg7Kx5d7NLf+Ls6QdO3ODSq6s2aI3gbsM7z27IDS7D0gTfV2etqp7rG0bbiInxynsXuUZUu1xjx2QyroKpNqm7QMtfhg9gl3ihhm3z6Bjmq1EfBGRs6oG6wjqp1yOOic5Su6pYULt+EhnG4IafT6UCSpKvw+YDudruF3V6z2SxT/EajkTMfBL3vyEWf6/suMT0EpRFXHc1mMxiPx/CjH/0IDg4O4OHDh3B4eAi3bt2C8XgMq9UKHj16BPP5HN577z2YTqdq2nWVuc60rgPosbCIEINqXfxxE33c5fi0xLOGtTpCfEZF/nzV+i11nrRarbXViBJvn0wmMJlM4OLiAm7fvg1HR0e10EIVAMkZXlUgdzkRJacsOjPa7TZ0Oh2YzWbi3KDRVNe4k/prmfHhog2/W4ziVRyD20RVOsvGD5WvsN9hnmUcpy4nkY+Pa+3LjWs0XrfbhVarBePx+MrxwE2DjjUu27p4k8YHfTg/P4coijLe5boWhK+MR3o0mSxJkkwm7Ha7MBqN4D/+x/+Yfe90OtDv9wvzynXR2bQycF3HNX75N2wb3uZWA43LeW91AGtHSdPfSCfqerggg7ezFdKcrxnpXPVq7Vd8d24ovdvCVR83vV4Poii9LojLHNox6gAAd+/24R/8g3eg349f74SFtd2w+Btg3RlL36W/83fFZwDNwelygup52I4+1vLNf1toou9t/cTanXxDA9ORxyx+K5Y7D5qwZ14/ydq3NHzR2Ypp2HbL5k7Z9GeyFp6GpeFWq/X363/4rbjLdrXKHcn4mzqCcWdseodsGgbzW60wXkprrxfD0VEX3n//Ev7qr17VooO69F2f/mXRm7U8yy7IqdNJo8k3Lpq4fZPGq7Ij9qrz+V2HRQYtewLdpiH1vdDxZ/1ukSFDUNZ+4XLg8t911kVT0HRzREg93fCO6ripRxsKzthtVNh1cxaF1qElPBqaaFjcjWldseEyKErhqSJHlW0Xg8NjkLVjeTX6QmnbBUh04ZG09Hi02WwGFxcXMJ1OMwMe/ud932Wko+ATpc/gaBGAtTI1iVCjT5158ndljW2WOrM6K/GZH1fpa78Q53KZcD64JltLPYb2uzr7i4t2K2/W0g05pgYgPSb+8vJSPWrQZ3y2QKtviReFxNfosrznqNIfLHFpm/vmGQvNdPyFlrFsX66Db1OHxSZ5v8VB7ZMduMOBf5PysfZLXzqu9DSDkhZf4t8Iei9oFbj62q7LWSGQ5lJ+zKd1vsG4GH+5XGYyXBzH8M4778BqtYKnT58W5mvJ4WflLVY5BI+9v0qOLyu0/qjVSxm+HerYrAu+vkfzWq1W2WlE9Js2hsvOJ77wUjv4ZBLsx1elX/I5pSzdVfuKZb7Ccd9qteDo6Aja7TaMRiOYzWZweXkJrVYLOp1OYd6I4wi+9rXbcHjYgThuwe3bPej14mxHbBQV74WVdsSm9MDaM6UzfwZwO0PT77x4ND2eVvF5PU/9nT8/Hp+jbvXUnp6uW+hp0A+SrivvmoVKu2WLz+iIBfXeWPwWQauV72alYVInKnecwlrc1SqNl+6ETX+jo1ofxujQxR20rdd0JHD3bg++/OUj+PTTGbx6Nc3Kk9dfeWeEJLuGAOPhqRyUNo1XlIE0l1jtEWXB66TsPOay72zLIXBV5sGyuC6OFq2PuGRy2u+q2BAwb8s4ttj3pbFk9RVoCLEdhozlsrZDVxpN67XXfUxT1C3X3kBG6WOKNwmLwXwbjqRQRZYi1NBPGTUaUPG4NEu+IQIlGp9ovr5JClfi0mMoQ8DjuBi/y1C7zYFPnbFII+58WywWhaOgAdJ2pO1nrTM0/nFBfNMTEkddBrCmUZWWEMNXGSXJlz41yJSBNE40Z5xLoZTeW/ILFdaahs/wWzZNykOl/LgzZjKZwGw2M90dyevPxy+580oKb+0DFv7OeZLmVKqjrn1zm/TdMleEzO+83nyLpaTxV5Zf+8pfF7/j+bmUT1c/8hnzfXloxn7JQBVFUaHvufo0T9s1xlzp8R15Wtl96bp2XbrKwvOkz9vmtRZYjZa+vqLxNWve+D+OY1gul5lzrNPpwDe+8Q1otVrw9OlTWCwW0Ol0CvlSmqSd2bxvWA0dAJDJklehLTVYeaurD2hzmC9syDeefhVHnSQH4X+qZ6GxnV5hQGUFia4QaLxN4lHSvE1p0ep9G/o4pa8KQtu6jr5B/0tp0rpG+fD4+Bh6vR60220YDofZMea8r8RxBL/92/fgrbf2odtN74SN4xZEEWRHE0dR6oQFoP8B0HGV/iGdOY20qtPf0rvsCXjTFMMWd97id+kdzW89HVteHFq34WWwIopcDkEJ1sASDVJcHo6HiYT3eX0W+7MeVnPKguqEpd/y92mfxfkwd9Ti8cT4n+6SRedrGu91Stn/PP28DwMAtCA95rkFq1UCSbJ67dQFuH+/D8fHXfjBD87g5GSmztOhPEbSFXw8U+LTcr916w4+JxGnh9qnKB+xzj1VeL8mI4XE12go23aW/KR8bmDXa7V+jmOuDt3Fl79Pj+a0anqZJW/+zDdb8bAWmyHXe8vIZFp/rsLvdgUhNF1l3eoGm0fIWNP61pVwxgJcHUNSXeDMdLlcZiv1tTAIi+HBxeAvLy/hvffegzt37sDdu3cLxiTMfzAYwOc//3m4vLyEjz/+WKVfurDdJxxq4Sztv+1+gmVeLBbw4sWLAl1JksDBwQG02204ODiAxWIBl5eXACAfW2gxTNdN+y5OonWjbP+QjCV1to2k+LjGhORk07Dtdi3rGNAUxqbo2ibvSJLEZGTXFHKf40rrs/yb5mS0Ao2FfK7CXRu9Xi9zblQFrwsfD3N9L2vY5nH5mNwU/+aog89ViVt2Lg6Zh3zGJ94P6XvqhNDodDnVLbRYgDQiHYPBILsbdD6fw3g8zsJhPm+CLOxyQAMUjYZNj61OpwOtVgsmkwm0Wi149OgR9Pt9+OpXvwpnZ2fw/PlzWK1Wa4vryvSbJEmyu2P7/X4hndksvc/uTWj/6wRpruXf+fyMsgDnQa75WTMoav2lDgMn5rOtu4yrOkG3LRsDuNuB1q/vtATUtbE/ff3rd+Ezn9mDe/cG0O22Xh9LzO+F5c5YAM0JqzlEi45Od7m0uPQ5f+d3wOZZ2OngZNE0XOFckMLSd/5u5svMlYDP8ZqGidacrMW4eCzxeprcqSq9y48HztOixxAXaeDh0u9JFoYfJZz/zylId7bmYQHWnbKYFv7m39ApC9DK+v7bb+/B/n4b5vMVzOcr+OCDIYxGi9dxE/G/j5fyRfQSJFkAHTU8Ht4ZLfFfn+wh2TJ4nG3b0W5wAwC/7BSShut73bYgyalsoaUsKK+4wQ1ucLWwE87YXVKKNgVfWbmwhEqWdOyaJT1JyNMcpLibs9PpwJ07d8T8ut0uPHz4ENrtNnzyySdq/toxiDxNyekUshpol4A7Xi8uLta+oaG13+/DfD6H0WhkNtpRuBQA66ou6b0vvivNqmHqQpUVYWVWT7kcAj5nqi8tXx/X2i2kHLvKd7c1tut01rnS0XiixXDqc1SEpMu/VykndW7xuQrv0UVHU5lxaoHFmS3xP58hosyc7YM0vqvIQy4afOnSflDnwpyy5QjlxS4ZBPulr4yuOpPGkYvGEPkE6YmiCDqdDnQ6nWyHnMWI96ZBcqLXUT9S20ZRlPGt6XQKrVYLbt26BYeHh/DWW29Bp9OBTz/9tEAP729Smq6yoazf6/UAADJH72KxKPDOXZ27rQhxVocuvNkVSMZ7aTEILScd93SHEi+v7z7sUDnQMoZcNFw1hNC87fLRvqB9T8OkzqYoiuCLXzyCr3zlGNrt6PWOWAyjHUlclAPxHT6n/4H8lx2gNucnTb/olLXnZXPAyvmn8bUwvvdCSPfXyLrATMs3v4f1dUgxLLY9eWP6ln7PnaXF/KO1sOvv5OdinokQVv5d7Eu4MxZe75iNXjtQ6bdkrb/gUcbop1ytcgcurcu0zABR1AKAFdy7l+6QHY8XMJks4dmzCUwmy9d5+u1TLhk7RLegciGfI+gJefTZx/tdeqDFbtGE7GF1aFtRJp0ytp+yeb1JKOPgD7FnW+2PIeMVw1dpW+6MDUXVMRdi9yz7vSrK2Fl88UPTCMEm9A3rooAqNvsb1Is6xqXXGburDq/rDhSMfKvdQoy+FHT1LABkO1jpyv7RaFTY3QmQGjaPj4+zVXkc8/kclstlZnCX8i5rWJSEzG30TcuYQKPqcrksOL0vLi5gOBxmz7QepZ0VN0LfboK2jWQIq1tRoXndTLzbQVNzodZ/+HGnfEdEiGJDDcA8vuTYoGGs/Y0r1C4FezAYQLfbheFwWOqodg2bdFLQcklzHVfGtLrcNRmrTmesNIdxhygPF6JE0nh8ZxavU5fTwCejaO3GaeCQjkjmcfm3k5MTaLVaMBgMnPn7cB2VtdByYP3T+i7jWOc0XF5emseI1q8tSvZ0OjXFuQ5wtQl1UMZxDHt7e9kYnc/nhSN9tXSvGixO906nA1EUZXMo7dv4X9qxynkWXQAAUHTIufKn8fGkiziObQW8QQbNIc/bkF+Bs1wus+stkiSBz352H373dx9CHKcO10ePBtnRxOs7YqnD1XYcMXeAUqcmZU0Sm7Kmq+Xlzl93vmIcN21rb9Sw5WFLLIpyh+y6A7SYXjGsFr5Y9uJYLjpmMb20/xXTxHfFNLhjN6+3NEzRuUt3wGJ6PByGQadpq5V+T3e/0ntipWOLgdC4ft8s9i8kP42D18Ikr3ffpvngTvFOpwW/9mu34PJyDj/84RnMZm49TLK1SbqXy2bA+S8AZDa1breb2eoof8AT2SiP4HA5L6jTtyws84QrfaqLclntBlcPoW3XpB1tk7YzVx+XxraGUHpDdQz63XXiBs+jDI+4zrpLHQjtn8jz6zpl7gbbhdcZqxmuds0JtkkjLKWH5u2iyUeXT6CT3vuMpiHvpTLgzs0oylfd4a5PGh7v1MJyLpfLxhTyTQtmUp+zrsQCgLVjpebzeeFbt9st1XfLrgiyTNZXxWlghaV+qTKiOQY0ZxO+s+SjhQmpW9o+VdrJpbBtWwGyGMnLjgGehjV803OhREtT483XvzUHWghdWt9MkgTiOIY4jmE8HjsFybrLX6VvW+dN/k0yspTJty4FKMSJpJXZIs9wZ6UrnnVO1fqh5tR19XMKGtZVZ5ITg5fRlQ/PUyrDbJbeVTYYDLyGKytCxqtWhrrHYhXeKdW3Fo7+pn98rtcMQZJsvlgsYD6fF9q/DF+R6oC+4wsIdln+qtqePB1tnAKkJ/Pgsa2oc0jGJNe4t/Sdpg3TLnDeJYXHxZzUAO+Tc2na/LfEk1zzD12EhEdr7wqsOjXHtmRfX1/l7TCbzWC1Wr3mQyvY3+/A3bs9+Oxn96HdTo8kRqds+sePIF53xFJnWt4HoJBv/pxRJ7yjz0VnIL6jcWx5uZ2wrrzlb4U3yntXnHpBm5zWLf3Gd9cmSZEu3NmKDlT6PU+juIs0D5O/x3dJgvWbiO9cZSmGoU7YPC+kBwo7aKmjN8ni5sceJ4Vv3AlM32N6UZQuQEBnK0A6Hlar3Omaj7m8QtvtdEHM7dtd6PVaMBjEkCQJzOfyvO2yuUl6Ff3Owb+j8T1J0oUz3OnKZQYtLYk2GqYs3wyBliefw8o4iLR5uy57gYuGqwxLHTYJX7/ztZ9LRnbZ7lw6nBbHlY/VduUrr09nrQpus3Tp53xcbqN/WOBq+5A4PljtJ644ZeuP9nP0L2h99CpjV/uYC1XsW6WOKb5qFXSVwTskP5JEgkUoQ0bMw3Q6nez3eDyG8XgMx8fHsL+/n6V5enpayOPx48dweXkJJycnKk0hd68hfXEcr8Vxla0JWPu6xjjoUXO+tOM4zpirtKNGK3MT49Fl+G4Ku8J8NQOUZNjF73TxAY+jKQbUwE/DWo14GJfvZrgq0ATkq1SOpsaexkt4fylDi09wk/gt5cVWHs55WBRF2S4O3BlbF7S6cDmTLI4mPtYsDiAE8nPqtHHRX0aRKAvJ2UP5EdKj3VFn4VM8Lw4fv+eGq9yImMs/2m5xdNAArO9apuXk5fYZW3g4SpOlDqyOkjiOs7uVtbCWfhjSTptGHbyT8iPf+NHm2ypAZwje6yvtzsYdjtiWLt6kGWWvwpxYhkY+jrT06NzX6XTgwYMH0G63IY5jePHiBUyn00b6etk+IsWj/a+Oo8ejKIKDgwMAAHj58uVanjxtyuulsJKsS2VLpBvL0Ov1siPVkySBk5OTjellVcENkfgOsWs8kzonkJ88e/YMAFKbwGc+swf/z//zJTg87EC/3xacsBGgAyotO/2f/wYoOjej146r/BtSpB1PnH6joOnScDQfOV8uA+jveHwpf4luOYz0rXn+W7yvdZ2G9JtGR+INR9NPxzNNu+iIxHTyODQ97rRcd2Kux3PvjKW/sY3wjtiU32DcfOfs+l/ulF2tcudz8tqJjLtk87Jhn1y9Hhfp3bHLZQLpztiU5vS5DZ1OC37rt+7C6ekM/vf/PoHl0m94dc0f2lyvhev1etDr9WA0GgEAFE5eqzqPoB2B2wQ1+1tTKMt3XfPeDWzYlTqUbAyWudk11lxj0NXneJ2EOPZC7TQhfV+SHaV8qHzty8tqdwxFGbtLk9glOzOFJDvjglNEu91W2/S64TqVz9LnduLOWITFYHUV4TMYYRiEtRPyerLUW0jdovK9WCxgNptltC2Xy2yVXhRF0O12IY7jwmRFDQ4I12TmclppYXfJeeMSAnz0UaOw1bhrQRlnDR2D1vFYF72WNMrkxZ0oljHA28HXb7mBXkrPRZ+UpyWuFi5EsHKlvy0DFa2T0HmB8xmprFI/d6W3CXBaLA6iKulbv3ODuWTEtM5F1BgtHafVRF+3QKK/rBEe/4f24TLlKMPbXAgpM3Uu0LjcoMNp1cYmTUNKU2pzrR9wWUT7JoH38VAFnI8XazyJDjSSaYq9L10LHVdd3pbmYA5tfFjGOeVZ+IwnxkwmE5jP56JBtO5FUlYjbxVsylChzclWuQVPVqDXoUiQxnEVvq6l70Io76d6gJY/thMukqLvJKNqKN+wjCm8Ax6dsbugh1lg0cl2GUj7fD6HOI7g9u0O3LvXgwcP+tDp8N2w2i7Y9WOJMW18jF47IYvPLmdoGp5/k9Lx52PfBcvDr9Nmd8DyMkioq+usD0lOZ9E5S7/he3yHR/RCtvM0dzjm4dNdpTRu/lveLYs7UWlaIN4Nm9NL49EwOf9dL3eed0TSwd90ty/Pm9KDtOa7Z/NdtEDe5eXH+2fxO95Li8Bds+nRyC04POzAapXA0VEHJpMljMfyYrm0DsOdMC7ZDfmtS5bhcaS8LPYJKX7IXMfTqHPOrQtlZOky6dSlm11HSGOkar+xoGy6mlxmGdsYrmqZfPIdH+OusW2Vt7ktypp+CKrYdq1hrfHq1Jct4V36BaWTX11isU/Ugask328D1jZ21WFpZ+xN42wGUh1rA5Aa7zT4Bi+dXHBVxnA4LNxzCgDZ6nTtOGI8ssp1d6yWN+bvirMJhbqOPk4nMSktdGzTNnMZPzBNmnaSJAUhfRvYFD8ok0cVwcuaDu5YL3M8N23XTQmjPkgKncVYWhaagMvHDb0nZ1fQpGEcEWKw1oAOUOyjrrmA13vojhfJUEAFSTyaeBttGVKH1rC0LtFxg7vmut0utNvt7F63umCdT11lqMuZEJqexYChyQO0XLQva+BxXOWhczV1wFEaXDIZD8P/W9t/tVrBxcUFAKRHsvL75OvkN03y9U1Bcx65nLMhZcZ7SbENfvKTn0Cn04FXr17BaDQS54Berwftdju721GjIwQuWbIO1CHv1mlQoTwVsVqtYDqdwmKxyO7JwzB1y051jzPKVzhPw+8oD6KsI+2ipdfClKVFog3poXQBwJp+gvN5u93OTlO6avYAzZmxLWjyFu03tI2iKILj4x78v//vF+DoqAv9fhtarQjiOL8X1uKMzfMo0pE/A/ico/lz8TdNaz1d+k3Og8eh9Mjv3TRpdGvhQr6HIookh2whhCMM181yh6sUjn6naWq7ZbmzNY+TZO/WaVm/H7ZIQ3H3q/Qtd6oi/4leO0wx/fTOWKSH3iOLztY0j7yMmE76Gxz/80VveZ9Md8sCRBDHabna7T5885v34OOPx/C9751mi0o1Hpq3kT5vWxducd0C08dNE9pJMTwN13eOJvk6raerNn/coBqk+Xcbc3AZm13denzdfV/iNVSfpd+sujNNOwQhtpamULW96mxvi22N+wQkrFarbJNc0/zzhjdXh68OSztjt9U41KgmIdTotWlYjKIWRkmVeYnp1gmJIS+XSxiPxxnDQKZADe4htLn6kzVO3W2/qcnBZzTX+gMNLwn/0rOPwb8JqOLQtSxkcIXX2lczJlvysNIXCqnf+fiulQZfGTUe4lMurXk2VU9VodHF+4dPofb1U9kYFcZPuWHQB25QXywWa3zLWpeh4Tmq8gCLUw/j0LBVx6k2n/L6cNEkpaOBG4BdaVYFraMQWi1KvOYc9UFysFaB1QmYJAnM5/Ps9zbk2W3J0D7eJPVJrY1CeL5lbsf0Tk9PIY5jGA6HMJ/PC9d7YHsNBoPs3l88ytjVnzTZwGXE3TWUpZPLw9qchrvELy8vs92x0+k0q3NNBnO1rUWmqQKfTM/DdTqd7Ds9lUjqO1Zjv0aXVY/mOkoURZlDYNsLQa1oisay8ievf1c/ofX/8GEf9vba0GoBHB114eioC4NBnDlhowheO2Fdu2GLzkv59zrdtAr19wDAHKt5v5W/rz8X49Bwcn4S75fr0hXG/b7+/pPmw3VEnRb8lpeluNO1GAYAnZOQHROcf0uIg5O/p+ljmum34k5ZDJs7YIvPaVyeR0TKHGVlyNuXl4mWlaZV3AG7vhu3mCbm22pRZ22+6za9QzYCaiJBOlotdMi2AGAFg0Ebjo468PBhHy4u5nBxMSNx9HlcCqPpMpJ8wONR/kxPGqJypkt+tzhvN6VjNS1vhqR/Feaz6wpf3Vt1KAqrfmgJWyZ9a96uMGWdopptWHtH05by1PItW2912C53abxK5dHsGVa9xCLb76rP6wa2/rlTxxRfV+BAKmNUc8XRVk/UMSh9acznc3jx4sXae7wn7wZFaIxZeqawOkikHTwWmnZpErsOwEUS1t3giDIC5nVFVUfbVQU3KNN5A79L762gfNnn7Gqi7mme8/k8M+jyMHXmzevP5wCx5q3VmWaIwUVKTTgvy4wXSz3zMPS4XImWUOVQSwf/W4zVdMxoc6N2v6yUL4Lfm2VxyLraA9OgtPj6wmQyyeinTrk3bZ7gDkludKzKL1yyGU8bV9H/6le/ysK22204ODiA5XIJs9kMFosFLJdLuHfvHty9exeeP38Ow+EQRqNR8F2hfHHjdYQ2rqWxH8cxLBYL+OSTT7LvVA9yGZy2XY+asxj7w2KxgFarBQcHB9DpdKDdbsN4PIZPP/1UjYu7guuawzXexXlgkiQwnU5hNpvBfD7P5oZt1/GuIorSU6KSJFF3yQP49bhWC+Bb33oAX/jCIfR6MbRaEXS7cXYvbDrH5DtjozUnLHWK2pywlAzNAZs/23bc0rCuPHm4Yr7ae7n+ZHrztFxhm4UvM9d8L8WVwkeO75ZvifguKjhgaTgeBtt1/S5ZIDthMS46V3ma9H3Kl3CXfnFHLN4PC0Adr8X7ZvEb/Z+PE94HcYdsK7t/+cGDAdy61YWf/vQcfvzjfOGcBmoD5PIfPx2LxsE/voAVoTlbfHMCP20Ff9OFZZuCTx+9wZsBS9tbF7dhWEnv42PMklfT/ZLrdj5bhRVl/A5XFU3JoFKaljrVFsD47Ai8f16VBY83KI+ddMbWsVJik/Ap+3yVmq9cmkJM08N3fHWcb6WLlJ4FmlOQ5ms1WIYwsavSB6oAFXRqtJeYr7TyMWSsSIIJplHnaiekz0fLtqHVXZVVd3wsSHlKq1F9/MH1XqK5LkHOihAhyKUkSm3hSrvucm1S4JHayOUYwDiSo8qaF587fDTR95R/SLRLCo7PcEB5D5/jpLAc2zK0S/MdvuNtSO+atKJqeSTZwSp7SE5Enm6IgmfNnxv7ffKEJPdYFsFospQrnA++/l5mzGJZXAvuqo6JXXGgWOcxV1yESwbmPEUqv6XN0LGC13GgswUdaCjP0T9fmaXxQfv1LshMdcEit1r1JEtYnu8m4JLPXfoUtvX5+Xm2aEmLP51OxfR4/pwOaa6y6mY0fToGkPZNI0TX4HM1visztpow1Lp4zpMn+/Dw4R7cu9eHXi+GTqf1+ihieK07ohM2d4Lm/9cdo/h+3Slqv6+VxsHfmBcNW8w7z4N+L4YvplnMV3fCSvHWac3DaOHkOM2Adz2eX37cLwDd+YnxaPgkkeYV+g0AXu+WxbTy92leUVSMi2mm/bJAaZZOTottlyxNA9gdsXnaxXtk9ff0e7FO1vtvHh6f052yxR3E2F+RnWEd4f/0DtkIkqQFd+/24POfP4QXLybZDlnLvCbJ1TwclR/QESsdR+xLR8LBwQHs7e1lxx6fnp5mVzGgDcrCF+u2NfhsmJpdtIn060SIre5Ng2sslLHHId+x2ji2ZUewwiU/8nLSfsZtD9qCfC1trndI9ppd6s9VxhjtAz59q0qZXX0M8+Y6I1/AF0XrduQbbA8WG5UrHMCOOmPrQFkFqymECBBWA1mS5E68MrSE1o9L0UaBzpKva6JEVGV2u9T2HJLBfrFYZLuKkSHziVNbUYOM2dJvrMLJrtdhk6hiZOE7X1wGVu1Zg2XcNtVuIenWQQPlD6vVqiCghBoM+e9dFbglcJqtBsQ6FWRqIEQeT3dsuQy6Wv/Hd3zRCX7T2rpq3yrrfJLmb60/8XqR7jm2lkNTfELKUNV4EQpJGbbSG2oQwXkvRGZCaH24iToKSRPrTrpHbJNzMu2jTfNMNPy5dgyXLTsvh0/2pPlpdd/r9QAACotTOp0O9Ho9WC6X2a5mF02Ur7rKfJXmqxsU4eMrUvvGcQzL5RJevXoFAOmd0dq8SvuZxst8PLWsQxbHETqMr3I/bZL20LrRwn7lK7fgt3/7HnQ6LYjj1utjiYt3xFJHUqpHAlDHJ3V6ag7S/LlIDycL49Bved7FZ54H/V6MX6TD/W69vmQa1+nkcDePO25ZUOefK0zxe8Te5w7VdRqLcxd+y+Pid2m8R2vx+LvcQSk5WGm6RecvFByw+TP9BgDZblfucE3f8/D0P2RHEdP6wHd4B2x+xHHxe1YKNhZWK4A4pmVO5bPHj9MFEn/5l58WjiuWwPUbDv5utVplOtJiscicpdoCzxBZ8fj4GN5+++0s3el0CvP5PLNhtNvtgs4nYds8/022U111hOjAFschBY4z1/igYV1p1QWrHCDZyTWbpPSN6hbUiWfhDZItw+LArQOSntZkXhJQ75bayuL89LWvZitCSKedYjta+vINri6urTN2F0GNbD6HD2UGVKGWJhjLZCINZJ9hir93GeIp09buoQhxpljCXTVDFa0rqXx4DA2tX83hIRktfU4B33vtnRW8n0o0URq2LUT7BBLX2PCNNeqUpWWl479M+V1tR9/7wpVBSJu5BL8yjhMpbRctZXgkTT+k3izHoFqgCb5aXYY6aULC8DbC391ud03Ip3GpEwnT4vMdTVtaYKLxR8npFiqg1jHmQhQq5AUarXWPT4RPvrCkJSl5tDxSuDLl8fGDOupNUvKkRR4h6fJ+wed3mrdv3IaOZQ4p/Tr6VhPyFaULeQW9H1dShC19TAujjVsuY2m7/jmsdYLlQAUb40mLGqU2w36DxyBPp9PM+XaV5F4Jrr7JjTIA8hzLx62vv5fh49sCHQOSrM/Hu8arQ3kzrUsqv9JvljQoLbuIJvqAa/4N4Rkc77xzAF/5yi343OcOodNpQbuNC3aj18cTQ/YMQJ2ydPxwp2f4na05jWn4YlieZkTer6fP09ZoAMUJK9HAw2jftXc8Lx9CwkrDhpZBDrvuqMVvtIxJweko3yGb9yvORyhfBOB3roLDKQvK0cXFd9ozD1/8lrx2whbLT+PwtPi7FOi4TXeypmGo0zUdp1Q/z/PA+2OThIZP6zVJWqSuVgDQgidP9uHwsAO//OUFDIf5ccLaJgZpnnMBd8ZSfYLb1hCSzMn1Np++ajmNo6oNri4Zddu2JAuuAo1NQrNB83ch8fn3svaAMjYlC038ncUuaoEWjuqiWllQH3EtfOW6Cz3SnOu7dUDT+0Liu6DZKSw2RnSE+tra14cke5oUV+LLbzrvuIqw9AOKRp2xZSZqLmDgOykcDbMLsNAklc3HWJuG1XjnU+w1YweW0WIYKGNILBOnqhBZFVqfxgkvRCjR2gLrXBJWLe1hySeU1l0crxQh9GnGePwtrXDCeFEUqXdH+ZQLC41avW/KUFbH+GqCx0t0SU4Uq4KHAiuAW7m11Ac3fErhqaGUx9X6c6hBVgqL+XU6nUwwxz5urSdMkxt36VhxOWF8tPoUHDpO+TxsSVOjzTJvhjrqQ8aPRV6i37X3vnJgW3Mlro7xqfVd15Hu1nTo+NbmQytoWUPuf6XKHOUZGt2u/ll2jGj5bFOWloyErntS+ZjTeCT9z/OjcBlKfe9C5geaT4i8irwRjxMcj8ciT7pKyro2H2k8T1qciHMl8ghXf2iiX1etd+z3PnnEZ5zRHPuSAVBCiM4KYF+wsAtwyVDS7zpRV/20WhE8frwHv/M796HdxmOJ878owvYG9XdOU+4AzH/TMQXkf/Fd8bfsuOXp53ny9H3PxTSksC7a+DfpmZdD/FpjF/elRbshL0v6PWHf8jjFd1imJAuD39Pw+Xf+LYrQGVnc+ZrTkpBwVJ4qxsdji+kzKV2hLPQ7p53GeU0lK3NEwuJv/h/LLMkC9Fuedzpn53SgUxbrKUny44vjOD2qGGAFDx8O4PbtLjx/PobxeAnItq26t0++kE6f0+YPLm9iGM6/XToBOmF8aFr28PFSrlNqYcqmXxVXSTZrAtY20U4qAljX+0J1Yx89oTpQFR2S01DW/q+Vw6XjIi+w2KwwrHRcuY82q64k8aGmbf9aPlRvpN98+r1VdrY8czoseNP5yy6gTD/kbd+oM7bMJHcVlLw6YRE0rHAp6BYDLTd+agw9dPBz5qaFsbQ9NzSUxbb7mWsyR+aPxxYDFFczzWazgiEK06Npu/KjE/a262EXQY32HFbBkhrRuHHZagBzGY12vd20/lhWcKD9VXLSSPmX4VMhaaADweU8oGnVAT6OqRAg9dmydY87VjFOv9+HbrcLt27dgul0Cs+fP8/S5oJ9qCNx08Ik9iGrMwQgb2PfXLZNwVgz+qDyxR0XVrTbbYjjGOI4zk5voPk02feldqL8mZeZKnfYVtoc6WpLi3Bt+YZHzKFCO5lMMpok+kPGzlUFLd98Pod+vw9f/vKXYTabwcuXL2EymcB4PF47wlyCy0ggzaFYvxLPDjHI4BjAsNPpNFuggndonpycwHw+h8vLy+xuT2nximtuX61WMBgM4K233oKPP/4YTk5OoN1umw2luwjaLj6jES78oactWGWhbRspJDqlO62pnNhqtWA4HJZuW1dduAzw0rhJkvVTXHg6lIdZ5sdNwjWOQ42vVYE8P6Ru3nprD37/9x/CvXv910cTUydsfjxx2gZ096vsnAWvkzQNQ99p7/P/+XvMS0+fhl2nh4ZZp0Gjy0Uzhex49TV/8XtdfYXOSX46kkQybgNwB2PCnKf5s2TDyesDHao5inHz37lTlIb1v7M88/iJGC519PLji+lv2SGLRx4nCWROUnmHbJoWdcDyPkqPKwZIHbFR1Mra6WtfO4bz8zn86EenMJ3mfNzCcyT5D52wFnlT47/UoXLv3j346le/Cnt7e7C3twfT6RRmsxm026k5uNvtQqvVEo/G3EU0wcO3oZe+ieDyudUGbAGVt2g83GEemp4lvzr7Ih/LPH2fHsF1nFarlY1xCVw/xmPKrwpCbaSS/idd9xfqu3DpNNYjn98EO8B1hUufdeFaH1NsMahdd1iYCq0nHl5iLNtmFCGG0l1kaBbmLhmXW61WZgREhJSPt6XFWGEBdwpZ6Gt6TLrSt5bbR7vPMas5zSx0aDTReNwxp4XR0ikzRqqOp1BhW+JHVeFKxydYcecnN1Rymn10aOGt9GntLxlfQ8c0d160220YDAaiAdZaNs25pqHuObwOx6CFFl7+bTtp6V8oLegk0HZBcznBNX59sI4h6/jg+Wq0SelradH+rwnedOzEcZwd7z2dTgsLHULrJ3T8WOFz0DQFPCr67t27MJ1O4eLiIjOW+IwN9L2lv9D43CkWWlbu4Ee5DMdIFEUwHo9htVrBdDotyG1W5R0RxzEcHBxkfWhX4eqXkjyL7yU5hhsttLRd/MKn72goIw9Z28U1d6PxbDabrfGskHa38j/pu0abtS53Ud9ywVevPl5vzUPq41pdRRFAtxvD7ds9+PKXbzl2xCJ9xXHFv71ONXtP886f0zDr79bf53QWjyXW0l/PS86Hv9ff6XQVaQx3wPK0reBpursK5f1ZDDUuhqHvsb2SzCm5Hi5/xnpKsu9RRMPx3arFtIph0ZEbtks2Lzc/7jjJ4kNh5yt9Lu6ezcub/y7WreyQRbp42bAu6Q7ZVit1yKbfkkKY/M5alPPSdojjNOG7d3swGLThl7+8hOVyDsvlOg/Wx77MnzW9g88nVO7Uwg0GA3j8+HEhHkA+/+AiuE04Y7cld0r5hdjDLPKHFO9NQpmyW3UgS1iq81rT9NHi0/tcspfWVyz9j5fFIpdxeix8B//z03w0fcynT/vaqIo91CcXW+2FUnv46JL4q6VvaHqPFM9ia7hBOOqyIwOU0xU1XGtn7JsKutK6DtSVTlnDRVPhdxlolFksFtDr9WpjHnW1JUedDK4qNtH+VuMivqM7HUIcDlI8HlcSzJJk/ZjkXUccx4VnqlxiPWAYi1NM4ge+OkdHCV9R6coLdz1hWFxR6LuXAxFCn8bjNCFdckBod3q7jLI8vHR0DY1jFYLxz2VssDplpO9N8yRJMaiidG0KnH/wtqA7N5fLJSyXy8xJgN9oH6jC/zEezbOMk4waolz9RlOuKL/lz774vCxYT51OB3q9Hty6dQuSJIHxeOw1crkU+F3oO1UROj9b+BNXXBG4Epzed1R3HdI5Ch3JcRzD5eUlDIfDLJyLZ2J/de0AvWrw1TUdY5JRmc4LlDfw+QLnWm3u26Uxo829AEVnLEBR1qH/MWySpMd7c3klBK7+SPOR5CIt/i7U9yZoCMkjZD67c6cP//f//QSOj7vQ7cbQakXZrtgogrX/6Zgo/k/py9/RZ/yd/5fe6e+LaVZ1wtp2x1KaaLUXm2Dd+So1ES+fL3wZhKeDjlUpbvFIYSluFjIBkI7kpXnI32niScD70HfSc/Fb7sDNnbnUCUvfQ8HpCuQ3/5/vhC3uiIVC/03HZwSrVeqQxTrDP/yW3xnbgtRZiw7NfM75+tfvwNnZHL73vRNYLGRZ1CeT0jAuSHOfxp+GwyF88MEHmVyP8wie2oJzylU9eaMphMgT18kWuSuwzreom2rh2+12oV3K9HNuY3DR5rKTWMKFpiuB281cNpJOp5O9Wy6XMJ/PRX1kW3Key1ZUB03dbhfa7bbYL+jJYNY8Nfn8hr9uB7ugn0i4Es5YOrFxIWMXFe6qNEkTuYv5l2XiVsO/RlPZfFzODR7H6iDQ4uxi//CBGpy0y8MR3CilAQ19Wr1a2tXXB6QJ3tKernR8tITEKRM2FFrfDumz1rgaf9AUMZ9TcRdAaaROGoTFmC71DZ9R2MUzaHyq7FIBlzqnqHHZ4qTjtPrKE4IqzgdpPGM5+/0+LBaLTDBt4ljFMrCMA5qvZCS18hZt/PniWtukLscRlZu444KD9ld6NLOkhPDwND8ahr/30VomjCsv3xiU6hnjWOZLyQBG6zyOY+h0OtkcLI0ViQdJNFbl3yFpNG1QwjLhrvvlcpkdwYv5V+FdUl/3ydZlge1N2xYdwHTc8fqX5jtOq6sednU+p/UvHf1FQceaxZgsxdfSCU2rLKR+JeVJaXG1qaTj8XJgOasa9apA462boKHJdnW1ER+vVWmIoggODtrQ6aT84d69Pjx+vAeDQfx6J2zuMEr7Rf4fHZD5M6ZZdDJhWCF38r34nqfHy1rM07fzVne6FvOR3sl0SvGkb1I6vrAS6uhqrmFB0y+GW78HlsfBd1jG9DnJ3tHvdKdsMR46J+WdskWHaP7OskuW10GRpvV7ZCG7t7b4275DNq87/o2XmZcxioo7YQFSB+5qhf04Ic/UyRu9DhtBu92Co6MuAAAcHLRhMlnCdJovzHXZCHw6ixbPBwy3Wq1gMplkjpblcpkdhezj3WVsM1b40m5yDg+t2xA9fRM2yE3IOBJC662K3dqSlyQrS3JTGfsyxg210fhkQhd84S19i8spkszIdQ0atqqz2kpn03C1OdUV+a5gjKPZinyyf5U+z2msW2+97tgWXywDkzN2lwq0K3RsClhe14pqywSBTMNy1yJAcaBL9xxVRRlDLYaTGPum+oU0FkLHB58McSKwghoYXcJzFSFg09glHgNgE24s8TXBx5KGFBff+3ZEWJwtuwJaV6ggUgcGBdZJ02XgO2O5kX21WsHdu3eh1+sBQLqa8M6dO3B+fg4/+9nPsvue0RmDhnkLrMZ6CT4DsCWuNpegE3Zvbw8ODw/h7OwMnj17BvP53Js2pcVSHk1ZsBgKfH1ccopY6KaQ7iF10bMt3obKFNY7LiCg9+ZoRuVut5vt8OPH42O6cRxnjrRN8RWLwcincPN0+O48n7IuOUowHepMpGnjGMJ7MH3lcu2M2zao06ts346iCHq9Huzt7cGDBw9gPB7D2dkZLBYLOD09zcLwfsodWrztMExIWWj6ZcqB6VDHo7Q632rM5OWmTmqN/iplqBvIawaDAUynU5hMJmt3WGnzDB1Lu9Tnm4A0N3DZI45jWCwWhb6FcTTdDOuR9qGyepw2f9Gj61F2o+Gbbjvf3LvuoKumt/G4aLirijiO4I/+6DG8/fY+9HoxdDot2NtrQxzjvbDokKVHFMtHFeM7MDhHi89Ije6Edf2W0qV0uPMuPue/tfc6nRTr7b8exv1Nc4rp6WjgDsDXb9WwGj3r39Z3zebPEXmW8qIJ8XToXCvFoQ7YorOYhyvSnqjf6XORfyCvS48E5mHSYPieV1yy9g2dp+hMTcsJ2W5YdFZj9pyNFfstynYJRNHq9ZHErdfpJHB83INvfOMePH8+hu997zSrUw4qI2aUJ+6TXiRocwnK+3wOBgA4Pz+Hy8tLWC6Xmc593eddCu6I4ihbF5usx12R+wDs9UX1hzrpT5LEuXtRk8s1mwNPI9ReuylQeqW7cik2oTNItp4m7LwhbaHpHPQKGK2+ptOpaI+05EnT9PlgNIewNb8b5NgGXyzrlyo4Yy2efQy36UJWXVFQNY2qCKkzn5GCCmnSdylPl5He58jV0ilbn5b+VCZtq6E+NE3f4KprLGjpUEM3MmpJUA+pM96fEK5Jusr4cQk6nJ4q6YbAYqyn+YQImRjH4jhw0cPja9+kuDzsrvBxX79Cozb9o/3cpZz6DHAStH6gCZDYFxaLBcRxDHt7e9DtdjPnFX6XFtBoAiqH1ncoH5ba2mWwt7a1VIe4M3I0GkGn08mO/9TaQqPfNRZ4fUg8u4qRV+sbrn4k1bEvHUt/qkq7bxxZymbJE+s7jmO4d+8e9Pt9ODo6gsvLS3j58mV21FlVGSu0b0pzV5m0ePvyfqv1N9d4KiNruMYQP+68DM/W5paycMmVZdJBGcdiEON1xWkJKWPV+vCNwTLjgvet5XIJ4/F4bUGEj5ZtgI8dq6FNmmt98pP1W9l5j6IpWcmlT7jmThfv8clAvr7okjuuIrZJu6+u79zpwa1bXbhzpwdHR13o9VrZscT5+Fk3BufvoPA7BXdUYjztWYtXDE/zxu9aPulP7oi17o7VaeH08G+W7/p7W7wykNJCpx95sxaWdx/8lr/PHaH4jofB+sz5YfFbkmA6ydr7tC75zld0wHL+tL5LltPOwyBdlGZOk1SWvLwRqbf89zryb5gHLQ+vJ6nfFnfMpnWejockG4OtVn5UMd4hOxjEcHDQgbt3ezAaLWA4tC9e1VBWvm+1WrBcLjPn63K5hOl06l0svOtOAI0+Lt9r8kiZOcJiN3oTYLFFa9BkRJ89y/XOApf+aIFVr/D1S5dMp+lBWtrcRkV/h+girjwkWORVq43V955/c73T8uPpxXEM3W63kB+330mLzUN0G67LuMrExwSPs+u8+E2CVU9y9WfElTimGCCMwe8iqkzQ3EABIN9tyGEJQxkvp5d3oFCl3gVL5wzBVe4bPuAdUgDpxNHr9bIdhFGU77yzTrIas79BM3AZ9PE7PksCWRRF4i4Rn4GQ3x1N231b9xVQenGVLq4463Q62bfValW4ixV3BmE9YFxaDk2Y9Rlt6VjQxhEXlgAATk9PodPpwN27d2EwGBTCoKKL6Ha7mSLsg0Vgo8+aY4Lzdp9iIAmEiMViAcvlEj788EPo9Xpw+/ZtmEwmpnJY+ExdvEiao1wCkja2fLSFKpx0Dq7imOE0UdB7lbV5PTR/xP7+Pvydv/N34O2334ZvfOMb8Fd/9Vfwb//tv4UXL17Ay5cvodfrQafTye6X2QakMWqJI/FVabcl/S6NL/5d2oUg5auFQRpQUaQ7z6pg14xFq9UKzs/PC0fmIbAtyjqicSzw3fu7KvNw3t9qtWAymcCvfvUrOD8/L9zhWZdjfVdB5zL6n/8GkNvTcr8p/25RpqsipC9jW3N5jfIYAHDKFS79D+dAqhuEAOPRunXxzl1AmbHfFL/4rd+6B3/jb9yGwaAN7XYL2u2o4IyV7odNmxP/5w5SzRmKTVF0JPneradXfNZ+F9OTn4txaDj6TgrP3/O4/Jv8zh3WHbcaaDdaTzdaCxe9dvrJ72m6tA213bJUz6Tvef7F+Jg2jYfh03B8l2zR2YppFsupOWSlHbTu36kMz9/T/1B412rRRb0JrFbpe3Tmpt9xpyzAapVkYxDrDP94W6R10CJ1kP6/d68P+/tteP/9S/jxj89AAjfYY9ksi2cwvpQmQH7KShzHMJlM4Oc//3kWJo7j7Pt1RKi+RX/vqpxYBWXm+TJxeb+UbL4hdLh0Lmt8SpPLBuayhVghLca32jlcjlhu85JoRT2K8xJcRC8B06eLPkPshNa24f4Mza6loWx7aOh0OnB8fJw9z2azNXl6Pp/DaDQq6GWWHbmudnSF4XgTTgl6kyC1ZSln7C4qWmWNNU1iEzSFDlBtQnQZFV1phTJfKb7GsHz5bII5baI/UYOGb2LCHWqSgcYK62RWpf9a4lZpvzod+CGOlRBwg7vLOdKkw4oqeS4j5rZ4Jx7duVqtoN1uw4MHD9YEzNFoVHDOlhFmy8JS7+12G+7duwftdhtOT0+zsO12G+I4hrOzs8KiCim9kHb1OZjLpivlgQ5L6rzEdOnRida5gNJo5TFSG1jjSnOJa87RHGXaWMkNO3KZqvZFHy2cDl86VrRarexIJ9wZ++jRI3jy5Al88skncHR0BOfn54Ww9PhjjpB6oGUOKZMmZ9B+66JL6l++fKljhCtNqNiOx+NCPFfflRTVMn3JJXO5wjQBrS5x0c3Tp0+zHRuz2UzluUmSHw2qjQvuGNL4LHVENQELf3fRhr8XiwWcn5/DdDoV64X2jW0q7FifaAzqdrvw4MEDODk5gdFolPEI3iYWmrU5rU4da9Pyj28ewv8uOd83D5SR82k/4gsj+Fy3i6hzDtR0Mm3esaZ//34fHj0awIMHfej3Y2i3WxDH0es7YumO2KIjNnrtsEKSaLj8XR6Ghsu/FR1wtHj0PT4XZfFiWjxdqOCI1eiQ3+fxpG/SMwjO3rUQDXdrKX2py9Bw+Q7aohOVh8/f5c5T6XtRviiml4Yr7kjFuEW5mH+j/4vOWxo3p8O3Q5bu1KX0RABsJ+w6bVTG55VbdMTmZc3/w9pOYLoTttg+OAbw6ON0vKbpoPN2uYyg3Y6g243h1q0ufOYz+3B6OoXhsHjShYWnuviMlSejrEqf65AbyswJXNa1yKY+PcgHi35WRYfh8/euocrc7ZPDaDifbOarf0nG0+RGS5/AML4F8ZLOVdb2RtN01Tu3d+F/a36UPq4DAUDmhHU5chG03q0O6yrwjXmpz/lsplJ9Sn2K/ua2IdRT5vO5eCpRaJ+gdjMOSQ/ksvcNdhtVx0OjO2M14/8uK3K7Bp+xkQ5Yy114mgHKZRSi7ziTcxk5LXBN1E3u3tt2P+SMnO9ipGEokiSB2WwmTrghAskNirCMiarplnFG0HR4mq6xIzm90JBdRx+oc/y0221IkvROhn6/D1/4wheylbpI7y9+8Qt4/vx5If+6oPE1CdoKtV6vB5/97Gfhzp07hd21+/v70Ov14K/+6q/g5cuXtdFsBeczocI97z90BTUKjNpcoUFTrqyQymTti5TfVjnSmTodKE2u35uANC/gex/f4MB7m6Mogk6nA5/5zGfgc5/7HLz77rvw/PlzePDgAbx69aoQli84CKHbanyhZbE4B7Rdyda+Z+3LeHcuVdxmsxnM5/NsJa3rBAtL+a8bVqsVjEYj+OEPf1ioQ0nRleY0Dq6oS0q0Nh/X6djjaVrDSqdZzGYz59whyQbbQrvdzhZWDQYD+MIXvgC//OUv4dmzZ9BqtTIe4dNRAIq8TOIBrv5QhwFNQ5O6g8S/eVktczofN1ofoSeNSDuJaX/U2uOqIlRmcKUT6iD4whcO4Q//8DF0u62CI7bKjtj0HZXdiuXMn9N06DstPOZRzK/4vB4nTb+Yn06Hi4b19zntnP715/Uy6mG1MPX383XdTgojfY+y9+tHBBfTSRJKO9/pimlQR1gxHXQAFx2mKQ00Ds+niGgtHM0LhB2ywHYB53Sl39bDyb95HsVvmFbxG33GHbG4ixZpwLpD52te7qhQd/R/ux1BFLUgSQAePBjArVtd+NGPTgvO2E3eQYnyfEa9x+mySZSRX3yyhEXWoL/rkM93pT6bgqVOXXXP7QsStNNAQuiSwuOCYXo0rRY/9D5SWq4yzlTtmX9z6T4crVYL+v1+diQ5Tac4BxRlGMspbtsAlf9D52fX4lwO1OUvLy/XTnspIxf4bDOWsDfYPVhshRY06oyViKgi3FY1NDSlnNcNn+FcK4dmoKC7mrR0XGlKeVapS618TRpQOLZpTNAmQBekOuPtaqk7brwOqec622aXxqDLmCUZsUKFgDoMpJKxx+WMCBVaq9BTJQ2+y6nVasHe3h4AFI/nxh3hGI4f3cnhEspdShW2FToE0PlIHW/oIEbHynQ6zQzMg8EA3n77bZhMJjAej7MViSjY4ZhFZVgSDi3zptZ+lCfgn/WIE6mP8b6FAv3JyUl2dHGIU4v2XW1estBYFw/yKY4+47OmrFmVKSnPTcxNoY7IJMlXiGK94dHhEkLLEGLoQHq0ccOdMvSda2zx/snDU/7gks3waFyqwKES7DpyV+t/aJTARSuu8CFw1bmvLsrk5XNYJEmS9S/f1Ro8Dc24g+XAOtToKKPYS3RVTYPzIW3e0sJtQ67icwW2XbfbhTt37mSLqOhOe65zWPoHjyfVgaTLlO2/Gg1V2ljSnyT+I8Ei5/O6oXXgW+jpyos7Y2n+2z5CTRsvGqS53iKDSemE4v79PnzlK8fwzjv70Om0II5b2W5Y3BGb3juJfa34n+advssdTzRM/o4/A4BnFyqNmz/T/PI0eXo8rE6DFE+nDdNdp3k9vvRde5d/25w9QMprvf/x7/x97hgEYcds8Tnf2ZkoTtmcL607QbW7ZFPeRZ2SUUZLnkb6jpSsEC+ti+Ixx0WnK5D4UeF3kZcmLH06xvF7fr8r/ubfQHDa0j6ZOmGTQr2mf8lrB246jtMjjtNIeHfsahVBpxNBkrTgwYMBtNst+OSTEYzHutPD6jjIaleZQyX5B/l5Wd2wThT7YLT2zRqXwyWT+eRMV96uOWeXbFt1w6UjA4S3XR35Yx5xHMPe3t7atVwIPHXHpbtZ9MOQfkrT9NmgtHcuXReBYVC+pvBdU0Hj0/Rc9Enhq9oyfLq1RlvZPhbHMQwGA+j1eoVFu4vFIrPVSTT6dABfP0C4yhkq095gu3C1rXU+uDJ3xlpRh+GoboQaaaJIN6C70qFll35r8V1GRi7YVjH6+IwOLqHKUu7QeNuGhTZtUPPfmmHKkq6VBs3gWSbNqwbJwKcJYy5jcUh+VccYhdRHtg1JQGm1WtDr9SBJkswZi/yQ7kKU7owN5VGu+lgulwXjMaWXOluQTrz3ttfrwePHj+H8/BxevXoFSZJk98eiwIfpAhSVZInmUOMvFcq1Mkv5+NJEYDvQo0RD06DvLEKtT4lxxQ2hyzrH0HBopOZhXPExjdCxWFa24X2oDA9IktQZO5/PMyej5IwN7a+hNNQVT6sP6mCgipdVhkO+RJ3WSZJkzlhNmfP1HeQ7lA/WCcw/9J5Na7pxHBfSpos4KE/iO82leg+REakBReInXBatMk6oDF1FD9HkLG5IpdiVeR2P6o6idMHR7du3YTAYZN+0eYm2j1R/0n+pjkPGVRkjapV2dfVDa/6WsFq6Lj7o6mv0WTPCYbl2Wd+iqEJnqD5PcfduH771rQfQ6bQKd8QWHbJY38X/Kd3r7+h7/E3LmD8DAPB2Xv+N4aJoPd3i72I4OU+ZBjnfaO0dp1uK9/qJPUth6HurHGkKZoY2bH28AD/T13kUdMzanLI5D8u/FefbYnzXscXg3Q2bO1hpWYth0u8YnqdRpDUi5czjATnKGIiDlTty1++0leqTpkfzy+mjd8mm+mhKa6uVZDTi7mJ0yq5W6e7YTgfg3r0eHBy04exsBuPxuixUB2ibop6Juiu+L2PXq5NGSfby1YVLXquqz/lo4r/x2Ur7VYB1fnP1GYvt2mXrsMpCXBc/OjoqLKCn+vl4PBZPspKeNTolu6uUDu9Dlv5hqXdfvbRarcK9sHyzgys916I6jV4XXSFjQKs3LR/e7i56tDK1Wi04ODiAVqtV2Ogxn8+dOrYkG/vKJtlgrjKPaBK7XjeSbaKMrYDj2jljrwtwEvEddyEZdUMFAl/n552ujDFYuqOC0013kuyKcWmb8NUBbXvNGCK1l2tHrdSf3mSUnRjK1KG17jVhwJrnrrTvcrmE1WpVUBCHwyF897vfhdu3b8OTJ0+yO1e/+tWvwjvvvAM/+tGP4Pz8XDXqArjbzGUItYy3OI4LdANAdifecDiER48ewW/+5m9m4Q8PD2EwGMAf/uEfwvn5OfyP//E/YDQaQbfbhdVqlTmcKc8uo9C5xrClXBpC0rHSGJpWU8JZ2fJwg3oURaUcZE3OdZpMEFKXuDs8SdIdi0+fPoXbt2+rihdXOuosl0+Z5HMhQK6koSyF5XEpftaxQIFHXuPOVZTbrIYhGkZqH+3Y3qZQpwyAdXHr1i24d+9e9u7p06cwGo2yY7CxvqTjw7HN+J07UZQuCEDjQ5IkmSKt9YUQuuuWoy0Ijc/z3Pbcju2IbTkej2E+n2e00e8A/jlBc/Dhe97Ouw7NMKPJH1zO0+piU3AZG7elu23acMMNgXgsN33Habp9uwu/+7sP4N69PnS76Y7YdUfs+o5Y/WjiooMzn7+KNNIwPidoni6VbYrh5N/2/Nff8T6+Hp6+L/6O1r5JzzyP9W/qp9rhyosOG81xweNjHKyv/DkRvq87XvFbHg4zKDpfMW3qyEyIE5S+S/lyMSwIO2Qxn5wm7Q7ZPD2MS7/B2q5YWkM8X/qu+B9pwOd0h2sCdNyk/9M80MkKkLzeEZuWH+sS/6c7YyOI49XrtFvQ68Xkm38elxxXZbCLNjZNbgqVpyQdh5eVyh30j89noXWzK3VZB9y8sty3snT4ZCLuTOThWq0WnJ+fw8XFBUwmEwCAbBGxdNoHh9Uex+kC0HUOqxNH6pNS2ZMkyRa7Yp4PHz6Efr8PURTBZDKBDz/8MNvtyTcZSPJnqHO1rK3KlR+FxA+lXcC++Fx2o5jNZjCZTJyn1Vnzk2zu14lHNIlNy/NVEDpOXFCdsaGGpE2hDkFi14QRCl7XLsGgTDmo066M0Z/nJwkzPlDjmnQvAA+rfZPSvQ6wjD3XhCYpcppyx9N80x2y2phyGQ9DxmFdSpWmbFji4G9LGZsECoBUKJrP5/Dxxx9DFEXwxS9+ETqdDnQ6HRgMBrBcLuGXv/wlnJ+frylSocorH2OWuyQwP766cjwew3g8htPTU1itVvAbv/EbGU3dbhf29/fh8PAQxuMxfOc734HRaCQ6k7V6l4R33pZaOCtc847FEWZNT+MtVsW7ilyiKfzW7zQMnUeroAlZROrH1rql4ej8vFqt4NWrV3BycgLT6RRWqxX0ej3o9XrQ7XYzxbaMPCAhZN53hXONKem3ZZ7UwMck5dGWeVpKA8NXrU9uhLKijrkA+eDx8XH2/OzZM/WYcqm/cl6Pz61WC7rdLqCjT7oj1lWOumWdqm1VRt7btqzGxyrSs1wuYTKZFJyxktGnCh/nRiqLcauuPk3TCjGq4X9aF774FmNQVVnSla+rnXZF79okHZKxTaqrKIqg3Y7g8LALX/nKMQwGMcRxfkdsfjcsdRBA9r/oCCoeG5y+o32qSFv+XEyHfiumIz0X817/ncf5/9l7k11ZkuQw1CIyI4cz3HPnW3N1s0tkN7tFNikBhABBAsEH6D19gP5B0E5/oH/QQlsttJcW2mglUeAgkBDFBocW2VN1163pDmfOOTPeIo5FmFuYuZtHRObJc+sakMhMD3cz88nchnB3jlujT2nX0+p81Hmu16f+vOJVAutQ6XpI+UQ10pLyaHImSXgQF3EkgEFD/hz/uz4gTrtevvhd31la3ZHKd8Ty7wKnVO9cCOwCuPxRPiivRdv4gsRIl9Ln9oi7E9bdgauN5WpnbHX8MThpRUA3gTTF+2eLoG2vl0KW5Te741NYrTZRa6GWV9OdeB4NduUbtdIJtYlms/Ny+vyx61u+MpY2fZNA05vb1tXi46U7Ibk9IOVfLBZwdXVVptGgpUX/t8wFvjuTjx+fnsfLcLtP0v24Hp2maXn1VZqmcHx8DEdHRwBQHM+Mp7MhaLisdjEH2v4xvjhLu4TohoDXg+vg6ONYLpfOnboUeP+G7GmaTn2Lt22rvYXmELM2Nym/052xTQzvbcFdmRRdtVdo0UKQ3hYK8WBZzCTHW8hxtS9jJQbajvEmQRRLGUlJoEfXNMX7TYAYg6Bp3/P56TO2NJ64M6gLvihdi2OuK8C7Sfv9fnk/LN81lSQJDIfDMq+k/ADI4xvbO7RjigZeufzC+UNl5mKxgJcvX8JkMoHLy8vy3tgPP/ww6k0+H2A7WHEh3/TFFzrGaBuEFGkfaEYFxxMbEPLRigXKW+jUibY8WAzLfQQcD3hHLN7D84d/+Ifws5/9DNbrNXz88cfwr//1v4a//Mu/hB/96Efw3//7f4ef/vSncHx8DL1eD66vr8WXrbriDYNuknHFx502DilozhsNqHylPGkyVwoE7Wp9bRv8agP4FvZgMChPQJB2kSNf9IgtTRZhn2Mg9vDwsDy+eT6fw3q9LmWtdlcs/U2PMttH8I1nTOP5bgvo8dzn5+fwF3/xF/Dq1avyGUCck0VySEl2g8+pum99a5EtWjqVOZY1rOnc59cn0GAjzWPRod5EwL5YLpcwHo/h6dOn5VUUdDf4wUEf/p//5z14+HAIBwd96PcTZUesG4jVd8TqO1ITJ1BUlcPn9Js/c/HKO2IpfvrMxV8P1NZpa0FYKp9B+B0OwMqO0VqS59l2ZahLj69vUh7+rC77aZKLg+8orQKj1W/Xge6id3eaVsHOKhhZpVH9i/4v6Fd0E1Zvvps1cfACC6CCs5O23oZV/9EAK8VT4XPnUXGnK+bB44ZRvGJ9C7r03tniaGKkW9wVi21T1L/XS8o2AUgBYHNTtgff/e4JfPDBAfz1X5/CZOIeVxwKUOzDet8WQvanBUJ+RE5PKt+1nfImA/VR4X8LWPxokl7uG/NY5smTJzAcDsuTdnz+kZj+5nqQ5NuImYfW+lt0NVqHo6MjePLkSUljOByaeZL4oLxiH9ATmmIgdPUN6pCSb1rKj8F0DDBjn3M7Sepj9AXi88vLy/JZF9f/dCGT3wS5/hb8IM3vVsHYWMfOLgdZiLddG+nWhUtyPMQ4Bnl6DISch7H0KYSUzFA5X5rmnNKeW+k2Kacpe6FFuA0fofr7nlFnV9t2exMWEauzHiBuLLeRNdxgDuG2yo0mPPDfXQJtz81m4xw5Sd9mpMDv7JTaSnLEY6DIEvTGb5/TkTrnzs7OYDabwWQyKZ+98847TlDYN+8kkPipO1L848RiQHFjoGlA0bpuxKRr8inG4UzXVovDg6dL5XjfaM+t9doW8Dkh8c2f47jP8xxOT08hTVP4m7/5Gzg8PIQHDx7A48eP4dmzZ5BlGaxWq5ohLLWFVX7IjtW6DJb+N5VRmrFvyU+P0Y0dQxreNmPDJ9us7dh2bNLxgDhDclSiqzlkqBzFAKxVnmrjXaLj49WHtwlo8oLWVZNDt62DUR5XqxWcn5/DbDYrecX1PJbPpuuRVO6224jyYFmrJcA5he0tjRlrnaX+8K2L0lzZB+BtEFMn/G0dG/R44sFgAI8ePYKrqyu4uroqddXxOIWTkwG8++4BnJwMyiBsNX8xEJQABnMwHUAPjhZptJ5lqsNjVb7OPy1bx6vjd/NyHHogNsRX+Le2s7fOjy+P/My3vus4YkCeKhS5G/TU+ODP6rLNzVP8RzrSTtcKDwY6NfyYX8JRfct3xrpHGRe0OI0Kr7T7VuaTluFBVs5rvU3d3bFSG9fHM5UxuVM/nDPFb7p7tgra5nmRH1/COD7OoN9P4eCgD+t1DosFHmVct9d2KW+70v8sdLSdjj6Q7CvEJ9nI9HkIn+W5Zt98E8Dapvx5jM4Q0/8AUJ7QJJ1wJp2+aFnnff5Qi24hPbPaklQ2cTy0HfF6nMFgUAZgsQwGF7Ujcrn9b+HL0nY+u93S/0mSwGAwcGQDBQzC5rktqK75vdBfR/9rfkNL/3K9s41c+CbKlbsCXfSLNEdaBWO7cDrs2jDeB4dFDHBhpAkfKjhoGoVtTm6r0OLPqeOWv5kScmJbwbeoamBRBto4lduC5nSJxZEkSe34im/im+4xoM0rSZmKBRoAuSugOfOs4x53XdB7VBeLBbx+/br8fe/ePedtP26MUXr0zbk8z8tdWfhsOBzCdDqF8/NzpwwAlGUkRRXfDOQymO4wf/36NfyP//E/oNfrOTQ//vhjGI1GJc7FYlHWmTqpY8aMRdZK48gq/6wO8CbA34aOlZGhQEqobFe74egxvpQXzqME23Joa4EmgGqNxV2Klp1V0+kUAADG4zFMJhP4b//tv8Hz589hOp3Cq1ev4NWrV3BxcQF5nsN8PoflcunVU2LqwX/zwJ5lbcc89E5XqayPD83A5H3NgyNafaRg2i7BqhP5eIydtyjv0IFQBSVkXYan87ZerVZwfX0N19fXcHR0BIeHhyYecNxLY4nS6MohGdNO1uCQr93eQjzswjay0Kb6t0824x1hOJZRrtPj9yhOTWeleoI03n3t8iY5jHwOfA54JCDuxH/27Bn803/6T+HP/uzP4NNPP4XRaARHR2P4/d9/As+ejeD+/eHNjtiijfGI4iJAw48pxjFQ0KrSePAzFAjV0iqcIfw8T4VH3x3L0yhtmo/iqvNX57/+THP61pIcfJb824AQnSpgSvPimJTxYHrdWe7mwf9Ig94nWz0DACUISuVCktBy8j2yle2gB2QhYodsNQ74scMVXlrGTUeEOXmupRXfaZo7u2RB2BGLeXAX7GZT3yVbyNbqHt88T29wbsrfKG9+8IOHcHm5gL/8y9ewXG5u1f7flY80SYqTUIbDYfliy3w+N9OX1h66flp0XMtdjtJdpBJdjac3Bbgescv1n9OmOg/1H5+entb6dLFY1E5UC4Gme6HdHNKRfLq55EOyzHdq9yDO4+Nj+OCDD2Cz2ZTXX6VpWvqXAKC03ylI9pTGm4Unax4+Zri/ebPZQK/Xg08++QSOjo7g+Pi41jY//vGP4Re/+IVYJ/pNwXcqXRs/DJVVktyy7ra9SzGpt7AdcIKxPkcIT+sC2uBruvhxwdAEx7bBJzR8+Zs6fDge3/OQgyy0QGtjzFLWh5OX3daYRdi28PS1k8QHX1Cs/QEgH+NqAR9f+zantglNxkJojscaRNI8pOn8dwxPIfAZJxbgfKFjcL1ew2KxgOl0CqPRyBmnVBH3tRl3+OOxmfxtXK3d+JziNDjveG8hBoSR3vX1dRlMpkelUPqSUthWjlmDLj5osk76+Jb6aJsQkp+hdRVAr3vT/morH0O8UT60AI/Eo7SW4ssSOD4XiwW8evUKfvzjH8P19TVcXV2VBp90nGVb0NqY10ELONDnPsNJA8v6izh9YylGv+lq/dTkmJYv5GxpytdisYCLiws4Pj6G4XBoxhPqI3S84LcUTOV4qNzlz6Q6tx3P29ZBpfVjl8a9Tzbiixm70pd9Y9vyvCndbUKb9ZeWl56F0vFlMbxLizvG9tWJZK0zzd+0L7Msg+Pj4zJAe3KSwcOHY3j4cAgnJ5mzI7YIuuInYd/VB3mqqoFrNtXx3WesRiB1jSvr6jgofp4nSSq8lEeXF5cfSz6aRvmR0+v1kJ5zXPqzMLQd4pZhhTTcvNg+9aAslqmn6TtlKxoJgLpLtrr/tV6e72Ctnte//QHZqn51+8rXLqH6YF6k5+J3aUp8I18YyC34qf4XOHJwg8v0ztiqz4oxijtm3XmPu2TTNIFeD2A87sFmk8G9exnMZmuYTusBka7XGqufrivg6xja4dRG9+nzGm/cnqG6UMg3ym3wEC3p+b76kXcBFp+xpV1867VFx8BT1FarVe2EIkn/9Nl/kg1Mx2ZMnX22uQaa7S6VTZLECRBjfReLRbl5YLFYOHxLoNnFml9Z4zvG7yG143g8huFwCKPRCIbDYXlFEgDAbDaD6+vr8roTia5l7PnsdB+/ljwhf6s2zkN+xbdwO2C1b3z9ZbVFdnpn7F2EGKfdLsC3UzakFOBz6c0XSx2bOi+tgkV7o82CoytHxT6Cdu8ZQkjh4coBr//h4aFz791sNuuS/TcGQs79LhZQ+lafdO8Fp/cmLNq8HlmWlXcHzmYzmM/nkKZpqXBjOt4ZSOUZvZuathW937Xf7zs7YfHeCQyeSnNF6gdMQ57yPIderwej0QgWiwXM5/NyJ9inn34KL1++hF6vV+7gwvvFkKdQG0kGqwaSQSDVQRpDbRyTPnrbhFiecWdcr9erGXBWoONKetbEMOkCLO0fU09s29lsBv1+H46Pj+Hrr7+G//yf/7NjAFLY1h1MdK5ZIM+ru26avHQUc5+Vr864E7TJDvi2EJIDFLCdaJCT44mlnec5vHjxAr788kv4zne+A0+ePKkFTy3g45u/KU+PcdV4QqOe7tLdJ30/xMc+G+9pmsJqtYLT01MAgHJ9sxitIScGd4rhrhrr2rivQMcg/tfyrddrR1f05aWgObL5M9yh8PDhQ1iv1/DFF18EnZd3AdrqNhL0ej0Yj8eQZRkAAPz2b5/A9773AA4O+pBlKfT7KaRpdXck3hWLvzFAI38DuAFQN4BJA7ZVF3S7I5b+r/JJdOp0pSCsnFbnneehZaVnHI8vn1zGApbMckBRzU2y87x5XtFMkgo3lqH5qzRXjmIet4x7n2yeu/kwkIjpFHc9IBuzQ5bXMXHqhHTxWUGDBjrdZ/w+XCABUxfqvFTBUvqNZYu0NC3yu3fHVsHZNAXYbHJIU1yLsEzBH35o+xe/i52xm01Rh8GgB2mawA9+8ABevVrA3/7tGWw29kDgbUKID74u53lxEgOeFEV3j6FNZqFJ8fNrjKSdk1KghKdJLxtJa2TXtts2+7Ir3E18sF3S5vjpKSDn5+e1067Q9sO83Gdm1a+p7SgFR7kPXrNrJB3WAhQfb8/NZlPb+ZrnOXz99dcwmUxKvVvybWkQ47/39S9Pp+2EPq/lclkeFZwkCXz44Ydw//59cafwF198AT/60Y/EY6eb2ObbmG9t/B4+3fwt7A9sw4YAeMODsV04hW9jQvic5zwfVxS0YB3HLdGUFhoNl5aXB0EkvkNlpPxNHZghAXcbgQMOoSC6BE37iisL3LGFii3F20TxDPX5vkOTPpGEtG++hIIl9ChFyZDwgdRnVmV6H5SA5XIJl5eX5fhbLpcwHA7LFwWs8gCd7jFGXmw7cPmKjuF+v18eV3x+fg6TyQRms1kZBMDAjI8XiYaUjyv6ViNIk7WcvpSX1tXKWyid8xDi0RJEoXk5XmmNtc6dfQuG+JRE+qwJr7Sd1+u1Y0QBVE4ULcjWVLZY5WkMLhwrofVRmlNNeUc53uZY6zZgDYLR9Z/uiOb5OL9aP3F94/r6Gvr9PqzXa/HIrxi+KR/4Njh1qGF9eF/isfU4VvHYL0keNIGuZYHm5NoWvS6gjf5n0aO43npXgMqgLvpNw2NJk+YGb0+uM9Ey+zLuJPmtyXfMI6WHntO2wTtjAQo9bjabwf37ffjudx/Ao0cjGI16N0FY3A1Lg6x87Er3xILzjD6v8khjv/sdsTwf/V+lbTcQW9fTeP00vmQIiw0/vVBZeWhp4+3mqfC4/gzbL6+VSRL+n8tMKX8C4Nklizy7z9vskJXkRp0Hf/2l+12TWptg/XjA1uUJd7i6+ar8SM+lS+lzHal45uYt9KqKDgZ50dXS6yWQ5wkMBj3IMlm2WnTf25DLsYElrZxlTbfUTTp6WNOXQj5VDpa1o4k+v009pkvcWr1jdXifztGEh9VqVeubEF363+pv4OOozVyjtLnfKWSvY571eg2Xl5e1ubNYLGovKXLeNf8Hr5vES5MxxQOs9CX4w8NDGI1G5QttyDv67jA/v1KvK39AyC/UBeyLvvwW2kFT2zuU940Oxt5VkBQCq3OjiTJhHVCa4d7GSclxdQW7oHGb0EYRoGWluwuyLCuf0wUTwN+GPiXmmwJtlAMKkrO+LbTFFZItXcJ8PoevvvoKVqtV7VgSAFmploIGeZ6XO2vH47GTH98UpLh8b7ZpbcePHV4ul+VuCdyF++WXX5bHxVjwS8ohD2z4eJKMTAvEyk06TiVcIcPaIjMs4846trnBI/Fu5ZkbA1S5DxmbbeZiF/MwhjYPrM1ms9pdKIPBAPr9Pszn89qYaMqrbyxa24/Oc/pJkvpOWYobHTr0dAILTc0JhLsv89y94/G2gY9Temwc3rvN88e0PQIG61+/fg2np6eQ5zn0+32TvA3pHEmSOIY6P2WAlz84OICTk5NybXn16hXM53PIsszJu2vdJSZQ6XM27gvQuWd5Y1yzezSHqVWu3IaD2gfW9rDi0vQemsbBJ9NoGZSRXE7sUheMgbZ8WcvSnViLxQJOT0/ho49G8J3vfAzjce9mR2xCdsHS3bBV0AZ31ElrJeYpkvzHA9M8NJ3n1XBiep0uLy/RCQdiMV89zS2v8S4943il56F0zlNXIOOjawtNrwKeTioLnLrpyHc9AMnLU7mAz2l+X0C2KCvfI8sDspQnzC/lRZwcKhpYCXpnLM3Pbb3cSUccPOAKbGetxIOL3z2u2J0jADRIW4iCBDabij7mxXtl8zwp75TFNsN7fHu9BABSGA4L2VHIcCzvvhy/j3LXAtLdq6hja+tVrB2b57noL9BgG215V/unCeyDXoV9zvViXKMlXSdGd6R0ugzGUuAnEIXukEX7dbFYwIsXLzrnCXVU+pI1PT3M0n6cDwy0AlQvsCE8efIEnjx5AgBQzl/qu6PpCLRvfTpsiLd9GMNvYb/gNmIZajBWElpt3orYFnQV/NgVWNsw5IjU8mhlKF7NoRMCFNDaAsUNex+fPI0fM6YJV1+7xDhK92kMa6AFJaxOYRocAKgWL3yGi+t8Pod+vw8HBwcAUDgz8Tk6TKmTnUPIWUp5uCvzVeOvKd9NHNgSPUtbW+nFzoddzRnOF93FhEDvldX4o47gPM/LI4nxbbuDg4Nyh1+Mw1ijR9scjxHs9Xrl3BoMBjCZTGrHtdDghzRvOW06h6X1JEbuxoA2NmP1Am29aJqP8mfBJ+XVeA+1odTWTQwV/synDG57HoaMrTzPIcsyGI/H5TgHqBtL2wQ69nwBB2tAj+LFT4zxbh2frmPU38YhXpsCp01/0936vjphXZIkqclmXxm8JwxlLuchRj7RMug4sPC8WCzg7OwMTk5O4OjoCM7Pz8s7MfdFP5H6ed+CiiHga1QIYsa29BJQjAzndLfdrpwGnYNSIM6HB6B+XHtM24VkIeoiSZLU9BVqg1D6bSG05nHetbVc8leEytNn9LnUR5i+Wq1gOBzCJ598Avfu3YOvvvoKnjyZwOFhCr1e6gRhi/YsAjiV3Kz3Ow30VHnAeablBxbQlPK6+Gg6nUM6LR9djtfN55ajZev46nj4M15eeq6lhcrsCihtDMjd/Kvl4UPVTcc2zGt5k6ReVnpW/K7jqfLwu16xXP3oX15W+4ZaMFSjUbURfe7SKnC5+Kt0t12KNJefancsKIFxXsdq7CP+6t5YpEvzoAyg7YN507R6KaPXS+DoKINf+7V7cH6+gFev5rU2p+CzaW4LLD6LPM/Lk3Wk/Hx9l3QJTTbz523bRMNP69IlvX0HzS8BEKfDdEGb4w35QaQxEwKKUzoiV8onAddxtPFE5zHHr12jRel3YSPSI6Al/qx0qB6F1wUBhI8NHgwGsF6v4dNPPy3zXlxcOEFq3t+cLv325WkKFruiKezK1/oWtg+abcPTtrozVmIi5ITaFh8ArgC2Oq9vEyRnNP8dckB1WScUrNpbO00VQ5/TnRv/nI4GmtJ6G+OvKWiKn7YIWYIv6BClx0nOZjMYDAbOWf0YuEIcfIesxFOMAzm2P5uAz3CJBYsSLuWVHDo+8CkYFpBkmW/M0zrE0N32PKJ89fv92hEl9ChNzMeBBwswEItH2hweHsL19XX5VqVEW8LtazP8j/zi7lh8qWE2mzk80x0WlF9fe+Bc0wwBaayG1gkL+By/vjbT6MasD9J6beWXArYdfakodj2xzOnQ2NFwSzRinnUFISd/lmVweHgIq9UKlsslzOfzMpDXhDepXKh/+JoeWockkIxjbuyG3lLWQDO2dwm+NUpyTOC6b6kz1T9D+gg+p3cFWeQJ5ZXLADqXAfRTDWg9e70ezOdzuLy8hEePHsH9+/fh+fPnKm1f2l3RI28TYnaAamsGH6u0zzGNHk0dS8/nXJR4iwXOuwV3KB/qNG31Ra5XcJmAwVifYxPTfXxYnZaWNTnUNnQtiIHQWk7pr9drGA6H8Bu/8RuwWCzgiy++gMPDHN59twf9flIGZJNEuheW/pbS3GBQ1Scq54xfNx1xV8/kdKQvP3NxIx6XJ9oHOu9SWam+Up2lunGop4XaL1S+PfjEEm/DKq8bGOQ4koQHGQF4QJPm4XPLfYY0kpKum6cKhlJ+qrlW5wWcI46Tm++c9SENorpHDbu+LmC0i7K8DhxHVTe3XnXe+e5Z5K0KpuJ/qB1XXNEs5lBRPk3xTlgaqIXyiGIANwhbfKdwfJzBJ5/cg1/96roWjK34131DdwHyPIfFYiHyi0fAcx2A6tN0Vxx93hU0tWHeZKDzMbauTcdlLB1ut0inNFl54fKyzRgL+d+kfNKphZR/vhEh1k7ltHl5vEZG4sGKE9O4bPL5uPA+6clkAj//+c/Llzakq8YkG9Jqv3GwjBFp/If00TddLryJYO2zJnJNK7PVYKzmIL9t2AcemsA2lI0mOCXHe4xw0spIR/eFnN78TRmLsnAX+l9yMHXV/4jbevwwAJRHK9IdzDHtGOsk/6aC5CCn36FyGmjBjq6Vy21Br9dzxl0M3zRwu1wu4erqqnwW2s0XG8TkCjsGgHFH2L1790oe+By3KPuaUxPnMleopfwaDcm49Tk2MbjBlW2fU7PpePPx0BQf7qYL4bTMvcFgUI4vK2+3uQ61cVbT+zmxHdvK9lhecP2STurAb2280HnAA7hdjjGKl+4g9uXrGqS6SQ4AmscnH/C5FMQJya88L3ZD4MsweHesxgvlWcIVyhML/DhA6fdtgSabNR38roG0lmj3kTfRPaXftwV8voTWZS6jrE7BUHAx5NDP87w8Sk7Tg7CfmgCvh9bXPvnFx4Ik06X5ovGjAS+3XC7h7OwMfvSjH8F7743hN3/zBB48SKDXw0AsDcIin1ReAvu4xwcXNKk9QOsLLI3y6fJLadTT60cTa8/CPPA8bj2kvHXe5XSOT3oup8m7hf1ltgMSHW24Yd5qx6wblKVlq7xladCOLq7+V/Oo/kwKitYDsi6/9R2ybjkfuEFeHmQteM3L3zQ4C8qxxNJvlxY99jgp25cC0nPz04At3PCZkG8ADLpiuxT3xBayAOuYJNVdsdV3UQiPK+73c3j4cAi//uv34NWrBZyeLu70+g7g+jYkG4uuB/xbC95Y9E5OnwI/jYrifgvtYBu6FtcHQmNJsgMt/mnMR23eGP3A4o+z5JPK8N8xINkJ1vax2GISSHfFpmkKg8GgTDs9PS39ckmSQJZl5YYG9JNJdr6Fh5i2svSHrx/2wb54C/sLvvHhBGOtA6mJINk2hAzafYOYNtQcZW3a39JesQ4PLqRCzgBO3+cE9NWbO1sk5crCiwRNnNZNQapXTCBW6gNfXt5uIUcFbVf6hpKmEOEzH06KwwddLHqxC20TfBqfVgcY5qUBREswqIu6tXHwbRvQWavdH6EBb1s8cps+l2jxsdlE2UNHJSqfSZLAaDSCfr8Pk8mk5viUjAdtvCB+Wi8rXyHgcqdyttTHMB/fMbhjgfLQxTjM87hAom8NwcASDcbSMttU2tu0adM1HndQ+spvU1ZQmedz1of4omtak7Fl1eO0wJLEUywPIYjto6ZrSchAxvkGAOVd2r67c2NkSlcQM5c0Wc3XY5/zxxoosvB12/aYbx20ALYBHSeSzG+ik3P9Khaa2LzWucWDhzQvXYe1F1CstK1AaeJ6hi/D0ee++lntFkn2xqzHFgchjqfYF+sQv2RfFqecTOGLL67h8ePH8P7798o7YpMEy1IcVZqLH3+XqTd5ab4qv8BlLZ9bhyoPpeXWyc0v96ucl/LlFqvTpLzWcen8SPg0PJjXN/ybTA1rmRg1jOKUyuFzHpTFZ7RMlRcADLtkJVr4rPidKPR48BSfSwHZel45n0Rf469+XHGVt+KZ40OgvElBWMQj7QKmuLS2qOY03XFb/Xc/7tHGSYJB2/zmuOI+9HoHMJtt4PR0ESUbtwUhXcYHmE96AVazxUI+RaorhGj77Ddue6PtboFd+gi7gKb8NvWNdW0D03Lay+caryF/j+bH9I0Fi++U845p9Oo4Ka818GdpS9/4t4A2b0Np3FZH/bXfr8JPeEKdRpcGY2Nf/vPJTd6GXczjNjjukhz5pkNXsTOEre6M7RK2teDdpYW0q0AsBU1QhZxJvnRf3pDw48oVD6zelb7aBkjOYt6GPucmB3qnpkSL7trztXuv13MuZ8eAE0ARNDs7O7sxMOrHXuwams73bRpCUjAB+fT1UZfA72zeFjRpf9ruMeMbwCbHKGhHvXCFncslTgthNpvBcrmEw8NDZ04g4C4x+oZuaAcdOmYlvrXxEtPuMcGIfQLJWczXDu1NaARLcISXxWN18LjeEI/bbLfK2dXNPA7pBruGJgF5Pi40WUfXqNg+ktqcBpdovibB/y7GDPKDcoi/OODjUXIKYDvyZ5YjY3GnMA+Gb3Ns5XnuHHc/n89hMpmU/6X6tAGrkzJUnqehY6KLHelvoVvgY1jS7QD0O7O0gKykG1K8Fr4oxMo4zemmOQRD8wjHcZZlQIO+0hGVWl00eaHZiyE9WpO31FFKnadPn47hn/2zd+HBgyH0++nNrtjig7wVO2SrYAumVQEzNwhZ/ZXvYq3+V3mketTL1Xfp1vNqZeW8Wp46ny6vlGde//rvpPas/l/OI+fV8nTlT/E9re8q1crRfLQtqvT6rlaatwoWunSTxA2gFnnlAKZ/hyzO/y4CsnQnq0u3qneu8MXz1nG4d8FWvyl+IEcTS2lVOfxP29zNQ+cm7owFqO6MrdozJztii7ptNgkUO2OLPHleyA98mYSuB/u+9qMM1AJcmp2GaZiH64hN+NCA2txt9M+75Edu43+h64klwNUWQuOcvrQnfVvA13eantTUlxJ7bYePTtPrcySbrUvgPPMTGIfDoXMdHr2yZjAYiPWKDYaH9NvQcctWuCtz/i3cPoTGyp0JxoYWVMuk0AKC9Pe+KzgUrG/NaGVCeUPtoS3SPp66XqglOhZDPpYGxW1J6xp8Y1YbwzFzJs+LY6LpG/AU8O0kHiivnA7VApplWRmclYIfoXEj5esKQv0UM294ua6UNotT38JfGwMmhg6ChU4bXtqOB5/RJ6X5DERfPegz3MmCQVfuENSMh1DfacEfCYcPjw+nDx+HJmuFL48Vr8ZLCEJ9aJHptI/o3b8aT9sOwiJPTQ1Fa7mmddmF4bKtNm47Buk8Dxn/Uvkuxg+uI3iqBQ/Ghgx0KU2SZRLPmn64TacAB05vtVrBbDZz+qOJM0cCq+ywlJHGAg1atdVpJZ60NfC2YRf8WOru0xFi2i7GsR5a7yk+6X9Ir7HwKaXHQp7n5Sknw+GwvHfcQs/Hr8+578sb4zsAKHavjUZ9uH9/CB9/fAzDYQ/SFHfFuscQg7NzlQc++e+k9sytt/ztptX1txC+Ko+kC8v8cvwcH8Oi0Ke8yuWkZ+5/OY+fnzr93QBtBz0wC1DwLj3H8vSZlJen0f/1Z/W7WavfCYBnR249rciPaYhDOt6YYSnpyHSL/zIONy/HUc0tXr5eTk6rt3vFDz/CuD4+i//uM5xveB8tv1M2TaF8sSPLUhgMUthsoLyDtqnuroFlHWuiA2trFtf7NNxaILaJ3rNtP902/C23Cb5gaxs7MxYsvoW2dkRIv/H5iTR8Vn6a6JkhPDF+zia6p7WcxBff5UptyDRNy5eFsVwogC3JqtCYaaKn07Ix0FRO7SKu8Bb2B+5MMNYH38QB21XwxeJwtwjuLgUHd2pL9H1878LpHUrbBk2pzvjBNsOdPfxtJN+OPyxzenoKWZbBwcFB+RwdfsfHx3B4eAinp6flEZX0QnVKDxdYfgfbcrms8ZJlWYkjz3NYLBaN2mgfoInDnI9bqqRI+SwKo/XYHgD3LrBvghwNKTmhYIm2s5Lnx+Ac5l0sFo7DEecc3enrU/ikuY9zkCuWPuM2BE2d+9sINlK5tw2ZbjGSLHn4PdrceRFr+OwCtjXntx101uSlljfkUKLHwQPUd97zNcwXLJUAZQC+jCEFKDXeQ3liQdIDeLtY+44fo6/xS+UgAMBwOIR+vw/z+bzW1nwudd0GVC/q9XpwdnYGV1dXsFwunWsXaH6kLwW0rG0VMvpDASGuy3H+tHWD4uV3isfwviuZhX1PX/zj7Y714PLWcnSvBjFOmSZAx4rkLNLuvab80XbQnNJYDnecoh5O24zj19qM6ocSTzwvraOvL/Bo+4ODAzg4OIBnz57BZDKBn/70p6Wc5DqYNPc0PrRxopXP81w8scSnHx4dZfD//X8fwP37QxiNemXQpArIQu13gZMGYarvG4rlcx5grPPC1x43n0vDpUNpc55oWY63+l2nJf+v867Vh/6V6i/lAzXAW0+TaGrQtQmkTxvOv3QXq46nGstFWcxL81Vp2J55mYfnd9fbekBW2iFb8MB3vbpBUJrGd7tigJLn4fxxfrBOUn1w7BTyQ2uTijaIu2I5j5XNWN0Z6wZgKW6km6Yo+4v0YodrdU8sBnOrb4BeL4UkyWGzAcjzDWRZCh9+eAgPHw7hpz+9gtev52V/YT05dOGLS5IExuNxaWeu12vxGFHt9DRLIEQ6AY+u6SH9r6v1OkkSGAwGpR7Rxn6+LbjNwM226Mb0AbcXmgYYKV0JR+zJSVadX7NL+TPNVuA8UV2wDZ9I05fuiwnQZ+iron6wJEnKjTuSfYr6oIUfTtfSbvsIXF99C83hNuViLDjBWGlSceO+a2gjNH1578pi2pXDidfXYnD7QBIIkuEv8aE50Zv0icVhuQ3c+wKa01fqb81ho/UHf447YxGXtJBq/FAnKg0SAYBzGTvlHfNThZ7f6+QbZ1L73DaEnMhSH9C0UH15OQ04Dz4FVerTfZGf2+DD7pip5hpf1K1yCfNyx7JvHPhwh+ZwF+3VFEfbcROqNwUfnRgFLITHimO1WsFms4F+vw+bzcaRdSFjJoYWz28xTDg9Ll/b6AexcqkLiNFteF58gYi/kSsB75+2dbUGQXzrQxvAOvA1nq890vorrf2S0asB0sIrDZbLZfSR810C6ilS/WLWSQ3oy2g+56JPrnUxj3x12dUa7xtD9Dm2Gd/xa1nbLDJW4ge/JZ3XR0vKa51LVqA8abq9VAaDsehEz/PqxS1eD/otyZ2mjk3qWJd47PV60O/3YTQalU7+bY3HEF6LjozPHzwYwqNHQ3j0aARHRxnZDQvk4wZZKQ2AentgOel/xRuI3zKu+lHD+Fum49LgdOq0rTxR2jKv9f91Xtz/8nMtDQL3x+rlugGK2z8M60cKczx6egLg7CrVafCAI83v2q48IKvx48fph6Is5q+X4/fDNtnBSwOmdH7LtCVcvvbQ8vOy9DedR5XMkHbIFrJlOCxOKzs46MF02oP5fAObjd/H0Bby3L23HfFa9QnuB9F4aurvCNk1UhkNQmuqhG9f/CMIu/aD+fySVh3Wqmd3wZ81n88PF8tXGz8Kflvs/JANFhqzFj5DPs0QXqpLSum0DJU71n7geramy2pl3sKbCV3KRWm8NPVFSRDcGdvUWfcWbg8kQWSFNn0tjRW+EOCb0dIODc1ZTPOGBLEPrMGUuwhWp6iUN9S+ANUdb7Tv6B0mq9UKer0e9Ho9mM1msFgs4PDwENI0hYcPH8JisYDT09OStkan3+87zjntUvddg6Q0+PJZ7qbShLumTNBvCWKc4/sGvjHRxRrEneEhfLGKm8Ww0OSjpuBiOh9LfLcKdXzifNGOB/cFFDTFYt/Gk08B4m1Cgc4hDMhZjB0fII7z83MYDAZw//59mE6ncHV15TXsKM19a9+7CBZHepZlMBqN4N69e3B5eQkXFxdqfrpTssndnJrMarNDMSa/xA8GZsbjMQBAuTuVB0V9c19zunBa2nwaDAZwcHAAs9ms9owGnuinyzWN46Z1onVDPacJbQz041GsCCFZw9coDajDIgT4kkiWZa3umEK62wKsz3K5rLWdr12azEuKB7/5Tm8KnCbupOQvFwJU7Y2gXfthBXrKDNWNJcA53u/34eTkBJbLJaxWKzg7Oyv1c4seSZ/jPPHJCAtwByPOr36/X74c4qsX/ab4Qs4QrhPXg5OuPYPtLcmhwSCFP/iD9+DZszEcH2fQ66XOjtjqAzd43R2w1bf7mwYYZV2QftcDqlVd/HhpOuWjyuPixzKcjv9/vS98abRePN39H3pO0/SxeZtmv0S7Puz1o4xp+Xo63idb3xHq/nd3lOLz6rcW8Czwu8FRDGAmQIORmFbMITfIabk/FpzdtklZp/rz6jfy6P5Hfir+/Ly6d9difwC7O7bSb/gxxVDmqfqhSi92xuJueYDNJr/5nZQ8VnfIonxLIM8L+fTee2O4fz+Dn/70CqbTuBfZYm3ozWYDV1dXZdl+v1++4BNz76WVN9//bYC2uQBAt8nf2mnxII27kH5lCcA18fla0vlzrjN3PfYRpJN5NOA+naYQCnb69C4J+DOu12l+LAqSvzdGboWCvXcd3sbjbh+2tQ6Yjinuyhm+jbJdD8w3wUEqCc+mzvU27RFTlhvJUhBBwtfGOemjua/gezuDtxN9TuvnW4B5AJQubhp+mhedNpvNxjn+Tzt2F/NTZWSfFhurIsJBcxZJzmzqKJICqnVjse5I5rR8PIXSbmMeWNq2C9nclXIWcgzSdF9ZiT8f8ICBxosFh8SXJBObrh27AF/wos3awHH61gecr9yRS+cy56/JePfV0WIkhdrDgkvDLeHpCnxyS1qTQvOLvkSk4bc4BKTnFt1E4nVX8i/PiyPTNX2Aj3npN8fH80hrE83Pj92l88NCsw3wtueBGqsM1/paWqP58xjn07bsJqsO3VSHt9DmLyRsNhsYDocwHo/Lk1QwOEtptFnjOA+ITxoHmszHMtLO7sFgAP1+vwzKSs47yZahY8a3zljqRmmE5m2Mc80KlnJ4X/Pp6SlMJpNWtDVdSMon4Zd0HD6PnzwZwsnJAO7dG8B43GeBVnd3LKgBUyjLkKekXFwbVHgT5z/Hi7xp9Ogzmkb5lujI31zP0fnmZWSeKp7DeH1jWX3UKq8GVrGNtOT87s5QXo6nF2kJgLJLtvpf5ZHwhXwhbl5fXQs6mEf7bkKDPwfg//lOTTcPx1N9Y7l64FinVeEAEuwuxmNO+gWA7nyt5iVdi3LnGcqWNC12yK7XVcCWr1sVTak9w7or5sGX9nggBde7mJe6+LoaWo+sa1ysDc3bCl/2wpdyF4tFuV6jjRBD08LzXYOu6mOxOzXd26rrhPQ1nu7LT8vtEmJ0bZ/+rtldu/LjSHJJykPz+sBXv1i7JBb2zd/1psmYfYaYvtds+hj/mBOM7cIBwIm+HTztQGrDtu1qdRpiXt8zKx8xTjbEKx2TwoE/CxnjPiP8LgGvJwYBtDestDe6eP3X6zVMp1ORDnWicXzYXzT/bDYrlVrJcYWOYQCAg4OD8s39JkGBLkEbF77xEiMzJSe4FVdXc2Hb0GRubZvvyrB1dytJd/JZnfL0ueY01pz2VvnJj+728SndRRsjp3m/8bLa0aJt+8wXEJJwWxwQITrWvD78NM9ms4H5fL43u/nfZMA+kU51oGOGO5R4ujYe+D2L9HdIX7LqU1YjtMt1MM9zuLy8FPmQ6sq/OVhkC60nBthooEPCsY21n/cNOh3plQohZybVgTSnA8prqsfS//yeYorX2p4hZ0eovA98baCV1YxRDnQO9vv9shw6Qk9OTuA73/kOvH79Gs7OzuD09BQWi4V3J0sTwPaT+gLro+kw2j3tAAAnJyfw4MEDuLi4gNlsBpPJpHbvFY4BiSblr60Ties2Wr6ugbeLNDam0ynMZjN4+fJlo7WcOlPpkeAW3vhcpnzSZ5VMAPid33kE3/72MRwdZdDvp9DrpZCmeDcslL+LvuXBFAAeUHSfUd7cdqj+13FQXDe/bvDST+Lkk/LWaRfPXfqh//I3zaul8zpxHuVneh45n/R8W/Yl3115k+qZajS/m08/vjhJ2gVkLTtkka88d3HXaUu7XqU6Y0XdOY+0cicgWtF074eV74ekvOIzpCPdYwtA6br8Y5kirdr9WsmJ/KYuOfD7cKu5Wg+yunMUd8sWsmOzqQKteN9sr5fAZpMAQAqjUe/m2XbGbZZlkCQJTCaT2rqBAcvBYFDe8QgApS7nA9xNS0+7SJKkZqtSPD79ikNo/aBpGGwdDoeQZRlkWQbz+dw5yYj70CS74i10A018PiE/rtVusuhYNE+T4IxVr7f4PDT+fL4T6beFB0u6lb+m/EhtEFuPbdiRb+EtUMC1SrK1Yuy4WjDWEiCImUjbXrw0J7WlLndhomrOu1hhrRnFsbxobecLPPA8+MynOElBEjS6Y4/4oyAFrPZZydIWJM6z5BiieSmu0Digjmjf/NKMIg00BxbSpI5Z7JeujhOVjnYNjcFQXSz1tc5ZTVnjRx02rb9PfnO+mga6KPjKNVWyQuBzFNNxS7+lulvGhNS3PvmogXavoFYfDT/eCTcYDByZb5FrobWSOq1pmV1AG7ksOV21PBY8FrkZugtTM7oshtq+rlEcdjE2LG0h5cE5kmWZs7aE+jY0R3zlNV2Jr4UWxwCd023WApzTfD334Y0Zh9o4xx0INEDlM541/TcG3MBKXJtJ7Y26qeYslP6H5CvXo9rOIcQ3HA6h1+uVcglfeAu9nKf1tdQfvH0t/CdJUgZjKS9ZlsHR0RFMp1OYTqfO+sh1do2vEEhrLMoBTk/qN7xqBcvQz8HBATx9+hTSNIXr62uYTqeObst5lX5jMH+9XkOWZXBwcADL5RJms5lYT5+eENseIfy8D6T8lH8pj3R0N/0f0rV8fFpkKC+P/UNx0w8AQL+fwnDYuzmWGISAK/YtAEBC8BT/EX1VhtYlXi758FZ0KX7KF6efOHlBCNRWz7TvsCOXl9Pr5dat/kx+7sct598OcEJusBAgHJitP09u0vk8qOMr8iUO3fpz5NNvk0r0Qvez5k5AVjquWP9260sD0AVNmk+uh14nzpOEtxrLuLaBSJO2e/Vbol3hp2WrOY9yFNOqYG8RoMVjjIvAbJal8PjxEEajFF6+nJd3xzYB3BmKgPrBd7/7Xej3+3B9fV220/n5Obx69Qp6vR4MBoPyigvppUW3zYvAJ9U15/O56bhXTdfVfHY+HRZxDQYDk08ltJbsyv69KyDZ2JIO2eS5lleDkC3ne6bpNLHgs9EoTTov+PNYu4LrLD7eNLslZKtKfPDyfBOVL28T3dXid30Lbxb4fLuWtKb2kIRbGreWsR4C8Zhin3D4pgz0XTtAt9m2IYVJ4gXzW52SMYEDqYyURzviy0KLOzp9cBfGNecRhQJ19KADhAJ/y0/rE64Q+ZRrzSGn8Y1Ad/jx/NjX+NYl8kCPfPPxHwL6piU/SpTXzweS49EC0li31IHf9YY7Kiy777gMk2RaSM7FtHfTvuHA7+qLPRaJAm9ri1ynTlkfTnyGn1hFnivP0s49ia7Un7jLCx3cmMZlv7aWS4asJn+bQKicJK+b0IoxxHw4KA+aIcJp4c5Y6VksXQ7WNcxC97bWuq7kA4Cr02iOF6mver0eDIfD8jhRukuT8ynxDiAHE6w6hNZHPj2lCx2Uji2fPItphxjaqKvM5/NyjgC46zIFzVnWtC0keWcpo6WF9EqLI0XC06UuutlsYDQaweHhIbx8+RJWq1W5PqCeaNHNfTaANP6txjDuxFkul07a0dERXF9fw2QyUa+vaNpOdK2megY9mhFf+JTWoiSp7mXnO5s3mw3cu3cP3n//fQAodv6+ePECNpuNswuYluW7qJEG6gKDwQCePn1aHucrOe+6AKn/NJ3V58TDe2D5kY/aSy8UBwVN19F4860t1D6SeOAvgtKdz1gmy1IYDNwdsUXeehCUfgr6bp1u/jl5XH6lb75zlQd1aCCJ1luil5DyiYMLakFLitvPS53/pJYm4XR/+55J/El59HwSdDmd5CWBEsBx6i+Dz/kzzX5JEjdv8R+J1HeyVv/doKdOF5w89d2qFT6oHYHsD8je5HL4pN9aO1Rz3s1TtFH47ljkqV6Her0pDtwtC+R+WNoemCbNmaqtcbdslbeSIflNABYgTfF3Ar1eCllW3B17fZ3B6ekcPO99BqHf78NwOLypV3FiSpqm8I//8T+Go6Mj+Pzzz0s94ec//zm8evUK+v0+DAYDmM1mNR8El6v4fzwew2AwAIAi4IvBWNxc4dMXNDuM5/PlwXx5npe6v8Yrh9uylW4bLH6xkI7If0t6A12PNX3aorf71v+29pPPLpP0Ep/vRjoNJWTfaDoXH/vcZqL6i68sf8Z5jpkDIbuI5431l8VC2/nr88lotLqw199k8PVJU/9C0zwWepqfFMvzE0FpGc0ekZ6Z7ox9C7uBLh0xTUG629MqlH0OqCZlqVFP00NOMKuidVcgxuFrdTKi06kNP9J/Sh+Vdb6gUcWJ45KOrNEc602AKi0xigOFNottqA/5kQfj8Rj6/X75DI/Vub6+Lh2ICCFlwLJg3KYigW2jBQ18EKM0cZqxjnrKp8+RrhkrPvy+eviCAwjU2Y6KAp/nFqOHg3QagebcDIHmGPU5eUP4JNBkjpXHWD58ci2Un/Mr5bPguytrHVVqLW/JA4TbgQdP8DeVqYvFAq6urpyAIOVJo9VUvrRdqyg0Xa+wLAJ3gFkMB44jJMNoe9EdhFJZ+iwmYNMVhNabWGcEAt1xR4NuWN9t6B5JUr3Atlqt4MmTJ/Dhhx/CfD6H2WxW7ozF6yGkvojV1Wla6NQaOtak46HxLlF+tG9XQOnR8Xjv3r1SRqDDmOZHsMogXj/f2kD1cZw72I5ZlsHJyQlMp9MSLz8thtYtTVNYrVZweXlZvoyV5/r1JZwP31oUcqJo8oPKA8zjOz0ihibm6ff7kKapc2wml0MUn6UfAQA++eQefPTRETx9Oq4FYhMngMJ/4ziD2ne9Sgl7Vg92Ci0j5JF3x3L+OF5evuJFqoN8nDHH5a4v9fwh+nHPqjxyupa/e5BouEONZpCDiRI+/qxoX/fo4iSB2n9aVvqfCwFZTqeaT1JZmedcCW6SXABs524lIyq+pDaS+ZCPXQbP3bF1PHRnL7YvD75WZX1tWY1XNyhbzUVaL7oTln4XPKVpQb/XK4KyWZZClnX/Us7BwQEcHBzABx98ACcnJzAcDuHzzz+HP/uzP4OzszO1nKbPDYdDGA6Hpf8Cga5deHyxJKt9NPj6HQtaEJjaJJJ/rKkdcJdA8reFbHUpraneHKNzNfVBSBCr6wHo48RKw0pHK9sFXg2ovXJX/Apdw5s+199CHUIyntt30lH9TeZMLRgrGSt3aSLGLNBtFvPbAM2Q9A2cpgsi/x/joNEGpm+xluoQOlLNx4vmYPQ5vO/qwtNmrvocpKH+8eUH8DtcNKcUHm22TaCKvzUgwvmkZUIy02dg8DKYhmN+MBiUb5X2ej0YjUaQpinMZjPI89wJeNPxK/Wrb8Gw1L9LpTc0D3malhfxhfBq+NsENzSDxBdssDhn2wAqCL1ez9ntYzFyfe2C40u653CbEDMvEWLWxxBdioPy4ps31nmy7/rHttZCHnBoeq+hNs8QPwKls1wuYTqdeu+60uoc0xbWvKH1p8n41/ihAbMYZ5alPaS1j66x/N5UCSwOnrZgWV+aBnAkHJY1tska4MuPwToAgPv378MHH3wAf/d3f1euCzHtb+HBqjNJDlU+HnD3tDVYFwuUHh3/BwcHZSBzPp/DdDp1ZBTml2wZjtMnz3g70HGCOGn/9Xo9ODg4KHVA5Ek7tQLX/clk4vAi3Tuv8RcCbTxL/auVlU5r8q032pzF736/75yio+k1vLzfwZnD++8fwA9/+BCyTArE8t9YrvqW0oEETd3fxX+BE+BsVjiT8r+Lp3oupdNntLzLZ50PMbVW70R5ljhp4XT5meV5Pd/tAeXBnV74wBaUracnZdlwPqjldfPXd8hWv+WALKdPcdVpWdN8deE8yutmvR1poFbiuUjD31I74Dh15X8VeC3SOV2sIwDtYz73AbjviR5djI5flP0J9Psp9PtpKYssoMlWqpMNBgM4PDyEx48fw8OHDyHPc3j16hX84he/8F5rIMlmPPJ4NBo56fgt2UuaDyMEVnue2wShttN8M980yPPcrD/wchws4zXUn7Qf2urpsbglviSdzodfw+OzE3y6FMfVRL/32Z3auNdkimU+Wtqoif+hK39FaAzdls8mtk225cNpAxbfdCi9K4idQ3ye93o90ymVPpoI0Ttjv8mL0jcBfH1rUXS0PNxAxjI+evjWHB6lgmk0v/QGvXUxbKos3CXgwsNavybtgEq2tBNP6yP85sfm+Y6JDQF3VuV5XtsJRRUudFA2UTatSpgEdM7wu5CTpAh8nZ2dQb/fh/v375e7G4bDITx69AjOz8/h4uKidjxJzMsLMYt1l3PDqpTHBNbQUekLPnKg+WlbhI7ojZGFvnlH5aK02yWG/yRJyrtjOQ0cY7F9iHixbJZljpOXOs25EeOj5ZO9IQMshBtxbEMRDfW7dYxYcd4mdN12OIa4wzxmXErHe0rA5zKO4dVqBWdnZ46M8L3ZbDEcLLyH8EjjO7TLMAZQNiRJsQswTVM4Pz93jhNtMnYl8N05r+Xl+Wh6F+Mw1H/auqnpqJYXCWibWoz7LuQF4sE8uNPTUlZ77huHlvWZ8oNt0vRUlm0C6llXV1dwfn5e6z+6y5Q7dnGcnp+fwy9/+Us4Pz+HyWQiHuWIRz3i7uWQDbRYLKIMfpzTnF8ug2Kdl6E1FdsId13TvJpOgG0XO9/pOMc6DgYDmEwmpd1oqZvmbPzWt47ht37rQbkjFnfFFmNXO54Ygyvu7lhabyxTpQdryupdp0dpIq2KN7fNaB6Xh4T8lvhNBL6lALSLR8Mv4bDmd/9LZd18vvzNQZJz4VKUhyo/JvqDslK67Lh380n/XRxxAVm3nHxcMeav/mM95XbTyxVlqjzFf5c3xEPxV/mktsA8Fa06bxUv9WC0jBdpurTdcY5HEtfz4N2wm02xGxbrhEtlr5cAQBGMHY978J3vHMPl5RJ+9avr4NiT5C5A5WPjOvh6vYbz83O4urpyyuV5XjuRSwN6DDLipGuq9GIY14FDvjyr7o15l8tlefIF9T1JwUbJPvim+L6b6twxPkYNQjoAXfcRYvrIOmZ8/oZtjAHJn+gLZtK8/IqrkE1N2yvmZKo2/s5YeNN88V1AUx/zbUGsjdEEd1dAeeTXyki01us1rFar2ovDUgzDAo2CsTH5aAU1IbsNp6nGw77DttqC4ufAjXMtnxW0RYQb5LSuNI0vssPhsDTY6bHF3Ni3BD+6qF8Ib9OFO0axtDjGfPh9TrSYtrPUzToW8JvXz1JXPo64UxIFJh6ZQxU6Xx1i6hcayxK/Ujp9RneJYHq/34csy+D6+lp0pGu8tZGHfK7FjFUf+NaJGH5pGct489G30LL0a8jQ5OkhZyd1DvA+5zh4GY47ZOxI9aU76vh85en0mVQHnsbLNJGZtFxX8l0bNxJtjT/LerALpXnX+pCv/6kBaFVaLbokz0f/J0lS3rdN+yW27aV53GbNpPPHN/ab9hufX4PBAHq9HvT7fcjz3GkPaW7HrmGx/GryZpvjNUZXpKCtH5ZyvnkfWisl+SrR5zrNer2G5XKpBr05Dz5eurAPQjgweEyP2OU8cn6byE5OG+86HY/HZTBRKuPTI5KkOP758vISptNpeTceB7xuIs/z4N290k5haQxw+eLTbXn/avPMp6NrMlvSAWLGilWmc76SJKkFYENrt0/O3buXwbe/fQxZ1iOB1/ouU+0/pmE5kqNMr/Nk+xZKkjw0uFnRktuAB4oqHC49PtY5TY0vGqSqtxPHG5Of0/Tj2wZQxFWgrkwxDHnMX+VFBG7gTyrH07W8dZ79uC246HMLXX8e/YhkCw46b3l72trEzcv7UKorT6P5Jbz1cvQ4ZIAioI3yit4lizjyEk+SFMHZfj+F+/cHJY2Y5bjAUQVjsyyDLMug3++XO1kxYEnvc8f8/FQD35rIXzCnz0I6uJQm2bZSHg0f6hR8PY3RNWPs030ErX2430Uri+Dr/9g2CtnI3K/nwxHSkX30rL4mLa0Lm6Vr34UEsf0Tsg18dGJoSP1iwdG1/8QyzjRbxuLv2RbE9s9tgeYXsspinx3ZtP60z+nmKA2kQCznwWdbcT6jg7F0ZwKH0KDzOSzfQnOIWYR2xYtlQqFSxN/iobtdj4+P4f3334fz83M4Pz937n/L87x0KFIHSojmNmEbbR5y0mF7SNDWYUWFE8UXKte2HWiQEQUjvz9YAzoG8U1IAIDRaASffPIJAABcXl7C5eUlvH79ulauiZJCnelNAd9S5W+MJklSGkubzQaGwyEcHBzA+fk5UGc6f5tHA6pw012T1sUvxgFtgZDzLLZffHcCazKSG418sbe0jaUNKW7NaeoLFFgNC5SNR0dHMJ/PVQczB80omc/n5YsxEq3YcW+ZL5rCFuJ9GxBj9CPwAEoXQYS7BFQO43EueLw6z2cxDkOOAopHmvc8CMv7T5vnmk6D+fnudEleWYx9lEHWnQdtoN/vw3vvvQfX19fw2WefOfQpn5K+T9sJ6x8ayz7DBtf4PK8f8dqF40uag5wGgH50Ku1Xvm5qODluCtopMZznEG4JcJxjXV68eAEAAFdXV6WeHMK5C7mU5zlMJhMAqMZ7mqZweXkJP/nJT8o1a7lc1vShrhwOeZ6XjuhHjx7V1rYuAHVXOkf6/T4cHBxAkiSlbkrHPT2ieDabwaeffgqLxQKyLFN1fdoe3EayrNFctkpzwVdHTc/S9HXtPr4YZ7CGl5+aENLpqC5SyaAcsqwH/X5xVyPuhsWjQesBWndXLNQCnLpeWyWHA5ycnvvhwQ5QedBpus/l7+Y7YqU0f3rC8tTTpedYNzk9BBYbt06Hluc0fcMW81Z5sLB29K1cJkm4U9jNg21cjXspcJkAiEcPu2sxTdfKyGu3m5fXiZaTeKJ1kPmn9S7KVWMrL/Hhbl6arrWBzBuWw7zVkcX0ztii/jT4WtGu5mgVbE1TgM2myFPcGYv1KHbOAgD0eikAbGA4LO6OjQFcS/GUmOVyCU+ePIFnz57BD37wA3j06BGs12s4PT1lY6l62ch3xQeF+XwOV1dX5ctgdB3iOxkpaDqlRlPiE+W4tP6ijmR1/EvQhV56W6Ctr7dtj0r2lfR8WyDZaz6I4UfKy8dtE1zoQ9dw+3xpOEfa6lxdgc82a6PzW8pKeajdIdmmEp/as9ix1RR2OYcttJrIVfp7122FPnStbpJ/ggP3lVh8tgCeYKxlkQoJmNuEmMnry9t0sb5LINW/qXOoiVCXDGUEDMClaVremwTgBmzX6zUsFouacU35sfRfl05yX12155Z+kPDF8G0dx5JzRVpUNIUpZv75lDBre/A2kNo5SYq7wQCg3CGFY6oLh69Gk6dZlEwMPmvjmAdeab4mi1hovDbB1WY8NukPia62Rvn6SoKYeWmVc768FqD10OZQ6A0vqc2keYjKqGUc++oU294hOeIzOqwyNsSnj5ZP2eLtKPU9bzM6Rm5L5+gq2KHBYDBwHCT8qoGmsouPGUkf8JX30fatKxr46EoOpBi8bSFJijvCrC9pSNB0fHbVhm0hth01HZUDH3eazI89htrKL5XT0+kUzs/Py2NupUCwRMNS1yZyiublR/SiLLi6uiqP8N2GLOJjKkmSMiiLtoaU16Iz4J2z9GhhnN+0bUMvMGC9N5tNef+rVQdB/ACu80DSESS5Jun+HD/nJ2TXaPxadUUuo3lb0rrG2B1YX/ydZSkcHmZwdJSVxxInN4ES+qnjcp/RPPy3XF7rS1ouEWjwMVHHj+U03JyOmyYFXkVWBdwJ+e1rkyQiXTvWuE6vOXAE9TFNadSHPD6kckLL6+J0nycljvozKw4xF2h1ykmwEvFYcfp2uCIO+ZvvFA3RcvO58lyuWxPQeOR5EORnbvC1kDUVXoqjGO/VMcaVTKG2QSULivtjExiP+7BYbGC5tL2oTmU1rnd453aapvD111/DYrGA09NTuLq6cq59ouuDRY/gRzlKdg6FkL7clS6I9dD0cF+5NwUsfiiaHmObSHlDvrtQGl3zrWVCPFj8cxINzZZvYrvG+iM03Tzk67Lg3NfxHTsvQz7AEH6us1vx0Hx3qX2bQht52bRNurQHtX7nfEn+PB8vTXgM7ozVHI2aI2GbzpNtwrYdkLcBMUERCtvoQx8+6b5MzH9xcQE//vGP4enTp/D++++XZRaLRakgTqfT8s1/LCvtuN0HQEe0tENonwEVV+18dK2MtKhRfFIZ3/8QJEl1XJnGX5ZlcP/+fRgMBjAcDuH169dwdnZW5s+yDNI0VY8g8IHF8USdsVr7DYdDGAwGMJ1OAcA9HkhrE/oWKPZVqP0sd99tA5oGXBBCzuKmyhvvo5AMRYNWw4njXFov28x/ipfyTu/CofxZjt2geC2g6QZNnPNt5XRo/d71OiD1szTHLIpdLN19W/PyvHgTPU1TGI/H8OzZMzg5OYGjoyPYbDbwf/7P/4HZbFZeR2CVu1o96c4oHviiPNFv/O0bj4hDG+M+B1MTJ0UocNYUpGNgKS8YBOJ8U2cIzSNBrMHi27W8bZuCj5EuaNEgj3asXwxv1sAXzdPv9+Hy8hKurq6ce9G6bEvet9KY1fQ8vus6SYqTTOjuXTrW6P+ugN6ris5ofEEvTVPo9Xrl0clUV6J1ojtDT09P4fT0tDVPAFDWe7lclrwghOYE1bu16wXotzb3JLwIljlO5wEPAtBy1j7lNNGeQt2Hr7F8zGvzCHl8990D+H//3w/h4KB/c1esuzO2qEcVEMHvG4wqDSwjpetA80j3vdZ5kdIrmjwAxIO7nCe3LAiBWSkN84bTOH4prd5OdQea8y/Qpj7Q5hMd8/V8Er08d8uB8ShjfF49wwLuTlBf/iKfGwim5Yr/iYpTK1ek+e9PpWnFt5S/vrO1TrvKU+DmwdA6/zQvkB2x7tzPa3mqOlTPsZzLa7XrFW52wxa4ERely+uGxw/jbyD1wzHr4qBzOE2hvEe2uDu2OKr43r0BfPe7J/Dy5Qw+/fRabkzSppINOJvN4Pz8HP7kT/4E1us1PH/+vJSlSZLAaDQqd9GG5DS1M+lJL/y4Y4rH53uIsZc5b9w2pmteGxv3LvnttgGWIJUlCEP/+/pE8pNhGf4shi7mt/oNQv1usb0tPk+JNgAE/X+xsG9+gn0BzS/rrmXN227b9uy2oW3dKXRtjzbhAdN8p/1SHtEe7BqcYGzIUcQFkyQgOa6Q4yCmI5oOAp+h2BTHLpxDMfX18WNZJLS+beIstpT1BUPQAYJOD3zDPMuyMg8a9HjnxeHhYenI0cYxN8pjFlorWBTGJCkChjwvdVLQ/BZ6FgGvKbZtHFwxY0tq7xieLc9o8IkDHrNKd1hTR9vV1VXNEWjhcZuAPKBxhHMAAGA8HsP9+/fh+vq6NJRCSrIG2ny8DZDGpk8mxio3bdYkq0yT1kbfYl8Z/bZ213jkznDqaJT4igFu2IaCTD48sQGJtn28zfHsmzuU7yZO7iayh9MJze1dyrckKQIu0+kUTk5OYDQalcflnp6eRr0UEtJXfXNEyq/pLdr6qM0rn75pMf75WKd8hZ5rdGkdUEfK8xxms1nj9V+rc+ioYV9gRPvfBny4YvRbqy6GVw3g8XzamoVlNBnFdVXOq8XxZD1OmeIM2Ut0zEuyWZI3XAbyNC0fr3+X4wJpbTYbmE6npd44n8/L5yFnAZ07PvlBaaLd4jtpgtZZs6V9817i2zd+eHtb9XJp3mrrdZt1RuMJ6yntspbqo/GQZSm8884BvPvuARwdZZBlKSRJFeCpcCHu6ndFj+ZvK8N4u9a/OW88nZd1cfKgZeLk5d8ql2I+CVci5OM4EpZW57FOT8dr4Z/lBgAMomkOcprPJxeA4MIyXC7GBUJDZXz5fP/l3y6/bp5YXdzPc/HctrPWgs/CQ0x9fM/r/QwATuDVzcPrUclLylfR9oVMce+Lpd9pWrwoEnNcMV3zaHBns9nA5eUlzOdzuL6+Ln1u+HJSSN/kLyqiX4XeV8/LIw5pLZHWRUlf0ECzdy3+spD+c1ehKf+SPqe1a2ybamDRRdvq6xSXVk6z5a0Qw4OkR2o6T8hutdK32MvfBNDsz1i/qNV3eJdgW7a5pT0kOaON8xi+fDY554/TjPVdWiG4M9bnKMjzXHQwt2HotqBLI78ptHE2tBGqFppd8GV5niQJDIdDWK/XMJvNynRpZ9dms4HFYgGDwQA+/PBDuLi4KO8/AyicYrQMKpj7ADQgiLBarcRjA63joomyEAtNlFj+XHPSdDEH0cjo9/vOTgKAYjzcv38fRqMRABRvhI5GI3j06BHkeQ5//dd/Xd6xBgDqTgiJdw3a9gneE/v69WsYjUbw+PHj8tnTp0/h8ePH8Pd///fw6tWrGl1+1LHEt1Xp6NoRGgtW5zP9Haobd3ZSA1VbmCW6mtOUlqOyiDrK2+5I5nzRoxFDvFsB65gk1R13uOt6W+sCxx3n/Kn6l9/JZ9FX2oIvGMFBcxognhjZ2KUc3QagTPr6669hvV7D/fv34d69e/D7v//7cH5+Dv/lv/wX8Y5IDWj7SHeaSu2Bx9PjeKbzUgsihHjgdZT+cxnBgRoTmvOqTb9SXZ2eAgEA5vbmwA0gzcDxOQt8ZUOBsLbQxMjyBXhQnh8fH8Px8TG8fPkSJpMJDIdDSNO03B2i6RU4/ix61LZOtND6gf/n7RCaN3T3qNSGNB/SwDEbcsw1ASoj1us1fPnll+U8wFNr8Bkvg4B9ReuGdooWBEcnNR5jTIOyXclv5NvqxNacG03nnm8HtuTU57zF9DXfdUXnRkg20Wf37g3gX/yLD+DoKIPBIC0DHdWOWGA7Y7X7Xbn8x+cJyZs45ar5ALVvSgvLyjjquF0eaVtwWv4dsi7dej7ellJZf30l3V3mm+OCWsAW2PM4KMZeRYc/c2mE9VPMkpcBTgAe5Kye28omST1/Pc0f3MQ8IByDXP0OH1fspiUOfxSPFtwWuaqVl+nRfMDuwgWQg61Fn9WPRK5w1XmtaNTTKA0gd8fSeuOzIr+7QxbILthqHuaQpglsNni/akEnTfObb9wVWBxTPBj0oN+3+WHxRBS+UzXPc3jx4gVcX1/DaDQq70/fbDbly0mabpAkSXltUp7n5S5apMH9cFjOt77wuyxjdUcA/0kniNtqF25bF91n0NZsDvwl11g9hs/TLm0Crl/RcRUTxGzq/7TyTMdhyD8kzY2Y4OEu/MVt4Tb8jlbfX2yeNwGsfSHZStZy++a/yvO8tl4C1OvUlm91Z6wVsTZwqaDwKa0xAiGWv5Bx26bxunR2Szgt+ax0rUaphD804LTAmo+WNCboMWASXF9fw9dffw337t2D0WhU5qWKXr/vvltAdz1Sp4m0AEvOtS6EAlcqpIAw3tmB39yRYu0zySkWIwQtZUIKh9VxLM17zXnTtB/QSEjTtAx0f/rpp3B8fAyPHz92FH5KB8cMjid8zhUjn5NSqqNP1lGHLublONfrNUyn0xqd9Xrt8MjvPJN41eogpTdRrENgNbJC7clBW3+k+Y5OU22nnMSvlWfucLYYfV2tR8ijr314mZhxqsnQEE8xECu3pPFE57avbAw9K08YSJDwS2sqdw5YaPD5sa1jbbsC6gzCuxCvrq5gPp/DarWCLMuc+WoZX5Iuoa3teZ5Dv9+Hg4OD8r+0e1EbSxxnbN0t+ppl3YzV/6wQY8jz5z55Q8c0D7r4HCSh+bst4LTpmLS0Pe4m+eCDDyDPc3j58mXp0OR0ANo5RTR+JHluWRMsuH10LHxqukWIt64Mdc5DnucwnU5LXtbrdfki33q9htFoBFmWwWQyEY9qlPD56OKLpnzXEG8H1OUODg7Ko8WbvEzE7Rqk4bPdfWNd09O39aJTyJfA50+TcZIkxe7Yfr/YEVvdF+sGKqVy0oflqpVpBm5AlP6mz5My0CPzGs+PPxDL01x8iSePvKbiM52WvmPWxReo1g3oMswNZlbPpLtD/bISi+aeoKwmZt1nCUDDgCx/XvxPHD6sINtUMfjcfFjWfxRxVcZCy21zmQcaOK0Hr3X8yJO2dhdyA+VuvRytGx8PdAi6870K1hb2awKbTfHSyHjcg8ePhzCZrGAyCR+hiKfP5XkO19fXpS5MQbvGQqtvUdccRqMR3L9/v3x2eXnpnDiG+XhZDm11Ih8OyXbQQDoetq0e0pUOH9LdrH6WXQH3i4R4sfAWslu6GEcUl69Nu2xLi99Nm59SOV+a5icLld82xOtx/r73tYH2DF80Aahe5vbRsNr6+w6+udiF/IqZP9v0dUjzxWrPUbD6iDUI7oz1QcxE4UJYWtjehAG8D9BEaHKnNv5u0iexxjB1SHAHNtLHu5i+853vwGg0giSp7gbFPHwnJDowhsPhjfJa4N7lDll+19NsNqudN97v9537qvCt+abQxFGM5azOYC1oYOl7afELOfxiFSzMj0fsoAPsRz/6ETx+/BiOjo5UHLhzajAYOItwG4c6VZJ8ODBQId1bsFqt4OLiAmazWblrPM9zWCwWZWARoB7wCznVYtt+F0DnK+eH/7fwJzn66Y4Wno/fUddELtIy9Eh1Ov4prhhHeSxYDGHOh5TPMg+6NkgsbeCbW03XsTagBT+0tqHjTNONpOcS3duYrxbAl6Nwbp2fnwMAwMnJCSwWi3Kdxny+ezmwjjFv3K/XaxiPx/D06dPy7f3T01NYLBaOwRWCmPZFfiwvfNDntA6SLLKsf1oevrZI98NaQXbKumn4shDfvUzrxnU3xIN3t/tkpBVinGlS4McqR/r9PoxGI/jkk0/g6OgI/vAP/1A88QT52Kb9E3IcWeQFXyelORZTB0nfDK1D2okVscB5R9zokAYA56XI1WoFw+EQTk5OYD6fw3w+L1/Sk9pBS6Pfq9UKrq/l+/3o/M7z4uWRk5MTmEwmcHl5WfLXpM6cL7qDlMsAbaxrdZPqwXfIWmSWr38pTxb/Qawc6/VS6Pe1u2HDd8UCCS5inuq/G2Sh6dq3S4s+qzvFOH6ev3rGA7pVeYk+TZPbrc5HnUcpTz3Y6qbzALC8IxiEQGyciMhLnDy9CA7S/5ymFGzzy0HEl7PgYv1ZvRylHxOQ9QV96X/5d+zuWDfN/63v3uX5LbSLts/FttXK+9JlXpDnCj/vN6mvkL9Kj89ruCtcuHvWnfvFjlmUrcULI3in9fFxBh99dAiffz6FyWSq1iXP89IntVqtYLVawdnZWe20FPSZuO0g25A0bbPZwNHREXz44Ydl+k9+8hOYTqflyRNcdvvmTIzOxvPFrDc+h/s++qW34Rdok6cJPe772JavOcZWalLXbdjbVBeV0vlv5APnt8aj1M6+ObaPY78N+PwvEqRpWsYbAKCUmSHw6cV3Aax+qxgc24AYGtLYpvZE2zuZ2/rexJ2xmrFHHYK8jGZUa5M7tLC/hebQxqmvOVlCtLjSEjKqJVroEEBnYZZlpWMW806n09KJy+n0ej344IMP4PLy0snjo+mD2LbAPNKOKHokGYfNZlM7kpneDUrfUGwTBLH0j5bHIpxDbcvnvu84M422NRjBd+NoNKgTWKqTpZ18vHBckpPXB5w+jqPValXWC4PHCNSI0uZniA6vx7YW1hgDizvE6TdvU5QjfIxJ6xSnEcoXUwfqXKW8YTq+ocwNX9/aaeWrjVLB6XAjwGo8xY4b3o+W3Z6UH0lOaX3atd4h4dXkJq0b1btwXGh3/0p8h+Yu/W46xrsASjdJEri8vITVagW9Xq8M0uZ58YZ+7FriA7yffblcwmAwgAcPHsBqtYL1eg2TyQQmk0m5bktHbVFFHaDqJ5yzdE7z+c2BH51G8fuOVYtJt4xza5oGiFva9SrRjpFXtN1xvQPo/ohxLptpupRPykPrib/n8zlcXl7Cq1evYD6fly/gSW2i8cCBHn2rjS3OX2hcSOArQ8c3zxsjQ6zyuCl+K/C+ox8K6LyW9FBpjZZkLC0XqstgMCh1vPF4DB999BF8+eWXcH5+Xl6/QW2iNsBlG62b9D80ny1rIID/CEkfcN1e44nPE2ls5XkOWZbCb/3WI3jyZATDYa88lrgKyEpBWD4vqoBJnV+enpTp9D8rpaZhOZcH97luO7nlJV5BuUvWpc158em/Lk5srzoeKQhbT+PPJVo6SGNNCgjSQCyOeykwi/xjHspLQvIJVBMgOJoHDS1pGj6So8aDpZy8xmhlqnbGPPzbxxttr9Dxy9hPmIf/d9PculdjiNo7VN5rQVedLuKk5Xl9iv+0jar0uvzJnf/VccUp9Hq+uejKQnr6F80TuuMVoHp5Dv0Q+LIZzXt+fg7n5+fli0fj8RiSJIHJZFLa5zH2P6VPgdv3FvuI33Er+Qi6tg85z9Z0ri/eFkh6AELI7qH5pP+8HPeXdMW3L4/Fz8DL8N8aHWu/aXoXPov1F2I5X/2kdo/le1/A0v7cB4OA/kKpzlo7+K6wk3ij9KTrgbYpc9qA5GP1QVvfVRNfRJOyXUEXPAR3xloFFJ3s3Gi3wrYm/q6MeqTV1WJuNXy7At9EiXGqNS2DYwYFIr6dTh1ZeJwY4qVBy+FwCO+88w4AQC0YS+tkdSQ0qXOSJDWBnud5+Za9BPReDgAoj0VDsDindw3SrkKrAx3ApiD5INRX2OYaH3ScYZkmOw6a8t0kPzqnAQAWi0WpCPBFne5EsvC4bbm7TZkRCz5Fi4/PLgxFCahy3O/3y8BQjNzZppKsOTclHkJK2rb70we+dX8b8rSJIcaNTk0GYVvzu5Q0/D5j38JPkznr44cC1nEymcBsNiuPMEN5hnLb91Igp6WtJ0lSvfAAAJBlGdy7d68Mdnz55ZdlPj6PaRo1uvAUC+7EsayHMY4K6ZlEy+dEkpwc0vMmxk/ICcbza3XC39yG4LujuwzG0jr45pImNyifHBaLBVxdXcHZ2RksFgtYLBZiMFYr3wR8Tkhtzmtp0joUsx5K9CzjC/NQvUVq7y5kNx/31DkrjQGq0/P2kPRaTUZJDjY+/rIsK/WB4XAI77//PkwmE4cXixPI6jzxyQ8pH6+rlsc3BiQZ4uNPajvpP6VD11Nax6rtcuj3E/jBDx7A48djGAzQHgD2kY//laYD5tfAOt05XUqf4qA81dMpLokGL8cz1evqK8P5q/+n+F35SdvNnS8yDnfO6Pzy+tTHWg5uvXkgNoE8B3ADrvwI2gRA3KkqH1VLeazKIz3+LFxGy8v5wDw8P/0v47IFQKvniakuMg63rI8Oza/xXeGq8knjQOdR4qfaHVv0L+KjNOr4kF8ecKXP6Zih84h+ijtjcS3Ib+63TiHLemIwVrMP0P7kIK0t/D+uh/iyHMpaPPkpTVO4vLyEL774ouRhOBxCmqbOWma1nX35+Hpq0a+QR1rGshZt21fiSw/ZbgD+NbcthNrex4eW3+o/4Lit6SF9UdL1tHpqOp0EIZtMA9848NmTMfr1NxWkFwAtvgut7zW7XwP03yBQv63Fjr5tsPIV649qCzHtL82XtjxYbeMQHTEYaxH6nJk2YDUa28IuHMK34XS2QJNJjkKI94+ljtqxfJay1AFHDWqAIhi7WCzg6OgIsiwrdwXisSt4Bx3nhdLFnTK++/lilSCad71eQ5ZlMB6PYblc1o6oy7IMvv/978N4PC75o3V+/vw5vHz5slReKdyGsI5RcJtCSNm2KjD427ebZrFYwNdff13ixN0GJycnkGUZfPnll+KF3btsd1878GfSUY90fO/zAm8FukMKoF5X3/j0HXHIjTKch7FjmS7I6Ezm9/cijSRxj8DG+uFzyneME3yX0FQ+NqVlMTp8fISMp9sA6WQA7G90xoeCQRRwXaN5JYfHtvurCeR5Xr6UYA26SXqjpmzTdQGPdZfeTJVocNxYFk+6sBh0ktFPgepakt7Fy9Jxsmuw1FcDrB8PrqBzD48lXi6X8PjxYzg5OSmPhnr9+rX6Ytqu9BNOkxvkqIdOJhN4/vw59Ho98b5YDehRfnQNp2tYr9dz7nzrGmi/+JxjPJ9FzwitZ3RsS/RxjEj3vVuA05fmNq1PmqYwn8/h4uLCkU20730OuSaON6qT4Msjo9GofG6Rj7wv6K5/2mcx4yfk7PTJYA4+h2eMzkPlicQTnSNUB+j1UvjhDx/CO++M4d69AfR60o7YehAW/yO56pvLd7fcTaqpPnV8SflN6dEsEh88j1uHhJWrf/M0iX9feeTXpZXUnsl59fR6Pd266YDHy9b/h47iBSjSCvwYgCvKFc8qPJj3BpuSTnkPBV7D6TytnicBf4C0eq7Rlcr6ZH6IhxB+Hx8uD3o7AbSvS8VPfXcsp1XQw3pWu1uRD7luVfBfnj/8k5fHFOd5chOMTcoj1q2gyX+f3OYbDQ4ODuDevXvw+7//++XO1/v378O7774L//W//ld4/vy5s7lgs9lAv983nXiEoPkPpbUohFMLaCVJUtPn98FnEus7lcCnZ3QBTdqpSRmLniW1l/Ydw0NMIIqfFtRUB6R5uhqLEj+aj+FNAs0nSEE6gjhJEscXrPmRHj58WOrom80GptNp2Y7z+bw8DcAHb2K7bwO68md31d6avycWvxOM5QJAI9LU+JTo8PJvEjQR+vsIUkAWwdLfPuedRRmkDpDlcgnL5RLG43EZkEHnBQpT6YJt6syy3EXpq4dF4UuS6phlnh+PU7537x4AFIsAvQP09PS0XIB9Tp/YwITfcLKPVY2fkKIs4eC028oWjl8qt16v4eLiokwfDocwGAxKo+HFixel01dzXMU6mhCkdtbaTTMctHy+eerjRYJdy6yQHOBzWKsrH+N8/viciTxAQJ9r41kzCH19Qh29AJWBq7VBV0aTxG/Tftac8k14aFs/q5yjfWOV5bFgldWh8dMEYuZ+LGjj0DdvQ0Yfz08D0BYZyvnic5nmoc755XIJWZaZ74mtO7iL/9rJAzFzVpqPlr5rM05C9CkNa7kY8DlJMBi72Wzg4OAAHj16VL7QdnFxUR6Lp/EjrQ2++jSZM74+Q2dMnuflHZ8abSzLxxS2gYYf8/h4a+LE43qY5JTka6VE24fbClo/Il2svxaMtYwBn+yl9Vyv1zCfz6McyCF6WltJ42EwGJQ7mJrMeUk+ctvCgiPUpiG551uXKU9N25jLf6mO2LZJksD77x/CRx8dwWjUu7mLUfog7upT4ZK/ZR71cj58Ba912rRMlZ445VlOFQd97qtHnb/E81/eweu2qRSY1Z+5NFxaPr7dOvp3eAJgsKwIpuHvahdkFWxLEv4bebHsVmWclbgAIGpXaeLkbwd1XJS+tU60XZrQlPHZ6IK4+1nCU9GV8cfuBvY9d+uI7UMDtfVnKE9lvJUcq/7jyyS9XgKbTcV7yK8SC/QUidFoBA8ePIAf/vCHcHR0BAAA9+7dg6dPn8Kf/dmfAUDxsvtgMAAAMF3H4QO+Plv0Vcu6K639IVxYLtaejbWX2+j5sb4oX3oIuGzmPIR0YMwj9S2l0URPp+u+hltL9+ks2wKqg1vox+jieR4+gatrH02XYOHN6qug9fW93Jrnefky5mAwcMZ0r9eDg4MDODw8BIDKj8H9GruAEJ2Q/i7hie37bdZVkzHWcl34Uy3jrUkbBI8ptoJUSd9bxLsanG2ha2f4rqCNosPL72Lh4f+504dPQhpMS5Kkdqwv3TmAx91hHt/xtT4em7QDOlLwWESA4m33H/7wh/D06VMAAHj16hX8zd/8Tbkz6Nvf/ja8++678OMf/xhOT09LBZZeJI7HHms87WLMNm2TNgGgpgtDv98vy69WK/j888/LPE+ePIFHjx7Vyk2n0/LondgdGFbQlAbeRtQAQqC7QyV8bZRs7tjqCix9SBVF3DXO2x+PfdTucqOOPboTHmUJPwJTgjbykAZYqXGBb9mtVivIsqxU4EKwT+vlNnjpcp3VlKVdrWMYLGii61iNQf6cj9UmSnmXwRQL4Np8dXUVpB/C4+OP7qqfTqfwxRdfwIMHD+DBgwcODknvQLlB881mM0iSYnd7r9dTT1HQ2lhT3H0yJhTIiAUqD607kXkgp+48T5znEj16NQCVj3RnLOIZjUblztjlcglffvlleTy/xh/SldbGEPjasuv1n9cb/+MR2EmSOCem8HEjXYXRlVxGfrhjTNLDYx2Lu4Jd6L/SqReUPm0vLkN4e9JyVN9Zr9cwnU5rMobOHwk0WaE5j7tw+CJu3/UYkrNPGsc+uybkDKHORm3eJglAv59ClqXQ66U3O81Cd8VyRxD/pkHEIp2yWme7CiImiZvfn1ffsSvxwZ8BC17W21NvX16m/t/l0+UlYfwnN2nSLlk3QCvJnYq+y4sMNLDmBqrcNByb2h2fRR5wdsZKu2T5cbXIY07SeBvb0920ih7NV//PXzSNCbQmEAoS+9LivulRvm57Vm1JA6kubyL3LJ/bN24bYR6dH/cb2wfHDT+6uDp2uMBN8VH+6BipZA+d88WO2M2m+p3nKLcAer0Enj0bwcFBDz777BrOzpaEbjvgVzoBFDrW97//ffjoo4/gk08+KW3Z0WgER0dHcHx8DMPhsKaLcV3bpz/QNVbSL0N1C9HYF9+uz2/jy9/EzouB2KAcHyNagMeHs4lO2UU9+f2hEl8+Oj69hufbJki2mG++SLbamwToZ6CnJR4fH5eyBa+VkWAwGMDv/u7vwmazgf/9v/83rFYr56Sjx48fw71798oA7WQycV4ql16c7fV6Ufdl3za08c11YZd22U6xdgWCbkd0x1swGCs5+jRGYp15tzHpYwdWk8bmNNrW3aJ4tGnLmH70lbMuPqGgJ1/AqXMI02gghT+nQRdq3Gt8WBd/CY9FOcFj5Xq9Xsk37ry8f/8+rFYrODo6KoOxR0dHkOc5/PznP68547iTocsghlYfn+Jnpc/HcBvHe9My9OUQuqDO5/PyPxW69IhAi1LJn1n7pYki3qbfm/BF/2vjgJcJOc0swJ3WroPHfzc5bSOJd8l5quVtAhp/eZ6rL1JQ2l3MOw1/2zxNwTd2fHmsEDvmrEZ9Ez586yp1xlOHQdO2aKv07kIX02Rj7NHgmoPAEpjYbDblPbX86HNfWT4fuWyxjOsuIHatCMEu+p2Pcasey9tZG+N0Lml0uwDf2i7Ndd5XFv2YBx+kPPR/rB1h0VebOvja2DS8r0PlujDykb7UtlxmcDnh6++2ehmlt1qt4PLystRPu3JuaPpayHHHeaUQ6r9YvZXbZ1L7+tZLtL3oszzPYTzuw3jchyxLb4KvOO+wnBscYbUo89BvH8QOh6qe7ifEi0RLqoeU3/8dqkAdv6unF3mqdk7KclX96gFYYEFZCR+QADbFWQANeNEAWD24Vvyu7outnrn+B/ebBwrrv7E9KB/g2TnLy3pbXcHhy+Mr4+fJRyPmDlYRA4TqS/FZ+Kn63rIb2rZjWisLniB19b8+HqpxrZfH+mCA1g30V3MjTYtxORwW8q7ft71gZ67ljSzla+Hx8TGcnJzA4eEhjEaj0q5Fnwlf32Psm5j1tK2fVuPPgiMGQnWK9R9ZfLeSPqnhCLVByMbapu/AR78tPsnWoBDj47SU4+3cxC8m0aF9LfkbfP+7gja+SR9OH4TmEz9+HAOi+IIw7twHqIKlAMWpiQ8ePIDlclm2LZ5Sk+c5ZFkGw+Gw/E83eeB/qa8sPsaQzzJU9xDElGs6H7qy0UL8dAG+MaT5FS3y1wrRO2Oxga1v0+8bdCkkfJ10G9BkwsTg5Ya7RKvJYAy9xczvTkSB6Fs4ccecZcFp4kRCOr58dHwcHR3BwcEBnJ2dwdXVFfyH//Af4OOPP4Z/82/+DTx8+BD+yT/5J9Dv98vdu6vVCv72b/8Wnj9/3hlPbyr4xp6mYOFu1/V6Da9evYKzszNnnNPFGdOlOx7bApchPsc+rwf/5uO967FgCXrQtmpDg8Px8TEcHByUeUajESyXS/j8889L5cd3lx51ovAXObo09hA/4uV80PtkMU+v1yvHW57nsFgstqos7xLoGI01aNrU2WfsUMfCNtoVxwAehYtvZUo7sQtHSvWSSOgoTL4OYjmAuN17kiOC4twFIC08taBr2cpp4a5DAIDr6+vy+FHaDlZZQPPhyRf8aFmfEdG2nbsIyGC7NynbtJzm/KKGLLbj2dmZs0t0MpmU9/1SPJvNprxqAPW+6XTqGMVtockcQT41g5wDzasd2U3Xryb3pd4GoIzj85vakpLTRAJ6ZzC+dd7EqSDpTHlenVyBaWmawmKxKOXELtpwsVgAQCFXzs7O4I/+6I9gPp+X85XfYdVmDsfUJ0YH8jkCfbg0B0dMPfO8eNmt3+/D/fv3y/F3fX0NFxcX8Hu/9xi+972HcHJSvyu22hlLg4TA0gBo0K9Ko/UwsUry8aBjkYbPKjry7lk3Xd6dW8dPaUANr/yt4UvEtOp/dZ8l9rHbtu4H89ITgbjuQ+vrh2rXKwCOT0x304r/uDZhkM43/nIAkIOzmI7tUhWv8uhDOin5rZfX81vz6Xh9eGKP7pVo+XeZamXrfLm8hOtd5QMAsVyoLdxveXcrxcXx8TEBLEBL87kyJyf/c0jTBDYbgDQt6OPdsXhv7HqdqnfH0rEcI/vRRp1Op+X6BODqILPZrDxxLEkS+PLLL2E+n5cvxCyXS3V937UfFW10qkvtg41N+6Zr+9/S57F0pLU+BpfvuFwL+Nqpqb62Cx0vpp2b6nicjuQT2YaPaRvtF9MGlD49kZLDarWCi4sLODo6gm9/+9tl+tOnT8srBJMkgeFwCOfn5wBQ3JH97rvvlvZ+r9dz5CG1R+bzObx69cprp8XGHrYR44ldC5pArO/Pgq/NeN2mLdeUL/XOWB9yXyW4wyIknHe5AErOFKti4AtAWMo3ydNV23SxQNHyvnRLe/ic5Fo+6b/Uj74825h8Wh/h3XQYIOIOxPPzczg7O4PFYgH9fh96vV55vAtAdYwpBepM5sqjtV+30ffbBOtc9c0VnxMVhTpdsH2BfglP7IKqATeSQuM/lEdqO18fWtqyDWi84X8tGIMOdxrgGgwG0TI01hDxGYihNgr1M8/nOpls8+w2Amix9KjS5FP6aP0tbedzqmvgo99FW8bOn9D6RfF1xZ+kj21zvof4pf2u7T6L4dMiX/GOdrxf3jcm+JGbMcZrjNPJEnCw6tRWiMVD6UtroFXP48+5jMA0NKTxDWZJ58G5gdcJ4NqNd3zuwtBsClqbIN+aLYUvbGAeOoe2yWto/FkMZKsOo9EbDAaQpml5ygwGZ2PqblmPpDLIE+crdtz70iktfEELjz5rOv+1eobs3BjdScIRMx5ou3IZy/Fo7SDxSAP2+Hw47MHxcQb9Pg+8In732w+6fRkzHet5EyVdym+x+6zPeEZt/NafJQnXY/E/DxS7wVi0ad0joqUPxWcNxla7XQHcwGq1A5UHDKuyWEc+pvVvAHdna/XbxS3R42kUT5Pyeh4LhMrR5765Hku/y/z1Z26bVnm0dPe3RaZJ7Q8gp1W0AcDZVQ01fmg5+r8Y/1XANk0BRqMeHBz0YD7fAFWrY3UFyX+W5zkcHh7CwcEB5HlenjIDUPitzs7O4Ouvv4YXL16U+gz9hPAjDdTreH5Nh4jVf6geEKtHS2tQF/pXrB4eg5e3tVa+jc/LcjkzDwABAABJREFU2i5cx5NwavYqzxNqD8m+oL95/zfpx65s6Bj7sgsIy7L9tJ18wPsS/eh5njsnU9IXqLMsK68ueuedd8pg7Gq1gk8//RQWiwWMx2PIsqzcyENfoscX7qmNimld2KBt/I0A8b7PJtCUB4vPwydXtum/avOcQ6gPGt0Zu00hse0Gluh1vaDuC+AiQ+tnfZN81/2ANClv0j1LvrLSoiope9YdBaGF0Sdkl8slnJ+fOxd7c1iv13B+fl6+WTMYDOD4+BgAikWAHrGVpikcHR2VaVdXVzCdTkVe30IYsO/wyAmA+tzg42RbcyG0G47StjjxtP+7ghgeQ3mw3peXl3B9fQ1Pnz6F4XAI4/E4uPuWOqvpR5KLWjChqWMVjVBKkwLd8YX/Q3Tos13K5bYgrbHWdo2pJ18D6s7R3cwF6qDz5eE7Yps4BShQfNzQlIxWqa34KRRtgbaD1J+SkdyUhgXHcrksAzhYDtdUqc2QbwnQAcXzU7584zzk9PDJ/LbzHw1IOg7b4OIOD81o4voY0qa7R9M0LV9Qs9LH+7cxWIc7Y2NliBWs6xhApYdaHJF0TNF0Wgd6RYWVl6aAeDEASh0alAe6g83n5JNkDv2vyW98C/3JkycwHo/h/v378OrVK/jFL35hklea3KHyjstk2gY4FjXnn2Z/NIVerwfHx8ewXC7h8vISAMB5McTi+NBsFok/i+OhTX0sc9DiWOXPcN2MkWG4g6zYFcuDgFWAg/8ueJS/qzqUv3jt1HJ+3DJPFJ+Ly79j18WfsDReT/l//VlCeOI7iaWAagpJ4t5DWcy9+jws8lRlCp4Th6Z/WNJdsPiNH4A8r2Sp9sE6SvoZXfuq7yq4hzxWeOqB1irN7SOeT4OYvBI9+p/yrtGwHukr1evmSSM+/c+q9nbr4nsm1xMhz3UeML0a93QnNe17rW/d/ufyoP4pcGP7u/Mpd3b29/spPH06gqOjPnz66TVMJvUTeWIB130c57/2a78Gjx8/huVyCWdnZ3B9fV2e3PDXf/3X8J/+03+qBT5iT/Io2sK+5ljWKL7GdKUbxvDp8xfQ/9vSXTVo0h40v1VfB3D7gaaFdBYtn5Vvye9D213i6y75WihI44zqSV2O/9sAyzwaj8cwHo/LZ2dnZ+WOWA4//OEP4V/8i38Bjx8/Lv3wp6en8O/+3b+DV69ewXvvvafygqc2UViv145/GXloAne1n5raDF36oNqA1u4og6Q1rSnfjYKxALKTjz/3pWlO6tuGLviRFo8mIDlPffg0J7C0+PgGu+QkCkEXQibkPLcY4dIY48CdEF31lwTcMU4B76/r9XqQZRnMZjN4/fo1HB4eQpZl8Du/8zswGo3gz//8z2E6ncJkMil3BaZpCsPhsLxnNjQ2dg3b4MPn8ArJEys/dM5Z7+W1OJAsss7iHKMyN6Swh+Z3aKHx8RkKJPjw82fa+kEdNQjL5bI8xrff78PDhw9hNpuVDkvEJ/FCHcvYtzGLfsi5zvFJzlr+nwbhNFnlG3/7Mt+tYHXKYl7LWqc5yPizmPnXFrhc8q1DmqMvhNsn80Nz3Kef+eax1YAOQdfrVVP9wyK7eT7JmRMztpr0lwRN2xDrgDvvUJY1GYMSfW288PHO83KYzWZOfl/QBd9ypkeCN3H+aeBbo6R8lOfQfJXawyf76LqxC9D41fpQGsu87klSvbGO96HyQCgv3+v14PHjx3BycgLvvfce9Pt9+PnPf95IhvA5zPuNj1urztOVPEPbQDravk2/41y32uwajph1xQoWB3TIvsP/OPfpyURPnhzAe++l8ODB0An8FeWqoAfBJuLGLFpX24aASydJ6HeYho2mPjYt+H28VGmYKAWN5R2ufAcsBmV5MJaXAeGoY14vF3yBWPykxjGLR+vWZTkdt9U3D/ZVv4tnbpoVqrJx+dz/8XSb82OlpedrWufQMz2/xEs4rY4v9LxOt8hTjROKh46x6uhicP6naZHW76cwGIQ3XsSsV3SeTCaTMqCxXq/h//7f/wubzQZ++ctfwt///d87gQnNab0NaLs2xuKQ9FvL+mXplyZrrKU/JT3cR1fL31QH8Om1VgjZofS5pFtruCT/TRtdyaLzS7xawWeX4Dqq2fr0A2DfqHVb4OMtZLviCyFPnz4tA6Sj0Qjef/99ODo6gocPH8JHH30Eg8Gg/AAUG6QODw/L4CwCnmyJtLWjkEN1aOo/kXC1zdeGblu/u5a3Ce+heRXTbj4Z17X93TgYS40dCzRxMr2FeJCO9QCoC1+L4PU52boEiwOKAzopQkfKSsAnqWWibqMtNpsNXF5elkfsXVxcwMXFBXz44Yfw5MkT+Ff/6l/B+fk5/Nt/+2/hZz/7Gbx+/RoGgwE8ePAA0jSF4+NjuL6+hul0WtYj5u20uwBUUQg5a5oo0z66/G7RtvegWvhDJSrGeGmzoDfBaeExZi6HcNBdN7PZDDabDTx8+BAGgwF8/PHHcH5+DldXVzUeKR7+DAOyeMcglwO+RVi6C5D2sXYXoyR3lsulaNBxnFo97grQ8USNBWsZno7Agx10pzFf+zhYgghtgBpE+J+OF63fNVwcLO1JHThWvLTcNnUxiyNgW8DfEJYg1CfaHcCIs6v5ymWMJKticSdJUp7YgS904V2UoT7AuSXxQeegpIv49Cje/1dXV3B+fl6m0WsaaFmUxXg0cZIk5Q5o/mZyU9B0Rpx3lG9ph7oEoX7zld2GczMka6X8Ft2dPqMyEe+Ap0F3H2RZBt/+9rfhnXfege9///uQZRn88R//caN5JdlFPlkoyWrJ0UXHQ6z8pDRWqxVMJpNyl3ibtd7nsOP5utKdNboh3iz2GOVd0slRHiRJUh5d3uv14Nd+7RC++90+ZFlK7omF8rv6hHaX8nazrN9yGqdF6+zyQHeA1nfI0nKcHuWP4uB14nzw59UzOpexbGhHLAZYgQRf+XcCSZKKQVkajKXzsT6GacBLC8IC5PmGpW0gz8F5KanuM9HnM7VNq++Kl+J3AlpA1uWb16UqV6+j1E/hOezD4ccfhiblsQz/DuG10LLmAZDz1XkLvazs4irGKN05y+d6fazgeCl+5yQ/zUOfu/deDwYpbDY9aHnoiQovX74sg7HD4RDyPIfLy0v4i7/4i5puIumDVturiW6rrR8xeGL9fVbcvnzbtn8sbenzm9B06Rl/ycvSJtx+jykbakv85nKcQxOfaciHR/NYbW9J92k69rl+xHV1yW5DXxjHdRcgpGvjSUm/+7u/C48ePQIAgGfPnsG//Jf/snYdIAU8jYfD1dUVfPXVV+V/3EC1K+hC3kigyYhYO7Wtb7IL36ZWl7a+aau/KMYOAmh4Z6zluc8xaMG5TYhtpH0Di4OHLgjWfpUMHI5HUpY4xCoyEv8aTom+b9JJ4FvkrAqBVEcp/3K5LJ0qSZKUu2CXyyVcXV3Bn/7pn8J7770HP/zhD53yo9EIAAAWiwUcHBzAaDQqnVYW3vZ9IbUqatLvUN81XajobpOmDu7QM4sSF0svZtGJWTh946hpoME3T2OMKNwFBVD0G3e6S0olbw+qqPv41WQOd8bGKOj4G+9E1JRmqyJvoXfbQNsSZTA33HmwJUaW0Xz09Afetny8cece0vQdK2rlxze+2iiLsTKe49RkpYXnWFoxEKMjxhr7PN3CB28Pigvnv0/PkJ6F2pbrb6H2tOpLKCPxnvoPPvgA0jQtj5r78ssvTQ4A2j94dw6VYRjU9ZXV+OVrmuWlwTRNy2AsvtxiOfo/FriDR3rOZZq2joXk+jYMXAtw+4Gm80AF58mnf9ExjEceHx0dQZ7ncHV15fSX78h+dBqhTmx1gPD5RNMsslRaN5rKJ5/+StsAg7Bt+12qrwZNaGEZbdxbgctS+tIHPpdwc72Cps3ncxiPAT7+eACPHqU3RxO7wcOqHMcLZVqVD5xvG9gdyy5+Sa67tKX/SDPEo78ulJ/68cRVH/AdsfVgLN/5yoOwvR79j4HyehkAeYesDL7dsEVgrNLxcths6sfs57l736ZIJXePIk4SN6Dnjs3mQcqu8pESEBu01X5HUU3CQVeNfp1n+T/tDwkfgA9nrYT63M97xQvPo+sP9TaWntFv/sGXTNK0OIbdInsskOe58/IxzpHZbAbz+Rx+8YtfwGq1gvF4DKvVClarlaq70lOpKH5N99F0oRj7h9t3PjzSOhljT1t1Il8533PN5uB2gxVCOjkFqptR3Zzev8l5sdCP9VNY9Gduw8Xga+M38dl8fGw1uTKP4tR8ZgBF/4zH49oYn81mzhV39GVxXx0k+ruwSUI8ABS8D4fDkh88QW+xWMBms4HValVr+36/DycnJ+UuWDxF5eDgoLQruA5+eXkJz58/h1evXjl80GPYUa/wHWFr9T9oeX06sJRHohvCGzN/JTxN55TVX2O1wyTg86aL+e9bwyxt2fq1cU0YhBxUvsryCsUugLHQZAGLgbaOlRglheOWHEQ+PkOD0tJ/TZyHXEhIeaS00JHLMcpQiL4PtPyomOLb2fj20Wq1guvra/hf/+t/wSeffAKffPKJEzQYDocAUARl0fGEx7nRemn8vwlgcWZZ5pZVsQgJ0DbjgpfltNre26cBda6GnFoSaAaTBlgPqyJiVZJ5Gapc5Xle7kblhh4vF5KhWh9pBhZN58YI5tXGI9YDj9GTHMUaL03abR/AJ/s1BdNqeEt9zd/2DB0tzfmQFCzLvEH6Pgd1k7WJ5tedOnFBQM6zNA6bOD6aQqyjZZu8SOOFylRNt7LWQWrfkLMohEsDnAvz+Rx6vR588MEHkGVZeaTc8+fPnaCqDx81ONEpg8HepveDcZoUJwCo1zFgH6B+hOOXvyzTxbikvzVHD6UvrQPaGqTJxl05PCgtyQbjO8FpHp8ehs9xvvR6Pej3++XO7NPT09J5C+BeI8D5w+fj8RhGo1Ft3bfUUVtLNYcZfW6xuax2mkST/s6yzCnbZE5JToeQ48aHQ/rfBDS9iOtWsWsvP4ViPp/DYJDCt76VwnBYBSoSFsQoytCPZH8CgBPk5PpKPV1il9Om9IHtUPVXV7OP5N++NPdZouCo17fKX82ZIp3vgq12vdaDsD2SzoOx9Bv7N7nZ8VftzHWBzlccO5U+RuV2NRfcF3GLuZZCmkqyJb+hWXwXxRAXAN7tScdsNWewXNF2RXICWuCOtHZZLgwWfKxELa+PnvzMp6vE8CLRoeWb4VIoeHDhuC/6FIDvbMVvhOI/D77LdeD1c+ki0uoo4qrueCQxxUtfgKh2yaKc6wJw3vB7TXHH2cXFBWRZBvfv34fFYgHT6VS9SsFnV2vjx+oz0PQQpKOdpCC9eBvyKfI1LGQrWX2iMWuzD5+v7ZvYWKi7IWRZVurY9OV4X9s1gRAuzVblY7UrPkK6blM8vrIW/JLudHBwAL1er6ZHXl9fl//RN404urI3twVSuyVJAqPRyJnf8/m8DMgCQO2EGQzGoq89y7Jylz/NQ+fK5eUl/PjHPxZ5wPGPfj0rhHTvkDyx6MYx49ICFl+SFdrwbZkzTehb1qEmz310OwvGdlmhpnnfQgHUoYagHcVAnSBWaLKIx5aNcaJJzhjrRNSO3NslTCYT+NnPfuYYtC9fvoTvfve7pTMyTVM4OjoCAHB2yKIz9C20hy4CWH6DtHAqSAs1vQO56SISa6TEQMxCjfUEaOZAlB1hRRo65F++fAm9Xg9Go1H59pt1obQG0/j/UDAN68yd1jTfeDyGPC/eKOaObloH7sjnEKoDleu0P/YFfIEMAJuCJhmtmpJsMT5xbNH1ANdSy/rAn9M3JTmPuGZRh2Ov16uN41hdSaKFz3zzynVM7jYIxMEnP/dFH4wxWK2GUMjJ0xboWEuSxDHCEaiT2oILA2f07WM+Bq3zh5aJ4QXnKdYnTVO4vr6G9XrdidyT+oUGtTh/0n+an8qZWKD0tzEXpLEXWsMtvNC+5PKbtg0vg89x3F5dXcHl5SVMJhNYr9dwcHBQOl1i60lxU554P9O1ytdvriO+nS5JbZrbtk+sQNssBFTPAZCPfKd5rb4E3v6z2QyWy+Jo4l6vOgKX31tasewGUvEjge+ZHxL27ctDgy1VOqft1oHzlbA0fiSxXJbTq+jyY4LrJ4vUd8FWwVYMwuLLQUW/1D/4jK9b9FOvKwau5B2xNKhE5VHxvYEkAdhs8vI7z4ugrOtjkPuvwFMF4CSZlqjBPz2A2ibN9zyUvwug7cGeCGlNcNd/y3koPZe2lCe+bapArVze7V95/kk84X96nyy9M7bCW83NHNIUoN9P4OnTIRwc9ODFizms1+07G/Wr+XxeXguBVw4kSQKTycS5KgbAld8xOmATJ31Ib5bWC8mO9NGWdFwfWPU8q50vy5Xm+kasLombSkajEeR5cTw11Wm1+mpt5qOt1Uurv/TcN1a6tnG70Mtj9CgE6jdIkgSOj49hOBzund+nKfDxwn1q/KV7Dr/3e78HH3/8MTx9+rQMvj579syRUfj92WefwYsXL+Av//Iv4auvvoKf/vSnpc/94uLC6V9qcwI0i6fEwm35ZTjE+MP2hWcf3LZ9ZQrG+oQrnRRSZWKM0zaNERLOvjJ3YaBIwJ1WmEYd+Vw54UINgwAcn2VBbcKnNk58i5ivHM+DuEKLPXcEhe6/1CBm7GiO8sViAS9evCgF+nA4hPl8Du+//z4cHx8D3imLfNIdsjQYe9vC5DbA0v4W2ROTx0JPG+N8XEpKhs/ZF0PPCqE6U76t7WNVKLV5KtHD8Y93LeMbf3THFMXlk2GxMt+SH526vt10ePwJDSBTOZzn9d2csXwiPsrXvgFfs2iaNE8seoRkJGPA05KfOujwuXXsS8ADq5rByNciDhY9JdbZwYE6JbuCJrhC/N+Wrqb1C/ZZyFlgpWFxyGC+2P7i44s6vflR6VZ5h7xwZ4DGe6zOHeO8Qz1J25HaBkKGpdRHPt27KficTl1BV+tjSF/X5J40l3BsTqdTmEwmMJ1OyxNnlsulqEtJfElrDaZb+Q21T9sxx2V5l33cFS7fPObrpSavuF3ns/8s6RRXMaYA8nwNSbKBXq84thPTqzLVN/+0AWv5xAnG8CBNU1p8zNv48uOp70It+pLyrh1TjLti67tdi+NUMSjbYwFZbYesfmcs1I4nBqD3w1I9pwi04jjKIc9TyHO42Q0LkCRFILb4prSSm/z1O0CrQKwvmFfkwTa3T8mq3C4hjkd7mXqecP0kvBqtuj1gq0eRr7u2rsYGALCgrUy7+o1zqZJrVZ5iHtQDsXTeHR9n0Osl8OrVopNgLOJeLpdO0HU4HJY77qzrOgef/R+jB4ZohGxLC35tPfPxE3qu2WAhna+JjUrpxLYxnmySZVn5Eqa0GcaHt0l/0r6S8sTaYJq+KNnlPnw+21ACC55Qn0ttS/kdDAZl0JE+19pwG3bEriDLMmdnrwTf+ta34Ld+67fK/2mawsnJSWm7AlRHbb9+/Ro+++wz+NM//VN4/vx5iTfPi5MA6BjBl4AxD/oitU01oTFqsS27hthxasUnzSkrbR90iUuDWHs2BL61DUEMxjYxJu/yZL7rwB0Fi8WiFMiWshxPyHFkWfgtCo6mdFh208U6ISlPsQ7BLoDuhkwS9/g9fnzCixcvymNfTk5O4Pvf/z48efIE/uf//J8wm82c9onZuRWCrp3xbxpYHKF8bNEy6HTA3UTz+dxrHPhoa881RT1mboXAdwQx8mA1bGi+GN7yvDgKhL+pJtHAoG2b+RFy1nJ6lE/6DVDM2cPDQ1iv186dFtKJBhRviC4AlI5pCjTIi7svbxskYzYGpP6gzjZUhmmQG+cexcGV5n6/D++99x4Mh0PIsgwuLi7g888/B7znMPaOFy6rueGMCrwEsYaTVW5o6zum0TXlLbQDPs75iQHSeoFlun6JAmUM7dfBYACHh4fQ7/dhNBrBV199BS9evBBfcOF1wvXs2bNncHh4CElSXL/wq1/9CpbLZW2uYVn68h9+tMAKl5uIg6b1er1SluJdSF3KOD5n+dHjtA7cyYX9iO3lo0HLUGOf50F60s77rkDC2VTPpGsgfQHp7OwMAKDcYaPJdPxeLpfw5Zdfljrw8+fPnV0ZMcBpScYypmv2gqQP0o/rRA+vc132o2TXIR9tdXwLn9o4oWOWz3GpT2IdRTT95GQAv/d7T+H+/UF5V2yaQvldtEUVEIXajsfqG9mo2IlvQ6RFPxRnNb9p/npAtOLX/e3yJ+WT8vKjTH088EBr1YbSHa8YTKU7YlFeFzZwD5IkLb97vZTsku05gVo8npjywuuLUI2B6ru4/7WSP9VOrvXNfxx7a8AdsklS7I4tcG4Abo4k3mySG15wHaMBtLzMR48rdmVBN8FNP54EpKCw+z8hbSThc59b+LDYSRpPtnap89QEcNzY2tRtS18bchzxfV0FWPPcpc3x4nc1F9HGyctjigeDFFarnjhPYoHbMr1er9wkgMcSI/hkellT45rIy2jjy7opga/TNF3y2/iA3nVPoYt11gIWf4HFx2uxxzEAOxqNypceu9Kz28QbqG4do0NJerxGi7eZL1hj0fl8ejS3MbiPgtednrB1fHxc9g/HP5/P4ezsTDy5renJktsGiQ/JJkLA6/+0cYnXgr3zzjswHo/hs88+K3Hgkcb0CGeE5XIJX331FSyXy3JDBUAVb6H8hNouZoxyebcv/WIFTd7sE2zLzxVbXzEYa0USQ6xpha1O8LsGMUY6giUICgCOY8OH3+Lg1xSpNhBLVysXWux8CyZtS77Adl1nycHEd7+hQM/z4gjTJEngl7/8Zbkzdjwew3q9LoO6lNeuHOf7Kiy7Ast4iCnrm4+S0saDQRrukPPP19daPag8aDJWLGXajp9YJQYdtJZ29bVdSNnhgRKpfKjdEVA2o/GABo1mDFn7ijo26fjBO/WQ1j6A5nCngQ2pTIxegh+UjfxlGJ6P8nB0dFTeSYg7sUNjwFJPrR5NlG2q4MbwExpflSO1GpdWsPBuoS+l30XwGdx0vu5Kx6X8oOzcbDYwHA7h5OQEkiSB6+trePXqlfkoXdyNii8v0KOKLfJcqnvsmMOj/+m9VVS/qjvDm69TsQ4XSt+KX5sTFBdf27al/0myqQ0tLLvZbMoXh+jb5BJdWmY2m8Hl5SW8ePECzs/PnV0ZMe0s1Ucbhz75THFIzt3bBIknKY8GTe17afxqayGdRyHdzMoDzo8s68GzZ2M4OOhDdX+iG1gs8rufiu96WntI2LehhMCDjy9ehxjetLIVvYQ8cwOy1W/8pOWHBmarwG3PScedsUVAFp9VwVjef2otknowdrNJIE3dnbDFMcT0s4E8T2CzSaEIbBW7Yot5wB3x1ZHEFb3iP7DjcJMEg3jy3bF1/uODtV1DmAed/+Y4pXxxdDQa22jTWJw0f6UjOTnAras7frBcsbNW3mHLZVrxQkP83bEW/xm1Y/HFci2/5iPxPfelx4Ckq2nr4i71ccqbBrH2HepRTX2ZWr+jDMYXukO+BMtaLvnILDib9I3VrxIawxrPGm/aHArVoYkeWeg81b2nPOi6Wq2cUxUp/rvk++X2D38JhAZLUbdAPxieJDkajSBJEvjss8/K9p3NZuVxxKvVCmazWemXn8/n5QsnNPBPTxZFehabMOZ5KO7B5VosdFEmpMe3pe3zrzYpH7JXtLwhG7kNtL4z9i3cPlCnbMjw7vf7zrZ63Jllgdt2LlDgykDI8a05SnapeFHAewx7vR5cXl7C3/7t38J6vYblclnm+au/+itnJ81kMil5RuDBgl3BXVrAmzrpmsI+tUvbRQxgews8NR7a4EKliAbfMF1SXHwKd9M3PbnyK+1yzfMcrq+vodfrwcHBQZkPecS53OaYYgpHR0fw/vvvl0GKly9fwuXlJfT7fYe329wpy+Ww5JDX+l8yOOmO2CRJ4MGDB5AkCbx48UJUIPM8L41LHD/Hx8dw7949ePz4ceN+4GsP51PDS50BVoNRajtLGYCq7yk/+Ab0fD733uX3FgqICWiE9BQpXRrn3Cngk/OSM2qxWMCnn34Kjx8/hvv378M777wD3/ve9+Dy8hJ+8pOf1I7slgDfkn/x4gV8+eWX8O1vf7s0hKmjDucifqhslMYf/qbHIMc6YnDHBhrTXa3J0py2rGG0PN9hGrtGIw76Es8uoCtau+S5CUiyGyDeeWi1Ldo6U0K4ufNql21P24yubb7AvmazaSD1EQb1siyFfh93xeKOWPopAm0ufTmISdPc34mYztN4oATpu98APCh6U4qkSc5yKViq88Hp6PWhQez6EcRu4LU6aaTQqYpgKt0RWzhGcUdsv/xPHf3FPbGoF6NcTcjHbZd6sK4ejMXgapoWgdj1Or2R2wm5IxZ33+LO2E3ZLnmOAbECV9E26Q0Nd27RMhqPiRNgw9/xAU4OFO828ncLzesrtVlcXVza9T6TaNG0ejA1z7V+lXHx3/Qbf4fzu/fHFvfFVscUF7vN4+27UECBBjCSJHyvPMet6bUIkk+Lr78xPoYYH1DITqM2EV9bfeU0kHYlhsrTNuS+B17Xtj7OLMtgMBiUeNBPIfGurdkhG74phPQIK11NP+LluX+iSdBUoh/y22vlcc3lcHl5WTsljQYS7ypI7XZ1dVXW88mTJ/DP//k/L+t57949OD4+hqOjo1p7/PKXv4R//+//fRmA5XbmZDJxNj9J81KyW7/JEAps7hNoJzzGxgp8vrwYcIKxbaPU24Jd0butwFxb8AUYJKWGHueBgVnt3sUuoAkeS5/HKGUSaM6wEN7Y8agtvCj8V6tV+YY/VapwkaB4qAIWcrBsc95sA3fbAK+vPO1rqX/5WLA6zS2BQooXwafAW4MwWvkmZS3lQn0To4TzPLGyN5SfK8p03ki4rLy2BZTH/KhODpa2lMYUddL3+304PDws5crZ2Vkj47Rr4P3gq7+0Jvmc4nx+o8NvMBiUxggeC+1TpJKkOOYf10dsW7pOtpVVMc+0McrXAov8sqxvlnw+/pu2jdS2+66T8XaK7VuOyyr/ffPANybQYX5xcQGj0ag8uokecSXdAyXRTZKkPCL43r17MB6PnTsA0VEkyWIJp7RO+wB13IODg9JplKYpnJ+f145KbgPavOMBJskJFjuWQ+t4rMHYBLhu1MY20nilpxVIZbgsSJIiuI4vME6n08a2RWw531yT8lmgqb4UC3y8WGk0cS5SvUua43wsxdhYVn7SNIEHDwbO8cSJE4DUd4D6AceANX+9vKWsj7eqHvLzNlDHlZTfSLcaS+4a4H7S8hvvi8U7Y+mHB2mrl+JoMJZ+QPjmvzE4Sr/duuU5Hrm+gTwvAqqbTQppWuyMBUig2HmYOPUtvum6imPYpVP8h5u8tgAhzyeVs+LaFTStW9f4dwk+nqzPLPWqjwcce3U5imMbn9F8eBy7FTQdk9qNvvwhnE18Z741oqmvhPMirUdWXrnOp+HxrfeazdTGpxKTR1qzJV8X6vMI/GXdrn2TvF8suGh7++x7K21eRtJ1ML3pWG9q73LdDjf0oE+ZgsUu78KuaKO7+XhAHwwCvhRAT/BKkuJkM/SDjcfj8lTJ6+truLy8LPE8f/4cvvjiC+eYYY1+kiTi0c9NfMI+aCMrQ/g4dMm3D7pYf2LpWe2MNiDZhG1kc3BnbBeNEwu36Sh+kwDvjqX3k3IH28HBAazXa7i6unIW1q52S+2qL5s6jkNl2uC1AF0w+/1+eel6nhfHFUs7k/CohbYO632bZ2156bouTYMu1nbFxYIfg9oUtj1W2wQZeB4+diVDz9cWmkOfLsAowyx39VnBN+fojidJUUeeMDiq0ebjznKfB92RsF6vYTabQZZlcP/+/bLMq1evAADKQCTuHrsNQKUa6aOco3OHtyM3XKU7grAN8C3IPC92vj569KjMM5lM4PT0tAwa8T6bTqcwGo0cvHjUTey9xtxRCSCvrdh/lqOB2wZjrA4ArDO2ZRPnxJsAobprctfn2LDgQboY1IwBiR7KnMPDQ8jzHJ4/fw7L5RI++ugjOD4+hoODAzg5OYHHjx/D5eUlLBaL8ijjEPR6Pfi93/s9ePz4MfzVX/0VLBYLGI/HsFwundM+EOgYQ361QI6v7hgI/o3f+A34wQ9+UN73/B//43+Ezz77DI6OjkpdqiloDiCfMxCBHxnncx6G5rXUPtta6ynNbdDJ8+LNc6xTaH7hOHn58iUAgHPXUxPg7WftTys00ZXaOIR9IOlJ2x43lC6lRXfLh8YW3xlv5Xk4TOGf/tOncP/+EIZD3KGJu8XcoKIbyKBtJQX9moPbBRVuSp/Tq2wCL2anLM1Lyxc/5d21+Izz6/KWOG1GdRo8arj4Xd31igHX4nev3AGbZf3yeHvUMfCeWCgDr+h05Ttj67xWkLPfOfudAwB9CbLYCVvslpVOacDxi5+8PMIY8+U5AN4Ni3nx+Fh8ToOy7txLGM9aWszz2wGs3z4C563OK23T6jcOg6LfYupXHSWMwXtddmljoBhHOA/52KnPTZo/KXd8U9nXJVBdha7P/B576zoYGxyTjgPla4SEn983iS/noo5K1yzNNvLp9WhTxthMbfxM9DsWrOvqer12jrfFq6Eojhj7xsob/b4rQOeEL9il2RRN6NExPZ1OYTabqe12G7Z5SAZYeer1ejAYDMr/19fXom0JUIzRyWQCs9kMzs7OAKDwe/3RH/0RvH79ugzW8kAs0uE+wzyvH/v8FsLQdrw1jVGE/AddyRWf/ywW1J2xIaeABk0XlDY4ugQr7aYNvu26hRQIVDzouf9dBIJ8YFE2YttzF04TyZkQ65AOjW+fA5fuMKHOIm0B4hBq9zfNaW6FJmOtiVzj/UyN/dtSMvelz3n9LYEMqqBz53WMbNGck5LTXMIbmr+WYBc9VpkG+rRjO7kiryn6nLf1el0eTX9ycgLL5RLOzs7KF3Vuazxw45gGIUNGC4XQc3r3K5Whp6enDv1YvBLEBkikfrTKBq3/Le0ljV+aRncO444VS5A41qlwVwztmDXft95r+gSXN/Sodct4iGl3XIfwe7FYwPn5OVxcXMDl5WW5SzbPixM7LH2EeWazGUwmEyd4y8eaNkekNrKsu71eD7Isg+PjY3j8+DG89957cHBwUBrtTQLZUt1CoPHpqzPPE1qnfM7GXYJlvIXGLZdXfG3X8Gvrfeh/DF9Wfbnt2rRt0NrEpz9I/5uuURI/lHZo/ND1WqqHxDc+Hwx6MBymzs4wvyiRxlqoTBwgLsQr4dbo8XQfb3K6fQ2j5Yu24zt65Tti3aB3FaR1g7L1b7wXFkDaDUs/vB70d07+428akEXAYCoGUlMA2ECaFjSq+2LpLt/8ps5VILoYdjToVtBNknrwrvid1HihefYR9oW/JnxoZXi6H3e9zwJUAby7oRFfhdeda3F80LFWlK3oF8/xXtcE7t3rQ7+fwNXVKsqfodm3mu3IZbxaI0UX1uhqfEn2my8QxX0G6Fuz6roaHkrbp6fF+D0s9fLpSk30E6seK9VTy+/TQ2L1iBjdw6d383Gn8eTTwS0+Kx9dH9/0RXOfPqrx55sDTflqCr4+a+p/4nXEF+4fPHgAq9WqfNmP+l2pXYr+oNFoFEWna4jBHWt/bIOHJkD1eKufipaNyU9Bk7uaXUHp+dK2ZYNH3xnrE1RvwQ4xCpEVLA4d3KkwHo9LhxV3AHI+dwUxygHNb52wmrJnUYi2Nda545UC3tNwcHBQLs7L5RIuLy/L8cODN7ftANp3aNo+1GHatK1xFzQ6iC3KWyyPFlx03OwDSIEeNJQ4SIs5lV9NlHv8blrW6iykfY7HLQ4Gg/JNPNyJxndTofLg6zN8a48GH9brNUynUzg4OIDRaAQfffQRvPvuu/AXf/EX5c5QWnbXgLsjAKodw3wM+/oltF6kaQoPHjyA4+Pj8n+/34ckSeDzzz8vHYU0CM7x0/EWO2csynMbxwinYzE6LXxQHQF3T282m/Lt6Ld6XwV0vKIM4rsDYnHhvOTGZFftTneNz2YzeP78OWRZBg8fPoTJZFIeUzybzZyX9iSgdf3888/h6uqqXOd88pgf085flqAvq/hgOBzC0dERPHv2DN5//3349V//dTg+PobxeAxJUh0t1TSAFALJEac5KvlcbMsPbd/bnJM+Z1FMHX3yFZ/hbjo8AYLfAxUDPocp18122b5d04pZU2n+bQHOdW391urPZYE2r5MEoN9PoN9Py3tiMUhYBdTqH1re998KWIaWl/BU/ULz14OOSVL9puky3kRJr/MHwvHJbrAB87hHEbs7YlMn+Ip3xfZ6fej3C/22uiM2u7nPN4Mi2Nkr8Rc7YRPlw+vPIRe+tU/xvGpr99jXakgVwdbNptpZXRxhTNsFdUTOGyIJBemaQ3ucsQHHbUMcP/X6Y4DcjltqQ71dJRw6zxQP/w3gHsWPY0/Dg9+VHMjLsVs9o3fIFp8sS+CDDw7g8nIJP/nJlTpeYvxnUlrTwKBkA4V8LFqZJElKe5b7awDcHbVof9IdctY2QFuSw3K5NNnTXQd5eHtZg348aKr5LiSQrrbbBcT6zWL9yj6w+ABCuH1t5gsM87Ix99fuWofdJuDJcrSOo9EI/uE//IcwGo1gMpmI5ZKkOMKY2p6SfXl9fe3sBN8nX+ldBfSN+K6m4dClTzyEvwktaQ1qIw/VYGwo+kuNIOuCvC/QBW9tnSma8kEh5HyleSTFA59LQn29XjtOsyzLyuMdEXy7Ydq0YexbEfR/7ATwLWaxZS08xjzncwV3JPHys9mszEMVTY5rn+fcmwCxTt1QEKlpANFHAxUMyUksBWYs/MbS1+an1nbUqAkt2BSHVTZZHONaPh4UDfHkoynxQOvK66WtpbHBt9VqBdPptHSIae0Ra4y1BV/ggoL23Mdfv9+HPM/h66+/hsvLS3j06FHpyA/J/Ovra0jTFF69egVXV1eAwaLY43p99eH6lSRbtPUPy3BlMmZtswAaPRis3lZAax8hpp+pPAeI142wXfEzHo/LcYovVCB+OlaaAvKLjqhXr17BZrOB6XQKX3/9NZyensJqtRKPguN46GexWMB8Pi/1Rp98pvMwpj6a7Mrz6rj/Xq8HBwcHMB6PyzbcJrQx5HzzXWs/yRnhczhp60XI4dklaLQ1nV4D/nY7xRVD37d2hoz0GLtsF9BE9/A5/DRc0njR9E/pufZboxFqw7ozGeBb3zqGBw+GMBr1SHCCt0ci/t6O/cSDiLFrQ/d5aT73d53HpAw4gtOe7m/cEcvvg+2V3/gCRa9XHUucJLgjtjoyWA/GgvDNgQdhMa/kTE3KuuU53PCOayyU98cWweJN+V0MSQx4VTtki7bC44nB+a63f+io4q5gm7hjYZ94uT3QxoSeL6mNK54H56Zbvhqj1S51253VCLvw/YVsMWkdsOikmE/SL+hvtG9iAfVMTjumvLWMtG76fBEWmiH/h0ST2x4WvaHrNdXno4kB3o4WfUMah5rerbURpyMFA33ty9s1pNuHYBt6qqUdY/vRd40T+np++ctflr5E7AN65HCe544vHUE6hluTCU1sDam8VeeOxS/hipUxsfxQOcvTLP69puDq/rpfQOPZh7cJL7HAeRCDsTGdZ3WUbqtDfLBtmtYF1WfQWxZPDfjCqE08eiclAr+zcDgcOncncD5j+LLk8zmhLGV8OKwKA8fFy1gcRU3qwfNTZQeDM/QZ75PQnLuNudYFdBHoiAGLc4mDlUdfXyAOehxkF0Dx8rpRo0NTFmMcj1oen5KlzUt0zgC4LyT41hCNL97ukoObp3FloomTGhVFiaYG0o5MfvdODD6AusEEAOWO26Ojo3K3PS9Df+9iDnKDWXtOgfe/NO4wHRVw3PV3eHgIAJXiLgGOAbw/vd/vw/n5eZlOj+71gTTerfm1+tLnWEceLKPrlW9OUjxSOvYJDcRuY22xGgq3AU11Ej6eY9cWgEIXo2/sTyYTVa62MRyyLIP1eg0vXryAFy9ewN/93d+V/KPzPISHyqnFYuHcVyTJIvzNdxHH8s55WK/XpU7b6/Xg8PAQjo6OSsN6GzJNc/CFHCUSDsvahn3D56QGu9anmkJIH+FziDtQY3Vwy5yU2o7LTSnoKPXjvvSBtZ0k/cgKVK+lu+ZDc0FqN8u8pc97vQR+4zdO4N13xzAe98vgg/RhWAg+97+UJwYoLfxd8JA4vEh0papz/uX6hNLku2M5PuQJ+aW/6afQQ7SdsT1nZywNxhZHBhff4NwVmygfANx9Kg8LHowtPnmeAkAOxQ5WlBtJ+V3UKYXNpgrG5nn14lNxdPGG9FnFE+5CRN74rswkoQG0hPDYBvx4XJr1/7uCrunuqh4hOlY+7Pzq/VnHQccYLUd3xNJALMBmUxxV3OuhvaAHiEJ6iM925MDXyxhfgrWMbz2hR71qZenxxJIt6qMfsgM5PxJei39C4iNGt+P6ldavvjXap6v7dF+Jtm9cxcQNutCrqL3M9aNQm3UFsf70GFvBl+e2oImf3HeKG56u9pOf/MTRzbkfNEkSOD4+dgK2AEXw9erqqlOe20JTepax0Qa/hkuyGaSTbLrkR7NTdjneY33EtAwv2+eZ923ivqmwrckd04d0QV+tVqqDoykfoechhStG4ehi3ErOitiFchfwps7RfXFa7Qq0gFJbnKhsaDuCaCDHpyBboOkCSJ3KuAsLd20OBoPS6crpUIc0lR+Yl7enFGi08qrVzeJQtD7nAXKJv1D/aHSvr6/hF7/4BQwGAxgMBuURpIvFota+SIcG9LYJdNyhso0BQAmshgg3GlEh/Prrr2EwGMBoNILz83ORBua9vLyE6XQKk8kE5vN5yWOM8U35oXON10kyXgHcQL1Gmxv0koHfRkGlzvRtBRbuus5J+edjV5vLWhviOOn3++Xxulpwqot+QH750a/8Rb1QeeTx+fPnMB6P4cmTJ7BYLODy8lKU4fgb5TiH0HjnaZvNBv7mb/4GvvjiCzg5OYHf/M3fhPF4DEdHR/Dy5cvay2zbAN/8sMydmDnQ1Kil7c13cbcJWGvOta7mNZf5bZ1jml6A447T0Opyl+XWtoDqFdyeDI1/yTGN6yf+B/CP8V6vOp640qno+goljiTRg5ndQF1nqdPid7T6nvsY9c17H34trQq+0npUH+l4YnyJp9oFiztT+v1+GYytArC9G9yhXbEJSG3pQg5VcAq/i08RhMVAbAr1oC3c1JVeNVDtiK12yfLjiTE4nNzQocFivEvWLyOSWwqUvoX20HSNs/a5bDMAYOAV/xfjMmd53Gf4Yop0rRW1w0K6RcgOx2ehQKgPfME6yW9oCfZR3JvNpuQPTxjx+SND61bIj4nPKB68Hkcqtwv7G8Bmy3GeKezq+NZtBVn21d/o6/+Qfv8mAvdVoZ2cZVn5Ypc0NqRjnKfTqZPu8zm9CdDWr9sU8KU8Ce8u5rG0McbqQwzBtoLctWBsiJgEXTsb2kDbQRQq71MU2kATZ6fknItdyKkjUVIqNFw+x6/EnyXdSseXz5LXStuCI1RHC+x6zL6pi3bXoAnt0JiMlYdt+oMbImgIWZUMNKqkvJY5IhllGh7NqUqDsXiPCwYFMC91BPF6A7jOZC1IRXHR36F6Wg01q6JBHeDaOOD9quHgvynM53P4+uuvYTwew+HhISwWC8iyrAxOaPekbjtAJgWZfMcH036naVK/8qACKoQXFxfQ6/VgNBqVx77SsogTAMrneDc356GLwCR3anDgThJfkCeEX8svOb81HqT8XYE03u5SoEOSM77+knQ0/F8d81jsLpN2p4bWHSsgH+gspy9qWHDy44hfvXoFo9EIHj9+DMvlEs7Pz53ALu1nKs81Q9oSdEPn2q9+9Sv4+7//e/iDP/gD+Na3vgVZlsFoNHLWkbagrStN1gAJL8Wh/bc4/qwgtb/0XyrHwYdDK6OVtwDmDx07L9Gna1ysbaLNDV85Pk7a2DIhWRzSOZvY+D79Q3rGncyaTuFb733Pdf3OPY4TPzyQVzURnbciKYE3//M8d4Mhbjl/4Xp+O11/vhinOwYXq7JJGdRJav/x4+6Kpbtje+W94xigxR2xeZ4ABjn9AVmZLzfQif95utYOifCNQeYc0nRT3hMLzn25btAXdyPqgVcfP29h36Doy7hnOHVw7rt5iv734WXYQBov0rzmOKvxWZclxTOUlfpLvz5/lmR/W07ooDgQt9VPKa2Z0lru40WjledVkIfbWJb1H//z9S5UL64PN7XtmoKmh4TW41j/RhNdw4ePQhd2qU/PtoCvXhZdR7PrQ7itebZtQ4fGS1N8Unl+UhzarRpIYzbP8/JuaCs0qcu2/CSxNC39Y5UzsWMJfXq0bNNrnEJ0JDkm+c00H571SOqQX8Rn91rqrN4ZawXrovoW9guWy2V57CICVSwQ6BtcEmzbUbsraLuAtMHxTYMmMmObcsaqlMaAb17QZ01phdojSZLy+A7qeJxOp7BcLqMcgjydL65II9aoQMAA2mg0cu6P3Ww2MJlM4OrqqnTo8J09PGDEaUsLMP2m+HiwwAcUB72Tgit/FCTlnx41azFiQs5WBNqOq9UKzs/P4fLyEpIkgeVy6SiyMfS6VvB5f2Jam7duQzxSRVGiQ5VGPn66qj/ios5K7JvNZhM8wpyOMd+OXWksako2Dc7QubPtdW3bRuMuQZrLXImXZBLNe3p6Cr1eD46OjmC9XqtGZ1fOjhiHGgc6/qbTKczn8/IlBjR8fWNIGotW4wqgug8b2+lP/uRP4Pnz5/Czn/0MTk9PYbFY1Hb6+pxg1jpLRh0C3eXvC85JaXy8+BxRdL5qoDmcsKxPDu4jSO3dpj9pWWwPX1to7b0t/VRzkGsBzib4uwTNYYFjVjslQgK6Fllpp2lxJKcUlC2aEcd/VLWiytB8chkpUQ426Hh9O2brdZTy6rLBpUH1gOpuWCn4Su+FdXfEFi9a9oDuiK12yMqB2CpQix9eRz4ucvKNMjKH6mjiFKRjiqtvDMQmsNlULwimacELANWH6M5YIL9zgi8nz2BnwGndRfVq123WFHQ+ef9L45XONfdbwlfg4TallC8ncxfKeYsvPK/X9ZeDQjoE19O4D8AafKLPLI5qy5rKT2hBfVl72Zja/Rb8mIffV99Eb7bqCPtgE2m8NrGDm5Sx+pQk3Yu+zNmFjmvhI2Qr0/z8iiGeL+Q7+iYDv6YE+xf9nQA+HaqZ33MXYO3jNmMhRt6FnvPjnvG3NA+Wy+XO2tbqs2oiD5rIPWt/tQ7GxhLcNmw7OGgVttsEi/MlxEvM4hhj9GuO3rZ4KfgcmhpdyxiNEYYhGl2Nw22PYy1wtE1eLAui5ihoQ886b2LGcBM+usAdkkNUCZUcl9JYjXEch8Z5yOEs8V85bargUuhNNlS6Y3c/8TrHBK20fpMc6TFGrhaYCMkSX7AHAMo7FamxGho/PmU2po4ho4LuZJUUOatiFeKbGuG+8UufoXM+1ikc4pEDpUPTpLrQ4AEfs5bxQfNRPNwxo62xMUaiZc1t2qb7pHMChB1KFl0IYT6fQ5IkMB6PO7/vVGu3pg4WgMoYXq/XsFqtyhcItKOKQvhi1sk8r15YSJIEPv/8c5hMJnB2dgaz2Uy977iJrufT+yhOTTeV5k4buWJxZvLn2vyNkbO7Ap9c0/RDSa5b1mHtv4TXov9jmZi+teKl6fR7m/2n6UWW/NJ/K1idR/0+wGCQQq/Hx7F+DDBHjf+7aEaJDv3ukpZGz14uYf9pu3Nk+r2xeFRxsbu0HqitZAx+9GOJq+N/6cflA9Rdp3n5rAro0nIAVVle9+Smji5t7LM8r77dMjn5Xw/Q0TJv4c2HZv3tjiM6xigu6T/9cDz4SdMEsqwHSbIpA7IVDllH4HqB1fZt4i/UcIX8Nxa9yucvlNZdy7qjBWOb+Hkob742bgqxNrqvzzmPTe28UJ19fSaBNm4ojxa+m7azlV/u57DYhtvQ7br0bWp4t6WTSrJGuqM0dn62nWNt/R1WfTcGp1TON1e0/zy/9kKBZPNLstJi0/jq4AOrL8wHMT6mLsZ5J8HYNxW6MHItOLp0LMbgsgghH/9thTkuMtt4K98i9No4gt8k2Lf63IZTMDRvJMUuBPgmKi+PsFqtOm17HNPX19eQpikMBoPaghly7OFvS4AHdxxJQV9Lvfr9vuNMB4DymGIEvitMuj8MecAFX1r4mwQa8jwXj0HkSjQPmEhKdpMxjWVijuzkfUfbh/Mh5evKiRoCpIUnNNC3V60KK+4eDSlwm82mPHp4MplA4bzte8t0KYO0t7C5QRar+OG3dA+UFQ8//qdL2KYcv401wgJUJqD80IzpkMFO53MXxgXilWC1WjXekc7H0GAwqKVLQOvF75fE75ixnCQJ/PKXv4Rf/epX5csnXeiWVC5Kjj4Kof66LdCcTk1fZtoltFmDsC98zmIeWKJpTaCps6Qt3Ma40+qq2VehuaPhBdD1oCQB+O3ffgQff3wEjx6Nartiq+BaHbe/uZrobP7fblpSpkl8SOk+fmUc0rz3/edzgOrYlS6J/+vHEvdvdsb2od/v3dwTi7titTti6ztji12zUP6nO1CrdAy2AoBzRHFxL2yBA/9LO2IT9r9qM7wrtjiquO5ABxIMTpJdB1qtxG7Xrm/TJnvmkgAgAU4AEPvcNg6qMQMQzs9xUjlSPHP5os+qcVt8j0YpfPjhCC4vV/DVV/MQozf82TYYhHRZgLidSFJgRfotBbVCukxM0Eyjmed57UoPi08xRqdtwvMuQRsHTXWQJvWSXmK+a+AbN7sIZr4pYJ3L24Ku7AUA+zzSdGwfjS75jClrHXPWFy9iIdYX0HbMxJYXg7FNHD/7JgSbOsK5g7otWHDEBjHa0rOA1n4hhSB2IqHQ2dXi4OPfKgApv6Fxto+OuabQxcsJuwSLghOqi+Rs4sEQbfGjTkAasLPec9YUcNHhAQEOTR35vrsamuCj7aSNMc3JTf9jQFaSJzzNOoa76CfOtxbc9dEL8cuNVV87+XCHZDHtJ9p/MXIf80t97mubED++dqaGOh6nF+ITy/FgzLaA8osvJHDHQsjRbzHYYxV9KZjRFcQ4Rd5EAxJBqhvdzW5dd9qAZKw0oWVZ37Qx6EuzjNnFYlGuAV06abgM8M07nzHcVfC8KzlkcbTG4NkmWNoutA5y0MZIzJoo8UBlZldGvcaHpttsS15q+oXkuLeCVjc+LrnthemHhxk8eDCELEsBWavKgPNdp23nM89D+d3gXmzX62OFjsc4nBY6SeLirX4XQcciPwY+pbtUq2AtP8a4ksWxHxD+O1zffNNArJSPP8dxRvO65d0xw3FWd3P6IEn2MajIYe8ZvGNAx1dLTN7xI9Pxybg0TWA4TGE2266/TdONQnaUVI7rpKFAgwTb0E2onqf5MH16a2wQV8IbE9yI8eFKPPKyFnox+K3+5BieYvLG4AiV6Qq4DXMXIcafY+2bWF2c49lHP4LVPxuaVz4fp8XPGOIpBniMxIcvNlArzY1t9XUbHCF/JAVvMNbKRBeddteFzl0HywQPTSbqhNgG+JwRPr5Ced7CW+AQu3BRoMGePC/eoMT7mZOkOH5yG8DHON1xikcAI2CQJ3QfIQW83/Lg4KB8c3U+n5e7DhFiF3q8M5PeK4D3TdG6rFYrGA6HpbO/cAC5d40ibv5mLabRwJ2Pr6YLsBZcpLxJSoRvvOF/6X6eUH00oIZiEyWtrZLD21mrh6TM+5QaTZfA4GaoLIc873bXGG/rzWYDq9WqnFvI/6NHj6Df75f3Xs5ms5pxH1rb+I7F0BjjRrTkCJfKvoUKfHNDChBqY3Cz2cD19bWTj77Qs6s+wHmDpzg0ceBI6dJOWICqjdARpxlf2lzFeUTnbNe6H11fJNmAdYt1sFnlapeBWOlFrS7ke9cQy0+Ms5OOLZ/zaB/aJNYG6sK2DtVbws/bVApM07mNupn29rpPrmCAFO+KLWi7AcYqiEj/S3XRn2uB2Lqzmwcz6bcOddxaQDccmJXS5bxu0JPy7bajHGgtbJ201OFR/hY7ZNHm0O6G1XfGAgvCVu3LZZUWaK0CWfWyCcj9UqXRADLWn7YRjgXcsQs3Adpdi4ht0usW9+3LzqaA/b1bPO5Y9s3zan5yPQqcT5oC9PtpqVu5eFxZjb/pN4C7YzU2GOjzDXLdkvKgrXc+h7xGC9PanJii2ZDbWmdv23cp9U2sz7WJHmW5ouW22yYWrO1w1+p1m7APerkV9ilW1vRlixjAE7ea8qM9j2mHNr5cq6+NgyVWxqEWjPU5eyyMNHEWbVvwNDEmu8B7m+BTerYJFuUktFj7gDojJAWyCxo8f0ybNQ3+7vqFhDbjoO58kBUMTYY0qauljBWvr49C9bIqh3QBos7ZPM/LY1m5wyp2nIXGNl9MtONSeRnfMwweDQYDODw8hDRNYbVawXq9jjJwNDlBg1/SDis+vqRdUBJe/J8kSXm8cqi+MSApCjy4pZWL4UULQlDQjFTezto4kMoiDewTKdgd4tMHPoNbU8IkZwEvT/MkSSIebbwtuRuakzSNfgMUL09kWQb9fr/1vGoiV0Jtu0vYBx5ioCsjgfdBU90iFihfKItjx5DPcPLNV6vxE8IX0jPazHurXPcFkPr9PgwGA1gul7BYLERZJ0HX65YPuMy/LbCsn122S9uxAdDdHOVruW/9kOhuQ1aE9EcfD1mWlcEA1IWlvL65Q5/duzeAe/cyODzsl2UxOFHh5Px7KtcSJNyYFkM3hmf3mY9IYuLB7b+EtWuVxj94Zyz9yMFV94P3ulb3u/KPr14JgLjztfiut83u5JhFFN0x1eYt7CW445qP+SShwdDqueRHc0p6/Atcv+tSP5B0QCv+Jj4i31rjw6Ol+fySseALfEr9xnWBNj7MEF/W/D79xWoDWfBL9pLP1rCCb1748jalvU37rosxuY25HqLXxo+/j8DnQNfzM0TXh8MyPlEmS7aH70Vrmta2zk3awVd/n5z12VghWhoeDp3dGbsrR9Fb6B40p7Evn29gxQr8GGWL8tFmYenCgaMJpaa4dgm36VxrUldLma7bsHJCVDuTfIBvhq/Xa5jP9TtZ5vM5pGkKo9GoTLPclSnxZn2+Xq/LYy+lC9al8pwfdJwtFgs4OTmBJ0+ewNXVFazXa5jNZt46WyHPi53EvV6vdNrxOtE0DKzSXbQ0LwW+i1aTHxaFGmnw51KQL8ZxLzlfKc+UtsSPxYDG736/b54zlA/cEdH0jkkJZ1scPoMJ2zdJivss1+t1+cbeLvQWn7NDo5tlGQwGAxgOh95x6lNSpZ3UVn7p3ONjuQnObxpYnEKhslL/dmFMWyHPc5jP52Xw0KozNdlJznHHOEA0We8z+tq2oXRPc4yTaTAYwMOHD+Hi4gKWy6UT1NhVoFUzpiXYFV9WsDpKNRmp1aeLO4a7AC5vaXoXDsa2fEkg6T60XJqmcHBwAFmWlXfFX11dmceV1Dff+tYR/PZvP4LxuAdpWuz+QtKJNyhbHblbfxYHPMgh05PzUh585bYBnGe3PWjwhgZdU3J3LL8zFu+N7d3o73RHbH0XbLGrFAOy7q5YfFb1n7VRaCCWl83Jfz2Ii4FhPkaClJVhnOfdBF23IX67wrmLpWGPlp/GkCRN6lG9WJDnFAd/uYDen0zndyVzijnrYud6Epfd0m7YkMMdf8cGR/Elde4P0exdTj9Ey5e/qZ7Y1te5K72qC1tX6lNfP/CTV6g+FhOItfKM4ybGfvDR7zJItg+xkX3gIRbuIs8+2HV9fLKzCaBvNnSFFkB9TsTKui5ko8V2RftEo2l5Idn6YoGGp7NgLCV210AyHu9iPSSIeaMg9q0JX/7YNy9C7e9T7LoIqkrlfcoLL+MLgtwWbMMJacGFws+neO7ScRRy3FkcvT7HJf2Nx/7ijrbNZgOPHj2C4+NjJ3+SJJBlGUwmE/j666/LsrFB2RBwvnn7WwwTGgTVgo0YDJ3P58HjZXibY3vgUc74nO4aonyE6hsCzemtjU1r4CRE0zrWNKD8SQGyEB4pyMbz8/rwPKi0ZFlWji3cGW2tU6zxbAGtz6Rvn0LUtXyyrln4ogTOscViUaZLQfgYmeYro80Dvt5yed61/G67hu8bcJlrba9Qv9E+2FZgFmVEkiTw0UcfQb/fh7OzM1gsFuWR9NZAfyx/WD96eoHl5SEOTRw5Vt5CeTR+NBklyW+LEWupY0hO4GdfdNZdwjbq3HZuhnRqmicki7n8pt++PD7a0n+LfoRrGO4I9zllqZ6i8VvJhgT6/ep4Ygy0JSyItpvhzYN/fvqxPDWtQ6icu+bIz7BPkoT+dnfFFt8YsE2hCMaC0y/6B5z/xRjjzySggVQgv2kaK5GH2iUnH718lZd+bxv2Rz/ajqq2P/VD2E499fFpxpBovPEji/Gb7lYP4ZZ9XlKQVNJXqGwACAdCETS7UyorrbGav0arE6Zb7EG+BmtrvGQzc71eag9Jz6X6mdU/IKVp67WGN6btNNpaHovOYQW0mS1g1ce2YYPuk37dpH67sMtj2qiNzdKVryHGh0rzS2W7tqO18j6/ocVG8PEa8q1J5Zv0QVu7SlqzpL7B31zG+Owunx0eqqs3GBsabL4K3TX4pjokNJAWUN4+9A5GCbRJzQWC1Ukcy/+b4ti9DbAKYK0cVVb3tR/ayi5J/uHdSUmSwGKxgM1mA++//z58/PHHIp2vvvoKPvvss9JJRQNbXbSdtkBaHXr4LEmS8t5AWg4B76TFOuPbU5wXCdAIQfwYgOL3rHbpVEeamiLfRmHT+KTGlmTMaYu7ZoRKfacZOrhzQaqXdR5gH/R6PRgOh2X6dDrt9F5VCpohqq0ZvueoVElzwqIsdQGa4Ys713E84ksN9Ahwy/ig81MaXzGKMp8jb3WkMPh0oRiZQmWeNDbbBn1CsNlsoN/vw/e+9z04PDyEv/qrv4Lz83O4urpy5KdvTMXwxeduG9l/G/qGlT/an/gCBgKV600cb03yIw8xhuVbCEOMkzCEZ1f9sI25jID6XL/fd06EwblAr5vQZIuk76RpAr0e7taE8lPkc7/99Yhr4zzXg3kuPQ03DyLE8UPr6ccjpWvBYho8cIM4mJ/K42qXbFr2G/0U5fSP7TlvC/wtBV+B/M5ZmSK9CPDi2im3F50Cxe+8/Jby8fxdLD9Nceyjqb2PPO0KEjVg2gxHMSf48dtVPv7tS6uXT7zfANW6xq9Zwm/ftUHayU48wBmr28TqTG3W0xh7Sgt8NNVlm/Ld1IdhCTzzMjF4Oe6mQcIu+lXCK8Fbnbg5dNl2d7Uf2szhLurcBQ7fZhtu99C1oAu7PPbFbEneSDLZV9763Je3VTA21ICSk2Rfgy5WCDl4d0VTg23xog1WLV8XE4zjsrQ9d8yHBnisI9rCqxXuwmLB20O7BzKm3bbtJN4GWBRePtZ8bYMBK2zPzz//HCaTCfzGb/wG3L9/H0ajUVkej/bFo43TNIV+v19z1Datk1VZ1YKsWC5JknK3L73T9eDgAJ48eVIeU4wvaPDjg7VgAp2XNI3uvLIEkCx31lIHf+zLBbwOPN3qyIxZvH35pOeSvKRtMhqNYDgcwnK5hPV6DcvlUuwXSSZTubvZbGA+n0Ov1yv7N7Qbug3geODjROOPyh7rPclNjeUQaPOPpvPnSZLAZDKBXq8Hi8UC1ut1edetz9nB66M5N3hZqd0kvmLq3KTcmwJa/X06jiYftXK7gpOTE7h//z48efIEkiQpT3Gg0IVzi469w8NDODw8hOvra5jNZntzdKwPfGsDTcf/eLT/crms5fPhjqXvK4/yRBuX+2LPJYl8XYEPuK1ggX12wPn0szbyVlp7moK2rlBYLpcwn89LHYTSlfLTvqcvk9FvPJq4wCEFIfQ6adUtAnVSkM8fiA3hjclL6+EpbaUS+dwNiLr+Hr4rNiEB2OoY4+pI4gpn0XaJQ6P6+PjibZ9AFSS9yRFsiuqo13r+3Pmugqq58LyiKwVkJXzOk1zK1zVU9bDSps/cukt5uuDbhsO3DO3JEqXCrvjzjf1KNualjKznqds/3IdgscUln5umy/KXk1HWb8Pf5lvnrD6GGH+3ZrNTm9ynl1nxWUCz/yQfPs2v2YUh3D5/hzSmpOdWiLWTmui0+6D/3RZso7120Z4+Pfk2aEt5fDp9U7zWedoEN+bz2UkxfksL+GxZi9/eZ1dIx+9z/nwn/lntbKmsBI2PKdYEbsxibcl/22BdGNvgiy27LWEmLbp0QZboxzo8JJrSf2ugwgJW501TkJSWfXVItxUYHBcK4BgZsM8gKaK+fBqgcwIA4OXLl/D69Wv45JNP4PDwEI6Pj8vjjE9PT0sjZLFYwHA43MpxxRSaLtj0rgBczEajEYxGI7i4uCgDRSgreICM0/K1MeKX2kHKb9mZaQnMcR4kmpKM9AW8YuYS/qbjkBpPFsORAnViZ1kGBwcHpTMU703V+JbqhsbkYrGAwWAA/X5/K/IYabU11mIgZp2wjA0t2Crh4+Vns5njnMD09XrtvJUeCrRS45/Px9AY9RnhFmjrVLlL60hXvPqcC7EypS0kSQJHR0dwcnICDx48cO4E57IoZk5L+Wldx+MxPHnyBNI0LV8asdxPsy3oSu7QuuMLLfSlK5984DLGYkeFgot5Xr00tW3Z2gRCOpgGTWzQru28LoHq2aF8AHG2k1XH6QpWq1Wpe9CxJ43pkHMnKQOv1RG6PHhHcndeFw7IjyeHCUeTcjIuzUHl4zNx8iGeqgw9qhhq/UePi676o/jQO2LlOmnP+Xx1A7JAArOWYevmsThOq+9qOOakrB54VTA6eN3fmr1pS7ttuP01JN9Su+yyXjiuDTlv5qWlzlReuulyAI0GDaU1UnNyI/h02ZBu0iWEdKdQmZhyND/FhZ/YE6Sa+tZ9foI8z8VTsjSdMuQD1vzCPpD426bs2JaP4i1U4GuzkKzwAfczd20PNIU24zfWj9cGfHEdfG7BEfpNgd8V3RXEtJnFLyvJNgrSi+CWtaDJ2PAGY6mQ5ci0HRrfBCEW46Rs69DcNVj45QM6dFyxlda2hVNsgC3k1NiGA/s2wbfrSmo7GiSS4LYNs7Z94dvtx+tOFW5tnE2nU7i8vISDg4MyGMuBHyfbFqijlSszlkCOhK/X68F6vS4DyQBF3fCIYgmkBZx+a2sJ363dtk+19coa+OB9bKGntXmovbV+wrL0Ob/DEduO3l08HA7h8PCw3I2FR+PS/FSOS/IZ54R2of0unPpW+S3xww3KWAUav5uMQSxDDXKLI4SmazgxL51LSZLA8fExHB0dwdnZGUwmk1pe6ehsXufbWs/2MUDUFUjtKunYAM3uTN0m4PyPfWHIlzf07Lb1qtixGMqPL7Twly26AG0e4zPf/32bb5L+YilD69PGecNlc4xD9DZA02+SJGm9wxz7wjJm+TPUaVFP9PUnfYbleLs/fTqC733vPjx+PCp3xhZ03Y/LU7N6FzxJQbx64FICypvwlOS7jbHj1iEhgVY3KFoFWKl+Uf/gXbE8sFqUzfNid2xBzxKcZSliE+WeZ7jWVnmLvpTmcU7y1D9Q7ootcBT1yGvf9bSKDwvo2UIvY8ThtYrFWLxt8zXN30XZbdWlW9CDta6soS/yVv8r2eiXN9wejA22xcgzLvPrc4/WUX/J22cnaWX4em8NTjTRK7QjPCVeaB5Oz9K2Wt9pdCiETrqy8oI8NNkN/BbeXIiRHyE/823CPo3bXbRPm/repm+QAj21UirbZD1oyxNAxJ2xFkcddwzuMtC2a/AFXaS8TXG3BS2IFloUed9rRj7+li44joGQ80hSSNpCU6c8Ly+l78PCERqfvvlpVUg5nhCOXbYLX8Tb9LG1T300lstlucvHEujdJoT6xjdm0FiiwR260wEd9Ygnpt0kOSMF1KS8TcA697lD2MeDJiulOWa5d1taZ7U1mQMNmvZ6PciyrNzhTJ2rGn+8PtzJzdeVGFkQA9oY8IGPfy2IqeWPoUv7W8pvGb++O2I1WjQN0weDARwdHcFkMoHJZCIa5XSOSfjarmexTgQKu1Dgu4aQ44On+wISHO8u2oLrRVwHpGsAL0N5ldIxzScnkqQ65h/p0HvKOI/bBrsTPawP0bmmBbMtdWuj02j0fM+ldbgLkGQDrot8zMWAzxaVaEvPfG28rXXutqAp39ZxiH1J9URanuLwrccIh4d9+OijQ8iynpCPr5Hx9eoCNLp7YBoaoAriFH1HAzhugLYK8tAjUOXganITkA0Fgjgf6tNECozRdan6rvLyArnzO8+pfkvTqg+w44o5Pf7bB1U++xz0484NebYLPtohvu6oCN0zKI4lBuABWrjRr1LYbOrjV/Pnxq6/Pns+xp7Q9EpNF+G6amiNt+L18cSB49B40eyEJu2jraMafxIdydaldfHVO6RfxR4/vQ/+0y5gH+th8fPF4ol5Fou7S998l9CFT2sXODWwyLGY/E3odsmvlD/kQ+OyTfO7NOUlhufGxxQDbHcyfpNhF20XUlZ8C3mIP9/zriZUlzi2Ibi74HsfwSKo2jgK963daB34G5sc8OjBNE3Lo4Y5rNdr+Prrr2E4HMKzZ89qb+jgnazojF6tVlHt6FuAYvsFFXF+tE6e5zCbzeDLL78s2+Lg4ABGoxEcHR3BeDyGi4sLWK1WZZk2u+el/9seI75daVIba/xQI88X+JTSfDviYo1aCgcHBzAYDOD4+Bjm8zl89dVXjjJCA4G+QBHec0wDJXSc8fHP+y7Wud/FOuDbzWcNgjTlmQaa+FzwKajIN0/TlGVp3PT7fRgOh6U8keohORHuanBhX4GOMZ/M4IHPXUKSJHBwcADj8RjW6zWsVis4Pj6Gq6urki/6wk0MWIyfg4MDePbsWflssVjAcrncWkAwBix6M5+b2npM5yGvG+KR+l5qh6brwb7pWwi0TZIkMR/v13WQWnMm3wZoazHqFfw5noiBL1+14ZuO667aFnkEcF8a05zk7q4iuLmrVAoYgpOPfns4AijvNOW8YlqR5wZjyVeSAEmXadn58IO/vAV5xT+2l1SHOq1EKKN/OC0JL3ZzRUfiPxfTiz6hwaZq92rVVzkkiburtdoRm5MP1H7n+eZmzG9uglbuDtmcBGVp0JbWq+K1fj8czR8CS974KcntKvm5jNfuM9J5t9y766Plf67ltbSTlsfWxvutLycJwNFRH7797UM4PV3Aq1cLNS+/3kSyCSW7RBoHIb8h1WnoCW0+3ckCqD9b8od8hJagpFaOByM1WtzfFMId4pWCDx/VIzTQdKsQXl5mX3XOuwJvSvu9KfUIQUwdmwZAm7Zj17aM5K/w+cy7AgtutINofo2vbfMrQVQwNrSAWIKzoWAOnaD77gi8Lf5C7W0NFmhKkwRthCbtz6bCJpQvNK74s1AwhObh43GXC0jMgtVmceNBAyut2HIxfNxFoM4l7jRFxzbuDlitVpAkxVGis9msdicfQuzY7hI0fPyYxSzLIMsyAIDarpYY/vdN5vsMHu4A12Qbl3+Sw16DmLkv8cfT0MHf7/dr5XgwQJOT1GimRxZa15iYeml5u1I+m+gaIdohXNY1sM1cwP7Ae4Kn0yksl0uYTCblSxIxjo4ma4vUtrexhu4SpDqHnEe+OcJli2QkbKMtcVfqfD6H6XRanubAwTKfpGCjr/xmsylfGmgbSJICO1JaLFj71KKHhhyVPno+3ToEvnaw8rUNaKvHSmvXbegVXck63seSPkHpcYdul3o5voRBg7+x+H22V8xaUb+fFHktf4EtQMl50YOevmcVTYkXMKU3he1NUx5kTmppLm2tzS0MyoFXOT1n39IzQt05lpiXrQKsNLiK31Wam88N7jU7krjG+X6ZPw649dsKhVZ5mvLUVV0seHbRv5IsKORkQbzXS2A87sHVVf0I+JDvsIntE7KPfWk+H4Jljln9gLyOXdiDPhyxa6dFZw3piCG6XepITXWvN9Uu7BJ22UZNaFn9NW39KF2V6QosNhz9HZqrMYHYkE+1adwlNm8TWbgNkNawJLG/2N6FTRN6xnlstTOWErJM2raLJ8e1z4L7Nvmz0vVNYl9fSbvG2jjM2kJM8NCKI9aRsq26c+G8y0Ac0ozBve0xcJvO/Ni69ft96PV6sFgsYL1ew8XFRcn3cDiE4XAIWZbBH/zBH8BPf/pT+Mu//MvWNEO8t3Hk+4I3k8mkFkzu9/vRi/6u+zW0iFIHaJIk5Y5nHhSJkbmULsXTZg219OtyuYTZbFbmxV3YvByXOVJgCZ2ydOe2rx4WhWQX64emAGMQaJvQVQBZA76jOU1TePbsGfzO7/wO/OIXv4CvvvoKfvGLX8B8PofBYGCus3Wc74NOti0e2uKlQSKKkz6nfceDLrsGvFf6Zz/7GYzHY5hOp3BxcVHyslwuo8cOgN8Ixfp+/fXXcHp6ClmWlXdeA9THdxewTX3C1384P/O8fo8YL+OTkdq4lPTGJo4/Ce82xqPWVvRoaisOPHmAnswRq+dsa85tU0ZSvOv1ujyt5PLyEhaLBfT7/UYyH1/e6vV6MBwOYTqdOldU8DKSrKN5UH+wgKQfUZ1Mui+W/+YgpYeDrG6eUF7/87j+jx0uzYZX4nwnN4HXoh0T9p/K66qcPK599mqIJxqE5esITSsCo0XA1U1z06XPxvlf7ITlnyoYy3fJVh8AN2hb153FGgYCnNY08lTM4/737xDdhuhDnG1xh8pb8NfbXApM2ctb68T7oGuQ5hNNo3MZf1e8VWNXk83UHg7zEtZJ6A5Yba74grFSIFniuanPrO06LQUEfHkor7TeIRniC86G8khlYoJAyCOncZtBsV3CPti8EmyDr1ic+9guXUJbO6GrQHebMrcZb2vrT0Fo49PuEmL8hxKPTjC2iXNZK79t2PeJvu/8IVgc56E3ONrS3zZ+gLBSsy0HTJdCbNtjSgq6WEBSmMNGaLN26UqAhyA0Vnx5pABWmqblnY2bzQbG4zGsVqty5xruKsUA1zYD6xbw9T9X8vE/XYz4jqZ9mVuWOlnohNZK31yQFAmNfij4asGFfbRcLmE6nTrP8PhPnt9HN7Zf28gRzYC14NT6RTJSm+IL5Y+tOwdt7FCHtJYHj6gcjUZwcHAABwcHZQAIgxxSIChEW+LFVwdfvfZJwe8arzTWeMBCG48avl0BrkNnZ2cwnU5hNpvBdDpVxxxAxTsfozHGEgbRVqtV+bIIbSOfzG/TPl21rYVPrUyIj5AzT3oWa9NJ/RXrgI3VMyzPkK8QH1QfsdDYNVjmt6Zf8Xz4O0mS8qQLAPd4SepYl2S+jw/KS5IUL6JRvc7SH13NSaSTZSncv5/ByckAEhYgvMlpwFvlp79DeTnw9Fg+3Pz7A3Kf+hi1VCJ2HGAgFssl7Bn9nbN0Kegqpddp6sFWujOWHlNclbUGCuUAoC8gmAtp3UHXOGMDorugtw3wybZ2PHVbIVnG6DarFhTk+aTyfE3w2SkVf24wVpI/fOMH1wf8fREf0OxKj+j1erWy/JQZ3tZWvjV9UMMXsjN87a/pIDG6674ETbqEfa1D17aHFWdoznThL9qnQH/T/o+d67TMtn0mMb7vkO8zhMdal67sYktsqykfbaH1ztiuYV/fNLlLEOs8seKkZSTFq+m9kDFOayuE2sDnTOyKl205nG8D9mkBvAtAd2X0ej3o9/vw8uVLePHiBcznc7h37x588skntXLL5RKWyyX0+/3OjphrCnw+aM5CNDjwv2QQtK0HlxFaMFAyoroA64sGVkd2F31LZXBIWen3+zCZTJxgLO5cxp1EEqARHCPX6w4se30sznbk13f/a4gO4mrKR1PcTXAhPk0R5mOp3+/Der2G2WwGm80GBoMBHB4ewsnJCWRZVrZhkiSOnNLgTVi/dgl0PsYEWy34dgE4bzebDfzqV78CAID5fO4Effjc1pxX1Bkn0eHOANypnyQJXF9fl3l8MsoHXbedL7gZs9ZxhydtT8nJuMs5KAU+29plXfSDRl9zpHbZ912OIYsDjI4NDKqivF6v1zXn9NHREazX69rLVhSyLIM0TcsXHGL47ff70O/3YTAYOKdr4HOfo5WPdW2eaP8prvv3B/DP/tk7MB73bo4pLima6xMHGBT0Q9fTU8e3XTnQpj3lIYWBTymYyr8dTkh6wvJYgq/8g9dpuGn0W94VW90dW6yJvp2xUP7m9kJ+E4ClbVT9bmsHuHh4P4T+15/5A8NyHVSM/qe5+62VlZ7HiOR6Xq2wNM7s+Lvq0+0A3+nuv9+VrjGoD0rAbT2uG1IbUqJF8Uh6T5qm5cvqANVd6Bynz56T8lt4k9YqawAiSRIYDAbllR8I0+m05h/i5Zr4UREkm71L/TGm/r4yb2G/YNd2pgS3Tf+24Lbavus4kQTcR9lVANuXT5M922hjy45YC+9qMJY2nMXJ0FUQNSTAv6mTFaDZ2y7bXoT5M6l/Yt6U8IHP4I8FLvxihKEUCPK9XdIl312DzzESmveSwrgPC/q+AbYHPW5xPp/Dz3/+89LIePXqlXjx+a4h5i2pLvDHlkV+6GXsCDRA1/Uc4w5FzpeUnyohUuAsxKPknI9ZEzkdbjRzh65UJ1pWa+8mjm8Jny+4QesiGZnWAAjH32SsWILf2wSNPu0HfD6dTuHVq1dweXkJk8mkDHY1XacprV1BTB/vC/j6iIJv7mrzdpdtj/JUc1qFeJF0Ua0eof6VZGBXumVX4BurnA967LIFrzZncd5Lxzj7+svnvAzR9ZUP4bSk+57HjDmeRtdlC1gChDG8+fjigC8grNdrGI/HcO/ePTg9PYWrq6tS/1mv15AkCYxGI1iv17BYLMoyh4eH8PDhQ5hOp84VEr76SfwhviRJyuPJpbU6NJ64L6GpkyTLEuj1cJzT4EKV1gTyHMsWwcPq/92C3fNNA5xAvqV8GmP4jJeV0igNiW4ufKT0Iq0YezToih/fzljXB+DawlVQVB7WvmBnOK+tXHtoi7tJeSzDv2/+qXjltHYVkPuvbYPvRoeV5r+UFvJhcX3Btx7HBhG5vyPGByj57xDoyRCcH3whCddJSzCX06c6lw8wT5LU7ypEnVryrzexLTW9z+c30HDwNpHscFoPDfbZ7/mmQRu7jJbv2taO9cvcNRvfB1bbQap/jK8xhgcJj8Uu78Jv2yYuFZNfarsuxvW2fWZ7tzM2BG+DPfsBTZ0ZseW3CaEJuu3A1F0Bn5MFHTP0bq9dtNM2Am7bAKrA0gDiZDKBP//zPy/zpWnqvCHZ1Pke6+BqojDvOhBFZT72O955ic/RUYg7uLYFVuNGCnxSh7mln+gbV9QADMml0LjBAAt925iCT5mR6un7r5WJdeTjbiCLwRoD21QKt8mjloZjDGlfXFzAp59+CldXVzCdTmG5XDpyW+Nbkwt8TGz7nt27DDEOEATJOcTvqN7luof9m2VZOQ+7BIsDCIHv1LgNsAYnQ+tErBNQKu8Lzob48+Ftw1dXwNdHq91ncZJSnBb6tEwXEKKNz3u9HqxWK1gul3B4eAjf+ta3YLlcwsXFRakv4rp479698hoClBcPHjyAb33rW/D69Wu4vLw08yeN3cViUR6vuFqtanf5Ir8AIJ62oMkuGnAOAQbD0jQhu2IpD9YaOlgdHBUtFx/+5zR2P0Vs/O4OfPqf9FsLnibs20JTC7JuhPQNJMkG3Dtiq9+bTX5zLH71ke6N5TtjeZ3rwUPOaz2fHlzUy2htEhZRIZx2GefWYftByjbBXem37393kIt9uWugsoHLMWqjUqCBx6KcrKvRb4Bq52rIxrXY0nyeSfaGpkNL83M0GkGWZbBer2G1WkXp1HzeW8vxfPib75hFHUezqZrqY031ZrqmcxukLU9v4c2HGD/PN8m3HhtX2NYc2+Xc7YJWUz84B/qyjrUvQj7vLuRiVDC2TYN2GTx5G5DVoe0bDBR8ChQ+9+XxOVFixoMPB6cXwz/PE1IONT6szvLbgiZBUi6o6LGWXbxd0laA7UP7xvKABgq93wvb2aeE0zYLLTI0r+XN0yZvb0n4fQZKk+AtL4O08B7B+XwOg8EAnj59Cuv1Gi4uLpyyNHjZFCxygM8tfBaiy3FIbcSPnw052TUcCFxeS3cTU1yhoIPVOU5hm+u2Nk+sCpZFr5D6zCf/LTQ0pTA0hrizgQfver0eXF1dwS9/+UtYLBawXC5LRzreFYzGtrWv6dwKHfEVo9i21S27wNMV+PQQSV5oQI9W881HjrsJr5KziNJrG3TnAVZJfkq8WF7A2LU9ECPTbsshEatfa/Rvg3fKj7TbV6NtXXu18hINCZ/Ej7X+PpvIt45g8FXKk6YpjMdjyLIMxuMx5HkOs9mshqepfs1lz2azEe/wQ72W2ghuoKr+EhDHbbm+oaBXfbvPzFWEPC/y47eeLxS493JrZ2gPIDSM8XmeY9/R3+4O0iqwSn+D59vEofO76DukwT/V8cP1PO4RxZvNWjiaOP4DUF+raZvV6yr5NYRaG9P8efz32tJncj77vbj+tLi1QqcZbsumNO08NMON82bXUMkq10en56+vh3y95Os1xSmtkbRMyKbF37guSHqottYAVFdEIfAX3il+Depz3F3HeRsAFC8v9no956WlkI4t/eflJKD4m9gAFv2G+qko+AIb32TYl7YI+Q63obdTuKsva2+r/yx9oMnGrn1psfYhpRlaF2hZCx2rbyPWJ2bFT+lIdZNeFg35nTRcGgSDsU2M2y7AqiTs0glD6d4GbQtYnHwIkqMV05PE3WFD8Utt4HPq0ecSrzRv12NNcvqF6PicPm0cf/uyQFuB8ouKJb1vyte/PiEUat83FXDB6vf7znhP07S8C4xCaIzyNud9QwMtMQ5ALCP9pvhoHbihokGoj7VFFI0apLNYLKDf78OjR49gNpt5d35Y683HNR/fmmzTwGpEaf3DDSC+uIdkmlZHzI9HD1rGQAi/NL+1OR9aU7qWATEyu4nDuivcsWuL5Bih/PR6Pbi+vi7v3kRAeZMkSbnjkRrVEi4EdFbSt7rpvORj2lIHq4JtTb9NiJVvPuDB2F1DyAjrgifNkRYyZPZRT/AZqpostuqhMXp9SE/1OWgsfdpl21vmvnWcWWVOF/Mztu2oXLTqI3xNlHajAlTB2NVqBePxGJbLZZAP33PN0YI7YzEflfl4rx+fz5o+hzSos47rk7qDg7eNt0qdwx6Knk4hz+t1LPotL58DCaQW48ANWmCZCg+W542XE1wm7mo8VXSkHbE0D/7flGnguSuWB2erXbH1utK2o7/xP0+Xfqs1DgY4czWfD491+Q7j1TLobdMFXS1P16pSU3yx/Wyn376COC81XavIY9f1pPlA8VrSpecA1YtI+CKP5JuQ52JxFPBoNHJw8Ty4fkn80Hr5/CCuzKvuisX6UNw+ejS/BbS8El++fBIuqbymx7zpvruuoWl7xdgBPH+M/RTr25B4k8padOS7AL55a5lroXbtyodggab+lTZjOGZt8fkoQ3S0NN+6xNeIJi8UIK6YebSzY4pjG/MuTcxvCvicTfR304njezsN6e6jA/abBFmWlUeVNekLq/PxTQa+OwCF/XA4LIOylsAaOgq0+1OXy2VpyLSZN3zhxOBN00Wyazg8PITvfOc75a7Zzz//HF68eFEGvanhYHVmS7IopMzGGFY+B70FB3fK+owmXl4zEiV8ODY12dxEacdyPqerBDFOec7fNuE21qVYBVoK1AK4R0pyZzgvz+cF7rKV7kHGOYfPtmms49vvq9VqL9/E1QwPq0GMv6U2jDXOLbDN8Rwy0KkRg8Gfhw8fwmAwgJcvX8JqtXJ2N+wD+OZLCLBPLYYv4g3xQvNbjf62TkELvliwGNM0na/1Ur4QSPzzeYfjE/WqbckclGdpmsL19TV88cUXMJlMIEmSUgcHKF6qevnyJazXa7i6uirvhz09PYVerwfT6RSSJClPQ2gDkiNFcuZSeSU5sUPAyw2HPfjN37wPDx4MoNfDgGwVVOhK/CHJInB3e/fGNqPrBjtDOPTn1Q7IPK/yFWl5+dwNTG4gz6v5V+xGTW/GQF7irQKmCfnGIGlCPjn5lupZ8VLUgeJ2d70WxxPjf3lHLK41+F0/npjeI6vvnK3ahvNZtWf1WwtWxshOPRAbI4JdfsM8hejR8cNy1Z7J36H10PvYox/7cYfxep/6C0dBPK6mS27Irye1Jd31ib4GH2hBSw0/TaN3ofNd6xotLDccDuHBgwfQ7/dLf8B6vYbr62tYLpfOi/FNQWon9L1QnlCm8GP8u9K9NFza0c60/aUXvaztrPke3oIObdoI5w69Zor74vBaiduAtz56G+xivmi2aRc0m/ryrYHYGB5jx5zWJjE+Gc0navHNSXScYOxdC3bFOvi6Dh7tGrqavKHy3BEhlfVNKKuDKQYsjnuLcqe9EWHlgeOLwaW15a7AF0SXQBpvdIesj06orvs0r3wQGnPWMcnL0LZFZRjvAKNlfc4vNE5QkU7TtLbDjeLx4fKBVgdKmz+TeJCgaVCJwmAwgMPDw/L/2dmZOj/byCbeZyG+ucHD81h5sPaRz+kpyW0pH08POaWt0MZBLvEYUujarBU0vWlwISa/pARa2qgpj9K41OjRfFRWaUEIjReNTowuoj3HwAg6OzQcsbTaOESkPtXmo3Wt1AJQXQDy4Lv7XZr/ljHny6M5ohD3ZrOB0WgEBwcH8OrVK68Tb9vGrbauWdYUn/yz8M1p0DYKOVNjoIncsZaLAb7uSDta6G+q30jrtMRzyBHQVIf1yWMrfRz7WKfFYgFnZ2ewWCycuQFQOFsvLy9hs9nAfD4vnb2TyQRev35dBmGlXaht12WpLJ8TUp2ltUtq38rxmMIHHxzC8XEGaRri01KP3Jjv9iHPbycgTDgAKI81rQJaxe/c+U0/AHQ3qoun+k+/dbr1MkXAHOlUz8Kfqkyu7IClRxVXAVmuD5cc5e6nosXr1sTmsKUZMJlxaM+a0bWU7cJPpB+hzNP1/zn57+83v+z28ek+j23TLnxqSfkSi1+/wzRpPeX3ncbY61agOHFN881DShOf93o9GI/HMBwOy+AV3rOOzyUbJ1QvpMPzYZpki+DLHhYI6Q7WMphO+1bCI9krtCzH71u3u7Kj3kIBWr/Sl1LR/+fLvy3YNb1tgcW/ZylvzcNlRltfCMXhk8ex/qLYtuD1aTs+rPIj1h/C5ZmVX1o/ac7RE2Ul2cnxIOxsZ2wshBq2S0fUW5ChiZPbV7ZraDIGmioKPmeQdJzzbYK1XTTnElV4sd74xvDR0VF5LNpyuawdgfmmQagdu5JBm82mfLuUGgj06GGNLuZ59uwZDIfD8jneGfnVV1+VOPr9fhm0DclXBO6gpwYF/89xhHa7h2hzwLtY6Ju4vV4PRqNRySPeEYMLbL/f9/IpAd35qzn9+f+QY5MbkZoBFAJJhrVxvOMOH58yiru1sW0l53dT5eZNXsu5wR5y6McohNTw57i1sdsUqGMcd6IOh0NYLBYwn88dXiiEHCcA1drKg7ya8c/xUgcRBmU1mUlfetnWm8OWNYMHY+ncswZsdg0WY7HpPPaV892XeRsgzTXJkecDTW7G0N0V3Ga741yO0SO63qnqc14mSRItR+hpAppzmdLs9Xowm81gNpvV9MEkSWC1WsHLly8BoBpLWZbBbDaD+Xxe6jLakcAc6FjmskkClNnL5VLVIeh6pAe13Pz8f5oWn6rt8Zn73QTymwBMtc74cd7WlMjz9rQpjqqJse5VALQYBxhklHaCVsf3FmMMYL0uxljx0i5AkqRQ7EJNb3DTnbGYBiQtIfT5mKsHyOT7YqUdsvUdsXm+KXef052x6/UG1uuNc48sDcoW/3lgqPrkedWutH3pkK/bEPU6SsuCm5ab8/mWGBz7Gi4fbp22FhiSvw1UWX65nWLVJT2ApadxelJfx/BT4QiPCQufYbqJ8416cSjwiGsIDzQ2cWQD1E8Ik+tRP/pco4M6Aj21Ddcl6sPQfCo+fn0BRwkXXgPDy+xKl/IFfXzAbad9sj++yUD7cDgcOn7Z2WxWPkPgdyXv44lR+wpNYwQh4H3AbUgObf03IR1bordvEHrRw5c3hkbIP8xxS/ZoTHkJasHYfemQbQRBuq5bV5H/WLBE2X0LsCZsLI7TJjw2dThLuKx4thEIkIRnrHDYxliRnIOxEGpL7oinTnMfviZwG07Hrmla8VnmsgTUGYjzFncQAUB5hxe954uX1eZ7KJDjc+T58sc6nylge6LhiLBer8ujndFpL9GWcFloSr+1PFYaXchGyenJ+ZWCOlq/+hzOmlLnCyj46s/rGDPvKF2t7bqENmsLz49ltqkvSG0S0zc+wKBIv9+H0WgER0dHcHl5WR4hptHy/ed48zwPHjcs6S/84zOoLG1kyRPDH/9tcdRYZc629NC2xmAItwRSAMeXd5s8+kDSuWLnFeU9VE8LP4gnJs++ONuksc+dsCG9hJbV8HYFfB3y6c2cJwD3xRPLPEe9Bx3i/Dm+nIb58IW79Xpt0ok0HS00rmg5qS6SvPPpFL7nSVJ9YgHR8bJ5fnuB1W4gBzAcTdy0nvLQdOel9KkCLTnkeQL1HbLSt48uT+D4tM/G+V/wjcHVzU0g2d0hqx1DzGkW6fibBtX87VjXiep1DItlPQMvG/pvAb1MV/4iP06Jfkw9trHMuX0qPav3s4+PEI/bqAPXO6y6xmAwKPX1PM+d9Yfi5uuHtM7w3UW+tUF6ztcNajvQdQnXQ/rSUAg3rQun5ctvwRUqb4GQ3eCzRWLb2afPvIUCtqVv0vlDx570UjHVAUO+/ZDN6RsvXY2BXft6Y8HqL7OU5/ae1r6xsYOm/NCyIXkQAqv/wlK2CQ4rnZC9FWM/avKyie/ftDO2qfNuX8Fanzet3k0g5PzAAB0X9vy3zwHAYdcLfdt+ttwdlWUZpGkKi8ViJ2/ud4kb8adpCqPRCNI0Le+lsgC2L90NEKJpxdkVdN2GXeALtVO/33d2idJgbL/fh3v37tXuJ0Ggb5FKQB2fOF5xd1KT3a5tgTv6kqTYkfLq1Ss4OzuDL7/8Ek5OTuDx48ew2WzEu2AsDutYoLik41s1Z61PwZPyaspZyPkuGcR8Dkr9yZV+XlfEwef0NoIjmoOY86SVpYbMrtd0Ol8sjvcmvFnKcAd+kyON1us1ZFkGT548gQcPHsB7770HP/vZz2AymZQ0kBf+5rx2d2yeF8HXLMvgwYMHkOc5zOdzmEwmcHV1Ve7kp/ml+mdZVo5ZDA7jMwxGUKcMPvMZEFpAtsvgp289lO5r5nMN09qO6TbB5xiw4KTzRNIt+Xzigapd6Y++ORs7TrRgrEUuhIzopn351uEmA11XY9sIr3bIsqwcq9QmkBw0y+USPv74Y/gH/+AfwKtXr+Di4gK+/PJLmEwm5e4HemIFlu/1erWTAprKCe5k53VCuYs8WBzR2jONV9wVWzwDAIg/WaTquyo4SX9DGTwsfsMeH2Xs8i3mAKjde4tpdM2o0jC/GxiUjyGmO+QqG2ENAFWApZDNAMB248ntmpTper/mwrf2cXfDFgHYdXlvo/tN74wtds6u11XQFutbfNN2gLJtoAz4AvkOBZKEGioixZK3nscvn3hfy7j8Omudbu6k+fHI7eF+a/gkXt00qbz7TP6vpVn5d9P4mNVx0DFF8fn6OTwG6lCsM8Vv33UjWtl/9I/+Ebz77ruwWq3g8vIS/viP/xiWyyWMRqMyH74k7XuRp40PUAvw+uCrr76Cy8tLWK/XZTBZKrsrG9Gqm0n2eAwN+i0B+oF8fYIgre/fdD95l8DbF33H+Gw6nao+ZHpy3Gq1gsPDQ0ffRB3tLewWJJ/eYDBwfBP8JREJJJ9A1/Cm2H1aG8XEXyTfinYdVlswBWPfNEFrrU9sviaDuEvHngSWwJfPcNYcPb4FXgpAxAZkfdCVE5TzEeoL7iTgios2QXlAxHLXxj4Bd8TgDkR+X6impP3/7L1ZkyQ5chjskXdWdVXPdM+9O6vhco9P+5ESKSMl0UwmmfT4PekP6N/pnS8yvfBFRqNoRooiKZHctZk9Z3d6Zna6p7vOrLzje4jygMPhDjgiIrOyesrN0jICh8MBOBwO9wDA83dR5/suk6R2srYLbVPqNMVdogDuaMfJZAJvvvkm3NzcwHw+9/hPcxRayk/Vxxqn4dacDjzdzc1NXZ/xeBwc2aotttpAymjIw2J9LTkL+XMb+i2LJkk2I19R/pLqzcd8jvPAsujT6mENp7R34bSS6NIcelw+WvimKWg8mMtDWjtRgz7KFlz40buqm9CLpy0Mh8Pa6Ml3c1lopnhpHbjzLteJ0nbOiulQg8EA1ut1faxZzOmh0d01H+XORUgb/Y/xvWUc0vLX6zUsFot7oSsBNJNvUvrY/CdBrn4tyfz7AjEeSukiUr3vgrdSay8At6YYj8fw5MmT2shGP26R7nnGelqMq5Z+t6Rp4oDlaXibhH0lOSBzHbIVDvyX4r7ZUIJzzpLQkjsgaRg6aKt7Yv1wd0xxUTu56f8WXB+Wt88lhP1asueSPeNvW4c7JyndDRv+qt2w8j2xiAfrDMzpSp192GTuPyaLtLrZ0lpEFk8Ty0Pj3DPngbzyuoAQZxmJy8JsTtNtvdqtSTmPdQ1cb67KqsbA8fExTCYTOD09hePj4/qDH5xn8OM53K3HZbkm27lua5kb+TMPQxzogNpsNrBYLMRdvBpd0nqiC8i1+6bqLMnqpmDthxg9sfAHyIeiKOqP3k5PT1V+QP7G8STZ+yh0YWNqAvedN2JtZa0b7l7GDyalo821I9U1edS1neJQIGdtEbM9NCnDmjZl803Bwd4Z+wD7gSaGYfzaLWYwReVM2iWGgMKIg7Zbb5eQUrboHZIIqIhifn4kLMWJx0nwr5zoLp77AkVR3VuAhiCk37orxbpD9psE1IkYM6BJcfh+cXFR71g+OjqCJ0+ewFtvvQVvvvkm/PznP4ef/vSntRMFwPGsVdmmzhhOuzbpWe6F0UCTTXTRd3Z2VodPp9OgbKkeTWiQgC76MK0kFzUDMMXPFYiUPLIYWTnEjJwAvtOKLq5pXrqDJ1UWp5GO+S6doinHr2bo7QpiixxaNvIsve+YO7+s9OUs4lPKfE5f4Becq9WqNnIMh8P6K/jY3Z4SX/d6PTg6OoLxeAyj0aieU6STFzQFl8sxzueUh9HZ24QXuaOD3ttD+1dyTPNF72azgaOjI3jjjTfqo57xpAPrGDtkaLtYpHx7dnYGvV6vPor+0PUGi9OZ8+gh93UT+dQWrItnSe42oVFb1O/KuJErfx49egTvv/9+LeeePXvmxY9GoxovHsVo0b1iBgQrbRb8vL4p4zKnqSy3gSPWz0ZfqCMv5txz6d1uWFq2K2NXw5OWEUkFnHY9HzpSeXxVR4AwXGoX3zHHd8ZuYbut2mu7re6ExTmrcsL4H3lW62QsF8tyfVLRVQjxjg5HM3fkckcsd8qWNX24BscfGkCru2OrO2TpztjKIbsl+kJ1V+x26xy06JSl/C3rW5TmPOeqNS0PCx00Ok0xMZcSgRZasJ1onPwfpkuXGTqiXDxHEq8M7ye/rPjduzEa5bbPx8NigjRtp2eUzbibDmXzcrmE+XwO/+Jf/Av44Q9/CADVWuC9996rT0tDu9ByuaxPy6lo0uc5bcwgvph9Qpuzke5er1ffp462RmlnoKQzaOv1XUDMHrZP3dDSDlrYA+weFosFjMdj+KM/+qP6BDxuz/ubv/kb+MUvfgEAu9Fp28AD34TQ6/Xg0aNH9UYayX5Kj6HOtVU8gIOUXcYKmqzW1vvWPntwxnYIlkbP+YIpx7ueo7DsCixOBAr0653UFwy5g4YrgDlfRlhpoQZZbkDVlEz69Qs1DHN8+xammqOGG5e5IKJ9l9odZTFMftMh5TCTjGcYNp/PYbPZ1I5yjBsMBrWhH411mD9WnlVWcWdkqg4xyJF5PP18PoeXL1+aHDltIEfGAcTbtQvDsXWxqyniEk9phlOap+s2pbTsu78s5eUYthFnU6cnp8kyR9I42j9056qF9yTnC52bFosFzOdzmM1mnmM5BkXhPsxCwwjKpOl0Cv1+H25ubuoy0bAjtQMPQ6MqL4/+MA9+iUpPEZDqTemIKd5Se0p5tDEk7T5IjYVc+WOBrpxtXG7E8Er1k5w0aDjXHEep8aU5hLoCqa+tej1vJwv+JpBbRs5apslcaNHzc3R2LYzzTM68xedOHsfHqxVQB5PyazSuViu4vr6G+XzuHWtMZTzFzcEy/2lrsZhhWmqjVHvExi7P2+sV8NZbY3j8eASDAcrK0HEaL8/mTKXprHnaQFdlNMWD+bDJKxzOMe36wjlyMR8A5X96DULlqK12yG69D/sqFqU7ZB1Ud8pSpzmWTZ3qwJ5L8gNwO2Kd8xRujyfmTlh0ttJdsXh/LL0zNjySuLzF6drC51lNfoWOs7BeIVjT7moJTfFqz7lhJLYpWTI2BR2nm6dDfk7hsZRlyS+3435tIOH48/Uu1E25fMZdsXjcPl4jQnU16Q5LO12+zp6aU1Jra3xHOWQ9wSelK+TqECnbyl3CIdHyTQe00QGAN2dRO+xgMIDpdAqPHz+GwWBQf4gHAPDjH/+4fi6KwtswBFDpkU1sNym7USzdfQFtfdkUhwbj8RgGgwGMx+Pg43VqS08dhyvJliZ0H0KfNVl/xnB1aUfcFQ5exwdn7D2CXRjhKG4NdvU1DRoOYrtpdlGmNomgsdYKVGmM5aMGC+lceIrjLu7jRNCEOyoDuDuF7jSiO1VifcidOocwARwqxBYekiMfwy8uLqDX68E777wT4On3+zAajeqjemLlSHExIynv267GsgUPbY+zs7PaQbRrXpN4Xvoowcr31Bgag5w24WWmxildvOIzjnW6OLa0p9X424W8k9ptV3OWFbD89XodGCy6wg+gOyOwTbBcfp8xV1glYwxfCOBC8erqCnq9HozHY7i5ufH4SnM6UtpQFh0fH8NwOITpdArr9Rp++9vfQlEUMBqNoCgKePz4Mdzc3NTyiuKnu1vR+MPnY6w3/fK83+/D8fFx/eGKBtQYo/Ub/0hJ24lmnRe5g4UuovfFy13dSUN5ou3CFvUPSU9MOWLvGnKMebs0AOSkOyTIrRudwzQ9v4t2oLI0F/j9UJKuxWm8vr6G3/72t/Dq1Su4urqqPyThTtSmc6qmf8RkOnck54CGl9PU6xXw//6/b8Jbb01gPO7d5gMA49HEZdRRqd0PS5/bgh2X1P6UfqkuOfEhTX79q64sbh2jUNONzip0ThZFWe8OLYrqCGK3M3ZLyvRPpKiuNCih18Py3b2yQO6LpWXLtOO/5JR1v+3W7XZFJ6z07++IdccWu52xbkdwWWJ9Qn3ZtVX4TvuD10UbQjlpw7xcpki4tbnJL1MpQQ2XaHTtIv+nyomlp2H6fKtgN4drdwDT8WHHz9PIeWkg739Jf/Dppbgl/Jr8pc5YnnYymcDjx4+9E94QNpsNzOdzUQ/WdGmuH3IbmLbuTNku+HyG64XUOoyvVdo6BWL4U3Fd6vxa+78udrhd2sb3Bb1ez3Oszudz7wQqCtPpFH74wx/CaDTy8vyv//W/vHSj0QgGg8rNs1qtYD6f13HW8ZQD970PELp0NHPbyuPHj4NT/Dis12vxQ3dtDL8u7Z4L1j7JtVnG7Gq5YJ0HHpyx9wxoxzYZgDnMlHKwpIR5yhBFFS36PBgMamNHDr2ak1MKsyglUn76pS8aCQeDQW1E5pekD4fDejIsigLeeecd6Pf78Itf/EI9MuVQQKr/1dWVd0fI0dERrNdrWC6Xwd18AHJfP0CcN2NhsaPnsE9ubm5gu93Cr3/969rpsVgsaqcQOok0h6tmKONORimvVg9uMKThlnEbC6f0LZfLelx2zXOSY0F750bSmJGTt4fmaLMqiLzuFmMvQHjMeMoZpTlGpLJic4Glf2LORxqu4dqHXNXKSNFuNWxb6yCNzVhenp4eDSbpANvtFmazGTx//rxeMAKAaETh5VAHKd4Vi4D3p97c3NRf/GpOAl4ffjIFH1/OyFrlG41G9W7c5XLpfXSQGuMxoGNeyo/huFt5sVhAURQwmUyC8WelYxe83XShnhrr0rvkSKP4aHxsrPBx1rWukRpXTeebrhZ4FKRxS+nNpTHWr1I5GuTwsKVMTCfxSBOwymBaBueD1FzH88agKKrdDRcXF/DTn/4UZrMZLBYL76NIAP9DjhwncU5/aHOCZU1q1WWkcnu96hfn2RJSTs+ylB2X/LmiL4qqJcjHIsfo6qpcuD3CGEDHjfGUR4sC3/l9sOiw9I8r3m5TfIA7ZQEAeuB2xgKAtzNWqgP/p3fTOrtBtft1S3bDcies0wt8R6zbESvtjHX//hiWxzSVC2E9tOEvpU2nwzA+z8bz0HcLPZb0fpyUSKJRP8qY5vPj9HaU8uZA1c/xeP6s063hK4N4vQ9CXqJtkEM7Qkxez+fzehce6u2z2QyePXtWy/3nz5/D+fl5YMuy6BfSeOG6ipQmVx/n9KT06rZ2g5gOq4GkOzXJQ+Niul5KR+LtxddgbXSsXcDrYFcsy7K+8gYA4OTkBJ4+fQoA1Xrxn/2zfwaPHz+G3/md34HT09N6DQsA8POf/xw++eQT+M1vfgMAbvcl4gSA6MfHbSBnrN83sKxpLHmk8YTPi8VCtMfGcHO4r+0rgdV+FeM73vYxmyq32eTYypqChOfBGbtnsBqVu4LYoppDzBmk4UkZXiTnC+Klg4AaFvDeNLrDTduynzLScsUqp+48jhtLkT50TuLOQ6qYDgYDePToEQBUE+oPf/hDODo6gs8//xyWy2Ur40UbsPSbdGTy1dVVTc90OoWnT5/Wu5fQyC7t/uW4LTS9DgqWFSQDvrRowOOBpPua8avP2WwGs9kMXr16BScnJ/DOO+/UzliKRzPa0b7H9BwkoyS+038tnMsEiq/JYqgoiuC4Un7MkiaHpHrxuNTET/PRnXgYzmmJKRwxxUErn0Oq7SQFRLtTQVqIxfDFjNMpZ5fFOG1JJ9EHAKJMs+LSlGxprGo83FTGxeQmx8fT4QccFj7Bxdtms6k/MuKw2Wzg+voarq6u6vJQJmFbSLuzMB11xlInKDpjr6+vYTqd1s5YlHlSHXj7YxmUbnrkD/I4fjGMjg3Mw41Bmhyj7UWfNTnH5RvKiPl8Dr1eDyaTCSwWi9qxLckrzsMcb5fQhR4qyZgmdGqGNKt83jdIczl/1uYlnp6mldLE8Gh5NeD9k7NI7Rro+iAWj8+aHmItCyBvbaDNlxJohgELoKx89eoVvHjxosbB75emhrYm4wzpivEaXc9JbU5x0bypdRvXlSQZ7PjcXqeyDB2b5a3zoqJ9107XNlCC7lwO47S6opMzXld6NDGmc/kwvuoLtzsWjyQG6EGvh8cTVw7RzQbz0rFV3jptSyiKHhQFd4JTAiViS/Zces943DA6Wp3jFed+3ymLaeh6iJ64QZ/5z7V7qfwzyr13OU2TtGFeq4xO4Y3djxrmRT6RaTKSlCinCZ6QRvfs3kv2HsfD6UuFtaFbqnuct/x68XCeVpPh+KHgZDKBk5MTGAwGMJlM4Pr6Gj799NP6w+d/+qd/qu+HtZzIEFt30fypDxNT4Rgn6YiWMaLp+Sk7QE76ttBGH4vlldYwufU5JH18H9BVfbkz9t133wWAyo78H//jf4S33noLAMJdtJ988gn86Z/+af0+mUzq9TPaxHKuKuLwTe9PTU42wUvH02azgdlsFjjKLePzdYOYXVRa2+XY0mL2OG2tbsHB9T4rSHV9cMZ+w2CfBhWEmCBraqC7C9AGId1JtN1uPUeZpKAOh0P4wz/8w9oZe3l5Cc+ePavLwK/fESTH2y4g17i5Wq3g1atXsF6vPSeYZFzkxx9Kx2Y+gAPJwYNA24yOH35/MQB4R9pxHJxXefkcJPwUNGeVhJdORjFjXRcLDs1gzQ19sfIsBsjtdguj0QhOTk7qvrm+vg7usNUWiRwfdepq9OUsLCXjteRA0mjKgZjMb7pA7oqGfcgazZGGdNG4Nm2d63SI8TfeAfXGG2/AZDKBV69eeccaUdDuNucLd2lsbTab+sik1WpVG0dvbm5qWbVer2E2m3nHcWr11RwIUniv14PhcAjj8RjG4zGcnZ3VOPjdum0MD1Re0LFG60EXytguMfoPWU+SHK6xOSyGg4I1PxoxcF7bx3UP3CHI4wB8+vmpFhZHo5WOJiDxmNR2FnrumjfxCo0YLU0clFJYrs7K+1yaD6x9Xh31Gt7lh2uJNkajWPvQD3p4HbiMp3MDd6hajB1h24DnuNOAOhtK4ogkKdi7C8N8+2djiSYhVeloo8+mEiLpab2xzcpbx2jVbwDVfbF4N2x563gFqHa0Vs+bTQG9Hp4W1QMAXBOXUJZ96Per56Lo3fJIUfNUr1cAgHxXJKP2lraS4HY/PF64OipZ/udp0OnjnLL0SGLZEcsNcOG/o9d/p3XQ+4KmlcO19Ok02H6ptDllWvKl4qR0WntY6InVU8NV5S2DNH79rLK1VNrF8YqOyqch3hel92yfk+R1cVFUH/rwNflisYCbmxuYz+fw1Vdf1eMNT2jA/LhBock81JU9qO16SrNZWGEfNs0c52junEvj6Ae2qTssHyAfJH7jcHx8XJ9ASD98oH0hHWmLUJbV7kvefw82Vxk0h2BuPguUZXV1IXfGxk5A/KaDJl+7krtN5L0EuTaIB2fsDqFrQ/O+B6dlEo+BZKDbJUgKoOSQyQVuXKaTGjXOYFp+XCNdrKGQ/eijj+o0z58/h7OzszodTpwIuYM6p460brnloBOWKtFa+TQN3Q0VGyM5Cud9BW6c5+EaxI6Cpn0xn8/h5uYGxuOxd08Bd8RRkMaRtMCKGZa1dBSXtBiUyo05kCTaJbA4XLuAfr8PR0dHNd2r1SpwxiIN1LgptaVlbFCIOfm4LJbaXFoYpJwMnPeaGKjxfRf9kjuuYqDVVau7xnMaTZqhXoKu2wtx9ft9ePToETx+/Biur69VZyydC3Palxpx8Gh7dMjSRQnebZ3C3cTB0u/3a4esNBfx8ixOQqsDiH+UhEbg2ILv0OdBbR7ghpscnZHnj+XF9rFeaxGbCzSHUA5IcyWVlzlzkYX3moA092s0SnRYeLJNG+bkQd2V9r+WN7e9uaGa92lOvSx8l6IXTxSg6w90JmF8E10nlofzRZu5v5kMy9tNHEIJmsOzLKmj0pquBSW3TdStKHd0V3Ta6hGm9fMhra6/q/tkq12y1Ejpjiru9fy70/22xfKqY4z7feQneq898oifv2TOJtQjKhrQoeqOJ3bvvuPVHUPsO2PdL+2ExfKRJr+t/Pr6QyLmgAt6SshPYoXwcNzG81hpaTLd8HaQ4vz/nLbxHZEuTNOfXNqKbzVa5XcpnPernr8M0uh42kCpPGtpKtDW+vQkmrIsa0cQOoMQhsMh9Pv9ev5xH1i4D3Iscwtf+8TkvSUuR0eS1r8antg6Toq3lq3RY8nP9c2UzcRi80GcVJ/AdVoMDnWNcqhA21ezx0wmEzg+PvbuZEZ9l/YNB7ouoqc1dq2n7dKedghgbS+r7EH9A5/X67Xp1M9vAlh5SZNjXa7JYmVb8HKbUmyuALhHztjcRm6Kd1flHDq0qXPbNkOj7Gg08pQhfnRxTHBpdJWlfGRiV1CWpUc/BzQwoxHlxz/+MRwfH8Mf//Efw/HxMQBUDrPT09O6XtfX1zujl9OOUBSF1/54VKWWL3X/gCYoJWcDFVq7utfg0CGlxGMYXeRIO1hoGv7lHD0ChSp0NG+uwdwK3GDPjyvFY5Galpe7+KKKKuXBJk6umGwaj8dQltVxpPQ4VE6PNGlLEzqC5hCM1Znm1RbhUj5NhobGqerdKm+bKEJNILdPYwvxNvMc5TWKP7fu1Plg2VVOaZbu9cbw7XYLNzc38PXXX8PV1RVst1uYTqc170q8SMuihk0shxpZkF4cJ9geeKw9jo3YSRBSW6WUcnqHNB6xjDRRmWg1BuUAx0fbw8JP2G4oK6V8h7oYThmFME0qv6UvkPe4IZB/GCeN7bZ9zvsC6dCM+RbHG5eld9HH2txDIWWc3Afwfm2q71vob6ojIG0I3Fgda2esE/4kyDm6XDKAc+M719di9aU6pbVtJF7n5TlaaJzkyNSdjxX+MA+tI42X0lpxNk2P1ac08PfwuGF3tHC6PJ5X0zkpMtwVS51mJWy3AL3eFsqycqhif1S/EjYbqhNsoSwd33Ij8naLVwOgM9bNkRUKnx6koaIpdJpKjla8C7Z652lCh271jvipTuA7gkvPgegcfUgrHwKxMRFGcXyxtDL+XPHkp485DvNoc7zj42hKX6pc2gc6bXL99HCpPHe0sfuVSn3ds0Y//8k8FMbJdec0SR/6FfVJOOhk4zoxrmvPzs6C07WGw6H3AVRszrXqubF3gMN0TnAnKEA7Xa0r/YnqKVxHw7tE+SYSrp/w9sbr2BBw3XaI/XJfgK5X8ANkhPF4DG+//TYMh8M6bLFYwD/+4z/CbDaD+Xxe9xmerEjT8VOlHsAGXfI0bXuUlWdnZ57+/7DbvAKJT+W5S4d9yqKux9W9ccbuqpE142LXZWiG730Lyq4MJjnKk+R84O/UYIqAxkeKL+XIsNKbMn7E6Oa4UJhyY0S14Nx6i9CXL1/Czc0NAEB9h+dgMIDhcFgLnrbHEucYOinwr7Qkx6iu3Du8Kdp4n1ryfZMg1racvyQ5IhnSqPOD54sZvWm8RE+MXi09/lMDI369l2vIs5YfN4akjw3mOGgf0EUpjhu8D3M4HNaO5pjhOtbOEqScMVodcseZRlfbBWeOzLYYwGP11Qy/Voe0RlcT8I3AsoNGq2sqrWRg1WSERs92u62dr6PRCEajESwWiwCHNDfG5gXeB3QBgotGXi/eDk10F942ZVntVl8ul/VHIDH9xMpXKRq47mIZ7zmywELzvkHjmRx5TecMaaxKYan26IKnNAdaahxIdOTo0rtcL7RxMnI5ZM2TomeXIOG3tkHKgQoQryNd21h1YKucSukZsWcJZypMo0mbl2L5qS46GBQwGvl3i+ZCWYZOzqocP47kgJhjN1UGxyPHmTGrtDTHGzpxfVzYSCHtVb8A4P2xGAZQ3h5fDOR/CwC9W3wlAPjHjzqeB+j1sK0KFuc7Y8vaEYU/AOqU1Ryt1BlL/6t8mKasy3C4y5r+suSOMP0Y2pC1Y3O8nC5HDNvkbfzdGhfJ1Sg/pg3/S+89loeml9JZ6eB9Qfs8D5rO0WEbhryWrqdWb14fnMPo6TCoH5dlWduk+I5IXPPyo1ItNrV9QY6+JMkbSSdLram1tVFTsNghpDjJliHZjCy4uS57lx8Hvm7A1+Y4V9HxRT/0R0ft8+fP4fLyEi4uLuo8V1dXHm56dR7CQ5/lQ06babo1T0N3KQOEHzkAHM4a/j5BbB11H3j/3jhjc8Bq7L0v5QDIu43uA4PlgPWYuRhIStg++okK2bIsawcrAt6PBwDe7iDLV/z8K7W2X9KgEoAGoc1mA9vtFmazGQwGg/r4xl6vVx9FjOXzSR6VhRyaaH5+dPF9hiZ8pi0aUo50i0JNF1k8LnU/IU2bazSk0GSXZNcgKUlNlB++MJHyzOdz+PLLL+Gdd96Bd955p77/+ebmpj5+nJ4CYNkJrhmNadvm7lSPydnYIjDX0E6dI5Z+0Ohp6iigZeTmz82XcqJaDQOpdsJjfkejEQwGg3ouwSPjLW2lpUGe3G638OTJk/rI7cViAbPZzMMfcxpZ60vT4jxDeUf6IIvjTskv+rxer+vjni4uLuo5me6QjeHkdeXON6SZfvyC5Ur0ccNJSr5gvq4NP01BokWiTZK3Vv7gJz1IbcblTQ7E5jUehnJ2MBgEcfzIS47bel8TrVPXTlhru0s6HudNi/Ehhrtt3ZAGKvsQX5cLcuu45IY1XibnM41XNV0Q8e5yzGtjgOrnmpFP+keex3HD9fyYjPjhD9+Ad9+dwunpSKUtBmXpO2Kr58rxx1KCcwRmFeGVkQrX0rYB7Ao8Ptjhr+oZK7Pqp+ro4apNXDtozjXcGVvtaq3S9XroaMXji924dB9cuiMv+V2xVTj2r6uD62/fGVWVUd4+O0cqdb5WtIa7X/07YXFOoTgcXr8cSY8L6ZLbWAoPQpRwLb2Onwf57/KOy3Q5eek12iRnohzmcJeBQ9LlkducP4dpq/7Uy+b4fFpsQPlFanPKOyRGLF96l/ohTZ9PS1EU8MYbb8DR0RG888470O/34W//9m9hNpvBarWCXq9X74ItS3eCwl3rnV1BbP6R7JGpuqccqNZ24+VY1pBU9lHbANohJd0BdYrRaAS9Xg9ms5l3Kh5Nj+tNupP6AZoBrh9Qt8TjhwEAjo6O4OnTp7BcLuGTTz6B8XgMg8EAPv/8c9hut/D8+fN6PTmfz+H8/LzGiYB2XYSux+s+fR93Dbm2Jy0tOtdT6e4b3MWaJCeNtHZNyWkrXdL80PRkJs8ZqxFy6INOMmrtA6SJLdcYqRmwuEFHYniJGSxGWGv7NDVeW9Nx/NLOvRQ9Gq4ULSmDkNUAQ/HFjOjSIpGmwaNDAACm0ymcnJzUipFk2OPl5IKmlAGA50TG3X1INzV6acfkpuiSF5DxetyHyb8JfVKbSTyZO2ZjBj/qULGEW2jW6JZoo+/ckG6Vmbl8nzJ+twE+7umXxePxGADCYwS1OmjGUEtabYzEjMc57ZLT7po8pseJauVZ5XyX/UbDpHrHwEK3VC7/t44Dml6aLy2ylNPGdQ1czKGDlMt6nj5WVz7XSXRqepCGl+KwKtbUeYP/0s5YKY8FvwUkJxZdlFvGRRP5d5dgqZd1wcXnDAkff7aCRo8kZ/FrZvoBBE+TS0NK7nTV57nGRK7bSpBa++T0sTUNxWkxdlrGTY7emrP+yuWFlEyNQayeGp9KcwiN42XnjllenvZOYTrtw8nJAPp9/Theh8d3OvL3WL6KTp63hNBpm4+LpSA4q+dUWbQeOXUqiljesLwY7WXttCpqvAB4fHToqKyWudUOWbfu9deuFV/48171g7ocgZK6bKdXALgjhWVnrO+E9R24Fd3u39UHSBzWn/67NuPPfptJ4WG99DgdpPRdqgU5uGJp8+vFM1jbUY6P9ZOUz0KvS5NDm6/vU16zgp82ndHxshTnTnEajUZwfHxcn+hEQdNLrGv1WNqubDpt8DSZY2N4uL4k6ZLSeouWnUOTZU2s6ZIod/GjmaOjoyBuuVzCYrGor1my6FrfFOiC7+iaFADqDyBWqxXM53MYjUb1mCzLEm5ubuo5Dj8ultboFLrQv6267q4hR+7k1CcW1wWvU126yfrwUGGX9WiyBubyqe2aLoe+FP4Y7tdiZ+yhMPWu6KCTtXTh9z7BYghoCqvVCoqiEO9epfj30d9cIZFo4EoU3fnA71zVdo5uNhsYDAbw5ptv1mFvvPEGbDYb+Id/+Af4+uuvg3bpuv+pw7ff78Mbb7xRl0EVgfV6DT/72c+8YyuRHqospECaiFI7aw9ljO8SchTpmKEMn6nzgeOj91RQPqa7j/iO7Fy+4w4GbshDRw86+/c1tmMQm/w1+iRjNX7E0Ov16i8bdwnYz9JdLxpQHtCgq/5IGecl3uL808QJ1URW7kJRxv6RxgL+l6W7e4neD5rCqcW1hS+++AKKooBHjx6Z2yOn3ZBGHBtYF2cwDXdC8nJynSt0lyXfiavVQZNjljJjfE3fY7j5Ao4fi07z3aX8TPGq5JiheoeGT5rrOPA4ugsrRSu935jHa7rf0dERAAC8evUKACoe1u7dlIxzWpyUJgVtx3rMyBeTMU3KSfF6G9xd4KDrLB4GoMsGfmexxjcSvVp7xMY0p5OXJZWDdEk7JjjvSjg1XuBHVXK6+VxWlmW9M4SuPej8V7Wj2zUZc4yWpXM+VrikY3j9naPlrbMsZRxD3DlhlB76n8Id0sRxlmo7aGXw+gNwmrBdKtzxcVQ5Md0cJPEnPTmjIFf0FNDr4cfWVZ/Svqbjg/a3q7/vwAJh9yrdIQsQnlSg/Vxe8MJcOfQ/XGfxtpacZHKzlpG4WD5Z3klp/bD4rthccO0RD9Piwna1linLyYoXeDxvY2mXdVCKl0Yqh5bHf1JdffqkepUCLp/nfFy8zpyu+G7cogBYr1cwm83g9PS0TkOdcwBQn5CGp+UAtD+Z7VAgR1fuyhmTAq7PW4Cu/emmDgSc77nteLvd1rtdASod9qOPPqo/IEcn/bNnz+Djjz+G1WoF6/UahsNhnacs5evMHiAOdDxpOtfFxQWcnZ0l1z2vw6mCXUMTG05szN21XfIB4tDEp6CBxQEcs0U2Lfe1cMbeJ0hNsk0Mzl3m7xJihkX+TNPGmFkadE3rq+FJ4ZcMDpqxUeqPzWYDn332GVxeXsLp6Wl9nyQuHqkjh5eL5cUM1bn1poBHqCIMBgPP0RozWGrxEmhtY6XzdQF5UW03ymmQ4zzhRjjNOJjCaamLFJe6t1ErO0Zvl05E6gyU6JOM7+v1Gm5ubrxFz9HRUX1fNKVTM+6kjNa8zFhaqQ5a/aSxKY3VlCGT18kqp6147wOkxpSUPscJ4xsV/TK19xQtGI+GcjyuTKJRG3M5PE35T5pDMEyTERq/cno5n3MjMKUhBTH5lCOvJaeNFaSxu+/xYpFR9Nky38d4WcOt4eLpJB6SxlyuAUSSlc5pEd6rFhvnuXNhrA9i+nIur3MZEKMphos7OqWxbQEpTxM8lsV2Si5bPoKicorLCEtfcDll1bWl/BrOFJ7YR0La2OLxEv+GOgK2T0hDWfpOOrndS0DnYoXfOSE1vBS3X4aeXis3mSoLpz2vHyfTklO3qv0AqMMWw6nz1unyVfrqKGMn/6o+crtfaRu7eRhq/Hr9aHnOGet4TTtyOO6MpbiwXXgYLZ8/0zxSews1icTF8snhlrCUiKDxOWVbcKb+rflTYU1prXghzG/HEdNT8sJTZYT11xzalFf18t9880349re/DR9++GFg/8ErUaxrtwqvbW5IQRP92QKaDZLa1iQdvomdIaXjWddtqTVFTIeS9A4A8O4jpWH4cfzx8TF8+9vfhsViAR9//HGNazgceqfloZ3jvq/V9wm8b+l6Aq+MWy6X3tqBHhEes4dx2NU4OgSI1Tk2HnYJFlvYA+wGrPNMzhwVk7ld9me2M3afQtdi5D0UWnLSWoSm1Xir4bmPgx7rjPe48XD+TMMk45DVWBeDHKMTTgCpLyMWiwX8+Z//OTx69Ah+7/d+r/7KbL1ew2q1guPjY3F3MDf4pL5IazI++v0+TKdTD4eGOwWpPmjKo6+j4qcZUrnizw2ikkFee5bKQCVQugOEl68dg5Iaf7wOlJ6yLOtjViy8EqtLm4VZquwYbnrvMdZnNpvB8+fP6zF7cnICR0dH8OzZs1q+UcVaclrEvngsS7fTkhtltfbWIHYfeVfzSBM5knIwWZSlQwLKR/xZg5QiyHe27wJubm6yHCa59NC2oLyIxwiXZRnchxOTVdpCldYh9qETH4+SzMoxyGA+La3VSUJ/9GOsNrririC3j2LGhVS9Uv2u0RAzfmnl4ByM/MjvB6Y8hB+y4VHG1AmZkm1WmlL5mqyfJF7XHGg5MpbSVBSFeI+yFc8u1oVam2Eb0N2jHAaDAUwmk1qHT/FW6koWiQ4MQ97CNuRjjRpfrcBln9QGWC4eXx+jk8oomo7vzqHl+WMTHXXmKgAw5yPiiKWrynPH76bKs6TpOj/N4z/zfqL1ksqh7UN3CuOuWcTnv1e4QmcVQHl7d6y0Rg6PIK5wFrd3zOI/n3uhppHSX5XNnRP+ztiKf9y77IyFIMzhA5bGlcnHl9cKjDYXJkGZiE/FSevEPBzpNFXf5+CypYutsfA/bB8XJ+XjgXwHqZy24hOdDh7m0xWrqNxuHC+vbwxieKQx4cYF52d5J/APfvAD+OM//mP47ne/C5vNBv7sz/4MXr586d33jcfYxum8X3aZlC1Pe5fm2iZlWMDCH9a+ofPxYDCAwWAA8/m8tkcMh0MvzdOnT+E//af/BNvtFv7n//yfdfh0Oq1Phlmv1zCfzw9q7XFfgLYZtfeuViv44osvgvTj8TjoZzzh6ZsC99W38QC7h6Iogo8adnGKg2Znt5QVmw9Mzlir0aLriTiFb58Tf05ZXdHFjWyagtDWMaHhyRF8mlFBMlpK5WnKjkZXjG4Jp/Su4WjC35KRHZ1MGM+Vps1mA1988QUcHR3BkydP6vDValV/kdgGUk4MTq/UH5PJpP4KbrlcevRz4RczdAKEOytyDdpN0t4XsIw1bZznGLY1PJwGiSfQgMiNqrKBIH6XY6zv2xh5rZAy5uaUy3H2ej1YrVZwfn4OR0dHMJlMgn7SJm7anjn8oI1hqW15eZqjyTI+U/hT9Gt9T++msYDFIaXRyvlnF/JFMpDTcrWxHZvbrXzSFPDjgi7ahRrbNWeHJMe0NuPpaDxXlqlBmJZnodlaZ6l/U3IYQZKr2rwc41XLGNgX8HbnbUllDU2L457qTjQPB4l3UnoI0qfhTrVjWZYwm83qtDHZmNsnms7fdE7iuK3xReE+KkRDEfYJptMMgDFZZtEdUnBI60KAqr6DwQCOj49hPp8DQKXDoxEb09D0lNbY+JbKAnAyQ/qITkqv4bSs7bHf8MhKbac3TY/XMyDQu820ciggqbHxVZa6s5UfSVzcOh2ps5KW0wT08kN6ZCeow0NpqdqmCGimuGjZMTowzpLGL9uVw+l34Jx2uCO2yo9OWiC/EgB6BFdRtwOfyxydYZmOHq7/hM5Y+d3lwXiMC3ECC5No4W0SOrtomhjbN4nLE5++k7UZHnTW6ynaqh+Yn7f3bahaBg2LPfs8JMlAvywdp+z45fh9HKXIR44unlfiN7+sWDqpHgjf/e7vwP/z/7wP3//+9+Hx48cwnU5htVrB48eP4fz8HM7Pz5PzR1BSpp6Tmy+Hlpx0Gg00P+qm0ql0lnUnX3eEssje1rn1p2XR46ZPT09hMpkAQKXn/e7v/m4d9vTpU+j3+zWO8XhcOwTxozN0BFptsg8gA28valfV1lAcmujTOevbfUHKhpWCJnkw3wMcNnAel64YAmi+fuZl5dCSWrOl0j0cU3wHkGsUoeESWDu7LV00jWQ43Qdoxoqmhp2ugQ5+dKZiGO6UwPftdgu/+tWv4MmTJ96dsXg8BXfGpozSVpAMJ5ReCsfHx3BycgIA1Y5eriTQd+k4G8kYLtH/MBHaeJge6avdF0bvRUyBNJYpLkzDy6bxObil+uHdjZwvu+SJmEzVDJA0jQQSD+OYWCwWMJvNoNfr1Ysdmo8atkNjlG+41gy6vE48X4pmyaGjGWdjxnNLH0t5JScKTU8dAtxxYwVKvyVfW56LOdIofks7Unyp8JjjqOnCRLs3UUufUz6ln+4sT9FB/zV8Mdq4MUWjT9stbhlbsTbXeJ7zaazPMD71NfxdA5Uv/X7f033QWUXHQ6/Xg36/H9z1h/E5QOWGRA/+N8FfliVcXFwAgLsrVtoFKOk8UrikI7W5hkKClNzhcw2Nm0wmUJYlXF9fe3Wj9cqlpanBpC3Expckk2ic9Iw8OhwO4fT0tNal8YNKaW7UDLISPRItAO5UHHofHC+H7563tDmdZyWateOYedsNBoN63VCWJdzc3MBisajTp3XTFK0lgLALFpuxuHVk4vG6eF+qo1fOnyrHSo9EV4jfilun0dc1AOjduPw9pCfcHUvTAbh2cvypOfSq3a5ux/eW8R3VWXH9EspjhOoxLKv0HF36f/XMnbH+M4hOWPDiaVto7z5tHHgeGWLxlBYLSLhcmO6Q7RqwTK1ufptLMlBal+nlhPGlEh4DTlMYz+MqfuNhPH3cgU3pdHyq4Qt5SqPX4fPxAgD83u/9Hvybf/P/AUA19qbTKfT7fXjrrbfg+voaLi8v93YfqNWwvUtI2WRjOn2u/qjpASmcki1Nw6GloTvGPvzwQ/jggw8AoHK2/v7v/z48ffoUnj59Gsz1R0dH9bVqy+USrq6u1COdHyAPuD6EJ+/gOi/Gf9wOdNfj6C7Bsi7OtSE9wGEBtyvwuF3tiNUgJf802zOHTp2xOQz+OgqJ1GQuvWudFOvAVMe2mRwtwlxaPMXooO8pg76FhyxG11zIKT8FsSMQaVkIs9kMfvGLX3gGFIDKKUsnZX60Wez+phRIfdzr9WA+n8Nnn30Go9EIxuMxzOdzGI1GcHJyAkVRwPvvvw+PHz+Gs7Mz2Gw2sFwua0MrKg3r9Rq2220tKCm9FPhX/V32wX0FbfxxA7xFwGOa1B3MbRYhGt1SGimPli4FsbGekjFNQGprSS7zsKurq/oYIHonNG1XujiTjMUxRxuPt9RbWrRRPpDaTyuL1gOfLfyU6m+UbXSHLN8tG3MsWPqapo3xrpVmilejL5UH86X4OwapcWlpm1Q7a+lTaaW2ke6j5fyolafpUb6RmhtpQ3ownn7IIjkkuGNCqrNEb+wocA2oc4PrXFI70rh9zaGpupdl9eHJeDyGR48ewaNHj2A8HsOzZ8/g+vo66Bt6bL5WhkYH9p+F5yUHKk8bk6US3/E4aecArxPV53g4T2sB6zys1YumQx1uOp3CZrOBq6srNa02p2hl3LWOF9NLLOFSOnqsegqk+Z/G0XBpJ2qMzpgc4LoGpuO78yW8Wh3xGU9SKMsycMbiWiHW975u5f/LUAKQXaL4nwPlraNEnmN8fPRde9bypsOquoS02epkqXuVJtyZS/P77SEdXwzAHXplCdDr0f8Sej3c+UrvieWyjuqNiC2kjVBJysR5w4X7OojmfLX8h8+uLIkWndaUKIjF8/It+WziyqIfSDI+lT6lz1jwxPKULIzTRhHzI3nDvqV08HdOZ0izVInS+4/lx/I0nvLT6n0glSHjDmE+n8OrV69gsVjAer2G58+fw3w+hy+//BJevXrl6VK5ayANurD77st2zOWVhY4cexa34Ui6ZAr4uov2E12n0LUzdbCjXv7+++/XO2KLoqjteQDVscRPnjyBwWAQ3GOau058gDxAXcui9yHsa3x0Ddb1MIWcusbWIw9wP4D3d2oNT99T6ygqSy12bys/SmHSOtFzxu7TiGOBlFHSanTdBy1NIWbcT4F10Z/KkzIAxWjMFWgWw6XFOC7liZUTKy+GV8JlMWzFFDiefz6fi3cEDIfD4MsPbkSJ0WLlWUrvarWCFy9ewHQ6hePjY7i8vISiKODdd9+F6XQKT58+hUePHsFyuYT5fA43NzcAAPUdVpJySP9jbZHDQ/dV4bAAdyjx+kpOBuskwEEbj7GxwPu5bV9YjN6YzmL0zZ3DUjIs1r6p9ri5uanHCIA/pjEdnZhThvTUAjAGUjvlyPNcmcxB42ctHcolSeHiOLhclOoSmyPa8LBFyW8yT+aOX6v+1pRfcvNo/ZPDz5KjSgNqhJDmIumOZWtdqBOD027RlbS2sJRN34sivDec478r0Ppys9lAv9+vr2N49OgRvHjxoj7ql+PAOrb9WEuTV1b9SQJJttA+oTxCjV5a27SVSZzHUjglvCn9fzwe1x/YSTswLTofj2vDt03WhbHxpOWndeNyQ+on6/3dKZ2G4o/pJCn6pbIAIDBKWMvCsczlIuKja4BerwfT6bROc319HbSppn9U8Sn56P6LiDMzbJ4qHea3sp+Mi/IKrUNYFt+JK+HUadKOXbbSycv26aK7Y30nHD2u2L1XdDrnm89DVQnbrd8O7khinzeLAsB3DsecsYiL1iMcK6l/EJyvNI7Wwy+Pl2uhUUlhjpdkQzyvLb3rv3xweZvSYv3XwngcrUtZ5tOFOFxeX8ZZaJFo4rikvJVMdHmkdLxO1XvYB+HY0NtjPl/A2dkZXF1d1cfr39zcwIsXL+Dq6kr92DAHUvO7dU24S9DsK3RnKNcVtXUz4pPKkECqf46OZLF98HvaKQyHQ5hOp/Dhhx/Wp/PxNLgZY7lc1h+Wt+GJ1wV2xa+Sfc/qdMqF1NpACm/C3/y9jc0ud+0sxR3CevkB8iDH9pljD+frGQ20dClbZmztSOGgjym2TuT7gF2UJRkGu5zkuqJ5FwIspnw1dY6k4K4FMDdmFEURHGGK6QDcPUto5ECw7hrJrS81tK1WK7i8vKzxPH36NEg/GAzg9PRULBedKPiMfUaNrSkjkAZ33Y/7Bu6couHcsEWdERQkR4J1wqJHPlLDMw+PTZbcWJ3i25w+bmJUb4pPc8pIizW+Mzwm77ihUktD6UjVwZKeG5wl5dziBJHmCEsfWvqNypOuwOrY6ULW7EJe5Tpt9g3aUUG03amssowBCQ9958qyhRelsRtzGEjGGY5buu+YjzOeD/mblnffDB5It/bxBDrzBoMBbDYbWK1WXt8XRXWqBm373PHJ+1NywHMZzvUVPI0E8/OPZSRZznk3NhdK/U9pKstSPLI71QZUB2gDkhODP8f6JqWfW8e4Bl2uC6U2iy3auc6F6ReLBXz99df1bmjkdTomiqKA4XDo8Tpe0aCVB+DLk5SeFTsamfMdl8UUpOOIcQyXpX9fMD2hB8tZr9f1+gGguuKEyrfUXK7FUzLL0jn88Bnj+TuHQnTg8ncQ4tzRx1paWrbGinKcjDOsZ5XOhYf18I8qTtFE8UnHFbu6S048JxN9J6wvK12akA+hpt8+dNNOWTlM3v2aNg6nHKz2Y2jT8TE9uznuEDjvCymKQqHJ5syl4zGRMiuP7BCQ81RySU5D4yS6pTAfl3PgUtxcTvllSXYPCY/mHPbf/XQ+bbSsajy6dD/+8T/B//pfP6/nK4Dqg6KLi4v6A7pvAki6HF+7A1Q2MU23wXT0Azw+70rzLJWFg8EAyrKsT1ORaEM8OWthfjWaBpvNBn7961/DcrkEgOpUr08//RS+/vpruLy8rPUVhH0eBfoAry+0Xa9I6yhL2ge4XxBb97SBHBxSWjx5oC1kOWNjhuIHiEPMyI3vWtoULo63KTRhbG6c0pQNqZyUEyBFW8zwlTJKSfTm8ncToymfLKjhj6ejhsl9w2az8e68pe9o8On1ejAajbwz2jVjsmS8thrgH+RL2ghH0/FwbSyknGuSTLIYYGPjoklfthkDFnnE42J1jOHUDPaas0mSXzGZpqVNpcP3VN9JC7bc/rLwYy5IBvAmtGi4LXFdLRja0iRB13pZ03y5baTxuuTwSjlLYn0lOb+k/No8xGUhd/jF6NB0PC1PV7ALnFp9U/MI/qOeQH/SKQE8nzb3URqkclN0aTo5d0Rxo1Pb+UhzlqVoTgH2Rcw4EdPVuS5M+4THUbwpxytP05Ve0BVI7ZBykPI8m80Gbm5uPF1YkgX0Oo8cY6amW0m75Gme2PpGm1djcxWvG1/D4ft2u4X5fF6nQ4O/pZ97PeRTHlOC74RksUo4zWvJQ8PiOPPKQnwAPk4eVt46W+LjSnZEW2nleaR/pKEKw7bnRxj7zldruVUZEv6wfRiGGk/4HvJy+tl3xuWukyzxPr2pNLE5qx3+OGCDa4jormi9fP6vg9TOsXje7+my5PBSfC7LMH0VFvKXFSRa47QlMYrt7I8Ffhepzp9ff/01/OpXl0E41W9z1pE5IOF1NLfHn4NLooXOqzFaJVzWtSpfG8SuzuCQWvPReZnbImj4druFzWYD6/UaVqsVnJ+fw/X1db1D+h//8R9rXLg5RKLjwUbXHVj045iO2nXZnAaLbX5fNHGI6bz7pvsBugPLGjOVbldzDJ8vNNpScNA7Y62wK8HUJUgLfrpA32WZqba5S6HUdDJHpSXni4QmeQDSypi1/SRDGFVuuBFwNBoBNWJKeLoCzTiJcS9fvqyPFeRf/W82m2C3rnSkHcZJXw9qQGk49DG+a0i1gcYX9P4P3lex9pUmudw+sKRvirsJ5LRhrlyMOYlwTHAjNjemWvmcLqZSdNC0KfzWxWuTRbnVGLvdbmG1WgVfnDVxyEqwLznS1nCRK/NiPLEvkIzyXC7R8c6ddQiaQ5Y6zDCM46Vpabg2v3FIOWTpvaap/sUvyR8/fgz9fr/+uvzm5sYzwMTmQYu+0cWRck0hxqM4hufzOTx//hxWqxUcHR3BYrHwHFPIC3SnoIWPaV7JQSi1i9ZG2MdIM3UkSWkp/hhe6SQJSmMsbVNZxceCRG9KPiGOq6srT5+jbd12Lrkr4HWhbaHp+7H6bLfbmneltsf2w2sKUIagPpa7VsMTdvj981oeil+6+oTr6lxex8YiHX9FUe3w2W638OrVqzoNOmPpLh2prLIs4VvfOoL33z+CJ0/GjE500lWOOwzz+dA5DZ0Dye0SpWmqst29qM65qB8LrD1zvLQ+6HCscPN0YR6tzv5xvs55WRR+G1RhfHes/d05nQpGP9JK//V24XSF/1UZtA0xTGkNMcwfltpdr7r8z3XAcnx6mjR0iSsH/PFA32nb84K5w9a9V/kLloe/+4DlS/Xz4/ydn9zZyHmgkkVaWvfM+caFc/7gNIROUTlMLlOiVf+VXl6pbTgeKX1Y3/Bd2uHzYHeJ60na3Mvny5RdRgKMs+DX0nGdGm1vR0dH8PjxY7i+voZPPvkE+v0+PH78GBaLhVfGzc2NpzvsyqHxAHlwyGNyn/YVCqn1omWt8wCHB5KMlK6EaepL20Xfp2za/KMWgI6csU2+PuryixoJ910Y9nOM+NQIyQ1Fu5jkuppErQZNGpfTHhqOWLq2vNSEf1N1S9GkKU4xo5CF5i4NZBTXcrn08saMkJyfY7wXcwKnwg4NupA7Uv9oTgYLDmqUzhm7TdKlaGrSr1Z+zZFvsTaUJlGp3SxlUDxNHYkxA7FvgAvT0bqkFlIpvpOAO96kPNI8Z+En7lyR4mO0dqlftIGYnNf4iNNukedSv8fSpGhsAxZ8WrvQeIm/Y3hifEhx8jSSo05yqNAxFNNLJJpGoxEMh8P6CLD7YsiQjOlN8axWq3r34GazUQ1ZucZxjM/Rnyz0SotA+lFTDn3aeE/N5xr/txnLsTHFxx1A/Hg+Ka8ULo29fY4BqV5SGoTcOT/Fs1yG8A8vJdro/MrjUJ9DPDljRtMZrG2TisdnfqShRbctyxLG4z6cng5hMOiBVqxctRKA7ZzF5+q/iu8apP6hNOj5qn9Kq/8u82sMd7xcXn/53W8zTgemoTtkfecefUaHnBt/Wt9ZQcocOmQBuLMqzE/jY2F+nB7vp4lDrJxmuDSQmEGTC7wPse/0MsK4uANWoxfDYnEp0NqU9ltZ+vj4u6VMTivFQZ2ncVyxY60lnqTPnIdl+vSyK6DrQmmN6HDI88R90WFTIOn/WrqUbhmbc3lcr9cTP4yi+HN02NhameteqDfM53NYLBbw1Vdf1fcG46kWqKtj3i6O4nyAEKy277uG2BrEah+PrTmk8K5opeGH1q73HfbdppJtEK9y1OavmFxvS7tlHCAd9J/Da7EzlsO+GCOnnNhinhp2NIbiHd5m90uXhhCLM016b0K/ZETgBtvcvre0g8WIoyl0MQOxZNCld8o2gTa8H1OycVcsKnF49xWC1EaWncivi0IPsD+5oxtp0gZbqS9yjeLcEB2rt8YDh6oQIV39fh/Ksqx39mnyirad1l60rvx+NZ4vpkxQQy4HXNRpSi3dicNBCtNw0TrxeKmvsQ2bAM3blF9SbbsP0PpUc9A0Aeo8kgzc+wI6fgDCXYXUgUDpsy6eNEeCRANNpwHGW47mRlpQJmjjne4Gxt/p6SlMJhNYLBZwfX0N5+fn9VimeTguzQDEece66zwXrDilcSbJxevra5jNZnV78/HN+QKfpbah+Wk4l5GpeZHra7grvyxL73jVXq8H4/EYer0eXF9fBzsasT/4MbRSH2J6zTHdVV+mjIcScL0aj5ttcqKMNEYsu4l3ARaHItLM+xUg3E1LceKuIkme0bbEq0cob1nmR4qjKAo4Pj6ud9mu1+t6FyreOxfjeW3MaeVJ4ZZ5C3fI4q5gipPzkj+WAPp96Zji0NGAOzoxHMO4w5A7paqysP4y/b7D0TkV8V3edQu3OMN7W3k9XFhIn1Tn2I5dKY9EQ/hPjwrm7zQ/pRGfsdK+A84vw79jt6LX30lJ6+D6Kwa6riCl84M1R5buANPLi9EopbVlyMObluuUX25DlPAaax3v43f95njC4YOE45bunKXjNUwn9Zufvixdm7rnUD7QZ/89vDuY9xFNQ9MSLEKYj9PVt/TCeT2qXyk+c/pomhAHzV8SPKHzt9+vrpmaTqcwGo3qe0E1eN0dGdKciTpaaq7jV3UhSHevI/T7/cCOtlqt6t2p2nqgDRRFAePxGBaLBXz55Zd12PPnz4N1k3Q9xevc/w9wv4Db/h/gbmCXMsGCu9/vw1tvvQUA1SlOHBaLhXqSQO66OGVvSgE9mZLnC5yxh8rcu5oION5dTjjc2EIXtpymWP6YENIW4dR4kNO3TdpCcwg0wcvbKGaYo3VLGQza8neOgS9m3LWWk9MPKf6JxWl9x42+1IDI8+IXf/zYSSudD+BDTCbFxgIN0/gR47gcsvZNzoTGabCMzVg6Pt4lHNy4L6WLyX8qp2NjOtVeUj1i7a2Nl5T81mRhr9dTna4arU3lp4XOXJDaLoVf4iOa7y7lD52frG2Vks1Nx3GTdtCUUpwfxuPqiMl+vw+bzQZWq1WQT5tzYnM9pTmlGFv4gzokctrKwkO0HmisiRlUUro3bxerU2QfQJ1YqY+vco1KWj9rY4cbkHLKQR6mZVAaUvOd5sCSyuFjocu1F8UnGdVyIdWvKTo0Pm271mqzXtN0B63faZzWdxpw3qLGTm1O4nMEpWE0GsF4PIbBYFDLVoveH5tDJJ2pTf9ocl3Snfx6Y925EwTp0p2QDqfvbPJxpfNbcWfmBHoUMq2Poym8i1WnocLh6hffSYt5NAetRrOjM3TU0jQ+Tsmpi7to3bHHrl8oLivk6KbOcaXhiMX5+E3EkbS2DHliOZ8B+RiQwis+KMAfd9QxSxFojnMabnGu35YUSUbpsbdTTlqdBhqGz3K6kMf4c5oead0XSZ3VZpzXnX6QswmgybzQdp63Qo5uE1vb4pH6WnrLel3TC9BBy/UpfoVULljsjJodVut/zcayr/58gDgcwtqvCVjWOikbeyp/Li0PcPcgyRhJZtHrTvr9fv3hp2aXlfik7XWV3CfC08ZsExLP3ZudsbsaMNrktAuQ7svp9aqv0xBWq1VwJKwEVsON5mzZN7Rd2COkHASWMna1i+R1gZhSR4UbCkEEVCSHwyEMh0NYrVaqQ/ah/dNgaS8aLn1xk2v4bgop5ySlTZpkcQEUw8lBWhxZnJUxvFbZYG1jaVLmbWCV9bQsjlfaIUbLQqdYjkOW4rHm4Y5BTn8upBaIUlpNaZcM6XcBXOFsOz55X1Ejwr4Wa3RR3+/34Y033oDBYACbzQaur6/h+fPnwbFc3EFBw5HP+d3jfMx3cXSWphtpPBbjM4qTws3NTT3+8NhXzTEZc1pxR95d8zIFC69RXkUdIpWWP9MwTfZanOVaeeg45ztfY7sc6O5ZrU8xDR6ppNWL02OhmUOv14PBYFDvxIwtDC0Qa38rzV3IOgtdXeLWjAOS4zKmA+DaD/sDwNc1Ym1D6UAePDk5gePjYxiNRjCfz+HLL79UaaD3ENM0MX5GkOqZqi/GS6cNSLJW0o1okqqs8PhhdFwWzPlX4XHpCs/hSB2Y1KFYlwZ896mEjz/T/JKjTE6rQegAdTh8/L7Tk7dJmF6m0bVJLN61M0DoXI3xAncCU10dbp+pIyvmjE7ZO1JpUg467rDKg1z5ll9Grrzj9i25bM7vzgnr95G8Kzb1LJXp4qU2wLBq7LtnPz68KxbjpLRaHK8zTcPz8rLpL6SLykr37vKWpCxdh3E4wp2zFS7pF9aPtzPiv7m5qU8+a6NzvC5A5y7pDl1pvpL0IK2dhsOhZ/PF8q6vr4P51gKptFJd8N56fm8trcd2u61t0ffV6fcAhw85699Uuge4/0Btllr8yclJ/cE/gvYhi2ZbbstT1EYlgWab0uT1vXHG3ifQFie4mxCBGyYxbDgciobzNpNizDiVY3hva8ChcU3qkspjxRkzIsWMe02gSd59K7xcwbSkxy8qaRivq3S0Gy1PclQ9gA9NJg3NAEvxpRxTPH+qzBw5wtPGPgDIgSYGZ83gyGnizkY62abqbuXrXLlocT5rdFgcS5Y+1ZwmUt5YO1BaJHmcopGnj6VJ0aLR1gX4BlZZDvJ0nA7uzJGMBLuEVHvghzrUAUv7VaqbVCcprSaTmsiQVJ5c44jkwCnLEmazWW3YWK/X3l2PsTpoziApTWys7wM0J5VUT+t4amKUsshgTUYgrZRmmg+Po5XuYKcQk0H0GOsUDklO8HpoMr0sy3q3hSZTpTJThkXOr23nvH0C50GLHJZAksuIT+pb2vcp+igOjhtx4vpwvV7XOnhuvzSZE1NjTFpnSvzJj/KWdKk4pHd4+u8lgLKzFknFfwlXLvg0VWXTZ16e9p56jpdbh9Zl6un5fMzzhE5eyREuOWh5HAB3ykIdjmW5MAvEZGg83q+ftTxeRhM7RpOSpPHK8ebMlyEtrn/p/E37BxMXXn9C1AkrO2YloLRY24j2sZZfwsXz8TRS/hCPZCty/3q5YRj/aWmlfLGyYzh2YYOLgbaeOSTHCjWwN7E3WvRzGoYf/knzcs7aJTVv8vU+v9YGacE0lqtbvolwX9vCYiex6PK5fGeF3HV9DO5rH31TwWrbG41G9ccs9Gq25XIJ6/XaS49rI77m4h+hWmzGTeyyGmh4HpyxOwKp8/h50ZLnHHfKLpdLceGeu3uMQspYdxfGOwo5C/wUdG2Y7MJ42MTIc6iAhj76gQGvX2zXC4AbI1ZB/E0DKy9p44jv8pTGO9010QS0/pMMiNJiw1JHft+YhSYJdsFPUpvG7pfNwZnrAE3JF2rgLYpCPDoW8ViN91J+LSwWHzOSa7yeW8ZdgeZUlcZnF0YJiwOva+ALfXTGFkUB8/k8mZ/TyZ0RKRkXk0ExmmNGEIshRiub0315eQkAzumAd1JzJ5vmyMk11NwVpOS5tPCxzv9WORCjAds2ZkSLOVopX/O8KTnMHXK8Ly1jNFUO6mV0ByYA1B9G0HQSSG3D8/H5PAd2Ie9yIVaHpnVDWUId9VL9LO0em3sRL94tR3evAMjyUBo3Eh/l1DnWd5LswvpRnY6n8WkBkJxPFQ5+byp1HOIuWtr+fKxWYVVerYZ+PqySXy51dPjpMY7++/UI6dYdpnx3LATPai1KmRYJp5bG1V12yDr6gdUH3ymfhI65CpcfbqmbUNt4rNdX+dAmfzsxZ2kIHNfp/JwWyk/4Xj3b7hPGMUfbpUof9rVGh/xcBmFl6WhL53dpY8+cJl+uhTtzkQb/l767lsdrNHAaw3L8siTcAFTeSu2Yf13ENwVo2/B1aFcGeQp4d7ykU3bZPxZceGrPA9wt7GO9foigrWkOfd37AM0hZkPhMJ1O4dGjR17YZrOB+XweyFAM50BP8wSw8VPMBsUhZRPSIMsZazX6xojQDL+vI3ABgh55PJ9/vV7DaDSCjz76KHDMnp+f10eHIKzXa3j58mWwOOdlScyQ4+1v2s8p5UEyrNOdk5KhrAlvcBokh5CURzNcW9uhS0OTNinFyuwSunYMpOqTMqi/rjLCCjH+TTkFLID9LR13mxoX9F9zoknH/Wj14XSl5FnbeQllM8dtGW8WuWJJb3U8IOAXrNLR9zz/druF9XoNg8GgPh4J82p3WfJxJ5Wh1VnbDU+dHNLYpzIn1gdS2dZ0TSHlZGqKi/NDLi/zscfxaI68JnSnoCjc0TIvX76E4XAIR0dHsFwuo4Z/Pu9Tp5j2dXbMyWGRKfxZ6wcpXSxOo0Xq31h9Us4YqU535dziEJN5+JM+WJEMYJiPv6dks9afmo6J4ZJjiNJGnZyxuZjn13BKOjCvH39Gh590z9dwOITT01M4PT2FJ0+ewMuXL+u1xGq1guFwGNAsldMkXktL25bG3RXPSvpEbH6jfGmVz7E+jOWRaKG6GcbhTnuUkVQPkMZN0zVVjNel9snBS+sU5kVHDh3T6DgKjxcuSxeOqGh6js+n1y/HLy+Mc3iTtSR5q2fsBpqfh0lpOF7qFIWo0wwi/+Fu2HC3cSoN8hVtVwB6N25Fo2sHRzemkeY/1w7tIUdutcsfx9MEUowmxWt5XHtzCHna8WvIU9J9wZiejjVedhgXthPXHeTneHypPFdp5PewXD8tjY91rly3kJ6yDpd/NF5rrzKg08lBrR7hO8Bu7EixdWlqzdoEdyq9tM6IlcnnzaY0cTzb7bb+EBrjYziazt0aLQi4OYifbsfhm2572zW0tdt1AVY+T+mBTXCmytvVmHjg68MAbT0mXaOi8QMAiLJM2vBI11FteJQf8Y74JJuVZS5RnbFdEGsFzRC1a+OhBXIXmRpQZQCN33hc3be+9a3aSIJpvvrqKzg7O/NwLBYLODs7g/V6HeCmIDFgTKBpRq+uQTIKSMpZrhHDUq6lD1N8GKMrZ5JqAvvG0aQPJOVWmzSl9juE8X7X0NQ4aVFONH7kBnKpD6khHcNiPGIZH7nQFodFBkpxkvNGSptKRydq3p7Wfsf06ESlCovmBMDF32g0gtFo5JWFO2vo8URaudygri3cKI2SU4QrK1xpSi2QeTlavn0o27n6QY4xP4cGKV9XRncr0D45OzuD4XAIRVHt4qK6Dz2iV6KD6kpSOt73mk6h1cc6r8fyamGSPOFjXSoL3zW+iBlJYu2xL4jJf8pb/Gi0VF7an035XFpPcN1TWvRJdHFnrFZPK2CbaH2vzcXojKVhAJUz9o033oBvfetb8L3vfQ9+9rOfQVFUu9M3mw0Mh8PAkZvinaZrID5+uUF0l/JZw895IedEkKbjKiZTpPlQopXPz7PZzEtLP/TFMqleR98lOjS6Y/pRTJ+UgIZzXTNGT1k7D0qAwDnrO2BvYwDvNAXiAPVpcWljDi/Mi+mrMv2y0g4zKZ+YiuBytOtlh/hdGk6XTGc6Hx3HLo3vDHb5HC7kG7p7EtO6Ovo4bmMLuc/8NGIrRPPYh2/eOO9qug3x6M5Tmeds+oori8oaDKdzG/KGZUds6j8NtP7hM8Uh3xUbPvs4eBzlXf/dhfO0Th5ymmgamhfTaGWE5amxBH8lmzmdpVcO/fFyLMbhXJDsiHyO2LWNcZ8Qm+ekumMcrseb2CRj5ebALvr/AQ4DUnYc/G/a/3y90NZemSrLYhfOsR3H1v8PsF/Q1iPUVsAhZiOhvjG0NeXgiNHIAU/J4niXy2WjMg/ymOJdL9RzoK1xUjqqlRpCrq+v4X//7/8Nb731Fnzve9+L4kNjZmrxmzqelOOUnjX8KSGe015IpzZguoRd8RQ1VqSO5b0v0IVhnuKRQMJtcWh9E8BqqLbkT6XjOyv5PdUWkORRakzTcYMKl+aQS41dmpfiTTkYJXpiDppUu1oWnJLSqDmcpPqMRiM4Pj6u70549eoVzGYzrx/5vIPHVl5eXkK/34dvf/vbcHR0BKvVCubzOTx79gzKsoTRaBTcVY708aM1tTbRDO0xoy7HG3PUYVoLT+wDuiqnq/kJ+YQ6Pu6CDnQMnJ+fJ79EpAs6vvjisjDHmaDRRcvhRhPN0SaVa9GdaDwtSxtPsbpJY4rLvUMErQ/5Ql7TCWLxOWVSBxB3TEkGRIkO3OWNc4t05LBGCy1XMmLgPFYURfDBpQac3sViAV999RV8+9vfho8++giurq5gNpvBy5cvPQdeG37hfcJ3sFO6aF17vR4MBoP6eN1d6v0pXun3+9Dv9z1aKI9oQMcc/7BKO6UiBdLX1ZQXUJbSEyxouxZFAaPRKLnLhfN5qp6WNNJ77n3KsbJ4MDoXnPPIdyZienymaW9zADo5Ma37d3GIg+dz+at/Wrajx79PNUzn7yx0feKX6+PVjwz26dPbJTxm2NHip+VlaeWDR3u4CxbpcmGuTWh/+U5BXUckWFtPd3YEXU6tdlyaHOHh3GErx/MwXUw5vvTD+JgFr1zKF3R88HEj/4d4tWc+bt26wk9bvYf3ANM4jq96152mvrygTs+SlVcy2uTdua6sEJf0TOsTx4E0lEH7AgBcXa3h2bMZzOd5a33r3HZI9lsAWWe36j/aGkpyElltV5rOKOVp4zR7gAdoun7i0HbdnVNGV/bnB7ifgOsoSe7hiUAUttttvY7bB/R6PW+td3R0VG+m3G63MJ/PA9pvbm680xAkOEhnLMJ9H5SSM5YrKqvVCr744gsoiqJ2xlLnhGQglBaz2jGgmI+GNWlPi7HcgjtnIX7XEGsvyXCjTXw5BjDNKRNLn4O/DS0aLi0sty4xfF0ZD3PoOSTIGbuaMVlqB7qz0mJYThnZLI4yLIM7M6z8IdHA72DEdNwJotFtgZzxxZ9jYTH6aJ3RaDyZTGA6ncJ0OoWrqysxD+1XdLDi/c7o0N1sNvVRxQCuDblDvq2M5vMW52XeZhYjMOezmFOr6/nlkOSJRIvWzppRwWI41+R6LLwsS1gsFo3qwGlMhcXGUGp8pdpQW4haHalxZ4O+e4CHWcfGfQJOb8yRk+uM5XMBgHynZk6foWy0yJtUOdj3XLeO1UMDWj9c9D1+/BhOTk5gOp3Wi0e87xbvGc0tzzcw2z9AxDUKP8L+rmQmX1DT/9wxhPWI7XBG4E7U1FoK8SLfctmO/3THubYmkPgvViepjql0vJ5WsPBCWfrOH3zn/1Ja/2hV37Fno0/OR8uG4Ljg/HL8skoA5W5bqa7hv+24YvCOb/bz+mXGwyg++V5ffHbpXT1p3bmD0W+XGMjtHePzNM420C3+HEcsd7hqjCj3Bf2YoPovvDHkO10pL/qOVjc2dODxYfpSCU/lc+G+LNJ1MZoGZQwITl0rHf6zf0Qxy2XGG6OFpwnrDrBcbuHVK3n3Doe2toAmedvQZCnTWrZl3WFdu9J0/KNAnibXbvYArz+k+Cq2hqXv1nUkxw8A6oe/kj0nZ3zn+CdSY+Nh7Nwf0Owc0slp+LxarQJnLNpGm/Acx2/NS3fE4omDAO7EQo5vsVgkyzhYZ6xlYN5HsNbnzTffhJOTE7i+vq6NK/xoKgQ0LGgMGTsGS/o63WJ8tzoaLNC1ATHmEOy6HElgvG48e9dw3wzMXULKkRJ756DhwHwoR3ByS+WXxplmJIzRxOWTNBnHHCG9Xg+Gw2Egt3Bi5LQ3cdpIaaT2SDl+uGOS4tUA2xCdqf1+H8bjMTx69Ajef/99eOONN+DLL7+ExWJRH0OJRvLtdguDwQD6/X59HDHuUMLdNLStB4MB9Ho9WK/XdXm0zbgDQQJsc75zCPPTNoodWZsDdyUjqMzflYEhh5YmTo6UQzIVFsPLHQj4rukktAzOM1p6mi8VJ83XKecJOpE4Hdb5nvI/r79kzEFaY2nuK3Da+X2ptJ3b1pO2YS6NGr9x+W0xHFicWDhX4Y5YfvwRTyvxAcr6o6MjKIoCzs7OYLPZwGQyqWX+H/3RH0G/34e/+Iu/gMVi4TlTY/pEal6Twvj4x7krNX/sEuiYl8YyT2ulM2UgluZRGh/TCWj7pfhts9nU8gp5iupUdIzFvtTm9KbSSfTiM/8AwirDQoeC29EqHYMLZEcedRZRh+QtRgidUzRMxkXDq7r44To+RzN3Zrn28uvh53Nt6fdHeH9reGRz0Kq3/3bnK/YDTcfDqudw5ywP92lACNsO6xQDqZ53MTV2X6bUgZqjNXTmxNJoTlnHYz5/8TGhOzIdHjc+sd/DvLzNtDbE8e7eSxJesjThXbF+Xglv6cXxPBRnJaOB/cIwvSz/Xcvvh5WRd+mfp5fb9S7hrvVXbf5popNIc7LFdsrlbczO8wAPkAu5fJTL+5q+2lavz7VpPsD9Bkl2Wnh3uVzWax0JLNchafTwD4Y5TCYTePz4cf2Oa+j5fK764DRfG4VGztg2E0cTh1XXE5RVaHQhXLjxmr7HDPKDwQAGg0H9BTtAdR/UZDKBxWLhLaQlwwfHR9PG3jV6JANpl4JS62OLIUtLn0uj5FxJQa4DLFc47Eo5swjBrvo3Z7x1jRMgNMq+ThO8Np65I8Nq6KMLBa0/aNvzuUDrF4szJZUuNe654ydGdwxiDh0LaGNcM0Za5kQeh8csTqdTz1mEabljh85BuEsWHa8I1FGLR+lrBuCYHGsqs2LzVYwXNbpiOLqa21P4tPBcJ47V+cOdH7xMKgskY0AT4HRKfJPDI5Khwsob0hjQypDKa9IO0hjnbWxxalA6uhhDdznPxeoR408enjMWLE4eviDK1cd4OSkaJP2fpqPvdKemNl4s/NHv92G1WsH5+Xl9VyzS8fjx43p3rES/FmYBPvYkyDVcdgVSe0oL51S7x/BrfZOSASkZRWWqlIfO71Lb8zDruMldS8XmF61+epqSPftOIZ9c6uSk+KlzCNusCOJDurA+YTrtWcJBy5bSS+W0LTcsP747Nk2zdTdsKhwAIIzD+Kreft8gxNpYgl1Ne/sRVXxs8jD52bWd5IRN75LlvAfCBwau39xdsY63aBiA2yGL5eU1Xlnq7S2Hl148TePPxzROvysWw+x9Luk5YX5adg4+iUZaRiV3abl5u3n3BV2tFZuCZQ6jYKEvpttZbAFWOES7VU57We22hwr7pLGJfSLFq5a1g2XdZimrCeTYczncd976poK0ZtB4j4bT69SarGdi9FjwSCfe4lUyEt2W8XywO2N3CW0GfQ5st1tYLpe1YxVhMplAWZYwm83qzsa0fPLu9Xr1Fuh+vw8/+tGP4OzsDH76058GjMKPAZPunZLuk6UCeJdtIzEx0rQLiB3dbIFUe7Q1nFqMhxbowrGwS9gFbal+iSn9OK54fJd0do0vZhBJ0SEdzYgTxHw+h6Io6p2lWBa2IZcXALbjjGk59F+qDx9HmgFeagNtsosZPiX5x+sutRWvE69Pzh142k67mCGbyneE8Xhczy+0z+j9chxevnwJy+USPvjgg7rc1WoF6/UaptMpPHr0CFarVU1P7r2UWLbWHjG+0croWobsQ142ke1WxQ2B8gt1uljLarKwSS24nQE4NEYgX+S2f6xcOoYlORM7PpTKHE1+tJnn+a7a9Xqtyg+LMyPluOkCupy7aL9pDiQaZ5kncMd+TFZKi7vBYADT6RSWy2V91BEtD+c1iT8luqSwGK9gPNV3UVbjccJvvfUWFEUBP/vZz2C5XKon11BHIp03yrI6GvzXv/41LJdLmM1mcHNzA7PZLMCDawu6I1dqT37CAR3fWl2ldsMFK22/u9Jb1+u1NxY1HtVA0i9pG6Z0lxjvUsC+4cZbrvdMp9PaGEDvjkX5I5XFP+CK1Y3+p8Ycr6fUtql2xuiqjvyOV7o7k+4GdQ4heqyqvGMUaSoI3irctXHaURpWuXJiYVxR+P1f1Rv7snoOcTscfv143QHCe2Djd8Bq6WRcWplcvnLaQUjv2ryonXVSvUEI90LFNF4PdDYVdjmnpukOnaThe5UP+Yc+F0qawsvP83HewzB3JzDlRze+oHbWOkc7PYoagg8oQHj3gY5xnqYsufwI87jnMsgjx1H8+k5axIPx7jm2qxUR+WkB4nlknJjPtjOXxpHaiG3+TQVp91MXugi3JaRo4HpkVzbBB7jf0LXtMLWe4WXG+DCVVwvrgq9jeuoD3D+IraMobDYbL7zLvs89HRZ9dRxWq1VwxdtqtRKPKJbGS9IZmzKCceh6gMQMhl0ILMlg2DVeNJ5woG27XC7h5cuXMJlM4OjoqM6H6QCg3gnFDSuIv4mRk5bDn5sYdWMGKg26VkCaGlK7pMOKp4symxjuLWVaDKM8ftcTZAo/N1phHok2Or4OydmTkrdN+i6VTlsQxOohGRi1MjR6pEWRJpMlHBhGj+OTcMTqYJnfYu1J+4Xyn8RvMQXV6lgoyxKWyyXM5/P6WGLpPj7NWI4GXjzqYzKZQFEU4l0MuW2h0S+Ny1hdpXLpO+eptuO3ybyfk96ijGG6pjqIxZlH08XwaDRrY1DK03WfSOMslUeC3EUi14+ksVAU7kOzoihqxwjKJD4m6XiItbdEh0ZPV3NvU97rgoactYbkoErxtsXAIOFtA9r6gvIFnkhwenoK/X4fRqNR/XEFxWMZg3hv7Gw2q0/RwTw3NzcwGAxU3QfxaHWnbczzafMbzSPdR87bKAY5slFLKxlAKS08P6eRz8cpGixpY7oNPsc+9sK4wWAAq9VKXA9S+aG1uybf+LPUZhrO3HWHwxeEAHci8bS06LKkzkfn1LDxjytLoitEoafX86TzV/mqOAkHr6OFljhdfhtjnD7uHG0APD2IdLt+ADGvn06iL0wj5b8L0Nnb7xML3X645mSVw+W1OkWI6UL6pTHknmk9qPPe3xEryTs3Bmn+sN40rCy1Ni2DdGlIz/1+mVL6WJjOm3JYjt7p59PahdKdLn/3EJtndlGOBjHbVVs7tjZHWvHlzLe50HQtmYMfIJ++LteJDyBDTru2HQMcxy7He0z3zMn/AIcJkk3Daj+z4m+CpyiK+jRBbf1blv6H0tJuWQ063xm7D4cMLaftwLI6FHKA06VtX6bOg/Pzc/jbv/1b+M53vgM/+MEPVNx8ly2A+8p7PB57BsEcYwHmaQIWA/tdCkDNmNIVNDHK84lrH2Nml3AoE5zGa/TezVg6Kz5r/F0Bn8S4Aa7pWMitb+xi9X6/7xkYY87AmLFys9nAarVS76Oz0GtNE1MKuENYopfXiRq/NQWWl7FcLmG1WsHZ2Rm8++678OjRIxiPx/Xl9qgQSMoCfT87O4OiKOCDDz6Aq6sr+OKLLwAN5ugI0HgmpWDw+Zk+S44oXmeKxwJtx2FTfWJf4yiFC2mhPBpbKMcM5vgvHVVtcRBK5Uj9n1M3/mxZPMZoo23Fx4bmwIiV0+v1YDwe10612WwG8/kc+v1+ra/RLypRT5PkAaVPKzMVvguwzIWxtNJ4x7SWemh8LDnXpPf1eu2dRiPR3WRu1MYHhqNTjH7Zix/PcKf9Bx98ANPpFD799FMoigKur6/FMjUnGNaTOz0BqvH87Nmzulxeh9gY1vpIGj8anev1utYHdrXW0NLG5EUOT1vp4HKDnk4ixaEMofmtBlzEizu/y7KEm5sbKIrqAxFuIIhd2ZGSOdYwWmf+gZxkyNDowaiydI4h9185hkriJKLpeVo3rn3coDjKaBlIFuJzz/I9rTSuwhWmo+W4dtB2xFJnlr/TFQQHqlb/GB7erjTM7z/aPogHSF/Q+lEnHa8vzUv7oxDShSC1+WGDz2d1aCnJk8J7xvYFwLQuLPwvIvk47pCW6r/0+reSRyi7sB74TOsBjDcpXnsH4XjneVx4iLeKK5XwEC/Hw8vDsKruYfv4aaT04Z2umJenlcJcWjnOx8/vi/Xz8Ta8D3BXthWrPsrz0P8UaLpw1zbKLu3ju1pr3FU/f5Mg1sbSmj7W1035YNd27qZryAfYLWi8Zx33mE46VbVJf/L1bMp2hTAajeD09FSV3QDVmkeyMVjA5IxNGUxT6duCtmg+1IFlMRRKaTebDcxmM3jx4oUXxvNeXV0lF7O4uMeFeBd1kMCyOJeMYzS8ifHLml4yysUW/9KEkapjEwMeLbtJGzQBjU+k91h+yziUeCCFv4vxbFFwmxr0msTvG5oe+S0da6s90zA+lvFZAz4J4g4OAKh37OBRexxXjM/osXyUHkvfa0qiJDt4Pq2OPJ828aPs4MZ8iR7ERZ3WV1dXsF6v690wkvEX8WHboMN2tVrV8YvFAoqiqHdV8baL9akm36V2STmZtL5oMs5yZem+x7JF7lt4k6bV8FvzoNKLukPuxysanbtoWwvPaflSMkpzQEntiel7vR4Mh0MYjUYwn8+Duvd6PZhMJt6xsJa6xMbIPnnWMhfG5JYEOfoGfbc60DQ6MR1NGzuuKKZX4DPOXVSmU2cU4qP8gHnwSGF66o0091nH4WKxgPPz8/r4eeS3+XwOg8GgPooej+rV+F2iRYtP6XZN1yJdgqbfY19Z5yMpjB77K5VrpU/DHxtDOJfzo+qxT5usKyzGs6brnvi4x/8SQHW2Vu88j0tX/cvH8XqlAToK5Xi/PIq/qgd4uBEnjROwAT1amTvHOB20/pQe1/YQ1NNyXDHSwtuR00XTh+WGNPJ6uzhQ42l9wdvZFzq6eT4/7+sAhfDsrw8KxQFb/YcOWpqX85t7Lwm/8DFaACjOVOxP5DE37kjuAsA55EO8KfFRlrS/Q4dkN3l8p6eEL/yPyzGKhtMTB92RivRh+S4sXo4Lz58LHI5QT7Wui3Oha902hY/q85Y1r5ZfwsfzNl1LNW0Ti56NoNn32tomc3XYB4hDmzZssn5K9X9T2dDEZt4Gdmljf4AQYryQshfQtYvW9xJ+ax9b1/cAlU11Pp+ruPCkwab2y2/knbGHDGdnZ7BYLKJpqBEdQWIA/Cq66WK8CUgKiWSEp0ANIbuiM+Ug4GklRSplKGnq5LMYPbqCGJ05/RATkE3rsg8lLWYwu0/AeTFmBLQsKqRz+mm8VIbFIcAdgviPjh5qsB6Px/WXRbSM1F2siIsb65s6ayx1k5yK+I4GeZS/MceO9T5Wiu/m5qZOv16vod/vw2Kx8Npgs9lAr9fzvibDHVpXV1dimUVR1AoHdZLnOn5yZAIPb/MB0V1CWxnOnUKUv3JxN5XJmG84HMJwOKx32FEezim7qVJqKSO1yEsZH1JzjXX+o+nweNmjoyO4vr4OTgXo9XpwcnJS72qX5lvfqBrSwuO7MpTsGlI6VQp4O/JwrudK7UfbDB1X9F0rTwpP6ZP0rk6UwavVysPR6/XqueL6+rr+EPP4+DiYN2L9LNFydXUFFxcXXliv14OrqysYj8fwzjvvwGw2g88++6zezW2pHy0zpx9pP7WRAV3piDnGIqtTUpq7pPEstV1TQyWmnc1mNQ30VAwugyQ+p/TwscDjpLK5HLPqidpYrX74DgDkKFzJuerajO5Edfnp3bFAHKkhVPGOFqwnS1Vqzj8/Pw3DPBJOvZwqr18XmRb+n0MP37Xr4lz5FK8vj8K2rp7DfqjeS/Iup/HbInScyfpNEMTyxOPbgGXqjZdPHdS0Tajs8B2sLoyn0Ry0tN34P61LyfgC+QB5qSQ/VzfKB5wfCXZWFo5ZfA9bpirf5XXv4bOfpvRwhPhcfTGMl494KA2cVpcn3OEqlxm/41Wih8dRnCkcQotKgd9IsK5JAeL6XhNcTXWYXP1gHza1XDg0eroGS5u37ZddteGu1uxtoGn5mh3kruvzAA6k9Zc/d7efr7qyjaxWq6gzVgNtTcmhkTM2x/B1KHCIg1CiZ7PZiB0+Go1qIxQ6LvilxtvttvWdTPsA7AvtHl1M0wa/JYzT0wbusn3btJXVQNKWjhwcFudhTlkxY9MhgsUQ2hXE2rGN802K14x0aAwejUZQliX0+/164pOMmRLgIhQdvJIDN2VA1+IsOHgdkec0+nOdjZKRtyiqe14RNxpikQbpaHxqfJX6JcdwyuMo0HrzXZY8j1VZScFdz/HWuatp3Sz5Y32q4eWOAO5MiuHWaKBpOe1NZY7kDIg5VbSxy9umTX/RONyhvlqtvB3FuNt8MBjA+++/D2VZwnQ6hfl8DpeXl+KRstxJwutrpX3fQPU6iVbqMOL5KMR0uFwel2ikDiSt7Fj7chqoI4rWlTqpKH7kC3zGI/Y///xzGA6HcHV1VZ+AQPHEgMbzKwCQntlsVvPncrmsxzilsUvjB43rglfbyncrDbFyYnwYyyPJUnxO8ZxljizL0rsvVqJNmvdz9TdOO76j7iW1D9eDtDB/nAAA4PGochg6EjG+QoVOWf9Y3VsMdRgNr8rF8Oo5dN46py6/G1PqC1p2UXAe8I8wxrIRJwdaVxlflRcdbFV67d+VR8Mkh6yE09UPPDyuf3idpHjEDcAdt2E63hZ8XoeaRg3uepqk5evDjbaDPzYwzPV3eKJO9Sw5ZLUdsi7M0Yl9gs/+R0FlCVBN3QUAbG9xb706hjzC278aOxLwcRmH0nsOxzSVF+7Zr5+PKwz38VdpSvYv0VwyXD59fh5f5sl00zAfp8uvO2HLEmC53MJvf3sD19fyh9cSWOY2y5y8az1VmlesNFjXIzG8XdSP85WlHm1tRTH7Rkzv3Mc627ImuK+Q237S2hegXZvk8JGFprbrhxR+TU/MwfEA+4MmvJm7ju8qXRvebTqWeb5OdsZ2IRjagMUIu49BmWsMlhwG3MEKUNE+HA7r9sXj7pbLJazXa2/SlAx7uwSrcZ6Hp4xcGk/lGKTaQC6/pOosGVIlg0wbo1VX4zCnT7X8+1ISYoaxmPEL03IF2AJ3McHHjHkx2mOTDK1/avcpB80IJRl2U/ThvYr0g5Obm5v66Fzr7lE83pga+yWHBsUVM/rHwOKgoe3Dd2RrzljJSInhVLajER13LuJ9lZy36fHNtE1iC62yLANcKVpjbTEcDut7aKX8TRZ7TcagVa7kzuNaO1kN6DzeUnaOrI+l5W1C5YHGI5w+yst8V+8udcKiqHYd0g8QuIFSohvlSew+a5onNrdQXlmtVtDr9WCxWHhtUpYlzOdzGI/H8OTJE+j3+3B6egpff/21t0s9Jpt4vbSxo80Lqf7gfa3NG5ZFi4SjLN2R9DHZ0wT44txCW2rekujn6Xn5/Kh/nLvwXliaHj+cxDyDwQB6vR58/vnnsN1u652qWpla3SiPU57BcmazmUcTHQtSGbH+tvShRvO+dShNztH4mPEnNn5SMgLDuWyl6YuiUOVRCjcCPf6cf5il6X+581xsTovpEzxvTJf19fIQT1lSh4/v3ML0WjyjDCBwSvq4KB6Kl6fh1Zbw8fpouKu6y3fHhjS7tFWY5bhirR65O2SrPKA4Xe1HE2NfFx4O3l48zk9TRtNAwlm7T/DbQqLL11+qf9wRC7fP3Bnbu40vvHg/v6wXuf6j4ws/cqAOv+rX6+F816vzVHixfq7fhdqTuNi6kNuL/H527/4zlu/eSxbH04Y8RsunZdC6+XmcvuPn88PpO6WNlxW2gbQjlu/E5Ucsh5VaLjfw7NkMNpvd6eS7hJx1EQeu27XFRyG2qUR7b2p3kEDS+dvo1pqu0DQvj+uCxn1Crq66a92W65uWNRmm7ap8K84U3zehSRrLFtj3muMBdgs5Monbty08ZLUNSesiXONreSR4LY4pPpRB1gUd0sK7LKujKSUjqLaovUvo0tB2HyBluMyFfRiyc8HiWNgFxAxGfIxI7Z9Lo9Wou29oy1tavax15Hm4Qq0ZO2kfSEqcxuvaJKfRZDWc54JV0dXycR6MOUO0NsTjifFOyslkAvP5HObzuXcUMkB4zC9vf62dc5QTxJ9yeuQ6bPYJMfr2RYu2IMe+1sYOhdhca5F/WB7iKYqiPvIaAOrjijWHFyq62pij/Kg5LXKBOr/oUedanVOOlCb08HanzjWM546usizrOzvpXZ28/TTHBe2nWH3aGmLa4sX6UCcMPQY35rCh5WG4RIsUx/lYy68ZMDQe5noG/af56YIPHZ14yoN0dG1ZljAajWA0GtX3zfB2om1olc/UEUcdf/hP776R5h38WU5vyOGLQ1kXaDoL/Y/lo9BELyjLsv6IhDvBOT9qC33+Tu+R57TF+FhKK42J2NHgnG5J/vK+5/paWEdM43ax4s+VjfldWu4cBO941aLGTd99CB2SFZ3he1V+mJ/irdKEu2DDsuQjlmlZsXIxjP9zmly85tjWd8hKd+9iWzoek+hHfvHrF7ZvScLCtDQ9gjT8ZBHD+V1Kkwd+OZzn03nlMUP/wyOHAZzT1Y3VAnq9ok7H43w54O+SletEHXz8uYTttoSqz7cML5dldKy5espzQAG8j5AeX274OPkzT6vjCR22rp5Sm/D/8LhhKX1Ig//s2peH8TqHRxhr+Xi5DyCDtj7S5iQpfwokHBbcTfBieFMdK2Vv6RpyaD0EvfEBfB7pQh9uSkOX6R5g/9Ckb6x21Jyy6BU9AFBfzSXhaCq3rXk6dcZqE09X0MUkdmigGaEwDgHvm6JADX7SIp7jkPJ3DW2YFiA+yFK8ROucM1h5uSnaY8ZA6d1i6MmhVSorlk8zSFppsiiluxyXbfDHjERSOV2Vu29o4lRo0/c4HqnBWAMaLx1RaR2rmuE4xt80XRtIjRetDjHHg3WhRo0rk8kETk9PoSzL+m5xaiiNGWAl+mMKTqpdm4JFHmnvMbDIPS2+y3HeZCxy4HxAHVypfNq7ta9RIR0Oh9Dv9+vd19oYiMkIzanTto2oQ4Afp5yDI2aMoeWk5pGyLIMdkFRGYprVahVNq+HntEi8QMc+LTNn8RpbYMd0MInPqCMHdVW6Q56no3JR4pvUfGCpL+bhTjCpLSU+kMrh/1K/Ss7Y7XYLw+EQjo+P612NeL+sdoe7Vh8OyGOYhn8ZvFqtgnDfiN8eJHmjyfcUtNXFeF7LbhbJeSilk9JY6cldn2n8qF3PIJ0qYikzNtb5uEi1TWre0eRZFU8dKZiOOwslRyHfUQoAyp2w/L/CIzuI/XJDGlx+OS0v28LS/no+jpfXE9NIOFzbhzjlcjRHLeICAGUXLOYH4ijnafywkoTzfgzzcXwp6ECN5RiRChF/nuii9XXPlWym6xn6j3agHknXI/n8I44xvKa+phd5B6+SKqEoSqDiktLj/unYKmpcFS/5R35LQIN1OVAq6bX+LFm9ZDw8DdLg4sIdsrQMCVeMPsQp0evTqeH05wBKq94Wryfk2ARzoEtdwwJN1kG55cR0LiofUnN4U4itLXZla/gmQ44N3DqO+PogtR606MpWO0xsjbkrnn2A5pBq/y7sZJZyU/aAwWBQr0HQ1sUhJru0eEwTs1NTeC12xrYBvujatwMmZcjsEueugLeZVaBa0lgMcDn4qPBu205W482hQa6BlufVcN4laPVBo5v00QLA3dN9n6Hp+OE7wdbrdX2vIn6pZDVGx+hp07eSgdAy+XKIpcPJX3NKYPmr1ao22r/zzjvw/e9/Hz7++GO4uLioceHOw9FoVOfFdo2NWXRm5dBtTYfGYfzyLGZ0pXnaOOjuQgHPKddaN25Ay22zNryPeZfLpceTlC4O/OhfTj/92pDWKbe/Eedms4GTkxP4wQ9+AC9evIBPP/0UBoMBDAaDgObUGNR0lxivajrjfD6v243ufkPn4hdffFHfDzqfz2s5Jzn+LDyV69Rqmseq39E0dDc0HkWPTmhpUc95xsIbmmFBk9tI12aziTrxUXZRR6rkgMUwOqfRMjANx4vz3fHxMXzrW9+Cn//853B+fg7D4dAkJ3m9tLTaCQaIX3Y6hbtxc+fBruXwLvBJaz/6TNtAGzMp2U/nwLJ0H1DxXbGSrM/RNzgvS2PMAlgOztmaccJCHx/HKYOGe3fHo1Z50JHjnIj8zlgMd2X5d7sChLLm9g1LFtqiivd5xeFGOqt47pgMd+hjOsSJ5cfujnV4+S5a8PBhHYrakSodTxy/29anH0B2LruyXRu5NJRuDKfpAOg9ooWXxk/nO2Z91pGds7Ehsj+1UOYn2r4hOCdmUWC6cHdrUaCzlTpd8cff5R2yiBsAvH5ydPoOvoqPqjFYhW3rZwC4ddZW9e71trDd8nGPvIHjEMt34wfjSuZ4pM+0HR2Nocx2eaSjfTkeqGmiaXw5Jd8V66enedyRxBjO36XyOE5XDi+ret9u9WOKJYjFPYAP+1hDdrFW1eR5DuxrvZxavz5AM2hjL+HQBE/b8rugHXHErlp7sPMeJjSRC5Z1BEC1hhkOhyr+1Ol+bSH36r9vlDNWmrxS73cBMQMRBbrA5QzKjUa7BC6QtbIlI5lmKKLPGn7NQGSBmEFSa8tYORaDr2VCSNHVVX9qNEn4pfbOKSeFvwnExoiFTomnDn3CthjRrQZ8az9IhllalrXNNKcHygTcMYVGRe0OOw00IzktX6JJwqG9W4G3S6rfOB1cpmMb4V3hb7zxBhwdHYm7JalMzVUGYjRR/LG6aHliclZqd94GbeWGxKsUt1XB00Brr9S8FaMvhp/zdoxWyTislesbtO330XCc+JOO4JVoy8GNdA0GA3j8+DEsl8t6d6GmD/F6SOMzBjQNH1fcCbJer6HX64njE+/sxONrKV25c1AsvVb/GC5rmU1AkwESUJ7gjpwu9R+JRt7PluPYtfxlqd8bg/GDwQCm02lwx2csjwax+SUm6yxGvdz8Eg0SrV33awoo/bE5KUc+aLoNheFwCNvtFpbLpSiDY7pHjCe4/ADwd/1S/U2jmfetll6iLbX2k+Ypy5rLj3OOE3TgYfKypI5A987jeJEOpxcKIOzclHDyZ5rfL1ve1UrrQPH577k7YnmdJYes1Cau3rEy7DT4dNM6+Xnl9tbah8SQvtN3zUq4OOxJ7NzS4O94laEI4ooCf/6xxamf+wA5vE/W4cZnycFfejRU0AM8jhhq53Hhvft14Q0vhemg9RsNj4lnVxcpre7AxHAnV8o6nOLldPjxIR1VGllHdTj4xwehY5nXx+H1+y1Dndw7dGnPSkFq3ufhKbtqF9C0/traz7rWxHhNj+PtZNFFLOWmdMAHsENOX+fiy4Vc3T9nLZqyy1jGNeLZ5Vi+K9inDO0Kcu09FFJX59D0/AhiCpJ9mNu8UrTQsBwbr4b/G+WMPUSmbTuYcg14+4ZY/YbDIYxGIy9su93CYrHIMoak2i+mrHQFqX6gOzQtA5aGSUqRlj/XgdDEyA6QFoqIf5eQw/sWA1gXsMvJsSu8uXiQZ2MTFUKs/lpe3EGERzTm0JnT3l05OjRA+tGAn2s4p3KqLMt6Bx3G3dzc1HfDHR8fw9tvvw2vXr2C2WwGAKGTSDLU8jhangRcZuYce4h46dGkiCelZHcN2AaS3NqXQqu1mWacLkt/13LOwlrCJZXDd//lAjVaIH9IhkGksw1wPl6tVvDy5Ut4//334U/+5E/gb/7mb+Af//Ef1fy5u8VScswiHzAN9iPujON91tVcycdyjmyMyQgeFlswc7mD/EWPzdV4Hk9HSPE95WlpbtfqSPvDojemeJeebMBpRVkttSum22w2sFwuvd23vHzZeJ4GmpbyflH4d/hKtFHZE5NbFjnOx0sTObBrGS3V0bruoKcBcJybzQb6/T4cHx97fa6tB3CsYPtzGvi40GQ6p5/3lTb+8L+pPOI0xT4wiGCBsnZKFN5zVQY6GgEg2EnqO/h8A3Nxi9t3GmH+cIeqvxuWlhHbeYs4uCOUloG4kEbnyPKPO3b19dMhzQAuraur7Hil7cbTubrRcuUdsq5+wOjx87r3vJ2yNJ2fNowD5hDz01nWD8kkrYCTQNv3NkXdRo5e/zji6ufrVdUYd/pWryelC3WxiiZXDqfNH3v0ftjSG8vbbQm9ni8rHP4eAGyhKOguacf3KXBj1w/DnwsLd8LSOmB5Lm+p4PLTUDwhPWVQhstTBu8hTk6LXLb/TOdlF4e7Y6v/lGNZHyd3Bfu2x3ZRnj+f7A9itOfaNWL5+XqlCVjXNftad79ukGPzbMOnlr6xrBmttkNrmTwdtxvydDnl3zd4HcdP0zql8qE9la6vEObzOczn88Z2MIQYn6Xo27kz1uJA+iZDrvPsPgBXWLRFPr4PBoP6PjEA+5dYViMcpUkKj+GNOU1SeGK0WPE1Nb41BW5IlfCnFKx9Qpv2oXW0GBUt5d315Nilgst5ge70svCAxSkgyQNu3LTio+ktDipaNwmoIhejO0anlkfKlwKqRAyHQ5hOp7VzZz6fe/3SRh5R+jQ5ZJXRaJCmeHj6fS7KLIuHXBwcTxtlUpozOf4UdNnW0lwYw8nHDPJkm/6VeK3f70NZlnB5eQlvvfUWnJ6ewvHxMUwmE1itVp7zX6M1p2wup2I4YuNa04U0npLa0yqXEK9mHInVI8VvKTponficocluK89IdbDqZJyG2EI9JU+leK2tJZ4oigJWqxVcX1/DarUS65oCiXZt/McMJU3L5ri6hK7mMCtOrY+t9Urp7NQpIuHV+pHmb1J+SleS3jl9kj6mQc64l+vh/8Dbuemeq3eq73FHInXeSmVIfes7a7Gq9F16pvmpk8vR6OPh8Vo7AHAaffxhObnpafm0nWk6GQfm0e6RlfJrfVGFIV/pu2UxvRbnp9utfEqUDrwtdSiE54L9bkPruY5/8BY6YXu9Kh29ogfz4ntN7W0/8eOEe71tXQfnZHXO4iqO/lMHPsUl1ZnOTXS8u38gzk//Hby8ElB8QmwyDZU/nC73HzpaNbpQ5lDcsqyL4Y7pG1pd/Tp3Dbnr2Kb42+Sx6DlW+ruUK13pXhaQ1lExW45UT4u9zGoPwTiLjnbXdrVDgl2Ns1yw9FtKp43hjaVN2fof4HAhhwekcKu84nio/JLwxxyxVjtJG967dztj92m4fYDmYDFOL5dLWK1W8PTpUzg6OoKrq6vWXybQMrsWyim+o/fmadAV/1qdIbuCXbRvV8Bpi7U33ut3qHXJhS4dsdgmeKwmhqMDUMojhcUcnhTwHjU6fjSjoVRGrC5N2wWdPtS5o9WTtku/36/zWoHXG9/pl3/9fh/G4zGcnJzAW2+9BU+ePIHNZgMff/wxXF1d1Tu1ytLf7Whpg5jRFp9zFWU8mpHDLsZbroJurU8upJwwElAjPe07y70Wqb6gfZ/jnJBw8TxaXZEPUb5ieFvDBeI4OjqC7XYLv/zlL2EymcD3vvc9OD4+hg8//BC+/PJLuLy8VOvAd5elHFYSHTHgY8aKF9NjHv4Fp8WRxGWttW60zzS89J+WRedbrWysC59rpfyxNpPCttttLW+xrSSZE6u75JRCB6k0Lml7aPRqvE5Pgnj58iWcnZ0F9NIytblPMqRJ/cT7gafZhy5J2ygmA3D+t+xc7hIsztwmshPrgbyEPLRerz0dgY6LJrp1rsOTA8pF/HBK2qltxcPpis0/WhnOEeF2xwLgs3N0UUcsxgPbwUrDNaduVSbWAeoykFwah+8FcbKC4vREXL6MKOo8lHbwdg/Sst07byrtbliflpC2vB2y1FHn17sosN0hoNFvO9wB699TytsXaaspLzndpFYKa2pDoDvZpo8xqWzaln5+7oSVdsQ6B2u1+xUdrfF/6pzFXbToRMVnTmP1j+OucsJutzjeqp2ulVgoAKCKr5y1vds+K6Fy2Lq+rspC/sP2L+pyUkDHJk3vOyrl3a/gOVz1XbQ8DcUD4OfjNBGKGI6yzsPpomW4/9gO2XCHLf1tt6W3O1anLd3eD3CYEM4h3YBk++JrRivs2in/ABVY9cMu+8Fqw4vR0pYejQbtRLgHOCyIrbHarvUk3LFjijWQaNkXP0Up7cpx1BReB6frPtowF/+uaNIM3lQx1WgpCnd0Gr1LjRrBuLNCqwNVJiQjWy7EDDK8TJ6u7aRpMbJYnSxthErMUSNNtFpZsfp0yZMxo4/koNCMqq+DDOoCJGNqzvn9OQbf1MIjd2w1MW5KZcYcWhL/p5zKOTThommxWMD19TVst1sYjUawWq0Cpysvpw1YFmZSXYpCPhIY4yz15zzTRgbSeQbfpTQA8hFNmlPK2odafansQcclbzepL2PjAuMlOZbjOMrlUZoWn/liPwcfdUjR/BiOR99eXl7Cs2fP4Pr62nNuSLTRdsilRcLH42J8GBuTnL81/cbKd1r9yjJ99HXOWJfaReLDlBy28rgGqTk7RafWv1x/jc0BsfIkQBlpuR89Nm/E9BqNPh6WK995fAyaGveaAKVTMtKk5oCYfp8LNA86Y/GIYirXJPnIy7PKgpjeG+Ohoijqe4ulOSgGTYy2mlyv4qhDhL47RyAtUnrnafU0SEMh4kMa3DvWgebX6u/imvK/Tws+U7wVDfzo5RgtEn6/fVy7+2Vr4XIZUpsD8PkBArppG4O3my++Y5bnr3N1LnZCnuFlh3XS+qeo8RS1A9OPczIrdU9sD7gT1oUDVI5SOl7p/Ed5vYTtFp2q1Lm6BX93bEFoxB2xknwpwPEGPrv2Qr7w2zB0goLoVNTmJdkBycOkNOA5aKks8mmrZJiGI6wbrUeMflqeC5OctbJD27Vb9b/ZlHB2toTr63WWTpUCbY7q2nidYzOK2RofwAHVyWNpYusQTe9osq7aFe8cAmjtvKtxEoOm+m2MVzRd1oJXwxcDad0m2Scpba8jX90XsPQnH/+W9WYK72azEU+cktY2dA0u2Wr3AVFn7L6IeJ3hENtwnzTlLEKn02ltYOUDZrFYwHq9rt9j58QD6AYgSXmzGqVSQMvkA/k+TgaxNkwZVQ8JeD00nrTsbP6mg+Y0ovzedgx1AdQhY1EkU3RTpY+n5XdcA/g7fGLOPY6bxlN+LcsSlsslXFxcwG9/+1sAAJhMJrBYLGCxWHg7KWl5kvzJHaMSfZohOLXoQCMR0qopPJLDqAuD/mAwgLL0j06OgWTIxj4tisL7cKgN9Pt9GAwG9RzHDfaWRStNw+/oBJCdExrtFFdO+/OFGb+nNacPNdq4jvDVV1/BX//1X8OjR4/g+PgY1us1rFYr787lGFD6UkfVYNtS+qRxkaoLH98ItI94f0mLTC4jYnRY+VRKJ+3QprIwhtvCZ1pYWdruTdZolPDyMd3mRJOu5ivLTtBU/0m6Z0x2U5yajkflNZcnOWNZ0yWldG3uK9MgxZ+7WBNRnNfX1/Wz5Ixtq3NqRml8pmVIfMH1FGmXvBW4HLLwrRQWOjPorliMr5w7VTq+/qJOoNJL63iYOi/QGeXCsAmoo8ovx6OalenCEGdx62C03h3raPHLCx2wSJdzrGF6VzYtN8TD60LzY1sBxO6RDeUJxem3pXM+SmnkvCWL43UBEXa1JJUc+bzMkCZ3pK+PC52all+P7YT132O7ZGlZEs1Or8D/7e29sdUu2aLYQq8HsN1i/Xvef1GgHJN1AzrewrK5I9Hf6enyhU5QpF0qQ5YlkozkdEg7TaWdruGuWIke/yftcpV2yPJ0YRl4d6zQqlCWAOt1Cb/85RXM5/LVHQ/wzQPUB/ipZzRe0sWkudqqn+foiq8THEJ9mtDA9WLetzRO0l+1MjXbUS5Y1gmSL8ECTdYEUp5drS1yaLhLPDGw2At5+hxYrVaezyhWLreb3gXc+THFhyCoYtDE0HrodTo0oJN+UVRHEKJBVTMWSRCbLKx5mkDMMI7x3KgtwSHyTcoB0yXk9DXPQyFlENeMsg8gQ8qQy9Na0lj7WnJi8HdNudPGXEpJlMpJKVnD4RDefffdWo6h/Lq+vob5fF47hqwyihtP0ClxdXUFv/zlL+t08/kclsslbDab+k5ffhRlU/7WFCXa3nxXV8pZon1EE+sf6iiTHA0p+pHOwWAAk8kEyrKE9XpdH5OfUsIkvkLc6NxFpc/a3rR/cP5DXBwPLRN3L0n00b7BtJIjTAqz0s3nMk6DlseCg9MTw4u8gEfTbrfb+qMIGo5pAdzirav5V3J05eSRxqg2R6XKsdDQRhYgLXwusNDpjIqlONZi/ZGS1Vxmc4es1N6psrkhivOrNk+01d80uRdbGKdktBWP5kCTZAXH24WRDcvo9/swHA6T9z5bcPL0tF+1Y3i19ozpK5Y21YDOaTm6bAwkfFKb8blMKreLNYllruaA5FZtX5B3rItz9hXEYcmdhEXtxAsdi/QdgOLEceIfeyy9Q+B8DfGFdHKnY5WW0lal0e9jlfDRsOpfdshKtEo7N2l+SjPFI9Ek1YnHu3rSI23l9qHhfhzXK7j8hJ2Co8m1qV9m/D7dsB9ouDuyGIA7YsP30DkbHmlMcUl1QZ5BBx/2Ta9XOfWqI4l9x3CVj+oVBbgxkQu8P/1/fPbb3fGR9OzL1HC3LE1D80rlY14/XNIf9DwgOJi505XjwTiA0BEb4g+oicR1C7u2o8Tm4G+CDSdVR6tehOmsV0FI+qOmN0k6R5P10SH0Z45uuQuI6YNd+yWa6J4pvVVag8RwaetTaT2J/ynbTVP9tUm+nLXBrqCr8vZFd045OTyfWi9T2yW+59iKc8u1wJ07Yx/g9QAUvpadJXxQ8a+y0RlL732TjGE5Ru9YfGoC4ApG15OaRtddQxNlah/QhQKkCWKAw6vvIYBFsUoZ3TSlygIxo6nFUNql0iyVN5lM4Lvf/S4Mh0MAALi5uYHr62v47LPPYDabMYOITCPHzR02vV4PLi8v4fz8PMAxGAw85xs6PalcjslP+hxTcLlTRZKHmtMi5gSkeaT5AetAx+1gMDDJ96IoYL1eQ1G4u0bX6zVsNhuYz+fJOnN89MOh4XBY4+N1iuHggF8oS/3EeQAAREcFzYdz6mazqXcBxxZPEt2xhbVUR4mHtLEpHc2aYxjA/IPBoOb1+XwONzc3teOd00T5XnNYWWWURnduemmMcEAHIz+COeYw4U7JnLk8xrsWXSg1/qUv6bUxgXWJjQmKH8cFl6O8DCp3sB6cp3P4sQtILSABbPqlhQd5OtoGPN6qH3fRFoPBAKbTKQDIMq4pSPNqqp3a6gwxXsLytRMamrZlTCZr8i6lt1F6m4A0VqV4jPOdDfKxxUXhnCHckYj5+E5Q34GIvO07ekHYEeriXJjeFNKOWefo8tvAd+DR8vGdxvF7WyFyXLFrI32HrGtDLYzTHNIDgkOW0le9y8c8+20rO2V5Wh7nx3Ped/g06E58u7bgeDkvMQpu29dyFDF1xMbujO3d6n/+rlg8rtjxHeVT//7S6r2K3G5L6PWqo4t7PX+uKApgNEqnDMmVd+OahvlOSffvHJI0L8Xl18NWjp9fOgrYhQNzpPq4/d2wtD05XX5d6BxM49M7YkNcchvzctrCodhHdukIu09gaQdpzk19nCrltTzje4695xD7ctc0pWzJVhwIObhiax2t3tZwyls03lJGDLidyErTocirBwghxQdN1mJU/5DsABhuuUJL4x1L2lx+f3DGPsCdw3K59JwH4/E4mh6NGFzodwUp4Z07iUoG7ENUPjToQmnoCrpot5QAfoAKkF9xlwqOUZzEqPNPmvzov4SbGsRjYFH0aXjK+KfRI73H8tKy+v0+nJ6e1s7Y8XgMk8kEXrx4UcejM4U6DTj9VD5g+9Ly+HFk2Beas0uqQ0yBjSkUWpiE3zfYOLnX6/VqB+Z2u61PP6DtzR0so9EIRqMRfPDBBzAajeDjjz+Gm5sbsQ4SrZQncfcpOresOBDojkyp7pLRWhsbtK6cbxFPrtxF+sbjMZyensJyuax3AEtHT6aUTat8jNHJZQSPk9ojB5bLJazXa5VmyzFaqSNuNeC8ocVLPEAd5ppzmtbJcrdoE/olmS21U+5cyfszRrc2RlK4efukeAzfqaylOwSKoqjx0HSSw2ofuoNkMOPzRMqZpvWlNFciSLqqlDY2tnMB8QyHQ1gsFmo6yZBE5WXsQzsLvl1AroGrC+A6ljTX0D7epbE0xaN+WdzZQI8k9uPRoVTRxx21oQOSxrsqVXlp+eAdJSw7GxEXx+GHO1xF4egsiDMVy/P7RD6umDpAabm8npQ+Jytlh6yjOTzC2dEMHg6ap3qWHMvNnLIuPO2Y5fFhutTaos4RTRcDGw94OYS8VTh3YlbjRt/tSo8irnbI9tfEIwoAAQAASURBVOt00jHF8jyG/26sAWzr52pHbA+KYktw0GOJnSPZb0d8L8m/Xya2Wzge6Tj0aaV8QmUBx+vkRpheSsPLp7SB54jlembJcPFjirnjNCzXlZE6phhYPK83rSdvs9cHHuw27WAwGNS2CgDHa8vlUmxbzvOpNd0DpKGtztymnduu5XZVjhWftO6RbHYPvHj3EFtf7YKHpbUM1ZV43i7XPW3k4WvjjLVUuEsjllRezIAfc0poeWJlxXAeOnC68chIgMr4NBqN6rjUgLMaoiyGwF0Dd0wcAmjtw41dPOyQQaKdhyNoxxo+QAVFUdS76/BdcwACpMebZKDX+isG1nG9S9nJ72adTCYwGo1qgzL+MC11ZlvusdDmEXQq9vv92pHDFRD+npp/UuWl6JMcYUgDvwdzMBjUbSDd6cAXfDgnfPvb34aTkxP41a9+Ve9ojc21Et3oEEdacoHOO9oxwFZI8aAUb5nr0Ol6fHxc75jebDb1kcwpozwNs8wD0pjWaJPGZGyhZ5kvN5tN7bwpiiK4K9aCg9Y11u4WPHxMafiQVhzDEj/SvDhXacfnWiHWX1r/tMFPy7DyfM7in/Yddzpxfsb/2O5i7rzn8sLaHk3mNQ6cdvquOedTMl0yaEhOO6lcHhczyjUBvmjOyUfp5c80jPeLVmeOOxcOYc3By5OdMaX367rcXHlCHRB+eOiMxDDnqK3infM1dET6/U3zIs1eqSA52Nyz5NQM6QrveA3L09/lMsK28cuNsVgsnVxP1xaUTkpjlT52NLHv7JXq7IeXJNzmmOV4KcSHXIrvY3qXXIbUTz6+on6m6Xynqfzs//guWHTESrtjC688zjfueOIqQa9XwHaLjld/ByylnR8RLbUXHbOxtqRjH/kAxy1PB8xx6uL8cC5PaBqKh5Yf0uHnkdLx+sXiXVy4G9hPX97WgTt5/Xr7UIVtt9inrzd0NWffB0itRaR1HQduZ0UbAr0ajgJfk9NwTee6L/bC+wRt2rTt+raLsqUyMV5ba2i819V1XA+we2gqj1NrS8sarykdTdagMT9KCl4bZ+xdgNWo+DorBhyaCMWbmxtYLpdwdHQERVHURw1SQ32/34ejo6P6fkRangZWh82uoUtj1T5BMmS6RVovmEDvw2SoKZKH1D8WfmnCU235EMejpZ+ldpUcdk3BYujGyZHudLLiROAKH8eP/1dXV/AXf/EX8Pbbb8OPfvQjGA6HMJ1O613+6Ixtcw8eTSMdbygpsRanrwSxNqXPOQ5Jmgbv9OTOF/qOu4lxZyc9ani1WsFsNqtxWepTliXMZrO6DPqBQewuVv6MeWl6y7jSjNLIo4iTOtd5e0sKH3UoIM5+vw/T6bRu4/l8Xjv8JFpzHEyx/JJzg0NqLObIKXpcMcUv0cbpo+noBya5jkD8j+3M1GiR+kNalCJ+idfvau6NOQRToC3++X2eEr9r+Gg74BHm/G5Q/OeOb+0+al7+Ptu5LKudCsgnSI+kc1Ge5TKD0s3nRIzX7lDFuKIovDG2C8D6SPfFxuZEjUckHkOejc23+x5LlHfblp3Dq9ywJenDbenJdcRWaZwToSwLwGm2ursSed7tKOUOT6gdpO4d01NnLnV+QL3zjeN3dLvxRp291Cnpzx+8PJrOOcR8+mm9XB9Ijt2K1lvqAB1i1LHmO8iwMohDS+fw++XTOmI7aY5jIPWjca4tkRaehqbzw0sWFx4FLeWn0I6VeWbZ2c3rSsNlGUYdsvEfPxWneu6T/x70+/SYYpceoIBezzl0OW2uT/w7rCu6t7d6ftW/eNxxtVO2vK0D/hfkXXIsghfOf7S9Q6ejozXEUwZ4aR0cTj7u/XBM78ZpiNsP47theR2144Wd/SEWvt3yNsJwlI+8bVz5220Jn356DZeXK1itmq0DH+DwwaL/8zHPr4bTcKScaA+wf5DWTKk0PK6Nc6xrsPhRJDtWzH77wKOvF2jru7ZX2bTlE2mt3RQenLEgf4HRFKRFvjahaR0pGdm1ifIQhU7KkK8ZtqUfzTsYDGC9XgeC2WI4iMWljDHW/rgr0Gjp2qBiMeJbDVua8VACboCM4ZVobpL2LseV1fi8C7xa2lxDIXcO0fBcaGIM506+JrJSMnRz/Pi/Wq3gyy+/hF6vB6vVCvr9fr0rMVYfLc4ikywLpS74OKbw8j7OkTn0Hl2pPmhIWq1Wtczv9/swHo9hNBrB9fV1UBbvaz62l8tlvRDVnF4az0pyoomzm/MVlqntcLY4GjTZXBSF5/i26hxSmljamHNDCos5V1J5JT7R+C6GT2pbSW7F5FiOLsD7ldOei4MC5SPexzmyL1dP4s7YnPyUPnyWZAov0zo/clwxnPTfom+n6EiNhxikxoCVhljZsXFtrVvTeTVGT1mW3pHjGq2UDgtuaexJZe9Cr7f0UZu2lMY7gqU+OI4tZbfRj6VxpqelebAOzolaFFRWU+ein5+GV/1LnYglgLCDj9Jb0eicuvTdOU/De1UpbZwOXkeJZlf3QqwbbzqpDVL1c/n8dLQOevlY97AO2Lbxo4sxjTSv8HRSnOMJLQ3CbpZy8jHWEi3p8nkC59Sk8xiA+6+e/R2veJ+su1c23EFb0VqQcsq6f11fuJ2vctmcTqkOYTtYAWmh+WiYS5c+wljCiXk1vLcp6jj38/GG9NCyywi9YZyLp3Sh7OO0WPVNgMvLFVxcrEzpkYa7tH3EoC1dh1y3HMB6pNYxEtC1Lte9OR6fH2WdiZa/C90pF16XPgbIs7em1qxt1iNa2XcNmp2Hv+fYpB6gPVhlUVOcVj7n+SRbS47slGhK2bVy7CEPztgW0GaQl2UJw+HQJHABIHp8xOsy+dBdSwCyobvpTq+2EBvkTWAXAmsXIE14NO4QQXNmxOhtY2R6ABkk4yZfAOwDdqWM4VdZFO9sNoPf/OY3MJ1O4fj4uHYY3tzcwGKxgKOjo9oxlksPr4ekhEhta3WUSIprTMm10M/7eLPZwHK5rB3Vk8kEttttvXMzRufp6Sk8ffoUnjx5AtvtFs7Pz2Gz2cB6vfYcrBJfYdzV1RWMx2OYTqfegjRliNfkf85x05JCifTirnPc8Sw51ixQFNUR2fP5HH7+85/D0dERHB8fw3Q6hcFgADc3N8HJErzufIGHHxRodZUU4pRDqWvIle20fVN0UYdjURTeO+0jikvqa67bIO9qH5dhODpK6DHnGt27kq0aPol2S99zAw7KRH4vuSTjUgtwDKM/PLq7qa7O65CDC/V8HNtWmTEcDuGtt96C7XYLi8Wivv+Z1q9pfTQjG+KmZWj3YwOA91FLF4C7YmM7ru3G6LQBahcyicsE+q+1d5v+pHjwX1srSrRp9ABAtB/agja/4a6v6lftjC0KOmfij+6OBUDHKJCdelTOVP/OocGPJ3a4nOMV45BM+o648LkKd0f/hmHUgRe7IxbYe+HV39GFdXXtU/3TNnVp3DuwfBIuEMqHIE+VJn10sdSGlG4SIqaj6f04rpd5byqeNuDKcG3m11l3wldtSR2YRd2GmhMWf/QuWHcMMf73yZ2x6WOKKW0VXbIj0O2ELQMcPt3cNsDbXdr5yXeGlgEdbjy4+crRB14YL4eXSetG04ThUr5YupKVJ7/HysBdrn5bVO/V7li/vfiuWA5h+9ugazl/SPbJQ6GjKWj6TBO9AdfhMf0aw1K2z7Z28C775b738T5Aa/Nd2XO7wHtf7OWvK1jG6V2MPW6z1NaoXdDWdg2ZShd1xu7baN5GMLehUVu4xvCnJsAcejhDaYJHoim33vvuU6lsCtxAmcrfVZvHwKLctGlHy8SSwr/PyagLA1GusdyCt4lRzgoaTYe0uLgLyHGyWOSqFM8XGlr+WD9Ii4wUUJ6i/5pslgyVm80Gzs/PYbvdwmAwqB1f/GhEqWxOv9QO1jbF/LljSsMnjTcqjzUHCc2L/9KpB1oZ3MGFO2On02l9bD29LzRVN3ocMO9bXvcmyqfWxyn5h+0izXG87bBsiX4at1gsoN/v13cD4dGtMRkWi+eLdBpmbbc27Z2bjoNmbMjBGxsbTehK6TS7nOM00OZWTRZz/dUKUtqUnMzBHRsbMVqo7MT+iY03DZoYEPDDh/V6DYPBAJ4+fQqbzQaur6/h+vq6dt5bcFn0qthYj43xpuWl8pRlKd4jbsFhAdqvu4KU/MvRYXYl6yRadq3bajqENo/SpOWtcwGT4rsbm87pCeyI36psmt93it6mEGiQnWsujjo8yhqHX5aflu5CrdpCOq7Y5Yvho+X6ZQQ1EetnwVWVLx9bzNtIx41zvV+/sHxsByDtEuLkOKR4xBWma8/ftAxtV7GWz8XRRAX5L4Q0BYmTd8vafr1b3FQ35/Xxxw+QXbI+LfgszaXhuz9OghxBXv8/dMA6vCV7dzj995AuEBy3EnBapHo4eSSHSXSijJPyVM/SccypOvn12wXkzrex8K7mYctaja/vm6w9Dgly25CuowH8qym0dciu7Yz7avema7O7hpx1RhObaO56xmr/k/Q8LX3KfsjtWLm25EPox/sOTWwzMRt6rszKjW/jN2lSZmqtb7GRRJ2x+56g9l1eE8OpBYqiMJ3jjkcm0ovUNdAMMLltdhdKh9aenBZUDqS2Q+j6S3yNln0L8K6V013BPuizGoViygE39ucK7ViZhwq7NqZ13fe7WgzFFEFeXsxAyZ2NXNHAuOFwWIcvFgv4xS9+Ad/+9rfh8ePHQbl472mqLS0OrX0CdwIC2BRs/KcyHZ2hNI/UH3jPLsYtFgu4ubmB4+Nj6Pf78OTJE3j16hX85Cc/qZ20dFcVd14intVqVTs2kK5UnXIcbpZ5mvMAdw7jbjTqmMC68bt2JUC9YrVawddffw1HR0cwHo9rRzjtj7Iso+0Qqw+lBfHSXcq5jpWugTrUqJMNwK9rSsHW5ABPKxk22i4ocpy1Gn1WvLkL+yYOOAmQLzebDfR6PRgMBqr8jd3VTNNoRibeVwgxvRN5xHpPNK4BiqK6rxnLwnFJZRMF3LF/fn4Ojx49gn//7/89rFYreP78OXz66afw85//HObzefa4ShlAqLGSy+5drZM4Lmxf5IHYSQcc+J2/GtC727nM3QU4Z2H66GeNT5uUJQGfz3j/WgwpTUEyhmv4yxJgs6G7Y92Oz+q5uL0/tgorb50k220BOIQxDB1G7i7ZKg91QmHa6p/eC+vSuDtiHU50VCE+2naurnRXKyZy4a5859hDeioc/NnRQkqs48OyXBo/zLW/zy7+/bNIH8Xrtwt3UsUcfdj3RR1P60/zhc4x3sYgAmenMF0TmSU7hh3+sD/99La1bFFgPu5Axf+e917thA13ykrPFe7QGVvR68ZFNSWVQB3wbjcvzaff2UvbhqbB99jPpfN3h/rxpZheLlfbHQtBOMftnqUji/00ADwt3/GL65EwzMeFO1+B5MGds2X9zuvr17UkdOXBrufDfQHXg4fDIfT7/bptFouF14avE8TWHv1+37NXIOCJJLnOOSvsyzn2uvBvDCS7SZO8EnTVNyn7QQ4URQGj0ciz36xW8aPX74IPvgm8t2/IbdOu7chd4LPieO2OKW478GOGh5RBIxWu4ZWcB02FbI4BzYIz10mpGQM0w5+UntbfYtjuCtqU2YVzxdJuu6i7hjNV9q6UqpxyLE41azn3CXLkUSyPpRwLxAx52uIgB7eFF1OyJ2Vsj73TMK1sfF6v13B9fQ0vX76E+Xxe5+n1ep4TssnYTjmNUnm7GLOazI7Rx3nPoqyjwwLjLy8v4ezsDJbLZb1DjH/dy8tFGAwGXjq6w4wvbjRZYnVSaGCdQyT8lL9zxjG24WazqRcwlnnOwv8SDXg/7Wg0gu12G5SZgl3O7dQRkHJcaBCTuxqPa/1F+VuTlZIOps2PNG2Kp5tATEbGxrBEM6Wt1+vBeDyG9XoNV1dXxJgY8j/Pa6U3pR/wfsstSwKU9Y8ePYKiKGqZg6clSDTQjxuKojpyfDAYwMnJCUwmE09n1vRnrENM56ZpNONObLzvQvdL8RAHTo9Fb6fzcAw/H48pPo6BRTfpCrR2oMDlStP5bFcwn2/g4mIFg0EPBgP8SIiOS/+IYZ+HS6COIgwuS99BhvlijjKMp8cMo7OW0kF35HJ8krMWy0d6XfvrNPtzhHPcUlorHnPOzLRDVpZ1iJ86TSleyVErlSG1ObZJ9e7wS23D8Vbhch6eN5YmH/yyNfxSG7kwCzEFOKdu4YUXBdQ/dNa6fxdGw92zrhv4Q56+0B2xVl3T/1Vh1DFY1unoM77TfKkykF6anuIK08pp/PDQcUvjXXmyc9alLdUy6L+fnpcd3zUrQSqtRc630b9z7Ga7mPe0MqnORefH+2z/QZB03Fj9yrL0rqmR8DSlw2rP2KW+kWsf2bVOuwuI2ViaglUmWPu467ak8xd+UIkgXRd2F2P7dZAndwGSjYNDEzt0U3wx+1YuPslWw+U0wkE5Y3OMjF1BzsSQmlwo5AgGy+L5LmBf/cEnkpRB4VCFXmyisrZlV4bTruB1UFytyhjA/VbIdpEnll/j6V0ouJZx0cWCQhuz9J5GySlRlqXn7H3+/Dm8ePGiTjscDmsjsIXOfc+FucpOE0ckzxPbzVQU1S6p5XJZG85/85vfwNnZGaATa7FY1HfylqW/C5MqVEVRwHQ6BYBqp+lqtaqd5ADhnRKSc63rscPDJAVNM+Kn5kepTfHOSQAInBGUHu6oidEl1Ws4HMJoNILT01NYLpdweXkJAOAtnvYN/DSN2J2rEkj6CY2j4bhQRB6N7b7jx3VzwHwUH5VBGMbp4LRLdciBNguclB6MO9o/+OADuL6+rp2xsXbR9G1uaLPO7Xz88/HFd41bAI1eRVHA97//fZhOp3BxcQHX19fw7Nmzul95nfiu9+12C8PhEN58881ahnHQZLLkbOXjUJO/nLfQiYlxu9SbUn3HZXVO2bjrWjJISvh52U0hZSyW4nJ1gBwnLPJfSga1BdkBFKfz5cslvHq1hOGwB5NJ39sZS50M6PDw745FpyhNU3jpnKOEjhsJh78LFPHRMHx21UNcfLeqXybfBeuccNQJyh2inCaKD7wyKS0++GFSPlcnnPulXcIgto8rAxgtro0oHvceOlmlvOA59CjEHN7NwceJCJFvaDranz5f0DBOs//zw/l4rX494RnvhvXvlMW5JLwzNlZf2mdIl8RHULeBPCap7ohzEfIwfy6DfA6vv4PU9X94xLDDCSwPBDhDumh/SjhCRyyth4TL/4Vp3I5XmiZ8pycE0DScVt4v2213c/IhQ2w+2Ww29ZoPoSgKGI/Hnj7D4w8ZNP2H662SHoPt0QVI9hJe9qG3JYVDs71a4C78JW1twm1tW/1+v17HlGUJNzc3qj3jAQ4fsD+lzTJoA5Sgbf9KY33XPBNbbx2UM/YQBk8TR0Jq8Z4SPlLnoDKNMBgMvC+8OG7NWCjRmTPpcMGLRvJdANIVM4zx9BLE6iYZ3WPpKD0cb65RiBuBJT6JvWu071KB4MoeB66ANXXWdAGx9rJC106X+6bc5UCuM6OJ/NEM7xiXK8ti+Hh5miNMowvlIu7ClOJTTrRdL2Jy8UpyMAdy5icpLy336uoKVqsVoKNgvV7XR/3jvMQNTtvttnb4oBNys9nAZDKBm5sbb+dy7pzIIad9UnyYk1bLJ6Wx1jMl9yleCSddMFGcdwFII/IJ5QMum2Ltqs0viAPviZ5Op/Xx2hcXF7BcLgNZJeFKLXI5jRJOKS+my72P1apfxRxImgyl43Sz2cCrV69gNBrBj370I1gsFjCbzeDy8hJubm4CByWvf4yWVP2ccVPWbbRyLVCWJfT7fXj33Xfh9PQUvv76a3j16hV8/vnnIr0ATkfE55ubm1rn32w2Iq0x/VTjB6wbNWrw9Njux8fHAFAdD4bjpmu9huLjznFOO6U3lkaDlI6qybQmYNWPpfp0KS+1OYTzdIy/uio3BdxZ4p6RPtyN6pxHVTp5RyyQY3wxLb4D22VL/wvmAOVx+E7TuXr7ca4dZDp93C6N/+zodfn8eFo3TB860sKdm76sC52IDh8EtEjtgf1YPfvtK7cl9rPfhrxtpDhXJy+Fki4PZBHg14ums5cnJeSOWfm56ie3g9a9FwyHC/dlOy0b+cPnSw50bLhxWAJ4DlR8p2lLAMGBSn8UryvLd6QirTwfMOeoX67Lz+vF0/h5aR1Den36OG3hu5RHpsenTS/b7xMJz/n5Eq6u1rBc+tfBvG6QsvXxur/33nswnU7h+fPnnpEf7auHbK+J9WMO3bF1pmWdb7EDcrxN6Nwl3IcxYbVjp9K2AW0NIdHSlAc1/L1eDyaTSf0BJcJms0l+THkf+vd1A8saWfqwmZ8GhfH8yrEY3i5B4mNJhlloyZF9B+WMRbiLhrcYnlKdZClHAnpWP8eN4cPhEMqy+gqkaTlNoKkRnoNVYFvu2uXGkl3wSYre3DI1Wps4KboGjTaqnO2DtpSBbRc0NOVvTTjvS0mKQVdj1gqxsrjDImWoB7DJf5z46Z2ilkm0LP0drJrDJWdhQo36vV4PhsNhwAu4wzNXUdznXBiDHKWcg/bxjtZf1LmE7dvr9eD8/BzKstoBi2m0+yVp2b1eD46OjoK7cp4/fw7z+byuW9eLiS4g5szidMRw0LxNHEscKL9Lc5jkjL1r6Pf7MBgMYDwew2KxqO/yTOl+qbbCPtpsNt6RsqPRCObzucdjFJ8VJIeJNs9Iaagxtuv5yLLYiM2VRVHAarWCzz//HL7zne/Av/t3/w5evnwJn332GfzqV7+Cq6srGAwG0O/3k1/08wVdii5My3fo4/xA2yu1A1mDXq8HH330Ebzzzjvw7NkzGI1G8OMf/1iliX4gsNls4OLiAiaTCQyHQ1iv154jVJtPaRjXp3l63CWKd5nz+OFwCE+fPoWyLOHVq1f13WIcuuItiU9Txr9c/BbYp64p1XUf830T43Mbuui8E8PvHBHVHYtuZyzubg13uTqHagmSU6ks0bEJdbyfxsUBc3BSvPSoYprWr4N/fDHSTtMVzJkJynHFWD/nPPYdpRQf0ut0Ulo3jUY/n+uD0KnKjy1GPFUa2WGN9CNeHk/fKT7E6bcXkDgIwE9TqulIjgQOHXyaXZlhm/r1rNpWv4MWw7kcpo5V7mBN/YA5eR1vcB72/908g3XDerhw+ec7Zl2Yr3+6H3jPcpk+fhrm2t7vF5oW6dbSSHSGdMR2vvL6S/+xsOrd3Smrt1UcqjTPny/gq6/mqcSvJcTsWb/7u78L77zzDvyP//E/4OrqCgDc6Sz0KpdDBqt+22ZtR3FY9C/JBpZr69gF3HX5VujCZreLtd1d9mG/34fT09NgDUM/UOXA128PsHug9k8ezt8lm5Dm82kii9v0ecre3JUfTMNzkM5YabKxNoTFOJST12KMb2pcw2frXYZS2lwG4QablNGjC0gxOX/PrZPWVynhkAqzCJeYgdVSl121OcXdxHDvL8xtNFLniYQnRUOq3VO0dGlsTk0u2jN/R0cRQDPjVxPYpxKSKivmQKBglbddTrb8qyuezrro4bTT3U0Y35XxuCuloA0NUliT+uXyA4bhV5K8nTV6yrL0jjtGR6GmGGlhkkyMLT5pv2tyMCZHeHjOXE3jqcOUO8Yp7tgY1PQqLu9x5/JsNqsdPDztvgHLxQ8ljo6OYLvd1k5SCtTpRndco5OMtiV1HNF8/X4fRqMRTCaT4CjanPnLMhdrMofHpyCWrolOkKNzIIzHY3j33XehLEt48eIFTCYTGI/HUJbuCPJY2RJ/xfQPHjYejwEA6p3MEt4YP2t04Zfc0+m0vvdVS7taraAoKifpYrGA//t//2999Pfz589rZyiWrdFG20qiEU8MwCOwAdyHLfRjF6qz9Pt9b3cuXY90qdfEeIe2ndSXKeDG7Zx8Xckuiw7cBFK8j2ExYzXPG0trlQEW2RKm047+9B2xFQ3hEcM+abID18VhnSmOyjGI+Cra/HfHExUNwJy41b+/k9WVzctw4VVe+gykTHwGglff6aq/+7RhG/C0LqxKX9VBcrxim8d2EXNZ7MfTMMTpwjn/QQAaO+rsJ63ZvZxaxrrdKf/Qevt9oce5cgryjPhceFFger7DVXqWaI0DHRf+uCtZWMxRGHey0rFMy3SyhqeHIC+An9anndIf1s0PC3fZcnlG28PHKztbfdp0uuS2kd7ROavR6MoL8Xc3H6egzdrPkte61hwMBh7e1WoFb7/9NnznO9+p07z55pv1M36k2+/3YTgcwnK5hMVioa4L24Kmz0ggrcs0fDn6hFWPaaK/a/ktOvIugOsW1rrHaNzVGjYXZ2xdYylL4x1KB/c15JSZY4uNjQG83gsA6pPQyrL0TvRJ1eMQ4a5sIbsA63yD61peb34KLEC1Zl4sFlkyMxea4qE8J/G5tmaieSQ4SGcsgE9000brwmDcNWiGAIk2KSy1c9RS564m2hQOiyKgGQxSfR5L07Z+Ei4tzkKnNqk1Aam9uqxv19CF4LSODSwvZUiyTtypMlL5+CRDJ637pjxoYJ0sY4Y+CaemzEtjzmKUTfFAbFzF8tEw7Gvq8LLQloIu5sIU5BileZ5dKpY41mgZ1Bmr9QfnNzxiE/OjU02T4VqYddxaFyOW+TOm3MXy8PpJclGKa9OX6/W6dnTirmRJ39knYPnobJpMJt6dwZJsoveucZ7n9ZB2Vg6HQ+9eqpQzQ5pT8Dm2KzOli2lGnZTBIfau0SJBjiFmOBzCkydP4Pr6GsbjMYxGIxiNRrBYLGCz2dQLcKtcpuGxDx5p+QBQLwK5I92iZ0myB3e0Yn0k+jAPfsDQ6/VgtVrBJ598UvMT7tyQFoPS/BCbZ5Ef8N5QzIsfIGA83nEjxUn1leqktVMKYvoXTZNrPOXzRqpfU+E5YyFVb+vaJ1VurBx+F7DUflyPzpXdqXVT7J2WWwbOC7pzFoA6JKkzCqtP41wefkwx1PEuL3WS+vgQDz7LwHenujB8pk5fTjvSzR2f/NnR1d4h6+ONHVtMaZdo5mMUWFpu1HUtRFnBD+dzEuchUMEgapT8PGNYJ9qntH8kGuS4QnimOgC+F0LagsRj+oKlD/PJ7VGCGwt0DLgx4/4lByJ3woL4DN59srI+4o9LGuc7RGlafKZ1o+UDc+LKeCS6/R8Q5ywvw/+FNDu5JrWNX1+tTSmtnG4exsEy5+4Kmuj+OesdALeuA3DG/CdPnsC//Jf/sk4zm81gNpvVeY+Pj2s9L3b06a5AW0/m6OdS/lhaPt/ztUEOaPYNKuPvku8otNVHUzi6BktZOW2bwhfToy1rxy7alwKu13F8ojMW4yx4D4X3ONxXey+H3PaVnLHSfbGW9bqFDos8pGlz5W7MVpI7Tg7WGXvfmDXHQMTTS8Y2el42Be2S49SgyFVsDkmIUYOuBlbjeSpPG+Bf60igKV+pfBi/DwfIoUNTRbWrPFrbo+EV8VFFAsAZ+KlB9ZvahxJIC4SUs4wbnGPjIjbW2i4adtmPh8QjfPFF+4c7pZqCqqzcLrbxzk8ca9wRIS0QLy4u6uOoVqtV/ePp29DIF6CWhTXGd93HvF+k8Bg9baAsS7i6utqbDpFqP+roit13T+UN7hrEI8fRsRwroyiqI3cvLy8BAOpdjKmTT2JzSb/fh5OTkzrNcrms5w+uE0lOKq3MLqEN/6LMkPpovV7Dzc1N3R8xoE7CHNlOZcfJyUnNuwCh3inhoTxTlmW945Tuqv7Vr34F5+fn0Ov14Ouvv04u6vgzXwto82SKz2g9pPZG+un7ZrOpd5BL6wxNL2/jvOM4Y3qABLE5aL1ei3IA8aNBlubFvuV32XZlvKV8ldNuSBM+x9Lx+uC/5hjtct3E52jbWrVyQGy31VHF6AwMf5iugF7POVbBO2rVd7z6O2R9p0zoFA3x+I5JPx0wx2+VJtz9iuGhc8ynw3d80vpVaanD1+6QBfB3xLoyad0w3C/D5UE8frgrh+J07Rw6ZV1Y6CjkeWk7UTb02yWEFMvapsSwTlXeEsK2o2W7PvfLDI8rbjs1Yz/7YZQHyjodxnHH4HZb1v84H1RhWxK39d5d+vCZ/txOT323rRunpVcvN6biDk5XLzk95W+fFu055pxN1SeFX2p7uD2e3Zdz6b4v4cWL6njiq6v4lQ6HAl0460ajEfR6PVgsFjCdTuEP/uAP6usXfvCDH8C/+Tf/BpbLZT33z2Yz+Ou//mu4uLjoqBZxQN2MzrdUr4vZBJuWt8v0KdjXuu8B7KDpeRT4GqttP3K9NmX7TvHhZrPx7nmm+R6OJr4b6LK96YaJmJ2mLTRZ27QdC3ztKMHBOmN3ASkvudWoZDH2a2VIIC3ENaOStIDWDCIcZ0ogUnzWQdbVYORt0NYxouXPNXqknKXcwMXbLma8kiZIq+F+V5OOZhTMgV0qg234IsUTlvwxYY0KNgDUxku+u0Yq8z4pEJaJLKaAYXxOP2pyMEUPpSmFT+pbaZxK+CgtFqU3h9ZDB2pktSpQqXlYi6f3kKJBCNNzfuB9t1gs6vzozMWx2mQsSmNZM6qn5hAN2hjEaXtY6kdpT6W3pKX3feyar2P46ZjkjiaahgM6/aljzULHdruFxWJR797G442bAM4fdIdtWboPfmgfaPIwpVPw+KbzqyWfJoudsbj0juFF4xkeVUXTtqWP4ymKAkajUeD0lPQ7Cbc03jD9y5cvYblcwng8hsvLy2w9BGVdTO9LrQF4H9MxQdsf3ym+1WpVy0xJTy9Lt4u47SKa94mGz+LA1PqKHulN11TSOKDppLIlutvOJ1IdLPI+NgYlmnL17lj6lO4UaxO5jujQlJwbBXt2zsDy1vniypXpd/T4zlcXFx7f68eVtzRKO2AlR2gpluVwy7tNq3csK+5ow7Rph6z/T7CB7CCUd3/SevFwv15Qt2cYT8PQwRq2k8R6Uhv6ILe3BHlTSthXWIbkeKXtzctDng3LL255m0cU4Ncr3B1Ly8WyJBrcGKLjLLXLNbUzVsOFY6cEEJ2g4Y/SSPuWjnP3LsUDKSvU+aSySOuwf4eL0+/ooI5eXh/NgazV2cfJ6Wc9XT/NZmv4+uuFkm43kFrPxfI01ecoHtTRUdd+7733YDKZAADAhx9+CB988AHM5/PakXN9fe2dUJIzX8d0LC28KJwzlurxqOdy/E3bw9IPWrtb7MBN1gZt+7crsOpRuevzQ6ibBhZbFOcBrtfH1oa5doWYjivxIpZPHXSazabL0ycfYHegrckAoN5ggc8AMg9rci7X9sHBalPOAbrWSu32vTfO2EMXfFagi38OXQuQ+9he1n62Lejj5aDy1tSBIpWZ6tdUH6cEwr76tA0vxvowJiC7GOO5AjiFCyDdFlSxRqPuo0ePAuX78vKyvvMAQD+KoW073IWs7Kq8GG/QZ+nu7Db9To9gzIG7kLF3ORdypwj94ldaXHJoYnTGfun3+/WdhjSOy3CuqFNlDe9kREN/zMmTo5whDn6sbayuUllaWmm+a2qg522i5aVl8TblOLrkx13xNy7m8NhbHoflYt0k5R7po+80fr1ew/X1NSwWC+j1erUBiDuBrbpDr9eD4+NjmEwmcHJyAl999RUsFouok0oqJ1YfjN+nTOG8M5lMYLlcwk9+8hN49eoVPH/+HG5ubmo6cbzGIJd+xIeOdzxaG2my7PTH8Y66JB7DVJZl/fzpp596dUjt8pXqZTGKSQtY/ACF6h0UD/1AAe+2xXR4EgH2Ax8jRVHUXzO//fbbMBgM4Le//S1sNpv6yOeudTGKMyUzJRwxgxIdI5LRkp56gkbgfYyZ1NxI01jnKsnwJuG2GGljbdBUrhQF6tVoFCwAh3+1A9Y/drgi3z9quJqPCwAI07u0PC862vxdthimvYf/wMK8VrnlRfDi/Z2y3MlL8VD8qbRaGMcBNQ2u3hjm8yCWU9TOvZI8FyyOO2WrNDTeL4fShnnlo3UpW8lsz+c7KQ3Pb+PVcFdz2Af4ju1XjQOXjzpuOf3Su+PtkqRB3qb/bocpAHg7y32cdMfq9vaf7ob1f5tNtRO2+nfv/k/eLUt3zNJy5R8Ez45eWm8+/uNpXDuGaWib03heRkiL5T90PuMOWJ6GhrvnkLl9fvB/hw587miqI4xGI+/KGQT60S6uS2m51HagXSmE6SmtOfonjneqI1jnzK4hpS9p0KUtrWvgR5tS3WxfcJ/s6zFatY+NNd24SdmWvJyG7XYLr169qsPpB94AUK9VDpVHv2lA5aNm2+Yf6dOPaDD/crnM/qhXSt/GptFUZraBe+OM3UWj3JUwlRa5EuNIhgOL8TQW31Rw5TC2payUYbANaPmlAdbVoIsZaHm8ZpClcbvmd1nBb/+VYioOy9CMPzwtpzdFHx8jVkWA55Fo0PqWlzscDuHk5AQmkwlMp1O4uLiA2WxWL3qlcjS8TaBL3mkjNyxGRCuOGL4YX1vHvMWgKMnntmMmVXYX6S0Q43PJ+Bobv03KlMKpY4y+x8aNxC+UNvoBDu6Q4nksckyrA5dvljaJyb0UDbF+S5VFZZbkfLDgaiJrrTR2AXy+xXs3ed9rupblCgg+t5dlGSwceTmaTNHk1HA4hOl0Wju5tDpq9Ek6R9P+0sZArl7FeWe5XMLz58/h4uICrq6u6vtTm9KXUzc02tFdkzljWOpPfEcnL4bhruk2cyotQ4vDeGpsscgvjhuNHtJdowjD4bDebdLE8KLFazJdm7tz+5zmSc1pu3C+SjRo/NeFHkt1FknmS/qzhDunnSl+i8xxtPjOEKh3oHFHrORYDe9TpukLwTkV0u0ceJhWeye5QHfo0bL9+2OpY8+VEduRymn1nX8yHXoY5pPy+2XrNFW0+/j8uLAd/DpI9arSV+FcdvlpU0PTwrL8blqtLx1dhRdG247Xx/ouhbtneZczTYdjAx3rbhzwdL4D1OYozXGq+o5hTh/9+W0bdhRPJ+UL20p+d2G+EzekLXTKamXwPtLycxnqp5EcuGEdpfpa0u4LLOsnbe6xAuaTrgZDfKvVCubzOVxeXsJisaiPKr6+vq4/6KU77SSDvjQXa3Rqa1IpPBdHan1uBYtOa+mPlM0lZvPJ1WMkelGvteLT8Frj7hOk2k4KS+m1TXT6trYBPGUK8fK1ONdVH2B/YOlbiafoSWFSPqvNhdKQI0st+HgYl+FWuWjBT+EgnbGaMN83aJOHlT5tIm4DaKBCg85dQRMDSBOlqw10YRSylpMyZlPDADoCpPxdGbR3CYcwNjVoMlatxiH6PBwOvaP56D2wJycn8KMf/Qj+8A//EP7tv/238F//63+FP//zPw9w4hje5fn4rwtox1ZYITVxt8G5S7m267lQwq+FdV1uLFwztgP4d5vQ9HRxzr+aRBy4CKeymDrRrG2du5ihtEr5uHOs7UIj1r60vpKy2QS4g2ZXMq3JeKDtulwu4dWrVwAAwdGrZekft4oLA2qwiek9kuFGGkc5iwdckE4mE+/+Wqlszkt8EauNrbvWN7bbLSyXS3jx4gX81V/9VW1E6/V6MBqNoCzLetw25VNpRz+Ab5Cez+dQluGpCxw0GnCnPR8D4/HYC2t6hHfMkCY53gDAO2pbO54X32ML7LIs6/uPpfLx1IKu58K2RkMtH8cbM8TiXPKtb30LHj16BACVHPn1r39d73TexRyN/DQajWCz2TT+OEGCoihq5znVraQd1DQPwj5kBu7C22zw/uUqvNej98i644wBqFO2ALh1im231BFFjz+G2/jKcVXcOvwQl6unw4XveBwwj/chjNPuj/XzAAnH8rhDQMov7ZCFII0Uhm0Zp4WH+3FFATVd7rlgcZi2BJ+FYneuAqlvGEedxhaIDaEQh1xXR5fWt7SOvA38PqVl4jOdlzDc/8kOz+22vB0fWwDoQVHg+EY+BIIv3BlbfZBEd79u6l2weHJCFUfD5Z20fIcs/dd/ro3oOKXtRMNoXXjdsP/8NuP4wzLkMEtcfEctPrudwlC/03TuvlgX7tfN50tXn8N0TnAH7D5gNpvBZ599Bi9fvoTPP/8cXr58CRcXF/Cb3/wGzs/P4fLyEvr9Ptzc3Hg6tXayEdprcIxouj8Pk8LpVRyptDH8+wZqw9Rgl/xHbd5dt8chjpuuILZukMLpyWMWsPJ+zMnGZRc+8xOs9q2DPoAOkk2Vrq0poF2F81ZOH2r2EUkWx06f0ubJXa9ZU/hFj14Tg1eXYDVs7opGijvWgCmDdcygrOWxAjcepGjRmK+JYTMFuxCSqX6QBEMMtPaSjFAxeqT20NrVajzax9jT6M5JH6tPrgKQKn+XEDNIxxQNbZHR6/VgPB5DWZYwm83g7bffhn/+z/85/OIXv4CLiwsAqMYv7phBo1u/3zd/FZQCbUHRFprgaDvh4niiYzw1xnLK5/14KMZIXuauIFWXGC9ZFqWWslLyIgWpuazJHBHDJb1TJS9Hf6DyJNY+uW3TRum08rrV0BIbr23lQ04+NKZwGS7RCwCi4cVKG9ZZctJq+hnGoWEIoHL8LBYLmM/nHu05YyZ3brfgsspfKy2bzQZubm7qOTFloOLl0vGdGk8STfQ4u6bjRupjPn81hRQOaixzhtz4l8ZcZsXkTEq+8h/it4A2j1h4zNq2nG81XV/ju0ePHsGTJ0+gKAq4ubmB3/zmN+rc2JV+MBqN4OnTpzCbzeDy8tI7KjoGUvvz+Y8e5Yi/9XotHs+do/ukdAKpfWRDSwmbDXccAdCdrTTMlS3tMvWdcGUph4F3H6hz6lb0OdyY169GFZ+6t5XSRct1fcZpR7x+XIW7inO4+A5ZR5cEtB7SvbYVDn8nK8Xt20r89sY2xDYL6+zTWIXJO2Z5m/lx1BgIal05vhSE5WHGsL7577RNsY2kvqN19Mev4326+7QM4otCbns3P4TOUnSmascM0zD/F9LlP2u7Qd070kjzOtpl57XL4/qJ4g16sqTtEMSK6aW2p30S1t2vB6ff7yuOk3+sINcBy18ut3B1tYbFQv8IMndOTuFxdKRluWWdkMLLgX8oib/ZbAYAUNtTrq+v4eXLl/DVV1/Bixcv4Pr62sMRK0vTdS1tifTQtFQ3i+G1QFc6Rk75OfpATn9a6sJPlYutKR/ADjEdMQaxdYLGH9Zxw59T6/QUTQ+wf4jZOzBeWz9JYVZZ2cWapS004UPRGXsfGHqXNFLcOQYhDpZFMy0nR7DQL0bwzqtchuqqDTnTtxHkVkgZVnLx0PdcpbAJ5BpT9wFdGLrvGprygTWfZHDUdtJ88skn8LOf/Qz+w3/4D/Cf//N/hj/90z+FX/3qVwAAcHFxAX/1V39V3ymIRxovFovgiMsHqID2Ed/lQ/8B8nmR4kgtmDhwx8EhjIO2IDkQJGM1Gm4A8ndDWucKDvSeQx7O5+smzgFp8WAByQETS0vjcQ7X7qnkC/sU3RpdUpwFmhgJrH27r/kP24HvYMQ43k7c8RHTNSw6Q1EUop7mG/hcHDpLzs7O6nni+vq6/kKfykCtvhJtGn1dAX7BnvuFdVk6R/loNFLHeQoHQFj32GIQ43DeRV6gOwa5IShFA8fb1kEnLUQxTLrvGAHv0qIfFUiyG8NjXxTTMcPrQnfgxtLlAO3DHD6wtLU0J0jjhT6/99578OGHH8JoNIKLiwv4yU9+EtxfjtC03rzsJ0+ewL/+1/8afvOb38BPf/pTmM1msFgsgjvTUjKKy+SiKGA8Htdh2Gfr9dqrE51TLfWzrmEt65/NpoTVagObDc6NSBPmA6BHFkPtSHWOvaoMfzesi6MOEP++WYorFQficbWUFt/JCp5zlH/47Rx0SFdVz5I9YxtyfA6n3xVhGh9HmK4oHM10l6cfLtHjnH+OPgTK36EjTNoxq6WleGrqg/J0KBKOW30Iy+1P+8mnGeP5zlnqFPR1AH7/q+P5Eno9uN0BizK8Ci8K3AG7haLoQVlyfdiXdxR3uDOW/uMO2U2wOxZ3xpal2w1b3fNMnbnuPlpaJzceNWcubR8+fvVdrth3Wnpajuvn1K5WIHj9H73bVf7HfiqFZ7czttoRi7tnebmUGTk9Jbx6tYSf/vQiwrN3B7vS7/HDIQDHQ3hixenpKbzzzjv1vPbVV1/BJ598EpxigTofn0slfV5zEnC9nT5Lx3J2pXun9ByMwzbItWumdDhJ12ir51Lgd/suFosgDZ5QJ+m+XUFq3X2fQOIBvvuUx+fit66Fc+wDdM3blLYH6BasfZjiMQ6SPV0bf/1+P6BBS6vZXbqCtjLiII8p7hpyJiFNcOROZLllUWOrZHiJ4eTGH55uH0ZROnFbDb9dTZ5NjNBN8GlpeTlSuRpftaElZRxp0p9N8DQx0nQFVqU5lofmk/LzvqXGwZjxEo3Jk8kE3njjDTg9PYXT09M6jtPEDWwW0PoLjaOclkOF2ARKZYvk8KILAakPrQpDSu5aoK28OSSl37pYw7SaAZjn4X2Uo0zRY9CkciRDusVhpUGqDWIGZa1eEo3agr6LOZLjzeVziQZN7qa+NM+hVSqv7VjRHFGWfDmLctrXWh9yWRajdbVawfn5eX3fLaXFIjslPkstWjQ+kWgtS7eTl+5WkOpqAatMSKXRdGqtDm3mAFpOTJ/IxUvpk2jVxobVQEXjqf6BYyRWDuZ5++234fT0FK6vr+Hq6qo+AaSN/KI8lQJOW6xcxCvpCJJsRkCnRL/fF/W+NkY7ie/6/T6Mx2M4Pj6Go6MjODo6guVyWR+nneJhyfhr6Q8tTUqe5NSTjg9NF5jN1lCWAJPJAPp96txwDtjSc5boTlOeD9j9s1A78LhT1dUd2A5PKR6Y07MoXDqfP6hjrspTFH64XA53kmKYX65rXz+NtmPXx+0fW0zTI31aG1BctA4urWtnLY0f5vqJp+V5aJtbwO93Dnw86uVK7ULfadtTXD6v+vVwvO7bcapfQeKrOOec3cJ224OiqByylZO2AMebdGz4O2Gdfu2cqPzYYbcjlh5DzOMkx2tYJyo7wrEs7zx1bes/+2n5HBU6Zf0+lB21Pj0UZxjn14HXR3L0SnG0TyX5G4R45WrqbBP5nANanthc2gVwHR4/ZsXdr9fX13W5Z2dn9UeY9IoKPh/hs5X+1HqX69tdtkNq7RnTO7V5u6mezdsxt54xvWS73cJ4PIZ3333X6z8AgK+//tpz0vIPAduunZG2XUJqzcvfJR09hgfzxurRZL3F+Vqza9AwX+bLZUq4OK/HdPvcejxAc7Cul3PHYWxOsfYxT5eS1RqOHDlpsaVpcHDO2DYLWit0xTA5IDGGZgzMrX9Z+kes8bh9CqhdtmGsvFwjadc0SIad+wT7GHddQYxWbhCleSxgNf7hF8IWxXM6ncIbb7wBT548qY2U3NDY6/VgOBzWO6AksPYROmInk0kdhkddHjpY6qgZUbW+t/J1Spltk78J7GpM7nKsW+Vgk/JxjqNfRAO43Tv0XkhLGSknTQpPm/6WcNJdSNqC5a7AYsTnTnK+oNLa2hrOQeLjGP9xQ4HUxk11JSkf/aWuleA4ePzNzQ1cXV1Br9fz7k6y0BVbuMb4Pxc/4sI5rM1dmik6UsYmioOmzXEOSryitRfXG7jTKrdsDhZZSnkMHYb0yGeaVhsbHB/2L5VLvC16vR787u/+Lrz33ntQliU8f/4c/uEf/gEAoL7zt8kOZ26c0RbXOQt3Hm8JQ8Cjwk9OTtT7cbuS10VRwHA4hOl0Co8fP4Y33ngDHj9+XB/BKI3r3LKlnfVa/VO78K3Ax2Fsnjs7W8HFxRoePx7CaNRTHBgA1KFa/fs7Yiv8vhOkKh9I2SEOIM7cim4fv+Mv3i5VmHN++jih3jnpl+vwxJ4BgO3CLAoQcMAt3QChUxC8+iNeDKP4ML/fh/IuWZ9GXgawtP49vjRNFeYVCejEDdnEd3DKaeIgszUfW66skCbXn3zHdBVOnfg+L2BYhSf8R17Hu2ArWVrWZaPTFaC6I7ZaV6IeifzB56yqTP9OV9zVWp2gsF5voCzdfbC4QxZ3x+J9sfiPdPmO23B3rP9z49EPw7aP72AF5kTFNIjHtSEwvDzcz2eLi/1rzudQfuEO2HB3rcSTtP98+ji/3gXsc71K5w50wKEz9tNPPzXh1fQKxI9ppF2zMb1awkPrIeWjukQXtsQ2enfM4WWxd3UJlSxaw5MnT+D3f//3YTQa1Xfdl2UJf/mXfwlXV1c1bdPp1NNfpR15u7R/7BIonyNYN1ns2uaPNHVlJ+MfOx7yRpIH8CFl24ilzeXTHEdsE1kq8Z20tpfKz63bwTljdzWZa7gtjCMZyVJGri7BapzsqpxYvGZ0zK0zF96pwZLqJ82I2kWbxZSnWBrONzHDnNa2GjQxLsZo7Yq3rI60NmMk1+FjUb40wWkZEwCV0XGz2cBqtYL5fA5fffVVneb6+hq22y388Ic/hLfeegu+/PJLT4GhMBqNoCgKWCwW4jGPkrLMjcZ4NKFUr1zoWpalIDXOUSGVxj41Gkt5tbK4ESTlRKJx2lii49mqMLRVTKzQFC/nV2400vBLslJz1FCel4xT1KijfeHMQaOn6RzB6WoCdGFeFLZjOHOcB7w/Uu2izb8pHUdrdz6GNHrbyqkY36XyNelHS1pN/qT0yNi4oWOPfwRk6aOU0SmVTqML38uyMuQOBgP4zne+A9vtFn77298GjsDcMROTvRINvE4cnDFU1gkk3V/rTyk8V8+wQux461ge7SMAasikclX6IETSN/C93+/Xjkk0hk0mkzpNv9/POqIK8VrbidOk0UrD6LuVH8uyhK+//hq22y1cXV3BYrHw6oVtJx0dnFMPzIe0LRYLODs7g6urK1itVnWZeDxf7D5gjovSg8f+cRpXq1VUpjZda/A5IHWPsf8OtVOnqo/sKAHPocqdp9TRwXfIFnU57p87bJF2xOM73ar6OVyYh++I5GW6vFhvf9dplU/fLUvz0PJcWbw8H1w+qpPwuLJuQ4qXO2WldqqeiyCOvkPCMeun5XGlEC/j0MDO0kinXx8sJ2y3GH6fl6t02M7uHx2vOIYrp+wWyrK43QGLxxNXeKrdsfwqHZ8ffH2a7mx1Rw6jU9Y5Ybf1kcTSjlk8ptjNr9z5Sseq75gE5mBF2ugYxzaj6cI8ob6lpfH/HT6XhpYh72yN4eOySX7WdsYyTvHq5P/P5xv44osZXF2tvXQxOLR1JYJGv6TnSrokpkMbCt9BGPKGrDsgSLaGJiCtAax6bS7+2FrLarvm9MZsIIg3Zx2npaE2gbKs7FjD4RC+853vwMnJiddPqLfmrIlj8V3YJXcFUvs3qbeGO6U/IlCZRenia6/cMSONP75uydHVH2D3EJNfKTmT6kfJJpFj38M0fI2hrfet6xCJnhguKjuldSjH39oZm7NwvmvQJgxuLNIYKCVkpElXKo/HW0FSRrpo+yaCk+fNoSOmMKRoylU4U+l3NQmnhFCOMRXT0/9DAonOJu2560WCNj5pmhQNXBnBZzSOrVYrWCwWgTN2s9nA97//ffjoo4/g7/7u77wjdCgNo9EIhsOhd3dXapzThQf9GtAqq7qUJU1B6w8O0gLJsvsnJacsaVOKgNaGXHnVcKXKskJTWRyjIbYg43Mm7wfqNKVtgV8/Iu7tdht8SMD7Gf/LsvR4XqNZC9Pqo/EOXXRYFy8cDweqUzSZR2mZ1nlOoyMFTdJYFvCSLmBpZ1peyljA86TGYJM5TKu7pKDTeG7IwHFA0+Bzr9erjaM8XqMFx4kmlyyLeitPowz+8MMPYb1e13PgPuYVusCRDEg5Y5bmsdCuyb+2gDjpnV98ISfN4xQ4f/E4bczF1kCUt9EZizAejwNnbFmm7wyKjTltPpDAMkfzdBa9EKA6Em82m8H5+Xl9MgrNR3lPo98CiGO73cJyuYRXr17B1dUVLJfLeuwPh0MYDAZwc3NTjztet5jBpCyr+/UwDepQUl5tHs3VUahhwiLfsUz/+FPJ6SHtjMX8Ltw/3lhy4OJ76YW7ukoOSVpOlR7U44otxxQDKdfRF+6iBZLHd8BKxxFzeipaIEjnz4+0rpqj1q8LrYN79nmKtx1vP5fPbz8KEuu4NGUkXcpQH40m7U/rS+sfOsNd3/n9FspyxOX/o0PW/Vc4q12x1OHq9AI/3NWbz5P0mGK6M5Y6YOk/D6dyw3fs+uOWluWPv5K0qT82/fASKI/QeP5M0/M0FA9N6/q3ZGWEfeS3IbAfrZeUjjtgpTDKDxx83p7PN/Cb31yrRxTfNexyvavprsPhMDhBBvl0vV57OjTNx+e8JnaEGFjm1jbr/hhwHSi1LqX/Er0SbgvtsbUavf4B9ZPBYAC/8zu/U++GRdDuwbXSEaNPg330jRZvObEvZf+y2G9StEhrSx6eysdplj7yj32cvqt+iJV3l7bRfUFuPTVZEFtPpcK1cmLrOm3NKK3LLfIiJh9zbE0xkMpo7Yx9HZlU+godIM1AXU1KUrkpI8OhgNV4ZU0r5cuhwWo0iBkcmxgeOMQEncVoqOXf98R0X4Dev8oFMz3ag47ZlPGKAyoNVJk4Pj4GAIAvv/yyDvv888/h888/h6dPn6pKVUweaOGakR2g2j11dXVlHmOHKEsQqPEOj2DmCmRT5Y23OzewNmkXbR6wGiAPHTSDtbSgLIrCW2DhYhif8StmC9Av7zVaLJCae6X6xRY6qbIkPqBxkvyn5fD2tJRjdURJaa3OtyaA+KU+kOraRdm5elmsfKtDiNcPw6T2xXD6oQmXb5hH+iJck3+7NvDwOgBU8vOrr76qxyqO/9QCe1f00HfapnzXBM2jvfP0sT7tEtDAiB9a+UZen0c4PZqspnnou8Rz0gKbvz9//hw2mw28ePECzs/PawehZPjMAel4XM0IFJOzHKxjgo7L+XwOq9UKrq6uPBo2mw189NFH8K/+1b+q2+qf/umf4Le//W19Kkouf2Cely9fwt/93d/VRyTP53MoigLeeustODo6gl/+8pewWq3q3ckWXqRjNQVS2+fK5RjPWaByElXOHIDi1vHgOzYBAHq9uGO14lt0eGgOXOdYc3mrf5oWIIwLHX1SnHv2Haw0D0CIi+e9DSnDOMRdljh25fxVPHUK+zTQvEVBxxOIeRCncza6WJqf46ZpeJ38MMn4RygwsKS7s1YGH4fOp2HfUWc17UOZB2h9EIdbn1b3v1YyoLr/tXLA+nK+4v+iLpeOfxoX1tE5GsO7YumxxG5nbPXxyRboEcW+QxZx+ffLUudsVY7vjMWxHI5Pf57FMFAcseH85PqFpuF5ab/TdqF08D6S04aOZl4XP9z/wAQ/MgHibPX7zKeF64j3EXZBO64r6ZU19Gc91pWeEKKVc59A0hlz8lr0yS6gLCsnLMqZoihgMBjUNoTBYOBdEcEBTw2SaL2vQO18fO2can/tAzv6zmWn9ao2npeGafaH+9gnh2wb7RLa1HMXtobYOkWTzVS+xdZ/sfK4rSBVZhOQ2ungjineB6SMLTSO57MYRjnOmDBMGSQlfCk6LWmaDhptMk61S46hJIbXSjfNb83H81Bad21s0wyqHHi7WY3DvKxdQ0ohso4dK0h8SZ1AVEkDAG/3aIwWSamgfUCNzPTeV7zHAgDg/Pwczs/P4eTkxPvCbzQaiccRx/qIG7b4PZlIBy5KwsV7CLtWsJtAjG8ko7OUV5Kl0vhJyYqmyiTnHevc0RaajB+JntQY5byI4TSOLxywfelxizxOKzu1kMyRg9Y01n7yjWBhuMaLkqMDAMxfnMYgd96LAe0XDW8Kj8QzXKZq9FrrEVOgudzW8rUxPMTkFjdqSOOHly85MpoehZpK38VCarvdwsXFhcfHeFxujv7WBCyLLzQ2dGWwsS74tPKs+ekpAJIhVpoLY2PKum6QcNIP2ZCO8/NzKMsSLi8vvXtNU8fopmjj84mWNlWGJAc0+aut09brtXdU8Hg8BgCo7zT7gz/4gxrHV199BWdnZzCbzRqvH7bbLcxmM7i4uKjHPbb98fFxfXSfRa+gczCtK+U/7SNkmie1Kz+WtylUzhzuhEDeA3DOU+48QUejvzOWpi0KP48jV9pd6vBW9XL4qcPN3x3pf7AhsWmFW95d6spCOqoyMO4Wg1cWrQst170D8J20VZ5wlyx1rFK6+NHFfvtpdaHvodzjaWgY9omLK4R4P68EOeLed9xyOVjRU6WT52vkB1cv5BM/v6QDOV7GjxCqO2Odo7Zqi2o3bK/OA8B3y4btS+ePSkY7Oe2OJ96Sf2knbLgj1j1T3Lw88P4hcMRKO2Vde9J28eOA4AQvr4/X5fXbWnagyv2i/fu0urJkh7BfjkXvlRzIYradQkpnkmwm9H3XeiDXkaSTkyx6cJP1pNXGksKprQ2a4MrNZ8Fl1bto2lQ67C/8YBvzcv2M9isvv6u77Q8FuN7GdXJNR0eI8X4TvdqiL9N8sfWwRK8FXqf+va8Q6/NUulz5nyPv+LoYy9OuWJNo5evFpjTm8vg30hmLkMsQVLA1EQhaB9PLqrVLxw8VmhoaJGiryOwKmkwcViNJU+DtvmsF9z4ArT/uoKTvGL9er5NfPkogKT10rBZFUS9mh8OhtysEDXRlWcLV1RU8evQI/st/+S/wi1/8Av77f//vwfHCObtJqPI6HA7hu9/9bu3kOj09hQ8++AA+/vhj+PGPf1znGY/HtYHxvoBkJKXQlP+potuV7KUKQMoofSjKJZcpmmEa47TFFncW0Tz4lSsatfv9PgyHw3q83NzcROmTyqNxnMYcpwuvU6xfuHMthTdGg7TwpnJDwpfqpxygyica/OmiltOPaS3zm9T++Ex3T0p4eH/TPrE697jxh/Mjxa3xUAxoW8Ro4gsFbZFCHYV4ZDd1ekltlFpY7Atwznn16hX0+3148803YbVa1UfySx8O7Qp4/WM7h/EZZT/Kr6Io6i/xqROO81NX9FK8kiGNn+jB+VXjO/yX+JvvtKX/o9HIkwfL5bLGQ9t3vV7DT37yE+j1erBarWC73da6F8XfFLS2bqPzcnlgGS84NvGDOlq30WgEjx8/rndtHB0d1ccktqk/HgNN5QfqkFy/1CA2h2Mb4kcTAPJYuTsoYLMpYb3ewmaD9FV1rXbCuh121X2ZVa7qn++MxXHk0m639Khf3KlX4a7wlB4eBL25qQPYdxg6HBSX9RnEuCJwmvK0HJceRu+ADcM4zgpHUUCQJ4wDQh8tTzP2QgDIwi6O5+PxeXJZEuM+HfSFtg8w3tD6GEi4D+hYxTbDo4grx2rvNs+W8FEPytK1VVFUjtqiAKjukUVHrE8r1qmilx8hjDtY3Y7YSrZvoCy3sF6jI3ZDji7GI40xj3PcVuHhzlhXHs7LVb2RLkcffadpaHz4jG2E+H28IR75Pwxz+FIOWbf71+0CdvNvtQtW2ikMhEaf9/h4oDQdos2HziupNfsuabBc18TzaGHSmqtr2FVfxtYHCJb7FTnOlNNdghhetEXRay6KooAf//jH3ppotVrVea6urrzrjl43QNnM+4bbCTAt/U+B5KRKpe9iDHRttztEGfhNBc4jOWuJHF6k5VFosnZpKzckm0aTcXJQzti2RsUmeJpMGjxfzlcC3PGaYwzQQOr4WL26Fl6p9o6Vl9v+XU0ATdJyw24sr0UBygWpnXMUKImurpVlbjhrgq/ryRqfNZos8iI2xmmdERc1PF9fX8OLFy8AAOqj/NbrNTx+/BgePXpUT0LUMZqjUNFFLgDAo0eP6l0bb7/9Nnz3u9+Fly9f1mEA4CmwVkX6LqGJPJcmSS1tKo1FHklOHhpucWB1sahpAlo5qfpziI176nDgDjY6L2J8zMHQdn6PLbyl+kjA64r8ZtUHJECDPz+SWTKgUzos+C0KIm33FM6YPNWA0i8ZOnL1oJRBQGobrU9zdL5Y3l3qnin50ISOnPK1sun8ulgsYDgc1vMNHuVPeTuX5hwdMzX+NEPSaDSCsnQnSiCufr8f3BGaAs53bedU6Yh2rm+Mx+PaCKmVb9FhOcRkARqLLi8v63R4QggtNxdy1lRWWW4Zb9J44m1Ojyem4fhhET1WLwUWGYsOcdp3i8Wizm/RXaV5nM/FNNxCc856I6ZnpvCs1yWsVtvbXYG+Y9W/B5Y7M3yHKKZ38ZgGQHJauSN86U7PEoA4Z91ux7LGUeWl//7uVCzXpUdcIJZFcVLawLvD1uGgtOvvIV1hGTxMu082pIe2cVgvKd6VUYWF/YEgsQsfRvpxxNr8oiT3cNapgfaLK68I2gW8nc0hr/h4HZ+69G5nJZD7Y91u5i1p1+re2Kq80BnrxkZsZ2x4bHGVDnfDSnmlna/+jlAQ7n519QOvjq4dXBuGeHhaOteFbcnx+HRI7SPLFPk5dObS8n18fv2kumtAq1KWJSyXW1gum304k7OG4vly8EvrFyveJgbtFF5Kj2WtQfVVa5vl6FfWNVaX0BXOtjotxUF1TH4V1dnZWZ1+uVzWug9AZceifalB2zXZLsC6/ovpslw3lZyzGm6p3SS82jovVgetLjy8i/ZuY295gO7BKlct4ZZ+tJRnWQ824RltbYzr4BwInLFNJ+kuILdcjdaU0abLyUgTBJKHfjqdwnQ6BQDwDBgUer0ejEajevcegnVxj+U3BctgiA2kXCOPhYY2ZeRA17yfi2uXdXtdwaoY0J0aND32edN+jx3bhgbo//bf/hv82Z/9WV0m3VGx3W5hMpnU8oDjjQHSjUbY+XwepHny5An84R/+YdBOn3zyCVxcXNR30d2nHbIaYNvG7tLlgLt+qFKfOwa5wRFpQJwAbme2xaB/n2UANVZjPdC5wY8HpYpM0/HXpq1iiwwrPdr831SWHx0deceX39zcRPWMFL1WOlB5HAwG9Y5MzIeykx5lh+1lcaKiPoTprV8vxhaKUt0lXuI8JtGtta3Gm9KCVuKltryZmz/XIJGj21mA4uv1ejCdTuu5xeKgSul9OXRwYwKOISqHqXN4OBzCH/zBH8B6vYa///u/r+cEdCxSB21KT8T+p0473tac/3CXI+LmH22uVisRB6Y9OjqCH/zgB7Ber+HVq1dwfn4OL168qE8dwB2rKfrpGKPHDRdF4e3Q5HnwpA23W6rdKUIxGq0GUSlMa0N6ckrMYKydcLFYLODVq1fwxhtv1E793CN9Jfr5HXeoU+LRxWVZquPKMg9hPJ+P+fjRjjC2AtJiOdGAxpclwPPnSxiP+zCZ9G/5HXVnmqd6x6ausvv3wqLjttoZiztkXZrwvYBer2R4cCdxIb77zjasoxQHDZ9BibO+Q0YYD3dxVR+BGEfzFYFjkr7HxoVuG0ixoV+GDW8EG+MpCQ/vj/C/LHFMc97wj9asZKjjw2oHdwll2avrVTnWcT7zx1WFh+o04fq4wgdAjxbmzlh3XPGG7Zh1RxXznbD+jlh6H60vX6oxWNbt4uhxTsnq3X+mMsGl9Z+lHbF+ncPy5DDbzlh+By6tI8XvnNYA/q5YRyMHLoNdvQDm8w385CfnMJ9vwKhOe7APG2mX9rSubWMW/W1fePe13s9ZQ+7KB0B5QlvPISwWi0D/AcizhcfK3xe0KVPqE25D4mli61argyjGk7Q+ljVlF8DbcN99KNGQCt9FWbuALspqIzMpDimszXgHuBt7qsUWw+kKnLF3weQcJOaQwtoscpvQ0FYhoIyFxg2AygDLy5rNZt4XQNIRb3Qyy6lXikaaNtcgohk8tLItBsFYfilP036ytmEuPSnQFCJrPqsR9i6EUhfQ1PgmxccmDetkz/uLj0PeL1dXV3B+fl4bf7nRejQaeccUW4D3KcqWoihgNpvVR7ksl0sYjUbw5MkT+Oijj+Dy8rI+NlIyzh46j3Aj5y7mq5ghl/efJmuQTu6Y1JTYrhebTcFiqAcI5wkOVhzYTtTIbeHFtoZh+kz7VsOdKo/Ha3OgFodz+2AwqD+u6PV69bHNGm2cbovepJWN7/iztrF1oaTh42Mip9+1PBaDv8Uw0pVeZYVU3WML7a7Kjcm/HDy4m5QaYiVc0hjkZXPcXQDlgaIo4OTkpHa6avIgh4ac8YPH22rH+krHhtOxClDN9QDVMW/X19dBn+bI9V6vB8fHx96R8rgesa4RYuWk4rgeJc0NtE4p2aKViQYqXF+ljhrXYLlcwtnZGZRltbN6Pp93duWB1DYctzYHp3RTDQedF7rUTSRZQMuktCLgMcXu/knwflUe6d/tei0D50xRpyvLyoHn6KvyFIWLq+gNd366+LqGTFcEhqdKQx14Pg875x+th0vjl0d3z9K2c3T68VgmDwvzubS4o9Yvn49HYGlce1XpaH0oba4vwnpzWmxrZYlVm0+P1FlGeVUu0+1AxjamO5K1MVQQHCVA/WGAuyO2yotHFUt3xFbOWmxX1zah3knHYOg45f98l6zT1dGZq//88eh+Zd2uLh2dY/22d+0CQtown5SG4uGyAmrHuCTzwzpoz5JsorKOvocyTKp/+EzzLxYbWK3sntgc+1YXek5szdN2PunKVpdLR85aNzdNU9Da2apLSzpcW3qt9jMJ0L7D7QJW2iTdIlXfVHwbyMGVu3aO4dDW5TS+6TiU+MyCK8ZnqfW6hZZdgsVuvOuydgFNyoqNyTb9ERuXWpquIYfXctafKTnW+JjirgUWhdgksk/QFoqpCc/y9Qkaf8bjMXznO98J8nz22Wf10aYI2+022P3WZT80FZQanhTzSV89AcTbjxqKuVFq18CV1C6NFFp5HPY18dxHwKNNYjuv+v2+eEyi1Nb86FQJL+alCiSNQ0Mf7l7B++ewH3H3G0LOrs6y9Hda4rGQP//5z2v8jx8/hsViAR999BF897vfhb/8y7+Ejz/+GBaLRV1ur9eDyWRS40sps3cBSAtXztGI2sXODU05pUqsZJzUxinudqL5+Vde2lH1XS9ec0BbrFjlHf3ogP7onYvYFjTMumMyZlBuArH6psrVDEMUYvyCbYGOq/F4XB8zvlwu4eLiwuMhiR4JbwwkWmI72Sx9ju0l8QjnbS5v+TvlGUk2p+jB9LEP2DCehknjLlU+zWsBi3MoVgbKv5x5QsKPtOTqdTH5iO2Hx6q+fPkSVqtV3Q+r1SrgBamOiBN/w+EQiqLwdnfmgKZP4ryMND558kSkUbpXldabg8ZHEuAc8e6778LJyQlcX197jj2Ndjo+BoMBzOdz+D//5//A48eP4Xvf+x5cXV2JbZBqP2zv8XgMf/InfwKPHz+Gr7/+Gr7++mv4+7//eyjLMrgLFfs21SaHBEgP7timumPswyAqk+hc/vLlS/iHf/gHGI1GMBqN4NmzZ/WpBk3Halcg4eLzOV9PafnbrLWo/JLK0aDqE4DNZgubTVHvUkNWRjS9ntsdW4VZdsZCHSblASjq45GpI6dKT++SxX/qpClv8dF/CNLLzzStlIbH5bznhMXCXVzVFlpc1fYI1bufzg8rlHQOiqhzE9NQnSKa1AhyfcI2cH3oHLMAtD/K0vFpr8dtGfQO2W3NtxQ/vyM2djyx3wb+Dk7JGUsdr9VOWCcX3U8+2tj906P1/fIA5Lti3TsNo7I3DKfpLWl4WoCyliPuP75Llv67D0T0nbE0TXVnrNspG/aPX2daB+QzzP9NAGkdZoXYelpbU2nprSDR29RO2HZ9G5tnY3XcpS1Vax8ahh8VarSlHCBN6aBl7AMsa9uYfaHJOp2mja3ltHCez2Krz6HPaps9tPXENx34eMpZp+/Lf2MBiQ5uM+GQs96PQWNn7KE0XlegLVglsAgsyRAo4ez3+zCZTAKhNhqNYDAYmBevfMGcs1CJxWl4LMyX4hHNeCu9S5OwNKnHaE5Bqr9zJq+cMlKDPUWLZixpo1RyiOEpivD4i31PltzYj0f7UYM7dTzEnAEIEp9JxthYXbmxi+6W1CaslNGb4qZhiLfX69XOHXr0Id4rd3R0FPQXGiPxCFJOSxcKcFvgxkN8j/VTEwcVra+2sNLaI7ZYsPbpoUJK5qfmJ24AxvDNZlMfy8/71IpfgtyFTgo/pz+HHi0tvUsTy0jJWou8kcYKjZfw8fQWOWQ1lvB2i/WNlC5GR4oPuZzVdqxJ9U3pHJw2Pg/tG1L0pmS51s5SHq0PMXy5XIptLfGoVoeydHe40rnMApJepcmA7XZbnyiBZaCzDWUTH/+WttDieZqTkxN46623YDqdwnw+h8vLy9rBGasblZfr9TrYWSvRSvNLp2Ogk/rNN9+EJ0+eQFEU4j20tHxanjYure2SAmkeiaXV3pGvsb6SPqbxKpXTg8EAFosFfP7557Vz9+Lioj7uvQtoMufQfDlxqfmH/ufWLyVHY/ILHRjVvZkA0n2xZUmdePLO2OqH5TgniPzvdozSuKJA/EWdBm6dcI4/HS30zlZS45o2hxPrju1M04S7V3nzu/J8PIhLuzcWcbkw10a0DlU6205ZmhcAHYxhfaV2dWFFkFarN4c0b/L+sAHWh+PA9nZ1dm1+m0LI4/I5erH+WwDAtSK23/Z2LkT5JR9PHM5HjkY3DvDZ3QUr3RnrO2OpAze2I5Y7QekO0RKAOGKxzjS9ozt0ytJw2sVaXh5O+5DjDvtA3sGr15PLI74T1r37/eL/S1CWFR+cnS3g+nrdqUN2V+vOtnibrN9pvtR6SsLRhd7eZI0k5aWQ05aSntO03LuEGE1t6G2Sdx82sNg6ImVf0XBJ64FcsKx5dg0a7YfIt99EoOsybX1msSc1KbcrXBxHKrxLO4/njL0rA1Ib2BXNlWIaGpJwYktNEngXY8yggmmn02mwY2o6ncJkMkkedyUxvfQltkUpadOOTfoBDV7cgCQ5y/YBFuPEoY8P3m67UBwkfsPdEgDh7kV+qXxToZbDY6vVClarFQwGg3o8YN7NZlM7HwF0ISvdP6q1qfaFGK077uyZTCYAEP8CsAmgYXE6ncJ6vYbr6+s6Dh1e0+kUnj59CsPh0Ms3HA4Dg+uh8jrdUY9818WEHhoM5DZIKeXU2c4d7zH+36WSv0tIyWrkKX6HHjpYAMDbIQsgt61mWMex3XX7SYb4rvQNHKvoCMD6r9drWC6XdXtJ5aYU3lw6aZvHHBI0rVRGyoiP/R1z0iAN2DYYxvtawi2lKcsyuA9b+uBEozkFtM58p21byFl84zu/39eSV4tvooMhX5elu3OU6syaXJXwo5xHHRrn4tgdMrkLKbqb56uvvqodaHROxLurKA18nNCx0KT/3333Xfjoo4/g5uYGrq6u4NmzZ8HaQesXPnfwE2fcDiV/HEkGFqzjaDSC9957D9577z04OTmJ7u7s2khlHXc55UrzOpfBlE8l2crbGvXD8XgMl5eX3klG9L74XYA0H3BaDx1iY5LHl2V1XPFm45yx7h+Cf5q/2nkIwJ23uEO2arpwR2zVpv6OVj+Mz33OIRv+gyGsKqPwHL0QpK/6G4I8/tj2na2OPVwe0upCPiwLwN8Fig5GWi4EuOQ4Gs9pADV9GF54eQDiTiyeluK2iyxN9rm2QJxhPkmXregpivJ2dyv+A6CDtbondnsrp0oShrtnfSesGy/SUddA+FvaHevvdpV2vVLnLHXgyjtiAapjjKEuA0C/Kxbpw7DqnTpc4+GxvHJ6ecesoxcITdqP75DlYX4Z9F3iCYlH+G+9LuFXv7qGy8u4XfGu4RDmH67zHCp03VYWXaDL9fIu/QZ8Lfe6ArYhtSPydTdv49xTgiy2rVReBMvpn69zfz2ADnRdwkHyZWk2oZSfDSDOl21lfxMbWps0njP2ECbQXOiCZm6kaFKm1PG8M9HIOhwOvSPSvvjiCzg6Oqq/Qqd40JkEALXTUtrKLz1bGZHXh7eFBU+TfpCMCbEyrQOzjaKRKjc1QHdhFJH6h7aTVmbbyVDDI9GzXC49XrXmTYVb02h15btpqCHVavTjbSwZQGM083S40wd3YzQxeiNOdFxwHPi+Xq/h8vKyNpBzxwRN3+/3YTwew3q99tJ1qbi3AYkGzWDKn624pX7GcE050PoPP8iJGY6tY1WT0VLcXUCMPhq2i3po+aQ5PWXE1nBY4zQ9QnKgoBzAeR13WCGg09C6mI7RI/GgxLfcAZyCXF1Banv8RxnF+0vDycvEtBg+GAygLEsPr8Zv0gIiNVdJODkNNFzDxfPHANPnzhNN0mPbIQ/m8AOAa//cMUfL6/V68OGHH8Lx8TF89dVXMJ/PveP1tfySIYO3Mz0ivixL+Pzzz6Hf78O7774Lq9UK5vN5wH9NDE+SLOBtgA5U6hi0ANYD6cL5HuWIpLvQZ9RBuPO+LEuYz+f/P3t/tmRLcpyHwl/mGmvaY++eATSIJghKkEwSeUTT1TkX/M+13uC8gd5C97rXQ/AFZDLRTDKjURIJCRSABkA0etjoPdWuXVVr1Zoz/otcnuHh6TFkrlxVtbvLy8pWZgweHnOEf+kRmM/n6Pf71Z22Wr5C40morpuse3x7rl2Ij73ETysLOTbID4fonY7TJl5tlF4U1xcvdQ2kPbeh2Nzahl+sD2l74F4vY3fH2msQyELQAqtU/oAFXjTLWDh+cEBYenetSFEBpPZ3KzHCxWGAACAr71fV4oUtLF1Z3Xh8ngLLj4wj5XTDknw8PJeJqtP14zJyP3o37N3NP28edXej+GUiTJ12Gy4M48vXJ9YfXnDarW/UAOmyHOnDADo6O8+LrXtefWigWcK6a8T6McVu+3b3tGUf4s/60cP2Xb9X1v66/YyDr4D7sSuFJRnJjftTeRE/33N9DVZ3RxIQi5oM7q/m5vOz7i5YKz8CCK3jTfXL6+w2UGxdfptJ7jG64LNLmC7puvU1qfnbNVxsTdmknPdV5035auHl/nI4HKLX6+Hg4KDa86xWq+oqk10oVNapvFP1BaF9fSjubRnvvsuUuo/je5cUHUiszzapey29XcbeNmP7Lm219THFbyP5CqqJMowoVWHIFUaLxQKLxaK6OzLPcywWC3z55Zd4/PgxHj16VEuDW7CRZZ38uoDuPJJ5iuWrSUfQ4re5C0mjLKsfc6vJoSm0tTBdD94yfd7JY2mlKjB9ipcuB6umFOLN657AO16PTSbXrhernJ/vLsQmSiautOVusXxQHAlw0PHJdE+r1vZTyoQrYWXe6H25XOL8/Nx594E7ZOE8n88daySi614UpdRRDFhvosSV7iljpm8eIAX2crmsydhkPANupg52Hbd8blYxaMOEyqXpYixFWd10kRYby5qO3QSAcMt4ai/z+dwBZIEw6OSTkbdFDSCQ8SgMt6JrQlp+tb4hxyruzvOpWfNpaWr55Za1WZbVTiCgcPLDIflM76HNvyZD07JLbe8SyEhdg0jS+pkWpm0f4UqEoiiqD3s0IEZ7prZAZfnHf/zHeP/99/F3f/d3eP36NabTaXDe9JWLdOdtrygKfPXVVzg6OsI//af/FNPpFF9++WXSeJJaTnKjytsPrevlKSMynpY+fyclzWw2U69D4LJSH6HrDDg/YwxmsxlmsxlGo5GzD/HVYdt2fx1zmm9tRutWyrPcW/G6kmMkvVO9DYfDasxZrVbqh28+uXwKrdgYr7lfF4UULzIMp6ZKjl6vh34/x3ptkOfF1iLWoChK4IkfW0z3u1KyxvD7FS1YZv9DlrEkv2YJS3JSHA64mW1aJS8+7rnFwXm6cSTQWqblBz9RA1I5eEv+cMKgBtq6IKpL+tHF1p3LzMvHsOdM+PGwRrjJ/irzC+HP55+arx6J8U0ht6zrvN2y4+XF20XpZo98JpCVLLuthay19Ob3wdb/y7QzIUu9rfH2ztcqxmh3x2pWrxKM5WEsbxeU5aArB2V539Of7fgm8+A+63FD7q5//Tfm5+NDR6m7ea/fK8vbk95ufWk1NIb7VtCu85tP35HKOzZfda2/0mgfe4oU68Yuqe26WdIu5d1Un9CUugBnZJzRaITxeIwHDx5gOBwCAKbTaQ2MbSKvrHuf3D7+sX2RptORa2h+WpyPQvvQ6+h3dxSnproCIr7P13juMubtGjbUlttSLP53CoxtSqFJvAvim3WuBMiyDI8fP8bh4SFevnyJ+XxehWnTSH3UthN1lTaRtATgGwAZJyavVDx1mb8UJWaXvFOVFl0qY3xlnDIg0ccCMkzoWMF9klxQaGBAUx6aIjVGNOFwUIAUoQQctKlDqRyUd+QOh0M8e/YMf/VXf1WFpeObp9NpdVSzMeWRkv1+H6PRqMafnq1Cqbv2FqKUhRiXqU2/jMVLWexqfaPf7+Po6Kg6/YDuIgzx4vWpyXBTStcQaeUXktPXfnyA5j7I13+7bEMaH+qby+USh4eH+P73v1+BsM+fP8erV6+qUzPkfYOh8mm7IQvFTSl7X90bYxwwTcoqlYgUjh/LSgt14hM6konCcgBXrqcAOCAX3antu9IhZb6Tc/a+1gdaHfHfLMuq/IbaRChPbcdQrR8RDwlGpfZnik918+TJE3zve9/Ds2fP0Ov18OrVq+qqAWoj8jQHH/nWz1lmrxb54osvnOPCuUz7UAwCwNnZWdX3F4tFDRRMkYPm88lkop6YkUqbzQbL5RLffPMNFosFRqMRXr582fpYNB9dJxgr0wTc48pDeeNjmnTnzwTsxviF5Mqy+hHYmuwp7vuimHK3ad4l8XZhTHmSVK+X482bKUajDONxfwtaGQfIKuNaEKvkAXBgtX6kMQc9bVh6LwqyWLRgGgdn6RfK8cSulS6UsHCe69avKc9w3i0AWPcv/aSVrI2TZVZW3XLWxzPFj/tzmZmLygsiT/U4gExHEo2dik8wXkq/qt+Fi9pR0nVAltK28htkmXtMsQ+AtW4uCOuOA/W1nG3XdUBW3gPrA2V1PwNA3iEL5dldn7jv9We335C7Ho73WRkGkDJAkQsBv/ovB5wJbPVZBtN7OUbVGxxvg+7YasuqKIBvvpnh/HyJxcJ/bdkdpdFt3Ev76G2S9btAbfUEKXz52mk0GmE4HNY+zgTKsZ7rzdvoXLok3wefRDH5UukOgL152uUjCr6H6rIuffrUNu0+Va/WVZsmugNjAxQDpXb9QkeCsbxyj4+PcXR0hMvLS9VKTfLaF8WUQD5FnO+d4nC+3LKXysW3oY/lNSZPV7QvRZOm0A2BF03BEBm/qbtUQHHyWYveFBgL+NtrG0CWSCq3Q8SV3NwChazjJHDRpL3wOiHLGh6/1+vh7OwMz58/r9zKI996lT8pfReLBYwxFRir9fsQkBZqo0RdjVOyLXYxFu8SVstnv9+vLJ8BC/744qWAPreVUuv5OhbSoQVYStuNtfOU9H1E/Xyz2aDf7+Ojjz7CcDjEaDTCbDbD8+fPq6Mu5cYslo9UitVVCAyIycDHL21BK+NKQJZbkGugY6hdcSCAKw55fNq8EuDFP16RsskxpQlQ3RbQ1NLUNgSaXL52G5urdlnPxsJrG/QmbZeA1vv37+Odd97Bo0ePMJ/PK2tOqlMCUX0Uaouc6Fjlly9fVjLztijJt9ZNHf94uMlkUq2DtfUv7zO+NQ2NL4vFomrnqeXNZaN7el+/fo31eo3hcIg3b94k8dHy5kvnJoiDpXy84ncC+0j2RTlvhI6Vj/H0jTW+9Jrw33eZU575GLzLulv2Ixq3p9M1Nptsa33GwVjX4hU1IJTAEXtnLIXnACiJXKabOf7kl2Wcv7SItWEIlOHrf+InAVlKj8fn7lnmPvP81ePUgdT6McP1Y4vhgMKcD5gMEjwENEtda/VZ93PLUNZ3PT+8Dl33ehwtLqfm3UfOpTbdOl8K697fi8raWQKy9XBQgFpZrhKMpWfLw5MT486D9C7/fWCsfS7ggq7yH4K3TY+Di7wuXNmkjoH3y3o4G7QOykp3VzYo8qb/yrrX05DgMAeY9V8tz1RmZ2cLvHrlnpqzK3Wxl7jO/WnT+SwVrEr1u668dq0rkbzbrgm6XE+03WP7wnatQ2m6l9o1PRmv1+thPB6r/hKMjV0vlFquu+rCNPfUvfNNjCdd0nWstW8D8T1O031e7JS/FN1Kahl3pRP27V263uPegbFoDsw0aQxaWO2o0LOzM/zud7+ruV9dXVXPg8EA7733HubzOV6/fh2U36fI08K1IV+80EDMw2hHv/LNd+grdB91MYi3VXrsi5pOrDGF7q5yyMGUW3C9++67ePjwIebzefWhwXq9xunpqaPsIguOm6SUvhGLGwJtCPDMsqyyGP7e976H4+Pjyp2OHCEF8NOnT2tHjqcAI5rSmCsa+/0+BoMBBoNB1fckcAvY+2X5wo4vQLVjRSiv/NiRmyC+EI31jybu3I+UrWRxJMuIymG9XiPPcxweHiLPcwwGAxweHmKz2eD8/NyxYuP1RBRa6FA9a/FumlLGfkm7bqx9c0hMNorLFaaSZ5dlTOmQrHmeYzQa4fj4GA8fPsQXX3wBoOyrw+GwaiNdWRk1jZOyKNYWrJy4GweGqFxpLtlsNhiNRvj0009RFAWurq5wfn6Os7Mz57hhDbAgOZbLpQNs86PzyYqSjhGlj1D4naCyL/K20bTs+K8cI2Ll2jRNOS9r6ypNtts2dgA279Tmx+MxDg4OKkvNe/fuVcfv0jhcHmHadz5o4vnT+jdPT1KWZc482YZSypfLOhgMcHZ25lwnAFhLbjl2yF9NTl874uUi76snIjD2s88+q9bim83GuQO9C7oJxYXsL1QPVNaho9NC87QcO7QwMbm0PU9ow8/7io+uq4ybKElCPDhpazpjgPW6QJ5n6PUIjLX3eWYZkOdZBdQC9p38XStae2Rsee8sYIFWbhkLAMQ3A1WVWz3GcStB3PLYZCjWrbZfg/mXaZVxoMbTn8Hepb8WxhdHurmgbJ30OOSXVWCvC/TqPKoUFV6xOBL07abd8yZpjJ6uLENjeFumdzdG6VbWEdW/3cfZdx/wav1s+vX+w59t23TXO/JdA2UBYyQ4S272XljteGKAu7l92vaT8HPcTwdV3fzW/f1u/Khh+87zQnnV8izv0LVhZLsJzQluWsTju05d7ym/i7RL+dyV7X6Ir/0GgwHG43G1Jj08PKzujSWK6Sakn9Tb8nVjk3VnSloapegL3nb6NveNJh8iaPvfVLwoRYYm4X174Cb6gKb0rQFj2yjAUimm5E6lkIJH4yuVvtoGerFY4PLy0guoEI3H40qJ0lRhSm4pFFICNKVUcEQqCzlod51gzz7any+f0i/GIyWOVuddKtBIBnnX2PHxMd59911cXV1VAORiscCbN2+c+rtJS9kY+RRCWriQn7b4OTk5wcOHD6sw/PgROlqQf4gg+WtjY0hervAlCyIO8migvTweNZQWuWlgcGp8KXMoXopCk8vE3VL7S6yvxBSkFIbKnMACAM64HctTqCy7GJ9i82xojpRK55ji38cvJA9PI3UO22WcC4FXKTybrFs4kDQcDp2NF4GPKfxjY1AsXAg8SM2Hxk8+h+Tgc/2jR49QFEV1d648alWTl9zpQ4l+v++ss+iZyo/KXfKQIJOvPWrp+9y19iPLIGW+sUr7+gcCvrWEto5sW89tqOnahoiHp7par9eVRSyfM30bRDnm8zILlS8v56YUm5d5vcv6y7IMi8XCsQzn7ZiHS01DhtHWEvSrjS1FUeDi4qIKRx+PEDDblm6TwkKrc01plLLmiu0ptbHENw60lcHnd1spdc50+y8ccMJUQEgm3gECqdz1lvsPYWVq3cvfLHPDlnxIlvoxxRRe/m45VjIBBNBZN+LF49blt2HAgFAun01Xu6dWyuaWjXUr88flj1nKlmFcK2Iel8rM5t2Ws+tWt5qVYSUP6ceBrnoTa6LrSQq1TUNfv7p8qP64tSzFtW1cy1u9bVke2tjPX6lfkGy2n+jWre49sPIIYgpT5qfkq82xccvYlGcwsDXk57q7bvLZlo8Gzmqy+sL509D4hcjNv+W/XhusVkX1QUlb6nofQ5SyHm67L+uKUvU6TfncNrrt8sUottdvohe56TbXhPgalHR1gNUZ0TU8tEeQ19LI5ybk2xukhg+F0XRxRE31OG97237bqe3emMfnlKojkpTajgD/hwZtxoom/UvjHyu7WwfG3lSHa7oISVGC+tybKI2vrq5qd2Fpx+vJ+898CoLbRCTjYDBw7qokP57vxWKBxaJ+RMt1tJeuF5VtFrxSjpugLMtwcHDg3H3I70H9oz/6I/zrf/2vq0XDixcvcH5+DgC4uLjAixcvUBQFlstlzQI0RiFFpgwjZd6FYn3VpwDleSM5x+Mxjo6OAFjlJsn36tWrJFlCpCmhfdTv9ysrTtkeORi8Xq8r8IIrZvnGnBaM/X5ftbjdF/kACg2QaMtf46MpruWCc71eYzab1T4goeOK28rW1RjQBZ+6krAbasqLWwPqSqlmiyhtrg4p3GP8id98PkeWZbh37x5OTk6qr10JdKSPJQiY6aIdh0CGWJxU3iG/0FjEQdE8z6uxESjnCx9R2VBd0TtZoM9ms9r6AUB1/CuNWdI6zhjjXJeQkreUTafPremGgIAw3t75mBzjEbt31xe36VpSaxex9bKc1+ke2Nlsht/97ne4uLjA5eUlLi8vqzmG5i5jjDOmavKGyp/PY0D4/iNZ3r78aulocvB2J9dDPC15dzKfd+U81WR9GaoXOiKN2oa803lXuun9CW8nKcdca8oIbe3XdB9J4X2WylyBIOu4yV5yn0TtkbdRwK+U4B8e+PiRHz92O88zLJf0UWcGgO7ZpDqqUkae0x2xHPQqw9CdsWQ1m+fWjXgYY61lLR/rrx0/y++YzXNZL25YcjOGrGfh+BtD7Ym7o4pLYCkEoJs5wKBNh95Lvja+jcPD8bCyjni+mvhJ/1C4UHgX9A1RxgDhGM900vqobYM8jB07eDgrEz1LYJUAW/tsedr6yDz1ZtOyzyFw0QVhAX7XqWY1W8YncJBbxvI06mlpe1QNhLR+elyeBmppljLV48p4dTfN2pXGNvsLGCesdmesa80q53wrm8yzrKuiMPjmmyt8882sGvf2STetY9qVmuxdbsO8eUd3JEnqVS8vL6v9Bq2DeNuV+9wY+fYg+yC+TwlRkz3jHV0vNfkAAthfvaXoUIhC183E4sbS3BfdOjD2JmkXhZNU4Eq+WnieHoFUkpbLZW2wDSnzY4oYn79UGMWUZ7H4Mk1NDiI6NpWsAcifW8ZyhVSTepIK7VCH7kLprbmHlJxN0m2iQG8ycDUhslahZ06j0Qj37t0DULbR6XSKzWaDhw8fwhiDFy9eOLJJZTiXvQ2o0hYY0hRq8l1uIkPhfWnM53NcXV1Vx9dy6xdeFqGjJlPzoZUdv09Rkz80hkm+sky0/t9WKekjnmZKe287kcbAVymLL63Q3WkaaXlroljfJ8XmlFDY1Lkkpb5S+njXG+3Q3Cb9Q0QAIH35Oh6PkWWlVRzN6fKYTF+/alJW8r3puJpKTdcdroLQjnv8dADafGrWeFxuCVLQWoG78w9FpJ+Pj5Zmkz4Z6++pcwetfzgQrZE2hsv51Te/cb5dbrJS5getTdPHQmdnZ9Wx0nRtB/WVLMuqevWNyRpvLe3UPrWvDZpvDU59gsaI0LxD64aU+qM0Ym1Dlk8ThedtJPrwpd/vVye40Piy6x5AAqZEbdqMr63ddLn68hdrSzF+khcRvx4CAJbL8phiUwEf9ijh8p/aq7UYdS1nLQhWplO/S7aUg4NlJZ+txIynqd4J9C1BTtfitsyn5V1391u/Wj6aFSvxoHRtGRJgaWXXgFPJT8az+Xb52/AcFOTxSl6oypfySuHsu+XPw9TDcXdekFnNX8aPUbMu5aatpyXLxb7b5zqY7/b5rCpDt1yhtg0pD5y7U6lf1ddd5OZ/50ArxdcsYetpgAGitp55H+NxZRjD3OHE1fLlhk2ziJU8ZXvhPOp8XV683DS5NdLSo9/VqsB8vsF0usFs1v40ireN2sxv1xVnX7SvNeUd7U7X3U6k3kjq+0PHFe9L1n3y1fZeb1N/uC06uq7Jp0vQ/Il21bn64od0iKG9fUyeJnrNJtQm7h0YuwPtqpTgDWk+n+Pp06e1MNzaVboTtVGUdEEpaWqdVx45TF/+vPPOO849WZyyrLxbazabOV/oyzDaoN5lmcSUcb70ulDiyc1PytcfqXz31W5GoxH+yT/5J/jmm2/w+eefV0qvfr9fWUMbU975F/taPkQ+hW8bipWH1jZlHA4eUP/85S9/ifF4jD//8z/HycmJE5+I7jocj8e1u0l3odVq5VgSaWnTu085RnnyHaMqeae0K3fzGh9PUsELSpuXn1zEtjn2PKTEJz/fmM3Lht+XqcnOw0tF3U0sVJsAp21l7TJfKaCtz4+PQ12MixqP8XiMjz76CG/evMFXX31VzYG++5y7SFP6p4AzXRJvxwSiEW02G7x+/boCSYjoo5WQpTAB3KvVqirHw8PDak6hvM5mM6dO6WMvPlZwnlxu/iufJaW0PaKUr4aNKcHY8XhcrX+0+c63TqSyI3nk/ZghPk37cmzsbjI/rNdrrFYr/OIXv3DcyaKarISbfvSiycXbpa/+ZBvRxmeNZLtvs+GU62I+f0mraN6uffzkr1Z+8iPQXYFKLqN8vi4iC+SPP/4Yjx49wtnZGWazGf7whz9gtVphOBzWZNM+lCN32SbkmoPihdY2beaZ1PDXoSiiNELHV1OZUFnyj21iRHd/l3cWA69fL3F83Md43ENpGWtASRMgmmXu3bCuLPaX7ozNMjhx3HtmOdhaAp8amGbvk7XgGv/l99huJQAYiFaWDwfX6s92roIT14bT340hubm/FsfnluKu+Ul/XxgtXChsLF6I5J7HD5a1S9uWf1nu5GYBQJsmB2B5O+P9tm4BW+832n7DylC+27nDGPmeAsq6Y5luCWuBSHKHAGSbPXP+rp+WFoWhfuzKJsPWLWIpX+RevyuWfl0rWm4Jy++b5eWv1Ynr7qZ1errAb397ic3m+ufJO/r2km9NkKqv+TYCTzG6qXzH9p4p+9BUkvuClDQo/K5reYkJaOvq20p8b6OV3XVjMtex3u+CusJEZH59V1qS3uCmyiemr7kDY3eg0KDlU5aFlFtaJYYqVio4UuL7OoAGynShSOdKiFAYzeJDU45KPrIc2iihUyg2QUllS0oZ++L64mvxfIrTJhRLt8ngxeOTYms0GlVH3nGeKUcryjg+WboeYJuUrVTKSqUd0Xq9ro4goaOaKYwPlGtal6E+pvFrU27aOKeNQTEFdWpaWvtMHf8kafXYZPzwySjToHsOXQVFvZ+n5M23cdJ4dEXaOOlT2sfGNR4/5C/dUgAMn+w+/r42I93bjqUaEQ+y+FytVpVF1nq9xmKxqI7QTU2TysRXTyl50MpCjhG7tjMNmKBfCWrQIlouplPrgMozJAPlT35Q4gOo5AYxVNayL3e1aQnJGVpfEUjNLf8kHx6XtycOKvHyStloNO3nXF5qC/KofA1wlbxSxwm5Bvd91KaNBb4+5ZuneHxetk0oy7KqHmN5DJV9qI54XWv+PjeZRipdt5KCiI+xvL2FyLeXo2etLWjjqE/Zxfuaj9oqEa6rjGV+tfHQl3+fm8+/KOjfWu1xS1ljsup4YRLJGP0fzLrQDcstRA04cGotbjmIYkFetxrdMbXkZ9PmIFrpXrrJZ5KTP9s0rR/xddOSd8e66ZZ8XB42fVRhXf6AtJS1fMDyoJVN3WLWV37yrlkZtsqR0nX8TUr2V1+4GsfEcO5R0bauSzdet1aeDFIuKSPPT11mbY7lz6Zyq6/39DWg7U/1ZwjL2DoP3r/cZ5JXD1OX2xeH50eGkXLZPq+5+ccJmYYWr87flpGvPlx344Sh/83GYL2+mY9vu6Zd1g43sU74NtMuOrSbqotd0u2i/7RZszeRQeqJQuFja+eQvkhbm2r7gqa6taa6a7l+Tomzqy5i39RmXXsdMrSl2L461g5j9UX7Ws1dEl3vtgtpeeD7wSZtfFfSeN2BsRFqOsho8bR3jZrcoSl5S2WKj3z+EjySd1SlUkxhFgpDfrGO27XSIkUx1KYdhBRbTYkrSrvi2TXJwff4+LgaQM/OzmrtS96rGqN+v+8oTn0W0iG5NOp6AuN1JBW9RVHg8vKyAg4obXkfcpu+x+MSpQIyMn7qJBvinUIpcVOsx2K8UzYgfOxIKfuQ7PP53Dl2nnhnWVaz/KM2owFCbeefLkkbU30LtJRNQpv200UfbbJB4nWSCvKEeAGoPki5vLzExcUFZrNZ9b9YLLBcLp2j+mPkKnlNza8NtQFBeXptNlX9fh+DwaBKf7lcVvMGjYMp9UCWkhRGA1L55tLXz2jclta4obWJ5BUCD33kq8eUspXjFa2XRqMRjDFV2QAW/A5tsOifrHDpw6qUPKS4SX+SdzAYoNfrVXN9lmVVeyBQVl7nod0Z3bTPNmm/1010rG5RFOq9rSQzrTVic5cPFLuutWWqgmcfRG1osVhgPp9X73ytJscaOV65gIWpjRG+fZg2fqTsV1KVpNddnqEyShknZTxfGtoYWBQGqxXVmz1GlZLNMm7l6oIc3GJW3hlLYYuiBMdK9/LZys4BHysrWdmW1q0GBLbRXbRkOUu/Ww5wgbjyueRl/Y2xwKQMb/14mWvvYG7y3eeW4l76ZQ74ygEyX/vlbQYIH+scaifXtReO9S++Vi/D225gy92WEQ+rgdHWStby8N3vK+O6ctj2Kq1VjeMuwcQ6CBkCYTX+evr8ncet85HudT+eThuLWPq1FrF1N2khy+PKu2J5Xurkjh1SLyb53NEd3dG3n2L77lTwVeob5Ql9sfj7oBB/nxWjjBOymr2j/dK+9LsSAwDKuh0Oh7X6XSwWmE6nreUgWTTdY2i/3NXpo0n4RicpfQsppfB8G+6u0osNnl2mvwv5gNYQAKLd/yotOJqCUVKhGpPVFz8VvOu6rKWypumkfB11z4Exmd5qtXIGTHlHH6eYrHwQpK9ijCnvEX7//fcxHo+xXC4rPrPZDK9evari8HsHjakfuScpta+ltB8ZXvaP+XyOLCutJ2lC0sBYX5qhNqIpB0P9MMZLKvm0/u1Tfqcqd1OApNS+4asfmnRJsU1uHKRIoSZ5kuUWU5iGxi+tjEJ12wXF5qQmc5aPv2zjmsI2lb8sY62MYiBUKL0m/VAj3s4WiwWePXuG8/NznJ+fV/2fQCni6VtAhsrIF0Zru/Ko2ib1p5WZTMP3LuMsl0s8f/68ukuXyoP6bazeKQ1tzNTGKeIbGgOpLih8CEjwtR8JJvjuvo3VJwFxNIZJwEjyyrIS5D44OKjWVSnW1zJvBwcHAFCBsjItjZrOlUQ0FnOLRZonOc/UsU8DvmK0y9ouJNOuG1pedxpfLneTOUobL/dFKf1l30Ttij6Io1MJyE+Tk5Ovn2rvPI/ymZM2B8ao6d6gawr1wVS3GH9OfB4wpgRiLy9XODoCer0SkC0BTwuc2ntkS8CSA7bkTkcHyztlwe6ZpWeSA8yi062G+pGzqI4zdsvMhkEVzubdTdPy1UqK+9m8+Pja9Pl7GYfKhctLeaSwVDfWjXjrFrHSj5e/KxfJS/mv55c3CVnu0t+GSW93u3cfWUHSGtm68/KktkJl6saXR1tD8AwBsi6gV/Yd6+4+u/tVcnPdNR4hoFd/5rLxuCS7O/7yMHp6bhwNfK3LH/7XQVeZpgbeuuUv26nuLtOczzd49WqBN2+WeuSGFNtL3iTdgSp3lEIxvYMM8zaQbz0o1+EpehBNdxTjy/dYPt2TDywN5UPbR8g9Ng/rA7z2pWe/o+6obd3wPT6tSUlnr51WFOrzvr1QytxCH6xL4ie1Sj4hK91QmjF5vpNgbBulQ0rj8DUMLXxK+qENb6piTKadmu8mCp2mRAMwVwyS0i2Unizf61zIyXpoMlFch+IppOxpQrG+QUoRoA6Wz+dzXFxcVO+DwcC5G9OnONZk4NaDpEym/48++giPHz/GfD6vZHj58iWeP39epcGtrXzpa3lr4hdqi3YjVwflrq6uHAXgaDTCfD5X46eQT3kolfyyT/sUiPI9JkvXbTs25mntvK7oQi3MZrNBlmXO5LtcLlUgPEVGjfjkHRqjffFDX2KlLNL3QU3my13H6NRFVIxHSFmdkp+mwEGMZ5Zl1RhkTHl/6e9//3tcXV3h9evXuLq6AmAXqUQ0J2oKe9+awlf+KfND2/k8Nb5vnFwsFvjyyy8xHo/x8OHD6n7XkFV86hqFiD4Ak3LKzSetT2geonknNl5qcsljd33AcigvVA70EQ9vH75xDyivCaDTKfhRv3LTTO9UPpzn8fExsizD6elpBZRqcaWb3PRT3nlY2W5ITh/xkzG0/Dado7R2u8tmivh0rTzgQLx053L5xrzYOmVXajKe8vK5jnWxJGo/Z2dnOD09rfonWWT78qGVIeXFp8ji5Cv3pu1Y82+zn+2C5JpSK4vUNX+sLchxZbHYYLHYAMhwcNCrQFWyEC2tZUvQi0BYe5SxBVPIjeKTFSsBYWVyEpSVwIsFXoknKqCMA7k2LzzO1pW5QfUnEBS1Y355OPkuAVotfMgNLF0XlNWBTtcvc4BXI9414BYsT9zdB0ZbAFP3l3x0Hv74aoqJ4ThDt/yNse2Mh7N3ENu2zMtP4+WkaOSzcZ55G+Ru7vic8u6PW3/mYXg8+azzqL8bhy8P0+6uWDcv9Xg2vn5nrGHHpssyd+vCdasDuMYA0+ka//iPlw3ao598656bmC/u6I6a0HWvDa9Thtg6yaejA5qt2X3rfw5+yfAa+NSWYvocn//d+HS7aZf6obbH34Fyf+87HZbaiUzXZ1Wd2m/7/T5OTk5q7qvVytvuV6uV9zosjVLl+U6CsUBYgdhkQ931xlhT+PnSIvdQfJ97Ci+NNGVmKF0fkVKR89G+/pd8pXKWK0RSZGg7uWpKx1A4TVGZogzfhbriG1IyL5fLKh9ysPrmm28cEHU8HuPg4ADf//73G8scqk+K0+/3q+fQ2fPGGAf810jzjy2YpEw+hRL/0ifPc1xeXtaOxFsulzUleyitJu4xRbQ2xnBevnFO49OmDWr9QlNWUj2m8ON1IQEQfpF7zGLaJ5+UswtqO37te+HaRGlOwBE9c3f+HAIIAPf4Zh/IIGXkfrG22NVYzNtYSD5KK89znJycoNfr4enTp1itVpjP5/jhD3+I733vexiPx8iyDH/7t3+LN2/eOPzayEpx5NG0vvHKl06b+Z3SkWOFjxeNwdPpFOv1uppLfOMC7+e+dZOMz/1D7do3/sl8hTbSlKc8z6tTHHjfaFqmvk21zAsf2+i49NgpFfRPG3SyRv3kk08wGAzw5s0bFEVRzbmpX0trz1qZDQYDPHjwAO+//z4eP36M999/v5Ltiy++wNnZGZ4/f47FYlE7zYDnu2nbTamD1HayL8WNMaaqD94WYx/uhPYrTfplCqWMT7dBwUL5llYB/D5erb+H2lbKGOQjvp/xzUmxvepNlKtv/JPrLi4nhdVO19HmJmmprK0FjDHYbAzynPiYbdol2FX+u6AsFWeWWaCFA5v2uGK6e5aDsoaF5YCXBU8pDL3TscRuXDfMlht7BnMDCwtP+Lpf5oCwvJzLcip/Y2Cf7p5lsu7cMrXp23j2ncJycKoOzFIcwDeHl/FizZ93w266SgoTXxlaf15ONg7vS7H0tTWmm5Ztp8bxt+2+DqjSr3TnvFw/l2csLfLj4dxnPz9djpAsbjw3js/Pgq6anxvPhvXWltF/tTri+SOKrWVD5FufpKxn7uiObopS1+VNeaXE2dc6PsSfrz19ujXAv5clCunqYrKk7ANSefv2tynxtf3W3bh0OyhFpxZzaxKedBjceIn3ldRjhEO6D5mu5gaUeAcBsZr+YzAYePfcKe1+r2BsSInRZZxdqWkjkuRTBGsbzZQBT/MLHVEm3XYZBFNk6WpglAM2t4z1KYlTOpPmLiedNnmgsvXFDS/I64viNjLs0jdiSsWUxToHr2SbfPXqlXPc5tHREU5OTvDhhx9626r2LNP31a0EYzXFEOeR0kZ87SZW95ynHNhJ+UdEVnCAPQaEW8Q1bR8hQCBUjrF0fBNYTBYZx9dHZfjQWJPStyQvX/7kMZicT2h8JqVtTA6fXG3Ix5Pz3WU82ZW0sm6Sb67M9vFvKkub9prKe1eeWZbh8PAQq9UKL1++rGT98MMP8W/+zb/BeDxGURT45S9/6YCxu9St1mZ8VnW+8mvblrXwPitRskwjC1B69x2t69vwcX/fmiY092jrDOnP8+YboygPeZ5XAKKca2LlKds0T0NuRCS/zWZTbWTowyktXcmz3+9Xd5N++OGHGI1G+NnPfobValX7aCkmv5x/aNyVPHq9Hu7du4c/+ZM/wQ9/+EP89Kc/rerhb/7mb/Dll1/i8vLSKcemisYUkjx97SA2znQx9vP2xdddvvaXSlpbStmX7EJt1hL7JG0Tn/KVtVSYUZgYae2Vl4m2XtllL5dCu7RRuVZKrVcKp93nra3PtXUFj1MUBptNgV7PHv1qTHlcsQVR6T5Y2kPaXwJKXcBVAjw+y1jfkcT2HezoYhtX3gfrWr3aeFYe1IBX95mKzuWFSp6sAjp5XHpHFYfKsPyV+wWbb+sm1w7c3abB+VlZNd6Wv8vD8q24VvnRwmQi3HWTTFT2Mc0/xU3nIfPI3207lu/G6+bGcYHIWNx6PPns8nef62nzcDJ96S5ldZ/9bvV4PtDWBWwtaFuX11dX9Tqx8Tcbe//1ruRbJ+xTp7cPiq2Tm+zNdomzD7rN5X5b6abKbJc241vHdJ0OxU+VSVvHSj2ob6+YmoYWt4k+3ifnHd0eojqKjdMUlr/73IBShzGbzZxwXAeR0hbc9Un7scOY0hjNd7qZ1PMD8ZPQOO0VjG3TaW5LR2s7IKbc65SSNtFtKY8QpSgU+S+Px+PyIwJ3SU+mfRNl6FPwNrkQuimwsAu17avcEnY2m2GxWODevXvV0btFUeDnP/85Li4unLys12ssl+WdKNog2fTu4AcPHuDP/uzP8OzZM3z11VeOn91E6WXZdpDW6icEKlF7l0cw8wFeOy+/iTwhGWLE8xJSnjaxTk2llPBNFpnyl+eHrJB7vR56vR4ODw8r0CK0+LzOTcB1jltafcb6TAr52qPWZ+ScdxMKZikT5+fzl2Fi6W42G0wmE/R6PTx69AiLxQKTyaQ6UhYo75NdLpdYrVY4Pj5GURS4urpS55SUuVeWSZZZi3DfGNa23kNjg6aIp/dYW5FtUbs31ddeyU0DL5vKnzpGSp4ff/wxsizD2dlZdRxvqdBLu69abpABW26yzOh9tVo5AGZITl5G/X7fSWM0GuFf/at/hfPzc/z+97+vgNoUmaVslG8ae4fDIYBy7fDgwQP823/7b/H+++/jo48+quK+8847+Prrr/GrX/0KL1++xHg8hjGmdrT/LpTSz1N4+NrvruMRXz/4+qwFfZrNu9e5Pr4N+5nQnO5TQskw1IZD45WPYsqtFOWU9hyjXZRqGvH2nmXuBxa+9qnlLUXZznlwt6IAlkuaP/IKVCUL2TKOPYKYAFP6JSCWjjSWYfNcs6ilPFs+dDSxBYGzrbWuBXzlr03P3l3LgV3Khy0bAz8gC7ggLxweGgDbzi3FXfOT/r4wZbhMAWL94XUe10sx2UJzrw90lfUW4G60dxcY9AGA9OyG8fv7whJvfzqun08OmZaM477XwVNsrdslD/olP3vnK33Awd9dN/tLPPR0ZV3Uy89XPgaz2Qa/+90lZrON0vbrFNuj2PzX9U4pcW8Lxea4t1nPfEdvD+2jzaTqD7l/aB3XBNT0hSE+dJqSDzglXT2P00QeHob+ffI10Zvf0f6oC0yiKAr1REJtniqKQj3SuAlxPYvW3w4ODmpxRqNRLexsNsNkMqm50/VJmmwanuXTrX5njymO0ds+WV+3/KmAbGoYqcSKKUlS05dK31SFqiajxqdrarvQvI5FtqwLssA5PDzEYDCo7np99uwZZrNZrX6ltQf3Dyl2NCX2aDTCe++9h+l0qvKT720VU00UZT6SCxgpRxsFrk8hn0K+/MTyqQE9TdJrUwdNlOY+gIcf2ZllWU2pel19OsY/1d83prWRyZd2TGEqeTVtF75wTce/FMBJ4+8bG9rwjNFqtUKWZZUVLFBahQ4GAxhjqvshi6KoxlEtXQ3E1uTx1UVT4EZSCAjk6frkkW6hco+NRT5QMzRfa8+pefCRr9/cv38fvV4Pi8WiOmo31OY0eemdj72h+Yjuum1iySrToLjvvvsu+v0+vvjiiyAvCdBoRGGyrPwwie5EHY/H+JM/+RM8evQIjx8/dubJw8ND9Pv96vhqWd83tf7ylX/IPUayPTZdb8TKYl97gxDfJmNqVxSbs+T6hfep2FgUCuPbU7TZt/BwTRV3Tfh1sV6M+bdZz0oZJY+iMFivCwwGdK0BV3bUjwY2FaADcEtVC5jwI4hdN5s0yVQ/triMVwKgxJfKupS9DA8GtNlxnOfMiDJwAWDKD49n08QWzJQWt6XMBHRKq1kZh/JbukHwpvguT562W49w4to8umVu03SqeeuuW89K8jXP/apE6kCcSD0aVw+bojfxvZtau0QUWLVh3OewP+ehpSXTcJ99abqy83Zs+zlEWM16th7O5t3NX32MkHzq/j7y1wuXo/xfrQosFhucnS2wWunr9ZBb073id5F2Wdff0beDZBu4yf6Qsk7y7a+1dWsq8f2ZT3/A936htaJPH89l9KUvw8bGqH3r5d4Guok2u8te1EeavoafjNqWr0a+/kEGOfTxOQ8nr9AE7MltGh95pUpMfi3/d2DsNVPTDXCs8d/EZNIWIATSNvKhC8PbKLhu60J0n/JcFyDLiY5knEwm1VG8JANZ5hD4BZSDLz+2UFN4ybtgjTHOnat5nmM4HFZlSVY7ZFk2HA7VgbVror7YtE7zPMdoNKreYxZM+6KQoq8t0MtBkhSltiaHpFTreU40idI/HYPKefjGnJSFSEj22zbmNCHennn/TQm/y6JRU5K34dE2/VSAVm5emi5GV6uV0+6yLMOjR49gjKksBgeDQQXcaSBN6tzXpH9LkscKd92m+UKW13voDm1ZHrx/83YY2yxSenyekXXaBtwiMJ0A0Y8//hjHx8c4PDzE2dkZPvvsM+R5XoHtqRaykvjxw76+l5oHCsfvRHn16lX10RSddJHSH+ugSZnHR48e4fj4GGdnZ9U9usRvOBziyZMnODw8rHjkeY7Hjx/DGFPdyUJl1uv1vF+8XifFgNem/SWlvcr+ITeS3D3G99tKMSAWsGVFYTebTVW2vjYlx6vQ2KrtPXj/5H1Wjq/a2JWi+ArFkTJ32Sa0PHE/Psa4AGWdj9wLaLJmWYbFwmC1WqMEBDNkGR1ZbEEZ6g5kvVryLMHELENllVrGp2eAQNPy/liyluX55BaxNp3yvtpMvFM61iLX/lo/CKCX/FGzluVhSFbA5q9uJUv+JQ95d6yNY8FXWea8nXPA1nXnZOXT/SVfy9MX1o3jhvdRHRDuitKnndSAvA2kpSP96qBoGCj1g7LuWsi6heLrPEL8jQqSSj8Oguph7HPIre4nLWL50cOuZaz1I3deHlpdQAGkZZ5WqwKffXaB6XSF9br9OiZlDfRdtTAbjUaVnoV0APJDxTv6btHbvh7edc/DT6QCXB2Y5C3XuZq+U9ujc/KBsHd9MJ1uc5v11W8qaXuppjxSaTgc4t1338VgMHDcp9NppR+W+VmtVjU8oku6A2M91IXScZf42mCo8YwNgJpMPgVtCu0TiNWoSZyUdFIUJ234NokTGrRS00iR6aaAelJCE0mFcUqbpXtUNf6z2awaFPM8x3g8rniS1RnxDU30qe0lBkDxX/kseWnpNVWch+TwpamF1xRenFcTwCaF2ijxtXixNq+Vs1x0SqWgryx8bk3KxufvU0T6ZNgnaWWVMgc2yVtTebrg0UWY1P4ckllrwxyEo6Nb+v1+deyJJoesm6ZpxupLa+ehdurjn9p+m8gf8uMgAx8DQvmVY4UcE7WxwcdLyuUqMQ3G4zGOjo5wdHRUHTltjIl+KBQCWUIky9W3btTKkc/dk8kEQDnPXl1dRTfOoTSLosDBwQEePHiAyWSC1WpVpU9fqA4Gg+qkAvofDAbVR1XEl89RXYyVu65rZVtJBdGapmMBGn//66pM9kldz3O7zBcSJOTly48C18YGSpvc+LtMg8upjbOyb6XsTULE5fLJu0uZ7RpGzmcahdZ+lKf12lR3LZbzKvVFwN4PC/bOQaNM+QUs+GPDl+lbPx4ny2wYyjb5ATxM3UKWg6AcgMwECAvHWtaXFrlbK1nOzxg4cth3G8cXzuVh5XLz7lrLSlnrfcWVz3UzzK2elyqU0nTcpifbUD18d+Rv82nphgNpPKQbLz/u57Zdvkax77pf/Jhd/i55Srlsf9ItZ6UsgAtgyjCuTK5sFF+Wj40rLWR9Yepgbpzqeed+xK8oDK6u1phO7dUhbcbl2Nr9Nivy21LqHEnry1i4t5W62C/fJLXZA3bB/ybJt07nc6RvzcnDNSUff21vF9s/8zDa3vum9mZ3dHuoSRtIwQa6alNkEcv1Hev1Wr2uDrB64y7S1vpGEhh72wf6fciXyi+l8fgopDD0WUvsen42TzukNAhR6I7BXUlTYl2XwqZtWinKmBi9DQq0VJLtg9+RSiCEL478OosUtrzdf/PNN45lLLcsXa1WNUtTDga3LeNQXLkoCfEgmTh1scCSFGvrbYATSZqSWAsTUrS1VYLLeya1MpTpcgu/0OLfp+j2yUJtUx49ehPU9fhFbiHQyBcvNDeGgIXrXmu0Bbx4HOLhu8dTS3OxWFRWh1dXVzg9PcUHH3yA8XhctVWyHtTKn29+YunRmJPyZbxPAa7V5y5jiCaTBhzwOUM7DqauiPPLRWVJvLjVMV/DSCUPxYvNIXJMGo1GODw8rO5IPTo6cgDOfr8PY0xt3ksZu/lGQlO6tdkEkSUvzdm//vWvnTLZ9cvQDz74AD/60Y+qawuWyyWyLMPDhw9xcnLiWN5SHuUxQHTvbJ7nSZa6t33/kkJanfryTWMFjUVdzElaGd6mcm0ihzbe8xM8YuAr8eBzo+TL40nQ0Vdu1Lfk8XChfWITknu01LkgZX5u0xZSy4Wn4Ut/szFYLjfI8wz9frHtAxwcrNNmU1qz0m+W8f/ScpUv1SnZ0g8A6K5ZU/mXd8zae2TLcSpjYXULWbKmlQCODQeAWcJSWBsGLC6VD3+vW8DWw3M3605pum6o8k0yuGTTq6cheephJD8/ae1RArLXRS4Y2YpDJK7mz92MAoqWzzpQqr+HLGHlu+6n8fXF1Xnpfr4w+rPfMla/MzbdItZX1v7f+hHHRaHx7G5e3UU/uQ8K5S0139q6EEC1LpRznNyP0bpzs9k4p6rJPUBb+W6CbqtcdxSmEMAq26G2XpL+oXQkz5AeUvYZ+d5Wj6DJ+F211vdRE73ObSJt3Ex1A9rv4WJ85TxBYV+/fu3VWadQSO8f05Vo/TcJjL0Nm/BQml3IsguPkBI7hVIaZ4g3H9C7UL6kLog4paapKQ1Dz235hhZUKeFSqU38LhfE19kP2/Z7GS9Uv752xd352fJZ5gJzTY7SbDsppAAtqXFDYZso4WTY1Dhd5JUvHrR4TSY3n0KzqXwpCnrfxis0Rmj5IuV3274YWmC34dWk/XGKKdx9IA8PYxUv12PZuivtkgbfoPiOS9U2V1zJTm6z2Qxv3rzBxcUFsqz8am80GjkfZfnKX8okw4Ti+caj2IYgtGn0pS/TDfUt4uHrE7FFdKrSp+kagNddbFzieby4uMBms8HFxYVzhL92VFqTfhNaQ6Vu2EPpkYILsJuatn2G2vVgMEC/3682K1QO8shu/tvr9fCTn/wExhi8evUKy+Wyxt83X3a5RuIf9PA0fbSv9VlKHXS5oU9pN2+T8iCl7/L27pvjeBweVvLS+Evi/YHLGBpfeZjU+YHCNplPQu6hOY+Hkx9ayDixsVjOSTzsem2wXBoMBmYLiJZgYVEQKGrBDzs28l8OFNExxxZ4LNOyIGcZloBYaSFKblzOrHInHn43KjsrD/m7dZbVwpQySD7W4pWnY2V274SVRPnivLmbrRs4clDZWRkBeCxmbZ7ILXPCuGUi3Y3jtw1Zixui0LDV5TK0Ca9QWJl/GZa/2/HKfbduYaCV3ONh7XssvhvHhuXu1q8OYvLw1D/dX5+b62d5a9avdV71MnbL1kfuuGb5TyZrzGYbZ1zS9vC77lOuk9rs1zW/0HqCr69lfC0OffRKfLVrscg9Zc5rSjIvb9NaaV8U00XcFF133aSsw6T/LuWTwkeucVPrSlsbh6iNPvTbTk10uNdBKfsD37o8Fj8l3L7qnc8JRL69mU+OJvrzkD4LeIuOKd53w+xqsmxamSFlo/zqq0viisKUATeFn4+kEjqVV5NOLL980JSRUul5HV/k8DyHJp62yuHrpNT2oU3Osj2Tn8yrvLvPd+coxaO7F7mMXJHWNA83PQHeVN23bXd8gkndGDUZA0Lxdlk0EwAg02u6iOTtWtvk3XbyzXtdKAK0vqvNN20WOSG6zs0UjVd0LzG1qaYL0tPTU/z2t7/FwcFBda/mkydPcHZ21uncz+tX9lG5kZLKbwlE+fjH8qqBhr42wsNxeTWZtfvHU0CXVPAupCziYyCVFckyn8/xy1/+Er1eD/P5HIvFomor8/k8KmdIjtgc13ZtR3VM97QSH9/d2hrx8qHyIN79fh/D4RDz+Ryr1QpXV1eYTqeOrFzmw8ND/Lt/9+/w29/+Fv/+3/97nJ6e1tLaJ1G90hHiVIfXvV6TgF/b+fW7Slqfl/VIv8PhsGqjBP7zuNwSp9frYTgc1tYAmrUrjQ+yHuko7sViEQT7eTy51k5pD9QXNfC4CaWsmUgmLT/aGN5kj8HLbjbbYD4vMBhkyLIe8ryABUstoJjn9j5ZAlJ5mLJ+rIwE7AIZ8ty1YC1FJStYezesawlbt5Dd5n777AdpSxkt4MvLKGMAJ5dZs3q1ebX+JR/+DpZvLguEm+vOQV6Xh41Tutfj1vly8rWp1HmsWZve95CZyj8UTvOzbnVQkJ7dMaIMWw/XxBK2/m77sJtm6WfD6/5+Xq6fDrQC1EfDlrEUprRytX7cIpbClb/Wvyhk/kJlHs9Puf4z+OKLKV6/XlThb1r/8DaR1PHwtSYRfcx6dXVVW7vy+YfrkPhatStK3WNcB+2qN/m2t9HbmD9tvQek71XbpCfXarJf3cZyuqPrpy7bga+dd00SN5DpS+JXJO1C6/Xaqz9rBcZ+FzphE0A1FKepUlbjp4GNkmcqmNCF4lvbUKem1zSttl8pxBQTUomWAib70m0jx3eNfAp28qN3n3KpiZKGA/EyXd6PQgpNqWTn7rtMFClARQr/WFnG0qCwIeXYLuOCVnepAIl8p3jcKiu17mJpxMbnpvWtgTNNKTS2pfBrAqS2kY/3L54OKZpDZSpBK1+YFPl84dqOt03mMsonbUq0til5S3eK2+/3cXl5ia+++grGGBwdHeHly5eYzWaVYl8r35R6jq1JfP1Hy4sEFkLpxtKPAZv8N2W80PIUao8yDFHqBzwp4y3/SGMymSDLstqdJHy+0vhrY2cqiMLjaHng4LrGi6fRds6T9XJ2doavv/4al5eXWC6X1VHNi8UC8/kcz549w6NHj/Do0SOnvdF9Ldr8vW+S5aB9+Ee/KfNJ2/Tl3CI/XKNfbXy+Dnpb1rm+cZNAQyq/PM8xGAwqcFTOMaPRqGqTdOc3J20NENrPEC/tyo6mlFL38vqOJus+uWYPrXXatMOUfarbJwCgBDg2m8I5EriMWwKrxpTATZ5nlR8BqdStyzD8HlgCUPh9shYwBbs7lrvBayGLyq/+a/04yOm6SStTbhnLLWlLvzJtOP6UNwtMxyxlqT7k/bg2vpXVjVPnZck9Rjpj4WU4Kgt/u4g1s30MT22G2Fgc3b8O/Pnf62F5O/a5tXvnc4991+LUn2VY3U/Gs+5GSSMMyLp8dcDW/trjiutlra2X9F965v8XFytMJmvM5xvWl9wPE1Pm8NDa1KadPq7fJkrZj2nls16vq3Ul8Xn8+DFOTk5wdnaG2WxWxadrYL5LtEs7eNvaENFt6QOhPfuuusUQ+fQrbXnw99Qy5R85pMoj187ftb56G0nbz6RgX6k821BM9+aLk6or1XSWsXhN9+B7tYyNKd1uiq5Lhi4UIhTfB8Zqedn3oEX5ilmW7iqDTyHZlveuk0mbNNuCa99G0izlfBsHn38qGWNUZVYsPR+vXWS5CeqqHEP8r6s82swhvjFDTqix/tnmC8AuANmuqM1c4ANmNABVA8FCPDWAKJSexj9kmdmUpAJEm0tlHvgzB2Ob1LMxplIajEYjnJ6e4tmzZ/jFL34BoAQ+syzDYDColQEp/1MAQZmHpmXH2zBZ/6a2qVB5SEBX8ozxl+2Rnuk9Btpp7Sq2Uea8ZduXYBj905f5b968CS7oY8TbaazeQ7Lz/kdtiyz8NJC9yy+gsyzD06dP8eLFi+oueLof2RiDy8tLfPbZZ/jkk09w79696p7d9XqN5XKJxWJRO574utZN8jhpumuMr8+7WO/7SJtL+B3GfL3T5fi4D7rJOdE3xsjxoiiKamy+urqqlX+e5zg+Pka/38d4PMbl5SVevXpVtVlfmtJNG9v5HfQ+0gB3TYkfmkPX6zV6vV5tjmlCqfGkDG32rHIek+tyY8rjivO8QL9P94JTGI0f8aJ7W+39rNYiluR1gd0yrgVniyLbppVVRyRrFrIIHlXs+tFxyZQWGCDqxrfPxpRp18OF3utuOh8eLtXd9Q8BsxrApfNivllaG+SAdJfk8kzZSzblGXKT+gz5bBx36+8HWDU3/Z2PYfZdi6P727jlP393nykOt04ld9v/+K8NK++F5b8EvMp3eV8sz4NezpzqOiaZf2MMnj+f4w9/KEFBPm6H9lc8bCrd9P5zH0TlIvdANIcsFovqOgyaS//4j/8YP/7xj/EP//APePHiBQBgtVrh6dOn2Gw2tf1bFzrUb2PZ35GfblN9c1l23Zek7Dc13ZAk+jiC/Pn6VgufwvOOro+a6reuU4bYaW37/gBFy6/UncT64V7BWC0Tt2GwCiHlN0mxLw6aDKptQKc2pCkVduET4pUCmmhgixa3vpHXlRqpcviU+DFFsOZ2G/rIPslXF/JdKtplGE1BKfmFJnR5zA2/n9EnNwdDZDrXUYehthfqH10vFGO8ZB22Jb7Qi/GU9SzHA6ozqXjVNnRNiYNV2n00Pjk1f+mWWoZN+KbylEpPbu0XSqdJGj7SykC2hS7IB8Smysbdmiinebvr9XqVIj7LsuoIFXn8cUyG2HyWqvDm4B/NraS0pzbO7+7W5EndpDXJS4h84ISWjm++DpVfSFYeVuvv2toklo4WjsoeQK29xCyWuVtRFNVRu5p19z7mL2Ms8KsBh7PZDF999RWOj4/xwx/+sDrGeblcYrlc4uzsDGdnZzuN002J1gTvvfceHj58iCdPnqDf7+N//s//iclkUinxrmvNxts4X4uQH7nfZroN8smxQhu7NpuNc6yUlJusbw4ODrDZbHB4eFjxDR1X79t7UFryKCs5JnOK7Rnl2EOyHRwc4OOPP8bl5SWeP39e3eGs3WEdKkMOCmtrA0mh+TvWLuQ6Tet3i0WBzSbDYFAAyJHn3HLTTZOsY+leWftb5XAbzlrOlmJbwJXkKo8wzirwt5SzDAtmIWsMD6MBsaW8fuA29gyPn+8dapgS5AyF87tza1cdBKVy42UE4WbDum6hsHWi5nEdc0VqErFw9XLX43C38lkPb9cO9fDkxtN03dJAWHrX43BrVemfaimrg5qWr10fWVl0INaCuhx0pbUVhJu/nGPlqc0vZRr1E7skcf0GENZZ3ob5FLj5eX21WqHX6+F73/se7t+/j08++aSS6ac//Sl+9KMfYbPZ4OTkBABwdXWF58+fAwCOjo4qPuv1GqvVyplfZPtKpesYd+4onWK6mF0oZf8WCt90X3mdsu3Cn/v71quh672a6gHuaH+Uoh/por5C7em6sK1d9IG++T3Uzt+aO2O/zeQDnfY9+IQUoykNcV8LwVi+m4AMKbz2nYdU4GrfMnVFXcoXU4ilxG0LxmZZeUQoLXT4HWBt8qFNSrv2sdB40LYOmpQzL2NfHlN5NI2nxQ+Bslw+7tfv90FKyJQ6aluuBGbsYpmUAlZ10fdifUcD8GJtPNTvQjJoFKqXfY6NKYtAn5IlhTeVJ38uiqKyqBoMBsjzHNPptHLn5S77o6/N+8pPAyG09Qcp17nimx8b2/QeW01+TlKu1DqW7ZPnMxaP/1I8X7pt1hWctPvS+bOvbfsW+QQC0p2u/P4TrRy1eY2sUwFUHwOE8tJFv6NjmoG6Nel8PsfXX3+Nd999tzo+jv5XqxXOzs4qC2Oepy7Wyb55lvrnkydP8KMf/Qh/+qd/itFohF/84hc4Pz93wNh9rtdl3yUgVh41LfNxnUDx20Jam5GAK60XeB/h/lSuHIw9OjqqrLfleCfrieqGfwCxWq2Q5zk2m03SWBhai3GwUh4Pt1qtMB6P8cd//Md4+vQpnj59isFggOFwiMVi4RxfnFKWmlwxxZovbpM5QPuobrEosF5nODw0yDKDXq/kVwIwFmSUIGyZHqpfYwA6lrisL3t0sQVd6scWl4AsyVT6WZCV/7p+/LdMn7vB81wHYd241s+CopwHavF1fmB8bTjy08LXefuAWS4jIK1mffzq7i5IW4W+Af1tOE0+t6THr7tp1qz8vZ4Or6sUN/edr5ni7343/9HDvnByrcb7ZP1ZuqX/uhax1k+Wuyzvejm5fm4a7tHHDmfPeBjTAfjWZ03m/etScHdFmnzr9Rr9fh8fffQRPvzwQ/zZn/1ZNUf85Cc/wSeffILT01MMBgMAwPn5Of7u7/4OxpRXw1BZTqdTLBYL5+SRO7qjrimkF0sJm0pyb6npL2JypOo3KGyKfk+OXSm6rzuytC+MJlTeWtvx6dh9bSA0h8UodS/UhnbRV2phYvmWdAfGfkfobfu6RFPO7trhuEKE872jZtR0kR9TsDRVbO9CbSYnjULgQlOQtWmaqTKlUJOwMaAqZTPZlJrWPQEVXC4CY5fLpaO0lgsInlbMyoPnix9HQZZUb8s46yOpLA4BH74+3bbeJShIxMt5n5vk1I0EpyagEFfGy6O2SBFOv/IDEV+5+pQymoKG0tXcNb6klCDAj7dvqfiXijOZb8mbu0teGsWU+b58c/fQfNRkvtLk5+78tA4tPg/bBHzmROA93YPli8PrcTAYYDQa4eOPP8ZqtcLp6SlmsxkuLy9rp0XscxyjMRkARqMRLi8v8V/+y39BlmX40z/900qOy8tLXFxc4D/9p/+EL7/8Em/evKnu8dTy2VQG+uWAnKy3Xq+H4XCIDz74ACcnJ7h//z7Oz88r4Cx2UsYuxOsuyzJsNptauryOR6NRBST6+A2HQxiz2wdobzOlKJtWqxUmk0l1jKEMP5/PYYzBaDRCv9/Hhx9+iBcvXmA+n1dp8PZF/2RRK8d1ssTlddkkD9xdKgWMMVWaRPwDjCzLascrh6ip0kHOSdrHAz6K7f3k/GGMwWpV9uVeTx7dSzwtKMJBWP7LQm/dSytNO2aXPK3lLAGyLi+qRnKn3zJfVNfWaraUKdvyd4FbykspAw8L5x0CYC3LBoIff9fceB1nrFwsIOXWCy9Prb5ku0gJEwqrx+N1GqfUgKlru0RunnDW3Shu/vhuf5ThXADR78b7kp+vL4wxljfn6/OvP3PgUsbTwVnuxn/tMcUhP/c4YhvWdzSxtqatnoS7LINSltevF3j+fI7JRJ+bQ+Oqz/27qsOifC+XS+dEB2PKk4ZOTk6q+a3f72O9XuPw8BAPHz6seOR5jvF4jO9///t48+YNvvzyy+pkCjp15ru2Nrqj20m7fGzRBd/YvjhEtNfwkbZ/kmm+jf3wpnGXLueGLvKQoheK0a55uq3z5R0Y+y2nmDIxVaGZujBsS21BulA8qWQKKT5Dbl3nMcYv9YuXNvFugmKTfUr5+sLE6lIDdni70X59ynUpxz7KO0WRpSlPeR5D/ToVJGmSN0pPUwJK+VLBlKZ9To4FPD0NUJQK7lD70pSNMh++MYfL0pa0ce46+rqcJ3xAVcrincfR7lKQPEO8YnnXwLIu6sCXPm9XTdKT44zWdiTwqcnQtK9qcoR4cBBIysRJO769TdnH2oY2jzbtw7H0fW07lY82Dobqr0kZ8XbCjyqOEY15vV4P4/EYH330UaXIMsbg/Pz82tcQdNR1v9/HYrHAP/7jP+LTTz+t7t/M8xwvX77E6ekpPvvsMzx9+hTz+bxmPcjH9SbE51N+/DP5SX7Hx8d48OABjo6OMB6PnftE+bgj5+ldypXqjeqOZNXGDSpLrTx4mF6vd+vvlpXUxThOlLIOIdCbyl6O8XSU4WKxwNHREY6Pj3F2dlbdNyvT4Wn3+33nWgz5ERflNQS4pu6ZfOtdOc6lzqsxN+7eZC2ukZRTm9tlusZk2GzKu2M3G/tRHQdD7bHEgDH2iGLDgJMscwEfOJaw9G4tXUtZLGhJooWmDJsGgasZcy/T4uCom28OwmYOPwgrWZ0fvcMJQ8cMl2MYyVmmYfnYtMrfutz2uW4xa2Xz+7tlZ5i7bmHLm1H6dG8QafYNeDWP6+8/MbcuLWNdfvZXhtXi+o8klnHK/zoPGz52LDF3D1vGWt66JayNb5QwWvnXy5P7yTRtWAv4rtcFptM1Xr6cSwbJFNqLXjdweFv0TfQRExGVyWg0cj4wWi6XyPO8+hCt3+8jz3MMBgM8fPgQs9ms9lFj2zw2Xat0uba5Tt77orb7ru8CaXv/pvvb0L4kta2EwmnyaPsNvk9K2c/7dGuh/HfV9nfR671t/S+kS2nLo6s+3AWfXfKxrzh3YOwdvRWU2rhTFExdAxtv20B70+RbHEqFkDZBp4J5KTKQFQmn9XpdKTx9liWaUn1XAELyI5KKdlqkaHdINuFLlFKG+wZ72lAoHalUJ+L368UUgDHieeJf5Gpt9ttAWr/jCmOfv4yfooTVgDAOmBA4cXh46NQBbcpl32hbB5oC3sePW6jF8sd5Eb8QINB04yTHIgIH+MaHnxIRU+yTH8kSU7RrcoU2VvyoTi1/3I9brEu/mDIqNtZRWfnyINPxzU2+OaENaXmUbZ6eQ+0EAIbDIXq9HqbTKYbDIT755BMURYHhcIgvvviiuj9Lpr9Pku2p1+vhV7/6Ff7jf/yPODk5weHhIX7+85/j+fPneP78eWVJ2yVRH3j8+DGMMbi4uKjkomNov/zyS7x48QL/8l/+S9y7dw+ffvophsMhfvnLX2KxWDjKQBqfugI7id9oNMJ4PMZkMnGAPN7eyNIjBJKt12tMJpMqj8T/ts9VXcinzUkhhQ4HwvlYTOVYFAVevXpVWcnOZrPqOgSfhflwOMS9e/ewWq2wXC6xWq2qjxI4f14/mlzaeBeqd94ei6Ko0gXKdS/dIZ1KvrS1NRYvDz52NwFiU6koDK6uNuj3c/R6BUoQMQPp5TnYYgyQZQXyvARwyzzkyPM6IJhl9p/esT0ymJ7tPbL8jln3nS9LS9C3BIPtrwWDiX8pJ1nSUtlKK1rAWrByQNVUcpf+vN4s0GvDu2CpdXMtiTk4a9Pn/QlCFpum+y79qdwyyKrnaUniZe3mLUzd6vldsLFpmq67zqv+rgOFxug8yL3uxtfnvneXpxZO8jdG8pGgZ9waVoaR/nW3ujWsdCdLWPvrKyutnCqXWj55mZDb+fkSv/vdBMtl+ppAG/tiY+Ftn8O7JJof+QkPdG2HpM8//xy/+MUv8Ktf/QovX77E8+fPcXV1heFwiKOjI/UD013Wb03rYZ/19l1qE7eVmoDLsTVYEz2ApkuJUcpeMkRyb5zCJ1Xndtvpbe9rt72Mm4LE+wZutXbedt4IgrH7UKJfJ/99phmq5JBSMhY/ZSDuqoGl5kF7T00DqJd51x2+KQAUy8suk2ETcKtpOXRV9xpp5XVd/TO1nvjmpMmgHArLFWb8iEbfYmIXZVXbsHxhFFMgpii5UsjX/1PLXVPUcdlTQauYjJKPBEA0MIN+tfIMpePrf1KB2oZkOdyGRV0ToIuTT0nsmw/a8CIesj67ptR8d1XvlCb5+QAC/huTg/ORCv4UwJGe+SJT9oc2Msl4Go8UhX1q2BTaZV3mc0ttP6G1ojY2UJ340vbNYXSk23g8BgAcHR1VHyX5QJ6m1LQuePg3b97gN7/5De7du4fDw0P84z/+I16+fFnJJ60OtXGfk29ukmPGwcEBjDG4vLyswtCa4OrqCtPpFJPJBIvFAgcHBzg+Pr5WELMElHpVmhoYy/PlGzvIGsQY+8FZ27p6W8g3Bsl+5etLBK5L/6IosFwuMZ/PcXV1Vd0xK8dZmQZZxsorFTSZtfbsG/dC8wX3K4oC0+m0+rjBGFOBzTHlQ+peTitbuabwrc9ClDI2rdflnbHl3bCoQE76N1sQpwRisq21bGn9aQEcF1i0wItrISstY+2vTYt48HeWIxDoWgcQS7esAjUzESf0XL7zPNTTt+GzjM/rHHS11q8Un8vDeVoevJwgwlC7tunaMgZzMywOb3NuCckmY/21vlBz4r7iPbQnC/FpFl6TVwvP3eprYvkcAhb9VrCamxs2bkErw3B/99mG1cJp/Mnd/vrcQv8+a1lfPcXbgYxnxxeD+XyDq6s1Li5WIoy7BpYUWre45VIfU3VZw+siHu465/c26fE5lj6eB8o8LZfL6iMnWiNNJhOcn5/jzZs3ePPmDZ49e4b5fF6lO5vNah/f77KfvyM/dTXHd0GxPijD7qoj3acOVyOfzLE48tmno0jl6xt7UtZ+XZVXkz180zJrK89t20e1bZ8+HV0sXEiOptSkb4b2SbvwT8mfL50gGBsTbtfGdBMN8bY1/ja064AeU/p3XUZt+d3WttU1b+0+qn2nmcK/C8V2ygDHFf+SYvdmpcgQ8pOLAQnGpo5xTRTvKUTH6yyXy4pnr9fDaDRylHmahWyKYo77+5T9KXQTintf+pIPfeFHmyxugedTkvq+akqZC1NAp1A+Uug6xgFffXLwQztqOKbE5f+cnxZWpknPXL7pdArA3q9KMuwKkHD5UjcuofR8Gw9jjHNUNuAf71L6WCiMbNe+o6KlmzHu8a2xTZlv7PGVKQctQiBDChHvrvrIbdosyTqgMry6uqrKrdfrVX1BU9jRkboExk6nU/T7fQwGg2q+6ff7GI/H1fHFnEcTalNulMezszOcnp5Wee31ejg+Pq7aCr/nlI9JbWSksuz1enjvvfdQFAVOT08rfyormkO+/vprDIdDTCaTCsiiO0D5UbMpFtZNymW9Xlf/BKbSHeiUJo0dy+WysnjkZZTnOY6Pj3FycoI///M/x3w+x29+8xtcXFzg9evXnW2Ub1O/0UiuEcjNtwYm936/3C6T8pfuhgXKuWg6nTp3zfmI90E5J/J0U07xSP0Km48Z/X4f0+kUf/M3fwNjTA2Yj1Go3/nmw16vV41PVEacl5YPKpcm87kE7RaLDTYbGjMzAHnlB5RWqptNCdxmWa6CKzQly18uEj1nWxCSW8jSv3y3//auWG49awy1P2sN61rActBTs5h1/UiuLLO8t7llPFGFpzIoy64EUYlv3QIXgkfpZ935nER8DfNzarHmZtsVasTljFF4iOtW4Upl0ESOurupufF3mUbdr87DtvF6PLtecPnLflEPpx9XTO88fP3dfZY8ubsbpvzQAqjfA2vD1y1jyzjGuTNWlp0sW63MtTKRaU6na/ziF+dYLt1rFSTx/acvXL/fr/Y3xpi9nBJCsuxKTdYAbdPjHxXS3FwUBX75y19iOp3i008/rda28kPSxWJRHUk8m83w8uVLZ17iYXeR8Y7S6LavGYHddaT72Jdqe402AFEq+finrkP5fjTG97ZR2vpi/+PebSNNnxMK810jrt8KkQPGtlF+tRGqS2rLk+LJ+D73rge4pjJrilPtPaYE0Hh2XYZdUZc8u5BRaw8+wCulfbRpX7dlAE8BX/gvUWqb67pNaXVCSjEiuWCXYX18eJ54n9DChOQL8ST5NOs0Tc5QGjIvqYvM1Dbpm4xDfaYNaW1MG8991mNAs/7U5SKjy/JIqZe2gIo2t6T2zdA8lSKTHB8pPH2QAJQbcq5E5vf7tZ3T5LtvQ57S13x9S5Mvtb5SFQQ+/1j/DPn55juNd5M217R9+tY8KXW+S5/3ySnrhLfXNuvklHh8E+xbc8h5hN9ROZlMMBgMasfsarLsg7Q5kmSk+zoBYDweq0dZx+q9qzUEP8r7m2++AQC8evUKFxcXlTWhPNI8JFcbonIhIFo7ApfKj47PlelTvNFohI8++gjz+Rynp6cwprwveNf1BVHqWHHTlLp25+s6Kj9jTHU0MYXxWSpLXvyIYH70uy+eT6a2ZUn8lsulo9xP3UfGZJRzH/lxy1ueXmw9nZofbe23Xpegnz3+1z2yt7ScpftiraVr+czdyB3Vf5kGB2csEApmIZtlbhxWilt5XQtT/mv5ls+orFgNwCx03bajWau6cbLMhuXy2PLkAKtrLUu8KJ9uWva4YyofK4PbPqR8tj45AJZVYXgcG5ZJ720r9eOOuyKbZLidhpqx61cH//zvRvXnMmnu7hrNdauHD4OsOj9+vDD1Yz0sT5f3NQiLWRnWylGPY91kvDofmReZD0n1vGt5tL+bjcFiscFqVQg+7pwdWy/ysZSfDNJ2vb0LcXnb7Ku7WpcRL3n3+mq1wmQywZdffol+v+98+PP69WtcXl5W6yig3EMSsN10L3FH3dBtKetd16xN9OGhPWysL8sxo21a0i2Wf9oH+cLGqInMIR67pJGyzo3t465rrL3t1EYPuCvPJvuULihU96n7E95vfOSAsfvO2D7477Ih1eKHlKg3RakNvu0g1XUZ3kbah4yhsmyrKCc/qbC4bdRmEA5NfKEv41MGshDxOqFnUvguFgtVXu05VYYmmw0Kl+e581Wm7w4T+poTKO9HGQwGwa9pYxS6r3EXSlEg7pJuk7hN7tfV+l0KSNWUuhyPdlkct02vaVq8TJtubrjFV5aVdzsOh0MApWUgASRAaYEzHA4dQKItdTH++uKH2pSmqOZAFS8TmYYc6/j4kmVZrVx89ytLvr6y8IF9oTzLMUACihwc0BbCsi2lrn2a0nXPvaH05NwlwxKYGhsLyH+5XOLzzz9Hv9/Her3G+fk5AKuY2mVOaUO8TvkJEFmWOXdBt1E+xMJQ37i8vHQsTfk4R/ft/vVf/3VlkZFlWWXx1+/3hdLXAqZdjCHGmMpamR9VzInknc1mVfq8zZD/eDzGv/gX/6Li9/nnn+PVq1fV0X5txunroK6VuD7iawBep6TYffjwIYwpAezNZuNYcPvGb14Xy+USb968ceqGfuXYxv+18di3fw2tX3m7JYB/F5Jp8rGK0lksFlitVhiNRpWF7L7Hl6IA5nODzaZAv5/BmBzufaP0kQWVJVnGlvfM0q8GspT5tJzoucy3a4lK/nQPrJ1q7V2x1vpV/vM7Xl0L2LhlLH8GuDUt+VM8+w4mswVC9XBw+HNg17YFes/Ys7WYpfLk8e17yd9X5mDHINf9ONWtS8PhPVxaNNd6HBPw87nJfZT2bIJ+mrsdo+pp1du8dNcATR4mBMjK+H4QFnAtV3lY+2zdQhay3BJWylAvX1951utPzzcdkW5QjgPuCU68vLOsfjJAaJ4jK1B+L/11rtV21ft1ua6g9Q6A6kSKfr+P09NT/NVf/VUtPJXXcDjc+dS1mFxN8tnl2uY6ed9RnXYFqOT+XtuL7bM++VgVS6eJbo3zb0sp+3xah2uyxcZJTc+xz3Hiu0Ah/f1txTdi5JN7l/wEjym+I0ttCrnpZLwPuo2KlRRZQmH23YG7/NrDtwhvCtZ9W6ir9qgBQpynnAAkeEHKoM1mE5wsfGlz0tpCLJ+yLfANDgEUtHHo9Xp4/PhxpYQlmk6nmM1mtcWbPKrSJ7+UUVPgpeQ3lk4obiqlAo6+NGXb8Pk1JV857TJGpY4/sXCpgESKQjeFR0gmX/lLsIDcuEKcrF1JaXF1dYXNZoODgwM8evQIP/rRjzCdTvHmzRtcXFxgOp1WHzfwL6CbUCiO5ic3MPwjB6445+WkjWGcl0+hHpsbpbIkyzIcHx/j4OCguteQyjBlLEglnl8JRMnxTeaVyy4BjVSAsalfLB/yue04EZunUspa9gnuTtZ6AKqjU33tCrDHrL548aICRiaTSVVn1w3ESqL5j48NWr5lHF87SV1zLBYL9XQMvl4AoB5lp23iY2N0rO7lupGXiZYmbx9ynKDnxWKBxWKBLMswGAyq+4Ll2kLKECNexrE8pYwxWp11tRZOWb/IsZva5Hq9rsBuTanu66c8LVlG1L7v37+Pfr+P1WqFzWbjWN6GiJenNg/L+YA+ROT5SlWWaON3iIbDIY6PjytL4Pl8HgVitX4j64Onr7U5t+9mWCxK4C7PS1Awy2jstIAJATmllSxq/1CtX8Esa31hSv7YWrbKd/vr5EDxq1vAumFDzyXIyu9pte1FAq7yuGJptUtlzXlRepo7pW3rjFeXjE9pcqLm4FZzHdStl6Mb34ndwRTn5yHbYzoPfT+pvRvV3z43AWHd8L6werg68Ep+9fA6SCv5kLuURfprv27YOgCrl5Verlo495mXj01jszE4PV1gOo3vP0JrNR6G1nr7mBP3TU3msbYk5zE+H5MMXL/C11Vczi7Kt2m8fdbj29JGOO2yD+2aUtaLTSl13+ejUNwuyk7qYmLh9kkp+lYK16bvdpWHt7GfcWqj62jSxkJ79l3Sua5y9+1BUikm5x0Ye0d3dA0kO29XR6feBKUOonLBsYtSWlMyhaw6CcChuFyBStY/pBTiR9mE0o9RKliQ8hUs3Q8HlMey/uQnP8HBwUFlEQgAv/rVr/Cb3/wGBwcH1deyxL/LRWysvlOV3ZJXkwUp5526GEslqfRuEk9b/OnKlPQ+c5uoqTxNFnSyvmTbIDe6k5Hay+npKYbDIT7++GP88Ic/xP/3//1/+PLLL/G///f/xv/4H/8D/+f//B/cu3cPw+EQV1dXO1v++PKn5UfmS1u4cSVBlvnvywulId1ibffdd9/F+++/jxcvXmAymeDq6gpFUWAwGDjpkaIiJV0pr++ezCb9IbUvtuknTTepTcG1tuSrPwnwaGGpbzx+/BhFUeDFixdB62QKb4zBb3/724pXr9er7o6MfczTNcly7XL+is1N3GJ0Mpk4/ZXLQBajDx48wGAwqEAl+tjDBzCF+jGtX0L1xeUhWbklZUqeeX4mk0l1vHKv18O9e/dwfHyM4XCYfGcoz4NMM6WP3CZFmwSgtfUq1RGBsXS0M2879MvvdNbqVkuPwnz44Yc4OTmpxudnz57VjpxOWSPzdzl+AHCAWC7XLhYAvrZ/dHSEDz/8EEDZXn/729/i6uoKg8Egad4KfSAQUhhS/owxWK0yFEVpmdrrZcgy4smPNbUfEG02uiVlnpegogVzrTtVM7mV8rgWsnQUMr2XchPIUqZp74x1wdssgxO+5GstYOkIYso7pes+W1CUeJC/C7jaMO67DUflV6Ynx1deeBkLY+vGrS5Zd4Brwczja2EdF2hE9dnVlNZk6PKF9bV96WzfTc3fDesHGt1xjf9qcdJA2bqbYX6STxsQtm75qj9rVrB1dx8gK/NeL9d6+cr8c7mKwmC5LPC7311iNrMfPMb0Ia4s9Y+W6AQO37h52/aO10WUbz7X9vt9HB4e1k4cow+dZrOZ16r4u1qOd3Q76KbXxXx8ienUNB1s0717m/xqcbgOtEtqonPZl46gLe1LnhQ92L7pJspZ0+dJf41SdNN3YOwtoZgi/44s3abBjsi/sWo30eySx5Q0d+HfJG4KiJZCPmVfCNDmmyA6woYfXUGKsNBxFikgRAr5+jcpcklJLsMD5Sbs/v37uHfvHk5OTir3p0+fAig3GEVROHdptpGJKxFluCZ110TZGmsfvoUQJ7nBjYFhGnUha1fkq8Om+fD1k11lD81Rsuw5pfZVH0g3GAzQ6/Wq44ppw/3kyRMsFgt8+OGHODo6AgDn6NDUvtwkv7Hw/F9TkkvePKwGUvvkl6AuT5cfaTwYDDAej3FwcFCNNwAca0jOU5uDulqj+MrCx0tTYEnQ3sdb5iO1n/N68cnZhI/P3xc2NMfJ/BhjqnqlNqAdmSqVVgS+8jZ6E2tNXxsI5VvjIeexWFgZZrFY1PotyUJKB5prCSTT+m/KZo36py8PPCwnzfojlE/tfbPZ4OzsDL1eD1dXV5jP59Ux0PKkEN88GpKBykuOF9oaLqTQ6HKdH1p/NVEO0XrNt0YPlZMWltPBwQFOTk6qvHNgN0S+eVbOKXQ043A4rNofXwOHPhDV+IeIrPUfPHiAjz76qErn66+/xvn5Ofr9PvI8rz5ykGOUr600XW8TmS1gsl4XW0DOHllMQCaBsPxoYWKTZUBRuGAoAbNFkW0B2ZCFLB1TrFvGlrwlWFWCtFsJnPDWDY57Kb90hydO6L2JW9w92wK59lmLq8WHiKPVf0qb3abU8fSWxk8H/3zxrZsfGORhuL/7bILutq3VefF2WA/rt4Sldx6e+7vPcv3rupXTY/hYYulmjzT2A7OhsqyXlV429XzQ3AC8eDHHZLL23hNLFNsnaXOV/ACI3JvykvH2QW32TUB7/RKfK4uiwGKxqH1kxNfIGo+Q2x3dERDfv6ZSk7VhajqxcL59sy+ctubiceWJg3KtL5+1fUVKPlLGEu1Uoybki9OE120bN25CniZtte16vm2clL15G/9YXMIgQrRXMNa30b3pBpsqQyjcTeahy4Fm13hdlUOq0rIt7320w1jnlJNQLD1tAmsCbDWhNvzaLpIpvZiyMVVhFpvANUCDviiVwCtXrqXkIySD5harP7K4oPtftQ1Jnud48OABHj16hHfffbfy+9WvfgXAWtGORqNk64ZYvrgcMeVpjEKLuRjflH5Kda0p9Xy8NUBD+jVRdPv822wwtfBty132g1j9tiFfHiVAohG5p1gokRJ5tVpVymUCY+neS/pYgcBYit+2/FPnJRmOb/h5+5S8tc2L5B0j+tAkyzLnCMqiKCq/wWCA0WiEw8PDSqFDC8SYklsbj7mcMdl5fjXrWf7Lw2h3bjbZ2GlzjkZt+lrKZrJpn00ZU2SfpjQkGEttP9QO6ZQFDsakynId1HX5xeLJY2GlspPAIwJkd5GVypz4+u6A5nJwP996kvvTnXKyrWw2G5yenqLf72MymVRWvhyQ045DlP2QyyD9JRgrgT7fmCPHLa08pAxNqMkGXStjY4xz0oL0l30odc2fZRkODw9xcnLifCiTuk+VcpM7r6d+v49+v1+dhkBtkI5eXq1WtTS1dukrd+7W6/UwHo/x6NEjfPzxx9U6++DgoJqP8jyvyjI2p/jSoXxId02+oijB2PKoYoMsK++EJfCVqo4AnSxzwVj6J0tY+qUweZ45ca0cNH4AqIBXw6xfuYwu8EsgLcSxxcbAA9Si4snztj9QNtVd+mn+ZZgscwGxENhaho3N78Sv6zmtDt55Q3rCWHejuPnD8TDus86nfHbj2t96HNvX3fj8vR7GMD8b3hdW89Pc7T2wnKcLvkrAlcLye2JlmbDSUcuM+8sy4/m0spRj0TffzPDmzZKFa76218ZYvm7nfJrqLrqkfehzd9kz8zJZLBY1d43/vnRsd3Q91KSdhNaS10FdpRNb66S6x+SRHy5IPQ0HmLhhiy+N1D055xHT3/H0U8JJCumkiW9svfttpn32jS70nDGenG/T9GK6sVSSJzRo8+Zewdjb2oBTZbgNst7R7gu+fbTDu4Xb/qht3cTaCSmBtDS0CdfHSwO0UuUDUB3RBthjI+moZLJQkQsEOlaZrBuA7o/luM4FadM6TpVNbrwkABGKpynid6G3YYxoO7amLGpCi1wOHnLl7Gg0wmq1qu6wlEp9DjS9efMGb968wdXVFfI8x8OHD6u7M7taRGnyk+wxILKpglkDZkPtV1OO+xaiX3zxBV68eFHdS/jee+9hsVjg4uKi+iBEA/lCzz5ZZb60eFxu+h0OhxU4ENtI+o6vjIFVKdQGSA3xItm4XKHNqhaXlxP3o/Iia/H79+9XH+fwjbHWzzlo75P1bRjDiGT5xPqFFp+IAElSRsiy2aVc8jzH8fExHj16hOl0iul0isVigfV6XbOG1CycZfr8owWSmwO8XEnR6/Uwn8/x13/918jzvLprezKZOCCj1ga0MV8CfsaY2saTHwdI/pI3haOPRgj05vMElyEGDN4UyXE8JB/VEbWxs7OzyqKH7vTmZUuUotzXxj8CYgeDQXWqBI0fp6enlfJao6btnsaV9XqN1WqF4XBYWcPysmk6ZjdRtPA+XK6dT/Dw4X0sFhOs13NkWQ5jgPIYXuO8l/E5L/tvi4DGFt4XCajl7YD3IYCmLgJeSzm5JWwdpIVj+coBW2zdCWAuw9p82Gfy25ba1j0GyvrdSBYXzLLHGJdlSs+877rx7Lv0r7gqbvX0fET1JY8+3pVSpwCzBSZT41t3HUDk7/X1WN3PdavHk272vZTBfdfCpVnC8rCcN4Xjzzy+5i9/Lfhad9fKgedPL7vqKZA3N61nz0oQdjarn7SlkVyraH6uvMb5aK7r64ja0G2aezndVrnu6I5uimLryDb85J4kpCvQSAvTtO9qHy1q+p9UXeAd3RzFdO5Nwu9zDtD2Gk3alSZbK23+bdsAvw20jy8AuqY2MsYAqZgC+rZT1209xqtrQOimKRWskLQLICuf+aan3++rVhr0m9oH2iw6KBxXSvX7fRwcHFThyEJF8l8ul1iv1+j1etXio80dXyn5aUuxsUALt690ZV3GQHqt7lMWeCF5tHRCcnPlbUpZhpTkkm9bmZukF5M3xJMsWcfjMYD6V+ASfMiyDNPptDpmEwAODw+rjy32TbH2RL8xQEgCbm0pVAfGlPfsbjYb/NEf/VF13PlwOKzAWG2slMpyrY3I/MVAVC0+8fB9XCLHCVmeTcaQkOK/i7poGjcku5wDqN1z/qSYW61W1VxCH+7Exj9+TGmWlVbSofuL37b1iGwnbdoLUWy+T50bqP4ODw/x/vvv4/T0tALTi6Jw5nSa40kJy/ukr27Jj7cV3n/IGvGzzz4DgAr05FYkvnxz+UkODpLyuBII9pUPxeHHax8eHmIymWCxWNSOdupy37RLe4jxjbUXDkhTGLqzeL1eY7FYqBafGn8tffrlQDaB5L1eD8PhEMfHx1V6l5eXlRy++arpOEvtdrVaVVcM8Pxq844vLzzfqfUm23+/P8TR0X2s10ssFrPKsrS0mrNWrUXh3gtLxwsTYEoAjbWKpf7gHlkMWMtUW2f6McWWL33QIMuDwvrc3OcyPXoG6IhgqKAr5yv9/W4uXypzAq/cY5fLZ14WPI4LjNn3TAnjkk2v5uPEBfT4XZHl7dtfpcQt42thpZs7vshwdfCR3OtuOlgp3YzR3Orvxuj+GojJ/bh7nV8aIMvj8OOK9fKz5aSXlVteofhFYbDZGLx5s8Tz53PEKLQPCLnJ9Ti5SZLrg7brnZte7zWVwbdPkPya7lG+bXSd+5vrolS5UtY0qfqbFP1SU11QU7rpuvCVe0o/1KjNuCVPFgJcK13JW+rbfOlzOTT9yLeNmrZhX9mllGkbWZr2paZ9qul+MKRvjsmo0VtzZ+y+JgFt4fK2drTbKHdMcdAk3NtWN7vKqikibpLelvLnyksAlaKZH1vKQRsCQIna5jG2WCOZ7t+/X6V/eHiIDz74oAr7+9//Hn/4wx+cut5sNnj58mVlufLw4UO8//77ar5T24gMdxNtq4v2FAMz+OYrFFZabFwH+fq0PKa1LXHF/T77rSzjNmAUgXF05ysneYQqWb9OJhO8evUKv/vd7yrLGwpHSuB91aUvn0VR4PDwEPfu3cN0Oq2OAA1Z3u8qo+94HuJP406/38eLFy9wenpaHYnOv7Ln4yW32OKy0rMGCml5aQKEyU0P7x/0LEEMjaSfD9TYB6WkQeXm2+TFxikC1Ai8y7IML168cKzA1ut1TWkn60yWtQybmp+2tI/1hBzvUusDgPORk1YGXY0l/X4fx8fH+Oijj9Dr9bDZbLBYLLBYLJx2n2UZRqORYy1OgBqBbFxOPg5IYFfmd7lcVuukoijUI935+EHlQyTbqywbisPHGJ/Cmcp9s9ng6OgIH330EZ4+fYrJZFJ9fKaNcddBsjx4//Qpc3jdEPmOXKexudfr4dmzZ1Xb48fNc95SNumn9Vsq36urKywWi+qjjePj4+pkFgK95VhAckvFVoyKosBsNsOLFy/w2Wef4fDwEMPhsAKcyepZUuq6NLVcyLIcAMbjMR4/fozLyzeYzdYA+iDLyhJUzJHnQHl8MT+eGQAKEGBKyVF3KH9pfiKZtF8CZ/nds9S+eH641Sz9c8vXUiayviV/VBakNix/t8+o4pHcPGz5a61RbRnp4UgeW45u/NLftZjlZUPVZdswKh5uHdg4gBvW9YNTnrIJ7TrlNJkG6mF1cNDvJvuDFqfO0z5rlq31OPZXumvh4scVy2f9vRsQ1hhUxxHzd3+Z2vynlpsvj8YYPH8+wzffzHB1pR9fv8u6QZvDtY+1u6bQuult0QNJehtl3gftUg63tQxvq1xNKLQP64La8JIydVHOsbElRhJ8TZHJt/dIBWP5c5M9/k1Rl+nfJPbAdVFN9iCpwG3T+D7y8aX9VYoONgmMlRV7E41sX4uDEIAi02gqlxZ/34NZTIaUgfA667eJous2tDsNvNfCdzkQaum0pS77yr4pRVnjI76Q0TY0pPSidLqaYFPGqX6/X93Xd3BwgAcPHlRhRqNRTR46um46neLs7AyDwUC94y+0eJMT6k1NrpL2IYcEcIhS229IsdmWtPmTgzI+kvK3Ka/UcV/KGZOhCdAWk4/4aEcZyjDcWmw6neLp06c4ODjAwcEB5vN5pQyX95ekLLwpnK++NLkpDCnRe70eDg4OsFqtHFAstW/G5NPk9cWTANxsNgNQKqa1uUqCD22AENn/ZFnGFOyyf2hyaXlPacdaXtv071hbD+VRAjop85zWHjmATu2eA4my3fnS0sqgzbjZlPbFVxu3tfqQeaR/KkP6+EnOrbE1XihflAadAjAajbx3vWdZ3VpZWrxSPmL5k/7cKtrXt3z8UtdKsh3KuDxNeqaxs+srGHwycjlCfTo0hmn5S2kbcpyczWaOG7cK5mMpzW9yfPTli55pzUhzFJ20wgFLKb8236cQzc9XV1c4PT3F1dUVBoNBdZy67x6u1L5L7lQeobmVeNGHDMYA63WBzaZAluXo9SjNEmy097Va4K68D5buaS2BSLKg1SxkKUwpJ1AHxUrwFMwyNss08MiIsKWbm2frn2VUXlR/7jvA2xwcvhSW/EieEliV8vG0wfx0i1k4FqN1q9myXOR6isWowrj8eBOqp4laGJdHN+TnpwN+sbj1daYWRwcbefm47c3l7brp4WVY7Z3H8flz/lI+XxjuXnfT/Or/GvGy08vBX3ayDDcbg9WqwGSyru6ITd1TcD5EoXW4L06TPVdX+9lQHrukm9D33dHtol32JU3XdRS2rZ6lDcXS6boPpOo2Qun76iSkfwzxiOlHJNEHmsQnZf8ckrsrui06VaCbdqP1NW3+Sdk7plBoz9RUT+Or/5R2Eev/XJaYTPKqNZ9sQCIYe9snxdsu33VRbKK6K6fdKaVTheLcFO2ieH6biRSOs9msUm7JL0uBtDrapez4goOsUoDSMpYAWAA4Pj527v3jtFwu8ezZM2w2G4xGI0wmE2dS4NZSlG8tD75F07etbfjABx91tQjX+IRk8aXbVP6QPLuSb2EmlbZNZOZj0mq1qpTCXMFK7hygJaV1v9/HV199hf/wH/5DteBZLBY4OjrCcrnEfD5vVZ+pYAMPT/LSvYf37993jugsigLn5+fYbDbVndG7KlLkApkU3NpdkVJeskyiMZEr/inscDhEr9fD1dWVej+VJgvnYYxxwEEJIPG4NC4CqFntavwlD86HL4AJFPDxiJHW1tuQBuA0bZvc2pG3BwJauLwybTnua0CYT+63lZooVqi90RGum82mAo40Hlr5paRFdTCfz3F6eor5fK7eeUQkvwKnMZFk9aVN6ch+S+7yK2PZnjjR2OBTumh9XwLZkrdPMbzZbDCfz6txlNxi1NVcmUJN+q1mEau9Z1lW5VfWF//VFAcyjm+spHKkdeLz58/R6/UwGAxwdXXl8KG21WacIj7GGJyfn+P8/Lxq41Svcq3gSyMl7ZCiiMBnAJhOp3j27BkmkylWqwKLRVEBqmU9kfUrUB4XXN4hWzb/AnmeIctylBabubCMLX/NFgjyW8haC9oss/9E0r3sM8brBtDxyW48/g644Us/3ie5FSs/WpmXr3HyolnL2vxZ/pyvfZZWs5SuW3dcBl617h6cu/vakOrM4oX922wJQnH8bd33bmr+blj9+GGZFj0a449jx5v6eygM5+3GcZ9lnBT3+q99lhaxnFe9LOX4oPv78gJYi9uiMDg7W+C3v73EauU/+SE2V8qwvrUGj8f3FanUxb72jm4vXef657tA+wZktTXLbavD0P6eiK/NY+XVVK/ii0N7NPI/OTmpXWcynU7x+vXraHopdJvq5DaQNp81wRZ84fh+lqclT/lqIp9037Uu5UfTfM5uwlvTp701xxTfZvINrL5wbehtBk+0DqY931EapUxYkt6WtsLJN+inxuGKLAJg+T+nmFIoVb5YGAJCCDSgY+pokKev98n6lSaiq6srrFaris9gMHDAWEpLy38XC8tQ/NvctlI3wik8tI01L1tfGfnGv5Q2l6KwjKXXJG4KyXbVtFw1gIsDB5KnBJE48LRarXB6elqFHQwG6Pf7FT+e3q6UyocABaA8ktR3d0lqewmFkQrz1LboU/LzsqdfH6DgA/g4+cbZ0JrJN1414a/JJdtUaj10tUnuYv3H27UvjEwrdTzYpT3eNDUZUymcL4y0BvflXxvXU+baoiiwWq1weXmJ2WwW3GySO98ESmtGX55CY0HTcSIUN6ZgbuJGY2cTJU9Mhhil8NfmpLa8OEmwWvJpunZLHeM2m031gSKd4JACJqSmy+PyK0M0hQvF9435qfWjxeHluFqtMJlMsFqtkWU5SoAwR9nVDYoi2/4S+Gm297/SkcAlCEPHA5cWtBwYcsNZENIAlaWscdz4u5XbukNYxEo3slp1/V13OhrZpl/KRbJb/jYeB3StbBzorVvL6vws0EUgrkbu3a/8SGMepl7XVLcyrJ6G7t52aZwazz9WhNyMGsZ9vx4QVotrjB6ndHff634uqMplJjfub5+lWzsgNlSmbn5luNJxvTa4ulpjMlljNvN/BNfVnjs0jqesTXxzzLeRQrrGbzN92+uVaN/5bLvn66qdST6avsmXnm8NJv270Ilp8mlrRcm/aXpaPfByyLL6FXS+66na1tF3pW+lUGw9vgsgqwG6KfuPLvreLjryNvtsLV93YGwH1JWy7rbQty0/N0mkPA1ZP6RSqqLxu1h/sTyT1RVZj9F/23s55WCa8kEGfb11cXGBPM8xGo1wfHys8n/w4AGKosCrV6+wXq/x61//2kkry7KawlgeXUwycjn4MYcpCusuKEWJSX5tgL0uN1xN+ElALBSmDaUq92V6+9iAykUFWTzGQB/JI6a4Xy6X2Gw2zjGVdOSwtNACyj51eHhYva9WKywWiyR5uiReLufn57i8vMTDhw9xcnKCyWTi3PlIYUN3A2ugIvdrCoBIvkTyXlgOvJL17Hg8BgBcXV15lTrc3dcGY+2Sg+epbZiXD79PlQP2/M4OWZ5am7xpBY4sY14u9FGRPOaT50+C6GQdprUzKg9ZPrJMCPy7qbs7U4nmNw5whhSWqXMOB2h3aS8ETp2fn+Pzzz+v6oascKXM9AHWaDSqTst4+PAhjo6OcHZ2hsViUVmhcutDqkdffTX5UMXXl3nZpa5NtTAkb57nuLq6wtOnTyvr2C7mz12J+DRp+3KM10iui+S93Tyctpbj7Zf/a+ODpM1mg4uLC2cdPBwOneOr2xJPlz4upNMt5vN5dTyyr//F6oyPRVJWWaY0D/T7fVxdXWEymaDf72M0GqHfL2VYrZbI8wJZVoKppYVsDmMKALljGQvkW+s4ayFrtiARH15JDBfUxDYNG74sfwIwzdb6lt8nC/av+VlLVu0OWRmmfIYTjp5L+VxLWXJzwwDy/lxyK9/d+JSu2YJiFKfuByc+L0cbPlPc5fpIbzfXNa2H0nH90gBCCaBKfypXn3vdzXV3f6V7HWCVcVy3OtBq4+sgq3X3gbBp98RK4uXiLze9jGQ+uUXsZLLC//k/b7Be19cX2vqyKfHxnsZxzkeOzbH9AOD/oPKO7ui7SqH1oebeFeiTSk31PrG4MaA0JkcMKLuusYWfdiLHxsVigRcvXtTGyG/DuHfdev19peWbr7r4MCB1/xlLq60OS5LvrluNzx0Y2xE1UR6GqMkkEFM2xSgl3j46ZIri5m0FE2PK6hilAlepPN5W0oDOEKUM7hJQ4gPudU3WXFnGN1xcJgKdtI0YyUp+/X6/WpzI/JJylixw5bHH+wIRfTxik2AX41jT8VUDHzQgLGXyjpFMp43iel+bhKbE86K1z5R4nGjRQuACP95W8pXtVnMPzTH7HB85gLZcLjGbzbBcLtVjO/m7TyaZn5DiRWvHsbqI+QOowEy6v9LXjrV8aHmV+fGl6+Ml88hBxqIocO/eveqI5aIo8Pr1ay8Y6ZOVU6wcU3j4+DYh31ylzZW+Oa7t+Bs61va2ES+D1HGbg5i8jWvzAlHbcdcYU1np0Tv/SIwTXyfwMtfyResGrsxNkcXHT6Yb45NCsbZLZZNimRyjLttmaC0QG7sBOPNZSK7QWiQ1TtP6Co0f3C2FUvpbyoepvnzH1j+p81/pngEo74I1prwD0hgCVek+WBfcJMtYzUKWABvAWsgCZKFKgI+1fi15kDzuL8sxULOINYofzxPJX78XluK6fiWvLONlycvZiHdbPq6lq+S1ffPwpaqy/UryqxM//tjPL8jCCduEmg73bng/KOgLL8Pwd7fudL+6m+vu/uogrBvOlj0Po/v7rGilpavmHj6euOyvxomvl2W8zPWy8+W77P9FYbBeG2w2+1vrWRn8a75UvQj9G1O/nuCO2lHKvPy20W1ay3ehB/XpCLQ0fGn74qak6aOu2k7K2mhX0mSUY1KTtb9PH9AVSX2qL0yKX2p57qvcU/cZXaSl0b7HgxSdfZcypOic+HNXaad+2LpXMDZ1wbBrnNtGoQ1gWwXcHfnpptpZUyVtU2UOxZNh3vb+cVuoibKRwnPyASRNFpIE2vAL6ek+BK6IHQ6H3vTIikTKNhwOMRgMcHBwgMlkUil/m8oYoq7a4k2BjFS+PqsUThqY1IR8wFtowcvj3maK1VVsAUxW3W/evHGAP27h6FMaS6DzJsZKko0rmqfTKabTqROOQB8uW0rb9wGJcgzTFP6+NkvtnvykkpziHRwcIM/zClTm45KUlacVmvN2IQ4gccur+XyO1WqFH/zgB/jggw9wfHyM2WyG//yf/zOurq6cu2RvklLm+5C/LG/+Tkd0U7/hltgpG03fXEZz1HA4TJozb2odL+9YTSEuJx0hbIxxyo6HiwFZMTLGYLFYVPd0AmW98dMAiEgW3o/49QUkM520AZTAuQzThGTf5mOE1jb4l+q+Y2g5b58blfdyubx1+8DUcox97KCNz1SuIWtlOS5re4/UtSyF4fds7VPRw9uSvP9dUizvobWTb33F/amP8Q8u1usS1MyyAr1eeS9sr1daxcp7ZEurUQOyiAXcO2OtXJSm/5cAXvolcLVsD9pvGa+0rK1bzpagMFmlWv/ynYOVfktZ68atW33WshYc3cas3Hj+7XHJAAF4xIfXqdkCaLz63HK0FrScnwzLy9lHMdDXEyseIhBE9wuDrtZNz6d9jh9ZTG5UznU3LWz9XfIxFVDqykFhjXH58Hf6gIHc3F/NzQVj6+Vk86aVRazMZH65RawxUEFYPh7vY9+Wckesb9yj9S6t22azWas1wU1SbC1w29YK3xa6LeW6K2jXVXvvojxia7QmacgPFn37nl0/BImlLcP69BkpOo3b0N6IfLJcR3u6DeWQqqu8SdL2UrdJd8r3zzHaKxjbVmF9G+mm5OIbzDab1y7S3id1oay9yXYWKyM5CWmgQmq9yji3faDskrpqJxLQJCVY02PZuuh36/Ua0+kUf/jDH6q4p6enuLy8BGCVnKSAbQv4AsBwOMTh4WEFplA8Xg6Sn69dpigL2xJXeKeWp6Yk91HKQjgUpqlMMfeUsYDL1ibtpuOLlIUW+poieVeSstHRuOQXkp38U8BNLa1dKVYO2pjV5UIx1HZCfTgkm8ZDHu2uffjB0+P1oC2WuyBtY0e8+/0+hsMhTk5OMBgMKrkHg4FaHj5wTZPZV56x+ZrHT5m7Q+OHD4jhCkHqr3ze8PUPOaZz/gT0PXnypAI6l8tlNUf55mX5Lo/Q3Rdp661YePlMR0GHwuxKWZZFwTDKi0yTrlwgOeW6Rt5525ZkW9XaD+9zAGprC194/iyvVtDCXidp6wnpps1RoT6r9dfRoxHGj8dAVp9vFUNEGAIZOFBCbAnPo3BGxDUGZmNQrAvMns9gNvUPduQYHxqnms6xGj85b3B3LQwP5xsvQ/LJMPQBWNn+Sms3Y7LtccQAUKC8W9aCjgTOWDDTSQFU8HTXLPmX5QpgezdtnhO/8tkCqdl2/HYBWjDLVgoLx9q1DGeMBXmtTKjxgLCURdAS1hfG55bqnuqvhUsJH6L9zEH+6cF4/aWbiQCK9jkOwHJ34luPE7aCpXcfH2Okf9zP/vr8XSCUfim8JF4muns9XCjPvA7KPUY5Prx4Mcd0unas4K3c/jbVZH/M593YeOfKXedLazZaE1yHTq9rStmrStpXHrV17m0pz67XSze1/mpKTco/tL5s086apJfKN6ajSuGr7cl3rU/Ob5c9URvdGPc3xjin/E2n02ovRde68Dht+2eKriulTH18uu5fXevm2vBM0WOE2rAMH9vHppZrqG11OX778ptShnfHFF8ztVWMN/VPGeBTZGkyUTQlrUO8LQsAPjE0Haw0JUjb9PdJXaTRxWK1y0mGf41FFlV8Yg9tqtqAL6Gwq9UKl5eX+Pzzzyv32WyG+XxevdNkRHdO+mSLWQMNh0MMh0NMJpOKPwdL5FGfKcrc1HzG4sYmxhQFYIosWp7kIpWnpS0spEKvSdvsYuxMTS/W71LGdU0pGuPZNo+UFl9My3bpW+hwwEmzfOyi3LsYf1LGljYgEO/HMr0YcUBEAgzyQxBS6oT6o/TjVlDUf7rqB/xXgrGj0QgPHjzAfD6v5B4MBiiKojbe3wSlAB1UVrLMtbZC71RndDQ9gakhi2DfWob6Vq/Xw4cffoh+v1/dd3p1dZV85F2WZdVcu1qtHLCzq3ldyh0DazjJfkYfhMTmmxSlqpSNiNcHyavNPVo+5vN5dS82ufE0QmNgk7mK9y0f8b4FuKd0hJQQ1Eapzd4m0uSWY2zKfsqXdyrb8btjPPrpI2T5FnzNgIzAJQXLckBWDiCY8t3AAIV1M8W2XRWl+2a1wXq6xvx0DrNx2wMHAPh/KH8a+ZSd3HJazunymg5fmXE5uZ9vTeabnygczQMExhaFQa+Xb48YzlDeC1vA3g9bgrDG8N864FOm45aBtGwlQJWDtiRullk3fr9sybcEb8mt/K3fFUthKV1ADwNmzcpKvApb+mUizxnLuxuO8i75sZJhYXj61t9913jYMnbTkX7h+N0QnzsCoTx+hoF+vrD2PWRFWwcXJX/X3xfehtXCcX8KL59jfrp7/JhibkWr5V8vF38eZT60fBMAvNkYLBYbfPXVFPO5u+5JXQuE5t6YElf+1vMRTl+OuTe17gXS5kkKtwsQ0JRCc/sdXQ9dpy5FS+829Q1t/RUqnza6M5lWaHyJjTepdRdam8VkAur6yYuLi9ayhCikq5G6MRkvVI/7on2lk1oOPp2GJpf2QX/X+8BdyqPt/sdHKXHvwNhbQF0p2K9Dli5l8Cmgr2vwug6io2KJ5H1YQJnnJgORb8K8qYUEKVs1mUihe1tIHu1ByiEuM1cWt1l0aMogzY0moNlsVh3JSgp0In58cdO6Jf6LxQIHBwc4PDzEcrmsLGsAVEcZpo4/Uo6mi8PUsFJJSM/a4jklrdBCMrYw9CnTY0rnromDACltkCilzniYGGgTIl99pJaPVBqkyk50mzbSqRugkL82DoUADiJfG/GVDwdNZTtYLBZYrVZYr9eONR6PJ++21OpkX/2EAFbqj1dXV7i4uMByuURRFBgMBsjzvAKwrnt90bQuOPENqWwLfCyQ4TabTWUdTPcWS5BOs5QgkIzmbDpR4cmTJxiNRlXYr776qgobygfJstlsqvQ1AKgr8q2jfDL6+pVv/PStC3wbtzZ1H+rrvOyknwSRCQAH4Bwv3rS8fZvpoihwcHCA8XiMe/fuIc9zPH361DndwLduMaZ+DPRNkVaX0k1bP2jlcvTREQ4/OCxPuAVKoLViXIKtBKqOHo3QP+w7fjXZFCtXRx5T/jvtkrsZVKBsPsjRG/Tw6KePSjDWWJ4UhuIWqwLFqsDyxRKb1aZmLe4j3j43mw2Oj4/x4MGDqr28efMGi8Wiuofc1zbajJeyPWl1GKrHEnwBVqsCRUHp5zCmQJYBJbhJv2b7nzv3vhL7LKsDrNo7pV8CrCVIqr2Xd9eW6ZZArXWje20tiJpt+RtwsNUNw+cPkl8eWUxlQGXmvpd868AsD0tp22fOR/Kycd13XldOlVYyaMSr3wfa7kopw5fZgnuxuO67iYRJP5aYy6DF4eFluLQwaSAsULZd1z0OwvJnXzlp5ZBaZjJvPP2iKI8l/sMfZphMVlit6kpk+o3tMfm4pq19mszLsbGQ75341QspcfdJTcb7Xfne0beT3va69s9X4WPOYx9UdFkuTXmlXA2zj323pl+OydJWT/5twiV2oS7Gaq3tdrEv7YJ8e+xQv+2C7sDYhhQq+K4bh7aA6zKNJgrzVNCjCd0UeNglaUo4nqd+v4/Dw0PHT04epKgIKXl8fikK+K7I115IKauF1fJLcZrUPeXNJ0MKL1k3HOjk8kt5Y0BIiDSFOedTFAXm83l1x5uUxXePY0q6xH+5XOLw8BDj8Rj9fr9S0PI6ShkLZFnvsqiJ1VtIIbdLm9fSC+UjBv5dNzXJb2zeaFOOPpCN/EKARhOZtTih99BC6W1YRIfan2/T5cu/1ke0Zz5+S38ebrlcVnJIfxqfyI/7twUgYyTzQx+ykPtiscB0Oq0+fKJ7LAmQlHdzNlkHSWo7H4TKwbcJ4HG1uuNj/mazQb/fx71797BerysLYZ4G/fJjqCXPwWCA8XiM+/fv4/DwEFmW4eLiAuv1Gv1+v/ooJTSO83ufaf7Z17qPl61cP7fhFXpPje+b61LGzZC/zCdZsNM/Xzt08UEcH4uo3fT7fRwcHODhw4fI8xzPnj1zQGFt3cbXQ12PzXK/pOWhCY+aHwzIirXiyQDX8btj3P+T+8h627zl2zQZ8OYK5DBXZan5G1iQVgAKDghrbBhjDDAAzNigf9QHAbAVEEv/m/J3s9hgM9+gOC8As20/XFaB02lzUlEUGI1GePToUbXHuby8rKztnWJQ9lE+Cq1lUtaMHq5V2PXaAMiR5yXgCqA6VnizsZaxeZ45x5VmW6C2BEutJSwlTSBqGdbGz7YAJR1TDISOLSZZDQhYLS1jKU0tnM0fxbPlAnDAth429O5z4+5N/aS/L0wovBu3rJcIix2o5B2az2PuRnHT3tscS+zGs79GCdv0uGK/1azmx8OUoGwaEKtZxGrlrZWzVga+/PF6pPQ3G4PVqsDLl3NcXrpHYBL55jlXDt2/i/2rTyYOxtL6+Cb0balpxtbhu8reZA/6tusl78il1Lrfd73vAjhJvZncz8VkD62HY3Jp6/eQrPvuyzy+1J3LU4c0aqNTlfFCMr1NFNKdNQnfpA019Y/pArmbxqfpvBkLE+Obkp5M5w6MveV0nYrkpgr5rgafb9vihyu+UvLVZJF828CFXq9XWXdqRApYol02BF3nnTYqPrAihbS+IPOogWJaGCqnrjYd3EKFHxPH01ksFt468fVzfrygb5L08ZOTnVTw+uIQ+SZauahMWUjwhdu+7zK8zdR2PN913E5NV4ZL3UCkhrkp0hTYGnHFSkzZ0yRdLW1ep5SudqwvH1fomVvXSp77JH70cK/Xw/n5eQXCGmOPnSVQ9qZIAhXcTY5xvrYR6gs0ngGlJeTh4SHee+89zOdzXF5eVkfKcnCUeFFcbr1KAMpqtcLr16+xXC5xcnJSxae7eZfLZRTse/fdd/Hhhx/iD3/4A87Ozqr0uh5zU/sUD8spNn/xetPS4P3BNyc1GTe1dHzx5bpTytK2vOX8Ktc6si3LZ8mLfrs+MeU65u+8n+Odf/UOBicD5L2tMixHadWaAcP7Q/QPS6tP5+hhWRwhfIq5GXtGseOWmcy+G1OmQc+GtTdjw1S/BdwjjQs75pDFbD7I0T/oo/dPejBrg816U/nT3bPz53Msz5fBcuftQ7oD/n6UopjR5hkOQAD2zmvuJ9N3+ZSVVoKuxZYXnf5A85y1kCXQttfLYQzQ65UAKt07S1kjQJD0p/ydhyEid2Nc/zIfFujlJI8r5tawNk4J0FJ8fpQxWcby44jLdE2VPvHiebBglAW5bFxe1uTPAVJumSvrl975eFMvK2PcgnDLpX6073WQm2Zdfn/YMrx04+9Ubrq7G9/1d+MQn9C77ib5mFpYGU6G8VvIhqxhtb1fzclbFlp5aHko+3xpEfv06Qzn50tcXa0brS04tRnf2oIFPD0+1tFpWG/THve2yHqb95B3dLupbdtJse5sAgzKEwE1nWQsvdD4dxN9hPan/MO+VDl8OshdqQmA2eX4dpO4QJN0uyzn1DIN6c1u09jeGoy9baDQHXVHKYNu1wul29iWmrZxn8JcU4hJhbh81xbUWljJX8q/C6WAJKSgJEscPjFyixuuvO96EtolrgYo7kMWrW5knXepnJb8+RGFPtAkJK/mH5rkmvCVR6Sm9gVOsb7a1u+mqMsFYiwd/rtrf0oN5xurfHWhjZGpcXehJuXSZHNEblaRqStf+PgZkyG24JR9S6sHbdOl3e8h+Wr+IRl3qSttPCAZ+XHEL1++BAAv+Jjax3ztrqm8Pt4x4CplLObP9E5Wi/xjqBBAKOdq8t9sNpjNZuj1ejg4OHDAtxDAzd1PTk7w0Ucf4fLyEufn552vI33gqeaXqlhIKX/u5+sn2jutm9qO83JelHMn1Y0mh0xPy6cWRysHWvv58iLHG+23C2pSjqljad7PkfUz5/jgfJTj8INDjB6NSjA2Q3Xna5ZZ0LUqqzbDnFGeU36N+55trSort6IEhk1m7K/JYHJT+pnSDabMkzHl0cYwQLEpKstZOsJ4fbnGegtSVO3DwIK8sOOHLHPZnprWH+fj89famTbfSjcKXgIyZWH2eqUj/ZK1Hh0FTICmPd7YWqmW/ErrU4pHlq5kCUth6OjhUubSj9wJbCVLWHs8stnyp3xSPDg8SC7rTsCr7ld/t26ljFDDZZmsFzkOcoCsDqS69QVoYKtb7aZyB+DlLXm0IX8T1dZ3qTzC4Kt9NzV/Xgc8jvtslDhpVrD0rsWR/ry/2Tjuu+yTroVs/W5Yme9QGdXd4tawmnzGAOt1aRF7ebnC2Zn94KStst/K4B/j+LpUumthQ+mmzPEhCq3pJS/fuK6N+U1k0OTQ5AlRU/0dpelbu+2yZtmX7vQmKaZ32YVvilsK7VO/F1rjN+Gj8dB4h9pQavsK7Ydi4VLkDul3mvLUyJ1nwjrNFB2nrw2nlknbfUfqvHBTtI8xdl8yAP76alq2TefWrqg1GHsbFdg3SV2Xh09JtO9Ou0/F9ttGbRZykkajEe7fv1+9n5ycoCgKTKfTSnm3WCwwn8+rMPJuAK7k62Iy49RkMZVlGUajURWelLQk009+8hN8+umnFd+LiwtMJhP8+te/xmqlH/GzT3l3iUMU63N2U6l/eaa9c3fOw5d+2wmJyzSfzzGZTLBYLCpwolTs5NWvjCPllOloY4WvrEObzOFwWKW/2WwqMCXEg6cvZUkdI9tM1BTvOsZHLS83MS6nysAXxykAQKiutLbFj8T1xUlpizdJIaU096Oy5Eep+5Qb5N+WQn2HNjq+utXkbFKnu5AP/Lm6usJsNsP5+TkA12JQ2+Be10bItyGVftTONctBOWbxeFQ33CqMW63yOqR4ZA1rjFFBtc1mg+VyiVevXmE6nWI2m+Hs7KziL++SlO2Znn/wgx/gL//yL3FwcICDgwO8evUK8/m8Wj90Pa+n8NKAmZT4vI7k+MTLI1U5EZNVGxOyLMPh4SF6vR4uLy+rr8TzPMdwOMT777+PTz75BKPRCP1+H//9v/93PH/+HOPx2Jnr6QjyUPkQSavgXq9X3UdMR8/S3XTU5qg9adct7GoZ6+vLVKZ0VzT1Cb4GTen3J5+c4NE/f4Qszyzg2sswvDdE3i+B2AqEBepAbE3g7W8oWQPHGpYsXstXU3czriWstIolQDZDVlnEZqaMbwj0oOOKaWwxcI8wNgbZZhtnY2CGJSjb+7SHox8cVUcbF6sC66s1pr+fAkXZH+bzOV69euXsGfh9sU37fMp63Bj34xxKVyo55bjj9tsMxmRYr6md2jmu18u2vEtAsnwvw+d5hl6vfAa4ZXoJepby8/WPBRfp6GJeJGQha8PY33rebdgso35KebL/cCxl4fiTpSy58bA2fb91rI2HKn+AtJot+dpygcNr+8be+TqHh3H51ZuFK48sq64ozMtvmSvd7buJ+nM/99nU3KkM3XdfWJs2j6f7u2Gln8bDuvvduMyxMtPd04BpKVtRWIvYZ89mePFigcXCzl+Abecha38iH6jC993kJ6+KkHx8634fabLI/XMTSt2vaWv81DQ1GWnO1vaBbfLRhG5KB/s20XXtr/dZ5k3W4PskX/+Xa2eSh6zdKQz/+FLbo/tIroF8YXepa20/m7pH81Gv19vraVe+q/ekW2yveF26wi7T24fcb8PYGcr3rrLHyvTumOKG1GQA8Q1sPnBDhtEGYG0TG1LupcibkrZGTQZ8nyy+PL5t5Ms7HaE4GAyqyZIUQzQ58WMgiUKLzdiAoSkdfNS0rPmkTwpAosPDQzx+/LjyI/6Hh4eq4lVagqYMdm3aRmyybNNum6Qbavc87ZTJyqfUjdFms8F8Psd6vU6yyJFycUWnFjZWRlp+OYCgfdnGN6pSlhBfHx/fmBnaSMqFqq64666P+fi3odRNe8p81DSNNgoDwN8HuEI/dkdlqN+1pV15NVUexMrVVX7q7VoDK2IKFV8+Uzar+yj3FJL5IsU7za/SQlAbQ0LrtJS+3bS9a2nG+jyNv76y5uMz5X82mzlAhEwjy7LqqgG5DiEZN5sNrq6uKqBxNpvV1rgx2Q8ODvD48WM8fPgQ9+7dw5s3b3Ze66W01ZBiQZajT5naVKbQejxV1pDilN4Hg4EDbFG8PM+r8j46OsJ4PMbPf/5zBxjN8xzrtT160XcsWmgvw8fi2Wym3h/sq+OuxohQXfd6vVpeVVnyDIPjAbKeOyaMHo8wfmdc3f9aAbJ0R2zG0mdso3lTwSFjeRLYmrl+mSnTh4G1YN0egVzlzcBiGNuw1VHFOQNlyTrWmMoKlkBazeqWwiJDaUWbZ8h6GXpFD8W6tJotlgWyPCuPaV5nKDYFMABWWAFrlKCtMbV1v7csZLF5+kPqGKyNv/44vN2Xd0cCxfYuV2u9R3e+2nHEWvuVfZgfG1y6GwMYDpozINFsASJ+Z6xtDO6vXbdyPyjhyQ2KOwLhAAuW+sJzNypXv1uW2TzaZ218cAE1W8cynOVX57GVwtT5d0/h45B9flJ2GU6WJfd3n33+2pHFaVaxPEzYP80SlrvVn13w1l9WMfd0C2HbF4HNpsBstkFRlHdGT6drTKd2PSQBQD52xNaH2jo8tEZI3SNocYl/Svimc3Boj629c1marK34WmY8HgOwuiaax7nuoIkeI0Scpy9OKI93dPOUooeSbT9lv7ArdaVjpLafcr1ak3x1kW+tr7Ud03w6Ps5HA6l3TcvnF1qTxo6UblO2oTkiRd4UatMmfLrR1DmnKYXmjSb7bC3+dVMs7VZg7K5KlDtqR7GFRxva1+TTlm5bu2ra1mV5vnnzBpeXl3j//ffx4MEDAOUkMhqNKpCpy7uz9l1+ElSO0Xg8xk9/+lO8fv0aP/vZz6q8jkYjDIdDrFarJD5dkRzMQxa7TSaalKN/Q+lQGtxqhRZdbYkvEq6urjCdTqu0hsOhky9S2JNiXgKgAKKLP5knLX+SRwhYI0BB1lGWlVYv2oJNsyKnPszLgwN7Mr9N6G2eC5u0VQ1s8cWXVimp6cb622g0Qp7nuLq6qm3IQ3xvG4Xk9YFavn6itT/NjY8vfFzRFBAhuUObKy67Jv8++glPS/4Oh8Mq7RhYuI+1lY80JRYfn2Q++DHLst3Tl8EElK7X62p8nEwm+Pzzz7FcLqujimU95HmOwWCA9XrtgHPEnxRgz58/d9yJX2j+5pvnwWCAo6MjPHnyBB999BE+//xzXF5e4vDwEACcr7yvm5rM86GwVB9y3pZtj+qg3+/XFLsp6VNdHx4eYjwe4/T0tLKKzfO8Op76/v37+Oijj/D48WP8t//236q6I7B2uVxWa4KYQoHkBvQvxieTiSNjaJ6QZbiPfkdrnH6/j36/X30MyNMl6o/7+OD//gDDB6XFKwGv+SBHPswr8JWDsA4f2RRShjkJKikWsJWfEeVkbHgO1Fbx6B/uc1Zsw+SojieuLGfpd3vMrmMZC2PvlS3qz1m/BHiLQYHeuIfB8aC6V7ZYFSiW2/tlL5dVW9t1zyP7lOxH1AZDa1eNR30uLf9XK7MFZDPHMhYojyY2hixl/ZaxQF6Bh8YQ4EgWoK6lrLwzllvI0j/50a/991m++ixl5XMJ2Fo3aS2r/fJ8cpDUxuXheRw4wCwPx9f3cgyx9cNcPX7p4wuXr+2wFEpX4ynDyzD83W3HMowb3/7W49TB1TI+f+dh4v7++1d5WPdY4rq/L99xvybHNLvAb1EAFxcr/PKX59u7os3WStb2SzqFgk4D4R+u+eYvcufzJVlzrVYrh0d4DKrPn23nTG2c3IW6nLtpbUNzw3A4xI9//GP0+32cn5/j8vISz58/r8KQLor272/rPvxtp9uiA0mVoUvAqi359udaunIvwfdpqZRi5elz37Vuu76aLkahtLpup6PRCIPBoOJNH8dyWiwWuLq6CvKRY3pMR8bD3VTf22e6TerwNur92szRrcDY2zDw7ptuA8Lua3Rva/k3WVRKhY4vz9pA32X5dLFYJUWntoBPVYSH+PtoX+3Ex7fX61VKWlIW0sKajq/jRFa2tAi/bpJK0JCinsdpk07KBNLlpksDQ/hRSL7NS1swWfKI8dZAWRmXg6Tj8RjD4bCqs+VyWQOMQ+NASIluFWGukk7yjaWhxQ2Vx02Tlhetrae0iSZ9pIt2zWXz8Qv5XRfJ9EMAhK/9aW6hfGnrhNg8q8mZujFLBbG6roeUsTvVPxQmpd93BSxp442vHcu6k/4E2vGxVcpOG0h+p7gmj29uCuWX+BFASYArXyPsuv6J0T7XzFr/Cs0zPGyKPHKOlGXFTymRYUlh3Ov1MB6Pq/mTlMmcV0wWbVyIrZU05YKcD0Pl14ZCwJuk0cMR+kd9IAN6ox5GD0aldWx/K1e+5ZeJX8BiRAKIaiYsCQh7LHGJgVXWro4fYO+uzUR5bcORP90F6xhIGjiWsdJqtvrf8q6sZrf8SdZKzsI+51kOkxnkyMs0sgymKI82zvplWfaPyzGG5ComBcymXk+yvkJjvGxTobGIW+PG1v3uWrDMZDk+lhZ0FnAF8pxAJqqPOsCZZTRWW4CzKAi8pXTKCiGxjCndSv71O2Nt5TolAluxZXxK07qzhgeI95Aff08Nw92pXOt+0j3LLFDmvsf6WR3UdUnWs8IhMH3X/UJzXzoP6VZ/N1E/7m7bUD2eDE/l7L5TH9GeNR6adWvdnadfvxfWn39JWhvS8u/LL5dlszG4uFjh4mKF5bJAUaQBlU3Xs3ytxt+lnCnrWG09GNunapS6vk+Jx+PG9iextRGng4MDDAYDzOdz5yovLc22cod4xfZYWvym6b7t1OXaOrR28/WR2LuWRso+fN/Uptxov8bXMqm6vJA+ylfuTfpEKG0tHzFKGcfa1FVbXYDcN9PHr/JaQcDVd8srMnxr1VCd7JKXLinUpprGvS5qWkZt5i25L26j8707pviOOqOuFa6ktAP85+b77pe8bbRYLDCdTqt3OkKNlGm70D4Vjk1oNBrh5OSkeufPcnCiSYysl+g4xX1TaLEnN0j8qOUYryYKTY2kdZFPqZlCsc0OKcblBpHL4VN8pba12IKXE19MGmPQ7/exXq8da6l3330X77zzDowprZl/85vfVP68HfmstJos/posYr8N5MuX1vZ8gA6nmJWVr11obUYqW7X69d23dNN1lapYAerKaB9IlQqi8HbM2zXFkXfRSnk4nzaLWeKTYnHXlLcmj1S2A2knN9wEaYo0IumeZdYSUlPk0cdMi8Wiso4koo9ZQnWaZZlzSodGZG1JG1BuGRIrYwIDN5sNXr9+jcViURs79tVPUxVpEhwMzVc+ebV604ifeJGab5889PGb7L/r9Rrz+RwXFxcoigKj0Qj379/Ho0eP8OrVKyyXSxwdHVVxZFq+OT50lDEH2MlN26DydGjtq13TkUKheSvLMseCQK4tH/70IR785EF5BHGelXfA5lCtYKs0MsvfTbCN8Dy6GHeN/c3ALF6FX+3X4+fcG2sAswUQuVVsZWUrf7f3zDrWsAalxax4Nr0yXJEXpeybDL1BD71RD4PDAQ42B5Wl7Oa3G2xmbp2kKN5kPw21AR6Hn1zDPzwJ9VXOe7MxFYBU3utqLWTJMpYsYo3Jkecl6ENdhlvGlu8WGKJn7ZfCSrdSDgn48v8SfKXnuKWs/65Y7m/lsxa9Mo59t2FtGVg/6c7LhdejfTcsrltXkqek0l+O+2rQRuTnUQcJY/Hq85L27PLl7nU3vq7kfmnHFNO7MfI97Md58DDy11cOGtXDhUHsUL4p/aIA5vMNfvnLN1guiyqstrfhV/vEwAyNyvGiV3MjSlkny3net0cPhdknyfVpaC+dQnme4/j4GMPhEIvFQgVjr5u+7cDqbSG5l0sJn9q2Yvvm20x5nmM8Hld5oLV+V7SP/O+yx2uj0/GNzV2OhYPBAKPRSPXbbDY4OztzLPzpuHWgPAWqDeB3G6lJe0kFbN+2MiDaVe47MLYFpShjQmFTiCts9tU4Q0CP7BTagLbrwB1TPGvHuPRDDOXFAAEAAElEQVT7fdUa4LYQbfy1hagkrhiQ7rvmbZd2F1us0CQjZeRHymaZPdoHKIFa38TaZT022SilgCWaW8rGK6X8U/MdUhalktzs+QCd0MIlpqQO+YfqYLPZRIHv4XCIw8PD6l6673//+5hOp3j27JnT5+T45BvH6GMATS6Zl9TFXEq7SAmXklZTatrXUto5kaYE8KUr+4a2WQ+Vt1SsynkyFYDRSBufeBvisoeOvpX5j/WbpvKljluhsZzLHlPsxNKQSnLO3/ceo5iSnYejvszrZJcNWEr5NeGj8aX3JuuqlHL2pe9bnxpTfpgjrSV99ec7cirUzoqiwHz+Cm/e/ALGvMLBwQV+9KMDPHnyeKtYAJbLsZJm9eS8c2UvvWvKVqC0ZKMw0+kap6f6x3vUjiiPWp5SxhZeR7JuCSwfjUbVWomXeWpbIzknk0m1sSdQntI5Pz/H73//ezx69AgHBwfVsX5ZVlr50ckSTT6W8I3tPN+yXFIUX03mGh8PTabNZoN8lGP8gzGGGGK4GpZ3neYZDt49QG/UK++JzWDvg83cX4cnz0oGa6nK3HQhFaftna+O3PROIFeJpzn3wlZuFD5DaRVrWPzQr3xW3DKztWxFVlnZVnfUsvnC5FtAdlt+ZmNgclNayprtb2Eqy9nq7t0sw+idEYpFCdoWywLL8/LDujbjthZHzk+xtWlo/CplzpHnZDkHrNelhSwdVewCiiQPqt+ShwVEbXL1o4NdkJLiuVayZT8u+RHwa9PQLWLLMK47xXOfATvmunfdlvVf8nHD2ziUL597GU+6yzhaXF+YUPgYpbSzUNuJxPT4a+1ROtGcJv34vKi5a0Annx9DYeWcqvnLZ23urcfnbnp+NaqHqeetnldtveDKtNkYnJ4uMJ2usV7XgV25DuKni+xy7GYXc52mX0hZq3ahZ9HW1yF9p2+9IIn2dcTvvffew8nJCQaDAYqiwHQ6rX3IR/z1vpS2LtboNuoV7yhMTfdpN1nHKe2Py8cNkXq9nqNXXSwWjp6c69J4er5xp0k5aDoxmc4u/FPjNtHbtt3Da2nzcV876RFA7dh0jlc01antk7rWuXdFqXUldY6ptMu8neLG/ZqmdQfGdkS7KP98/EhBJBc734bFAs9Dv9+vKYWKoqjueOJ0cHDQiTXpPonfLcJJmxj4wO2bLENKsBRq0mZCbS3L3OOE5aTPv9LK8xyPHz+uLBbpbrh9Uwx8SAnbhlI3J0Azi61UhXAsPgexQjI0Kb9YnFQ+8qMLuoOB02g0wvHxcXVv6JMnT3B+fo5Xr16VStctGCPTCoE6ZOWVqqjbFZy5TdT1Ijm2OJJ+1E/aKDYk8JDSn5qOnxKY4soCSjclTb6x2hXY84F7WlhNDnrmxOce36Ztl7lHSzOFfONeyN0HJLaVKWXd1WZM8IF1UjYNfJXhZd3I8iA3H8BYAqXzGjCntYE27cCY0lLz8vILPH9+hSzLcHIC/F//1wkAfnKGTMu6W0Wu+0vASJk/q2S1vyVoUhQG67XBH/5w5QVjY3mK9WEq51C4oigwHA5x//59zOdznJ2dOQrI1DZJ49/r168rd74m3mw2ePnyJV68eIGDgwNkWWk5TR/E8bW19kFSSJaQn5wrYxQCUlPJ1/+MKU/Q6A17OP5nx+gf9NEb9ipL2Ap81UBYoMRoCHAVIKx9VEDamiDW3zly2Ai+23BkBZtlmRuX59O48aT1bGUBS24Uhtoms4Tld8+SpSyA6n7ZrHDvlK0sZI31qyxk8+18t7WQNb2txezGoNgUJcC7vYv36HtHpfuqBGKXF0s0xtEQBig48fEvNL/53kv+ve1atSzUXi/f9idq8xmAHECxBWnzrTVtDrKMpSGWb3erJhf4lc/234KteW4tV8lPA4D58cV27pfPNlwZx/XX3ykOHHcgY89ueAJny7wZ9mxldd/5HMTriJenNh7UnMjHefPxbELh/YTPzahh3PA+61cb3/XX3Pj6wr7LeNr8y991P/9dsDJsiOphjMe9vm6Q7pp85XqgwBdfTDGZrGo8tf07Bzl8a2l/fpoDhqGwvv1VKhiy6x52F0AhtH7ie8NPP/0U77zzDgBgOp3izZs3uLq6qp2A0+Vpal3rcO/oeuht1stosmt7Ldqb9ft93L9/vzqJ5urqCovFogrvM+7RTpbcReYuaFfd5nWSHGtSLPX7/T4ODg4A3NyY4ps3usSRQnvFfdF1l2dTMJaoSRnfgbEtyacQ60r5qqXjc0tJ07dQa9opmypZfIvEFOWVRqvVqhoUucKxiXz7JB/4RccIynBACUbJxajGt43SF2hfJtqkvl6vq3zIhfB0OsWrV68A2KNj6SiH8/PzqBy7yptKsr2E2mjsPSardhyhTF+TIVXxHevvscl4l/EqVj4pmzG5GJXjAtFqtcJ8PsdoNKoWolwBLfPgG5MBXQGdmqcQva0bghh1Nb7K8c2njPf1x9hHKylKEp62BEG4G4Ee9FFN03zzdp3af1PTiIElIV7S39dnNbl4urG2rim0umg7PnefwmsX3inhQnG1sde3+Qbco6NlW+T543MKv4+GePC1R6y+aJPJPwqT8TSZ+funn97Du++Ot8d31us+y4B33z3AaNSDr7g0ZTC50fGg/Jcrd/l7r1cCs72e2b6XFmT9vsGTJ2P8s3/2sBZ/symVs8+eLbBc1j+y8LUrOcfwZzmvGmMB8dFo5HxZrd1nyeuP1wmvb27Jy9sLjVvGGHzxxRe4vLzEq1evcHV1BcB+LMjrSBLv6/IkglC5+E7g0MLHZGhDWZ7h/o/vY3BS3v86OBpgcDxA3s+RD7bAd56pd8JWcpAoGepg7NY9XSD+mFnMhdwNStA0K5+d9GTxht6V58wIkJa/GxaHvVeg6zbvlWWs2f7mBihQPZMVLQxgsm27pyOMC5SAbV6CsKYwKHILytLv8N4QR987QrEpUGwKrC/XWE/WavuKzfGx+VTueX17YN98UrbvcowBCqxWQFGUxw8bUwKxxuTo9YAsoxM7yBq1tKYt+dt/e5Sx/9d9LnnyO2fd/FvwqrSadcFXC7Bad3m/rDEAt34tw/Cw/J3GCx7HhqPx3FaNLQOIo4d5+mV+DAvLeQASqOV1Z8ujVoVBartECcVz/YzHvR6Ov9efjdfdnUvl3OS62XnWD7hSePlcf/dbymr59efdloHPr152Ut66DLRWePFijsvL8o5YORbQr9yDSCBWUmhNTnM/P1Es9jFnaOzb5cQ8vnZI0TGk6GxCukXpprlzP1o/8GM+OdhEsu+yXmi6N9Lah4wT4ntH7SmlnlP0Tm3SS9URaRSSQVuDpPSzlPcU/dUu5dMmrk/PI+k26M9C4yCvp48//hg/+tGPauGGw2HF4+zsDD//+c9r+5x+v+9cwUj8217XEqLbUKZtqAu5ux6Pm44zoTlcI6dF+CbK20xNZO4yfym8tEVd00E31U/y7wJE6GLg1WSiMtGOFZRySXdpRcePvw1NaqkTQlvS+HOwaLFYVPfb+vLKy8dXj7tOrm0WGDzOZrOpFslyQ3F1dYWzszMA5YL54OCgOit/MpnsJLeM07T+QhuApvGajDf8V4sr27h81/LrKwOpuI2FzzLX0lkbr2J50/Ll28SklKVvU0tg7L1796oNm2bJ5VOsae+pcrXZEGi0781aaE5KTTsGnDVt+3LMT+Xp6680Z2h9KpTH1Lma94Fer+cswtusH1IVFSky8vhN0o2VlU8JIcPF8u8be7Isqx0jvCvJsSo0hvriS7nbhElJQxvTSXbfOEr+sflebvT4f+p6iK+p5KbTlUnP5w9/eIw/+ZMH6Pez6j7FrAIQ6nEta5/iuFTGl3Jga2VmKgs0HYw1MCar/MiNrMWKwmAwyPHgwbC6/5F+V6sC8/kGp6crrFZFJT/kXZ7wKxllWWmnNFD7HwwG1djiU/pKfsRDqxuaw7mSkn6fPn2Kr776qgo/HA6rtLsiva3UldySQke9p5A2bmW9DCd/dIKD9w/QP+jb+2AzlBaxWeYAsQ7gmgk5snpargAJQsqsZ6I8MpSWqsSPeRl+9K01r/XzNx436W6EnwzD/zPxXti65cAthc2MPa7YAWW34OvWcBRFVtgjjnsZ8mGOYl2gWBWYFTNsphsHSK6yk7Bm95FvnRAb5+v7MbrHGygBVm7pus0g6Gjj8qh0+lClCsW+WaDkbd+htKx7npfjn3b3K7m7/q5bmQ63nq2DsvyZj900TpflYOXbSlCF4W4Urvzlbry/Sh5Q+LthLD+bpuvmxrFlq/nvTvWmKNtWSry6xSh/L59NkrvrL/20sHVgVcaR/roffaDA3f2WsOEuXM+rL56Ul565O18nFIXBy5dzvH69rMLH1kpA/cPz2JpR6qRCc7wWR/qnjnupe2z6jc3RbdLj+fWloa2hyvVauYa5uLio9GXy9CPaT+wyF2gUWot0ndZ3kZrsn9vqZ7tsx13riDlpcqbo7LSwof27b4/soyZ5jo1bTdPpsrzbtANtv+3bw7///vv4i7/4i1r8o6OjSi/529/+Fn//93+vnvxHJ0YSFUWxFzA2RG3q+qbSD9FtGpdDssTkdMDYfQ4++6ImMndZ+W0nlRRFYReUImOK0q4LOSgtSfLYR251eXBwgE8//bT2pT0/g321WuH3v/89lstlxU87wrjJsbD7otjdXG3L/zoHImPqX+/0+/3ko0I5yWOcb3JATVXM+2RMAXochWHDcahJ/9TCpQAoXZBvrAspr2PxiSaTSQXoHBwcVEcYhXj4gJrY4lHWkdxY3xSRXFQOIcV9l2mG8qz5N12UpyjkjTGVhSrf3O8ytmv1Keud7iPl86QE0rQ2LkExXxpN5W0bV8oRK+vUzZIEfzgPcqdyBOpKrbYk07uOvtCWfOWptQteVpJCii1eD3y84tauEiiUQJ9MS9KjR2P863/9Dvr9HL2etYJ9770DHB72mWUsEEaqSElrleU2XxaIhQPKWiCB7kg0hixOqW9aEJbcKA4dX1wU1np2sym2VrQZ+v0cf/qn97Bama27qSxm1+sCr14tcHGxqmQNtS/fkdBZVn6AeHFxgfl83nhekeOJ1vfkOJllmXNnES/rEPE8yjYXGkuaKGi6nksf/fNHOPr4CIcfHKJ/2Efez4NHEteOJUb93fHT2rR0klnSopCFaoQqkFbhb+yDE9YBMA2c44m144qNMZV77bhig+q/so7NGRBbMGtZgxJ8NaYEu4vMvheogNkqPv32tnx6GfJNjmJQ4OC9AwxOBihWBYp1gdnzGQpmsS6V/SHgI7T/9rVR7i7nfqJ+v8/6WlGNMYOBgTH5dvzB1no1345DJTjb63GQiI/d9t0YAi65e+mW59zPvvv+AftBC8Wx/6V7/dnG1X5pjNeAY+JBxaW7leM35duWPQfWOIBtFP86L9edK7dr3p2TnkZzYFHzt8+6xayryOe/fktZ7b0eJw2M5e50goUvn3WK15OvrOplUQeISbbnz2c4PV1iMgkrvUNrNb7+1/z5uxaG71ma6i5T90n815cXPn42nYd96w6fzPzfF5/LZYzB69eva/yLoqjWMrdBpwfstif7rtF1lNN16de7Jnf81p/pfblcVvvo1ap+zPq+5ZPuXek3boJS9LG++2EB4PHjx7h//z6A8sShjz/+uDoN8vHjx/iHf/iHms7866+/xsXFRZU+Xcsmr5F7G9sx8HbV/22i1scUf9snoS6UCTFgIJXagkApct0UyQWZMSXQR3mleyEluDoajarBaz6f44svvnAUvP1+P7pITCW+OGwSB9CVAJLatInYglYL24RvyF1OvFxxTOAQTTx5nmO1WlX+ckIKASmp4N0uJOtV1nVque7aPrTFViy9NhTblF0XhQAsGYb7L5dLTKdTDIdDbDYbPHjwILncQ+n45ElZpIVkj7n55PJtavlz6JjlfVBKOYTkicWP+fM64mNGigJES6PpfMq/wvaloW1ImipbNJLp7VLvISV1G9m4fwiM5WH2Md5oZa+N7U3ix+LGxuRY20ztLyngljZeamNb6tjE+QwGeWXtev/+AD/+8X0Mh/n2vkSqV67YD5NUnlrFLnczgABirdKX/5d+pQI2c+JpaRoDJrNBlpV3OmZZjl6vPMaY7pMji9nVqsByWWA6XWM6XTsyxroir3Mq56IosFgssFqtHGWlrAut3aWObbJtpqwVpdwhN5mnUH/Z1xojy7LK6tVs/w4/OMS9H92zlrC9rAoXAmFrAGyG+H2wIffYEJ3BBVp9vDQ+BuVdrnTk8TZuVRfsLlrHjcelO2OxrRuz9cusn/w3RvGjvBZMVvrdlvPWSNT+8zAFkCMvLWSB8jjjLEN2nKE37mGz2KBYFli8XqBYFzbuVh5533JsTE5th3Ks1MZO2wfsHZRZlm/HFdrDUp+nfkK/FZcqXFHYsRQ1AK20+CddXTn+ZFv+2XYMsx+p0PHF5VqRZLAAKhVk3QrWVl45VtYtZLnc9fcmbtxd85P+vjC+sJL2uc+h8TsQQvGrrxG0OHXe7rPm77oRn/pca8NpYfgcpz3X3133MIXz7nN358i6O18bkPtmU/5fXKzw6lV5z5+mf+IUA2Tl3O6bM0Nzc4qugfzb6idCYXaZl5us5X3lE4o/m80c0LrX6zkfxqTIF5Inha5zj70L3aQ+97p0SLvoz1OoCx3bLmk2ibNarZyr4rosk5RxMIVHqk4nlMa+6xzQjaTkeKUZeA0GA+R5jqOjIzx8+BB5nqPf7+Pjjz+u7omdTqf44IMPaidPffPNN5UBGY1tXJeuyUBuN9HXY+Wfsk/VZG9Trzc91rV1S6HWYOw+C8VXcbcBRPSRNnDwRVtb2VMUx/LuqKbUVNm7a13keV4Bqpwnvw92NBrh+9//fu1s9ffeew8nJycAgMvLS/yv//W/qruwuqZQucQWl7KMJPCo3a3VtO5SB7cmfNu0H6rPZ8+e4eXLl5Vs/Pz8zWaDwWDg1CdNSNdN1B/lcX0S6OF1lKrMbtovUsJnWeZ8ie9LW6M2G6HUsFrZybFO2zwScM+t3I2xxzhSWJ/V9WazwbNnzzCfzzEYDJBl7nHLdAcipSvrkcsrx2uu4LstRGDgcrms5CKLzZsi39jD21uTu33keKkBanS3trwPU5ODyxibr2Sb4GOWbHu8PWoy8vhdUBNe17lG8qXlG2/a8GrKw0f7LhPZztoqe7QxVAMGQvy09uhLVwPVuMKr38/w//6/H+HJkzF6vRzDYY6Tk4FzFHEZD0hRlFvlrVRQkpv+zJW8rhtZn0llsNlayFprWmsxWwIfdGRhCXLYI43JUra0oM0xGBgMhwU++eQYH3xwiPW6BGh///sJFov6nae8DVBZ0pfVtOleLBbVh4eyzmLtJzS37jrPyziyPWoKbA6GkZtvD9Q1HX//GO/8+Tsl6JpnGD0coTfqOZawWZaVlpoofyv5M/YMOEBs+SPcJclwDSnK30C3nqU+JCxgpaWsMcZayxrrV1nGbp8J2ATgWspurXezwv5yvpVVrLFWrtVdsnSHrLSMNaayoi3yovzdFGW83vZ4475BtimtZPNBeXTxyQ9PUKwKbOYbbOYbzF9YQCUEmsh+kaJU4m2cr0219PI8x3A4xHq9xnK5hDEF1muzvaM6345NNEaBvZfHubv/NI7R3qQcV40hUNRnLWu2Vq8Q/vVn+i/zEnbj7+6zZg3rPtvy1H/rz+V4L93d9zKM5q9XaybC7h9YKeXwzbkhN6OG4f7cz32Wc2s9jv2VYWUYd551ebhWsBSnzsPmx0ex5VG9HKTupe4nZaPrCjYbg9PTBZ4+vXLma22/wX+luxYvNq5oPH37Y98d8ZKfNg9L+TQZfPorOX93STT3h056kbKRDqDX6zm6IvlB7D5ol7XSbaHr1p3ftvx3Qdexjw7pDWV/lCc+np+fV8/7OGEwdf/RdtwI7WevU4fR6/VweHhYG4+n02l1RPrBwQH+8i//ssIciH7wgx/gxz/+cXXc8IcffoiTk5PKKjaVSLerjZG3+bSvpvS2yt5E38Ld2/CsgbHX2Rl8pKXvW3g0lbVpnNSwsYGp7SAZkrcNT20Dm6JE9C3mON+mcoSo1+thPB7XQNuTkxM8fPiw4uH7miS0YI1RrFwl2ECToayrVOWstjhPpaYTog9E2TUtUjL6JhACbLmiL7UN7ToepQAxTRTpUvko3dvKy9uub8ESaiupSnsKu+s4mNpPZHpS+U9uHCCVG09adNKxLIvFogIn8zx3FqTkpoF2XI7YUUchJXcsjlYGklLaPx/H6OOGXq+nAoVdUKxdaG0xpECQvCUPja+Moyn35XtqHw+F8aXj6+tSTk12ze26N8ZN1jAxN60v7TLHtol/W9aoWv/1zSOh9h3Li9bPQvJo66BYOqNRD4eHgy0wUCq+hsMcH354iPfeO6gA2HJIlUBsJQXPGctjVoU1FWBgqjj0Tkdx0nMZR7OM5W665WyZrvbrKvXptzxWtNi+U5ss38u7H/sYjw2Wy9JS9uCgD2BdpbfZuGsI3q6pPPl6URu7Q+NjU/KtGZrEk2CUxiu2WQ35Nc5nBvSPSsVFlmcYPRrh8P3DEoyl/6z8BVCziKVfR+7M8q7ujhVpuq9KGHJPkD85/FYeB5A1jId85m78lz8D1qo2E+3N1P3oCOLMZEC+ddvKVDuumMrTKDJBPBfb/BdAbnKYzJQWsjAoUJTPmQHMVrZjoFgXZb3mQD7KgQ1gNunrz1rxKv0jBlxoYWitWfZ7WqdmyLKiAknJMpYAIq3ZZxlZr5aVZS1ZKQ1sPxwhS1hpGWs/UCF3qnxjLNBLlrJuQ4HyjCpuCb7W/VgJifdQOOnG3TU/G4bmj3A4jWcKhfil8/I1OdfdKG71MPy9/uzysL+mFseuC+y7Gy/VIlb34/L4KGULpYWp90W/3CTDZmOwWGyqj66m0zUmk7Uom/o6LXUdRs+x8SU0BzfVM2jzbpM9eUzHlMordc7W1qDcL7bfa/Ihb1NqqhuJrcualMm+qcneet+Umt+uZO5qX7jv8or1UZkP2de5NSzXm4V4p/r7wmvjT5PybroWS+HXRT1p44wcux4/flxhDkQPHjzAeDwGgOr49MFggM1mU+kiyZ14LRYLLBaL2lVNmmHFTes3JKXMK7vyD82pNzUXhMKk6vxSqQbG3mQj6AIgiPHpMn9aOrFFWpdpp7g1pdiirSu+2ln3u6ZHR8CNRqPqCxWarHa5q863KD05OcFwOMSbN28an93vW4CEyj+2uE9VAO9CkidfCPCvGbPM/eJns9nszRK26bgRKivOh+dN21xpfDTicUOKHp6+XGSRVSBZ14TydVssJmNj4WAwqD62MMbUjlyheh0MBtVC5s2bNw5/WuzweEdHRzg4OKh4P3v2zLlX2nfML9XTTc6BpNzjQPJiscDh4SH+6I/+CCcnJ3j8+DE+++wzfPbZZ1UceTw7UVcLZkqnCz6SZyqYGkuzyaZf6yN8DNDGOQ18lOOAr59r40tKHtrQTYKVIaWO/NXC7bI4bsorFfzS6l0bp6SMISV+U1klxdpTaH2oxfn003v4f/6fD6v7YMla6+hogH7fWsK6bd8vn7R+tc/1X+lGIEAZz71X1g1ft4glf2sJS3Mpt5C1lrHlvENWNNn2Lln7S0cc0nOvl2E4zPHjH9/DZmOwWm1webnGl19eqcrkLMtw//595HlebcQXi0U1rzUhWsfK0xtS1+xN2lme59XxW6enp46CgacT22uF+nyoT2g0OB7g4//fx+gf99Eb9tAb9dAb9+y9sDkbuzOUbgAkEFsDXpn4tbzIsEDQqrUGsoZ4J5JjBWsddetYCcoYUVeGKfjZc2UNy94dN1PmzbGIlffIZsya1hjHUpZ+yWoWm61subWYNb1t3I2p7pE1G4OsX/7m/Rz9wz76B32szleYfTPzjr2SYmvRVDBCjvt0BF15fcYa6/UGq1WBzQaVlX25Ji/HFG4Za8fZ0q2UsfwApFwDlmMZv0uWAFl5j2yWUVj7W/5rVrV27ObxNTd65+4pbrZMXWtW7dm6WatbLbxbT8YbJuzu64NtdA86UKiGrPnVj7nn74aBi3X3enw+J7rvblj+rsWR/tLP5V/PQxPyxa3vkeWzPz9FYXB1tcavfnWB1YqO8nT50RxWFEU1XzQBjuS821TXmDKuaDxCugIfaWs+3x5X2z/5/JvM3bSnJUr5iDimJ7lOui6d7r6py33hTe4xfXTb5OmKpJU43zesVitMp9Mojy7xAm29RfJpPOUVdSFebWVoQ7R+C417xhjM53PMZjMnzGQyqXSRWZbh+fPnmEwmTpjz83M8evSoGu9+9rOf4Ve/+tWNnQjpo9vQl1N1MN9man1M8T6oq8JuCszIBU9q/LaAb1dKQi1OinsTuZtaX4UWLqFylnGKosByuawBYjxeaAPdRlnZtN7pnHiaHOUXSiGwLkWJ0GSyTFU0+Bb9IYoBCKGwTRUgbairiTnkxtuTdJeKSd4G5aYlprSnsBxc42Bbv9/HarXCfO7efeNrazFwiMsZa6+hstA2ainEj1inY4k5KCvzxy2qObDK+x4dHzcajZDnOU5OTjCfz2vHmWvl3mbs5ZSqGI/xkPnO8xzj8RjHx8d4/PgxHj9+jCdPnuDi4qI6UiUmT4xiivU2PH3pSN5a+9PqY9e5NRReaw++o/9JZt9JAD6FSqosu9A+F62+OTc0z8ZAmRDvttSGVwqo5JsHUpVSsbA8jG8u5e58/NR4afNLOY/kePfdMXpba8IPPzzCw4dD9Hq5AxKQst3mu+ISyKlrxURgAPnJ+BxYsHm1v67i1SqF/XfJWhlL3nztaO9PLJ8zAMU2Tnnno/zNsoK5lfIeHKACZzcb4Pi4XwG8y2VRKYKzLKvuF6J5jc9fZX66U/SF2n3TuaDX66kfO7VRlMYUmsF5NwPG74wxejDC8MEQ/aMSjCUQtgbEbp/pntKKZwYVhHXSdMAiz5xHfAJ5Vfl5rGqDJLuL7137Ndtw0m37b7AdY7bPyGABVrKQLVgYIyxijXEsYw2275mxx0JTny1MBY5TPG4pqxlXkqUzDGAyY3kYwKwM+sf98ghkY1AsC5i1uw5Xi9PTzlL2/aG5r/zPkedmuy4ty4c+5jDG3iGrfRdsx1lqx+WHJDZdujPW3o1djmN0TLFBUdAdsPZ4dpLD/UUVjjcoGh+pItx3f0Mkfq6/DUPjr3SvdwY5Pmj1oY0hTTrV/kAV//Cmg5bSzR1jtXBhANZ1c8PTnKnFs3NmqoVsexA2FC8Ewkp5uYwAqo+uJpMVptM15vNNDYTV0/DvmdvuebS9q49HV2vemB7Gl25s7u5CPk0PQiTXFruk10RPFaOm5dmU303QTe+vmpCv/FPb7T7SbkKh9p6ark8G3p9iPHzr7ia635BO1659XD1KqJ5Sy7ONrnpX8pUVuS8WC5yfnzv39mZZhvPz89rHta9fv8bLly+ruJPJpNLV8fas3fu7j1PvfBSrj5hu+aboOuauNun6KCbPrQJjb4I0cOTbQqnAQrl5q1sK7WJNuiut12u8fv26dmfsRx99VLn5rMFkfvZdp/fv30dRFJhMJs7F6hwk0SYsvpEnCl3iLSe529BWJWjE2wx9eSrD3mYKAZIaSVCmaR3J+qdjLp48eYLDw0MAZTt/9OhR1TZOT0/xxRdfNMqXTJMfz0HvEtQkIMq3oJRtVda3TJPHlZTnOQ4PD7Fer3F5eemMXTwdkpvfoSEt3/v9fgVcDgYD3L9/H7PZDL/85S+jY9pt2TRReVHeCYy9f/8+PvjgAwyHQ3z44Yf427/9W3z55Zedpdsln6bAtgZwcRBvV4tvCQpqSheeNt31KHmUYFZp9c8X5ddBMVDjpkiOdbKs295nf5MUa7f8HqtYeN886Crz/f3GNwb3ej3keY75fO7wkscvSZ737w/xb//tJzg+HmA4zNHv5xgMcmQZGAhL/QNA7Q4+P+kKY0BDXEr3rBa+VAxnlRtXFvsUxfy3KPi9srqFrL1XjoAKei+q382m5NXvl+HX6xJ8Xa+LLRi7wWCQ4/Cwh/XaYLUq8OzZDK9e2U33YDCo1qp5nmMymbQay+RcyPsXD7MrybUp3ZOtySz7fUyhFFPUUDhO+TDHh//3hzh478BawvYsEEvAq3MsMeDeEQu4ftt3mSbxKr0zNYwjqwRYMwbURuKmUoplbAWgSoDGiHbiea9ZwG6fqzwUNt2aZWyWVcCuMQywLdg7uz+WAFuY7R6hKI9DNoWxvz2DbL2VIy/TJz5ZL0M+zDE4GWC9WGMz32DxcoHi0j8PU5vW1uS79h++9h0OhxgOh8jzHFdXUxTFeju2WDC0389RFNnWajbfjjvlxx72l98dW76XlrUWdKWj421f5UAsHfkO8UthLfhb5htet9hz/Ne1eJVh9OcMEFa1MtzWBdKa1h92vxRa3tj5Tw/rvoeOKDaKmxuHz4uxdx6H+7vPbcCs1HCa8ls+S7nrstJHUL/+9SVmszVCS3LfGrprwE3Oz22BEd8eRAvn4xXSRWjjX1MdSExmTvwDwtS8tZHhNtFt3be9jfRtKsdd2y31l5R+n7LOifVHyUPTwXc9jt4mevnyJf7rf/2v1Ql1QCnvixcvasYeRVE4VsHGGPU0pNtmKXtHLsX2DF3Rdx6MTSWtMlKVCTG+vgGz2ujuWPEpg7C2CGqrZE5ddIbeF4sFnj59itFohIODg8p9NptVg9dms8H9+/fVM9j5sQldTHjES1rqEihEaXJQTpZ7bAHNj6BtU+cyvSYTKw/jo5Bssck9Je3rorYDK1fYaeBDKB1ZH7G4g8GguhyeAEUAuLq6CvZhjZ9P0a+BsbE2FCKZfmx8lG2C91kJHshxMQT80t2ym82m9jFHan5C43ss3q7ExxlfXzs4OMDDhw+rNkJ1eB3AYJfzERDfUMiwMRmIV1MlK8XTrF3lHE0gmHbMDY/TNfnq9yaUEbHyleP9bdpk+eZibQyNtSXfGiNlHURtPyRPbK3J26UmvzvG5vjRj+7hyZMxTk4GODjoCxA2ZA0L9b0uGk/bF8bPo65Utr9WEeu3iuW8ShDWxs8yaRmrpUXH2JfASGlhY2CtbMv0y2NE88rirdcrkOfAycmApZtV1sd0p1CZTru+kLI+62rsoTlUtlGuZE4dV7XnEI3fGWP0cATkQG/Yw/D+EL1RD3kvLy1f6X5Y372wrP3KZ0cO8e6VNYNrDVtF9/Blbk3yrZJxeWnXe2Ymqx1bHLSMle/Sr2BxDezdsUAJvCKzv1u/6rcQ7syiladrjLXALTMh8t0r5ch75R2ymcmADZD37YcmfZTKwOKkQJZnWE/X5dHGLfdRvjG0SXzX0iGr7oxdr00FrloqUH50Ulq+loCqHZ8AIK8+KuDv7lHuPgtZ4kdHHhMozP3KfFKftu6UBslLfvaZyqsMuy0BljfrRmNvvSHLsBBpuvHsu+VRdyM++vy1D7LNTOo0QmHL8DKMOxeaoLucIzk/+2vDlo/pIKyUr4slnB840MNp+aFn+qjq/HyFq6s1VqsiCYhtMydp8189D+F1oo/kfrcp35T1tQYKh/IiKbbG1/ya8k8th6Zjc1e6p5Q2cEc6heosZT//ttIua33KO9dx8w9tuXVmSjohnXRoH+vjId2lfkIbm0L73esg3nd9RyjzU4u+/vprvH79GkB59PBoNEKv16viGmOqa9RkOhIvaPIRbmyMu+k+cZ06p+tIKyWNWJnvMlbtDMZ2AXa9jdRlR4hNUl00klj63NIsRa4UnnLxxxcyMWB2Op3i5z//OU5OTvD+++9X7m/evMGTJ08AlF+UfPDBBzg5OXHiyiNJU87Ul7JrJAdXurSb/EajUWNluQSZ2pJWpjfdL9sunG8rhRYlGpjZli9QArB0Qfx4PMZ7772H1WpVu7sgxkdb+FhljFU6ccvYJoClL/0QeEBp8UVlnufVscIpFFqEUjmNx+OK33q9rsKl3BUUAnv3QTwt+XGJJuPR0RGOjo6qNkJHSu7jK7vY2JWiBEgFUeU7H0N8PLRwofYXk4MW2QS4cp4Uj+5x0Rbz+2g3WVZaqK1WK+R5rs7X+6Cu1neaIuimSRuvNEVdCrDvm+tSlUo+xV6KAo8/83GLp03j4Hjcx1/+5Ud4//0D9Pt1S1gLAriWsKEmEFImu/HkPOS8CaUvXytyN348MVnC8qM77W95NyNZldnfEpjglrF0FLzZWp8VKIps+16693r0nNV+Nxv6zdHrFXjyJMODBwMsFgXWa4PFopTx4OBg57Yv24uvvTXpZ1rbzrKs+vBLWuOGxmVfuk37/b0f3cOjf/4IvXEPeT9H3veAsBKMJXAvY2UjgVL+zuJwYDCmrHeAXu3oY+1IYgqbQKYycRVxjPXj4GgVbtsvqmc6OtgwMNWYKpx8p2cOxNZAWgh3Ok63EBayWyC24lWIuXprIWtMGSYrsuo4YlOYyo+HMb0S2C02Jfha9Arkw7J9bO5vMPt6hvXUzsm+NXubfpgyFxpTnqhh0+9hs9ls19VkhV8ej17+5+j1AGOKLVBabMsI1dhlrWItSMatZ22/QzV+W2BXt5CV/6Ws7rsLAnOQVo9nw1K5y/tiXTfrV7ecpeqhfFED5H718HIspLoOVllnVE/Hn359zjSqH8973Z235zovLQzxs89yjnXfu6DwGkZ7l/K7fLiMdAz4119P8ebNCinUBoj1Uer6jN6bphdaA7ZdS/h0b13rNPl6IJZvWkeQ/mFXw4Q7+vbQtwljaJIP2ufLNQW3Rr3OU7lixMeqprrEm6CiKLxXfJERR1EU+Pu///vK/fDwEO++++61yHdbyQemp9Db0pd9cqbsY9vquBww1ncMVRMF6h11T10OaDRIymPsgG7qUipqZNpaeCLfUcn0NQoBD0T9fh+ffvopLi4u8MUXX9S+QqE0236JEysPOr6NnjXFFQ9L/rssMmMgtvRrW8dd9+vbPCn7KNR+uwLO+WYlVleDwQCPHj3CYrHAeDzGarXyftnVRibfsUFteGluchPMjxemvkRjk7bIDJU573fr9Rqz2QyDwQCr1ao67lmSHCNC6ezSZ3ftS71eqdB7+fIlDg4OnDo/OTnBu+++i8lkshMQq43ZXY4BWt+RZRqbH3xhNF6+tLT0ZN/TLLQ1HqG5pStFAn24QApdX9721S5T20CT9N/WNSPN3/KeVq1tpSjt5YcDMm6oDZGfbBdSlizL8Omn9/Dxx0fI8wyjUQ8PHgwxGOQVCJvnNj2rWCe3lHKJh4mRVLxKt9Az/5fAA1moau5Z5lrGWjCC7oq1bpuNzWcZJ68s3sgyNs9tHLIyXq8NgPX2+oEFimJZrQF3mWtDawWpAE3pm1oY/uW35O1L27eJjX18QO4H7x7g5JMTHH18VAKxg7wEYHsZkG/n+QzJFrEVb/FcAbCir2lgqtf6Vb4rfloZpRClWasXg8oqtbKKBasTg8qd/zpHD5O7Aqzy44q1f24hK/NZAb+aRawpw5qCxZdyZuw3Y37b/9yUFrKFKZBnOeieWwJ7szzD8NEQvcMeNrMNinWBYlFY/rBzfZs5M1SHul8pWOnHLWRLa1j7UQn5Z+D3VfNxrZxy7IcofDwrxxrqX9wvc8Yk/Z/Hda1lSV4ehviW/Zye4aQPZMo7qjhU7LbvGeZG/jaO5ePOD3YsIRcX/NWqN94NecPzU6zp+Pzr61Pt2Xj9NNC2Dr6WPOScGgZl6+HbUNpc43PT8iHlLuWczzPM5zmm0yvM5wvMZvErtVIVqb58dLHGjelTU3U2uyi1UwHkFP4yfOzjF16+vv1XCsX2ganhm9LbqMe6KdrH3nHXdG+i/uS4k7oup30/fweguvnS4mGa6rViug3ABYNJh5hCbcbXfegNUuqAf+C8WCxwenpaC7PZbGofyPOPUWLUps02KY+u2v2umFEs/L50jk35t5UzVf+jURSMbfN1Q9uKl0qEJvxrm2oR7qYRed+CKlUBndqhfYoY/ss3pDFKHQh27exZljlfwxERGHv//v0KjKW0CIw9OzvDV1995b0PUrMkkvdhhhRIPuJgklTMS37cGq/JwJu6cObkGzB52ilx+VENu4KPmly78OuKV0i5KMtLLjx4eE3B4yszLYzvQxhOw+EQ77zzDq6urjAej50vuwgoSGnHWp75ON+mrlM2cXLzRZZ+QJl/Ot6N8sJlC6XLw2dZhs1mg/l8jjzPsVwuMRqNvPFlf9TaehvFXZfU7/ex2Wzw4sUL3Lt3z/lK8uTkBE+ePKnA2OFw2Jm8Kf02BiikjK8+eVM2Ldp8T3UY6ouh8Y++RiVramOM074ovhwPYhsXmX7Kgo8+TJAfXWhrm6aKlJumXcfxWHzNv2lbkv4cjHWPowzz427aGBPrRxrRmMnjUDy+gfzxj+/jL/7iCfr9EoClY3PpuEtrAUXzXpocIZlTq9WykHOn/eXP3E3+l/m2v8ZY5b4GytrjPAF7PCcd61lavFq30jKWful40ZJPmXivV1rI8jLu9wsYs8J6XeDqao2i2KDXI6CleftNpdAcEBoneJo+q3+au2X8JvOOXCdTvIP3DvDkL55U1rDO3bB5+rHENStZDXzl7hJ81fpA5r773B03AeQ2JW7hWhaUdXfqkR1TzIFXFag1FXNwALYCYoHKyhWFiLf9p/AwKO905b88DRkXCb90RPJWjqJXIDMZCpT3ywKAKQwKlKBs1SZ6GUaPRyhWBeanc2CBEoyl7Ir9V8pYvOs8WqbXgzFFZR1bpoHKMr8EY/PtOFxsP44hwNYd46omF/jl/1vXLSjLwVY9bJmGbgVbvvMxs54ujaN2rJXvbp8nN1sf9KwDtDyvdv1oy5tXpb7mDNUWYBthMwrv033vJurP/dx50Khu2rt1k3F0/32QxtpXDjF5i8JgPs9xdtbD6ekSk8nUu/flfDjJecdtk+F1oI9Sxgq+z/bpijR/HqbJ6Ws8XyG9QwoowfdBmrw+GUL7vFQ9ZIqM+6C3YR+VQjet/96VmugQu8qrb20ca4dyTazx0vw0nRxPW+v3sv9InWVKv/blwTc2+MaiVKxolzG2Ke8ueHH5FotF7W5YANXRxaH4ofroSl/nm8fa8gGajdFN6CbHozblE4rTRf11fmfsrkLFCqgt/64r/qYV9CGKKSA1ufdlKdsVzWYzrNdr/OxnP8OXX37p+C0WC7x8+bKaGPr9vmNFe3V1Vcvzer12lE2ped2l3mMgTwxACPHzLVZuSx12KUdXvGLgiU/RqPWnlEGawmhHGtMzHY16cXGB2WyGPM9xfHzshB0MBjg8PMRyuXRkSgF0fZulFAArlVLKg34JNDCmvHchBLymgFdaepeXl+qXazyeL//XCXLJxRSlR8rvyWSCFy9e4De/+U0V59WrV9XisMuja7Vy2JWfb+yMbRp4/YQALim3lr72LoEF2lSEFBXL5bKqF2OMU/Y8P75ySy1PzvfRo0f44Q9/iKurK0wmE5ydnWE6nVbHFt3W9YiPulB07+IfA6WkOwGxVCf8o4iYDLJ9aptoLYzGg8uoyfn++wf4sz97B/1+jsEgx/e+d4ThsMdAWO1YYp5eNFuVYp6jTDxejIdsqqZStkuFMi+XUrlv32lc4GCFezwehdHe6VhiDiwQCFuGKUFc+58hy4rtLwd+DYBsO5eVxyCTZexmkwPIsNmU89xgUI4ps9kGk0nYmmeX/tHlWMDHR66k0RTLTYjHGb8zxuN/8Rjjd8boDcu7YSuL2AwlEJvVwVjnGfqz04/kO7Y8OCi7dSt/FH4M5K3lXeHhy7OPVPCAH0lcPtSAVv7ugLPbZ/5bHVNs4PCowm/vaKUjgn3grDEMlJX/2faXx4H+W8lOdbpNz+SmtIItDHLk5Tvy6vhjk5dhAMD0tnnvZxg+GKJYFuj1e9jMN1hdrsp0auPDdc2ZGfK8/Mhrs6F7YkvLeQJly2OK6aPOrPqww/23axe6f1YeV8zvi7VgKHd3jyDW/oF6mPqzZgFr1Dj8N+amP1Njqs8t9S5F/ft610NuUzIed+1dzut1P9et5O9zc+fPNIC2SwqxtH6+fNXzTB87FYXBxcUST59OkWUjZNlBZ9fJaHsv7kdEc6DcO4SIr+261M80qbvY/igkEy/jUPyQ/sC37wOsPkSCT10CK991+i6V477yet1lqOki2/TfWJ/1ub9t+gSg2zri+wR6puupJNEYRqTpE7uWzyfvrunc5rGiqzlh1/3qPqhzMPbbSuoGuUHlNBkgm8gg00jlqy0wJZij8WuT5zaLRsljuVxiuVziyy+/xPPnz2txuGL06OioOprUGKPe7Se/4okp34nIUsk32KbUUeidL5pDba6JxXoIEEhRSPvefXRd4FUbSpEnRcnvKwsJ+KT6U32Tsn8+n1fWnRz0IR6DwaCyJOdtpm3+fEegtiWrGKrnl343m0017lAfDpVr07ZEZTqbzZy0QmF9+ZB58FETGUMbVJk+WUFfXFzgm2++qer94uICi8UiqExoSl2UQyrfVH6poGYsDdl3+aZflp+vPEuQZeOE00A3riBtS7zNHh8f4wc/+AFev36Nfr+PyWRyoxsmH9AYC38bqOlcxtdIbddAPE2+1vCNkdqYJ5VUXKFFCvpHj8b45//8EUajXgXCkjI/yygvcJ6tvICKIkGGccPHFeQ8D3V/m2/LyyqP+dGc5bstC2k9ZgFX/mv5uO9cJi5HUegZMKY8RpTk5PKWwGsBayJI9z4abDblsZ+9nh1/plM6VcVfVqnE22lMCaq139BaX7rTfM0BrdQ+IcfWLMuAHjC8P8SDP32AfLC1iM2zyiqWg7HIt2Ant+YmAK9CeMowGTt+O2QV68ijWcXKMIqbz6pWdqUs0Lequ2B5WVLRZ8q7Udz579bfGFNZ2FZYLoGthoGpXOZC/BJPZv1KcQkYpTtfnV+URxUbU76zruHIVYHEsixINvIqAPTK9xw5iu1Zy5nJgA3KY63zDDgEigFdZosSjKWyiKyT9jFPlTzLO2FprCqX3GRhT/2otJDdbELjggRB+ThsgVi617qct8oxi35RO9K3bjVLYyA/uhggK1d+VHGZtmxEZTgensJKy1mSwbBndx7gwKrlk1XvvCxIjrp7jGTA+MAcGrvrfvW7WPk7zXfSz4YJHz1s41k3O4f64+za3FPmL56HurzWj+evlDNDvz/Y9pcN5nOD58+vcHAAHB31GwGFRL51uW8foJEzFwTC8nBy7pNhQpSqiwnth1LyI9+1/UxqevxdlrkWzreGaUNtdFBt6uGOuqVY+9o3tUlPa2uhcUEbi2LytBmbeDwtTmzdrsXtom+G5L2NxMu93GP3amWsWTHfhrGiCxluU/3sS5ZddZtd0LWCsV0pizVqqvRsEtZ3l6JPqUHydEkp/HwLTI14OFIyamBsShr/f/b+rFmSHEkPBT+YmbufLU5ERkQulbV0VnU3m0VWD9l1eckmb8tl81J4hQ8UuSIzwtd5mF8y/2N+AV+GMq8zIqSQFMpQhGQ3e6vqbWrLrsyszNjP5sfdzTAPMAUUagAMZm7ux09kaMgJc8OiUOyAfqbALknKf3FxgYuLi96w8/nc/l4sFqiqCtfX15NceE51v16vg0cWUJjz83MLIo9NJ7aoDFknjOGfeuc0No19t5cx1KfApPrOGbCH9v++srm9vcXl5SW++OIL26Zfv36N9XqNo6MjPH361AJyU9AuFlsp4guZ5XJp3bYh6hNXV1e9dcbTP9R2Sh+S0Bj2k5/8xN4VudlsvLurp6RY380F3w6RUm2A5sHjY/PFPY3t3JJdfrATA8f476naVVEUmM/nePDgAZRS+Oqrryz/2D3L72gchepOAqo58QF06iY2xoYUYLzNcd5Syae1xuPHC/zLf/ktPH68wNnZDGVZMCCW5jH+BCCA1FhT9deLvpuM09fcwwppmXfycwAAhTP59ZXV7q8LxPrAof9OgIUBTB0oQVazTWP86Y8DCO7eWRPe/CkURYO61i2oYuLQc7Mxz9msxGJR4va2xnJZY7lssF4fxngq1zp0bDv50Xvs2gYKF3KXNDuf4aP/9SPMH81RLkqoUhmr2MIAd1EQVgCt/Dd/SuBVKstiYKoH7AbCSuCX8/DCWodkMbi0iThYIaxhATY+cYvZ1p/7eYBn+9uCqKF30T+g4FvK0nzXgrAyrGcRS/nQzL1xv4mvF0e1foWCrrWXlwYNVKHQKHNccaPau2PbI3h12T5bcLiozP3CxbxAMSuwulhh9XKFo6MjzGYzexILHfUe+1BvSjJtkq5BaNrxGahrY3GvdQOlgKoyH9dUVdc61pxwAPuuNUDgKwGvSql2XDLjGR3JLj9EMfOCqSh3dzj9OUta391/p9/y6bvxOcsPm/s75z3mFvfnL7GxSiqx0/xDYbQAWmUY9zt8NLEEKp2/nC9Dbl0ANCXrtsRljqWRypeb3zVOTh7gX/7L/yuUmuFHP/oRFouf4ac//f+iaRpcXFxkrXlTIITpJz4PqRvj7/xD/G10fcR3iF4vpuvJ1dtssw9Jycv9YvmJrWPlOjkUb1u6j/vUd3Q/KDS28A92y7LEbDaz/qvVqnOi0hT6gRQekQukxnhwumuw/L7QuzHnHQ2lt9oyNmegyBl8cr5u6UsjtUgZKtNUFEvnLsFWKYP077unDYAFKIjoS5ahE02MiE9d197EKheTdORsLkCeSivXnfPP+appCAA7Jbiwb9BvKiK5pwCuc9oj3av65s0bu6i7urqy7W42m3Xus0ylwfvBVPU5ZGxLheNjrdwQD5XHKLv8Y8hjfTFVn1NtZseSTH+z2VglBL8vksaa3I8fxoTpW8j3hRnKcwifWJi++YWHobI7PT1F0zRYrVbZR3HuciyTvOkYfjouN2due0c+jS2voYBsB8hBfM3X9/GDdKP+XhQKZ2czPH68wCefnOHkpMJsVjBrWAnGAoCvZG9/RRXZLmxIoe679RGFo2z59wP6VrDmqey71iSns4olFEcpWEsw/gScRRh/N5Zf2ubBHAHqZNPaHdXpyp3k8EENPx65mSdZmFWVsZydz0tW32jnKo261tj2e4rQfBVrV7ltjStb6XfuOB4ag8uj0twJWxSYn89x+s1TVKeVAc8K2D8PTJX9SMFZodLvFrANgrIhkJXcuIUs/Lg2TZFeUBY4v1QZZ5HyAVbLWxt37mYBVwg/GUcph4+07kH8SQG67T/cQpbzJotX6DYslPW3z8KBttadWclq6E75QwEoWp4tf2mFqwr/uGUAxloWcMdal4ZhMS+s/PWqhqqMxXTshINtABaKl+p35l1B69qOMVrThx0mTfqII2UhK8clOZYr29Z9y1h698dJeG68kdAYRe5mbKbx180pfsOCFzY+nrs8U1j3W2Y61I9idZTuc26uSfGIx+sPE5qvY+9xa1neBn3AsgvAxkDNXLm3oS7/HBDWhJPzLblprbFaNZjNgOPj96DUHEVxiqI4QllWaJo1NpvNTte9qfEhdNVQblw5R/v1HF8bxojPy32UW15D9Zs5csbkaJpmsg9hhqxDQrJwPtvOBV93is2Fd1Ge+0yT98WiKLxjbeUJjSnZhupIY+Xbtw+Q4WIU4it59tXxkPQPqd/FdOqhMO8+INkt9elrx6wJDqG8PTC2D3Scig5JcdinJAMQ/BKcwo8Byyhu7ELusZSjcInVMR2Jyu9aPUSazWbBPI21Ph1CcsG7Xq8tKEZgj6Sp7jTJpdSiJ9XeQsBrCmQ7pD48BU2dn5zNUUypyUG2qjJHMf3oRz/ywkmrFP713VAaUvfbUs5ihn7nLNzk+B3amG4DvBwq0d0Vu6yrfdDQDQfFIYotgEPtg4eLtZvFYoEf/vCHUErh5z//OV69eoVPP/0UZVnadQDnQWN+zLpmm7qhNQLxWK1WeP36tU33bRuDp6a4MrwbLvQuw1JdpCzpY8q00L1YoXBjlFnHxyX+9b/+Lj744Bjn53OUpbL3wypF95fyPgEgCMZ2+bsw3fDdss0SHYBUyvr3wsaevhu3kHW/nZLfKfgJPKX2QO/+nYpaxCWLMncUJ1mZmbDk130WhQOFy9IHP8jSrapMHVVVgcWiwGy2we1tgzdvNths3Ji2TR/fdm6gtet8PvfkoFMZZFpEoT5n+1Sh8ME/+gAnH5+gOq5QzkrMHszs/bBKGbCMH08sgVXDSLgptp7iv8H8Oegq5gfLt3DhZPzgb5tJejh/vxD4TzEnSfBGB8JpF84eOYy2jZDlKzvq15a3sID13Phdslo8W4tVe2es7TfMQrbR3r2y8j5ZzyKWflMYXi5aPJu2zZDVLMkMbe6IrdunYu/tbwKSAVhAuamMRa2qFKrTCusXa1xdXHX6xxTzae66U6kCZWnObG4a2PEHoPGtaa3yVXuPtbKnHJBlLL8D3Pxp++6OKXa/uYUsvdO4zo83dopkUyHc38jOLWal9SyP4/yNXzeMKw8TNuzu4kh3v0zpV3/YqWgIECnduusO+TtkJdsPulK4OG1bIDG9QJ9bSHbnrrWbszYbjb/8y1e4unqOP/7j/zsAheVyOeoksJTiNhQutP5z10CU9vSc1WqFq6urZBp91AfESvlC+5a+OEPLKyd8bH/VxzcGDIXG4rvc38hx/D7vse+KttXBvA37WxozODibOx714Qt9H2jkyjeWhu5PcvGJQ6t3XpZ1XXv62b54h5aXt4GGAPoxOsS62btl7NAC2MfReylAdqoK2+Vk3jfIhRY+Uib6nTp6bFv5chePufzoSUojngd5bCuBXDSQcgVDjIYsHqcGLlOgVWqhGAMfQry2WWQOXSjIDc4u+kNOWYfKKhVnG6ByyLgS6yPkLj82kG1g6KYolG5M1hDJfhFrp7E2l2qnqfhDSNZvaJMt00gtiHMUdzEgZyz1LTzGbLSHLFhyaNu83sWiyAMIRFs+PT1FWZY4OzvDzc2NDcPvC+dtK9Wu+saWvrzz9NbrNV6+fGk3d+v1OtgPd1Geqblwl2ltE3YbGUPjM19fpMb2HJ59Y6bW4WPdOB+lFJ4+PcJ7783xwQfHePx4gapylouhO2L9+DxdIKTAzo/rx+8vC2kR5Pg6YNRZxLqyAZwyWAV+d48Q5n7cIrYoOAhMbdspiJWCPboToOOI4QEaIcU4PwLUPM17WSoABcpSQ+sCVaXRNCYQAbDzubLvsTUCJwuQJdb7Mrwry+7clmqX5Cfvyw6FJ948neqswux0hsXjBRbvLVAdVw6ELRwQiwIIga0dq1QRJvg7BKzyspRhAu88vVhcV1DoWqb2kARnvWYNOAvS0J2q0iKW+g93V6rDL2jJKp9KO2C0CVjfFm27aVw5eHfFRnhyq1mbdcVkbS1jbVnSewHDu9D+/bOFy7M9vrp0zwIFdNUCuxqoFzXUrYJeMbB3wHg+xVzo+o2rbDf2+JayLo7zN2OLagFTG8LGMTK5D0koPo1JND66Pw7O6nbsJH7uKGSX19Ddsc7P5MeN3yQ7jeHOshaMv4tL+SHiYzK9yznLufl8tK3jTjUEyM9DilLNpOuXf19syD00z/TxiOd3ur13bhn4eyz+dEDsatVgtWpQ1+bv5qbGzc0Gy6W5jqNpGpRlifl8PmpfyOei0D6eu/N5TWuNqqrseoxOpgFgwdhu3tN77FhYKYt0k/H61gg8D1Os2UP7ndhY2FcGfXvvfdOY9HN0AvukvrXfVDKG9ptT8M9Z81JaQ3ndBdF4Emsnqf4Q8ufUp0PL0bXH9hQh3rltfeyenI9Vh0TbyBMbw3edx1xd+L70OLtOayhtq5cbE7aPesFYvqHOHQD7wsWOpBg6mOyCUgWbs0AChi26pqQYEBBTLEqgu2kaq3wGEPwCJDaAD5UxJlsf0f2IpJAmfvxeq5ubGy8fRLLd9R2NIpWnObLJsEPrXC52+wbvvvro+5hh3wPkLgflXU8sgANH+Bdusc1Un2wxJaZc9ChlLPZ4GOoH24JxueM6l4eORwVcf5RhYnGHLkb6NhapfhGLw/1kPYbK/9AWEkRjPlQ6xHxMSTnrD1kGVVVBKYXVaoXNZoPj42PM53O89957dh4hJdBqtbLzIk+LLB+JUoqJmBwhomONZrMZXr9+jT/4gz+wfnS8FwcH9zG27roNDeG/rSyhOTvVhvj4QGMHjcd1XaMoCm985MBqSvlHdTmk/ZYl8K/+1Xfwve+d4+Sk8ixinbLePH2lPLWVMG8X1v3m7y6s/RXlJ6lfIe3/JkVtyC30Tn9O+e+7EwhBv2NFrTtAgwMsjAVa0QK97t5Fw7uAtJYFyFLW3R1blgbYNceYNe0cb46WXq0avHixQuYH2K28aUA2tLdKrUlCe4mqqjqnwRD1zflN0+DJ/+kJHn3/EapTYxFbzMyxxEVpjpIli1illH0nANYb3xS8MEopC9op+KCsF4cBp1F+IXfAj0+/W3fzcLy5u3tVUT9r5RoCSbSLS8cWW37auRHgCQ1rRWrdbUeB59+xiEXYQtZba1F8rQ0Iyy1jFUsbCFvKEnELWd2WSeM/5V6oUY1pL3VhgGLlwheqgG60AV5bWaylbN3KRsD/BwqzhzMsP19ic+WOOh2zJp1OuW34bDb8zljyozU/fWii2nW4Zpay7m7w7tH03GqWW8OCvcsnQEAsAb7S37i5p289C6BjNevceNywm0tfusu4cl4Kh8ulcTqa1DzCecbnv/BdsX0g5hiZpqZuOv1HL9M7nx+//HKJzz+/xXq9Rl3XqKo5Tk7mmM1m0Frj+voaWrvrZ8b0vdicGHJXylwLo7XGgwcP7OlTs9kMjx8/xps3b/Dq1atgOiGQMVde6rM0b8bk50cl5/DOlaNvDTpGByj1jWYsKqwOTuoy+F592zH2bd/zcurTX0+dzj73hUSHAtb1yUEfLS6XS+smjynOWYP3hQ/F36aMYjJxnind+depv+2Lhuogc8LuU49zn9rEPvVPnHqPKR5DQxvC0MVKikK8coGssQ04lFbfFy+56aV49MkS4yPl48QB2NQRu7vqXKS4zAlHiztZ57lg+C7zEOPd1w5iAF0qfCofU07KsY8lZDjZr/o+srirgbpvMxZ654Bdn9x9Zc/LLyesHKv4gjjGI5THMW0itUDkvMeSlD82Lvf1deKTqttQWYaAWk67AGSn4nfXC51dlU1uOx0ynoT8JCC/2WxQliVms5kHrPEwfXMvb0t9Hw7kktb+EeahcZeHPdSPCKamsfnctj74+Etgvfw4hYOxsbZHiqjUOpj8nj49wocfHrdH3RZ48uQIJyeVZxGrFLyn4en/dnkAuMKb3um3jMP9fR65ZUb5cXxJuex+E0M+P7p331/+5mF052mO7nQgA7eILQpaf5J8DgBRChaUIDe6Y5b+iI+veHbHitLdse5ZQOsGWivMZgpAgfncrH2Pjkqs1w1Wq65SV1Kq/W8zjpIbtWf+AVhozgyNw0opzM5nmD+e4+jpkT2amKxhrRUsO5q4A8S2QKcHuLLji5VivyHcWzmCICzgLCkLP6wtT9WNI3nZcAKg9QsjUfAUTQcCKbbm4VaA3DK2DeOlr104aXkrrVVlHBkuxoeDod67ieCsYHl6yn9yHqpQ7q7YxsW3lq/UV5W29UVpgbaMrbWsrc/GPQtdGLlmJqPVaQUooL6u7dHGd0G82yhlMmDujKVx1t33Cig0DVoLfxfXjat8LHMfirgwzvLVf/fd3RxC91jTeMnnCf83He1O47gbIygs9SMt5IEN5/LjLGh5GVEckqNNuVMOftl2570pyNVbaNxMvYeBV/fu55nPfWm+hvax5AtPKfkgrNYa67XGmzcrW0fX1zU2mwZ1TdcH0Dzp1lShfVu+zOG9YsxN7s+5+2az8fRjOXLk6qmkPNv474JieqEcPVXOWr0zd08oa4im0nsfil7rHRmaan+X0nnl6GtDbT61x4vpu3bZnsaU1TbyDElvjH57131v6L4qd8wfMo/E5LoL2vUHEkOxsilpXx9/ZIOxh/I1SopylFmchg5wIeuGEM8+xdoYiil/pxwQueJlCv5TUGzQG2oVlrsQnJr6AE3pN7Sf9bV1Xn67zDtfPEswPfTV4yFQrFxC4GvIj6ivDlKbldz64Up9GZ+/p2Tdtv6pHskyBoAFrca0XUk542sf5S6OQ4tcWb5yPLwrettBtRS4uauxgtc/3Qd7e3sLrc0X+EoZa3T6Gt4BXcMWhUqpURbsMaL2GfvYgLt9XQDZbfKXu1ZMxS2KArPZDOfn57i+vsbFxYU3tjdNY++6525kGUDto65r2x7lOpLo+99/hH/2zz7GYlFiNitQVYV3j2D4aGJpneQrp3l4ypeMy4vJn3OyiqpDvjLagaq+AjoGcnZBT3MnLPdzwIXvbmTm7ql0OTjB3WJh6WmmDWMlS4plrY0FkNZg1mauvM0dksB8bvxub2s8f77uKLj9cgyvLXIpJ956ve7cedwHAPOx8uzXzvD+776PcmGsYYuqMOArHU+cuh+2BevoN41/1iKWhZXgawd4tRWETlzvCZYuhJvgY/klgNjc8YlbvnrxCYR0CKsFN62lrPbfrRUs+i1juR//s/7it/1T8NOT74wvgakeMCvBZ9afbXk3XX7W+tUrJLiyb4BCF8YyFjCWsYB5b5d3qlRYvL9AdVvh6udXNsxdz5UGjAXW6007RhT2aGGzt9Ji7KIPRuh+Wdg7ZE14gN8RS/MD+dNd1tzP/XHLVvfhih8G1g3MEtZ3l3MNz2/4mfs79N7nPjQMEAMfrW80jHTr7kXk734LWSJfdvfSN6T35TlvKglb5obyQ7/dvGzmwcvLNf7yLy+gtfJONqPf1Be5ZVk3L3l7hFg4vs6iNKXFqVLKrs1MXsweYbVaoaoqeyrKrmlbUGgMb+4v98fSj8sTk1PuoXhcO7cr5e1zDkVfdB/p67D/u0uSfY/2+6kyD32kEPLbRv+xrd43pDObmu4KSN03vW35eUe7oaw7Y6fuiKGvRPYx4eZ8sdIXd4qBbSh1lAkBv6Hp5Sye9vVVToj4wldOXrlx7wMNAWtjcUILAs4rNtkPSUPyjYH2tJCWi2nyl8DEXdYVlznW3siNx8nZuMh0hvZJ7sbrUZZ7Ls+hi7OQLBxQqOu6cy9zLqU2b33tbgrqWwRyf7Jo43KFwLUx/XgIDeF3CH2KKFfu3DGhb84eOlcA/oc9m80GX3zxBY6OjtA0Dd68eWPDrNfrzmkMobRo/Asdw7XNOoLHCymRYvK8o90Qlflms8H5+Tl+4zd+A59//jlev36NsiyTH5dwMJaOyeY8ZbynT4/wW7/1CN/73rkHxJalO57SKbtI6T0ehHXy+HntKs352B0vqw52wu6MJaCyDWl5pe6MJX8O5BLw6RS/DlAYc3csQPfE0tqFW8O6tMhd5pOs0lw+nIUsPQ061LR3xzaYzQyAu1iUUAo4PW2wXmvc3nY/Ckr18dCcOmTdJf1J4Rwbf+W41jQNFo8WePi9hzj51gnKeWlAWDoqVjFL2NbaNQiM0jNguRoEVCHceF5YvBQIS++huPa3AF85WOsKMVCuAetWz09ZTxeOLAm1S9MCloxXyHLV1pcWbgSMcj8uN1mmauWBqd5RwkR0d2sj3iHcuZ/qvms4q9i2W1hA1cph0Fh3Z6wkSreEtbYFDDjboDHWsVWbXgvAzt+bo17WWL9Zbz0/j6GQApbaqdb0QYkW98Q6INWBsuiMffxDEJ4l8ucALIVxd13zpzyyneTl79LqNvzkc4orbx7OjMtcXj7fhO7SDZWnnFNCYccsk1Jxwnu40Lvu+Et5+2Tj/rJMgoNPRJ5+SsvTzZ8fnuZLwMynm43G8+e3uL6u2/nVv9phtVrZ+SZn79y3P0yBg6F4PE3a/9V17V1R1DSNtY4d8sFuCIzs288M1QlNCcJKOUjeqXSaEvTe1T7m67Qf4m3qEHWhh7xXDenL+qhPXyFPm+wDOlO6yFicHLlC493Q/h/iu2uaqn1MrUecksbqh8eEITrEsWEI7Ur+u2ofg44p3uWXDKkN/tB4IcpRXIyphDHATIpygbPUIN1XlkO+eskdgEM8UsBKKkxKptQkeVcbaKB/UU1h+ig3TKgcd/3RBHeP3WWilEJVVXZzFTq2MUZDPo6YgmIbGGkdGerDOWNGzqIzBZjLtOXHEaE2IOUaO7aF2tN8PreWsKvVqgPGxtol9+d/3D81ZsXKLVQG/O5FySdEMTCLZCJe8uMCeWzWEEX3rmmqRfMu8pG7weDtYsh8NSQMtR8OlG42G3z66af2iOLLy0sA5vj+1WoVTEPKTX8ckAuNI2Mpd60UUvrcdds8JOpT0nFKzQF1XeP09BR/9+/+XQDAX/7lX9o5kAAsyYPaA40vNF9SG5TpffTRMf7Fv/gmFosCs1lpQVh+R6yRiRTe1H8AMMtY5xayonVx/Pjdd/m7dQmWp1Ssm3w6mQgYIHfnRmUmj7LkoCyBr85yy6E9BLR2jxSmoz4N2OHSIJl8ENb9NrL5oG+sS5UlpcMtZM3xxEo10LpFnFBYGU34BnVt6rhpNG5u6iAYS7Lw30P6d2x9Eps7N5tNVGEaAmNnj2Z4+o+eGiB2zixi2V8HcOXv7RG1fEzlxwpbWSisgieflZO7c/7SjYVNWcN2gFdya393CzpS/iEPbT3DbvK3EmE0nNWpFuF0ID6FV8r5a/iAqkIXaC1YWAJowd6BDiirG2YV234AoRrlAFbtjim27Yn6NJctRSLPhTb3yza6QYEWkDXoP/RcGwvZJwtsbjZYX6xN+nuaI1Pzj1tvmqPM/Yw7S1a0Fop8uqCxzcwrQAiU9Z/+fbEOcOmGMfL5f4ADbt18Ef+dfrpG7s81roHJYvPfu2Btt3yT3r2UWsY5Px1w64bhfrnLw5D83bh8TZrHN1eGcH66+aV5mf+ua43b2xp/8zc3WK0MSEFgLI3H6/UaEsRweYlnZoxurW/+pPUZrclIJjo9Z8gaMuYX0xHm7mFTvEJpjtGr8rIZouuLpdW3d5JhDnHfcoigDhCu60Mqv0MtN05j9bmhttvXB2Jxc9LbF8XW/UNp33lIjVtDdLchvjl83mbKHZd3NX4P4XmIfUpSlmUscFhC3wXFFHRDgcE+Rd8Q8HNfDXwIuLFtWveVcvNyl3kemvYYoFG2X7L+yWnX+y6b2GIqtiGQ8WJ5jlHKvw/IzOHRFy6330qQSvIgpeyDBw+w2WwsSKW1RlVV9svhEIX4pTZtOXLnAFF9FJKLrNZmsxmOjo6s3+vXr7Fer4ObZor7No1t+6Ahc0pf+ab6ZQzYB9xHGK9evbIK0c1mYy0Xc+b6XCBvn0TpN03jHYH7jrYjOp6dvxOoSgArjaGbzQaA39aoHgi0n81mKIoCL1++RF3XKMsS7723wO/+7gf46KNjaxFblopZxHYBVaf87lrG+or0FBgbit9tu3lNmebSbjwOsJI7Kf/N04Gt9NuEc4AoIS8mLrlzwNS5+dawvuLYyaNaYNSBsAQKU9jQX6hcKD8GIHHzqlIEshhA1oAlRWvtVmA+N5ZwdW36a12bY4uXS/cRUGwczBlf+pSnPigzbKyYnc3w/m+/j+Onx+Zo4qpwVrEEwhZwQKsAYT3L1xj4qrrvHcvYhLVtyM2WC2/rst0T3/Z3x427Bwue/Q4Va8hfsXf5m4fRgSeFleG4e/tHlrBaMzCX/opueI8vD8N5MytXfverBWYLZnGLNkzDjiluZeaArWGvg/UAtGmV7KnaeMoccUzArNYautAoFyWggKMPj1Df1Ni83sha2Tt1FYgKdW2sZMtSB8BPZymL9ujiotCoazcG0binlDvKmOIQeEvjKoXlcdy8wI8j9q1z/fnHf4bcQs+wmzzOMVRmeW4pcvPSsHghMDQMWobCxxJTQflDsqXyuc1SLxTXzbndMDTf8t9aA7/61Q2urjbtWkhjvXYfqfF7yFMA565I7uNS+4bQMb1D06I5lf/JtPr2FLlp0XPb63a2qZNt9hqpPde+9jC8HEP6oEOmt1EPcQj71xS4M7bMU3HvOr/3mULlmqNTzAUav650HzCP+0RRy9jQQmTIlxxDgYd90BToeEqZyym2qBwyKKTKty/u2EEiJPeUdTUEpH7baOiEkKIpvsxJgRR9PPsAKN52eZtKbQqGftgQi7vtgobLK3lJK98hMueAQn1gNS/XnDyPJblp5PwJ1Dk7O8PNzY13p09s3Mttr0OAq1SblWPnkE0UD0sgycnJiS2Py8tLr0zedvA1p43valGa2gDH+mifPBJwIDfiQ9awgLsPlPe3vj7K05li8x77gKFPFi5TbNw9hI3tfaDQWoyDrQS+8nrhdSOtPAiMbZoGVVWhqiocHR2hLEu8evWqHXuA8/MZ/qf/6SlOTirM5+5+2IKBU6RcN+nSn3tvc2D9KKx8OoW5VKiHleAUNr8MQ/fM8fg64M77Kg/jI1GON0ejwH6bp7SGdUp+zcrNWdkSIOssadHyIT/YuxptLjRYWTurMbJ0LUtl37Wmp0GszL2xxoIIAGYzgybVdYOm0Vgu0/dRpSh3rJDKx9S6tbNXKBSq0wqPv/8Y1WmFYuaDsCGLWPnHwVIJvHrgrLSGVfABWMoPixO0nhWyWB5g8om8cnDWukmLWecRKWzxLsEbpQENH3TUXSBSa/fO/bzf7MjhqCwcVAGzYhWCdtKgsmsYr/ZdF9odKdyCsxRHK2cZqxRLiwBZaSHLu37RArSA40/ALy/L9qnaPocSFtAtmgIaGnqmAQXMH82xqTbYvNnEy2mHJNuXv8b3P0Qhoo9K5DhHgCwdG0xjkolvnlrzo9T93zKOScvF5/MMpUHjMB9H+RxCcks5/HnGyev83Ic2rny65cbnB57HcFl3XALh5borzCvl3127xeN3ZeLzZRiY7ePbN+TnLv0kAMvjuqcPwtLx2k2j8fLlCi9ehK+1Ce2j+/bwY+bA0Lpf8urT76X24DkUAmOJV86+Qu4nYrJLOXPX+WMAiCFxYmuKHDnvYo/N1x6SDknOHJpSTzGGV67uHOi2d+nepxuXcYbofQDfAGloH992jBpbRzkAYy7tow3vMo2UziS3HMbEOVQ61DFp13Sf6m0ry9hdK6FJwWUWdOO+7OpTyuZW1pC7IWKT99Q0djE4Jp13dBiUUoz1Uaq/DlHK7wOEkbQvwIvGGqXUoK9gpSKlr4xC5d23wUqVQV/cMUQL0vV6DQB4+PAhFosFAOCDDz7AP/pH/wifffYZ/uIv/sKm94tf/AJv3rzBfD737ssMHb25TVseQyFAOFSeSil7X1FZlvaPaDabYTabBfm+o3GUWvTG+sqYzWBsHUP8lFKYz+cd/z65Qzz7iB9hPJT4GBM7Ml5uLsmNPjIgy2+6D/cdDSN+BPFqtcLz589xdXUFwM0j9MfHQiKttb17e7PZ4Pj4GIvFAh999BFmM41/8A+O8eTJHKens9YitkBRgB1N3LWGlSAs+QHhY4kpHil7u7+dG+dLlNsFCcTk4bmy35Rj92hMd98qAAJtmBKYFL/uCODu0cWmLsifysL5g4GvBErwLtlNz897qAzIzViyUZ5IEdu0/gZBUso9CfQlENjI4xSYZQnc3GisVo0dF3nfvguiNlcelfjwdz/E4skCs7MZihk7mlhYxVqQlNosf/IPDQSAysNGQdj2PcS/kxZX7rF3CcZyoLUDupJ/+ztcSIkC1OEwSit7X6wNp0ScmJt88jSkO/0p95ssZKPWsDwchIwyD9CeDEorNGiMX2sZS0cray3AWyGrBZ55Oqr/WcAAr3RMMZWrLtq5v72rVikFfAxsLjdYv979nCjXpPx6F7kuIaprY/FaFA2KQqGqaD4w40x32+IqvWn88ZUDtpQOt5Kld4DcYf0AGbcLyrq5xK233biprb97h3ADAMfL5oj1FR4v5N8pjaDfkH10jp8MFNt3x/n6coY+ZHJ8Y/nNnRLicnf58LD+3Kjt89WrNX71q6Vt31dXYWtzWgOv12u7BqX99z73gzF3uc8Yo4MI7XP7ABsZpvtxRjoPY2gqECjFp0+HQfvuHNo1UOLGQx+Y2wZsu0uaUt5d531f+r5dpJ/bPvYxxr2jd/SO7gdlg7Ex6vvCbBtlZSp+jI8M3zfgjfnKS1Iqjkw/ZwEYipeKOzWNWWzkfjmWq2wfm+ZQismzDb9dLCbvAgAdSrv8kmifCzPZX6cYq0IbsqnqdJftgSuCyIILAB48eIDf+I3fwGw2w8uXL60cX3zxhd1QxcDs0OY21Q/HgLY542lIHh5fKYXFYmH/iOhYUaLQcc5DqG/z+rZSai7MHUdzx5sh83zszujQ2iL2zuNNASTnUoxvSJlA7lLuobLtWilySBSqY6XMnWKvXr3Czc2N58f/JHE/AmmLosDDhyc4O1P49V8/w4MH7mhiY2UZA2J9BbY/xnbD9QOyfPyFx6v91fHLI+oTMq5ElMgt/O4Doq79GZn5EccOWOjKa8JSHHpaX1uODgwgi1heXuRPIC4HJ+goUH4sqANZ3VHK5MatZumptUJVFZjNNBaLEut1jc1Goa7jimLZx3c9BimlUJQFTr5xgsXjRdAiFoUpcgI+Q38SZJVuEkztBVQDcTpuEPw48KrE75avefjvNs0Y8hpy1l13Dm5yXtYSVLgROKlVwCqWufP40vI19pRySf4a2isz7zhheufl1brZsiT5FEtbCRkEX28+5n6NiwsF/3jkhslFQHJhfpPVrKoUChQoT0s0mwa4gA8Ib0Gh/ibXB3IuluHIj397ZT7G4ICnG2Nc4wo0MtAHLCEwlcaw7vguw5kxL2wRS2H5mGjKwfFyYyvviy6Oybo/zpp8uzjuN9+3cZlleW4z7oXm8fx4cv7x57E43/hQ7c+HnHefLCkK5akPhN1sGmht5sfr6w1evXLX15g8hE+iAdzJIVOsIVP7xaHzXky/mROvT/eZs24O6Q5T4XN0ENuW8dC9dA4/Tjk6ub68TLW28dYdA9PY9X5oG73BmLhD42zb3lJz5tg9quTTl/6Q8DnpDvX/utOU+5QxdTgkzr4+IBgz/g/FGPrS79OF5aa5DQ2tmzH899k/k2DsLgpzCLgxRo5YAcYKlVsqxCbdsZTDK6Wo20VDuEuFaUr5fp8mpdSC4D7nY8ziicclpXIKiOjjdUgKfdogpiziYzLnLIZTAFFIsSrriftP3Ye4bMfHxyiKAp9//rl1Pz09xcnJCZ4+fYpPPvnExvnrv/5rKKVQVZX9yp/KMWcCJz6xvKaIj99cfgmuyd9KKXtfI+AseU9PT/Hbv/3bOD8/x9OnT228//Af/gOePXtmy+X2Nnz81jZ038bEKWjKvs+BmD7+IaBiCnnquraWkSQL8SRrVLJO3Sa9vjzy8YHSWq1WaJoGt7e39ijmMR8VjN0cvw1Ed2XP53O8efMG//7f/3vrVte1tfSQSkhyI6J2YupkjR/+8BTvvz/Do0cVZrMCs1kBpWAtY5WiY3Hd0ynPadx07wS4umOJeVxYfxNVWiX51qzhag4foWiyKpXQzvrVheEKeG4dqzvv3FK2qxB2d8WavPkghNYOMOV/XFZzhDFYOflWszJ/nAfFc2VZ2GOJjYUszU/sgsz2t9ZFWwZ0TGfRgrUOvOV1WFXA1RXdCRlft/Up0IYohGMbbqXa++WhUR6VKI9KA8b2WcRGjg/OtoyF+x0CWTtHGhcIxumAsoDnJgHaDuBqg7EwuRQLL/Ez6hsEpGjEn0o8KX7AStWGSbkF/jzLWZ4drdDoxk9XmTtibRsLySwsYbVmRxi3oKkNK2Vly3O6CxaAuzNWt+61hlbGOtY0h8JYxsLcHesBtEqhmBVYv1pjc5l3h+y2+8LQvonvq7r6CbO+Xq81jJWrtsfYu/GC+oX8YMR9oMIbDAFrbgzTXnw3VzjLWQnoktw+QAt0rWN9f3rn5cXDOVn5fML9jH+sqHmcXVGsnuV8R3L47nJ/xEJmipzKYy4PF06Ldz5fajbvaSyXNX72sysLyG424cSofORak89DfR8njCW+9pbp5sYfCuLId8o3t7bso1ScUBlue6/trii0p5d6EFnntL4Ixd1mfzYEnJPpyytHvo6Uo5/YVofRV0dT7zljH2EDcZxgCsD2HcXpPukV7pOs29B9y+euPqSYmoJg7NQTn6QxvIZMnrk8iM+u8snTHaPgHfM1w5RfRIUWekNoDLiWG36XHSVXhm3LZ4q4u+IbU9KlFA20gGmapnPcTKxM5cKmT+ZtlYe5NAaQ3oam6l9TLFglD7IEXa/XdiNCoENVVTg9PQXg7pKldENHc8ZkSrWBnDqX4WNgbGijJ/34ppasYmezmbUMrqqqozCQgPhUG5H7tvAZQrH5YWxfADiAo726iVFf/9mGZJsgherx8bH1J9CO+kvoww/Z/kP9QypvZX64IkcphfPzc3v89mazwdXVlddnD2EePnTiCvK6ru3d2XR3LPdPKfLIb7PZYLNZ4+yswKNHJarKWcBKS1indPatWQH32ynO4YWRYwtXiLtwMRA2ruyWRHxkXkPxCWT1lcgOTSIAAXBgAbm7vHAEy1l+8fCct6kPAhA4QODSpd+u7LpggnQ3f5r9Vu3Rww7AcHfOcitZwD+aGK1FrQFyq6pAXWtUlcJsZo4n5UpxXsZDKWfuSq0t5g/nmD+cW4tYFDDgZwumcuDT/sE9FXzrVx628w6hnBVhPB4ijBdfCT84/jwtK6PXIZzcHUBVydfEnisAmpBVaSgMt3blvKN3xUJ7VqpDrGI969c2rZAb8bZl0h6vbNtT68etXnkczo+6sGchq+O8bL0oWECV6kApxkNpC/gSSN8BYNuPB4qqgG7MhwX1ooa6VdAbxjtCY+fC1BolNJ/7a9g2s9CexWxRuLGFj4tuvHQfmTjqgrNxdy4T9TnfOlaCvl0/2DGa/N3HNvRRiisHktvPB2w+aEzmRcmrxC9iFQwzhvw0NHOT9dRNy3f3575YPlI0ZvkqAeIQnxAIu1zWqGuzdlkuG1xfb7DZpE9eIR789xg9UYrG7v+H7hWGykO/x+gW+sqR3mMfHuemk6LcPVUq/VQ6ct7mY11qPzy0XiSvqXWyMp23BaQbqu+cUi82BaCyC130Nvynom11Te/o7aFt+sm+dd77oJTOpY/2nccOGBsTYMoF06EOWvKrPOkXotAiKcU/x60vPfn7Pkz290HGryul+oVU9MuvLkP1ulwuoZTy7g2lsPehHexaxtyNz1BZZJyxX8jKeiIAkstd1zUuLy+htcb5+TkAA07QXap0J+U2cgyl2JgdAqrkuM1BMPrdNA2ur6/tfZAffvghPvroIy+cUsq7d/PruDDepr/0AYmpcSnFLzRPpmTgNHUdEji3Xq+xWCzwgx/8wN4P+otf/AJ/8id/gvl8jtlshs1mk3U3PS8ruWbhH8VQO6cPCi4uLlBVFf75P//n+OCDD/Dee+/hpz/9Kf7Nv/k3mM1mODs7w+3trf3Y4h3FicqbPjw6OjpCWZaYz+dYLpfRMpRjD42P19fXADaoqvdwcmKsYo2lk7GMjQOzXMFE87Tzj98Vy+MAAOfX5evnwf7qKSWpPJegACnzKZzy3Lii3Sluu/EJWCWAlIBPOgaY7kp0XYvACgeSUvoE5Jr7W7kiGhY4pbBclk7OtSsnfnesk7uAUtIyFuzZoGl8i1niW5aqBWYb3Nw4ICakoO0by/g4MmbcU6XCx7//Mc6+fYbZ2cwAWmVhADFmBdu5w5VbrirVfVI/ofhg1q7K8eqAsBGL2xD4GnwHPLcYGGtB1lCRcf9U2XEgEvAxsJBb6Ld0k+5a+IG5a/Fbhmki/iIs3f9q5yLKl4Y9KthaqNoOxeTixuKMr9YOkLXHDMu4vJz4H9VBA3tPrAazjNXs7lhlZKW2w+u/OC6werZCs+yfl8eSbH90lya58TU5fVjl93WFplGoa1NmVQVUlTsene6T5eHpIxR4wCnQbThuXeHmCojffF2tmb8/R/lHIbvxmuYe/zh5Pvf41rFeV+T3KrMy7JYxfwsBRS7NbvjuO8kRAk0dCO7LJOcKP3xXvrj/mPWpnBsCITy3+J2wTQP8/OeXePNmbedkYxXbzXNSosB+7D7sn2Iy9s2hcu2X2jsppewHk0VRYLVaeR+59wHH2+7LJD9OfHzaRrE9JG4MkJ4azJf8Q4YF90GP9TZSn75dAvjbgqWpDxAlST2XDLsrff19GC/f0WFTDt70daN963I9MPa+LYaGfsW2zYJgF1/VjKXQIB9TaA/lu63cXBkeWpi/rYuYIZN2LP62/W7KepdtSvpReqmPCQgQkPLlAimHvmjZll+sjHM3Oam4Q0GsFJGlMycCKOu6tvck0vG+9Jvqftt6HNq3YgppCfTJMAReEdV1jYuLC2vt+/DhQwDmWNLj42O7UeNpvI00dX+MgaWy78fmoyFALJc7FK9vTTBFndKmkGQ7OjrCyckJTk9PrZUs3zgO6cOhD8jkZpT++Gbx+PgYDx48wEcffYRXr151eI/J/1Tt5L72JaqL2EcZqTZfFAU+/PAI779/jNPTyirRSZnNny0Hj5ev8HbPOBCLThzz25fPV3r76Ur/cJlIPl3LVuJLyn5y41ZTlGfXLmV8P4zkyfm68jOgA4G2yir9lfckoILzdWHdu7SGdRa3/DhPB0i4+xa5ZawrV2oDBL42jWotZBW0NsdXmzi1VZCbMvH77pB90pC+p7XG8fvHmD+cY/HeAtVJZY8l9oBYZZ6hv5BFrB0LKYxS1prS5suWcfd3EoDlfoDvLtPg/qzZdKxhyQ2+Wy7ZuISBAZ6lqDfeE0jD72RteWitrSzSmpX4BK1fyZJVuoNZsgrZyI3f92rzouDJ4uWJ5BthIUthbXrM35Y3S9OGJYtZahutJawutG1/ZMWttXbHa7dWsuW8RLkogQZo1uwI5i0p1D9D/ZGuMuDXHXB/MzZBxDMfpBB4ZtJz6Zq5StkPS9xYR7xZhdtx0oGMLk0H2CoFb+xx/o4PjaU0flJc+m3i+OOrG39h3Sm/NE/w/Mn8shKXDs7Hy5sJy9Nwssm5zAeGu2FCMqlO+LC8YcDUhM1vhH3LMe7vt0Xn1jTAalXj5qZu25axhjXHEQ/TwwGuDfL3kPs2lNJp8DRjJNdoqfipfFI4Wn8rpbz9MefF3cqyRFVVmM/ntv/3faiZA07m5juXpuTXt1aJlXnfPq6PUmUWGp/fJj3mFPu2VB2nynZq3UJsjz9Gxx/bC4f2cUNlyqW3qZ3tglJl+67stqeY/m3fZXsXdblvHVTyzlhO2052h0o5E/CQcHdFcoK4y8Y7dLJ6R/stpyEAx5Bwki8Ht7gffVW5jRz3meTXe2PicfKUi4jfcTu2bFerVecI1cvLS/zpn/5pZ3N0fX0Nrc2Rm1S/+7pjRbYpvoHOAbZJ8UVhb29v8dlnn9k8Pnr0CFobS+D3338fX331lb0vVinzFXNOWu9oe8BtjMLgEOpFKXNiwMnJCZ48eYIvvvhiUFzZ14GuUoK3YaKiKKyFLmCs3U9OTvDJJ5/g1atXXj+563K6b3MAV6St12tsNhurQOPjoAzPqSgK/C//ywf4+3//CRaLEmWpmFVT2iLWuAGAau8lde4xMLYbl6/fwu9O/mApsN+8PbYu2oVzim+jVHa/ncLdAbPK40lhTJlyAMCF42HI+pVATfprGorDLWRJPuNHRwvzI4VNXows5Gf6jLvPleRwlrMUTz65wpvcjCVsVaG1fKVycB9SGCtfhaMjjbKssVrVUApYrabfj/SNm0/+/hO893feM/fEluaIYqWUtYT1LGNV+5s9bVj+VCp8VyzgWcbGwnUscEV6HLALgbLE37oL8JX7WTcJ0I4qbPOwRwvzNLQDF5PWsaFny8fOudp3j75rOEvVtp17oHPrp4tWXrKiheCB7m8L8MK5a62hGuV4M342be2XjyeTTLMJuDEia1mSXWmFQhV++QJQpULzsIE6Ulg/X5sji3dEtFbmV3wsFgucnp5itVq1R9lvvDs3wx+gFahrGueA+bxpjzsnS/uQxar7+IUDtZ2GZELAb/Dxd/8jG/5RCzpP89uN7c5PKsR5+PTvrlKdh3FjMfn5oKwbm7tzmT9/UX75/CZl8QFs7tcF1CVxuXOH+VS4EPBKv3nbahqgrhs8e3aLzz67YX55MoSI6wBCe+FdfZAneYbeaR9IcqTCc4rNk1VV2RNTiG5ubmxfj/EsyxLHx8f2o83NZoP1em395TqfyjPnZJ0UyXrYlt9QCpUjtQf5cf+2650cvUBOuHeUpm0/ELgrCu23U2Hf0eHQoeh83jba1dw8VIYhdNfy5lAUjA19gZRSAuYCK2M6R2xAHMIrFj+Wt6kp9wvBqShVV7GwY+tmiAx9cr0bQO+GpEJ/V+0lh38upT6YCKVx6AMy35RyZYuk0BehoTqZKr91XdsjiIn/arXCX//1X+Phw4d4+vRpZ6M0lsbKvE1bJMtXAPY+WNr0Xl9fW5levHiBzz77rD1ONJz+VG07Nk7uon6nlImHTYWPfVQQCp8r25BxSa5vctY4U7RNrbVVqhJASu2vT7kg8yhlrusaRVHg+PgYRVFgNpvh5uYG19fXqOsadV3beG/evMGbN28AAEdHR3j69CmWyyWWy+XWH08c+jg7FVE7pg9V6rrGe++9h2984xv48ssv8eLFC0+pLts/vX/722f41rdO8eGHx/ZoYqU4kMrL1JVtDFg1MnG3rlUsKbs5b6m8Diu5u35dkn3IV6j7fs4KygGxXaU9AQKOlwQIdCCcf0oLV5JLvk757yxiAQdOkJtfdmFLWQeEGzDE1AcBuxzgdccgFxZkdNa1RSHvjlXtsdUKWjsL2fm8hFIN6rppFedxq+ycfUjOWHr8wTGOPzrG0dMjc09soYx1ofJBWAl4crfUX1uqXlwFZyHrhVUuXck/Bsp2ANlO22cy8/eYG3Mn2XNJ3hsbuzOW85RuyTtjZX8MWcfSM2IlS2kF74xl+ecWq1ZOW5TKhlHKt261eCq3+HPdEElrWsX4FIButK1XXbQAL33L0ALLgAnntRPqg41CoQugBHRp4pdzM0fXixqNaqDX0+xRU+s6AkKKosDR0ZE9qjRkIRfeC1H/0ahr9zEKjVVlCVQVnzP4RyVpK1n+m7qBG2sRCEtjuwvjxnp5HL1zc+/hNBxPAFAirPP35fT5+WXuxzd+VEfduc+fTzhIGbaYlfGdnw74d+fRMRTfR3bDaG3mj1evVu19sMavrjUuLze2DcXaa58Msf0qH89T+8ht1papvRmXJ5ZGbM8Q4k1hi6LAfD63H2ASbTab6DUWtHanK3/IOpaOKw6t/XcJSvJ8Ux1NpaMbUp8pfc8Yuu96xkPTb6XkyR0vZFvL3ZvH5JFtNWc/H3PPBe5TdNd1dKg0pMx3VYax9jokXozGto1Y/u/72CXp0PJzF/002zI2RlMtBu6ado329/HepvymHLD23dFjoNldtqdD+PJjDOWWW1+4fed/ivoOLdTvUx2SUp8otiHNWcBOTXT08NHRkeW/XC7xP/7H/8D3vvc9PH36NBmfb+CmkK8PhOfPPuJ32yql7AZ4vV6jaRpcXl7asJ999hm01ri4uEjyvOvxa58UAhBTZX+fymWKepQbSq01bm5ucHJyYo8ho/uYCSzN4Rc64my9XqOqKiwWCxwdHeH8/BzPnj3DxcUF6rq2VppN0+D58+d48OABAHNk8be//W188cUX+PTTTz2A+B3FicYzKqvb21t8/PHH+P3f/338x//4H/HFF1/g+PgYVVVhtVp5dctPjfj+9x/h93//G5jPjUWss27lSkqwp/8biFvPEjBrwpgn5wHA42MxKKYQ7mBOo4dwGVFH/LRwS72Hf/t3D1JefaBVgsOuDJx/UajWElUCtg4o9cOZsBxk1doBr/7TKcBJ0U91b+6xVdayzRw5WrS8DKI0m5m7I4+OGpSlwmbTYLMBcr6lCO3bhiinHnzyAB/+7oco5gWKqjB3xLZHvaKABcM8oIvc+u6ILeC/UzyEeYTSUohYyEK8Kz+PIbcYICuByHDhxesAAKyVaCCOVUJKEFbBWYbmgLKqHasYmGrTkV1Qmz8PoFXKWalGcBIN7e50VQZU7Vi58vJQfvoeaNq06dOxwY2TQwK4FA5gICw/hlgrZ9XbutvslsqVJStTVbZPrVDMzNqwXJRQhcLmZAMUQL2p5fAxmPiaQCqc6eMdrbU9xYLm5dvb2+gVIOE+bMYmvqUwfOlDEX+cpA9IzNPEp7mOxj/imzNWK+XGt3AYCueDtBLMNfL54KoMz9Ny7mZM5iCpD6L6oKAETjm4LPPi4kO4afhVo4JhZd58/2nWyjI9Dv6SHwGsWgOrVYNf/vIGy6W7gsXJOHry93jJ+xWJN+2Dqe1PmTbxyFlj91Fszxnqj0dHRzg+PsajR4+s+83NDa6uroK8y7LE6empjV9VFY6OjjCbzVCWZfC0FSn3GL1sjCfP113rVO7T/vHrTlPsnWlfPJZon5X60HkX+kfO+x2lKVVGsY9c7htNjccM/TDhUOg+6OXvSr6twNh9A7FDvlwY85VDqtHvOq+5DcAqHRhNvWgdIouUYwy/UF3lfiUylN7Gr5dyy2XXi2o5ccg7OGNySuBxqk3XmH6y67rn6RdFYdPjoCAQP9pXytc3Lo3JT6rOJL/nz5/jj//4j+379fU1FouFtablPHZRtnzTzutcfnEtw3N5QnWSkpVbJkwxTg0pn0MEekNlHvJLbYgobKw9c3c5J4fCx9ykX6o8c7+ETcnMgVOyoPzss89wcXGB29tbfPHFF9lrC+Ilv/Tl5VAUhT3W8MmTJ7i5ubHprtdrO848f/4ci8UCP/vZz/DVV1/1tvl3FKf5fG4t6c/Pz/Hrv/7rdkyczWaeP6ePPz7BD37wHn79189RVQU7mtj1BaUQ+JMWsRyAjYGyrp06K0zOA8zNB2D9ZtEFZ/NJtu+Qgp67hxX9/C5Z/15ZAw4YBb357cYKUuBzINZ/8jhKuTtYqTw5OEEKdwOsmvAEdgOwwKwDbgmAdeMNHWNMwK1Jy9Ufgbxao7WGNXHKsoDWDarKIFezFjAyzwbrCaz2QmOZUgqLpwuc//o5Tr91imJmQFhrFcutY5UCAW4eoJr6k0cQMz62HgMArgVgRTqh35xXCKDt/Ib77QGwXv+IdIicfkJNkJd9zOpU+1au0uq1zzrWs2pVMFawESvZkJweQNoe7auVNkf88jh0fLHSXnl5gC3afBNQ2rR3uzZsPiWZlP8k61dVKAfcKuWOVAYDYluQSWllwNo2jCqUTdO2u/ZZ6AINGmchqwE9M4yr4wpN0aC+2h6MtUUb2YfQ3K61tidb8KNNc9YLqTm9rjWWSxdmPjfW9vJEBncCgJWuHWO195vGxjZ1G9a9S1mkmx9HUZtXEsw16RG46tymBWXNu/R3cobl6oKfNA9IcNb3j4O0Y4nLyvm7p8abN2u8fu2vTZpGt3fBcl75FqPklrOuDYUL7dGmpKl0S6F9J+df13UnLd6vY3nTWntWs1dXV1BKeVbxqX35kD1ibN+Us7c6FIA2RUNku8t89PWRbXkMobvSMcg+QR/GDzmauk8PENOfcQp96JwKPzUdmn5nl5QaA0Mk66ZvLJ+iX21LY9PJHV+nADjvAsPbZ7p9cowNM6X8HhjLKzUHjc/1yw2Xq/zMoSGg2xC++1gc5i5eUzRlWeW2hZQCfaxsfWkeCh2ybFNT7gSXA75wfmP6Yyhdeu/jd9ebCQnG8uNKSX65kJSbLqVU59iy2HgyRT5lWb5+/RqvX7+278fHx5jP57i9vU1uGLehVL32jVWpjYbW2quTGNGRpJJ3H92Hr8KGkOzrIYUE9x/Dm47pk+7yKceaVDvgSpQcuWTYofMvj9c0DZ49e4Y3b97g8vLSA0tzZQn9JlLKWHcfHx/j4cOHeP78ucefwNhXr15hNpvhl7/8pT2uOJXevtvt0PXnvomXCx1tDgBnZ2f41re+hQcPHtjj5ubzeVD2Dz44wj/5Jx9ai1h3P6xUhvtPIhr/6TjbeBz3m5TQFN88EfCDl46kcVXhFNxKyTUhKce7RxO7OO7d9+sCstKdlOSOh3u6+dYBtr48XcswXl7+ccX+McMGqDWS8WOLeRgOZhBQzo8npifVMx1TbJ6FB8aaZUDXfDG0Bo+tMWR4PtYevXeEJ3/vCYpFez9sqdz9sLQ+UaZ4+btCBBRlT0qjw4fihvwjVrQWoEUiTZa3kBwy/yE/7u5eVdA9Rp1jikVEbUxV/flWgK0UL/U7xDcExEbBW9ZXQkcMS1ksAIuu7JYfO3qYyoyOKrYysPRsGQkZbJxC2eOHOzLy+28ZmEvHFlsL2xbILcoCjW6gtIKqFAoUqI4q1KhtOtsQ72uxfkf9c7PZeB845lJqTUFHmtN4ada+aMcbSt/dle2PlwCNofTbgX9uXjHpu/jGzQGhoeOI3ZgLL5zJjx+WQE4K79KlOF138zsPlKV64MXowrg8tT4dPi6cjK+j/tkDh+PQddGhdzp2mP40Li7W+Pzzazd+bkFDdIBUvnxtT+vyFHiyb4qlz/MgQVnel1PHiUse5EYfThItl0sA7rSmFBCaU16x/XNoPxfT3e1DiX7Xdf+2UWieCa1zUvraWHvL0cX0tVXed2gfKz9MAJD8ED6VPj8BLRVO+k3ZDu8r0CrHhqko1A6ljiPVxmL8tpUnl3LmzV3rMrbl9bbpJVN0CHqsGHUsYw+xYmIy5SpTx9KQcgiFvauBdx9fg2w7MPYBtLH6fkd3S7scH6bchIUUjYdCfAFC+eRgLABvAco3rsfHxx3FJN0JSW580UlA7djNNo/DN4hKKZydnXXKt2ma6F04u6Ixi6EcnpLvy5cvcXV1ZZViHCjs+/AgR84cOqT23De+y48LuMKCKFYmvDxDQK/sA1KRMwRETI0TMRlSYeU730zQ5nKz2XgfLMgwMr98bKD2FxrjpOK2LEscHx9jtVqhrmt7JPLr169xc3ODf/tv/y3W6zVevnyJ1WqFqjJLQnmqwV3QISnlQkR1VZalHX/X6zUuLy/xO7/zO3j//ffxh3/4h/jiiy+C8cvS3Pc5m4WsYv0nwJ+woK20og0dU2yeIX6kGO6CsH77A/s9Zg5xymD3zvnwfqM8t+6dsoqF90EC/7cPznbjuXBkrUpheBbJIjZmGUtl7hTzvLxh72F01rPUX7ki1pUH6aYJAGka9yxLE46OLK4qDYAsZIHFomznfGPZ1N4u0EtybA6NobSuKKoCxaIw98QSEEtPGpfJSlaZIiY3C5DS8cHyGGF5XLFs+zyMtIQV7x0wmJ4SnAWTk4GCtp0H+oPDWl14v0BDTu34HgBOLG8JoKgWhKV0tAA7W37cP/TUuue4YrDwlDaBoI2zRiUg04bj4KbWzqq1Ef4NnKUqO67YWrTyMmN3u1La3CLW49cea+xZySpn6WqBVu3iwWE/Lh8EoNkPIYxlLDQMKIsCutHQ0CjmBaCA+eM56tsam9eZnSxBUhFJH00B5sjS9XqN169fY7PZ2A8BQ8rLHB1ESvm+Wun2iHPHryyBo6OCzTV8LtHeb4ojgVM+7joAlssSH/+7nWmcO59z3HzkZAnHpbBxYDYsg8chFjhBw9f4vky+FS4Br00D3N7W+NWvlmgaE2a53LRhuuvOcDr+OjsEqKQAu9DxxPeF5DobyOtzq9UKSinvWOJNz+TMT8a6vLz09p05e8DYniZn/RYCloly039Hh0dT6R/4epHcJP8YODtWBlp/8n6xC5BLtvlcYPpQdY33hVIYzzvaP4XG/j4d2aHSfWlDwWOKYx1jm8qQg/fQAoqlkVLmDqEYnyFy5pRZzgQy1cC+a2Vmn/I5J17fF1UpXqk2sU353ZfOSyQXRVOT7K9j0skB22Pht+2b92GhRItNIrLQlGDQbDbzFZToLoJDE+kUxL/yLcvSfrnIablcZn+5yGnsQl1uDPp4S6VDrmIBMHm7urpCVVUdpQIPO7bsQxsc6X8o1AfEphbWOf05NbYPnV+GtsOhNGRdZJRiRqG6XC5RVZW1nDRASvdLehobKB+kEAn1ewD2flhS+FRVZb+qpzC3t7dYLpd4/vy5jU8fhAwBoGP5HLMu65vH+trE0D4zpp+GyoS3yc1mg5ubG3z44Yd48uQJfvKTn3TA2LJUmM9LLBbOItbwAHu6P5OGe/phwmBrOhznqYQbVzDEy2pI0RnFu0lLKsHJXSqg/aOIKX2u1HdKdgrjy+bCO17ddHhcvwx0q7wnay5XjuRGZWfaBL1rr5wJkDDuFFfZd1nXfnzlWcaSVa0B7bW1kuWWslWlMJtRWxw/X3TWa4VCuSi9o4n5/bDeH8URQGcfOCotN+mdx/GUxMyNA7+dNPgT3bQ7fnD58No9j+ML2pE9hsF0wgG2SWphLW7vX20tY206Gp71KNDWlzJxLIirukpTpVoglsIxGawfyUhgLgtvLWXbtD2rXeXk4Pmy6YesaZVz52l6eRf8iIdmAKDNv2IWsUrwYH9KKQvc0vHF0jLWuun2WQJFZY4tLk9KQAGbi030Ht1tic/ntK4OWcaOWWeH2oa5V5a3Qd2OJ9p+JEJjk1v+0pgqKrDz27ybdGms9a1a3VjKAU8fZHVjMY3P3I14dq1dze/U8cVOHhrXTblw//C+tDv3oCM/ryJ5tPF25OZIoqahI/adJSxAx1LXePVq1VpE5+unQvulITRWj7YNgBOiXD1EKlzfPk/6bzYbFEWB5XLp9WlJnB9fq69Wq1Hl0Bc+tndO5S+0R9k1Dcl7rp556nZ1qJSjNx+qt0jpKULu2+pF+Nosh8e29co/sOdPSbkfr0wl1z4pJWuOnkbS0LLKpV3PRVPJINvBIenyQvLIvpbCBGPzR27a+6B9970x9bvVnbFDyFfyhAsm1UiHgrExii02dz05xyaw1ASTq+QsiiK4qN7FXZwp2aaiQ5m0tv2AYGxah0axQfmQJhQgrignv0Oj9Xpt+39ZltYqDQCOjo4s2Nk0Da6urqC1scLadmPMKbfdhSZcOj6Jy9InTx9Qt03cIWVBvOSXvrRxJp7SGpjqqSxLbDabvbWrqdLZdpwJbVCmGLeo7ci5LLQoDG30pugLuyaSj9oX/7AiRh2QIBGOxo8XL17g6urKHoO8Xq9t2dZ1bX8XRYGzszOr7JVlmBr3c8cMWlsNrZuyLFGWpS2r5XJpLYLGrB85OYXvNAouriS/vr7G559/jpOTE8zncw8UJ/rGN07wr/7Vd/DeewtxV6wEZcNAqzuW2N3vx59A10KWZCd+pHDmfubZzSfPcnd+tb865RICTFVQYS4V+JInV8jHfof48DAQ8dxT3iNL70WhrWWqvHOW8sHLnCxnqY4MiKpBYKqZy6meYBXlBVkWQnn1x5/GMtbcFWuU+UULnJCFLDCfl1AK2GyKVs4Gmw1Aet/QHiG2wZY0f2+Oj3//Y8wezlBUhX88MbdW5VavYO1YHGUc/GOWsiRXURSWn+UTCkthoDp3gHJZOPAaAmjtb/KX4Cu5UVMSNGYutKCiBGlUW0ckg3bheVhrYaqZn2L1q/0wVnYdTksrY3VqeZlm5vjIjEurWWEZq3VrxUrpyPySHPRsLVitVa5y/IgXt6rVhXYgNZzMumjTaS1ovTIngFlrC7ja44pLNvaRxXpVQCsNXRtgt6xbK/RHDZrb9g7ZgRTqZ/IoRa21/bjKysTm1RTvIWCMnKfNGGaOPb9q88b9Tk5KzOeFsJb1/0xY90cfxdC47/qeZv4ku5WScsQlb+PL8cyNy26u4TxsyDY8L2cevhvff/f5+DKExwBeVVLuXApVt1v/ujDPni3x/PltJ56pYyejbCM5a6fc+WIqGjKe7lKHwteMnPhHuSGrUdonL5dLXFxceO7AuPwN2a9LeWIn6oTi00fHPI+3t7dBIHlXNHStnqNn3hVIe8g6vBiNlTm3/cq9esoynuYc+k17Kn4q1FD5Yn65eQ7tXaduH4esU+2j0DiS0sNOSfelv4XKJ0T7yEssjft8YkUf3Yc2AiTA2L6JOpd23fCGLGpSQG9uY0zlZ9sySymd+3jschG6D4rldeyidSj1AUS77tBT8M9RRst0cgH/vjgy3pTtJnexMmQBkLOxyZ3sx2wYqH/TApQrJeV4RAAKxeUKRLlJzAUkuCw5FNq4y4V2Tl/NaVuxMDn1mxrjc9zkByzcUpA2prz+ph4fdz3ebjPOpIDYnDrPBcqGhpFy9bWffcxpOWlMvQCm/JHi9s2bN949czz/HOyg8SZkcctpzNqHeA35mp5kIEA2VwHVJ5uUMzQXDlHS8PImJdf19TW++OILnJ2d4ejoCMvl0n60UZYK5+dzvP/+Eb75zdP2WNmQItsBqG1KLE03B4TikVzmp79+6Ybz8xF7l2XV5R0sMi9MW4ptWRqlPCm4/Xd5lCWVvwsLZpkqAV8KS26hNDpSqm48nqbLv2bvPH98bpayO4ABkGCErHPNfnetbJVyIDxZ1hIw7/4Ke9x1WSp2L2T/2iA4rhcKs7MZ5o/mOPrgCOVRaUArdjy2tTjsFKz74+sb/mfTonKFs5Al904cwdP+hpBFIcjLS5PCiLYfsuCMgbDRsSlnyNI+X3uMMQNQgLZuKJiwalXUDxSClrHEh/OgdK21K60jpRUsd28jyztlyc2zkGXWs9ySl2S0cUg2BiJTfEo3KjMDdfmRzp4FLtq0RVv02kkB74hj1bR5oCOPtekHWmvzEUJ7n6yuzLHFup52PcHrnP74HJ7Tj3mY1JyXQ3Ut1/fG6t5Y59O4xMen7j2z7je8dxrvu2HTbm6e4OO2+8jH5Jv8eR+gsBQm5ef4mncV9CeSPH0/l4exy09/v2X+1mu6Q9SFubmpcX1dd+KETvPhYXLbxtA2FNunDdXp9IUforfI2bPLftOnj4utL2ldzdfAfC8Z68+pPf22+7jYWla2F3l9Us74MyXl7C/H8hzqtw3f+0BT1KnsY2PTlP1lKA1po6l6kzqeXYBW/t4qPhbssn0N5T1ETzck7n2iqcfgqctlSP2EZJH+sXVNbtgxskqZhuhnhvJPpbsPih5THKOpGsshdcgp5Ih1rlBa2wxiuXe5kTJzXw2Jp5sTpm/SHgMSvu2UuyHZps6HbGgOmbh1I6fQpiNGQzenueHlhm02m41a5M1mM8znc2s1S7z5GBECnceOvSFAeGraZlIO5TO1gAjxub29hVIKt7e3qKoKT5486SyW6b5Nis8tmsfSvufDbdKLKTFyFnQpnrnphtKQCiWp0ExteHY9pknZ6L3P0pNT3105Mp3NZoM3b94E+WttrG2kxc22C2hezsSLg7yhOLF0qV/NZjNUVeX1t6FEZVCWJZqmid7XNaZ9Nk2Di4sLGLC1xF/91V/hZz/7mbXqpbt667rGo0dz/Ot//V08fnyExaJEVamIVWz4zwfdjEx9FrH0dOWAzrv5DQDxd9/P70spMlXLldl0dKIEZH3FOTzTPT6XhfzCv3l7kZatISU/lQ0d8Wji+vEMOwfKGqtWfmcs1Qs8N7KMdWGNP037BNaaetSQlrFlqWwc87tAWRpGVWXeZzPzvliUKAqjyKrrYQot2cdmpzN88198E4v3FiiPSs8q1gNl6c7WAhbEVEqhUEXSKpaDY55bwBKWntYfEQvZED96MtmoyXi/I8CseTg/7m79hFsWKVfuHT4Wl+2xamUUtFxt+5XyBTZuBIBqdPlr+HfEKhirVfJvhBv8OGTBat+1ebd9nAFI1Hbsva6cp2rzRYBo4wOu3v2x3DK2TVtaHFswWTPrWChjEdvA3R2L9u5YmLwUytwdS08omGcNbLD93bFAfDzlRyfm6Br61gg5FFq/0d9y2WC5JCs7QKkCZQmcnhbs5AaKo1k4Pv+4J4WlMd7NB6EPd9AJZ8Z7gH9ww8NTftxvWdY+0OnmGTB+WrzL8uLzYrosc8mfP52b1hqrVYNf/OKaAbIuHF+jy7VwXdceGLgr2kZhv234FPE9w5A9uyzLGF8iuU4ifRyBTLnpEyDKP8rOkVfKFBs7hlBfGQyhQ9IB31faRRmOqdfY/JOzRySifSLfHwM+AHpX+seQ3n2fY9ih9ZMp87LNvj4njNS3HgLtWo6YXkm6x+SIzW/bYjW7wiYOpV6JQrrKPtrbMcUhkp1w7AZiSEWkGk7fBqePx5CGmlqkjmmwMdnHNNJtJ7x+Bd32X1KE0jskoHCKOhzqHwsXWpiPSesuy3fMGMDbRWqcOYSBvGkarFYr+07WVuRHG2cOyhAIGANciLZZRPaVVQ6vqdvN1JvJEFhGm+bNZoPFYoGzszP795Of/ARfffWV5RlbpAyVa58U69+yn4QWbjF3Ho+HG9I2Q2F4uFA/zu3PQxflMr+heWaIMifHTaYbCpva0KYoZ0zPHfdDG6hYGXElUO7GK6dPpfjE0kmtvYaQbIeU3maz8Y6f9+8BN5axZ2eVBV+7fO0v+5sU1VyhTf7uHdafx+V8w2F53wq9x8K5tHy5qUxcuuFqdKCoU7QTX24lqy0f4qsUKb67FrIyvuTPy1cquX1ZCYD14/E8cwW+X67SMtbNLzw/vD4onKtr/ps/nbUs3Sdr2pkOWMmivUfWWMeG6qFXiaaA2dkM1UnVAT5tX2J1z8FO66esZ+fPs2YltwB/zksp5cWT4WQc227Rlaczr4i23nnnbjkAbMxP1EVwfUrsyZK0tf6k8FrrDn/PUrV9t2Mvd+NWrczf+ok7YokPFCyoymWQ99sqpfx7bQkc5WXPwW3V9ZdhCTT17oplsspyJ/7W2pi1Ca1YnltZ7bO1hiU3KPh3x7ZPVRoLWTVTKBYF9EZPZiVLcwrvj31z55B1Sd/cGlrj+XO6H47GuPW6sWMTjVsUfzajj4fCH9U4sJTL7vzD7y6cmxf4WM7nBTnWh3nJuG7uUYEwvgxxv3xyZQtsNg1Wq8Yrb/JbrYzfZtN02oqzTDZUFAUWiwUA88Epv1ohdw0+lA5hXy0p1EfG5r9PCR3bK6fSy+m3ufuQ2P4oxlcSbx9jdEh9dIjt466obz8X20Pn6PF2qbdL8e5r7zFeUn8Q2wePkSknTJ9Fbkwn0hf2HYUpt4yG6GyIYnqKKWhIvxqjo4qFHSJ/LGyO/i6HX6h8h8S/77TNXC7pTsHYQ6GU4m4Ij5BbyH3MGfj7pn0DVjmLihiNafjvKEz3tSxDQNKuFfJT0s3NDW5vb4N+tJEuisK7p7UsS3vvJB9Tcib0sXRo7UMuhuXiPbSQ4feShkAu4rFer/H8+XN8/PHH+O53v4sf/OAH+MEPfoB/+2//Lf7gD/4AgFm4v3jxwlo5huiQPhJJ0RSLVqlEBHwr9V7lfyBMX3q54fo2TjFKKTpi/rGwUp5cYHrokU18TBgKWod4pcDk0HhK79wqNgXIhhb0m83GWpjG0gnJ01e/8l7iKUne6c1lUwqYzQrMZqVnEessYwGjNJbWrHQcLb8r1vmR8tuF50+uFEGHN7nLd6lI4Xydexz8NXkGCAylpxsfjCK+aaTymkBa3md9pTlX2vsKfKr/EJCqGG/fT8ruvzurWJdW2CKWwvrl7PJA9WT6s6sfujO2aUKWsbp9mnjm6GGTLoGx3FJW6wazWQGtDQA7nzcoS+DmRmO9zlMu8/FbQ6OoChSz1iJW3BUbAl5duwxYtso/dIFUeQct/ZZhokBsa53L3Tnw2gFhRfsPAYVt7UrcxoWV1De0kj+rEn5sr+fOjuCl5tuxloXPh4OyNhzvSlwODb+LaaQtYuVfj4WstXZtfysoNKpxvCkOt4otmJuCA2qV42HB4kJbNy631qzc2FHEHFztyNfGU1DuvlzA3R3bFMa6t72nWc81qrMKKIDN6w02F+MtZPsUzynF+hCle+7aRa6HedzQXqtpNN684TIBNDcopfDgQYnFgo5mdacCuHmKz0X+vBQ71l6mQ+MsH/fNb2kx68fp+jl/f26SYWR+Aa3jZeqTm4dcWdLTyPTy5QpffLFk/lKn5M/TMbBxNpvh137t16C1xsuXL3F1dYWXL1+iLEtUVXVv9ihT09A9Dt/fyL4R401had0pw8fW9qE+NkbmMUT7X8CdbrPNsbHbyjJ1nu9Cj9G3jwxR7MS0IeP9kLBT0VgdW0g/wNvdmHxIWVL8ZP/8uo6L72g4vWsr72gbGgzGppRyY2iqBnzfOkIIRJD+tAjiFFrMjVlQDiW5eJlqITOEzyGBQLugIQr+u6C+Rd3YL2KGLhZjYGPfVzp9fW4fxBWRRJvNBsfHx3j//fetGwewNpuNBfz44nyz2djjO2MbvX1Squz3nXaOXwwAlHJvNhssl0sopXB2dobHjx/jgw8+AACs12u8evXKAkchXndZLrugvn4jlRD0W5Lsm3wcmLJvhoDPkAwhirWREI/Q/Jiaq1NypeQcqkiIyTJ0HUHpcot8OoI3duQdV1zF0g7FI6t0fjyjBAi5uwcgifqg99DduVNRKA/kVpYK3/veOT744Lg9QrarfKbwoXdSZnffUwpsy4X58fYp40gAmNw4CKsE6OvXhytXwCmaORjrjiim3+44X4rjI0ZGkR62kKU0XT06EDYU1/E2T3/N4ADi0DsBseTmlyMp7Z2M9BcGEDhoy+tTW15dy1h31CeBsFR2BNRKcL8olD3eOEXB9VShcPZrZzh6fIRyUXrAqAXFqF0Efls3akNw6x4LjkJ1w4kwMi2ZHgdaQ3w9sA++nBxcTQGxHRCW3Nj7aPLYKHQsSBkIS1anULDWqdSkbTtnsnVAWWa9qqB8K1Zm/eq9CytZazHKwnKw1B573MoOwLeQpfSV8uJY0JiXSVt3Nm3lgFKPB8tDpzyZbLzuednJ9JRyFrIW0FXKHsvNLWPJOraoChTzAmquoDcaGIhb5M7nfK4L6QxC76k9UGgN1kcpQNZ3c2MgYCw5m4Y+NOHzjeM1mxkLWj6nOEtaCufGzk5jA421lL4DPPn8ZH76JxgEcsr8ef5THx/5soTo9rbBckl3ujr+FJ/XzfV17bl312zxdCi/BKTN53MopbBYLLxTmHZNd7nfzqHYGj+1H4nlJbSPTO0tp9CdxtbdIf6hMSEmAz9O+S51C7toN/tsi6F9C9Ddx8X2dan6zUm3b784FuDM8Q/1rW3a0Zh6G7rvl/t43s/G1sWh0ZTt/5D1W7vq5/vKY+68kxN3aHxOu8rvPsoxpWM7pDXJKMvYQ+psbyMp5R9vN/bLoLETx7v6fUe7ptAk07dA6gOCczZIRARe3sVgXFWVTbeuayyXS3z00Uf4u3/373phaAy4vLzEf/pP/wnr9Rrz+dyGWS6XuLm5AQDvThlZVoc04UxNY+owVjaxDedqtcLLly9R1zVOT0/xjW98AxcXFwBMHfz0pz9F0zT2C/Mhd/uMpUOvU9q45JZDaPOWAs1y+aY2gFMsTKccQ8Z+6JIK2yfbUEVZURSYz+cWfL25ucFqtYpuVOW9P9xSlvPk8iil0DQN6rpG0zRYr9fRcpZK4Fhb4eH23Xfm8xL/7J99jI8/PsXxccnuh+V/LjwpmklJ7Y58hBfef7owTtHdBW8Nf+Wl48JxBTgCMiqrSHcKdeXxIzKgKwdknfWUfFdKwy1xOSArlUk+mEnpyHSNIp4Ds8QvRPxuPR1452n4gCmBAn6dUVnEwNRQHF7XZC3sg7IEwJryomOJuYWsAV7pWVUKda3gTA37+zp3L6oCH/yDD3Dy8UkHjOXAZwiQ9f6KeDgbHu433UGLIsCL8ZNy2DhQ9s5Pz4/VDf/tuUXAWc+fuwXKbSx5QKtIwFrM8qOA4YeTlrIdIFaAmU74gJskBWNVCneELwBzR6tmbsoPa+9rbQSvNq60RIUGdMPG8hYQVVDWqlXBPz4ZaPcGPI8clOX1qmCsaBnAbeXQ8C1kNZz87W8Arm2VCgUKYyGrgbIp0WwalLpEfVlDr3a/h5ZK4hioxIl/3BS6yz11Px+t5+R8S7w4H/lba42bm/51ydlZidPTUoyXfB6j+N2nnEP5k88ZZn4A++3mBykWD+sale6ESxEHabUGXr9e49mzVXCd1gdY5OyTZR3QB3OLxQJlWeL09DQJxt7VvvhQqG+tLeeOWJ3weyZlfwulQ3xCa1m+dh269xlDIQB2G2DgbaBt+kUMGImB/9xtjB43Ng7nxp+Ccsqqb86KlRunITrtvrAxS+SYLOT+Tmf+jqaknHY/JGzfeED0Nrbj+7Ke8cDYMYPcPmgfBdm38BgjT6z8+OYlJ07OJiu37rat023qYminuOsOFEs/56vCbWmoknyX6acU3UOob2GZSidn8Tm0rO6qbENHWc7nczx69MiGefDggQVeX758iaIoUBSFPZYYMHf/8E311wGADY0hsbE71p5SbYk20Bz0rusaX3zxBd68eYPNZoPT01NrxXx1dWXrczabWYu+KSlWr6E65vNKavzatn30zS8dZXdAJr6JIXf54VGfnLn5kG2hr41wGXLS7JMjlJeceX0sGcAmbS0/NE0KX1UV5vM5jo6O0DSNtc7neQyVd+i3lINvmuXRaLG5I9am6F0eS77ruZWnT+N2WRYoSwdoxhTLvkI5BsJyP6moDgOxjidPTzE3DsiqDmBM4Ls7Jrnw/F26pHzmlrCNBWGVajxQFmgs2KkU0DRcUc7bBeWJ6tEo0JXyf8OCqb6SnZUqfMC3q5ynd+IRA35dufK1Er+v1uWBl7lvAcv/OIDrg7D8vSh0K5dq3YycIatYU54KR0cFyhJYLrsfQ5i8OWXvg+8+wOLpArPzmXcssQWvTHW7/CtYME8pZf34WOC507/WrQOYRoBYCfgG4/K6CfjZeKHfvE6Fu+fGQFuPthhOuEWpveNUgLMxEJa7hd7tb67ohwNAeboEcnaeIl4U7IU/Hsu4VBe6cXGo7Ky1Kx07rJTn5t1VywBqbqkLuHqVoCwHZkOArS40VNPeP0sWsG171O1x4RaMFXfHqlKhnJXQC43mpnF1OICUUh6oyedQ+SFRqA/TPCd1C7H1Smh9EPsdWneG5tJt59Tb28YbZx07Ba8rBsbhk5MSVeUAXB7O/4hG8ohZpEkXVx51rXB7a4DO9XrTCd9V/jvP5bL7sWZsDST9eH6lW6heANirHl6/fg2lFK6uruxJPyn+U+37ie5apxHbA8jfMX1Ejtxy/Znin+PP6yLVN2V8cgut/0Phx9Bd12eIdql4z+GbSl+65+wtZV3xeKG2ltpj9sWN0dDyTI0buXvRnL1yrP3F2nwsrRQAy+OGeE4xNh4KzvI2UKpP3VU5D+k/sTkpRTGdaCo8TyPWT3P779vSfu86H1EwdmgF32cakq8hm45UQw+58bvReLixg/629bUtuJPK+1T8xvJKpRHjt8uF3iFR32CdszkM+fUpE3LKd0jahzpe8SM9qc8vFgucn58DMHn64IMPcHJyYv3KssRms8FsNrN8bm9vreUZxdumfd6H9h2Sr29xPoR30zTW+o/4rNdrfPnllx4Y+/TpUwCubpQyYCwHYrdpf7F+wjfaY+fnXdRxTM5YOD6P5vThvrwNUXbE4o9ZB8j33Pl+yLg1ZjGfM9aO6S9KmWOKF4sFHjx4gKurK49fqD77lF6pMiPFcuje4b71gCwLaZmwy7GO0jGgmAFi6Z5YpUgmrix2yIDvHwNhweKHgD0X3vCX9eCn7aflg7AG3DPlT2OdBGNjChEDDhQoisZadTaNBkDHLxprTg7KktLbgalhENa8uzLwFd/SeklZvt26cuXBgQD/twNaqfx80MCBwF0/V0ek+OdhZX351mDx44qVgr07mI6+diAsAbJG9sWiQFUp3N42bfmH279SCg8+eYAHv/4As5OZA2IFQNoBK5X742GUcsArAWFefLA2JC3GxbHIXtqRdDoArNcH/PcgoNzpjwi7MXfKR8g9SdqBp1507WSyFrM8fQ139C8HccWcywFXe9Qvc+fAbRKIFccUS/DW8qfxmaXVeW/z1Anrhj/3DLkJfh4Qq9g8zurTA4GZn3f8MfVLygelz0FZBR+MBQwQqxWKqoCea5S6xKbI+xjPjQPxNVBsDg+FD11rFEuP3slt6DpLKutia73UWiBE67XGel17brn7EnNLSGHv3aZx0qQL6+be0fmdcnPyAOs1cHGhsFo1uLm5ZfFMxNAJIDyMXKM43mkgNsYvLKeJS3P269evAZh94+3tbVaZ8jTeNlCW/07lrW/9KvmE2nxOXmXfCvHpA5pC71PSlO3gEGhqnUduPQ/ZzxLlgCipONvSkD1rKkxO/5dh+nSQUs4p851KOzaW9LWDu9S13VW672haGtKGYv0pF7RNueXSXc4bsTlzVzKN6WOjjim+S+qbpIbGjdEUg2XuIiwnzX0vgnKV60P5AIc9GaRkO2S5h5BcQPQNyLENyNB05Bdo24AO95kI8KPfgNkgv3r1CoAphydPntg7SOnLZsDcXxpb9E0xXt1XGmJRGWvzHADidUTuv/rVr/BHf/RHSYXXPig1R+x6nhjLO6WYCikYckjWT4xCSsep5vactsDrRGvd+yXuNjJRGlpr78OAmPKPEy+bUDuiuJvNxh4hLNPlT/JLKZBidcc/TAvNP6mPFGL54vLseqwz853C//w/P8V3vnOG995bBIBYB7SaOC4u+bv7ZZWI11XqGjffn/j66Uh/nl5hnwTCGsvesgX3SihlLH1N2ALdcjegJSmk67qxY6o5wr1BXVPfkf0SHh9YENUBmACBncqm1Y0LC/YSmqWUdHNKe9cmwnfHOgtX8uNpEoDq5HLHEXMQ1sXp1pU8llOjKNCCqnQ8MdUR3bdrGPrHFZP1rPkIwMxjdISxKyPev7wxUQHFrEA5L6EqY/HnAajtH3+39R/4zeNwgMy15wAI27oRGCb9omkWXf6hdD3glf+29Qv3zoFCsPAsTJRi/uybARUIxK0qpb93N6tw9wBQbrmqtA0vw8XcOvlgxxRrLcK3gGUH3KQwBZwlLB0DTGEUk1GCsnTCNvX51jqWg9hKsbtnAwCrB8q2xx4DrTyFsdBFAWsRy/OndQuEFwiCsPQsdAFdagPINhrVaQUUQH1dAz6u6Jd7RDnNx9MckCg27/J0OMBDTzrhYrPZYLPZRAHEmCydsSOSt6F6kFj6fXR5WeP6uu6ET0UPzRk0btPc9+jRQ8znC9zcXGO1WuPi4gJ1rVHXBTvhAV7ZhtaHqfLry3PuHl2ucbV2x+M+f/4cALzrbHLK9j7vC/toV/sZ+s3Dh8oxtS7fBojPiSfbSR//+9AOhsp4H/IEDAMjD5mGAjz7yGds3gyln6Oz/LqPqVNQTvkMHR93rRvbN23Thsbq3N4WusuPIWI0CIzlirVdZiTFOzRY5soSCxtrlKHwfYCppD4AKleOsXQXgFefvFIhnTtB77vzDJl4pxjYdpW/Pr4hZTenbfLW3RhPV159aU290R3jH4tDm3RKe7Va4fLyEqQI5/fNyM09L8NY+ebkbQri/IeklVs3ufFkmL5NZGxhxpVIVNbkdnFxgc8++wwPHjzA0dERgPQX8DFK9YHcvhpSpEwFNEqKAV9SrqH174Mg8fE2Bub1jVuch/ydK2vfXJ9TX6l+uqtxMAZaxtY/5N40jf0IRNYpD8PB2Bi4LPmG0k+VI/cLjTOy7YR4hZSTfWUwhmIK9e985xTf//5DHB2V8O9+DfNx/iHwNObP43cV0b5/+N3MO8o+CYglqxr6IKiqylZJXVpltbs/1pUFjZ8GRKzRNHSHqQEYqTpNOAMgmrtSOyXbhjN+BKY6K1UFAjrlscQU3snlQFUvBc3bGOfn8yG/1tVLy5WlDxpLOUgGV0+OnztKU4uwvA1QGL9dFAWBsZrVIVnOUv369S/HUFWYo1YJhOUgaQdcBWtrrZtSvnWq9wfGB3684B8cPx43BfhKwFXK6aVvRVCdcJ13oCu3JM6vj5QPuALwmlJnnuJiSKtZ7k5uvD0r309B+WGY5WtHHuX/tscEt6An/1aCytamSemEZAuApiSLB8aSjPQhBFwYD2gW4CvF74CyfB4RdUwWsTELWbprlrc/XbRhWrCWjisuFgVKXaJZNtD18DVRH8XCcN1MbH0h1110HYe8EiCUVkppzd1kuH3t229vt/tIUspdliXKEjg7m2E+P8J6vcLt7QYXF2v7saZco4TeQ2uXULkO2afwuHKdLPPBP/jl7lV1t7YYd60QHbIH4XFkuNw8xHin4ufsa8buIXjbCrWz2Pr760ZTt9NtyzK2t9tFWpLXIZXDVCT7f+wj7xwA61DyxOkux9gYbbPOAYa1xZCOgN4PjVLjcYxywsr5Lactp/i8DTRWb7srGrUa20eFDNmYbKtYpfQOhYYCHLENDz/CNBZ26nyPkVcqbN/RdjTloumQ+sVdUF85jinnuq47bZ7uJH38+DEePXqEJ0+eWL8XL14cXN/IbWP7aj+h8SSltAJ8ECmmiAotyJ8/f27H1pubG2w2G2itsV6vg2PuPmmbjXNosRpTRuQq40Lvfen2ufP0hsw3Q8plyrVHbDMwhleMCPwqyxLn5+f2KO0XL17gyy+/xHq9jt5lLMtHAqdSubtcLrHZbHB7e2vvHpN5pA8ZQv1SUmjzS0Af8Viv196HKMRPrpW4co3yQeMtAYsxpfFURDLUtbFKrKpCWMUaDb/FfpQE15QF18y7DNMNT+EMP+kWCqeYZaW7D9a3hC0wm1X2rnL+rKrKA2vluNE02gL2db1BXTetBVaNpqmxXvP7ERsYpEODjiumo3QBsuhkyA8c8ErJcuDUxQuDtORP6Iq759XxcMCtD6668nSgKAeDfSAVNl1TPtqL7+oWgj+1AY2mcSCsuxuWLGPRPqkezZHPxgrWWMbWtbb+SgHn5zOs1xpXV3VnQ37+t87x6G89wvGHxyiqwj+iuLVUtXXdglSdMaLww/Cw/F0pFbWIlU8oWKtXmbZMJ+ZGVd5ZG0h/Bs5GAVjuLptUJnnxOfAJAbIq5Tfdttl2rFlVO/5FhBga3lqw+kK7bqpZGGbtCgVjzcrTbu9iJb5as3dW1jbdpn2iDatdXEpb3lMbqruQZay1nm7T8CxjSU7KR+HKSDXKt5AtFQoYi1gAKKrCyKU1inl7ik2x6YLugvh6KjSf2aLvmZ/MfFN776mwst/RuM/3JjQ+yDvXuUyp9UyO3IdEskwAs3b44osv7G+tdQvSmg/WcpSgfD0k0+njIdfbHHDn77yOYkTAu+R9V5TbNu4atJUUqoNYOE6xNX6IV07byElz23C57fS+Ul/bmlqXNpTX21TmuXmX88oY3Vds35maY9/RMDq0cVmSlG1bHcs+aYic9yVP7yhNHhgbqlSpZNkHpb4GiymHh9AUPEKUq5gdumDq+zpu6IC4zzoNyRaS+92AMp7kpHjIE+S2lMpbzC/nS8JdfPXXJw//vVwusVwuMZvNsFgscHt7i9VqBcDcWUrKcQlIpHgTTd0eOOjRF27sZlLyDymrOMn2HxsbYxvk0IZTpr9er3F1dYXr62tbN8vl0tYJgQ9Tj2Wh+psijT7FWk7Zxdxz+lyK9xCKpTW2T09V3mP6aahvxco9lmZVVTg+PsaTJ0+wWq3w/PnzzpHFueOTTI+UvvSUd1bz+NuAnaQgTil8eV5ieZBj0L7mxsWiwGJRYD4voBhIZHEf8aTfLowS7nzd5Mdxzy5/7sZisXA+yOusXYv2rtvSA18lGGssZKXyxCmIm6Zu+Zt2YupCoywNYGGAQprXZB8AONDpEB8JwqpAOOmOTjmQW6hrc/cu3zDJODJdU0a+PK7s3XHI8n5aHrdbZ34b6Pope3yxUkBVEdrVHR9nD2Y4/ugY5VHpACmv3QXWmEr85u22/U0gqn1XygvrgSACcLXx4dxCoGwH+AV7BuSUlpGdODwvXn8TjWiK4USylEcQk9Uqa9bKoI2enx0LFXunNgNhEauZhWubJr9/lfwoHrn7YisfbFTwrWARkVOAqDJPFvQV5UPHLXfuiY3wC5UzWffy+pfHHMv2QW52DcrCeG1OAapQKEoD0qpSWXA5dy1CdSPn0F3slUPr8z4Z+fgsZRrKayjtS/nL9xpa+x9ZKqUwm808eThYEFuPxMptW0qts2U6faeR9dHUyuwUr5Q+Y5t2kLvmDfkPkWOqNWdOvx9TJ9uAvm+TfilnvJuCcnUmPDylf190o7H+wNtYanzkv2UcnkZOurl7xpCeaciHCim53jbap545dx0yhM9d1NHbNFYS3TUI36eX3BVtq1vvk/Pe3Rl7iDS0MaSO9RvDOwbQ0NebnORmgMJwEOFQB5C+Sfc+LVympEOtr31SXxn0tYupy3BKflVV4YMPPsCbN2/w/Plzr5/ue7ExJF9cUTGmPEL9eVd9nOSjL8w5eFUUBU5OTvCzn/0MP//5zzuAq9YaVVXh5uYmyXtKOUM0Bvyekrap6xBxEEC2c2pbBAryOKk2EmtTORQCSHM2zUP6qA9GDVOQEEC2XC4BAE+fPsWbN2864WQZheZQ+ostfOmOOVk3UrnTp3DjbTbEj6wvV6tV7/pElhn9JutN6tu7Gj+UUhag/t3f/Rg//OH7ePJkgbJ0oJkJZ2O1cZ1fUfAnLNAp4zs+7l2WDY/Hw7m0ugCsOYa4xGxWoSxLzOdzlGWJo6MFyrKy72VZtfIXnfogwBUwR19uNsYqe71et9ZXmzZduruusU+0pnYEzjKuHrDJQU+XbteN3JXygVsKJ3lSeUmglsKYvIYsZWlc6ip7uJ9Lg9cpKenlEygK6hvuTtim0ax9xO6M1ShLYyXLj4WuKtUBlqntllWJYl4Yq1g6pphZxErwyfbVFoTy3gPhpbvHm1nfct4hvrHfQTcImeH7hUBZz8KS+7Hwba133CYh2x4ZoEnubOhK3vVKba6D9IbdLdDJjjIOPT0Zm+7TA2FJxkI5a1mybm0YH5IL2oKXqmBHKLfy2nYC5axn6S5bUZ/22Vq38uORbR3TXbaRu2NtWWsmj7w7trXwLRpjGQsN6JmJWJ1XKBYF1q/XzhJYVlNivu2bp2i9lWOlGZoz67rG1dUVtNbBjwj5O80P3C8VPpXuWMrhNYWikK+/tNaYz+f2Q1i+3oyVQawOQ/MkX+/wesxdp4T0IXL+oXoLnXgiZQzlQfK/ax3LXeg7xqQZ26enwubq4LZp50P0fNIq8Z2uKZ+GjucxHkPcd0m5428sDtcH5aYTSjO0x+uTdejcGJNlqo8s7iPtMr+hfX9f35Fz5F3PS5Le1vbxtuZrW9p27fkOjD1gmmLhG1uscwp9JbfrDheSa9u4Y8DsVNxtJvQxG6lDobFgxbbpDKFQvcnJu09ZcFfln5Jjs9ng+voaz549swvX6+trbDYba5GWs8Efmm6McnkN4ZlDYxfPQ/jE/GP8+VGvfMzkX8oPkbFvo9FHUyw+Q8BfbvnmLoRj7W7sPMPj96Ub4j9k7uFKkhTwmlsXctziirFQOeW2XwtesA1vVVXW0n69XgfTjMmfo0AKyZLTpkP1HyrfoWB0LK7My67mAZ6X4+MS7723wHxeAvCtYl34kAy+1Wo3je67C9914zy7fJXXbqRFbFmWqKqq/ZvZd6XK9q8AuBmZlYnAWONXlgZI5Up/AmLdfbNURwp0r6tSDgwNvfvoVOx3KGynVAHwcZDCOkvVeFwpH/Hy5fXLPjZ3hp7UrnUgnPLc3B+v164fHZ1d16ZeyuMSi/MFqtOqA75GAVVPbt6QXXj+tNatYP2RhyE/3hZ4MqKZheSzckTiSZC146a6YWTebByZjs90GEWalk1b00M73lrMD4q5MQtYa5XK+xGBkoCzNCUgVvmWsEELWQJJlfblYPXo3Q/LjwvWDrC19cfLvO1+Nm0uE5eN3VnL89MBY+H4e3fHwg9vx26lvfxQGGpjnuUs/2uHQvqAQRUKxawwIG9Pe5hin8/zQBQDXcidK8Zz1hl9665YPvapwJ5y/5Haa6XWJ6F1cWjN1ecfAuhSY2/o95g1dl/4qdprinIAw9Aaj8JL0Cek40rRkD3QNrqrqfiOoTF743eUT31tLbdt9/mn9jZj049RTv+RbTe3z8Xij6FUmfTtDYeMDe/6yDQk62Gbtgl05867pLH9fIwe7pBpW31niu8hlMG2Y1Y2GHsImd0VbVuZsUrQWgfvEJRffexSNq5s3/XiLkUhK90UkXIw5M5p23a5z43i141Sk2vfJDS0XvsmvEMav6Q8/C6f169f4+XLl/j000+99i/LMrTAzFEO7JqkIiIH+InFJ9pmYT+UQgoPrTVWqxVmsxmOj48tKE5+dGfsPsaPFHg6tEx4HmT99OUlZMU4JD6n2GYo1n5C8WPjS0ihlQIHY0RyDSnrnHKYqt0YYKvozJnHx8d4+vQpNpsNbm5u7LyasoThlqQAgmGVUsk5nco5pbilfFP/4TIQcCePAORhQjxT7lKeKfurVAaWpcJsZiwTyYrRtWXz5+KaPxeO+Ml3xdJyT3gAruXqxef5pXjGMtaAr0VRoqoc+LpYzFFVFY6Ojttjr4+gVAmzZSjYH6ERnMjCtYFSTXtnruFP7YravblTtkZdm3ouiqa9J5VkdQCr1ubd3efaBTulm4nTqS04sNhZ3Epekg8sUEzl7VvIyjtjSX7upzWVv4ZfvwC/p5YD0n570N5vbhnr6pWsY82fuUPW5amqCjx8WGG10ri4qHH6rVN8+E8+RHVcoSjdXbG2zVH6Ari07uIvBLISYGXDFCJuLE3pVjg5Yul5cwbJyeKQPDw/3D34HgByO4BfiKSzDrglyLs/VkQMWcZyN2mlGgwjLGJTcsQsZaNxVZeHLXd2z2zwztfCRnJAMvVLfrcrpS/qi/MhQNSCsgy45RayIctYXfhHNHcsY5mFbFEWaHQDVZk2WswLB1ZnfMwB9K9/+Tu/a12ukWOgFE+Hxl65144du8s/puFyxNaB93E/zdd5lNfNZuOVgywDfuJGrnI1Vc9Dyi12yhqXv+9qm7eBaO1Le+nb29tOfeUqg/vKKlc/MUTHd58ppf98R+NpivK7b3UQGkNzx83Ye196Kd2knAtj4y3QHYvH3HX7daMcHdIh6DUlbYvLvCNDsXIcOie+DXNQ9M7Y0AA3dcaGFvguC3aKBdEQwCmHx5CvJkJhY2DO2K8C5UQZAkly+OfGCQ3U3I3A7qmBvftGY+tzDG3LK0fWvgVSSp63qb5DwKZUjnA69E1daHGVC27JsSC3jkNtqQ+0CfGgJwFH3C0GaqV4xkjWr1Lm+FnAKRUO7QOSbdthauEtFVSyT8TCxMaRlPyhtDmfXAA2JIskyS+3T/SNdzQnrlYr3NzcWIvYFK8Y0CqPtwulRxtUCjO0bUqQXPZxPr/39X8J3scA+W2oD7Cn/uruu5XrJD+O8eNWobDxyN/xAXNHh6fLO/dXwTCUJgGyBrhzFrFlWbWW1RXKsoJSFYwlbNnypGfB0tGd3y5d3d4vW6IsG5RlAa0Llr/uX6zfKeWAUj/dLvnxw2E5Px7edzfPbvX7eeXhu/F9kJXz4OCsA4edu+Np0pNtwf9z8dwx1z74a+rbxC/KAuVRiWJWQAKWnay2Twt68nZloyn3JHnoXxvOAm8qnE4H/OThlEsjlJ4MnwRiRVremCXiB91D5ZOiUJhYPO2nTdamNg/8flbt3Cy4Sf7agZEWONUIWsRy8NCGbz8s6NzZKoFf932DAz4lmMzkVXC8OChLee+UDyt3a6EKOCvdSFlSm6Ny6JQdXJ6pndgyU0JGdn+sfBKIqxT7uKBUKBYFmqKBXoXXNrnriiFroVjcUPoxCq1h+vin1tq7+hBq17StHofzCe1rc9aKITlS+5jY/jm0fnsbiPZG6/UaADp6oW32JFNTim9qnzFkvBiTfqzN5vCSernc+O/obihWX6FwMfccndwUfSjVF2VaqXkqxZ9oNpt5xhF8HGmaxvvIg/a+72g7io07Kb1a6D3mNpRHTKYxYQ6FDlnW3HXoUIqNG1POSVPyilrG5ioR39H+KbbQ7gsXC5v7ZUJsIMvpTEMXt7GJzhyT5xYR3KrmHYVpSNlPteCX6dLkmgM07HoAPTTieeNHQ/Iv329vb73wofLg4d92ym0jUy1ClFL23kPJtw8kGpMW8VJK4eTkxLYBupNyW5qqjfQBXbK/D9kscWCGu0lQOnaCQgiYk3LnyJ6riIy5S2Ul/Q5ZnMZkyKWmaXB9fY3Ly0u8evUK19fXHcVUX5o0BpGFrLT85vEJwCNAltpm3+ZZfnBAT9mX6FhwqTzIWYdSGDlehpSV25LWxgKlKArMZjPMZpUFwkyanmTWrfunvN88nJPd8PDDqCR/wMni7ooly8nCm3fM0dbz9nmEoqhgtgpl+8dBWWXTa0vC/hnr0AZK1VbWqjJ3wZo2BZTlppWpBuDaAIU39aZAAKQ7Mti5mfJHxK2PHD+yXOXupsx0hBfFFa6qC+Jyd8qHqx+XfvcJ+7vbRtwdw7LtUN3yeqYyUQpoGoWybOMUqntPbNEFnEwe6Aesn9cGmbsERjk/bvEa+uO8pVsnbdWV1QKw/AkmB/0OAbH2wfLAw/Pqj1HAL2V52qEWLPXia1+ekOVryjLWO1645RcEVnX3eOJYeO9IZFbfQdkYKExhbJoM8LTlx38nnjY/PD5Z3moH8tq7axX8u2NJFuUAWW65a9+bNp8FoIs238xCVpXKuJUKBczdy4C5O7a5bbB+uQ4NF70k51u5rsnZh8t1ypj5T56UEZpXQzTlnnIflLNGleuUUDmE9gWpdZg8bWbbfQX/SO6+Uh8QQ+VCHx3yfTIRrW2mbH/70IPG6v+uFOsxfXBsj/Z1phydW86HGIdEOXrevvC77jfyXvMQyX7F9SmPHj3C06dP7ftms7Ft+fb2Fp999pl3V3usTO7LXLct7aLdxvSboXCh30RSrlwg9lDpPowRU9Mu8ruPuXsMjbozdsoBKFepvmseQ9JKLUr65ALCxxcYpUnRkTuWVoxiX0BK/xySk1aIZ2ghFpMrpHAdIoN0y/mia1+dbqp0djW5pxTYQ9sY999l+eYsVHn6qaNTD4X6yp/867qObmi27dt3UT6hBZYcN2JtNHdxtqt8yba+63SIKD1uGQvAAsJA/JiyXdCQsSlVZqnxJtTnZf+XCkjeZvraSaotxQA7Ui5sMxdzN9r89c2HOe2Ml427j7PAarXCF198gZubG1xeXmKz2XTaSqwc+PGFoXrhROPUkD6Rs8aR9UlK6JSVbshdKq63VUiH5OaK6Y8+OsFv/uYjfOMbx1AK9g8gEFXygHX3/ZXnJ+OHfvvhTRwZ18hMCrQCxirW3RXLAdnZbAZ3NywHYWNgLNWFOabYgYnmN7VNoGytZBurMO4q9RQIWCUnXtVKdcFWP5xi8jheBEZSuH4+Yb/uk9oXB4x52etgPJmf7pOAWOXxCMV3f9wytusOGHB29qDCe998gJOPTyw4GgJOO9WsALJ0te/Uz5g7WcLSMwjshtIgWaH8dHnakTiUrgfEKuXF9X57/QLddxmPhfErQIRJkQwWGoY5v9bfA2cJAGVgo3ckLvenu10JYGVWoRZY5Ra1HGwNrL0tWAsHoBLQai10CWRlVrAuOwwI1b4cnIeVhQBgZplry1GWQ6wcuYyszVk3iPQI+BZ/JItSyoCyZKErjjjWWpuPG7T50EFvptur8rmR76u5P19LD1FspuZE8ivL0n7gFZI9tvY7VCWYpCFKz5z1X+i9T0+SGz5HvpDSet/6kbHU1x61Nh/BPXr0CMfHx/j444+htcZnn32Gm5sbvHr1Krqeza3nnD1FTr/hvELr0KH7y33qYIZQStf0daGh5TZWz5nDN2e/FYub2i/JeSgUJ6X3ydmHA90THkPxQlf/DdUfxuTLLa+v4wcIobFtCIXaR854m8v70HTBMdlz5NxGT7RPmgoH3JZSeqWU313RKDB2SkoVwBCl3dj4OX454fusc7hMMTA2Npn0KVFjE+ZQwKavDHIVx6k8Dx28p9iQ3Ccau3CaKs1UHW/De9cbB66ACH3UkJKNy3dXJBX7ZBHWF17Gk/70+y43R6E2HWtnMcUSB3xi46pMY9v8xsbjoWH64vSRAUWc4iE3X7LPjS2PIQqnUD+XX6uGlHQ8bEzJF0uTiM8xsXkmpjRMLZJpTEmlnSIpC+/bQ+9ST/EmkLcsS/sVL1lz13Vt0+rLKwHGlO9UXyIwlo637ZOxbzMSqwuSRQK/MSVAiHdMSTCkP/b1hY8/PsL/+r9+gPnc/2q6G80fy9wf7B+PK9/DPA3fEA+XFvlxq8mCHU1cYjYjMHYOpeiO2BQYS/nRcMhS6HeDoiihlEZZFmgadzyyufdUdeT0gU1y6/5OUTiOASZzeZm6TFvIynRi9SNB1W49xZ5ULjx+t9347s5C1hwVrdA05lk9nOPh7zxBcVR6d7ZK8LMtLeakwEEtD/SkJiGbhpCJwvInd5egWQig9UBX+Gl56cMPnwJiPetK7gbBj8cLUcQrCNgGnOSRxDZuAJi1oCazeOVAYwh8pXgWWFUOfLXyaAR/e2BtwAKWy88tT4mP59aWr7WM5eVBMiuWntJefUk+yXclyo+3MwJ5W3BX+vM2aEFjBXu3rFLK3C9L/UibZ1G2FudluEH0KYxTikoJ3PF5OrTm4/NdaE1G8VPtWn4UNVTfcNf7rFxK7Vtz9gFD+XO31D5Ohk3xHKpryaVDAP+oDdP68/Hjx3j69Cn+8T/+x2iaBv/lv/wXPHv2DK9evbJr7tAaNQeM2VU+csPE9IUpnvve6w8FVL5OtO2Yt83+JDaej+Up56vUfo38QvPONgBpKB4HY8foO7ZprxKUTu1F90H3YY7lbWIMiD0EkH1Hw2iqMhsCPA/9YCOH732r+zsHY2O0bUHGFqtTTIwhHiEleVmWODk56YQN3XPaNI09aoWnFfriBzgsIGkIpRSgUukbWuDxxfR9yvfbSrmg19C+93Wp2xiYlwKI7gtx5U6Ooia1CAf8Lw9pXIwB7/squ5x2nVK0pRYQcjMzFe1qsTWmz8Y2UCFlGG3kpNKQg9RDxxgC+MaCc0PSUsrcJ/rRRx+hrmtcXFxgs9lgtVpF5/mxRPfbkFWAzGOo7nh/ojLlYbkClsKcnZ3h5OQENzc3Ni/brrNCG1o6tr1pGm8cSG1+Y2ukqfsT522ATTo+Nrxe5IAZf3e8lAjjlKsmnEMrXLyOVJG0fJDOWcWW9ji/2WyGoqiglDyWmD8L+EgFQGClSYqDse3ZoKA2bixyzZ9vDevy2M0PgadKSeDUB1Z5OeeArbFwJIdMi4PDKTlj6YTmQ9dWzPHO/pO3j254Xsdhd7RgN/0GmgbQV2vc/NlzzD86xew3HzmACa6N2CxTG1LhdwLSOk/W3mQ8+ZTpc/AvBspKINg+WfoeyMp/kz+67pyHwBm7Y01kqIvF7yUtZCFnBpRaYFbBB0QJlNVs7pTgq2rDSaCTLF0FCCxB2aw7Y9ty74C10k35cnDLWs8iNvLk9dYLyjKAlbcH8lOqC8LafJB/oaEa5bmjgAFgG+V+a2WPLS6qAnquUT00xxU3N/78BbC6Sii3ZZyYfyqcDC8/ZgopR2lNIK/okApyPq6NkffrRKF1r/zoXpahXAPz+JLXrsr3UPak1N5o3XJ+fo7Hjx/jww8/hFIK3/nOd1AUBX76059amcuyxGw2s/q3WF6m0lXIfsL5D6FcHctY/tsQB6DuSoZ3ND1tAyjydh/SZ/RR6rSvXJAmF+CTMhZFYU8io3fy51fw0BHFXEfzrs0Pp3dl9nbSFPjd122NmARjU4Wx7ZcJQxcYQ9MdQttOOlxxKf0Xi0VnUR0CY1erVee+i9ACfQjta6AbUn59MvVt4t6mL2J2qfzfJd8Q/xDoJgfUsXUS4hED8rgM96ENSEopZWLAbS7PsWPuUJJKmtRmLTU/8N/yYxe6n5H8d5Ev2T9jbXnsxwipDSwvH6kwG0qpPhHjN3aDHdss5WyiQjLGxpOQoqpvPA3JVJZlVFk4ZZuiupvNZnj69CnW6zU2mw1ubm6wXC5hwLE8i/4UceCUlKey78SAWJKBH6Mcuh+O5GyaBsfHx3j8+LG9n3a9Xg/60jXVLnhdE2DIlb59ZZXb1qcgLqv7S4V3f9yNP9Pp8fCq48ZCBvhz0M5ZptLdsXQHsDmeWMGBr/JPMf7UXzTsBYsc1SBArf3N7zR1sjiZXdicMScGtMaB0X1Sfx37+ZRhTFnoTn1THB7e/wuDsxS2ua2x/vQS5aK0wJMERkNAomr/dfNp4kogNAiiUpuF6vK0jwgoC3T4Sl4ddwrLQM6hQOwgEDanD4tA1npUxrUfByj77h1NTMAkAZncMrZNxwKgNK+xJmTXaMRHpMvDEn95JLAFPLWTi5ejHYvJTcPnIerAysOBYsWeuntEMrcA9tJmebfgqyxr1iYoDS8uuiBwB6wtFHSjXVsvnLVsURUoj82HxATGSiWwdON1HluL5ax1+tZeco0uQVX+ERQHtvidpKG9IOe1673ufaC+vKfAwVB9hvxiwMDQ9jNEvrE0RVugjxiPjo5wenqK8/NzFEWBp0+f4vXr152wtN4P6eCGyiX3qDm85DoR6PbV+6S3kHqfmF6GaEyd70Ix/3VR9ktdzLa0a5Altb+X7n2yxcbMFEkdCzf+od80J4bke0f3h/bV/3P1g5Lu4/g0ZT/I5ZWjW7wP5IGxfZU/BbASin/fGt2+J/K+9GIT1baLTRknBgaMASZyBp+QUpdfqB6KkyvDO7o/1LfADwE2h9wGdq2Y2Oc9otvQkLGClD9EBAjxI193VZ5TtSk+jt/lZnBX7S/ET25cOJDXNz+F+rkEBYn416y58x4BTxJ0DPEJpZ3bJijduq5RFIW1jNVa48WLF7i4uPCUnrn9IqTo4TKF5k/ZljkPspIkZRW3jKUyqqoKR0dHWK/XWK/X+M53voPf+Z3fwVdffYVXr17hD//wD/HmzRvMZjMAZr7OqQ+uEA5txOX6I9Q2QsoxWac8j9tQPL62VrFAF5DlgJoDyhRz5/4UBp5/vNsqL0w8LQ7Cdi1jq4qsYqUlbAqMdemZo4ULKCUBWXjh3XuXB3937ZVQHt/frwoDPBo5YmUUa48uTuq3eRo+vF609p/++EAZ050wdI8r3Q3L+6h78vII17Hv7/gVhbs/lo6CpqHTWHEb4Chk7NwBROm3aE9etSoXrhNG+PFnKrz3TmCr124EL17dLC99QCx393hz6ryqjpvHO5M6YVnT4cf8BoFG7WSQ1qjB44m5VSu1M2iPj5QlZBHrvP00PXftl6G0WLXuDMhVqscyVvl3x8pjhkPpeMcL87TZ07PSLVx52zthCw00rp3pok2zBWLpmGJyK8oCTdVYS1lViPJh87BSw44klWH4nBe6Z4/zD4EnUhaaO29vb/Hw4UN88sknNuzf/M3f4Pnz5/YDqVx5vy4gSA6l1iC5Cn55NUdo/dSX/n2sDyofWl8ul0tcXl7iF7/4BYqiwKtXr3Bzc9OJw09WCa3fh5bFkPCp8o4Bsqn6OxQlNF+n7EKWXbTPGM/7Pj7F5B+Tp6n1zgDsNTN91q+xMSx2FRF9QByKE9pP8ncOuF5dXeHzzz8PyrJer72To2LyvqN39I72R/d9zCbqBWPvEuzapoDHTj7b8pc8QkfPpDZcoUmEb6b2SaEJp+/+2pwFWShMn7KVx5XlJ+PkLmZziJd77ibnkGlXfSqnzvv4heqvj0LhcsDaUJwp+9dQfqG+FltQxt5zyngbGXOpr0760gy1CwIKyF8enbZrADo0Xo0dA1IbJj6WkfUvPcdudnc5VuUCn9Ivp/xkmL72OqaMeFvi/FPKShk/FD42xmitcXR0hLqucXR0ZEHLWJyU3Cm/HCVcim9q/qyqym5+T09P7dFw8/kcVVV1lMFDqW9zz2WMjYuhethFPyCeVVVgsSixWNBdqkB/dfqokVtnREIrHkc+U3FifLrgrFIFOzI79ofAO+CQixwaqvSMgau7pBYZSgC4XmglwVed0QYobjd/flwC7LX1o3o09SfXqboTxvj58ZULZMX2ADW/iVr+EnTzrFI5H9ZM+PzmWa8yf968vHSEHKH4HQBV+fL0AbGhLqVE2XTyHKpfWYbCr0OxpqWcvwVOCYC0OCRztx8MMOtX1nxDgKyXhmJHBYv0LeApgF0OnhJgK/Nj+YbyItKntDqWsPCBYHt3LLG17drlvQPCUhqKAb88n/zJysCTn9IIHJHM3W28Vk5VuHHWgrxbjGdD19BShxBb1/B4FKdpGsznc7z//vs2D8+ePbMfZ6XWTym6D0o0knHqvWFu+QCuTvrWfPSM1UFsXzZV3rblNXTdzsHV29tbXF9f46uvvkJRFLi4uMDNzU1HF5SzTo+5jwFut1mHj9Fh3ZVealdr632PD4cyHo3dt/TtnVIkx+8h+r5UfwntKXP2oLH0QrIN2ffzsHJsl1cF8tPX+DHFOW3zPsxvQ2hf+ZkinaHta2o6tLKaenwew29oeQwpw23Ku2+Nt6851QNjt1H4ft1IVj4HB6j8FosFjo+Ps/hdXV3h8vKykwZRboeTmylJsUaXA6bF+I0B4saEAfz7drkikd6H8MqhQ5hMD70/7mKgzwUbhoJiQzZf21Buf40BCkop74u93LFAjt+pRfM+23YIbJZ1R2VhLLOMbHTs6YMHD/Dw4UMb//z8HLe3t/jxj3+MpmmiZbWNvLsqn9BGoq5re/8mua1WKzRNY7/w1tp8Cb6tXEP7TEpu/ox99RpKi+bLvo1aKK/8SD/eh+q67p3f5CaXFDohSrWBIRtGkmmz2WC9XuP6+non66wQPy5DrFx5/XHLgdhHY6G8n56een2X98c+eaUCQK6rlHLHlEvLhticz8eYhw8f2vaxWq2skm7K/v2Nb5zgf//fv4WHD+dQSo6zIbnQ+euG5X9yjkg9Jbpgfrs8E/gaspAtUBRkDas6f8ay0rf4paI3vPvaNO/nofnKhDFu2r5PQUpxWc1v7kYoTGh8pHLN6bM+T8mDftNLqM/68vntw0eK5N2wPJz745axJh4N0UVh/jywSIX7ubWSpaLi4aiNBtz4uwRn5W8vXe6Hrp+0kPUAWnSf3m8WX7rLOB44GwJgFfMLxOn4SUoNQwRwUlDtyxmygpXgKD++t2MtG1DAen4EfKILiMo4BNiG0rIgrEInLOWHg8NRi1jxtG2EAbyddKjOuJtSXlivHkQ7lffF2mOMFXzLWG3K2lrGluZjAlUq414plMcl5mqO+rrG5mrjjTUxMDNnLTpEkRRbu6T2z8fHx/jmN7+JxWKBo6Mj/PKXv8Snn36K2WyGqqpwe3sbXMP17eNy6C6V2qE1765kCe2ReJrcjdZA/OhMvp7VWrOPqrr8d0G7LhfOn/Ya9PeLX/wCn332Gf70T//U7pPquvZOzAFgP96dUi4p2xg+Of1l6rhTE637SQ5+us5Yfu9ofzS2vMfES+mlpJVraAyT81VqbJN+qbl1s9l4p60R8XE2l9629ruvufBtKLddzoXB/cxbSF+3MgxaxvZN7kMHpDFg3ZA0hg4KUy9eYpuYpmmw2WzsMXA8vEw7prwMTT45lKc0im++UuBrTrhUvCGyybTGpH3olFrUjy2rXZCUMyXbmE2F5J2zkX9b2oCk3DzFxuypNopjKPfDjli4kLxFUdiNdVEUODo68vhN3Q76JuttFBuh+UcqWSgcAbVc0dI3RsQUeuQXAr0kjS3LKetCKqRS4aQMfcpJyTe1oQuNR7njk1SicfBXxpfhcvIRSzfGP8aHA9sx/qG62Gw2uL29zVa6DFkHkEKR1kYhoD41V1D84+NjFEVhN9nX19eTrv201lgsCjx9usBiUaGPdczfuBsEIMWD/Pxnn7Le/83jKsXbnvLkaEP18jekA7+1/XN1pzt/rm7DbWJXoGzKbSpK8eZ1kROWP1P8ZP1S/Znf2vPTqwabF0uUZzOUp7MQWxD4BMcqDjC2zaUz/lgZlNecOnxCcQPpB8EzCD/O0wkeB+ESFLOEjYGwoXwlKVTvJKv2wcqOFSyFZcf1ynce1oKqIj63oFXKHV3sWcSKPHKwNZaWBUIlKNvphy6vHQBYqY67BUxzOi/PnxL50c7fhuXxZBhq45QXJeQky1ml7NHFqlBACaiZefI88zkstDYOrT8orIyX2gvkUGh9ytee/MqQvnUkz2NOujk6h7ukfciSWhduyze0V9gXmJfbBkIgcqpdK6Vwe3uL29vbzsf6EozN7QuhthjbV+XoK0L8t/HnYcbKMDXJvY70u+80tnyH6GKGgIohnjFdbl+8sTLlhB2iXx4SdgwN6Vec5P62j8/b0N776OuQx33RUH3vfaNd998+PCKHz12XbRVyzDliLrawC9E2iuscuutCjNH19TWWyyUePHiABw8eWPf5fJ6lKI35KxU+cz9HIbqvhfdd0DaT9tD6+LpTqqy33Zzf9aZi15QD4siPM0Jf6/XRXZdj38ZC+ofu4aTf9GELYMpmNptZ5ZDWxoqUH2W8jcxTjSGcZ4g//S7LEvP5HDc3N7i4uOiEnc/n0Dr/SOa+PPD4Uy5KeF3JTXkMQA7VdR9/zo8s+sif37nalw9qU9zqMiderrwpIkURV2oCrt+P6e8kU0h+eVeqBF4p//yOV6moI77r9dp+vfzmzRv8zd/8jT26mNylAq1PZl4GPF5VVVgsFvYre1K20fHOIUWU7F9PnjzBfD5H0zR4/vw5Xrx4YUHebb7cp7RM2ZbtE0ACTHVgmRJP35/F6MSNy5L7W7Uyuqf789N0pAP5cqCee9cwR+FqAI11c38NtG6YFbZG02jWXrr9aggQq1QaaA3/5ihMViosfF7cUL1JWV0Yw9PUTxihM21Bd9qOfFIbKwpTtlS/RQE0jbGKXf3yEtd/c4kHv/M+Tn/7iQOf+B8TzbOQJTelHPhEY4VC0OI29pSAq+fWpivTt08B9AaBX8GHx++8c7cQCMvSCAKwsf6fQmRbL34kLm9mygXwjiv2QAIFZ53K3j2QlFnT2vGTQFcl2hsBj1xMDs5yvtwqldKGn54FYSl9YZ3qgb3KDxO0jKVyU4K/eOf17N01S/xYO0MBM3TROwNf6Y9by9r8F20ZFsJCtjDWsUVZoEEDVavg3bF8DqN1gPw4jz/pNwevQiAuf8aAEq5TCH2UdXNzg1/+8pd48OABzs/PsVwuvbA568ghOo4Q3fV+ZtcUWtfH6pN+0zu1AVoL8XYTWhfF+N8lUX4Wi4V3fQdZuS6XS28dGlqn0v6PeHFL2ND9xkNkiwHE/vqp26+JQuvbUDpTyLcv4mPG205TlO++62mbegm105wxOhXnEMbvlDwxvcWhjpnv6B0dEt1V/972g5NDoI7mOraoD1FsYc/pkAeuIV8sjSV+rB6nKdKTi8MhNOYLodBEG3NL8RoC2ueUU2qiHPLFxDaA7H1q91NS3yCYKoe+MPvon/umXQI9sTZ4V2UnwRzuHqKQsinFOxR/234X4xvzy40r3aQCrK5rPH36FOfn5zbc1dUVVqsVXr9+be+NTaUVSiMUntIOWdmOodgYG1KWpOSVsqY2RbKuORDbl5ZU6EjlI0+/r62myi80vtV1jdevX6MoCiyXSwu6am0soPuA9pw5X5alUs6aRQLWMl7ORpoA0bIs8ebNG3z66acoyxJaa3sSyBAwOVS3oXzIshkyfwDoWFwQjynm6hAo5uTw5T0EislqSJaHDvwmhEL6pf9M23NgrNayz8ae+yelusDurvhyN1knqbblwhiUyPgrEFDL68jwMe/EUylANQDWDdBkjJs+8uiPDwK09IBOAbDZ8DKNANDrpcfT4E8mC7eY7MiSS1Z0P08yDx0gNlk/PWQxQj//HQtSBXtccequWP7uAbIMILVhCZQUVrDEw7NS5ValupuuLR8tgFeRpudOWab4lL+UhaxSrlyUDwBLUNa7y5b4K3h5srKxcpZt18YPgcEqAOzytlkAqul+SMBJzu9D56dY/NC6Qa5vUvPuarXCl19+iYuLC7x69QqXl5d2DSmPleS8Kf1p5tjDmT+3pVi9xgC7WFhet3LtOhXtWpfBAeWiKNA0jQei0nqzqqqt9DuhNGMk96655RmqvxgAtwtgbt97fm4tL2W4S7kOgfr2JVOVxVR6shydXR84K/vjUHlC88UQfXEO/yHu7yifcvVfh05j8YKvE+XovfpoH21jirqcSkfUR0kzoqm+3kplJlUIfYuVKRczOcrit63zjQFw+4DX3I1X7CvQvkn40OvgkNrJPmTZ1UDVt+h7W4nyPdRiK6RYOaS2CPgy9o0bORuDMTTlnBIDm3Pj0tHL6/Uay+US//Sf/lP83u/9HgCjgPjJT36Cr776Cv/+3/97NE2D4+Nj1HU92mqSfz0PDG9jRCGgV+Y/pEjid9JzZZ0MT2Glu0yDg8mkFKRyzWk3JIsEJ0OWvaG4IZk48bxRWa/Xa/zkJz9BVVWoqgpXV1dQSlmrUm4tKylkOR6ygJBxiqKwd7ut12tvwxsDQiVPznu1WkEpY7H9y1/+Ej//+c9tmNlshtlsZu+QCwGgMXn5uwPr/LZDsofuDSYesu2RvNtazYfIV4CmNvt+Hv2wygsj4zCXLJlcWvRblnM3jtZUltYFgDs62Fi7krkYNx3jRJawdfts2F8NoEHT1KjrjW3vvJ75xxQkz12TUnmALIXjTxeXoU9pLjacz8+4y3r169f3JxTIWc86a1pAefGLAijLsHVPBzAlcAkOmOXApI3P2rv9x/z4swNeAUEeNn04GToych5gafE4oTQ4kBpyk+78fap9SiiK9uWwfYLS5lawlK5G97hgBc/y1QKb3E2L+2G1AD+FO6Vnx0CWLslIZcWBWA6EcuDW5ov4iPrwnjw8vVMeuSUuS9vWd4B/x/JW+XfShsJ4PBU68ZRSBoBtLWSL0gBNZC3uVTNbE9nmoJSd3+U6KDU2St7yJBQ5X/I1lJw7aU6/urrCn/zJn3hxyrK0Y3honSbve4+t74co7/alD9oH9QF+fB0aWpfF1t0pHc2h6rmapsHR0RGOj49xcXGB29tbz78sS5yenlqgNtSWYuvfMSTLIbTn4e6x/YJcV0+hxA7FS9X5lPUpea3XaxRFgdPTU2itcXNzE5ThkOltG1fugngZyT43Rs88JNx9aWf7pH222Xf94x3FKKdtpHSH95Fy9IYhml47FaFdLULG+A/58iflFwobSrNpGru4JGWxVIQ3TWOtSyS/2EI85BZTSubI3dcpuFI5RikwNrSYjcWNKeljcWNhdtWxY2V1SJPSociy7WKsT/kwhE9Mnn2Bv335yAUuiFdqox3rb7ue7KbsezRerlYrXF5eAjBHUd3c3GCz2WA+nwePVxtSjrn+oYVF35hG8ULpEEhGY+r5+Tm++c1vAnCKmJOTE3u81mKxwHq9Hg3G8nRDsuW2+VCec+pcKgI5Dzl38fAyHBHlo2kazGYzqxBomgar1coDa6XMlF6f0iUnT7G5mH7LdOi4taIoPAsAWYayHMgChSt/+oBnfjIHWd7mgNU5YweVLwc5+RphaHsKyVTXtVX4UNjYfBCbNy4uLrBcLjGbzXBzcxNtX9uSkS3l78JxN6VS4xUQRmmypeq4GKCT/+bHBDdtvWr754DVIvCbU8P8fTBWa/NsmhqbjQRifQtZI5u28g2hUPi73dtx5Gg60gBeNsCyAWoF6EKhKQs0hUZdKDSVRlMXqOsGTa1R1xq6PRIatUZ1vYbSvP0h2naVcoCTyZHqNCuv/SoxVjNAK0Yc3O2AnpwHTyuDbyAh/xlxD+YxJF+qHGJpQ+SNSDPQksdhTp2xsvVXylmqesBrCJD1GDI32VRJRNl8Wf6Jr2fRqtC15oUrL++OWUqXp8X5cQBUWseyu3F5WE921masrAoePwKzKQzx9uY9npYsY+LJ47G2qQoF3bThCuNWzAuUZyWaZQO9iX8UFfowLLRmifnZshfg0RAwl9xIPxHac3A3WtdSPL7GyUlrbNhD2e/2Uc7aKgTypQBIXi9SBzRkP7aLfWLfvog+StVaY7lc4smTJzg+PrZhbm9vsV6vcXl5Ca211Z+F9FM5+7Ep8yDX+SH/XDA8pbiWdb/LvKaI7x+1NqfjHB0d4fvf/z5ms5l3zcmnn36KX/7yl1gsFijL0u7JJL+7pqnHlUMGE3alpwzts2Np9emzQ7oAmY50S+mJ+/Z5ofixcfe+0D771V304SE6miG8ctZH7yhNOTiZpCn62rZtYoj+dgyvPj57A2PvA20LGtFCUbrXde196ScVmBQmBsaOpakHlaEbuKFhQ4vWKQb6d4Pr/abUJuU+Uk4/Si1IYzwlX3kf5X0k+rp+uVxapU5Zlnj06BEA4OjoyIJUZGE69mvobUhuKIhidU3Krfl8bsHVx48f45NPPrHxHj58iPPzc8xmM6zXaxwdHUEp5X19PFRGuitzCgopBXIoVSapsNKf5tq6rjGfz/HkyROsVit7pylZyubIl7PpCxHvo7zvhjZz1C6vrq6CfTVVL9yCkO5G5sBkSCkKwJYDAZoE7suwQxU7lGZVVR6/FAg+hKit1nWN1Wrl5Tenf3Nl9osXL1BVFebzOW5vbztlNla+bTZu4WJR1i8E2MpwEc4BNx1wd1avIUAWoDok5Rk9CWWQPDX7861h+dOAsV3LWP/eWJKJyzkNqHqXy0ClALJynYK+bDReNhz8acebipD2th9oQFP5bjSKdYNquYFqXNvqjJMMTDKv7p8XhoXN4WEtBtnTA66UD8raMBQf/m/7JJ7incsSih+lWFyRFxsk1KEDcvel6YWlauT3uBLWqJQDb9smZcFN4hUDZDkQ2fKw4xkHP+U7hDvxIBkZWOkBr2CykZzMstTOoVSmjE/seGKSwYaHnxYvNw/0ZWVB/HhdBZ/KycwBV24BG/vNAVl7f3KhUBwXmM1nWL9Yo964Y365JeyQ+TkFcsi1CekpYsQ/cqNnURSYz+f2ZJaU8qwsSywWC2gdvof+HRmSZSEBxtCpIjnlGALuhsqyL6K2eHR0hOVyicvLS/zWb/0Wvv3tbwMwZfL69Wu8fv0af/InfwKlFI6OjqxfiB+nbdafueFyAChOQwHZGOjMAftY2KnrlT7m5PTgwQP8w3/4D3F2dub5/bt/9+/w6aefYrFYYLFYYLPZjD6N6W2jux4Hp9SppcaonA8U+vjtuqyGlsVQ+d/RtHQI5TulDPvIz74wkDEf+R1CfR4CeYhgyFpz17TLithl40sp80KLbP51aGgzNERxTDyHyMRlix0R3Ecx/rnHQoZkGZK+jLfrOPugFNhwl5TTjmIAwF3T0D4g2zV/T7WbIfWVWpRyv9A9nqHF4pDN4l1SamMpFUa8PcVAJcCMN7/61a+glLLHoVKYbfIbqiNe9jF5Q/mJhUmld3t7a61/AVgAieaFqqo6XxcPmTMoLIFnUr4xC7ZY2imZQmCl/E3voeOKuUUmKbAePHiA7373u3j16hXevHmD6+trC7wNyVdM7jFjXCwOv/tKArVSabrZbDCbzfD48WMcHx/j0aNH+PLLL237lzJLN+J/dnaG4+NjXF9f4+bmxrOQ3WYO4m0x1ldCFGp3xEsqIUmhO3TOIR6kBKK/2Wxm873NeKGUwulphb/3957gww+PEdJvaw0oApmU+e3ij046QSGQlK+znBsHX7VuUNdNq2yvUVV0DDEHY6nMFfsDc5fHFHMQdoPNZm0t+2k8r2t5dywf//mcPE3pcOrj6QDhqYkhSC19uqzx4raBbuEhSpsD0xoKugAaKOhCY32kUHEBtXtay0QCZJuWV6Ohao1NcQo0rbWs1kCtcas16r9x8w8BudBAdVLh4ScPoaouCOkBlRyEYv4dsJSBmR2wUvnjhxdWsbT4kxetkE+GlTz4e1AWCcT2rcVCfMYQpcfuT/WajkLHqtUCjJr5B+6K9QBK+HE7xxOH7pEV7dc7LpnzBJNd5EkeH8zl5mElgOxZ01J4Vjf2+OPQcchcRlY+HHTu8FUMbIbvbsuIyWUB2cKVqwfIFsrI1hi+oY+X+JwYO81CzvHyWNsYaNO3Zgulo7W2d3dyWWK85NqC8vE207Z6idhv/iR3efqIBHF5PL6WDu2t+sC/u6CqqvDDH/4QDx48wOeff45f/OIX+NGPfgSlzGlB/OPcMWu4MXsdqSMgPrIOcq+D6dtryLEgFo/772q/TzoTfk1OURT48MMP8eTJE7tXffTokZXh5OQEgH+FzFTy5epeD5EOVcYp9v58HxcLH4sXkyNnnxbT3cTSC8mVCpta8x3CeLktbZOHbdtz7vyzz36Tk9ah9uMYDZ3nx65nYuFj68ox66Vc911jgDFZhuh9iaqcQDLM0Ea4q0a7bUFPrbiP8aWNDBH/slTGy5Ep1IBzyyJkgSPl4/Kk0uR+Y8oyt71JmfY1+aU2LX1lkRochgxysU2ZlGfftK0im3jsM22+WeJ9gB/lKeXaRVuTi7++9FKbsT75UmXVtynflqaa/JVSVhFE9PLly2A/m1Lhw8e83LLJDRfqz6vVCtfX15bP8fExZrOZp0yJbWRS6fI8hL5slvLLDwJy+XMeKRmGlKVUNNBmj/JCficnJ/joo49sW6FTJohH7OjcoXmLuXGZ+8LEjonmPLgipygKPHr0CI8fP8a3v/1tbDYbfP755zasbBcUn+f75OQEDx8+xNXVFVarFY6Pj1EUhVWsxPoqV+aGKHRc3Ng+IBWIvCxDHwr2tVF651aYSrm77qYY24+OSvz2b7+HBw9mA9r1OL+hRNmTPLX2y5rKl5Rmpv800JruhgWUInCWmMkxRLO/7vHEdW3A2BAQ27TH55J1LKEeRk7O3zx5tQ2pQgrbjbPb9aSGRqOBRtNv7ZWWBvCr2wa/uGn3BbyYJSkFlAC0eVaagVhtVmy7pt/sSb+bY/NBiG5a90Zjo4H1VzfOirY92lhvNBaPFjj/zrnpZy04yNOSxwxbABYiLwzIMtlx+bW/0Q3vWaKKp1XyIfyUv0NxOzJKssGU5xayFI6llU2yOSrj1rFCJRkkIMtAVw+QBTxw1rFXXbAxJgdz99JhvEwQ7edbCz+0c4uQReZB5oXniYfvhOXhKS2tXXtiZeaBzCyMl17bNrXSwaOeOTBLv22b5X+F+VON8oZQOX/JtU8fybVqaH3JKaZ/4PykG19D9SncCLjpU7YN2cvlrNXuak+co9DvW0sO2S/JtZLkwdd+9E5/UtdzSGAC7U+qqsLf+Tt/Bx999BF+8pOfeCew0HUtQ2nIniYUPvQ7tp+I7fFDfXSo7DK9HJm3Jb6foD1DVVV4+PAh3nvvPVtn5+fnVobFYgHA16+EPq4N0VAlPY9H8g6JM3QPeN+AmF318aFjVui0tiH6tpy5LUfOnLBD9Bpj0p+6f0re+2qjhzR/jKH7Lv9YysEoQuH6dMq5YwKFzR1fp2zPQ3kN6b99Y2DMfzAYe0iTUM6CZshmZF90SGU4NeUCrPsC4mJA1r4WJ0P9UyRlvsvN57aUWjSnwMdYnCGklPJALqn4v76+Dn6ccCgkFempcEMUA7umoRtQTvJYd6AL0vD6HEPyi2YCuuTJBjx9vsGIUSjf3FKP8vD69Wt8+umnVpZvfOMbWK1WNp90T24IzMtR3nHAJSQjz5PkwwG/2GZI9mkpZ99ReiFeXCap5BhDnFdojBmryAylEQufs2ahsqqqyt4tq5TC2dkZzs/P8fDhQ1xfX2O1WgXbX1EUWCwW1oLg137t1/Abv/EbuLi4wPX1tbW45mDsmE1uKE/5oGR8XI/ND1KZFRsDeTwC7bklBfXtMXL76QBFoSKAp/F3fvvaHMOTx2JzWrfuGlq7jy7quoFSBJiafm4UnxplCShF7UvBgKwSraAylJaxm/ZYYmMRu1qtsFoZQJZA2aYhUJYsdJ11rIMqu3kZ4xbyl8+xFIu/0Rr/7aslXq8amGJsQR1Kt/3/VaFQHpU+6OglQA8BXjFAFKyeLfDahpdgrH027L1xT60dUNvUDZq6wfMfPXfpsPhQwEd//yMcPT7yQag2u/Zp8bPAmi8AYAb7o3JhO0CoQvod6O+CAsDjbtH5KpSvTnYG9P02qDeusa7mHQGsjZ+1npXHErP0PcvathwJfPSsYTWzFOWWo9oBnhy45EcQWzBVKdf+2vKyxxSrgLUu1WvLw87RYE8O0NJdrW3ZeECo7WM6mE8qJxmncxSy8svLpiOOJA65WeBVA6pQ9kl/KLrreKUUTk9PUZYlyrLEer3GxcVFt3m0bY+vp/hHdiklF1FoPRXaV8j1Lc2bkgefizebDZbLpXe1glxby7zk0C731lNTzt48tm7hew5qC7xOeDnSGkZ+oDhEKXpXRPeNbjYbXF5e4rvf/S6+973v4fd+7/fwm7/5m3j69OlkaU2hMwiVf2jfNASgOUT9ZIiojXF5m6bBp59+itevX+Ps7AyPHj3CxcWFlf3m5gaPHz/GarXCzc3NoJMWY2UTA8i2WcfnjCt9dSrHNoozpR5p14DeLmmbvfs+QUU+bob6e0y+Q6uHQxs/9k2HWCf3hfa5zgrpnMbwj9V1TDe7q/6xDbZ10HfGbruYPPTOOCVImDv4hBpLSgmb22inKOuxacUAPQqbC0j1LYxzy3dsRw/la8pyDdV9StYhYbclqRQYq9DPKS9SNvMNLX11y+9sorCHOLEPHfRDeZCAR4pfXzmn+qCMM7RdUR3wcLKeJK+hm1wO0PB2MZvNsNlsomBszC1HEcOVVQBweXmJL7/8EoBRVJycnODq6srGobtQc9p8LP+U5jZ92Spse5QJvM5CoHnoPZS33PYSqsMQScWW5NtRZGfMH33Kr7HlXZalBWObprHHgdEdWxKc5LJQXMDc6/T+++/br9VDZaSUiipM+uqZh8kdg1NufWNTKK1Y35OKs1j649Y/Xd6HQFoDIZG0Jj9f8a61/3EIjTNFQSdI8DFDIl2AQSxoLHOWsXRHrAFfc+6K5UAA/WmWBnp/j5+qt5vja62xqunoXwNq3tYan99s8HxZo6gKA9gUos20xVlUiY96NAVlY5MsFs3+5Du5yVOnFfOn34UBrQiULVQBaGD5Ymnc6K82f1DA6jdXmJ3NoEvzXhQur+WsRDWvOpaCSvnvlD8f02RlxGlAd4tZyEqANBdMDY5dkbjbHFccHPuojlrentWo9sPYOYH7iXjeXBcKF7MEbduLPG7YS4+qTnflDB2T7Gc+4hbzC5C00rVWwbIM5X23tL5h7VXmnx9r7OVNuTYcsoy1+4k2rlLKALO1kaGqKsxmM8xms25+InOWBOb61qDSX64d5NwaWsfwNSB3p3Ut3RNL61u5fh+6bk+VwViacn8r13+pvMZk4FZjfP0WWmfLOg9ZLct4sd+73tenFKXz+dwCz+fn5/jkk0/wG7/xG/jN3/xNAPAA6W1kiLnltoHQ+n5bvZLkEeq3sb68K31Ejj6Il93FxQXqusavfvUrLJdLb19xc3OD+XyO29vb6GmAfWnJ34dCsTGRuynVtUKPxc3xl2Mo0D0CO1f/kEtTjZGhfWIsXI57Tvvg9ZKjj4nxk31/yFiQoiEyfZ1oirLcRg//jtI0ddkO1WNLGXJ0UzE+Y2SYgkJleNBg7CHTkMYYUw7ziTp03F8qbq4b4De0uq6zj3gJHWkc4s3zkTPxHSLlbJhy8jY073c9KNwX2ufkyq0HlTJ3U6Y2ldtQaLE7Np+hr4Bi7asPSArJmaswiZFU+uTGSYWXec4B4WIbHK01FouFHfNmsxkePXqE6+trq1ySyhMJIMTkjo3/dEfsYrHA//gf/wN//ud/bnl//PHHLSBirBwvLi6SgBGXhY/JNI4TCELWkDwMl5N/iS95y/BSjlBZTE00J5KclLZSCg8ePEBVVfjss88AmDosisIDLiWFlAyhtiIpd0ywCtiAUlLKQUD5YrHwFG1ffPEFqqrCV199ZY8ZJqsZ2YZDCtXlcomLiwtb9xL8knXXpySQROUs7zQOxe9bIOeOTSF5eBlTvNVqhaOjI3zrW9+yCs7nz5/j2bNn1vKYK42HkFLmLy7XVEoRng5DOvI52DimTTlFDp/reJt2dwSWqCqKX8ChC5w3QAhf02xaBesKdV1jtVq1H7Rs7Acl6/XGzrOm3XWBWY64aG3++Lssn1Ceu+79/dXVXyx9zsP9/tnFGv/9yxuArN+U8b2uCsxOCx+gAdJVKMXUcJaFLePOO/Uv7d49Pw3oogXX2mefpazW2lrxeZaz7A8a+PKPv0RRFv4Rx7VGs27wwW9/gG/+7jdd/uGe3m8OZjlPB+opF84CXkr5fJXyy5U31cQzBQJzP298CMkaytNQEnVv06Q6Vy6MN2Yq+PfLgs1RrazWXR5X3Mbl1qEeuAsXvwPOynQ4QEtgJ5UJywO3trWAJ6UVusvVSxCuHBS8+149kFfw88qtDWvTUAysFX82PLMWlhazFrgVPGwbVcp86NCOD7rQmD2aoTwpcfPVDbABjo6OcHR0hLOzM1xeXgav46B+Lk8eub297b2GglOuUpnP23KvL4nSXq1WXho582rfWuo+6hX6iAMGVWWOjl8ulzg/P8f3vvc9PHv2DJ9++ilmsxmqqrJztgRq+UeaoXX4oSqn+QeDR0dHePToEc7Pz3F2dgbArFG+/e1v49WrV1BKWeA2du3IrignndheaaiMh6wD4vUFmLytViv86Z/+Kcqy9D4iub29xe3t7VbphfYSU+vgpiCpU6C92xi9UaivLhYLVFVl9yuAKRs6OQtA9KPxXVEIoDzEMWZq+jrk8etIsfa7D53WfaJtMQ6ibcr1vvfBkPy9xxTveiGRQrVjyrZc2hWAItMg2jat3Pz2KYhlfM6jLMvgkZ+hO9Ro8TtU7l11lCFlsUvgTC68xqbXB8SO2UDtc9MVA2d20e+2zVNqYxpSYPQBB5LnGDlj7Sk0pvS5pd5zJj0JvIV4SoAnJLsMF5Kpr52H+oWMl8pPbriQTLz8y7LEfD7HarXKatN94zcvH65EofZ3dXWFN2/e2LB1XaOqKjs2kyIsF4AOyTP0qKgcvrL8+kjWd+6YlQpHIDN9bS+tDMbwDIUlnmMpNz1SepAF4Xq9xvX1NV69emWP/OoDdnk9rddr3NzctOBaEbxzdch6iyv+SPnAP9y6S+Ufycw/KiiKAufn59bq6Pr62spI5ZFDufO9BA+3KQofiB0SjtAC8vdBRg58GoBWsyOLawAKZUmArII5rtjw7M4L5k9rc9wx9ce6rrHZmD9uEWuOJG689LsIZH9+d0U+b7/cGg28WdXYtBaw0ECjNV6uGzxfN+4oUgvAGCiJg4npxP0wHtDWAlAECnXeOdil2bhMgFPj4hCwqpSxglVwIK0H5MK/J9bmgf4aYH21diBso9FsGuiNRr2qcf38Gjcvb6BgymXxcIFqXlm5QtQBVW2y4ztSdlwG5EmQNspPBdzHikrxZPumOhWAbJRHwL9zXDHGr9c9q9IE/45cYGkHeFA4Cw5zniF+mqULV/4eICysV730+HuqzhSTl/NSIh5rP6nfSilrDa8KB4QrpTqgB9Bdz8/nc1RVZY96ff36dTA8xYlRbD0Xm+tSIEMICAzJH3KP7Q2k3y7WFUP3KbvUedB65ezszPsAM7RH4nUl/Q9dgezP/c5QgNYNALzjlylPMcOFfdEQ/Rvgt5u+Phlr47n53Ue5hGS7ubnp+FE98Y/Zc8oulYcx/axv3NhFerF9f276qbJK6TdS428f5bS5lD6qTx+2q7YZGuuG9J+h+/+7oLvcT39daOpxYFc0FhcI0dh83VV/GrKOjdEU2GKKxpbNwVrGhhrc2AlmVwvn2MJLUuhoyRCvbRtxTB7+tdTHH3+Mb3zjGx35fvWrX1mrGaLr62vvmEx+zyan1F2AfbK9o2npLiaNPnCtL+4+ZOZtlDa7RIvFAkdHRzbcy5cvvbC5tM0EGYub6ktSNm5FTwqdmCW8vC8xR9bYBJb6Er9vgR7yC901mssntREJjbHyfbPZeF+fSzlCpwCE6iPVrmUdEc1mM3uMLAC8ePHCy3voI5pYPuSJBqEykeV8V+MxlS2XKWe+IHAHMJafX331FRaLRe8Rf7ENa2pTObRseLuQ7YPPs7IN0e+qquy9cQR0vnz5Ev/1v/5XG3az2di8ho6r4m35zZs3+PLLL1EUBU5PT23ZxfoVXzfljFP01fbt7a13hPjYsT0nXqqNaK1tH7i9vcV8PsfHH3+MBw8e4L333sNqtcIvfvELe+wzt9IcMhZrAYBqAcL68XuzxOJyRI5+C5TOjwlAtfK4cIafeVfKvDeNRlGYJ0BjmgMcCSQtS3Pna1mW9kOHoijbMdrxd2Cus7ynDwjqmoOyG2adX4OORiYgmCtnzR/sk+Qjt1jZca/Y7/6yj7trDaxqjf/Pzy/x/NYcPawUgEKh1kB1XPkgnsXl4qCeYUwP7b0DcNaO2vnJ44rtu2aAHf0mdw4k6TZe0SpJixaQJSCWWc/Ku2RV046fzDJWl84iFg2gSgU90yjmBV7//DUufnmBZtMACvjb/8ffxqPvPvKALKVUFMS0x7kG/Fggzy8G5tokJD/2jFkvR2XgdZyQcSiQ7NUVSysEyNrxmkRg1ptKKViQXsjj3d0q74aNvXOAVIu0tZMRyqUprWVt/ngeqNwDsgrB3ZOGOjk8snqUFrc8bZsfpbr82J9nEQs2p0uwWLm2Z5/Ux5TyLWOV6XdFWVgwlizJ5vO5vScecOtsurJAa40nT57gyZMn+N3f/V28evUK//k//2fvgz6vyDIU+6mrJMhNrp1C82VMUZ+jFwjpfHh6uVa/Qygmg9Qd5axJxq55Qnu5+Xxu1zC8HHl5pNYsEgDrq999U9M0uLm5sfvTZ8+e4cc//jG++c1vevm+ubnBV199ZT/kur29tR+xUpj7SmNl3wfINYSOj49RFIUFXgGz7iYL+aFEPKQVLqecvplbNtvqiHOPC84ZH0Jx+MejMbnpiHtuOb4roj37FDr6MTRmbCYK1XWfvuGugbpDGK/vM8XWDbyfSP0eAKuLOaTyPyRZtqEhepYUDdFdcl2jTHNoujFscewYOAqM3WbAzc3wkIJJFWTf5Mf95eKV/HdJfLM1dELJ3RxwoqNEeNzNZuMd+ShlS7ltA1btcxEZA7AOjcYuMA6V9l3euaB/6t7MEJAif+fkKzfvOQqJnDQ4kEmb+fV6HT26JpWfoYD6EHeZtiS+cJIgeihMiPfYdscBKjr2J3REcQ5JRVRsfOVPrmCQx2XzJ+cfojHzrFT4cP8YcBlTXOXKGAMDY8TbpTtG1RyP++LFCwvGEogpN42hfHFANDT+DinnbZRxPD2qd552XdfeUYS8XYXk5kfvXl9f4+XLl1aRm2tdEJuPQu2Bl+U281gqfF/7j/nzMuVHkYfWjrIucvPQV5y5wwcPpzXQl3QsjHQ37wZt0JrqjMYaDaUaNI1BFIrCALT8ox2lFMqya5FNdW+AVs0sY2s7hvn3xHYBWEJknEy5ZRULyOsewd+5/gDw8rbGm9saGsBtrXFRa9xojUKTBWnb9gsVBfOSJMAiD5Rqf1tQjQFoJqcC5IL2f6sWUAUDhkRYDe38GmdFa+MTCEXWipo3LPYkMK4FUBu0dxDf1PZezIvPL1x+DVqG2dkM5986zx8rsoMNHHtYeO+3XKMJ4DULiE2JEmh3nkWn75EGZGPxWTuyfTqUBsmZ0QelRWpI3s5HAEwWz1/6sT4kQeCgBS7/nZJVhPPKLVF/FsAVQLcFlXl85fMiYFa6y3e6W/Hq6so74rNpms5YDJj9/KNHj6CUwsOHD9E0DS4vL5Pr1b55PBQuFD+URu7cH9un7XPPm9p3jd1DbCM/X0PVdW1PQQmBqXJts++yi9FQHRatC+hkoF/96lf48Y9/bK9v0VpjtVrhs88+s3mWa9dt8j12rT42zi7qaJv97hiKgYL8j9xyKaZniYVLrf33rXNK7XvH6JJpfc0/qD49PcViscDZ2Zn9KHuz2eDq6sryvb6+xs3NTeekt9iph0NpKuBhbN3JdjdV343p/YdiEKk03tF+KRe76Kvjr0Nd3iU2MnS9MISGhB+b91ibGqObndQyti9Du1os9t1rGiKp5CY6hAXtrunrkMc+GrOQ2HW5DV0wvavHPJIAgdbaKj0Ac4QnLXD5sUgUd5uNbqpOcxYMfbw5/7IsvftOHzx4gJubm859mTFFyCGQUsqzAI1Z8PUtIFIgYghIIOLWCICxKCRrv1hafRuIULoxt7smDuDFZAuBtfI3hYuBWhx0HjsOE+BK9+n++Mc/9qxHyLKUyxU73rcPVB4qG1HuxlOWw3K5tF+aSx4EaPWB1gS8lmWJr776Ci9evPCsZYfIHtpsciCYPlgAELRYCAF4uyb5YcWrV68sEDvkqO+cOm19WjBvbJ/mCEQYTCVSyr3Tbw60kjvxNPkAtObzYIOmKaBUAz5OlaV5Lwpl21lZllCqQFl2LdepDZh2qVvljw/GUputa3M8sXnSRwFkpUt50oyvK9dYsTt3x8MPq71wxl97YUK8OZ8/erbEHz1bQpUKKBR0yb6YVqw8BICUQ979nL7I3Sf91pHf3I37qYB77E+Fn3wtpHULTLUWtRyk0lqjUIWJ0/rr0lnSfvqfPzV1v26gG416WePJbz3B7/zffscc72xFZgAWuk/yp3K276G+nKiKUD1x8FQeR5wLxPYCsDH5eD9veYTaSPDIYeHG68qrywAAKo8F5lajBMB7QCgQTMcDKwVYG8yLiOPx5fGVkKf9OMEUGfvAQICjHQvZVl7rxsqfg66dP+4v6ozXdQecbf8IuLUfbRTK1gmNhcvlEsvlEs+fP7f7EPKTaye6i/vhw4eYz+f45JNPUFWVPVFFWnlIkus4fqIFufE/crN1oXV0vcjnSHkCi5Qh9c7p0NbKUxKt1wCzd7u5ucGf/umf2vUb4K9n5AeGHJCVYNih7O0kaW0swZVSWCwW+Oqrr/DFF1/gj/7oj4J1LS3D39HdUKhu6LSfsZawQ9LaBU2dTmifGdtbhq7Ims/nOD4+tvF++MMf4tvf/jZ++7d/Gw8ePAAAXFxc4M/+7M/sOP+Hf/iH+O///b/j7OzMO+mNH3U+JW0zVo8Bh6fao8d4Sne5Px/C89349I7e0XAaM6bk6F+nliUlU0p3mhrnPDD20Ba7+UqwYbIPHVjHXCI/Nmwobm780N2XADzLuMVigfPzc8+fvrCSxxRvNhv7hWJMltB9a0PKa9s2NzR+DKTJLecYEBEK1ydDyF0qsGNWgqE0xgxWuXQoY0Mf+BYj6c8VFXQnKOA2vDHLy45CMiFbSNY+UDRGfXXNgREKT+CsbENSeTJ20knJN5ak8qdPoZTDT1IuCLptnnLicyUK/4KV2iDNPyFQM7bo79sM5LbLIeNcSBEXG2NjbTfVHkMbIwmy0p88gnuoPCGaYvzrW7jJdsmVbNxNbiDleBSqP2eN6I9voTKRafK2xtsrp5Alr1QMDhlvpiA+X5KlyXw+x6tXr7DZbOyR4AQky3YoKSa3dA4Bh1oD45oQISgxfmH/UFjz1NDaIBL0dMcW8/VFDa0LABso5aywDXhLCIOrW63d3MLvuOb9ku6K7R5JDMsHFnjVnvx+eaAnTD7F4r1e1fjZm7XxV8CzdYOmbEEUpYACKBQD7Nhv45CTOAVlcRm4ZPkywIaH9/q7ZnEkgKUjlrIKzgq2PY6Y/DxATgn39rhaFDBuBKBqlof2z/YnVh5kIWvDKuD2zS0++2+f2XTe+957OP+Wv0/p0NRLUiWeQ9JR8lWNl0+0BeLXB1Zy9zDbLoia/Tslo3LPGKgak4e3Y5kvw1538xiQxc41rQwUN5Zu35HNkrxjijXrcxy45eUCNiYwv+A4oWDHFSqL0MdCNH/T+2q1wtXVFZ49e4bLy0t8+umnePnyZWf+jhZbYL/ZyXdgvUHukgffV8TWhaH0QvfX83VRTGG+DcXWXOQXymsfTbmuCV31IPd3fM0S2nvmrN8PhSgvpMOKrc1z2/Y+aag8feH79J6h9f/bSFPrs3J1R2OV+7n7yJTukev8lsuldXv06BG+9a1v2atWAODy8hLX19d2rPjpT38KwJ1+CHSvyBurLyUa2nZjbrF5p093keIZ459KLyeNIfJsMz5t04/H6hXvivYpY6pOuCGf+eC4K1fIsvzrRHG9R1j3mBt/jByH3ra30SUe7J2xnO5DJRClFOQ5ceV7jiKcwlZV1XunytnZGT788EPPjd/xxen29hbPnj2z7yGwl0AfkoXf49dHdBfeIRBfBMWIb4Z5vKnloGfIgicGLOyS+vIY23yPoV3lS26uJQBLbT8ENki3kNJ+zCJsSFnl8ObtU2tt73Hk1nUUJqdOYwqhMbINodQ9MW8TyXKTwDMdJ5+zGAwpsPoAydQ8FVOchXjHeMXS4gqkkLx9vPlYw3lRu46lK/usvJ82lecpKMVP1h398Y8nOMn7oUNKU15O3KpClkFq7OLjAOch60DO+1ImqTzMKZNtiSuu1+s1vvjiC9R1jbOzMyyXS5ycnGC1WmG1WkXnr1BZxjbpWhO4RwhFmnh0Uz4KoeKgcL5fNw0/HIGtgLtD1gGwTn4NU0x+PWlNlrFlW79cQerC+3xcP9TagbJkMcuBWLKINWnxp8wPL+NcC1n3PmZq0hr48rrG//sXl+0djwVQAOW89AEV5QAlS0Oas5SNwB04QIkDsUqp8Lt2YBGBsuTHw2ntwqBo4xXsyOHWzT7pLySzFr8jz0IVFvgl8LdRjb1TFBWgSoWbFzf48f/zx2g2DZpVg+//X75vji0OFGjHLVXmgbqxfVzUX+h46ZRV7CQWsSlyXdXyDR47LIDaFHgZ4hE68jgoA8+TTqcDsDmdeIR4iegeQCvqIpIhn2eAX8dSWGnfn/oc/W7bKv/zwinGU8oCNz5498sql7adQ5hbURTQhbbKc9pT85N6aEyl+fj6+hpVVeGnP/0pXr58aS0KQ6dpRItPrDmIKC36zcOG1kn0LtdUnF9s3pd5jIFPU1EuOHFXYFdsPcbd5Fo3Zz1+qMTb9WKxQFVVKMvSu6uP7pfNsfjepZy7XK+O5X1X7fS+0r72HyldS0yGoihwdHSE29tbawijlML777+Pv/W3/ha++93v4vT0FIABa4+Pj+0+58/+7M8AGL3BfD4H0AVjpyK51wzlJRWmb885ZVvO0Z3wtIfS26yjelsopEOjq9yIjo6OrEU5UdM0eP36dcdQ7W2gVN/lNES3HZsjU33960qyTJJgbKoCdj3xxxbMoYU6V0z28QLcRc0hXqFNRIhSm4YQqJfDN7Sg7gMIedhQniR4SF/TyjChr0IkUEqbRE4yzfl8Huzk9KWWlIUfa5KbV8lbUi5wJSdhnrcQX34UI4XZph+E4vIy4MfOcqAtJn8ODRn8cjetU8UbEz6XX6hvyc2tvKg9Vb+pMWmMfEMpBB6k5BjSVkP1FwMrdjUP8LG0LMvsr9OGbkxTSgytNd68eWPvPOT85W/53qdQCqUr64hv5GIgowS5UhaPIT6xMCFrhVj4UL766oHLzYG7nIWfXPDROykhYwoqLnfo6DzuzkGlWF5zaKiyj8qAFv/8blhOZAGc4i/LwYFpkCk57AABAABJREFUAYAj0C5kGUs5ZVuTcnJFWggo39dCnB/r+OLFC/zFX/wFLi8vsVqtvHGF5yk114Zk74KI3d/cTWuAWMjfMqzx42hGaCzxgVzOk/MlXu64YsPTZLeBUgUA+qBHWT5kEevGCJkfB+LKO2HpXf6mcpDl6//2yyxUlu2vYPl1w4VpVWv84Vc3uN40gFJ4eVujmBXQCs4aVjlgpQPsEeU26W41WoDLyKtdOMABZvxdM6CLwvI/5X5LC0Nr4do48It42mfrZ3kXjq9utANUZdPk8khSQAED0BZlYdMjd0rv2V88w2a5ga41iqrAJ//0Exw9PgowjBMHUvuOjPbGLQHAdtwTrHKB2KD1ZajAeHmSnDoSlsXp3Gsq20orQx9oG3uGwqbc+NjPrV49mcHmByGrF4Zb3qbKgAGoXjmwMJ6soTQlW1GWNB6Eji723lX3NwGxqlCYPZihmBfYXGxo+LXp8TUS4I+XdJwtXWtA/kMptReVa4bQSTsUjstNT3nFB8Wv6xqz2QyPHj2y4AN98E157FvjjKG+uVxSzt5paJn3KUJD+4Wx+oZ9KjyHlq2MS/ssc+f8xvPj+pdd6x9DlLPW7stvjs4xFO6+0pg2m6rj1D5623Y+VHcwNo3cvXSKR1/cXfX5GN8hMuX0lSH68lj/SbUNLkvo5LFYWhQ3tTceqiuZmvr4jp1HxugP90WpcTU2xgLw5pjFYoEnT554/nVdY71edwzVVqsVbm9v7XvMqvZQaF+yxco6ZqCX09+Ibyr8EFk4vz45+vgP9Uvpj3stY6ceMIYs1nIbUKrQY4v5XQyEcvMQUxoP5ZkbJ9Tgpdt6vcb19XUnDQ78Ecn3kGWs5F9VlT3+j0gphaOjo07c169fewMahZWyxfxS7kPrl0AfXt4hBbhMY8pBToIEvE64lU+MxixyUpQDKHEgJRQ2BYjsc8MhF0tcZtoASkvtsRvsIfFywauh/KYOu2tKtZOyLKNfmIba3djNn6TNZuMtwmLHwIfkGbpooDg8P/LeGd7XOPjB0wttCjgPnkZKxhDQFpKZkwwTGx9jm5UQ6CXTk8AfxaFTBHK+nI/NMfyINK4YSuVlaiJZaLynL5vHfKjE+QH+/BIqa09hLtYtkmJlSOUU6of7KkNOXJb1eo3b21s8f/7cG+t5/4odcc3f/bzRMbscXIyBf13rV60BWSQUV/rFuqsfn6fRtY41ciuY44p9Pk0DKNXYcDyfReG3C0rTyerak7N69UHZ7p8cr3g7MvLH8s3d+obasL9iMgC3LRj78raBqloApCqglANcLBhronvPPrAvkLwQ0neT4Ku1RLQFDt9PWje2ZRkC0yyYCgVdaMdbhitaHoUAabnVLpOD0ota1fI4yr0X2lgFamh7l+bL/99LPP/L56iXNcp5iQ//3oc4eu+oW25jyjrXLyccr7MMIDY6/mnXhpJAK6Wp/d99IGX0iGLBUwKYsfDR45GHhKXXjDVbENyl/ComvxL9JhRfwT/KWJYnGE+ZFoS7zBePq3w+FMeux9iYMjuboTwqUV/X5m7lxF6Oz7U3Nzf48z//cyhlPkbj/mP3ejElJuk3+B5JntzB5//Ufp3WV4vFAo8fP8abN2/w5s2bzseXcu26Cxqyb95GBp5Oaj09ZJ8dkym2VzqkPR+R3PNQPuUHcaHw95GGyh8LP1Y/EYqfI1MOyDOUV6pfyb3nNvWeU1Zy3b/PdpYCJcYAB7vu531lk7uPHEOhPRlPK6VH6OM5RK8R2+PyMPeJ7qPMfUT5kbo7aiPcGGw2m+G9997z4m82G7x58yZohMbnp9ipoW8LTYHF5dCQcTBXnhy3UNoxvWwOr1jYVHgPjI0NLPeZYorMPqXbVGmn3t/R4dF9raMpFqxD6b6WVYw2m42dZKdamI9ZjOaGkzLxBUJRFLi+vvbARCnLEAXD0HzQxJN7ZHkOrxxKyZazgZBKEf6VviwD2edCCpUYmJkjmwEyuoBsDvWll/Lnmw364k+eChAC33KJAzJA/zwpyzV1n5ZUMIQUin3pHR0d2S/zp2i/Y4jykfrisq8OQ2687IhC5UEbzZiSVlLMKkfW8z4VgqH+yI9t5+AhlXPoSGaKn+rLPrDIkQkHBspo7t2Bpl1UwIXtFruP4BE/B7z6v7vxunOcyadCURikoGk0lKKPAxyQbMI5eem3BFrD4GsXjA3zkjJTOXf95e+cJvaHX97gZ29WQKFQA7hRCsW88O6FtaAJWHvi9SDBOOmPgH83W967tV5loCcBTAR2cuDT9i9p2UpPMBBVu7rWMNavFrxq/6zVrU7wJIC2cZaCZI1JT6010MCG0Y12d9Vqd1xxA/dE0x5trLSxxG3L7S/+X3+Bs2+c4W//H38b89M5OjTRUjRmTSvrLgi8JmTonR9Z9++Asn5Xten3WqNygJYNSaFjifuOHA4CuPDHxV7AN+SuXJ5D1qkda275wUBLdDR3SBZZDtZqmOdfMZ5cBuXvrYLWxsofG2QdWJ7ij8YWauuxNbacd+Xa6/T01CoWx+xT+PpWKWU/QpMfpmptrj6Zz+c4Pj7GbDbDs2fPsFwukx8Ny+OHKex6vcZsNsP7778PrTU+//xzOwfv6ijaPvBHrk9ia5WcdczYdc7QeCmg9j5SKP9vS95yKLSHSYXbx3p6rE6C3IYq2cfkbUzYGKAWk0uGnwIgkCdgzefzjhX4xcUFnj9/jufPn9u7ZGNjJP+IXOoPpqAUrxiGMPZj4vtK93G8uo8yj6V96iHeUT/x8S+15hrDc1uaik9fe4taxg5V0OfESU1w21Afch36YoFPUFNbPN7F4igXWOEK2RS/HF6hcKGJn752DSl9Ywr5IXTfBtUp5H2bJs4hbSA2WG+7QAbCluWxxWWKUqCc5BVSsIwZewFf/s1mY4/hjNHYdhiqA9nvQ8BNTnqxTVhsQ9HHMyeOBI1D+QjFDbW5EO8xG1neDnL7xxigNpQ/Pj/SuB26LzRnDpKyh+LyfkDP0OYtpw/JvOVuAnk9VVXlbWJz7ljehlJlw9s9z1/uhjilXBw6ZvaNa7F6kPnY5yI5tBYhZS8dn8zDymOhc5QZJr/0m8rEB0C7Y73T+JMlq9ZAKJmuO8V3/kb+cBz328WTMkgUxFjJUj6U/R0rBpdvehqLWFc+IfCVy++sVLl/yC+M8qTI5K1uNNa1gUq0Bj69XOPPni9RzAprkVmUhQ/CKvjAm3wPJNUBXaWb9v08N/6uIk9AVlcsy+4v5Kbhjh5m/loL4JbumQ38aQhLWS5rw/i2v5VqQVctjituNFTpl2uBwqTRaHz1o69w9eUVvvu/fdfUkQKKqjD3+E5NSjyFXwhUj1pGR8In06b+3ANuDjleN55cHNRNHlEs2ik/FrkDcvI5IgewFeGSQHHLIxpe9K+glS797FEEBUHnmExK1A/x4HLxMYWA3gDF1ln0ez6fo65re/f5UOU7jc80N8q1Hp+3aE24WCxwfHyMFy9eeGlyy8bYOoTLVpYlTk5O7N1txCdXnzGE5PojB5Adu3YfSjnruhQoF9uz5O4nD40OUea+fhjyy9Gr5eguY+v4sbqCXVJoT9kHyPJ4OXkbqjfM0RtJtxx9NR/3UrLG2kcozdBpjtfX13j9+jVevXplgVat/aO7SQZ+OlTOiXpShlR7jMnfxzNHLx1La58UKoPQXMbnkiF6rUOgXcuSo1cYKsPY+ZXrdKR1K+3/eZ1LfWnu9Wj3mabO35i6lWvMVNhtKWdcp3BTUyp/vccUfx0oBiTE3oF4RQ2xpOGK4mgFVVXwaGB5oXRs0S3dlsslXr161QkXutNVnpMeIz6AnZ2ddc5dr6oKjx8/7uTjr//6r60sWutgXrUOg8fcP7cT9XV0TmM7/ZA0hhC10UOcGLaRqw9g2Ta9qcpLyiT7m1xAj5Vvm80Vj7vZbHBxcdGRk2+Mxi6Ah8iYAoa4O1fkbDabJLDD+Q4FlFLKNsCvR542gTSho7NSgB/xGDomcGCIyxcKRxs4Hi6keJLWfnJxKsuSPqLh4FUobEi+ULvuKwPKy5jxM3Z3mZw7CFyL1RmlXxQFqqrq5DtGvF/JcaBPiRba7FHdkBVnSIY+gDCXiH9I7pQSI1Tnsf59KMTvLAX8E1K4eyjf1BcoXPdeWYCiuCdHuoy7Ut2n40NxCeB1QKjhFdpEuPBGbsfb+EvLWwJ/BXLC8hIbR0JV6YpJHtnsj9ExNxee8+iWZSjNUJm3uRb5Uvjpq1v8u5+8gaoUilmBV6sG1VFlQUBVtHkslGVh264AbXgy0iI2Br5FQTkNB9LoNhwTXWvdsZK1YGnodxvHsmx/cwtY60ZtXrhxINbyEn8WgAPs0aqepWyhjCWshrWK1VqjUC3I2lrP6sL4UXhdaDRlA107NyhgdbXCH/w//gCqUGjWDT76nY/w/f/z98Nl2kchkNSr1nzFYwqcH3x8dSB+EPhLAJmD/XN+86g96+8OSNw+k0cFB2Sz4KVi7jmk4OqX9a2Q3PbYbu3k4jw6oCmYVS2NDwrOjZeB6srOwUalWkvyNqwqlC2j0EkTsXmYrh0aM89SnKZp8PDhQ5ycnGCxWEBrjV/+8pfYbDadY4lJ96CUsidNSPlCHzHRb1Jw0lr/1atXNg+kS5D7lKksq6RMofLlacu4Ms62soT47UqH8I7G0770LnLtJRXVh0qyX0m/UF/q24tPqe+SYAyt429ubqKnTw0BJXPyk0N1XePNmzee7lVrjR/96Ed4/vw5/tt/+2+erpbn6c/+7M+glLIf5VBcyu9Upzz16ctlfuRHrzLeUF3C0HYxdiyN5ZHvz4GvB2C3K5pKB6mUuQqR4q/Xa2tBrpTCD37wA3zzm9/04mw2G1xeXlpeL168wF/91V910pJXM5BbSO77PHfH9DexI5hj4UMkyy+V3n2kKeo9eUxxirYBq3J5D1UoxtxjCkKpvB06mU7dkELphAaCGKWUpuS3Wq1weXnZSXc2m3XS56BIKk2p4KevXIlmsxnOzs46+VgsFr3nrOeUcW497GKQHDuZ9PHb1YAulf4p2kaGvo2s3ATLBZYc3GT8XW9QYn0p5h/ajEw12YzZlDRNg/V6nT12yXCp8o3lPZRWLjAlZQ+1l1QbGsI/1AdCG7Ch5T6m7w5dxA0Bu3L4peq5b4Mt5QqFDYFbQ/jG+IXcpQyh9iHbTij/IV7k3id3XxlIN6l8kW0z1NZj/SzWL1KbXlkmoXVRivo21Ie42E6Nfak2SpsSKjN35DOPy+OYd+fv3AAOkBq/eB8iOYO58dLUmsI5d+PGw5m0lXIyO8A2XV9cFlm1sv1Rfv2n7++HjeWvm346DpHJT601LlYNnt1s8DeXKxSz0h1HXBqLWA6s0NOyAGsjAnDp+Av3oFQShFLOTYhuLRLtu2KAK/stgS/7lL8h3nv+tI5YxjatbAUDX5XyAGEOBltQMsZbljcPr4CiKaBrjde/eI2mbtCsmv8/e38Sc0uSpQdin7nfe//hjTFkRGRlRkZONXAoTt0UUUWxS91Uk2iitgIaELTojbjVQlpJGwnQolsrcdcrQQsJENED1BIgtqSGmkSxBrIqk1XFzKqsiBwj3ot4L+K9979/vpObFn6P+bHjxya/fu//v4g4P374dXOzY8cGNzt2Pj9mOHr9CJefXroqO3xwiMlR+ffF2wKmEcbD01l+m/DE9JIqWxUraXO2OdZkKc0/m1c3NKXLK/t4KCyVXss/R0732ur1FfS+Neyf4pruAy4PeKYogXURn19L1nSSN6fJZIKDgwPcvXs3eJyBte1Zr/QPpHcxCa2LjGk9US4uLjCfz9W0sTBed9tQbn7a+i+lP8tnXFb68JN/IDZEX0qBF19SGWl9aiywLUePp2tsLRGjXHlia4YQlaw/Y/lJfkNBmFyij2uJ6rqGtS0Yq+Vf0v4h2Yasca21WC6XWK/XXrwXL15gvV7js88+c+Ot3HHwxYsXTk7prFNCsXLKfqnd8w+JQrtKlc5TpXbWVHtu8x5pZdbsHK8C3bZ1emg+j9l16DkHDeU233fv3sWbb77ppVmtVjg6OnLxTk9PcXZ21uN79+5dFXwN9anbUpcpitnSUhTr52PPEaU8xiLSzWLPYzphiELlG+QZGzOmjtERSxXs2FacIYVGW0Ds+wsXLndVVap36mw264GYy+XSO3ga6BY42qTF+Z6cnODFixe9fEIDIN8+iACeUBmAFuylr1yJDg8PcXh42Cvf3bt3cf/+fSf/xcVFj58xJgpGD12MaQNpaKtSHidF2ywOJeDE62LoQi03v1hYTpptZMjJd58ky0OKe2xgnkwmvbaL9amSyUmTbyhwx/nGJo+hbSoBnRySQBZfSISUxZgiEKobAlLke8XjyzbOabMYgBMjUiAluKPxl3MWHw9C9U1pQvJp3tx8iyPA3/pIqxsJ6PG2lJ6DqXEldJ8C/ORvzkPKlmqjpmlwfX3tvcOxPIYSr7fVauXagofzDyr4c14+Hpa7JZWWhqfT2lOre/lM1jPv07Lv5sg5hIbOI7wtgE427hHPPzSzljySqL2w+W9Bze6e+APGwAvn9/xsV54GoPJwsJRf4X5Tsbum6sKJl0xDv7k8/pV45Og+xLf7zbtN10/8Z/q9jK/z7CiEoBg8vVzhv3z/BJerBtO7s3Yb4s22xMaY9h6mO6OUKpKDJhtAVF7bx91vd59B0gMWSl1JT1cOUjpPV5HGgZ2b5z2PWKD1NmV83TtvWVhj27RNF+b+q1Y222y8Z6tNGtMBLdbaNl6zed7AO0+2qjYeshvPWH41tYFdWzRVe46sqdp7UxtU6wrrao2nP3yKf/6/++dYL9Zolg3+nX/87+Dd33yXVaft6jjWJLnDhQn8DkbfYnwT3dl5WloZTQH+Aq9qNsiZLWI+SJzLO3vrZf6cDYfuPFwZnfrjJq4x7TvrzWssvWw7dxbyRjbXHlxuujfiH+j3FxnH+HHkHDnEq6l0LiTA4vj42N07cU23e818PnferKSfpI5D0WSZTqdYLpf4i7/4C2drKNW3Suf6sQ2mOXUs1zekS9+9exfHx8dYLBbOS6dpmi/c+YqltGtbwZjr4ZK8uE4t9fyQ/ec2gT8la7xcmWNrPkmx9TmddU3xptMpmqbB2dmZW1/l8AmFaUfdWWuzHWlkOm57BYBPP/0UT58+7ckm76UjjBxPd2Gf57YvXs8AcHV1heVyieVyGR3bU3Jp5ZZ2G+KRe8RRLDxWz9JTcCyP4y8ipfozhclxMjQWlvCdzWa4d++ee/b48WP3cQYR6UTyPV6v197HHTdF286FOXbVUP/WwkNxS3SaXeMAoT6mUWxcCtX9UPmTvWnI5KdR6SRQUtBYh0wNtjytNCCnaMyXIJZH7oCVM7HwL1pTVNd11oDDX7T1eu22B+AU2vKYAFrtS1zAX8hoC6kcBSPUThoQEUtTsvAaSlJhDdVLLK8SBTaX57Z55ijioXYduuDOTRvrP7kGAQlOaCBGCgiK5aeVKbZoDOUVqpsYmJUrJ38/QyBOLL0mYywsRmPMTUNBndz0Q+ZE+Ts3j5K8OPjH08fe8SGLPK0MpW1R8r7I56Fw/iFFqbIr48v5KfVe8DTGGBwfHztjJwfENWNNirR61tpUe49jcueM1fsyGG37zspyUNl4HffrhNogxJ/zNr1woANwW5Z6vFTR2njax1I8Lect8yEQDWg9ZQHAsN+cdLSEZOBy+/VL5YWI0+OklVAJkzJtfhlg1Vh8crHE48slXi4brNCeT2oq450L610ZG37fm3MN+oAsl0RrrIxXwG2pqgF5vMrpt2zKzdXajdeplsbCAc9oRLhlYRu+ttrwEksj7hlrmg1QRSAtWJoK/SvJ1Gz4e0gUK/KmDKYx3T3a82KbVYOrF1ctGLtocPLTExy9foSH7z3E9Nj/8FMD2PrVm6HrlQDtrwLpr3E4LvLjF4G1A+Lnpk9664o4Emh14Kt8Tu+c6cfxsuBzCdviWMoh5+fQGiqlt4eeyflc6iV07qz80FuStd1HS/J8WU2GmMGP9C1juo+u+fPUzlkl1M1v/R1SQnN7Tp5D14+kZ2vbAA6h2wLK5VKurqbp1PumEllLwkP5hNZecn0v6ya0Ttt138hZ86eeleaTSzFblGYnoTw0u2tqHSz5DyWZP63/YmXnuyhqa5qQ3GP2DW4Ls7Y7h1zrgyX9JWbzCskheYTuc3hsS9uuS8ekEH6QynvMcSTU9jG9R0vPib8f0pZ/dXWF09NTL35d197un3x7b85Tc9JLvYu7ol3OhbG21RwxcsFoblOTPG7qw7NtcYEh/FP8bh7aj9CQibeUbuKF4nmnQKpQA3KPJ85Py4NTXdfq11qhPf1TRu2qqrwvoS4vL3tflxwdHeGtt97qecYul0vP02TIC7JNH5EKbwqk3odCy/PQtom+qf46Vr65dSiV+xgYs63yn/MeSeJehVJx3kbJDe3Nn0NcDjJuEKiUSpeiHHBL3g9dNHFesQ8kSiY83k9CHqYaLy6TjCfPaS0xymgL7RSFlFLe7pJfCGjS5h4qL50DVte12zIp99xUXtbQmbdaX0n1Lx4e6geyDqy1PY91viWc9AwmIqU819NUkyUUpr0XoX48nU7x3e9+F9ZafPbZZ7i8vMTLly+97XKBbkcP2rIq9e6l+hyvr/V63ftqnPddrU14nH0YgsYkrZ9TfREY3h+j6d+iaTh4y7co7oBOekYgJ20Z3OXFx5Owx6tE4/xxqNuGuL3y/iBRPKIOmbGW2tQHYrtm5mNHr8a8MC53Vx9lYakrJyrvxbLBf/2TU5ws1rATg7qqolsS89/0zHnCyn5ufMAtanQPAI3Ss5V7vnrvjNV5xDxjvd8xz1jyaKUxwcL3coXtzn2tNnMEnQtr0QG0m65DZ8y69566lOYhu269YKt11YVv4th1my/nw8+VNZWBmWy2ma4NmmmDP/+//zk++Gcf4O/9r/8evvKXvhJti7HA0uCW1PtQ07vXVQTvFwQtzaM3JwTKoaWX12h8fmYrGzJD3sQaCNv7mEHI6t5XXjYWwfP0hd//3Hiz+XfnL7P5VVvnDyVtjCIgdDKZ4OLiAtfX11gsFq6NNFuBMQar1ap3riGn0E4eUhZjWi+10DpF6rZaXiVUAlLw+7EBC8qXdOtXSUcai3LXiDdpo9s1yTUm0F8vlKwRQ3TTevjQMsTGv9wPNYzRd/XjZ8Vqa1K+BTCXJcdWWkrau8D50TFyoTUroDvajDFmlpA2lqYAl5y6i9WPZvMI1VGJLS2UTrb/53H8DrVJST/PtSvm8EvZTKy1nhMY112MMfjoo49wcnLipanrGoeHh+7+k08+UeUjfUiGj0k5NhupT41NoXdVs//VdY179+5lef6v12s8f/68NzaN9REa0RCb822iKBg7ZsGGTlY5aVIGdW0LiW2ppG5yjfSlnWmsuKnJK5VPaqDiRvAQ711PZqFylNZ/bp0PAZa151Ej357qblf5DeGz60lRm/C0RZKcuGRfDikymnEipGiMpfRo/ELvgmdIVZ6F0m4bX6ZJkWyLEE+eXwzk09pMa6tcpV/jo/WPVJvIOBrPkrrg7av1c/q6tq5r7+yXHOJ5x0C6kNEBCG9nkppDtTrV8uPKIz3LMfZtqwtpRkDJlxYQVVU5EPTNN990bfz8+XOcnJx45aA2AzpQduiWMLw+YkB6ah7l99LYcRuU5VydUsZtmgar1cqre2v5FQA4mEr3AAdmuzz839YCXfUQekAy0FbBMT2uvRIP4ufz7fh358ZSuk72NrzfT2NV19fveFm0tCVArBZXksEvTud4cb0GKoPLVYOrxmIN9LclNh2IxkERz9uVja0Ux3SoSg+IywL4GJjTiy+BH/6biHcB7bcVaa3C0yLuGcvT8HxpGVWx+81v8p61zQYoI29altZWLZALA8+LVs2Pl3uzTbExBo1t2rpvDCpUXrpm0WC1WOGT73+C+cs53vmb72B6OI29MuOQ9lrGX9VBNMjzc4u4u6Qx5ZC8Qls6a88kWLoJ1PujzEu2r/GvxghwF4FwOQyw+TJHPxxCmr5La/TLy0tVf+P3IX1G5qGR1BN5Xjm8xtTFYhSTp2QdqslbVRVWqxXm87ln7BxiN9i2PrYFLoby/zxRbO1cQlJPDtkSct6/bSjHBhKTaWg+pXFybSXSM4vvOCfrWFvH5lDOexSzQci8NR4pW3eqr8Tyzl0XyTLID+Y56B372GRXc5vkmVOu2JpWa4vUuz5GeUp5DJGlxO4/ZA0/VrvmvIsyDv+tHbMFdB+jUZwcvvsYb0ufj0m5ZdVs5ZQm1A67oBzbWizNmHFy7K8hCoKxoYreB5V29pjXTsjbMbTI+JJ8+rzUy7ZK35f0+afY5ELP6Sq/muTxxgRzNAUod6IbcpbFEMUN0BXWIXOInMxKF7cpGUt4yfYsnWBT4DDgb3cSkl37Ojj0hWzoXFzKi+5jeU2nU29roZiSSqSBeqXn5Qwh3l80L2p+/nBd1zg+PnZlm8/nmM/nHmA4tqId46mB3eSVPJ/PMZlM8N5772E2m+HBgwf4+c9/jg8//NCdY0LlpN905lgOUZn51970P5lMep7/Us4QT3mveee/CvOsBu6vVivXr7txiQOynTdsByBy71iwONxTFjDOK8qPD+fx2gGlm6fw0TfiYVy6ljoPWWn197ci5vnBhfv5perMu+uFdb/zPWe7egzl6qGh+IPHF/iTT69QzVovWFMbVNO4R6wDVjdnx3pxwNJIIFb+7kmmhLNm0DxjpQedlt554Xke1P49nZVK2wXzONbangcr3VuwLYcN3BmvzlOW3gvL5maLFpjlZeH3VC4CfhlfTy5j/W1cqQoqoEI7TlWoOq/e2nbn/9Yt2N6sGvzgv/gBjl4/wt//3/99TN6ZtG1a0kavCo1vExqN9uVtC9P1dw8kVbLeCszmPNk7Sv3VGMXbVv42SjgfwsWYsw8gls/tq9UKTdPg+voaxhinB/K4uYa60m38OO+QcW0XRlApw774kf5JW0KXAj9f0u0h+c5uA8hyb80c2vU7UUpDgYtS+1zIxhIC/WJbr8s1Gm/DEiBV3odkGfKeU7+Ire+GALFDSMrPbQ30wSq/18DY0n7+eaOh/eDLeeLmaZvx/VWjIX3tVeyfsbG61GYcekdTfAaDsSEj4xA0eltje2pRoPHQFhalk1lupwt9dRP64oaTBiZbq29fVDpR5zzLUazkFygy3nw+d0ZkTldXV+qB2RrvbQe/VHqt7kNgW4jGGISkUsjbNLVlVY6CWlqm20C7GNw1QFMb82J9QoubUuBD/fkmvowqWQCF5N1V/0kZZmQ8+XtofjyfHINY7mJN9gvNe3EIUCwpdMa0tkjW6paPObT4o/lGk4H4htpLhqfmmpw2JB7aNlV8bjfGeF9EG2NweHiI6XSK2WyGFy9e4OrqKuoBvCvFMtZXeJ3R/H/nzh1vSx0COquqwuHhIay1OD8/z+pDWntxUFeGy7SyjXn/kO+OBHTHJKks5+ieVM7JZILpdIqrqytnPMipO2qT7p0GuxIPbZtieGCp/9/f0pis9hSnlR3wEDv04wP83FeeN9UXkPaIBeNFPFLtx/uErDM/Dn/ul1mGtWm0+FReku8nJwv87HSOp/M1zLSCqas2ysajUoKxbVoBulZCDyCglV3bnMXvAKnPNuALbbUaTB7qipaBR9R+1r/Xrl6cyL+3nSwY2Mp5avxkvuxcWGuFlyzY+xjzjN2QaQyaumnB3BqAASpbdSAxeTbazbjTWKyXa7z//3of06MpmkWDh996iG/+1jfD9V1K/ddwXLr9armjXQKvxbwZaCq3EPaea20XAnEl0Eph2nwR6hMaCCt+m8pg+mCKal5hebpUx4/QHBczHIXmcBrnuC7Ij96Izd1S703ZTkI2EMC3W6T45OjbpRRaQ2xrl8qJW7oO3JboY0vSY6S+r8nyKtgIxqBQ34qtYbS2HNNWFdJth+SRwyMXcIzxyZWttL+l1rA0Zg35CH1bCtkPPo+UKl8piFEy5mvvXsjmFuvfOWXg77M2323zvg/tGzfZp0qBqRxZ+TFSQHjL55zdTWP6z8XFBebzuRfOP2oH2iMWQ8cyaFQ6d6dsX/sm7T2J6WmSptNp1rmx3Pu4VDaiIe+YnC+IQkdRheTIGSNyeKXIq0l5NlhIkJAQkodMs22DaGGpgnNlkxP3/Bg6qGovYw6gw+PzZyE3ei19CIwdohjF2lJOWqEyx/gtFgv8/Oc/7/E3xt/qVQ6OkldMSUvJpJGcBHIo1Gd2ZWwOGbe1uKHwsWQr6Vv7XmSm8o6NJSVjSqg+KU3q/Iht3seSuLlluomFdskiMJV+TANCzPgUmwv575A8obw0Hjky8vEnx4CUkp3icCMNLWy54Y4oRzkOlSt13rlsh1Re2mKJg4Pc0Hh0dITDw0McHR3h8vJSNUTFzuUZQqlFa6zs5I15584dHBwceOnrusZkMvFA2lJDCK/buq4xnU6xWCywWq2CILXWrtoCfMj4WkI5bST1KwJhqR/Is+9C+YQW/m0Y0DR9z9g2GgdsCSRt0YCOj/SQNY4vFbHj5+UMbLxaKQ6Ft23h/zamy8M/p5byBTgoK3mWkkzL5efPtHBed/00oj/B4Mcv5/jvPzxDNamcJ6wxrcckAAfGesDq5rcDYSvTga+i74b6cqoPkoeqJ6+xDmiJemZa9IEo2/F1/cf69xwo9QBViiu8Yx1fK/hL8JbCN32dvF0pP28saExXTpY+dCVvV2O6tuGAFXksN2jcFevWY7YxDSqzGasqixo1mmWDH/03P0KzbLA4W+Bb//638N7few+olTq3LK8Y5cYbGj+H39i0f/VvaxoD/HVetQE+brxnz40Jb3/M5cqVz5guPgyAGpg+nKK6rrA6X7ltwXMNPnwNEtNlKZz0JPJe4mEyLvHX1qRaPiGbSq5xLMYzRqn1bg6PoWuIXa9xh6zhZH0YYzCbzVx7cy+2WJqcvF41KilXbt2X6N+x/q2BP2NTrL8O6cula4+h+fD8eJ4akLJtveXY91JjIBEfV0rteKlnJXFS6VJjtjb+y7i5cpS8dyXvYKoMOXLG7A5j2ze3AfJCPEL9rNQ2HuKXY2tK5UU2B+Kn4R1kgyrpK3J8zdk1jOwpGs+xxt/c96XUtiHTlaQf0ndJj9gGjM3FacYka3U8MNS+8mMBTkOdH0P80jX5BaHQy16iCKUWAlp87TcnbhRNyTq2wsbLkztphepwNpup/EtkzgEU9kWyX5S2fSmlXu5910MJgHQbKWZUHbIwo74sB+iksXagwUFLL9sk5+zIWN+RxpaSPliiFHzRKTXG5ijqOSBBTOEzpjuHlJ9hFevrIYqBcDngNND/MEzLj5Q8aUTk76Hku1qtsFqtPKW/qipnlLzpsYzkooXJp59+isvLS8xmM1xcXADoyjefz7FcLt12grQlcM5cxBc4xrTeosfHx7h37x5evnzpvGz5OBJT/um5Ni/w/iAXN2OMD6lxio/NVB7qL2Pk3wGxYFf6LT1hu22KfRAWALiHbLeFMLURpdFRHvJi7TxsCXzt0APjxaf7Ll7Hp7vnY0S4Dvwqt4FwPx/+jH5zebXnfhkMfn66wB89vcTHl0tU0wpVXXVb1xrjth52VwJaxZUvDF34WF6xJvIsQS4u1Q/3iN0AnT3gFfABWQJfA56uPXCWdTE6B5Z7n3rpoBi+IEArlh/J0QNlN+1AoCzQgVXWbrYnNt3VgbMbIJbO4KR8m6pBbeu2P1jgxU9f4F/+p/8S7/7mu/jmv//N7PrPJu2V3IaXGpwxN20zfaXS2ow4N0W8bw55TtGMv92xanBmYKvnfWv0OD052HMH8PJ3rnBOCq3Tc9buch6W2wuXAnFcb6N5l+sZUr6Uzltq3N8GiI0ZB29ijR0jTX8i+Xmda+noA7+QvvtFXLOVrG9Dccey0QyJ96q0WQ7Is08KvUf8Gf2OAagyfah/3JSNcBc8tDE9BFBIoLzU+UXKFqvvIfOnTCvbKtUXSufJUNox6abHhNC7znf7PDw8xL1799w9HZXAabFY4OXLl65eaUcwSRKH4PlPp9NBttaSeDl8NNtEjp22JI/cdg/ZSrR4EnSt69rbVS5GqZ03vqSWkmBsjiJPdFsrNyQnNwyGjIOhzr3tC8rzjtXbUG/XXZAmq2b81cqjGT5DXr+chiyucsCJbepwbGWrRJEoXWynKKZgyvtt8ttm0ZfKe6gilNu3QgqajC+BBi2PWJ9NhaXiyOfyC/kUvxRAElNOtXRDDSpD4+5inCYq6auhdKn63UYe3je1etcWTjwOgXly6zLJR5ND9veQUStleMsJ5+Xg9Un/GojM+azXawc2Ey8CY3P6dCmVpucgadM0ePnyJZbLJQ4PD70t/fmihq68HCV6BdXddDrF3bt3nZKd8lhJLVj5b5KLt9GYFOtz2iIoZnjlcXLIWvrnQKsPxG5iemHG9NPq8reWel8eQn86FIjyaaN13q+Ul8a7fW5Yuj4fXk4dcdLmpdj9UCDWD1tbi6dXK3z/00uYugViTb0BUANnxDpglo0Z3njJwBB5lb/b2nDoSqw6/Lgyfog4H4MWvLGmS2vRApMUJruE7dK63w271+Q0LA69prTlMNt6OOjtWjG50HnHWti2TRrAVv1ti9Fs0lRsPGls21YMTOYgMdBd3e/Ns8q0Z8vayqJualw+u8T7/+x9HD48xLu/+a4D7p1nIskS6t5Dp4Ft0qb4up8FutIO0NRdbVFcTJu21+Qp8abV4qrplXZ1HyJocRL9IDQn5axTQmteuSaheFKn4/O9XG+VGPekvCGdIKSLxtZO+7YvyXLkAmrb2DRyKAQMULuG9B2i1PbEMRrD5nCbKHdtH0onn5esG3LjhuxuGo31jsTaN7cP5Ni1NJtJSfqcvHPlC9k2Y/mPuaYPycZlLE1XIteQPFM2JU3PlvaFXArNByXvRwn/GC8eti2YlvOujUnbvFechqblYCwds0S0XC578xLt3MFJc1CTxPtFXde9DwJkGu6EMCal7NOhuWcXc22OLFoabbeUxWJRBMbmxI2V9aZ0jn3lO8gzVlP2xqYxlRktXc5Lt49G2PcCYywqWaS9CpRaCIbCtqWYQvh5H3w4SWVtLIUhll+IcpRw+RVWzocFobyGKNklaXPlkHxzJ2siabQuNeLk5JETJzQ/bdunYgu2UJ45W2KUyrLLcZfzTu14wEkzCnHlq+Qr/FjfCckHwAMieRgBjXVd4/r62gGypEyW9NUUaQBlCW9aqNCXnH/+53/uQNbVauXOh+ULB7mACbWVNHzwchOPuq5xdHSE9XqNs7MzLBaL3lYt0uDH211bnMeMxGOS9gEB5UXXpmmwWCzcPV8YDqGWJ/2TlyzQNEBVdR6zTdOiMlVFY4Zxz9p/zSMWG7CU8mqfe2hcz1NW/qY66O77qIBA/eIlzqsYdHJTOn7f/20D4ZyMu35yucT/+8MzvFxszoitjPuPeb/2PGHlM+jXNlfjVU/Qw9UEnvduE4YuH3HzQEPnmWf9BXtwi+INK/c+bOJJr1hjWzDJ0wGaDS+2PTF5zNLvxjRe2spULi4sWmCXumbTyeN1SXq2+W0M44fO+xW23Z7YNpt81rbzjN141tpqc11v6qVu2/gXv/sLPPuLZ/ir//Ffxbu/+W6o4vuvFT2S43sAzM0CebV8R3jGvadz0nhjsUw3cJiOAp8j5ZFLOUBs0dbHWlvKMOrPGkvD/mVcHp5J2lolB8ANpZFhoQ/Vcg3SmlFRvkcxHeJLyiP6+JbqT34ATzpb6liGLyKNYfhOpf28AdljUgkgFQJwY8BuDMjbVj7tufahQwzs29WaPsZbG9NLbZBafC0NB8JK+/+2703M3kLybgNay90kvqSWQvXKdYX1eo3r62sXn+xEtHXxl/TFoyH4Yu4HETRehT4a0WQZI98cflEwdii4EKIhhc2JX/JFC3+WGkCHLgxKQYybJm0RFqLQgmpbAGXXlNvesfucNLHnOeXP+dpr6MSfq2jte0HsGUcDlAIYJL/cfImHppjS7xAIJ8Eq3j4lCl7MOJKamErG21Dbx8ar3EWIXPiHACmNb2wiDE2eGu9cGgrEhsK3mWdiQLT2bJt33zOwK/nxuBLY0oxnoT7C32dtPNPip/qxfL9CfVt7Z4xpt2A2xjjwjX7H+t0QyplDQvy5zLR4PTs7c+F1Xbvzvji4HQIUc9qb5JDbNtO2NGMZp0LG1214a+OZVrey/67Xa3f8Q+6XsCmjhrV07XvGitggT1fuCevhIZbiAYCBf8asjxIZ08X336/WK5bLbi3F755TGOVrnFeXL3tuc+nlDcfx+0iYj7XAxXKNxrbt+Wy+xs9OF1ibDdBWsfFmA+RxUM+FV/2xiadRQVjebwUg68IipPabVH1awZcBO84bdhPu+qYV8QgQpDCLbmtUywBZ9K9e+kp537inK+97xvp1ZFieTB4exuvbVham6X47UJm8Zm1XFqonBzSzs38BtHwAt1WxnVlcPrvE2aMzfP03vo43fvUNHN4/RD2r/fLmUvca5sVFIH5qiN1GFd9F2lu6lI16r9pIPIPsMqlpM/tAUD7Wx4Hhc2NsfSjnwFBcOUeH9O/SdVdMx5O6m6Yz5ujZKRlSlFM/mtxShpJ8hpDUe6TcIR0v9oyey7CUDLfZrjWExrT5Sb4Ub0jb76uec+wJ+25zaVdJxZOU8w7n2i9z2q7EFpqye41BchylsNAYPmZf1dZ8Jf2nZCzS8g+Fxew5OSTLmMt/X7TtHLNt+hgvOeeQ/YLbVMcaY7hdIKdf7IJKxoObpNLxU9rAQ1R6tuqYdREaG0I6cohK9d2YPKHyBcHYXSgkryLFJssS5Tv27KYH7qqqcPfu3R7Kv1gssFgs3H1oy+TY1wEpg/EuqPRFu800thGb07bAzpgyyDMi99lfOJW80zHPwbHaSRqOtbxD6balkjaOjWMlRouYIi8n0tRCpqQOYiCoZrAA+uOhtnUKyai1V6pepCGKvsDkX5mGzhPXyk6AOT+XdF8L7JBRTwtPvVt0z8+xkF4BFI/CyBuS6OrqynvOQdpdkLYglsTDqfwHBwdeH1qtVl58ay3Oz8+z5ebnvxrTeb1UVYXlcomXL19isVi4fKRBli9qNMNl6D0dg0J1yBdckvgYQe/rcrnEarXC9fV1dr+PlaFpLNZr6SHbesY2TbsVcLPx2GsaswknL9n2WVVRmg4EtQ6UJbSgf235c8RB+92/N4aDpHGEyBigX00KygEtnh7etVksTvf7emXxX/3ZCzy9WmFyOMEKgJ0YVGbjDcu2HvZA2I2nbGWqLozF4/2j17cIJJS/Xb1E5h4J2irps2kDojpW0hu2RTc7j1jm9Urxop6woXA6K7aB83ql5z0vWcUj1nnMNhugqdnIwuq0162ZZ6zbJtluPGHdi9HVqbs2nbcsgJ6HLN++uqor/PC//CE++Gcf4O/+r/4u3v71t7PaIPiaBF4zFdwtnWZdkW0vDBBjXoy3VeJsM+XbwvQifq4XqhYvVBecYsBniFwaLZ4Slrt1sfbxhvc+G+POOt7lOrWqKhwfH6NpGnf+vNQtga5Pka7Aj3SQ82XI+5LzyVmPS12X89PS1nXtbV+Ya7RPzfearvkq2BM0PT4GysZ43FYqsZWV2tViOuTnibaxN960rVKzhcn1OIXzOHztIkkrj7bG4bxk+hKb0T7qT7MrpPLW1lUxOwgQtgfLNiGbwxBbw5D3scTeRPG3aZfYOes3RUNkyLFRyHi7koXba1arVdZ7pp1XT0Rrfmkv43ZmsoeMIT+XI8VryHwcq4tt+3IOv6ZpcH5+XpR/ifdq6Xtf0idL2zhmbw+NtUNo8DbFu6YxJq6xBsXQCzRGQ4xtsMzNT4ZNJhN1oMoFDGL53YSCm1OfQwe0IQPFUBqj/ktpF+1VogjKd2vX/aeEvwZKpOKX5BMD0nicksUFzzvVH3IU122U6VDa0roMheWWM7QwKKmfWP1TO+5iDuP55o5TJAv3BgzNXzltFFtYpQxYOfKHjH8a8CfjhtJpBpebnHdz4ubOr7y/DcnLmBbsnc/nWC6XDrDXxq9Q+2r1P2b9jrXApP4/5My0Pv8WRG3bAJt/eo+Mi8NSsPA2Td+YDYB5ptI1LKb14lO8tg24B2ybd3ffxevezX5e+nCQa4CS91Z9FvwN4MXVCifzNT67XuH5fI3atOBaVVceEOtAvA3o1pZjA8LRtWLer4aBstCvgPJboV4fMixu75Ee7grsfloXj5+N6rYoNgYcqHUercxzNuT56jxTm/BzOq+Vg6Mur41XrJNH1FmLD2/yqGwL6Bom38YTkHvKUpvw394zkQYG7Rm1m3qzVfss6SFrLeanc8xfzvH8x88xPZ7iwbsPUB/4Z0o5vpQnb6PYkJF6nkv0/meAj91jq/ch/lvjsY2KnUprA3LcJtqyvYq2OU7JYML8YvqqpnPyOY/W+aW7QUidUM6pfL6PgZmaXiZllbqc1CPonoCAMQzDIZ1+CHiwS8pdS2p94jbQtvW5awAgRbG6TK2LY+uYMftXro2BKNUm2vsXe4eGlCU3LR8feFhIVvodWg8OtZ2VvF+yrnf9Pmq2tJA8obS54RrPkD0gFWcMGlKvux4bh9q1YulT72BJfiX9Q6YPxS2xeTZN422brwH8BMaWyilJ64dDyk+UM3bm2BeHlCU2b8TGmKHvnpYuBNxuY5cO2Y3GGjNycIibokFg7E3SLiezEGKuhYfOwNs3DakPGb+qKnemHicJxt5UebdRgofQTb+UN02pRfPnnYaACWPVj5zAafwhDzkADizJ6fslE2OKNKOKVP5j+Q5RHmKypBYPOQsAihv6aosbfVLypJ6X8pDgkSajD6TE+dd1jbqu1fONre3OIdXO3pSKV2oBQeeP5sQfQrLcofdVk5/iS6+OsYn30Zw+JMna7nwvDVSk3/JDDU0OyZcbZ6lvzudzXF9fezKHtvJNvbP8vRpS9jFJGqnlLgzb0nqte8bSvTHSM5a8YVsA1Vq4eHCgKgdlW3SH0nRoD0d9eBhEuHbPw2S4fDac+uOMfN7mrYcbNNbi//PTU/zo+RzraYXJ0QTVpGqBws2WwxyMpWtVVd0V6G9jDLGlMfS5LDSeeGEChJRgaxR8jVAPgHXYrPEALvXcWKpQ2/4bCE/YhgGyFK5crbVetzIwnles85rd/BFw7J0h29j2uvGO9bqpvG54ut8irucha/z/ymzOkZUeshbOQxZV+29g0Kwa/OF//oc4eniE//A/+w/x4BsP3Gukjm/a64ZIXKDbera08V3z2V6Yu7XhZ16YvEq+MswKfvKex5fxuOzW6nJp8mp5JigEfsaA0Z5X6lAQlffLnOhGz8eFb94bdy5yiSim/0EWEY1/tNPFnTt3sFwu8eLFi6DOywFPfi91WJ5XaieTmL4ueaV0hfV6jcVigaqqejaLXMrJS77XJWDbPig3T9L1Um3wJcVpKHgXo9tgQ8yhHAP/LoHYlAxAef2H+IVsGtr7U2J/3KXtegjIqsWJ2f1C4FWOrXCoZ+yX1KdXfQznc/ZyucTJyYm7DwF8cp7P+aAst9/z/hjKP+eDBO3d4PxC9qbcsFwqsb3m5quVjWw7nEJlzP0A8ItMo25TPJRPyICYa1iM0bZA5VA+RLucgIFhcpUolbkT6C4n2iFKcEhBiCl/JXV5WxSK0EKZU+4Au03+pfFCCu9Y+Q3l5YyTI9XZmO8Pr7OUnCWyDnl3U+/c0HYdYjDQ3m35PsT4pxZ4Je+VrAOtTkrGoBjQqOWZwzPU3vIDIzkPpOSQdZsDFO9qkZ8iLhd/n0Iy7NPQoim+dE0t/rU+Zq3FgwcPcHx8jJOTE8znc2eI5dv0hEDTUB1o8vBtkGVZdj1nhnRDPlaWvv8pshYMhO08y9v/Dmzty2VYHKrHjmcnUrdNMY/ToUEdKtSdLYtefOkVy3nwMMp3jLFc1lP/3vae8d9PLpb47LL1hl0AqCuxJXHFwFTDwtCFuXDe9gSYGjFm8XAGnuUsljUefoQBgJxhfZh4Orys89bsecayZ5yP5/la2eiZsZInAHd2rAScpRetA3kJZCIvWtPycB62ppOPe8ga07axbWzvmbtnHrESlO15yNbd1ViDylawkzbO6nKF+dkcj/7VI1x8eoF3/vo7qKcC4OleMb1+EZnHRNosYm2cipMdXsqnlKTMOXwLytCriyFy3+CSLWvuM+KaSbHxSc7DXMcL6YopXUjjq6WRekMsjbYe1GSgD8en0ymWy6U7RqkEcBhCWtlS+rxmRynNcxvwKccuMpS2sWvdJlBmDP20ZA2eKntJm+W0f4kNoMQOq8UpyW8b2jYPbT2Ta/fl64hSWXZtB46t/be1d4Z4lMgzFAuQfHPCQ7aLkvxz62fbds1Zzw9Jm5NmF32ypK9Zqx9JlaPT5NBYekFsbi+RaZdjwBg01PYaCxvrvU/FSbURhZXamGNzW0lfTMW9cc/YmJFW0q4ns1eJ77akKdO3Vdax6TYsAoh2qcBusxjLVeyGyi+VpW0XrqWUs5gMDeb76D+5spXKUgLklMiTS/tYiBMYkrvPf4zo66+hvEgWDajk6TUlVIJjOcCldi/TkSzaucwhRSWmwHBDmjHGGfy0c8hyZd9l/6Cv93idx4yQQ4nqYagH7jYLSLrSObNf//rX8d577+GP/uiP8Nlnn7l+PZ/PYUznIct5DmmHWP/lsu5Ll+My0Ne14+ZtsV43WK0aNE3tecR24xD3jG29WzvPWAnatl6iNNwY03rStmVpn3fWevqthcnfdA/AA2B5+2jv/ZA5JhZu1TgaIPtHH1/g9x5doDqsUR/UnUdsvXlfA2Csd90842fGEqDHf0sQNbg1sXie8ooFtutvBJiCqs70w91vqkOL/u9NN/E8Y9kZsM6b1nZptLAWD2XhBt35spbJyeTy+o9NXy2s5xXs5c/jukqC1wYVqm6rZoMWfGUeh85btTKABdarNX7/n/w+Xv/26/iP/o//EeoHNRyATfMXAbCbMjsZuZih+XlTJpKvB8rLdyEDeNQ8ZmVYCMzlfUXrNyFvXGrzQSBxxnPnXc3jin9PBgs/bii/nOGrcNofZVtihZ8xRv+YI4dHQje01nrnwQO+1yTpKcSHnxtPcfm91PE0/Ynv6hIDNHPKQ3rKvXv38M477+DTTz/FkydPgulTNBaoMwYvjUqBWKkHcj1XrmG21YE+D7aim7QD7dqOEHsnZZyUTLmg5RBAtiSdtn5OUWrNrK3NY3EBZHnjD5H1i0Lb2CU5D7nW5c/krg+loElq7P08jH+3gULjzdAdL0pp6Di8z49Pvmg0lq2sqqreOGCMwXQ6LRqDyIY2VI5c8sDYki9ZXqUBaQw5t0XFbwtZa1UjvEZyG6DVavWlu/mGxjSuhxS3nC89eLzSrz3GoqGKZ+hjgJgRP5SHtmAo/ZImxis3bxmeEz8EenBlk08s2jabu2rP0LNtAPjUAonPLTn5hPqGrP/Utmza+5YD1EljFQ8LxR/ynuQoELF6I8OZtsU+KSkchMuVUYKxVL4QGMsNRLkAs8wjVMaQXPucqymvyWSCuq5dOVerVfbiH/ANFcRXjvWhex4GAIeHh7h37x7eeOMNWGtxcnKCpmnw8OFDNE2Dq6ur4BgU6/dDxliebhvdLKdNeR3yfEvG8RjN5w1+/OMzvP76Ab7znfsbEBYOUG0aOOCz++88YrsrNiBkC8x2ovS3K3aIkF8bLoy8YLvfbXqSw39O+fpx5bMh1KW1Sph/r+ZTG2BawdRV693ItybeAHAqECv+edweACvG1tjc7wG09MwEwjfPXDqfUZhk/bDzX6np+bambZK+p6YDE0k2Br7FPGNh4LxYbbMZe4TKbyvrzmElnhowrXqykoesiEP3PQ9ZikOet7z8G89X1/XdRwu+ZyyFm6o9Z7ixTXvm8MZDFgCqSYXr02v88L/6IV7/9ut47997r0vP89Day0TulfhFIJ4SVQO3e+CkfO5eNJ23um0xjZUZ4LD/OBnB/x2QqZgGpvU+eMjlU5JXKO7mvTRGbE+cMQ2F5q/QWoyAuevr694REpSWp0mtR2Qcqdvz+T00r/JdNEJ6oNR9lsslDg4O8N577+Hg4AAAcH5+juvr62xdZB9ASaosQyikD6f0aLdVv9An92XLuY12wlyAModi/UnqyLKdQjaQmIyl8UvW87nrEk4la9AQvxQAJuPGxifJq8SelKpPrT1DPMZY4wyl0jEmFn/bMTI1V8VsNvx57F1J3ee8A1KWXPuCJuurgg3k2pg1yrGNlpLWZtvIWJrnkLRS5+HPcusox7YXi5tKG2ubmH0xlj7EM3SsVSzvHIrZCUO2KG1MqOu6uO/myplj9w3ltfNtim+SQsb3GKWUKR7vpupomxc3ZIjXeFRVhclk0ov3eaWcASsUPsQoXRo/V2GVsr0KlDsRjPXO5bS1Bn7wOFKJ04wVOYpoLB8iPoFsa0zYZpGgtUUpnxwQR8szZ9yz1npGnpRyl2orIjo7M1duzi93HtIWKFJ+zlcztmnbz1Ja7rEqFaa6rnFwcID1eo3VaqWeK6uVUeYfkpWHh3jkhPEySk8NXsYcBTOHhqZvmgZHR0c4PDzEYrHAer3GcrlUDaGxfFMKXIx4usPDQzx48ABvv/02JpMJXr58CWMMvvKVr+D6+hpXV1deOp537qI2JgdPXzqPbZMf5SmfhwwwpXR9vcYPfnCCr33tGN/85l3UtVG2LIa4SiDWONAWIM9YA1+sbrtiZ8WHgQ+g0jOAA66UXqJGxgAaKNs94/nL+U8+92X17iSWw3GP3vjd5WfqCvWshplsgNaQR6ziDasBs63cLC2/Zx6tBuyZIDU9qx7Nq62of7Go1lqfH29Cvxu4q3u3eLhlvEP37J+AWlSbsM32xKbZyNKge0bTSMX4ale+TTGFcTmMKHMDt92wi8fz3bxLJJ+3rTT16dp4dePC0QKxDRpUTesxXR/UmJ/O8Yf/+R/iG7/5DXzj737Dec462eDLY43vLevicPB8G1Ler+A8YP3fPY9X5Zr0rk3JxviFwGDu1W2t7/na84SVaW4TjS3SZpyxRtRbQZ+Rc5jc8YMT6UyXl5cA2g/F5DzI9coYD4qj6QU8f3Xs5UUVum6O/r1YLHB0dIRf/uVfxtHREaqqwi9+8QvM5/Od2GOkHp5jZwnFHVM+qePytQZfU3LjozySgq6y/l8lu8EuKce4G4qXw1e+HyF+uev9bXXzFI1d9hjv3LqXaUplDBnyY/mn4u56fROjoaBCqLzaHEPxc9o+NL/QR8pSLll3sboNjc3avTw+R5aT0oQ+UAnJetNUCqDdBiqxoY3Nd8z3MseGkGv7K5F9iF6Ro7dwkrpe7odb2rhQOmeVjp8h/TLkGauFp+owtLNLSJ5QuWLj5o1vU3ybSOsEocqLVeptVmZDHeXk5KTXQdfrdU+B1zr3F4FuUsH6ItBtqt+QcSDHs7K0DLlK7Xq97ims+1a2bptyF5ocU+3AJ+8SJTxE2kTNiW8Fl0sh4Fi2e2hukkT9h/7lYqiua/fhTe7OCVIJ2qZ/pNqB4nCjI9UFpYnVRQhY0YA5CfLmEn28tFwusVqt8NZbb+GXfumXsFqtsFgs8Gd/9me4urrCdDoFgOjWJznGiRIiMLiua5d/Xdd45513cHl5iZcvX2KxWGCxWHjAujSupoiPTfw9XK/Xgz6Oy80vtoDnfT51Zt42tF53Z8fy/7ZPtXFou2LaorhpWrSoqoBWnO7MV2sBaw2qym7CCfXprj7gCvaMfiNyz8NkuCTqA5s7FSgKpPTCrXcv01gL/OJ8iR+ezPHh5aoFYKv+tsMclOXjgQujbYmrdtvPKAjLrm0tdGBa77dBMJ2MD/T5ZdEG3HJ9WmtGk3kFOu9azoeDaRDhBJyKqwMaOTibAcraxvperFRG2wGX1loPoCIglLZUhgFstemDPF/Kg/onTAe60rux+faFzo6t0HrHVqaCbWx7nbb5Tw4nePnhS/zL/8O/xNf+B1/Dt//H3+62I5btsslXA2S9/HnbpSg0JNmOr4yX8uos3lbYMl1qA7J69/zKdREGvLqr1s+0fGU8Wd5tacyhfiAvWXeStt36WM7P/KMv+rguZpQm4scryLihdUcuaElxSI9L6ez0nB+jQKBsXde4d+8eDg8Pnd411pyeAxqFdHQZpt1vu9bVvF01nvzjRL6zEn2QeZuAhZumHNBzTDtFbE14G22LMaBsCHBSWvYc8EN7dhO2klC+u26/FBgdqveQXDxcrgtz7ARy/Zhjm0m1VQr8ls9TNgVtp7lUfpLHl5RHue8hn5uIxgaec8cFbZzOAShzbX454x3nmZNWS1dSR9uM7VrenyfaFVYR3aa4lG5SodMGyDG+lAjxuG3b9eZ2jlC90BezMZLnyhG/sQ3HuTT0hciZcMeisfnmKqQ3RTkKV4pu88IwpGDnTl65i1+pXHIwNqVcciqty1T6IYpobhreb3YxF3H+midnSqYQacBVrhwhuWM8pdxa3+NxyCBD+dKX8nKhRWAVBzpTC7dQf0kZ13j6WB5a/fG2GzIP72q+MqY904wMnw8fPsS7776Lpmkwn8/xwQcf4Orqynml8G2LNdA9JDcHkHPHWQKEqf2ttZhMJnj99dcxm82cVzTV55AzWzT5OHEDby6VzHch3YYW3A6w28G8aS1tS0xesWD/3EPWsLDwmbEAbVdMKI8PvBrT8QbCHrJtXM1LFi4O8QJaj1jKm+fFy5lTF0qoFy7j2BbzQWMtPrla4V9/et0CsRyMFR6xDpQ1fbCWvCVdW7N0wS2KY4Asy4+n6QGy/JkL4D8T6w1YcC9Ol56BU8RDu5e/vTCzOStWPPPOjoXpecRqZQTgb1dMcRsRd9MWtrFemNtGuEHnYWo2clftGbQurGo7h3rPhxMLf/tlqsONR60DpC0c2FvVGw/ZScuontW4+PQCP/gvfgBTG3zzt76Jqq5c3xON5YeJe2/7aPlOGOjhGkWASc0jNbhlMRgfGw8LyREEey2LE+Kv8QuEJ2W6LUsEWSclcvGhesCUFNMh6et/ikOGczlHa0CrfCaN6Vp+MUBQyizPpuV8tHtpMG+aBsvlEsYYHBwcuOMgSJ9K0RB9T9PL6TpEnyzV32Tc3LUL/02yyo9Hq6qKAitjGB93ZcAM5RWiFOiUs/4sbbvQGi7H9tjTN26YQu//UF5j2fBSNoZSMCJFsXoIrc/32YZD7CjS5iT7KB+HtXWr5CNtCKHfJXJxCtncjOkDxan3iNuFSrZZpWe5NqJYfd1mu2cOjdm/Y+9zztgck6m0vqWtEEDWznGUNkW5Y6ocR3LtzDFbXo5MQ+bTbWnIu6DNCaH+sM08FuuLJfqDpL14xsYaLGSwLWmMoYPYbVFwboL4VpXT6RS//Mu/7Dxm6MtTTtZafPLJJ7i+vvbCq6py6SjebaR9Lgb2Rbe1TLdRpl1SCBzJHfBDCgMPXy6Xan5DKLQQDPHMARhLeYbk2iZ9Cck6pLFQU7xIttA2xaSYaWfG5ipCmiIhw2Leu6lteGR8ildVldvuTW7xq6UPPdOMdznEt9YrUYY48EkgI/cWiJGWT9M06pnM21JVVbh//z7W67W35T+XQ3u/+PsUWhyWLGZ/8pOf4NmzZ24bavKSpe397t27B2utA4vJQBfrW9rCWiqjVA7tnI4U7VKXILm2HUuJrLVYrxus1wbrtcV6bVFVFnXdApzkEduOE3AescagBSJtC+a2HrMAYDdbF1M88pBtibY1brcztmxbY7LuU1yJ+kj0CLC22xLZWsAY2R8Bv+m0duSLN61+tHs/zePLFX7nk0u8WNpua2LxD6C/LbHwnHXvjoH/G91vQDesuxLSbyOeGx9s5PHaiwLaEZ8cxCXUTCbwO3SV3YDC5DbBEkwy6HvGgqXlaUq3K0YLiDZoAAvnZettRWzhPGkJwPUAYim7pEbEM92V1z95uxprWi9qdk4uDDBtpvjo9z/CP/tf/DP85f/JX8a3/kffcmkdaL3h7QB0Xo5NXUrAvGOiyC5IHZcs/2l7dSyBWMfDsmc2L22wjolHzODQR4j9tAxstdZCBV8pyNouP00mJU1EsF45YnJG+aXylemV98F7R+k+Y5iI2U2sbT+0ojNVrbWYz+feEQkhXZKDdaUgQkgn2Xadaq31vF6fPXuG3//933c2jJOTk9G2KU6BNpquo4EYFL6rj/a57hgCGqgNae3IAXlarxCQHaMx1vOvgk1giLF6rHLJtYAEl/a5Nh6Lbmub8/qMbVfJ46XWCbngxb5J9p2QbNrYUVUVZrOZV1d8Lag58GgAruRbKr+kFA9ppwnZdL6km6fQ2EbPSkizv21LxhgcHx/35sjJZOLhHp999lkPGwH0vhqzr409dnyR+720yQKI2jhDdVWiw6XaL/Y8CsYOaciQwW5spWWbeCH0OqSID31BbuKLghSRTHzCMsbgwYMHODo6AtACP/P53EvXNA0+/fTTXsdMte9tAQxvUoZU/wmBPzn9TiqP+6SbzDuHtjUA8Ks2ZoTGitSXMzJOzmQsv/RLgb8xpTtlRIil14iDRykZdtFPZJ45ecg0vD5D27PFxriSsV4u8ErlTcWLKXsaL1qsaNvzxsb3bQ0EsUWbRrI9tHN8d1m3Q2k2m3mySdLG+tB7yuPG+qTk8/LlS1xcXDhZqN6WyyXW6zWm06nb+ULWbapOuZwheXK2R0xRajxJGUu2UZRT9dyCqfKsWPrvPF8dNqKEWwImLADw7YqNy6OTp73vrtz71UJH77R7StvmSfx4PjLvNOKhpeFh1rtvLDBfW7yYr/HB6RJNBeeNyD1iW4G6fw+QZf/ecwJQObgKEYbImCfTynfS9NOrwGvmtKeBdnYDjvNn0guWP+95xW54eN6wm/e45yVrrVfXBFryeIAf7pWZ5GX17MpPfChf8oDd3PM0bjtgyoPLBBEu+gQMnDeu8/ytjLe9MQf2YdF6YKP1xK5shWpa4fzJOV785AXe/bvvwnna0vvA6p/aqdfGLCwIyioUHIcs/2mTryEHYmX6GG8VRMxJK64qEAzWZzJIi5valjmLvazL3HQjE3+n6H4oSQM07cChHeMQA5PkWqfEeMjTlOrlsThcz7u6usLHH3/sdnO5vr72dg4K8dbkz9VrQ6TVjRtb2bWUcnWdWDtyW4+WZsgHcjmkteNtsQONoevn1L2knL6pAbG5/DV+Mn3Jek323RLbwNB2LrF3hd67ULxcmVLr59h7edMgLK+DnHrKsd/x3RBpvKW0Wv9I1bP80CdUjhANte9ov3levE5uqj1L3pucekjZfUpoyDut6QY5Mg2xK+XkNYSMaT/6lx/SHxwcOLzEWosXL16oMqXmwtw6CdGubKwhvW7sfHLzz8lXS5MLpHK7b4hvbjul7FAh2rln7JBBgwzDmuC7HCBDvGNfkd5m0jrXarXKdrEfg257Hd1mGrqQ2wftavJL5bML/jmDe2xyiim1OQpvjow5+ZXw518LxpRjz8it5K+BYZJfLL2WXy6FFhbUpqXA1VCicVbOEyljFK+rofLJNLTNcK53Z9M0uLq6cvd1XaOua8xmM0wmE6xWK69cuQY9GTd3kca3VM5RwLepu130jW3a0VrbOwpAKvS0OODPYsS/ZiaPWKrn5XKJx48fwxjjtTN51VxdXXk7aOSMxUPP29WI6pJ76WrE6yFkSLG22xZ6yBnOKbLWYrlsUNcGq1WFum49Y9frFsmo61a+1mMW7gxZD8Mz5DELVBUHZcmo2p0f255F2/eQJfSn7TNdevq9kZbXEC8FrPVlIoC3tKpakeWcqcUBXszX+H/+/AynKwvUBlVlvO2JOfAKswFqjQLEinuAgW7GOCCvZzgigI9+G5GGpe2BryLceyYpVoc2EEeCYkb8jl1jv0MeslbE2fymbYxh4XvE0jOwsYinBYvPy6PJAXTnyzZotxzeALwyjtt2WKtK2wKnVd2eCWvqlp+pu3aqbNWCxhawppWdPGSbqkFtuy/hq0nl4nmArLVe26tjkOzzQxC/3ntje88koOi1hXjuAaObNu15zaILc/fWv/dkY/zUbYu1+KJve2kD9SbzLt4COfUsFp/JpeYbKZtaH6a7H7LWi+nvNG/yudta/7gT0g1oTszJh4dxO01s3pUUW1elaDKZOG9YXi5Nvn2QtvYB+l46Y69jQ+UGurUdHUexWq1Q1zW+/vWvO2+e2WyGO3fu4OOPP8ajR4/cx3g550CmSKv7fYG+pekBH0AfwkPq5xql1r+5NoRYHmPSmEDOromPRZL4+lDaSmg8jJG0JYTqXn7YELJf75tCc4MWj4/Z9IHu8fGxCz86OnK7LTRNg/Pzc29HKS0/bZ11m+ya2twXGr9i9oJdlSfU514Fu7ps51yZc+pS61NjzF37plDbhupKvmu5ZY7NS1pfzsHeNBtjSPYcW9VQitmFNFmG4Hlj7pYXoiwwdpcvfmxg0wzNu6ASRaiUX2mcbeuad8DQy6JNzgcHB26ireu6l1ZOujGZc+vstk8oMZAhtvjUAKncPOQiNgfoyKXSBccu2ydnsN9HPypJy9s2xXOMiWcXk1dorIv1WTlGhwwQsbQhgClH0Sw1tsQWTyHDEs8jth1wjFIL7pAMHnig1FNJvjxdyiBGz1erlceLFpbyfJhY2bj8vC5lulDbls7tvG5kHwstPnPfp22MPLy9aAtlql/eL2N1qPHiRF8o04dVPL7GRxoJefucn5+751JOzivn3Uv1s1Ky1nrny8lxIMVXkz1U76VjrYy/Wlmcni5hLTCb1cxDlsaUFtDswjSvWICs8/Qc6DxeO+9XC0KAWp7dldK3ZWrv+e9NiXlJXBhVJxWtvbde2BCSaem+sRYn8zWeXrf/cwtU08qBqj1vR+PPJ71/6YlJP7XxlcVznrJ05XF5/iK9Cs4CHn/V042BMDI+wIAey/KxcB6ysKzPGnRequzeecJSGHQvWOc5ysJJBum1B9uVmXvIkiesVy92E8f069rlJ6+wfrnYMy9Pw+5F/7DG97Sl5xTu4m3OnYVBC+ySh2xlYOzGQ3ZSwU4trl5c4cVPX+Du23cxuzPjrx+kxywAV69R8D2HlHcuOk5ZcXW3NptX0us0JFcgMg/XPFB7MlgRL/SfQ7ux/YxL1EdYn4pGLzBoNk3jnQPPSXp6pHSnITKV6l0UV9OF6Z7GB340yDbbUA4xFst0lDa2DhqaT27+IZJ2Cdp69PDwEHfu3MF0Og2uhcaiXH1tLPtETr+TOmFJuTl/njZkW8uRgd/H1tucZ2lb5bbDPijVNrm6Pf89ZLyR8bV8Y3YEfs/XzJwvtymE+IeelVBqnTOEOMg8mUzczkq0VtyFjWoXlDsWyHeqxOaUQ6VtXMJ3iJ1oCJWs/3dBmt1QGyPHlDNlrwnZMXfV3kMoJGNu2qH2+Ns0RmwjyxhtE6vHJBh7Gybum6ZSJesmiSsms9lMBVX5+ZMA3FeT9+7dA6AbgdfrNX7+85/j5cuXvfz4wi70Rdhtra8hNMakfBN0m2WT4NHQgX8I7WLyGLqojSnrKUotYvjigJ+BEFr4kTLBFXIyhIRkloYfGhtii0ui2NdH2sKVG+I1uUvGbPIQ0L40o3C+Tc/YpG3jygFHIK4Elxh7ZB68zHQGOBm4FotFcHEi5eJGCS5XyLjG49CcxPtaSHmkfGlBKPtniGL5y3dnCIhorcVisXD1eXJygg8//BDWWjcXTyYT7/wzSfxcr1Aes9kMx8fHuLq6cvlxD1atjxI/ekb1+PjxY6+8xrRfmJMXqUw/dHzS4oS+qI4ZPoboFrH3iPr5truFPH8+x+/93qf49rfv4a//9ddQbzw8ySO2rttDKTsvepKFl4PGLoDObW1l7TxbjSGjqt3wadPRFWiBV4pH5adnmxqhHDfP2/hUfJJpqFcsUVedVgkDrpYN/pufneGzeYNFZVDVG49Ys/GCrdD9Nl1b9c6MFf8ctCVQz+u/Bt1veTXiysM18NVd+uBbtF/G6tSKODbyO3SleDIMLDwGbhn4Z8cC/TNjOe/QWbFN/xmBtZVt59wKm+vmnuKFzo51YKeLKrYMBrqzYylYXCm+85Bt0HnIVlUnJ4Af/tc/xI/+Hz/Cb/1vfgtf/ztfb9uV1aUDZBl/DoB6soXaPTL0qGAqK7uX3uph3jPOi4fxeKQrbp5599jcW3/c5m3nrraLK2VTQVdKam0Q4PXy4PeyTkR4EESW74CWrXwuy6gAzWo6JY730YNJjBsBkmm4XkDtQrue1HWN4+NjLJdLXFxcBPOL6VRD1mhyHi/hEeK3zfovpBPkgJMSYNHWHCkQJkap9WMuP9LrmqbBo0ePcHx8jG9961s7W8dsQzdpnxii78u0OUd4DX2X+HPKh/ShV8U2mUM544Fmr5HASMhewO9j9a7ZorR1CT2jNjk4OEBd194ab71eYz6fJ8fZsWhs8GObdyNEQ+1jKSrlqfUTSa/y+xSifQBkY+RR0ve4PaFdI/ftidt89M/JGON2mbDWZp29HqISm4o21uXwC9VHSRvJd1bqPzEay4a9T9q3LEEwdh8TRI4BNYcP55WT5xDjYazT72NgG0IlLyp/oeq69g6nBlqFIjTYaMpRTr67ojGU033KGwMdQn1sW/l2Xb5Yn6By5ShCKb7bkDaplSyKhr73qTLkPNcmilR5YoYFTeGgMNqylsJoOyt5rrTMo2ck31Boa7MUaWWJgUSh9KG8OU++XexkMsHh4SEWiwUWi4WLLwGrEoWDX0v6YUnfCbW1lkYrx7YLG85XA/botzEGh4eHnvEqtACWvGJtGUrP65iUVG1hXbpg5PJPJhNcXV3h+fPnDuCmvsPLGGpPOfZba928TNvPEQB7eHjowtbrNS4vLwH0z+eJGSMoPyoz3y469Y7Jehpjoc3l47LRM1lHlGeon2lhKWOzjBN795rGYrFosFw2m7NjqT+02xJbq/23nq78N8C3J8bm3g/3z4ftSS7K1YK7xMtHg7oyUhV0cYkXXL5lxN9RUVcW+ORiiefzNU6XDa4bi2piHPjKPRr5b7p3cwr9sWdeXKADSSUYx/u0QQfYsnxde5uODw/jfLx47L6YrDKGuyw37boBkFw7UztCeJUKPcsY44BD54UKxQMW6Lxr5dmwXM6N5yq/9zxWOUC96XrWsvxEm3hXK+Z4wZe2GHblIu9c1gc8z1sRx5i2v9nNRw20XTKFu/OKa4P19RqryxWe/tunMLXBW3/5rdZDlpeLAGEryiLaJ4YvSgp5tHqgY69ZrB/Hdvc8vjfmRfgFQciATCr/ELF8Yx65UVA2l3gZlfDse/5IqcNgWtsP0967ZD7oz2shHYl/YCR1CTornvQGb4yI6F6llCPrGPpCqRyhOpX6gxYu9ZJtZC+pa7muisXR9CDuJV3XNQ4ODpw+SWl22Q631U5GNNT4WtJ28vdQXlKPzdF9Q+lT8qae5dorSvKI8ZJpNf6pdWMq/5z1t1bvFK6NNyW2iqE01jtGZVsul07exWLhjSVaP0rlr62/YulLyxOyjW1Dsb411E6zLWkylLaFRruY+1NjX0pOTYcplSGULqcPyqO6gPZdIDsL6Vo5vEJ5apSy1cX6eU54yTw0VE/R5I7R0Pk3t0+E4qZsRcC4Y6tGk5xI22ZcOjiOqeSGZPq8kjTi5nQoa60HNBwdHeHBgwdeHDp3RBIZs/n9q06lZRgy+efE/zzUJVFqkT+2AjUGxcag3MUV5xVbRA+RbZt0EojRiACZw8NDHB4euvTT6RRXV1f45JNPXFzyTpSLJDqXisureZ8OfedC/SY0znEjSmgb96qqcP/+fTfevfHGG/j2t7+NR48e4cMPP3S8Tk9PsVwu1bKHZE7JuC/idUagHQC3AKM4dL5mSIHR+hNfdBKPENV1jclkgocPH7qzwOT2u5JyzzDN7VOHh4eYTqeYz+dYr9de3iV6CNXBZDLBdDrFyckJnj59ir/4i78A0PcEzZXT2nYL4YODA7z++utYLpdYLpeYz+dYLBZ49913ce/ePUynU1xcXOCHP/whgBYQbgHBJvi+0zZ11M70nHvVyHFLGgW1suQYaOS9Vs8kA3mlU9vkLEhSBhoqNy+LVka6z9EprcXm7Nj2/Ni6bgHN9uzYziO2vbbA6oYDWm9WeP/EE+jqh7xgjYEDersrjYkkUwvitrw2KFcnNavDLi+/HijtkIW9FmaxtsB//9EFfnq6gDmcoJpWqOqqFUd4w9Jv72r0ew+o5f3Q9Pul9lyNS+AdgbEcYKT7rir955JkuFalRjzT7i27euw274JFB6SyuNay7XMZsOZ5lvJnG29R02zS8GG86uKo92YDfFVo01eInx3LedAj8oyld3FTHlfOyo8H2/GwVVd+8lp13qssT1O1gD7qtqyYAM26gZmY1mMXFmiA9XKN7/+fv4/ZnRn+0T/5R3jjl9/o3hOqR/Jm10BXqo8cCkVj7SXjubEpEKYCsTbCiz0L3ss8rV9G7/cmDaXrecVqZbf9dD3gWEsv5PBI63dcRijPefliukCANy+vJxd/h5X3uce+UGcIzaf0wdZsNsPR0REWi4Uzumtz+m2lXdiHpG5Dv/lzufsX1ZfUlfgaYxtD8lDjMxHJwI8jmc1meP311/HZZ5/h4ODA6b1jrsFv23o+Rtusp3MN3GOtV4jXUJvJPttlV3mVjIVa2iG2KAkuaLJo7RKzx95WovPGLy4uXNh8Pvc+yo8dXUek2Tw0O9iY882YdrZXgV7lsuaCszn6Tg7l6Dby3b26uurFubq6cufWA/7cmpJLliV01nUOv9vW9poeBOTZAnMo9m5rdZMax3P5cPvYNhTjMToYW2oYKwFNudE4h7ZRYlMv7W17CYh2pUynJricfG9rnUmSg0mOgp1S7iSl6vNVWAznUMyYHVLIti17rC1SaeTv3IVWiEIyDFloD6FS+TW5+FkhVVXhzp07arxYn5YfbGhtP2RRtY3hSFs0ES8CkYF266GHDx/i7OwMd+/exdnZGa6urpxn7DbjGjfuyLO6ueJSCm6VxpPvaW69aqAYf/9yeFRVhXfeeQfGtFtiX15eOo9S/gFQTGkNLZR5HO1Z0zTOKFlVFVarlduameRPlUPyp6+G6YvKyWSieqlyo13KQCBlJt68/0ynU29HCy53qJ9LWag8fLvknHeV15VWL1q5Qu9OyHOY6qjEEMMNotoRCrH5OtSPUguC9dpuvGPpvwVfjZFgLHpes2AesU1D4CrdG0jbh8NDrN2kba+bUPY7dE9tR/Uh+zMQ9sJNUbf1sS+zha0MmtpgUvkgKP2WwCp/poWp6YU3q3fl4QTIGeUZ8WPpe6Asf7Z53l4S9aY87nmoboA9eV4sj0sedtxzlnu0emfIchCMyek8ZG3nTcq9UKWHLPdu9Tx2lbpxsnN+kSu1n8vPQpWJt4/0muVeusaIM2MZ6Gsq40BjAnONNd022Rvv2MpWaJYN1vM1fvL//QlOfnqC9/699zA57HbQUEHZrmGHEwcgNX6Bd6x7rEXo6tbFsYG4kXx6AC/9JkCSAZPB7YNJHgnSeo8DZY/JGog3is49gIWaLxuqjcnzlC3JS+oYTdPg+PgY3/jGN3BxcYEnT57AGOMAudAxQz2xBxrX9r2uzTGGavchnY/POyFggecr4+cYWXdhw7HWegDLZDLB2dkZVqsVptOp22UlttWiLBPpVZoH9m2nXDtlbhytv8h3r0SeIfbSHHlDsgx9L1NrviHr4330IW1tFNLvQ2tcbdygHQd4utiHxWNTrv0xxYPScJBJO+IuNZam8iH5SvvJkHE9JkOM775I61u545G2/t43jdH3ND7eWi+TJ9mSJEn9JqS/yPc/1k9S9oIY/131t9AYL8NjOgmnkLyx/qbllUu5tsNcWXbFZ0ieoTTJM2O3pZjymfqqJvRS5uazbUePKeRf0pf0JXW07Tuxb0UiBBpsM2Zso5iOSbl1mRtvNpvh4OAAQOtJ99prr7n0fKESIz7WS0/ZXHlSCyT5TKah+9SYLpW/w8NDfOUrX8Hl5SVOT0/x8uVLnJ2deXGHkgRj+fnbEuzdZ38qBWKBvoEuxwBhbetJ+p3vfMeV/9NPP8Wnn36qntEbUh5z+rK2yF6v1zg8PMSDBw8wm80wn89xeno6eKtiAD3P3oODA0wmE1xfX3sgJ38PchR3oqZpsFgsnIzk1UAeudLQUNpv+AJFyhgzRMX0uZjeJo1WsYUEPy8rlQ/V8Ww2g7XWneOkAdEa0Jsire2axmK1arBatZ6xk0kFY3Qwtr3n/FpwtvV8NV78tiwE0ILlh0281rOWrq1cnbctNiAvnQ1rDD2nNgBLw+sdACwKuxBL2w+zFjC1QT2t2zNiq84T1gNEuecri8PDQ+CsHDNdOEQclr4H4LJ7CTK6fuYu/n2PDHxwztWHWNxqcQgM3fBx7zYHXyO/vfREwgvVxTem9TTlgKqBO1e1l498ZuDATWNN5w27OX/W2x6Z2qZq41E4B2PpuQOYqw7sc6As877lXrLWtl691jDPWVbvBps+RTIAqJoKDZqWn23PlCVv32patR6y/6fv48E3HuCrf+urmBxOHC8OrFEdZQPzfkP02kUL98BTUTYvzIr4ItyBp1J2y+Z4WC+uu7KMo9smc9lYHr3xludJcdl/tC7UAUepj1gc6Hy8MP6Yy4c+H68MW9IQPVDOUev1Gvfu3cNv/dZv4YMPPsDPfvYzHB8f4/j4GJeXl0nggOZUfrTDTRqwh1AMONSMvjIefVgndQ0tD67Pp/SoHPm2IQJjX758iaZp3G4ws9nM6ZOhtRkn6gP0keH19fUr1wd2QVp/kNebrqfUeplTyEaijUMxO0CJbUdbo8Vk2+YdCaUNySBl0c6DpqOb+Hu0rTdYCWnrvdAHNrE61LzpJZ/QjmCh/pVr20nRLt+h0vX+EPtADs8S/jdhHxqLQnOwvJdOCjn2Rj73EvGt+mP2jFeZQnUjvTtjekhOu8TCx3gnct+tm55Tx6KgZ+w+CjgEgMkd6MeQPwYk75OGlo0PPLG0tD0kbVN89+5dHB4eevmGto7UjJi7HsxCim1uvWzbfqH0ciHD++ZtHVRK8swZuPc5kcXGq6EgGe9bJQsITikALVVfY49dXJbYZCzl0s6NzM1bA734PRkG5IImVzmIgTKhtqf3MLbIJDCLwFag3aZ4uVxiMpng3r17PSVP8tOUSa1sxhjMZjMcHh7izp07uL6+dou5fY+pnIbMyyWy8vYhT9TFYuHOr5IArPQA1eozNsZq/ZrPjdQPaVvfWN/RykztuF6vsVgs8LWvfQ3f/e53HWj/9OlTXF1dwZj2a01a4GrjAJVTM+as12tcXV31vk6mraTIuMaBS61dcseXlGEk1ualfZfrEXLbbGoT+R+SVy625I4qUmfk7xp/FnqPY/V4crLE+++f42tfO8bbbx9ivW4NnLRNMXVtAmM7ngTMUv/re8bS2bGth2x7X1UWLeLDr+j9buuQwl1NsOfYPOfbGruS98qZQ131dPX0o5cLPLpc4cWycUAsB2GNMd5vd3aneCbTeGHoz3feVcmrd+VxYyBsoI/4geE6CoF0HMTicSTYyp878JWFp8KkVy3Jy0FTXgc9sJfVR8hT1tULA2V7+dC2wlRfBi5+VBZ6F8lrloBYwdc2tgOgN23sQFrAXW3FQNoarZfsxMBYg2qy8bBftX13U8iu7NbvK+65aM9Yu2txNSAvBA5y4LEHhErgNJJWBRw1Oa1Ix/PepNMAySBoqT2HXlaVAs9VQFYrlxXPlPi87iwUb14LdW4YAsrKuap0DqfdVubzOYwx+PrXv45vfetb+PVf/3W33p9MJjg4OMDV1ZXTPTSdlutOsXl4CI2t36YAdZJdm/dD8sTWhrJd6ErbP2s7A6VAGr5eGbom1ACki4sLLBYLXF1dYT6f4/r6OuoVK9eA9PEf39a4dNe6V5k0nZi/IzJcSxejFHAmx056FttJSbMB5IA8mm7M+fFdZ7hM0gZSUg88rfyIm/ooz497ZudQbD1O/5RvDt8c20XoiJoxKSZHbDwr4Z+ztqdryjY/tB62GQ9jPIF43YXeg5RtoCT/0mcpGmve0GzZMbm09XZJ3qn1t5w/Q7JoY3WpDkW2FMl36EcWuemG9J3UuzVknKR0MZ5j9HPJsyT+mDRGnqH6ivGOblMcM7593ihmpH8VSRtAAH0gaJoGp6enbnHWNA3u37/vxZFn6cV4agDJmODCkLbZR3tKRTe2eCvhSTxugkoHlG0G0dIySoVZU65z+IZk3UZZHJtCZcslqcjk8pN1W7I44TxWq1W0PbQFXA6FFhk5yq3WV2mxd35+7p5fXl66s2Hv3LnjbQWr8dPKplFVVZhOp7h37x7efvttPH361H1lPtZYOYRibRzTEUIGiZiivF6vsVwusVgs3GJbzh9kAKQ0of6jyablTf2R36/Xa9R1nVV27d2ZzWZYLpe4urrC22+/jd/4jd/Ahx9+iCdPnuDFixc4OTnxtkKW8mgyEm9azDdNg6urq16dkxGVzn+j/sONZaGFTYxC+lBqQcb7b8wQE1rk8jFKfqwRO4MtZPyhduXGJS29lDtUFxrR87OzFS4uLnH37hRvvDHDel1tPFp9z1hrzcartfOQNYbCrQNhu+2Mu3Cg84C1lryS23BsgNUOpIULpzK2oiqIEWS49jyfeLe2m/ufnC3xxy/mziuWADRjjAPhuFGM/3uAKfRnan/f/DTGtF6UBLYZ9hvw82D3Hr9NGg4oSiCTU9RjljVRDKyz1nZy8O2HFVBW9Yzl/V2ESbDWgZUQ2/1uZOjlYayXJgRM8niSv3b16tf6nrRyS2LeVqHtij2A18I/b5b3IQ7OWnQfA9TGbVdc1VXrrdvYzhN3I6tX9lC7K+2tRNCD5VxhlXALSIDQPbfiN4GmSlprrX6vzZFaPgHw15NNK6ftrpSnShY9eTTv3GBaJcyVlf1FZfSCbLh8hUMovZv8vmQtSHHp47arqytMJhO8/fbb+MY3voFf/dVfxePHj2FM+4HYbDbzPD7lXOzKaP0PK6fT6Y0BcdsY5bmOIef8kB6Rmy/x5LoG6bVS/8ldm25bv8SHdMjLy0ucnJw43ZIfyxIrFxmhuV42m822aotd0a5sJym9lUget0F1ra2lS9Zc2jonZquVa39ZhtRaWePPyyNl4uWj9PJ5ao2uxaFxivc/oPtYd9s1My9T6XvK02vtWzpGjrXm38b2KCm2ji8J3ybPbeyLMUqN56H8thlbhqzJb3qM1dbOKZvQNnlp/DU9JcVjG8rBUchLPIdybOra+JhrX4zFG/u9uQna1zuQU19DZAml2fk2xWMqaXIbRyLazpFTKM+UEvAqUK4Srw0iBABI+vGPf+wUq8lkgj/7sz/znltrcXp66qUl/gTiUrwc2ufA8KoOQjGFcKwylU5oJRNOiXwlY0Rq0XhbiRYMUv4h7bhN++dO6kT8APvZbIbXXnsNxrRepCHQhYgAoW3ajMay3D4SNMoDHsDDw7TfRBcXF/jwww8xn89xdXXljXdA2Zduh4eH3llLV1dX+Ct/5a/gt3/7t/HkyRN8+umn+N3f/V08evTIbRt29+5dEOh208q4RmTwo3LRlmex86d4GzVNg+fPn+Pw8BCLxaIHlOaOe/KZFk8zLFxeXsJa6xb6vL/G8qZ+aYxxQOvZ2RkmkwkODw/x+uuvo6oqt8sEGTzpS24OlvK8QmHWdlvt0jPNcDCZTDzvWk3unHOMQvWp9UHNABHjpT3XDDByXJFf4nNPHkrP3y8u03Q6xWq1Uj2T6V4Lk/Mfl5Vkojgk13K5xnLZYDptNm1iNzL5V2Paf/otq4+ek5ds01AZLYDuvvO0pfgE1lK5OOPOU5aet/UEdFscd3IBxpMrNe30u4DF+y8X+LfP5/h0ZVswK7A9sTHMG5ZvUxz5d2kRMDoy3qnfPA0HGIMArGu7QKXE6oqeWcavV3Obfma7+zap6Z5HfgfDqk0fEHFg4Lbl9cBNY7pwnpfppwHQbSfMti92nrG0nbDpQFYn0ybc29q4YuAWbX8MdEBoA+88Wb5dMXnEeqB0xYy9VZc3gO668Xw11sA0BhUq2LWFNRbVqsL1yTV+5z/7HXzlL30Ff/1/9tdRT2sPcPPO+I12gjT1xlSeTwhM5XGs9Z8p8ay1Xpgbz7V7Hp9dvTnAwnvu4oDdQ9xveGgAqOMjZVXqxN3zf/jXnkerqEOflciP110oH1H/Kqhr4D40kKTpKUOI67vr9RqfffYZXrx4gbqu8eDBA3z729/G+fk5njx5AmstDg4OevYUmvNWqxXu3LmDe/fu4ejoCNPpFI8ePcLl5aWzC+xzS85S4uN7qZE/BEjJ9Fw3oDo2xjjvU9I9OL+YXsXzGqM/kFxcZ0rpZhSX5H/99ddx//59PHz4EHVd48///M8d2C/rYNd0W207+5aJ2pVoNpuhrmu3FhvSd/gHsKH+R2HSg1Wum1J9W/Kj33y9Qx/tSn60XTatq/bV79brNY6OjnB8fOzJYq3Fs2fPvHWGZrfeB92md6Nk7X6baBdySZ4x+5g2F4fi3dY6vAnK2XkiRJrNIfS8JE/Kd4hNPZYv1yW4fjOWHrlvGkPfucl3Ycg7OvoMEVJyh5BMq+0DTosNGVcLkx01R8YS+UsbX2uYmMIfU9q1vOUe4RRPO4fvxYsXybLSV7CSuGE3Z4DT2kCjkDE9Ral6jdVxbpoU8cEkNfjmKKo5Muf2j1RZSuKmaMikk6oPOdmE8pJ8cttd8hhjYugZqyJy5tCQsSaWPiYDbbVF8fgZp9IIIXkToJjKIyRvqi/yd10bK7X7WN/Q3tnFYoHnz587L84cz0aNjDFuK16gPV9mtVrh/v37+NVf/VW89tpreOONN/DHf/zH3phKICEHxW+SQvNySAGU47HW987Pz7Farbxt8HheoToe+h7wdLTtLzciaV8yy37GyzmZTLzFd13XODo6cme5Uhzy/uXbvMm8eN+T9ShBVG5Qo62XY4sHbdyMvSul76w2xw8dOzU9Qcqm1ZvmPUv1LNPn6iEUl4ySUh7eZu2X++3Zseu1RV37nrHG0DhKZ8SazTO47YcpHmBcOAGyQBunte7zKyceJp9r91QGrQZ4HSMQR6QQcZ5dr/GjlwvUs7rd7pVAPOMDojysB9LSvwRCN38cUHXPNwAd8eN5yTw52OoBsabLLwnCMpmyaRNVeqcC6IBH8gAlYNVaODBn43Xq+uBGTt6/nR4D63maStCW0pMMzhOXpSc5HFDLvHV7ALNBj6eTVXjE8rqnuPy82573MCsvtZOLI9rHGuvydHE3YRzwdR6xvL8wL1lYwNQGy+slPvy9D7FerPHX/qd/rT+WkKjGlzu7X9h+eT2+VB/WD08CsVb85nEEfxWklGEQctp+WBA0DY0jG/mstf3yxihDrlSaHqAaq49QXgF+vM5L9X5Nb8lNxz30Li4ucHl56c4MffDgAS4vL3FxcYHDw0NMp9Petp8kK6W5f/8+7t+/j8PDQzx9+rT3QdQ+jX+lOsa2eommE4bWoFVV4d69ey7OcrnsHTER46U9j8ktn4f0ONKF5FExKaK2PT4+xhtvvIGvfvWrmEwm+MlPftJbm+T001z9K0Y3YXAdy6aprXFi+q7kI+d23ren0ymm06kD0IccOST7UcweF5N7rA80+A5JnOhjYHkUUkrmEOXYV2k8rKoKBwcHLs7BwQGsbcFYeZTSGHakV5lSdtbbUjcl78c240/uux7Lc4h9NUeWWFvEbAk56WW80DtaIhORtFMOoZx21WwTId1Ha6/Sts9pD/odOy6xhEp0qm14jjGHh3gMkS2kzw3pjyW0l891tEkoVkmhTj2ZTLyvkCgufS3Fic7DkHlq3jqhSbJkkBnSoXINgbeNtIPrY6QNjNuUPfUSlPQtbmiV8UoWbdS3eBpuFNfO771Jyln0Af2vHEvOvihVVnLiU71KgE/W71gD5dD3LzV2yIXUvuShq9xWQ5OXnzdF3qAETM7ncw+MjZ3bYq2/LSz/UGZf45szJieUGtpOme8AcH5+jj/5kz9xY8d6vXYLMCB+Vg8PlwtmGffu3btuQcfTlWyBMjaFDAU57778GEimp3NaAeCDDz5wQOVqtXLgLoGWJfpDiozxv1Sm89C5QSnXk5vak48/l5eXePr0qQOpSTkmY+dsNsP19TWeP3/ey4fiUl/jc618ZzioP5/PnYev5vnN33vKp2TBxPMNzYtcbnlGWoxvzIDL52f5/kp9Tj6jNiYDKBkeY30n9YzLoS3IiJbLBtfXa0ynNYwBJhMDayvUdesa2IKugDGAtXSQJhltfC/XtmwtcNs+h0tbVfDidv/G8aG4xKuV2bJ7APC9ZymdrJch06q1FqhMuzXxxHhescYYD0yj/u+8YoV3LAy8bYVVoJXkZWHc85E/ozCZhpdZgrw8fFNzCGJsJg7AeX2WA5IEahHQynh43q4EVprNGE3h6P/OvXryGQvTbPg3Cn/NA9Y4QZ0nrLsycIpAVte3KtvFQ5vGGNMBpXSmLNUNeb2SfKaTyYGOdlN/jen4ch6bOnO86R0j2Wz3rJpUaEzjPiawa+sAWrUtWTvytisiLb0CaMZAWHkf84jlv4NesPDv+b8by8Vz9xt+HJ6Gx+Hl0sLdby6zCHP1IutOi8PuVYBWidsrP9AvFxTZjfgtswsMsqXrbgBOnyW7yenpKT7++GN8//vfx09+8hOcn587O0loHua6wmQywdHREd555x28/vrr+NnPfobT09OevlIqZ4y2NXprxOvSGOPpBZQf1xfonig095Pes1qtUFUVvvnNb2I6nTqP5J///OduhzfSa2PrJnkvda+UrSP0XNvaNcaH6mE6neLNN9/EN77xDfzar/0ajo+P8eTJE3zyySf48MMPYW3rXR0CzjjdRtvWNkT9I7YjUIhydWzKR+rY1JYETB4eHuLg4MC1gdzNifLgOrsmD4/L85P9hz+jM6jpw+VUH+fPaK1LH4B//etfx2w2A9Cuwz/++GOVjyZ7qY2R17lWfvnOUx3wfn50dBTMe2zjvUa7GCu/aJRbh2PWc2rdyfv0PvpRDo0hR04dajaNVHr5XlKYpBKv1xwqwQxK+Q7lqW0ln6KSvLZ9D2K4iMY7NwzIe5dvy5jpgbGpCXkIhcAujVL5cYWAd3rtrLfYZCif3ZbBLUSpiT0GAMTS5cRPPY/VZU57puKmBrecPisVLi1Oqv/I+pbPS+5zgKGQXCmjdYxKBnTN+D+EX6heY+1U8n6G0gylMcaCkneA4qQW1ZxKJ/zSMkmwQXq+0xmqY+RfMkbF3t2Qwpozxmh5yw8prq+vHS8C2Hga3oaxPHuAAbovfsmbUi7mefx9zVUl77W2UM3hTwYFay0uLy8BwIGwNKdvM1+FZJaySkMiAfEUP2YE5W1IfWC5XOL09NTblpji0jEB3Eihvc+5ZaP301rrDBjyoyAtTWgO4u99yZxcooPI/LSw0PwZWpTSb16nvG3oOlTxzl0AkByLxRoXFyscHtaYTAzWawtjrDsntvOUbb1iraVFZwuK0pmxgN1cjYvTWfM1T1b+HPCRse53m2eXN21pDHRhbRn9cpXSsrG4WFlcr20Lwhrjg5uGvY8E5Bk4kNUD+Fg6+cxrC8GDe0m69Ju0Ia9aJyf89DwPFYSl8EwK6jqUJ/c63TSh5w0L4a3KvWRZGuLlecQGPGQ9+TZ5eXKA5Wu7evA8ZYH+2a9tpPYZz5ddZdeNecZ6dUF9RHlOfHg/4v3G85AV8by+udki2VTGXdeLNU4/PsXhg0McPTxyMnh1A0W2GCmvmrrNrdWfuT5k9fteuOTFeWqvfUg+Nar1fwuevflHgpeZ+Qcy93nYvpweMK0XLJ+86rR+/iUyb4jPeXx+G2JU4yAhHbvx9OlTXF1deTuRpABf0pMIcOE7vYytm4bWUbG5OEdfjK09uV5Ukr/kRfEPDg4wm81wcHDgjo9wHxwZ/SgpKQunkL4WKlesv5S0F/GhDyan0ynu3LmDu3fv4v79+zg/P+/p9F8kkn0l1EdzbWK5tpVYXyyxjcTyCuUT0sVpDRIC41Nl4+sT+nCB1mSvv/66+3iWy5EjYyy/EIXee75G4h+aL5fLno16n+v2sexg29JY5d2Gz1DbwU3VYU7/jdnB+Xszliz7HMdlnqHxRcYPUY7tXLMFbUNjvutj8AnZUUr535b5PGZn1HQlWd5cO45Gu27XoGdszBC6y8EqV1nZB42hxObQWANoLvEFACkO9PUZAKd0S6LtTobmtS3RQjC0SALCC7VchYtIlj+Vj7aAi6VPTS4pIELjfxN9aN+Ki5YfGQO0s6NLKGeBMJTvbZnMiHLGWakUAe0Xto8fPwaQ5xEaWwxpixviG3rH5XsptwKi+KX9Ur57fIFVVZUDSauqwmKxyPrqjvim6vr6+hpPnz7Fa6+9hgcPHnheuSSL5iG5C8qtOzmHyPkjJx8az4HuHaYFON9ii+KX8E+R5uFP2/DPZjNnKFutVri6uorm2TSNOxPs8PAQJycn+OM//mN3bhN5jsznc3eWbq6RgHtmaMomBx5DXqKcCKjVFnlyKzPZ11LvMjcuyrN3Nbmkd4pWrpQRmgPdPIx7XVO55JwljdyhsvEy8mtIt7HW4tGjSzx5co2/9tdew9tvV5hMqJ8bWGsY2MpdATtPV6omEoeu1lKczpPVGP7fecTy3y3wyuO3qJfPv43Du05XHUYJCxPx+MX5Cv/dk0sszcYjduMVC4Oel6rnDRvwjHV9RYJl8IEzF7cS9+y5d4V+79rbYWqGV4XfX5R6SQGzPfBTxOfgZ+/esPdiAzSFvGG1sBzPWBi4s1uhdXfyQm3EPTZXqjd2fqt7Rlf6beB7r248Y90ZrxL0JfAZXRtZ2O5cWYvWq9ai82A1Ih8C4jZnzHpnx1oANTrP2KZCA+YZO7F49uNn+G//l/8tvv33v42//Y//dq8N+dmxxRQBIj1PUHrEX1wCHiUQaVlc66fjYdQu8hm/98LYNfkbfd4yjrW2X0YrflM9WHj/FiytrEurpBF8NE/ZWHmC9QDGO0UGalqvCIm5METWWlxfXwNo9Z5nz57hn/7Tf4rr62ucnJygrmvnzahto8v1T9r147XXXnPed/fv38fLly89UPe2gAKcQkZePodowI7UPVP2BK4DnZ+fYzabeWuGmAG4RHcuib9Ne5AeR16X19fXePHiBU5PT1FVFe7fv4/Ly0u37TFdb4r2aQvR1mPcy1rqwClggQN5cgtpqedrfKy17uPh9XodtNnxOtLW+Zq9KvQ89kx7Th8jpPrIarXCL37xCxwdHeG9997De++9h9/+7d/Gixcv8PTpU8f7j/7oj/DZZ5/hzp07rv7W63VvZ0QiaXdIkZuPRLnkrmEAcHZ25njSmlim3ffYuG/b4Je0W5Lrd96+Ibt0Dt3WfhLzis1Zr98E7SLvXDyuVDfMoVL8pFSOfdBtk0dS0DN2SAWHDIax+PJ+yKHLsfPdhlIKXBiTSpSDELCTW35NUdqmrjR+Ug4tTANPchTAmEIoJyaZJ48Xklfyy6VQu8Sex9q9ZBItkZFfc+LmPJNK/VC5YiTbLHROUWoRHWrXkKEjVjZtrNvF+BCikgV9Si4NoNDI2g6ozN3iQyqKofFLKpkyboyP9l6Xjms5c5s8jyEWX+uTfH6j37RlLc1/HAim+ubnfu2acsZEOT5Za4P9IaYTaMYwMkLwd1zStmMO8eDjB+VNW/vRfc6WxfxDkPl8jhcvXjgPavpamoyV1M45Z7uGxqLQOMV55JQ7RildYUi7yPE6lO8Y+tcY7wrvnykjLaflsj0vdrlssFq1Z8iu19rZsdTPAGJhTAu4tuw1D1nKl35vLPnSrZCjYZvfbZ7tfVsmr7QsLVjc7pkflqo7YGktzle23Z7YMGCTxBJhxpieNyE95+HOoxV+HPcscs/zatkZ9V4FZdH/7YGzAqxNkSsDgUC8uTb5qF6xmzjuPd7I6sBa8miFMNygC3P3JWfICmCXy63eU/EsK5uoL352rAeYGlZ+3l8kKMu8Yz3Qmj8TfJ0cSj5uzjFQz5p1YG8FNKsGl59d4uXPX+KTP/4E9756D3fevuO1q2jwMMXeK9fk1rt3j63tx6M41r/35l+Fn7W2S8N4ufvNcwmMevzkb7mO4/nyssjfSh5e+bQ6E+FBYFaJLz1lQ+UJkia/zZiLNnHWV2usr8JHfgwlzm+9XuP09DS5hagkY4wDel68eIGqqnB1dTXoPMptSNOrS9PKMGkf2HYtS/xevnyJyWSCy8tLXF9f947XCa0TNHm5DrLPdSblDbRrlouLC7x48QKffPIJrq6ucHFxgfl87unQqXreh6xjk2b3KLEPpIivLyktXwuG1lFyjURrRmutd3yKpruW2rhKqTSNLAutfQ8ODnDnzh288cYbmE6n7kPL9XqN2Wzm1p8hoDpme0vJE7ObaTZJKkPJmmwo5bxT+3jnYlTy3u9rXBvaH3YhQ2rNnOrLsfCS+ix5J7ahfc0DlFdunFKZhtT3rsq9r/qM2fLGTl9ixw7pRPvWk4iG2OCjZ8bexAAVUuSAVh7tPAYNjKUvQV9Fihk8cztXyeJIG+xz9mjP+fpRMziT5xMRbTsiZU2dORKSawySClbsOVHsPLqbWjwNyT8Wd1dfvJYsZqiv0FhAC46cRepYiuvQ/nZTinFOueV7zxcVXGEZ0s9DoBInbQxIyR+a9GLlHQPIyyHZH61tzzfnW8YBwLNnz/Anf/IneOONN/DgwQO8fPnSS0Nb+N6GM6epPPJjmtVqhel0qgKGueevcjB0Pp9jOp06b9XSM0NiRGnk4v3y8tIzfgDttsmHh4fuK3O5yKbf/Cvsk5MTPHv2zD2jrbbm87lnJJlMJr13bsjCgBvKeJjkwcNIZwqd38wNOLy/asZBTW5p3ExRatyQRg+eDx+juDFEO7M4ZHzW6kAzfMYWwlrc+XyNq6sVptMK1nZnx1ZVA0vbr9oKpNZaCxjTXlt5uqu1HUhLHrT0zP/n3rH9eNrvNj+zCbOeDFwOkrmEqkkFcI9Y1mYEenkesNwz1nRpPLCWgWjuGXx+rdwRPjwM3bMgCCvCvWec+PMI+lbqFUthqpcsPWNgrQeqim2N+VmnDmxVAC9jzDDP2M29d44rxTFdXGsZOGxZPAPPy5a3gQR7XR70jJ8jW23qhDxkqY15PhSvafudqx+glane9K1mM3bWnYesNRa2sXj0h4/w+I8e42/+J38Tv/4f/3ofuCPxc94fDgwq4fxegqlZIKy45+EujABY7Z7ly3m4Z5ur95vHYXn17mH9NBwI5uVhdcFls/6DvhxSFl6n4rmaloWFyqnGySC7trh8dIn19caDUowHcm4dQjSXLxYLGGOcbpNzvmdd11itVjg9PcW//bf/tifLkLPJbgvxvjh0/cB5EFj053/+555uwUEkCiO9QVuzS307FHfXRDr4er3Ghx9+iMePH+PJkyc4OjrCcrnEfD73zictWc+/qsT16VjZQjqy5FVVFQ4ODhwgK70u5W4zMX5XV1cggFKuwahflfajmI4es1mWUFVV7qgaoslkgjfffBNf+cpX8Prrr+P111/HN77xDQDtmuQP/uAP8OjRI7fOisnKy6LZi0JtI9cNvO6191Zbe+2CXoV36lWQcd/E+witw4fYjoc+u0naV3/Q1vpj5R2yI2iUOxaMBeTm2GBvE4XG4ZBtN3S0w20tXy4Fwdh9FCw08YVI20ant6Bk4aGXQItbIvOuFE3PcKTw1oyRQ/PRqGQwKBmIZH6TycTb1lJux5LLP9QWGm07MW1T32NNikNl0EC2HL4xozWlK5Up9L6ORaF3PCfPbSfu3LEhtdDfdd3kUqitqN21BV6ID3/O+01oLOaL3BgYEjqfKLTYCoXHSCrLpfMFJzrfk+puOp3i8vISP/vZz/DZZ5/h6OgI5+fnve2qZL43tbjTjEFkpKmqysktv/CWPGRdDnlfpcyyD4beOzIsWms9feK1117D0dERfuVXfgVVVeHs7AwvXrzAz372M1RVhcPDw955RdqcSPxlWagdl8ulCsDKskiZQ2WXdSjBb+pDfEtvaoO6rl37afnwtuZGiZCiLGWicEqTKkepwTnlXSzHHlkmmb/Gq+Rd89sDODlZwFrg4KBGVRms1y3C1HrGms21BT8JaG0ag6qyaIFP7hHbetTy82T5GbOt1Z9fsUnfgazW8rql8sp7sDR0D8cjh67XFr+4WuGTeeMAL9f+m3sOdnrPAAesGkM+sKzvcF7o4vN8OF8vnF1VT0nGKwTIevdQ0irhPbJ+3N52tpQ/AVCbZuX9S4KyLh0/U9Z03q8EVpInLG92z0OVAb7Ulay1XlmcF67t6lO7p/y9Mon67tUVaxO+DXEPhKV79oyXhb8KQ8+O5eHGmBbEZWfHujpuLJp1g2bd+K8fa+9eW+WSTGIFH87bBuL0WIj+Ztk8ZEWe8p7Hl+l43taPJ8FKx8raHsjqlUXw9soQkjVWzeKZCsrG4sZYWwYoR/KMyiaG5V3oesQz9wM/TffN1VFuA0lZQ+uVkA4Sa3dvTBb1JOs3tYagcSa2nhqyDhmLeL85Oztzx3OsViu3FrutIMDYlNJXNT20RK+VOo6my2p5yTylrFoZQuuOEuJ9Y7lcBj/wKLXDWNt+xHx1dYWzszN3XBAAz/OXr2NC9q7UOiAUT1KqfjR7xxflvSil21ovY8ql2dDkuj9mPxsrX420vPc5l29j++GUo8to9g0KT83x3IEshFnwD9ZD771mB5FjUUoWrQy3nUJzV8gulNJ/UmG3jVIyRj1jd0khwfh5apJWq5XzEpK8JD86my0nzxLS8toV35ugmDE7Z8DWwBIZbzqd4vj42N3nfJkbopw6Sw1W29b7GO22Sxm1QTB3AZ1SSiXP3Ilh1xPITU1YISXrNrzbQ0hTcOjcyVzlgfh4xvOAQqJRzPgQM14MbXONDy36tjkPiZQ1UuyMMTg4OMDJyQmePHni4pFHKBEBuET76kshJbIFkfztlvnW1RIgp3rjYw71IdqGSvKMyaHJVNLWVVVhOp3i6urK7aBR1zX+0l/6S3jvvffwj//xP8bBwQHef/99/Kt/9a/wox/9CHfu3MG9e/dwfn4eBC6JyFhAz0lB52eX5shrrb71sxYv1iepfvg8e3h46L5C1+bfmNFVPqd7+X5L41GoPEONuZqhisumGUT5WCLzi9W1VgcheXkejx5d4unTK7z22gyTSYXlsoG1dHZsA2PIRa+CMdiAngTAWpBIdKUsre28Yx1OaML/BKa2svmgLD9Lljxf+dmxPE9WSoSay1rgZNHg//f0GgsA1bRyXrESlE2dCSvBUw+UhXjGeYTyE78leOsBIPQ7BsrCv88mI2/FXMjQGwfKMo9XHkcCqDm/JTkPWuUako88XgmoVe95MgMPUHXgL3mvWubFK+ubebJqnrHE3xjTu5cgrOxfqODOjLWNdf0SFk42WPTOkzW1H07ySiAx5h2dSyFwTwVVRZgES+X4yAFVDWB1YbDevZYnB1Z5H/bC2W/+73nF8vzgy9vLn4eJOvP4KXXYm+dYmbzysWeSp1dnokxqvgDchwJCnn0R1wmGpOXnPo61ttoXYKHlE1t75AI4mj4SM/6GiGxg8j29yTUkycD12pcvX3o7qPAzMl8l2mZ9Hmob3n78Y1pNB9bsifwdk3lp1xAPrR/SfWh9p21rXEK0lXnI+J561+Tz9XrtPox9/PgxDg8Pnf2QdiwC/I9cQ+dXp2yYMv8cQIDHkV7LqfAv6YtJsh9su6vitvbhm7ZPpt651JgJ6LZKzU4Zwi1idUAf41MceZwY8eBgLI31N123MdqXzkWUM57G4sbq81UfW4vA2ByjaClpk5pmJOPnBAzhnaKQoX9bviXxtXjbgI2hF40bC3MUjxjlACqh9iT56rruAefaF6U5L2yoDCEwI1RHIUVS4yc9BLV8hpKmZFM+KeN47rOYgTynHmJgWUgGLUy2S0yGXAVl2wG6RBEKjV+yLNtSikesX2hxuGwxD+oUH7ovGV9kf6Y0dJ9qw9D7VlrPsn0kXynfGER51nXtbU+lga+0SB5bsYvx43Uf67/Ub+hsVPqfTqew1rot8bS+QvVJgO3x8TFmsxmOjo7ceVS5ZchtF2OM93X1t771Lbz55pt455138MYbb+Ctt97C0dERrq+v8eMf/xhAt7U+7wsh4n1Yhseea3Fl+eT7wY1kMj71maZp8PDhQ9y5c8e1ySeffILlcunpVKVzZ4xCZed9ODSXpeSRz0PzCF3l/KaNLbn6a8m73/Vvg8WiwXy+xmzWyjKZtChQVdF2wu25sQCwXtsN0BoaL9vnTUMgLXnYdh613TbF3W+A+i4f0wBr6b7Ls/1Naei3VxPQqmLRWPzZywWeLxqsgR7Yyr0fe+EijP5cuABFKZ2XRuEVAmUdoAd4snnPeNhG7vbi33cNVA6+eeAdsaUtrNl5pwb+Ga7G+GCpB5zaNq3nEYt+fO9KY4oIl7J6YLD168m9y5s8vfpgbc+9Zr35FbbXT6gejDH9LYmN3za9s2P5Wa/Gj+P+gV7eMp01G7DWdls8m8q0WxjXXR19/P2PsV6u8c2/9008/ObDrp4CXcLzjpbAqkYuiojLw1l6N15Z/5m14rcIc2noGQdiWf7W+iCrB0BaoQNa9H575UiULVg3AZk1cvJE0qjyAmqdyfJyeWTZAbh3FwivT/ZhvCv12JTxeNxdrHM5pfStbfmn0pToP9paMHddwvVm/uGeBpiHdJ8cGYeS5EvHbEiZXjUas29pun1o9yaeBmjfSTrGhj6S5LxDgESof/HxJbXeKFlDhdYmMg7v+5oOLmUH/GPq6NlqtcInn3yCy8tLtwU2vRPWWncuMw8nPnLbY5KDPLpTRGsoTdbPI40x1r4KdBvLmbP+Jtq17Lm2CU5D1vCxtCVxQu2pretD9Vli69Xk2Wb+k/mXtm9um4TsMqm0MX2jRKbQB+8ldRmKO2Z75FBun8klD93cpjMMpZzCkLFaix9TBnLzjCkqoRc8N69tSFO2Qvlp9aINUHJwylFItp0MZHoNjA0ZTHl+IYUulCZGMeUz1B9CaXJBkpI6C8VNLX5y+6LkI+s6puBri49Q/qEBKxYm85CLCiK5SNUm3pwBMyZjbPLNoZJ3OId/rrEkNpHKODFjQUomLX6uAhCqW21MCs1NsYVhqo5z3jG6l32ktJ5i+dBZN5PJBHVd4+Liwts+N9SHcknr39vM71r98jY7ODjAZDLB0dFR7wvCUJ8jMPbOnTu4e/cuvvKVr+DJkyc4OzuLlp/3txKFmjxzAeDb3/42vvvd7wJotyp+6623cHx8jPV6jTfeeMPNPXR+rSa/pNA2xKGvNzmFxkFJ0uDBeVG4te3Xmq+99hq++tWvunI9ffq0dwasJhMf31MfHZUYcrh8MpzzzXnvU+95SG4ZP9doqj0PtROFL5ctGHt4WAMwWK8tgAZVRR6mHBiluuhb8AmE7XjTFsdUV0ZJ1wGtbV4ciDWbqw/MtmXsZKDipoaN+cri+8+ucbq2mBxNYDbbukqvRAfgUTiERyzg/waLxwIpHU9L95ynfM5BPHkfA2I1b0+Sw6Oc4ZXqVICZHl8GphIAS0ArAaF8S2L3bMNXArTEO+YJS9schzxkPZ6snA7M3Mjggaa2qz/+zKsvpd0prjHddsEOhOVbD1P7GJanYfKyvsb7gSsnu7ozZzdn1jqv2Q0g64GxdN203cff/xgff+9jPHj3AR5880HXLwLDiQ09EH3Ei2v7z4PesJuwHhAL/7e14rnteAbvKY2N5LN5Lvk7GTbPNE9Zr6xKmSW461WblresahnG+DmZRN3wvGJrR08uGc0oYXumkAGrVC/ch51orDxieoqmg0kdKLS2DNUlhXFdh8fV7CL00R+BSbRzjCZ3SEfR5Cmxb4V48GfGGAdyUbmG7m62a0rppyV2o5z0sp219g/xITBWfpDLy0FxQ4bt0Hok18ZTSnJ9zNcLObvN8N+83JR2tVrh448/xosXL3BycoLz83Ocnp66tLPZzB23wvnxfkplns1mqKoK8/lcbY+Y7UKOCfsY+/ZNY5Ypx+ZF8bbpf0Mop5yltq9cviFeobH2i0Ildq6QjU7jmWOfkO/2mFQyVsTmXRlniBw5cXLtokQlc4m220NpeVJ6z6tKo2xTHDMajtGpaNuLEH9twr+timGMQoZHGSf3pQp5y/Cw1EQY6/jSmxVIfwUYy2dfC7vU1o85inMOxdLnKiq5z3dFqfqKLRBjIEms38XqPjToh0CJVF43QbtaFKZ48MUS1ZccI0J1qIXtsk53lY9cOIby3mXZrPXPKiUwNhb/Jt9/7d2VoCI/42i5XGK5XDqPWJoT1uu1A52pfafTKeq6xtXVFaqqwt27d/Hd734X/+Af/AP89Kc/xQ9+8AO8//77bnsqmnPIUJUjryRp5Lq4uMCLFy9cejqX6Pj4GG+88Qbee+89LBYLnJ2doWka9xW21i6aMr1Nfwst+FLjhDHGM1BMp1McHR3hq1/9Kowx+N73vueOfIjx0mTTxt2YUUPrL3wM8gzgwogl+WlzszSaanKE6ji13aJmaJO/07qvwS9+cYG7dyf4lV95AGtbz1hrK1RVu0Ux0G5ZbC1gTAP/vNjOC9VauWVxC7626brwtv7IC7Yf3snXxWnz4GBul5Z+0zbGIbKwqCYVKgKuqB0ZwEb33FBpTOcJG7uXgKsHrmleuKafnwYKu/is3Vz7sXhdZcAHYJVqiXnIqt6SlvVlBmAC6M6BFbwJPO0wv/AWxZTOhTP+XAYNiFV50lwqwFnPo7Z7Bbr0VEa+TXEjAFFKvtk6mNrHA3mNeP8ozAhZSEbezsTLGC+OqQzQwN/WWICuPTC2ZuGbOiTALQS2JvuGaBMlkgrOemMYxZHgIb/X4lhfVwzeb9JKIzzPh4Osbnxmebl7zkvIpIGvXlkC/Hp1auHLgj6PHiAsnnn8RZnksyLA9WbUuy8sSX0gtq4MfQQeMwjTlfQe+RFfSE8h3dTa+HEWFD6bzVxZaHea0jXkkPUOeezuyoC9T8qtr5x64usdTiU2DX4OqhavZD2YKltofZHiKd+B2HpH6vKx42hC9ibyGj45OYExBnfv3nVpNOA6pMvTB8+h7S6H9OOcOuYfVOzDzvklfUn7pM9Ln47N7fwDfqDv5akdY8btHDwsND7J31pajUrqP6T3lPLZNYXG512M0beBisDYnElaUmjyKalUabyWeWqT91iAR0nnjxkkc/OKgSFDOqLkp73YY3Z6jV+OoTlUV1zGEoN1jC+vh5AHE48TMv7myqClG1JHufmE8ighbTJI9YmhfTM1MfG4PE1J+XImNI22eadvcgKQ/TXWj/jv3I8ptu0Hsfbbdb2V9DctzrbjIl+cpfKKUWpMio03JZQz79M8bEy3zTIpsPIMLD5fcwXXmPbL5a985Sv4W3/rb+HOnTtYLBZ48uQJPvroI+c1QPWnndmRIy9fwBtjcH19jfPzcwCtcevq6spt6UuA7LNnz3B+fu4p3DHFPUcOHifXIBYzGsbikmfv/fv3e4A4fxe191KO0zGdLiQLH1e0d017JmXS6oobOamPyTqKndck57dQmWNjaKzu26vBixcLXF+v8d57a0wmrWesMQ3W6xb8bBqgaVp+TdMiOVVl0TTtc74tcfsc4Ge90ivVNN29tVS+ziMWHgJH5eFbEfMySh2ly1OjtQWWjQWqFmpydbsBx6S3qeflati/dq+R6fJw/EwHtrl7agcW3iY3jge/d/HB4jO5QiBsD7CNir6J6PAg6zWLAxOpzxm0gCzFs50sHFRy/XQTn3hIoNQDomQZuFym85QluRzYyvgRiOvqx4oyUXXS9ssC6JXAqCvjJm3P05XaiPJldebqTWkzDvS6/iXqQANtvf5I/Yi2LTad/PSsWTZYXa9Qz+ounFHUIzb0yCrpqJ342MT7lHxuWbhV4vA8rJCFpxH85dXaztvVwgc+OehKfPi9Vi61fJbJoZH1/714WrgsC2dF8lml3Baq/MVr6GFqZZrtCAa8XdNQnXqbPHLX4yFwLZQHzUe8/ckzkT+TfCg+HS0ht0eVcY1pvf5IPrKRla6NKY9c/ZOXict322moDSCmG4f0ZS2vkvUJr1vZT0tl1/oNl0eTLWSbybUFSX09FEfmH5OBzoc9PDzE0dGRi391daV+7KmVWW5bnGODDBHx1dYXsmwheb6klmK2wF3mt2seJWPOLso+tJyx9ki9z9u8UzEaYpcsyT/HvsfHkaF6VY79UeOXEyfFbxvb9y7j5rZbaN75PIyno3jGjkUlnY2nuQ1esKEOdts7Sc5CI1b3KdK+glutVh64HvoKMKXASFAjJutNU0yunEk6NQDxOJoCn1MvMWP5LkmTL1VerX+UgBNj0TYLpV1RatyRoEpscQaE+5mMEyr/bakXol0pi0OJdn6gOuRAYYqoPbRdCnZBvO4mkwlms5m7v76+hrUWv/Irv4KHDx/iO9/5Dk5PT/E7v/M7mM/nLr22bTEtrh8/foz33nsPAHD37l380i/9Eu7cuQMADti9vLx0YGiOAi2JvrKu6xp37tzBo0eP8PTpUwBw2yNPJhPcuXMH1locHBzAWovz83PMZjN3nlPMICHH430T6UUkw/X1NU5PT7Fer3FwcIA333wT1lqcnJy4/iMNLdo8IMcOHp/nTfG19DJceo9w+WUe1M/pXaEPAAgg186ckn2FP5O6IzeaanOqNhZSmfg7SLLQtmhtPODiYgnAYjKp0DTVJh+APE5p2+IWcG23MQYMmsagrgFrAbMBm6qKy9KGt2fNdvfyvy1L/55fu/qxEE3VuydaW+D3PrvG03mDq9q0XoJii+IeeFqZfhj9I+zlGvqnvLx24vcMZJMesZ7XLUQYWPjmt+xHPUq98tQVHUvjwkMesF48x8Z6YaF71TNWFUuJr2wr3PO6ZfXl3Yv6cNsA281YoPGn/lKxsWTjsUpbBxMoxtvZ23J447XqnsGSA3qvnV04ut+22oBrbMtizTPWWANTt/3VNpv8rcWf/t/+FD/5736Cf/d//u/iwTce9Oo55hmrgq6bcP9WgIIyDGxeVEDE3twpw3LvLZsDWJj2W+alxZVy9fKMgaEW/fxEmXtzlZQf3bguw1XePKyx/WcpUuS6TfQq2DFKKNdArh0/pKWVa0D+mz5EzJGH7BmLxcLlH9Mv6QM77ulHenYsHy57yvYTS09xc9cer3o/yllTh3TEGPF1OOmdMe/RbYjLqfGiflVCOYbzlA2KgxxS15bjddM0uLq6cmGhusqxe+Ws0XLrIzSu7NL+8aq/U68avUr1XQIE75N2UYfG9Hff0uLEZOLxNHv0xcWFOibJPOR8mDMHhGR7VfpaLuXOazG7nqaT0bGXGoV2mrht1DszNqezhaj0hc+NP8SoOcbgExs0SvhrRs1U3NgEntNBS6gUCCshjRdtcUPPx54oSmUtWZBsI4ucHEPPUvKl4mj9NsVfM6an0m1LIRm194We5SoYY9SvVg+xui0ZL0rGhCEUGzOl4hJalGkUmx9S40ZocRUirc1j8fh9qH5vSilN9VVN+Qj1p9DcsGvFTcpIXxnLOA8fPsRXv/pV/Nqv/RqePXuGf/Nv/g0AYLFYBMf7yWSCpmlweXmJ+XyOpmkwnU5x7949TKdTAG35CNjSzgcqKYe11nmIErh7cHCA6+trnJyc4Pj4GKvVyp3fy8FXz0grKNTHc/pyafuVjOmr1QrX19dYLBYOUJ5Op24eJjCWG4NiCrJWTtkvU8ZKLmds3CS+qfGcyx+rC81YlqsDhcYablADfK+R7st54PJyhaoyuHOnQVUB63W18YDlnrGWecDS1/eWecwC1hoXvyszydLGB3P7sxYw5L0HascW+O0QA142Wf5432ysxWfzNZ7M15geTd2WwW1KH8hzYFugTrXsgl607N/zjCXeIbkN+vIZISu7SiA2V2aNPI/RNsCXC6wPb5pL85SlcPIMhYHnxcrvubeqA1tNP3/5rvH3z8dWjQOnpGzUBh5otpGF5CYglV9dd+XlIzl4PF5PvKzEj5WPg70eCE3ydq9Irw08ANl0eXh9bnPvxp4NkH76i1NcPr3E8nLZb2PqA7mkpbX+c827M+TxqepfMr7gr933dBaZN8/PoieHyluWOZQmIrPniRvjp/DUgN5QuRxwG8jLlRvw+zbYc/q9smiWjV4XAUqt81I6Ua5d5fNmEIzpYzl1FtI9QhTSi0L8Y4ZImR+NO3zb1ZCeEstTu88FsnJpX/0ox9gfszVo4blxQnpqSV2FdKKha9fSdXcpX8kvlF/O8WB0lXUg80o54ITea257lFSypk7Zy2L22zEp553KeR92mX8o7lj1o60Pd0Xb2pbHopy1NY87tJ/sok5vUp/IGVdD8smd2EL9eZs8ckjjVWr/Ssmxbb9N2Y9TcYfoFvIoCOKzrbPmvsaWHhibM2mOQTEDam7B91VJObQrMEWGlSp12u9dUo5Cs1wucXZ25t3LFybX+Fq6XYCm6OYuWm+KQuBS6CwbLb30Ogopk7FJQ6u7XX9xEsuf10tqMRzaqjK3bccaaySQRPLtikJya6AWT5PiMXQSz33/ZLybfgfHoNI+FOr7fGFZVdVe5uuQfOQZS3qDtRbvvvsufuVXfgX/8B/+Qzx//hyfffYZ3n//ffz+7/8+6rr20pAXwPHxMdbrNS4uLpwXZ1VVeOutt5zXrFbWGNAWItmXlsslrLX4O3/n7+Ctt97CP//n/xyz2QzT6RQffPAB/vRP/xR1XePBgwe4vr5259fLcZnKRjKt12vPu5Py3tdczM+Lvbi4wKeffor3338fR0dHODs7c+A4xZ1Op5jNZs6rc7FYBLf/ihk0JcXKbEz/S1L5nKflZy8BcCA5vQvaWK953qZkCenCWl/jnrfae0phy2WDH//4DA8ezHB0NMF6Xbs+ZG2bT123rnnk9Uoesq1nbHuWrLVdnRLISsBqe99d5X9bDyR/d+W/u/Lpv7X7xgLVpELdoPUUJK9X5v3KQSvP4KaF8z8nnJ6e8+FxyOvRwLgrz88DXSmMtWsPnOXPKJ37aXphIeJesJRGAmcuH+s/H+oZy38nPWNN2pPWhUnZ6F6pO89zFaL+6bppM/Jgpbgkk/OQNZ2szpuV+Cres+5asXpm7d47v5bFM9aAgGHudUvXqq7Q2MY/M3YCmEmbr6rfRDqKB+5FgMoe2Ao2PingYu/ZBiz0PD43vz1AKHRvfR4SRHJzs+1+u/vGdmkUfj3wVoRp8Tg//s/z1cK8egn88/Qqv8a2fZDKuflQxmtLo7Tnht/lo0uszlYtIJtJ+zRCv4oUq5vYeiJnrTEUbBkqk5a/MQaLxcJ9FMl1II2nZk+J2ZQ6HaNc57sp2vX7ELI/8DokW1bOkT/a2mBMkEq7J31ZW4vT8xBxHbfUbiZ195J2Glon3NPcGIPz83O3i06u/SzVp+SRQ1L/3xXl9vXb+q6OSbd9LtxVXxizzDdZd6U2eS1Ozg4NtIsEJ9r+nCjmaU8UOnN6LAq1awgXGipL6KiBHJvsbSGyI1ZV5e3UNxbvfZVZ3aZYCiAVutJJdBeF0ZSgUBxOYyo7Gu9U/rkUeul2Qam8xlg8yHRkpA4tBkr6TWn/isUfMgnkAlVD8krlEQIkh75zY76roYVLDoUWfpqhO8YjJltofEilzclnjHd1m/6h8RkKCoUW4KE5Ylsq7YNaWbSxONeQMOS5BF6416i17da82rZnpeWQ+YVk2BdpYyGV/86dO1iv1/jKV76CTz75xJWPK83SW9Zai/l8jmfPnjmjASnKdB/Kextqmgbz+Rzn5+c4Pz+HMe15XI8fP/a8SUnWELDHDTBykT6mLlS6EF+tVri6usLz588xm80wn8+xWq16czBvvxT/HBliBib5PkqdQ/vSkeJRGxwcHLh37fr62m3TV1WVt01zqdEplC+XVZaL5ArpgdYCi0WD6+s1Tk8XaJopZrMKVdV6srberJYBse02wU1DnrGedKgqi5a12Vz5GbNk+ecIgNnEobJ14dYCLagLtOLL+pJ1pZTRdCAsBze7FN0zziLmvcrjev3FoPdvjO896+6NkjexNex5L/vIWCxlH/JaUxoLB3ryMC8fOmuVtjDeNK3zot00p+uTRvDdyG9hu7NnFVmcJ61ytqsf3fc+hUV3ZixL68lv4IO9Wp2J7srL49WRQc8LuAd2GVEe+Sps8nfn1do+WO154vK+ovQ/KZfrL0Imjy+n1HTmmt5694AYy2wgTIZb+GAt+y3TePdCjp43qcg7CC5Hyut4W+vfU15WxJWyynz5fSCtA6JlnQC9cC++DciWq55YOM/YUh1h3/rEPim0FtvWLpBj2yjJh3hqek5I79B0nyHrPX6kSWp9UcJb2teGtsG+KdWepQBiimR8qQ/KME0+rb61ODFeMRua1Fm1+KV9vTRNSEaeP6+DnHUFT5sTj9bhWj9IyRYKC6Ub0o/GsGOG1h+7el/HWoOPYeu6DXPhEPvhbaIhcu+rzDnjt8Sn5Lwqn8uwFJ40dL4updQ8ocmWy6ck/RB+JXaVmN6UagvtXjo/hOTJHe/3qefs/MzYMSaYIYpC7HlOY+2SpAyhSVXzSskZkLR8Yr+H0m1X0EOT6i5fNm2w1+QKpc2hmIdPKH+eZ8yblRvBKV2onWMTkmbQjwEpu2wTbULOIf6uxRb2Q9s7xmdXY5I0AoTOa5b3sl9pEyr9LhmfSuUeymOXY5Nc8BljcHR0hLt377rw09NTz9OQb+9LHpT0vpCnXeg9vi2KvrX+FiAk9+npKV6+fInlconpdIpvfvObePLkCYC23OTpaq3F1dUV1uu1VzfPnz/H7/3e77lx6NNPPwUAzOdz7/yHkrkwRev1Gv/6X//rXp1XVYWjoyO3m0NVVeqZIJzo68vVarX1QjhnDsuhy8tLXF5e4tmzZwDgtn7uzjP1AdmU3KkFMecX68skA8+X4nPZJK3XaxweHuLdd9/Fw4cP8fbbb+MHP/gB3n//fUynU3euL+B/McvLqhmryKBJZ72FPIM1Yyr1TX6uLX2Ewct6ebnGD37wEu+8c4TDwxrWAlREAmBbMLXaALTtPZ0Zay3J2oZ1nrEtENvWI2AM3H37u/tv5dN/0z2/yt+cjGm3KUYF5xXrgCvjA1d8LvG2B2bx1QUzTDCeiy/y0HhzME29B7ww3sb0jMvTrwz2PEA90IunsX6Yiw8RZ/O8pzcoQKIHyAqwkSWEA0sz4vfyYXXm3VN8w/jleshu0lF7Ok/YTRzHk4XRObNOFnof6AxYo/xD3DPPWnf2rEXnLUue5fzs2NrArLv6MDDuuTd+sZ8x72QlsHevgZwhwBBgcoh7a/txKEy9Z3x5eC+OCNPuZfzsK5fb+r/5vwzn+WrxYvL10jcsfqOUM0a8vdj9Ta2h953vtnrRWKStufjcnruu4bqC1A24LpPaSapknWqtdR8qkvcflzVWNq7rhIyhsmxyXtZ2m9rF2v029BOimO3MG5eQt2uY7CsaXy1+KDyUluu6Uq4xdhu6SUr1EV4W+viX26a2tcdpfErXpmPV8RhrxS8KjbW2/qLTGGN0bP4JxQnJcXBw4MKWy2Vve2EZfwhJ2xfR2P1Jm3O1eUerm9RcIXncBMXwEu2orNiz9XqN5XLZizuZTDxdJTbu3+S7HwRjb9Lgu02HTk2CJZU9RtxcpaYEiCmRS1PCZR4hpbKUUkZXIu7tRPdDZdgGwMpaNGfmHwKqZH70PGfyycmvhGeu0ikHrJCSWVqGXHlCfSH1bg9py1KZc9spVbac8SIlT4pXikfOOBmTMzbZa5NsqdIQk4v4ldIuJlveL+m3McbzjCVwiAA6+Y5p71tqvlBBiz0qE1p7WmtxcXGBs7Mz56VIXqUknzHGKck09lO91HWNq6srfPDBBy7u2dmZ24aN119Iptw6IH7UVtKTkgBLHq4Rb38JFI81v4xBXB5NLyCjm9x2l6ePvfM5ZS0ds0JjFYU3TYPJZIK7d+/izp07OD4+duE5+lZs3uaGSi63NNLKtFK34vXZhgHrtcVq1WA+X2+MtQZ13fJYr1sPVQJiu7NhPemct2xXls4jtg0nQ3AL1pInbSs/ycJ/83LwsDa/7nf3HAA+WzY4XVnMN9vHbsRjkm7+jBcIAuwIlOp5ooK1kVHuN1cXn9pFaXYvD8PqTAFVVYCQ/VaBWP4sQXJ7Xw2Y5eEuPwsHdNJz+d71gNSN52hvjuKgnd/kLox7lXoeqJIflYe/C1Q+K/gxsLfnDbzh7UBR25XBGNOW33Q8tTCvfPSbe8aKf1e+DdDL70Nt3+t/m98OuN2ENU2DJ3/6BPOzOd76q29hciDOV9dA1+6hHizHWA7qWT88BMT2wsXvoIcs/RMfik882L8b78Tvntwl86OWXiu3mHettb14FmGZvCuVh6ff3EtP2F49xOTPCR9AN2m3KaGx7DBD1wAp4ETq1iH9husImqyanhWyb8ltXDV+8nnOml6LE1tnyPxDa4190E0aR0PEdeiY3SpnnR2Kl+ITsgPx3zk2qVx7UkwGTnzdkNMHQzKOsXbS8pP5pChls9Le/VdlDP6i0y7GlqHj8S7y3bctqCS/IbbHEnszPeMfz7dr4c7hIcVzWxt9CcVsoyl+Jf0ppU+Upg2lD+lLuWVMjf/Hx8eeQwvQtjXZ7Didn59jsVjcmA6TS15pSl+mXcYnCp31GKrYIZN4SBkvSX+bKFQvJR0+ZwAIKWyxNEC7ZSIHY3e9/zrPnytM3MuKy5einLPncuWh+LmTgGYwzn23Sgzm0mhfKltpe4byk3HkonZXim9KEYhRStEYqphpba+FD32nQzISz5JJezKZ9Hg0TeN9ucSVoyF58fYfOr+MRbJNqQ6I6CzRy8vL3hd1k8kEs9msNx7JduDPqN5iRpV9EIFevB2ePXuGe/fu4eLiArPZDIeHh5jNZp58l5eXuLq6cmnm8zmMab9qfPnyJf7Fv/gXLu7BwQGOjo6wWCzcvDFGWQnYnc1mODg4wMXFhedNee/ePSyXS1xcXAT7Kn8HrbVYLpeo69prG3k+0U31Vb51NskhPWOXy6W3UOF9kOpGM9xwCr27ueGhOU4Lm8/nqKoKDx48wOuvv44333wTJycn7kOAmG7Hn1H7aGWXBib+7oXyoHvtnCzKf7lscH6+hLWAMe3/ZNLyruvWm7UFV9szZK1tPWXr2sBao3rGEq+q6ni2YRSnDWtlQe9euwIdYOuHt/Rn5yv85HqNala3HoJGB74caGUcPNuP02XpAV7qlden6dLxME0Wb96kMAJpGdDq+qG7mJ6MKviaerUt4xeKb9FtSUxpeH7sueYJS/fuN+lLHKglQJQ9c+EExMJ4Hqye3mU6Prx++DMO9LryUDrNQ5a1owNLGWjL20x65GphrkybLZS1vuDOieWALM+HvHMrf5tkGLTe4JtzbE21qZdNWzXLBn/yf/0T3HnrDv6D/+1/gPor6TOtZB8JhatAvu2Hu3EpACg6MJXChB5O5fGugXAZpv2WfLx8RXwNBFbzgJCB15Xt5yH5hcrC//l5sLBozy0WcbV6irWh2p4D6KZ131eR3Dyk1FssXNo7QvGA8Jo21l6l+rzGi+syPG9tXS/fGbn+4L9lub6kPoXW5GMRbzfNDjWGDavEprQLyln/D7H9pIzxobVdDt99vxOv4pi/D5lfxXoBXl25xyKad1K29VKaTCYqQKftDiDnXTl/xuZseh6KM6bN15j+7ga3kbS60BzvQvhPrIxvvvkm7t+/74XNZjM8fPiwV9c/+MEP8Mknn6g26Rjt+51UwdhUZ8kBTmLpKC+toKUvYwloIhWlnBctN98Q35J0/L4E/MjNJ7dz5cbh/ELtqZ2blyuXXAzINDn1o7VxzP09l2JtzcGWUF3GBpqUcTqUb8m7kIpTomCm2kl7prWfxof3DQI2htBY7Z3DO1W2nC0TSif1ksk+9pyDDjm8tDiSBwEY2nYhBFSl8tMMFLfNKEDvDHkXciCG6uTevXuwtvWUXSwWODs7cyB1arFIecTu90nWWuc1ytvns88+Q1VV+N73vofZbIaPPvoIjx8/hrWtB+z19bW6xQvQjZ2z2cwLJ+B0bDLGuDIQYN6CYXWwrvn8rBneyONWblsn+dwEkczaOyuBQ01p5vElT81YqcXXZOLE52mtzoEWLG+aBi9fvsTLly9xdnaG9Xrt+s16vXZtGNpOSJMvtPiR8XrG+kh5QnR9vcbTp9d44w2LycS4s2Jb4NWgqoAWQK1gLWBM53pqbQu4tvFJ1v61+28BVR4GB8TxspL3LOUNAG0Y8fSLZ1oYgZ0V64GXXkzTA9ukV2zw3TAdENcDMV35jBffPYNIx/L38pbyQcThomn8cknG1boL8bfdveZp2iZnfdei7w274WWtv7WwMQKQJWCUA7Gb9BwM9gBd4s+8SV04ldWyeuRnx3JAFiI+lVGWgcBQisKe8zaRHrden2Hhnucvbx/2b4z/3PVDdrWV9cJce23at+fBmUNW3tp+uATzGMjI4wS9ZPlYz5+zNN49f86vIh/ueerGSBvIU/nnfDz5FTl4mKsDJV9KI8NCZVHrmvgyebxySVliJOpjKKXWBJ9XI++29SZ1GPksNvdLitW11BGlzSRnLS+fST0ktV7UdCyuU/GjHWg9Iu07nIasE2+ahtqLYrqhxrfU4DuEYu3N+0bMjqOtXSicp8tdk+bG55RT/hxbyDaUWp/lypiq5zHpVRzTh9TrtnmU0jb9cRvahmds/H8VSM7DoXknt79Iu4HW7zgGoK3hiVL1qukQsfEkNSbnyCDbu6qqrOPmNJl53Fy7cc68H8o79AERt9cQ0W54IZt/SNcK5c3bnGx8Ib6pndV2QSoYmyvEkMGU5xGrjG3z0XjuqnI1vtqLOYYMGo8SgGrMhZ9WNjnwxBY8ufnQPQexQltH5gyeISBgCGl9VfLXzuSQ96V9I2T0TsUtodxJIzQJaUpCTNbYAk9bCJcsBnPqS+O3C4VR8/bP+UBAjs+83iXAq8mvTaYhZSe33JoiQ/z5WZAEnsi0OXnxPELKzG1RRknRoy2JiWhyv3//PiaTifPEPD8/dwrHZDIJzok5BheKV6qcl8anuNxoQzyqqsKTJ09wfn6O3/3d38VsNsPz58/x6NEjAO0ZHpeXlz1wldqUlDI6VxZoz4rNBatLiJdjvV67rU9ShjCg33d5HfKtfrUPL26SYguP2NzI3+eSs7CIrxau1WWoL9M/P3O5aRq8ePECDx48wMuXL7Fer915MavVyp0VEhpb6SMQY4wKnofk1uZvmS5nfLq8XOPyco2qMjg+nihgrNl4uHZgKJ0b2+bTXa0FKAtjunvuIWsMjc12k08XH+jA2k7e7p7zhYeGWXAPwd68wgAtAsV6OoECyFI8T6/kfKS+KfLhfDxAlsnh0rH0PdnRpe2FiaoYTBoP23/GgUwP4CQA0rZtwbcV5nOlMaYHWklA1NuaGP72wB5fBox6YObm4vKyrD43fDywVfHAJS9W6RHr5AF6YLEHTBtWLl5nRtQr1Y8JlJPiib6ledlSX+TPXL/ZnEE7SJfUklj0wUf6af12CIKwEtzkcZis0XuW1oGvsXxoXLRKHIirVa68bLJ87J/nkwPKumdAnxfL2+PBwoK8MmgISB9abw2NNxbdFh0nh0LryVBYjI+ci7R6D9mDNP0kZGSUeUo9I5a/XDO58WqzXpnNZpjNZlitVu7sNfmhLKB7C+273XPsEqm+P8SuEbPpxWwgIdLaJCSH5B/qqyHbkowrzx4MeUTLsFwbBc8/RDltEKvboRTKN7eMKZ77HndvO+3ChiZ5v0p1PYa9Nqe8JTa8XJ65+Q3lFZuXc/nysayua3VMlCCfxld+fF4yZ3C+fAyO2RFyeWry5tRLat5M4RQUps1/uaTNX9QW3MYEwIGzY3kBy50FpcMHp9z2HnPcCZ4Zm0spZUOjmPdrDDnPoVDnCIXtcqLYlkrKkYqTm0fOi79r0tpQkzM18Ml0uYqkXHzcNirts7I+NeU+FFcSfw9zDM5jUajfl05uuTLyvrCrPqAtlmML29Cz0v4ea/8cWbeh3PbKHZs1uW7SKEQKhbXWA2MvLy9hjMFv/MZv4OHDh5hOp3j06BE++ugjV07a0vf6+lr1IpYLPq2cQ+azbepKMxLQF/bf+973UFUV5vM5rq+vcXBwAGOMA3BjPBeLhbvf11dq2jbI6/U6OR9Jg1xobrpp0gwGMV0sNL9qcajsoS80eR1J3pwv79c8roxPRkFjDF6+fIkf/ehHuLq6wvX1NZbLpWrklLJrH3Rp95KH3JqbZApRqu1PTpZYLs/xS790jAcPZqgqoK617YpbD1kCZNszZSsY095TNsZgk6YL7/6pbv1nlC527crSlvvxYo1HiwafEcDKASrAAVKa56kJpUGX1l2dHG18l47yMF0eHuDLeWv8TSeTCs668vrl8eJJtkPfczkcMjaun1HWBDDycMveI4M+IMuAUWsZ6Lnhxz1Ve3IxftKztY2y4Y3umXbvgaTsGcnHZaPyuTGAy8fLxHjy9vTic/lFv3D5UjyjbJtMcTnQaow7I9alr9Bud2zYltAVsDhb4E/+L3+Ch+89xC//o19GPS3brrjnaWn5TwHm2X6Y6yfWv+fAYS+M8aGw3j0fsyOgrBtDLZPdieTzjP6j+63xU/NRyi0BVQ1Y5by8OhHP3H8D2Ma22xdrJMu9kWXxbIHl6RLr67B9I7am3Rfl6NS3QcfJITmfx9YQMf0hxEPTAbX2kx9scv0xhzhPCa7FyqbpqnVdYzaboa5rrFYrXFxcBMtNPEuOShljTcYNtiE9W8o4tgzb2AtDazXe16hdeHvmGMWJ+LEj25JmDyvpn7G2uY1216H9IzRG3KQd4otCt3UuvM10G/QJSTky5Nh7rfWxIrLfyDiaY8gu6kGO7ZxkG2gYV47tK2VHvY3E64PmO3KK4DSZTPDgwQMvzBiDBw8e9LYpvn//Pn71V3+1Z9O6vr7ubVW9XC7x7NmzYN3Vda2C07uct7LA2KECxDp4KFzbPzoGxA412JfyCylSY3R2WU/SGBlLF5JBk1crm5ZvTp5aHkPrQuMzZACy1j9HI2T8jfGRL2BscZGKk3qWG98zSiX6uyZXa9TtDECx90nWvZQn5sGZUychI3xIlhhpcoYU45Q8fIG6D5ILnZLxJPYex+oz9f6HFrg5bZl6Tr+lV/A2k1vM2HBTRIoF0L0r1rbgYl3XeO+99/DOO+9gNpv15jrymOVAZIq2VQ62VULlXEWGnaZp8NOf/tTJN5lMcHh46BmgQvOHtbYHRu+qTfl7t16ve2OjHHv5ext7ZzXDWCjuvkh7H3P6T66OJetJu48tTEIGTGP6IC8fTy4vL/Ho0SP3heVqtfL4hdqHFmXUZ3mbpgxh/LdmtJJlkOXkfM7Pl7i4WOH+/RkOD2tMJgbWwp0N23rKAsY0sNagdbVzEngervRfVUDT9MNafhbtFsS0bbEB0G1hTM/aPLG5ynkK+GzR4P3LFSaHE5iJKLsRv00XZozxn6MD0Xo8jN+3DIvk6pbF6+Ut6p4Dqj2Q2Phy8Lx65dF4b0MyOet2xhh4oFzbXH6bsDC673myCiDTbS3M86e4DMzkfFw+8LcrjoKwogw8rVoPmzz4b5KZePXAYOPHIV4uDgGkwqvV42XQ93oVsrkxTHjO8nB33fBcXa/w83/xc1z86gW+8w++g2oy4FwsUV29ccn69e3Fsf171RuWh3GQVN5bP430YJV59jxfuVwyPvz8pLy9OUyEyTrS6sCLz5NyWcS/S6eE8WdFnq4WWJ4vMX8278kdTBJZ06Tm6Vj8lN1jX3pL6RpyjLxiOsKYpK2lubGV1ui5617NqB46GoPiA7qNraoqb5vAWF/hulxqDS9l3oZCIELux5olcWJ6n6bLSzuaxjMWRysbb0+tj4belSHllHqpJnNuW+fkq/HSwrZdn5aSZostSfsltbTvuhjDjrGL+ENk2nV/H9q/SyilT6TCYhQbh6y1HgAb2+I2lu+2dkktv9h9KEyzx8ZorHmQ5z9WWslD2t757mREk8kEx8fHvfTHx8e98Pv37+Pdd9/t7S74s5/9DBcXF94YcXFxgadPnwb7RwiMDdmhxqAiz9ibmGyyFloDeZTKMfYguUtFY4jxt1TZSg1oxpjeNgGps1LHrA/PiGeMCiSOkV/Im1vKoD3PodIBkAMgd+7c6cnABz1rLebzubeIS7UpH0xD7Wmt7dXLLr2M5XhQuqjX2kP72ngIyQUN/7L3pom/c3wxxmXj2w3zdPxKRHG4QkQL/TFllvLcFpJ96uLiwnm6kpfocrnEw4cPcXh46KWlvgH4Z+lOp1PXX2hr4BiVjvljE9XBnTt3AHSgdMojdhdyUL0NqZMUEKel4WMc36r4tvVVTSHmxMdvqr/YRzz0jofOZ81pd75tMPd81Yx+fGyx1vek5u8R3VN6+udjEpWNe7wSoCvHPmmoyi2b1Ae0NI8fX+LZszm+/e27uHu3/ZJzsgFuWmC22lyBpmlB2rpuUFVtPXQgawu4tlfAmPa/BWfbOEDnIdtuW2xcPHrWykt12MXpKhYtsFQxvcCIvrQBxCQA2j3u33vGXsVD0eVBIJgEaLU4huUvwTbT5S2E8crghfH8cqnHXgRwjIh7qFohg4W33a8xxgtz/cvA92TloCorFwdmjWFALEvDvXEpDpWBe91qoCwAJ4+XL/dApfrZlJV+c89Vs+nbXE5XLwSEMf4krwTSPR58a2TA6z8SnKX4sh+aitU38TRdXZvKwNQGqPR1qwcqS9KGFocv2l6cHvgoQVf+TAEQXRjX70L3lLZpr7bZxGFX/pyn6/Gw/Tg9QNhGeIiw2L0LaxQP2KaLz/97AGyzKa9FdxXlCJJsjx2SBqrwZ7dhDXJTlFsnY9qZqqpyHyS++eabuH//Pi4uLrBYLHBxcaF68uTkya9SP5Hx6cgPbpuRO9GkPDNLyjyEaK1D5amqCnfu3MF6vcbV1VUv/+l0Gjw77yapxPZTanhP5Sv1ZdKrQ2NCqt9pfS22s06pjKGwsUmzY4zN90vaL31Z959Pusl2leNxDoA6dDx5VfSwUjlDO6Vp84YWrtnvrLU4OTnB5eWlF3c+n+PDDz/s2Zop3m0fIzwwNtbxxu4suaBYrAJjMoWUoFSDxJQBLXwb5WGXnWOo8TlUHq1vSJApxFszZEreJQbNEMXk0ozO2ks+VDmUZczpZ7sgKSsBOfIZDZKpxQuvE24kJRqycOTtNHShGwJZUvxyx4BU/qUk66xk0R/qsyWLim3kj40LGnHgYxvieWp9WIt/k6TJtlqtPEMHgT51XXtgUGzrLf7FurZ98U2WOzbP0vmrZHyKfbXP040tW4xnaX5yfE/Nlfumseowd4yRhr/QOKHVV8hgFOIT6zcluh0ZkSaTiTtX9vLy0uufIY+EmAErx3gZImstLi5WuL5e4/p6jdmswnRaAWhQ11THxJfXGdChWH6YcQBT+9+ucwyahspE3q9d3BbM5XlQu7X5U9Go2O5dIHCKI18cZDMM6IIfr+ehysmI5yKti5PgzeUI8eBX165GiSPk6lGkGwbT8HRWAHR+8zo+Elh1QKYN6FYG/pbEnCnLuycT58vSeTykjJJfKr3Mj+Tl5ZBtYcWV2sSgl8b1rQ1YxvVHa61XN16XMQyA9bL3PWTlPfFrcWKxJhBFDnoJ+5H8uJIHb2sJ9gmAMBpuRR48H+uHpTxie3nItFDSav+yvFYZYy1bqwT49J5JflpZbIA3ReFjfsmwr5ULSrkS4SV6cWgu137n2F1i83FIhpumnPXEELBG1mHIcMvzPT4+xmuvvYaqqnB9fd0zGpb2hRI7hZSPzonlfEIG05w+ty1JOauqwvHxsVv/LJdL9aPUofa4HF0z9U5s28e3aVftndRsJNL2ErOf5JYnNJbkjA8hOUplGJuG2iNzbH83QWOvrW+ScuaoLzp9ntq7tBzaGKhRShcYW49JjY2ltuwx5IjJs8v8QnUfs69wms/nvQ//Dw4OcHFx4YGx1vZ32SO+k8lE9ca9KVLB2LEaJsRHKzwZxXZJOcY6MsSVKOH7eokkDVU8S0kCBHKrUfqdGmBy+lWoPLE2GaoAjQW67etMw21J25Md6LvkxxbqOYOlbI/YYDf0nd+lsrHt+5wLGI79/ubwkm0dOjshp25j4Avna23ruZYDNudSLlBzE0R1slwusyb6u3fv4s0338T5+TlOT0+xXq89hYJ7VkpD0W0qd4xy+9NNE5/rYh6t9A7FPEF3rc9olFuHOWOcNNxozyeTifuwgAOpxDOUD+dNdcj1itD7nWP4kaCoHNPW6zUePHiA119/HW+99RaOj4/xve99DycnJ85bnT6g0HRi2T+ofriOoo2hmi7UXwACJydzLJdtnUw350vWtUHTtNfJxKJpKlSVYR6yLYjanjVrUVVm87z9bYxF07RXAl/bK9zvVq52u2KAe8129538LY5gauNAs0207p+XHaLspruKiO6Zq0PTT8OfeXmw9J4cAmDzQFfD0kKUBf4zCg+CuQqpALUk3g14dOvLQsChe2ZEH7Xon6u6kYHH87xfN8+4t6oXboyXr+PHeDsgy4TvOTDJn3HvVOe9a1gehslM7w393pRXrQvW9g5kZf+eHKbzaAXQ84iFgXtujIGtGL9q037kIV6Z1luSt1ONoGdslJSoGhBJdcJBPgnchgDSHqhq+yCjer9JU+wRK8FZq/CNXHthTdgTln5r99Za5wnby6OxvbQ8L/KM5f8xYNWBz7wNBur+Q+w0OWvd26xTj0FD6lub96VeJHUSrm/IeX4ymbg1wVtvvYXvfOc7ODs7w8XFBV68eIHFYoGDgwO3fpAyhOTzxumALHVdYzqd4vXXX8dyucTZ2ZkzRtKOPSUgVMqQOpRI3rt377rdhO7evYtf//Vfx/379/Hmm2/ihz/8Ib7//e+7NPSR603SrtZjxDNko6F7qeeG1vEpvT5GOYBFKeV6Ye+CQnq4FoeoJO5todsq15e0G/oitHfuu5vSfULjdo79pgQn4jK9ChSSs2T8i/G4yXo4OjrCd7/7Xbx8+RKPHj26MTk4FW1TnKIUGDckfcqAHzMibkPbAjIhyjEy5siTSlMib8jASfe5dZx6wYYMXLHnqcFCUzZ3reyN3Y5aejmwyz4Ue2d4/nwbIMkzt2+F3vncfq3x4DLl9oXcvGS++5wUZP2Xvg85i9+c/jf2weQ59ecZtgrTvookwRmi+XyO+Xzu+t3BwQEODg7cGbLaV1xaH+WL77HkJSqd+0LjBX2kwseZfVLOfDRUP5HvsTRwvMr9Okf2kMFnTL1JGhpD/BxAUjiP0tZ39+/fx8HBgfPk1uZEnm4boy4fu0Nlur5uYMwad++2xsXptN2iuKoaABXaZMQH7trytOBN4D+ncrceru0ZsjKd2YR1XrNteroHlha43vzzskmwjrwFg56qXaC7UhoN0A0SB9iURK4M4lnUS5XHMV5AHrjK+eeUg+LIriXCvf5n2vCe/iaAUvfbdFsKa7I6MFQCtQqvpPzaveXR+7y4DG1S6+q7F5fKTHz5VdY3y5u3nQN9+RbNDMh2IC7P0/h5Uv92dcW2O7bWr7/1fI3TD09x+PAQx2/45x3FSG0zG3lu/TAOAPJ7DxiU4Cw91+4pvQB/Yzx7slpF7lD5rZ+/V05ethQvkZbLIAFZj6cVOrJV/qlsGflba9GsGqyv17Dr8FrNJYvoerH1be5aXFv/ybghfSdFOXN3DuXqAike29oWpDxa2hhfyaOua8xmM0/vp+12c9bhXA8LyUa6Bu3I8+DBAywWCxhjcH5+7n7zNZo85iGV/y5oOp1iMplgvV5jOp3i4OAA9+7dw1e/+lW8ePECT548wXw+x2KxcB+xcl1wXwCftDfl6sCaHSfHdqO9j7mU069L1nsl68ZU3pKn1rf3QSE5iGQdyd+v8trv80BD7WK5cXdFsXd/1/nsKu/S9Np4ooWVtFfOeJyrm2j5ht75mM6UMyeMQdvMDWONZTH9QcbT9Fk6MkrGlY4QV1dXeP78ec++fXFxgfl8HpRNHkd4U+P3qGDsUJIGPSLqDKHnuY0cy/emKXeRVbL4iVHuAm0skopKzmIo5G0UW3BoFNqvXMo1NsXaLtSPY191lvRTDgBZa70tTmnhR8/Ozs6C508SmJSiEsN9Lg1d6GvK85BFNecfM8yXEvdKHfIVb+5YkUPyK9vYOaTaAjenjXjdrdfrG1NyS2gsBYS2/eLtvF6v8dFHH2G9XuOdd97BZDLBu+++m6wX/tU398KPjadD3qFYWE4e0gByfX2dJcOuaOi7L5Vmfn4vPZfvhLYFs/be3BYqfY/3JUOq75HHeGiBxscczaBN7bRYLHB5eYmDgwO88cYbeOutt2CMwbNnzzyjHvGV+gfXU7gyHzLIhWTuxwGeP19gOm23KT46ass7nVawtnZesZOJxXptMJn4HrLtFRtvWLPxkKVz1wCAPGXhtivmXrJAC8p2ZZeGMeCTlcWfLhrYaQXMKh0AAwvbPDfG9OIROGaM8YHPDQjH08krB8O0PD1vV5i+nPIZbxeR3guTeSnlCQGwSQBYPHZ9xsCBOZ4Ouwl3Oopyz8+K9TxRrQ8gelgS5cfqiADHNurmt4XH2wGYyj2vU+4hS9ceoGpZvlRm5rlLZXN5sPaR98TTO/OV6sn4svB43j3j48Z2Fs/93njGGrQetMa29XT66BS/85/+Dr7+d76Ov/Gf/I302Gv5T6uGc7CUP/PGbMvagD+zfcOzB0xy4NTaIHDpeCgesb08tLBN2l7+LKz3TPIiGclDlZ9jS/eWebLSnJzyjCWv1wZOJuk1m5wflcfzZ3NcPbpCs/bXAZpuEWQr1j+hOPwq1zJ8XmuaJqpf5q6DYvFK9A7JU+NRqpukZCvRhzQDoWwPaf/guvzZ2Rk+/fRT9SPMVNm0djWmOweWt91k0pr5FosFJpMJvvOd78AYg8VigQ8++AA/+tGPMJ1OMZ1OvW37cmw1Q9ozVc/E8+joCAcHB64MJycnuHfvHu7fv4+//bf/Nv7G3/gbeP/99/H48WP84R/+IS4uLnB8fOwMtSU73I1BQ9aOsv1CazEyGpOtSPYrSUPWsNw2Ie1wqXEplh/1J76TTIhkufZlo9XqkK/dU3Kk1uG3bf33eaN99pV9yrGPMu2rb5bWTe7cIm2Z8r0N2dxTY6iUN7S25+94rk1pG4qNoaFyDOE3lt07RiFdlGi9XuPk5ERNJ2X7+OOP8cEHH6j5xPoQ6RicQruIjkVaXwmCsdpkWzLpDzWESpJeNTkK4rZ5llLuAiWWPudl1RS1EkoZCHN5xuTLMTgOoSHtnlL8Qjxi5QsNWjGKDd505XVXoujG5JXPpPyk4BOVKJ8l8mlG8SH5aJRqs5I8ZHvk8shpL814k6MMaBQbB1IGHK1cqfaQfSbEN7ffht7VXY17JTTmmMUXoUSfffYZjDF4/Pgxnj175i166Tp0HOKUo4Dxa2n6XdBYc3dIiS81WmjvqhzLct6NFIXG/pDOs00+Gr8Y8bja8QTybNXcfpebZyxtjFdsnKqqCuv1GldXV86zYjKZYDabucXcZDJRy54jL3+3cozZ/X4KrNcNLi5WaBqLw8MaTdMCrB1VqGug9Vi1ACoQa7pytrI6jAOUCHzt4lC4Xxbr0q2sxQJAZYCaoYc98DJCOR6yHEyT115S0+Xt6lOCcZqM2u+cMqjim/izGN/AayPBRR5Peoy6/rWJJ+97vM0GgOTesAyoDaUTAoKDvA6EBfwzbRV5Y/zc71CZDTyQufeM56Xx5OU3Ji6r6ZfP+pHdv+NFbc3ytY3F8nqJ1fUKPRA1Rkq03jhilXDKQz4T99b243jAq7znV3Q8XBwOxILlaeGXxfavHv+YjKF8NrJ65Rb3XJ6gZ6yQ1UIArxZqvCAJedEAzUo/lzxm7witHaNZF8z3JUZDTSca0+gY0rmG8Odzb64tZsyyEA/+0d75+TmePn3qvD+tte7DLimrlD/VL0L503qDtiyO6TVaX+PhMl4u5cZfrVYeUH16eornz5/jk08+cTyurq6wWCx6AHKujWpIGXi9pHjl2tNidav9S/6xdXvM5hKTNbbuKLH1yfVNbLvlm6BQ/ZDcJeuvnPH4SxpOY+ENJbaGofNnaVoZf6g9fej6fteUspXsSpbUvDU0X5m+xBaUOy+UUI7tSD6PheXadEIyjEUh23hovpJAalVVwQ+ByB6UmrND4/rQPqTxUsHYkIIRUtx2+RJp6HRICYrJosm+zSD7eaRYvebEy9naZgilOnwoXDsfM7agkbw0JSz1DmwzeIWU8tjiXPKS9c5d/OkLWeLPF2O0UCT+q9Uq+O4Bw8963QXFFhopOVN9YEyKfamb6ykbUixS6fkCI7ftYqBfiZIYAidyn7+KRG0tJ/q/+Iu/wEcffeRAoIuLC1dm6UkbM7iVtOOXtD3R+Mh3GqB2GWPxdpN9Pzdf8kqlvk11ctNndZVQXdeYTCbOM/b58+e4c+cO6rp258Xy+iBgVtNtcsBgbR6nuuPvsDQirlYWT55c4/CwRl0bHB3VMGaG9dpiOrVoGou6NpsxhrYW5h6yQFV1Z8fSObLGYHN2bOsxCxDIGz5D1i8PYC1Q1QamMg6A4iCXqwMw7+IIEik9UzmwyoEuCXpx0FXl2d30n5v+856Mxv89BGzN1oNlNOuHu617OWjIAclNmh4gC+bRauCBr1r+HJil/DzQU/Clsku5OADq8rbWy4uDnO5sXC7PBsDywFLWVt6WwhZ9QNWILZp5Pobxtn4c3sconncv4lC4y4OlczIYwFQGZmLc2bGubnpN75dDPPRv+di9qS8vngjrgbPitwRhe8Arv2fXQR6xFkF+wauUSfBJ3rPzZdVr06Vz8cW5sL3zYpXyJdtEjPc0ToS8ElNra+rHKaCA5yf7Pg8bYgSW8oyl05CesS2NrWMN0fOoHJPJBI8fP8ZHH33krcOn02nPQznETzNGUjr+L9f1L168wOHhIY6Ojnr2h5IjRVIGzG3IWouLiwtcX1/j6uoKQLvd4MnJCc7Pz128y8tLXF9fY7FYOHthCkTbla4tDbsxmxAfY3hc7X2UhmTN6J8qT+h5qA21NU2Mh/ahZg7F2uKmbK587Mr1Ek+tCbYFfr6kzz9pY0TIDnwbaBfyjM2Pr7Vz1us59vWUvWfXbRSyAYfCS3mPJX/pWFcSX7N9kg2H7KpEpE/RMVRDKKVXj0FF2xTvovGJNKAipITvckKL8dbKmStLqq72NUkPVUT5YBUCVHIUwpyBS1MKh9YPTy+B2ZQbekiJjsnLFzSAv4WhRhr4UkoxJZpvf0RgAid+z9OS1xCRBJVC+aeeh/rOGOliBvAU/1AeOW2SC8aMYeQokW1ovcoFIQ/T3l/aGivEk9ogVi/yeSyupNukoHLSxnxr2y2hHz9+jPV67QwLVVVhuVyq/ZWPJ0O913dJ285dOelj82foneJ1qfWt1JwlecnttjR5xgQmd6UTDO03NJeMbczaZT9Ote+LFy/c9fr6OjlWyfShPLSFNE/HF3Yhvajtcxbn52us10Bdr3BwUIOiWlsBsGin8GYDqpJnjdn8A9YCxnTXqgJaj1rjhfP/Vgb/N10t+AO6RBa6gWc8nAO3LDBNhv80argXZvz7HNli8Vxc+TiRJkkMzOT3GvApwdWgVyjnBZ9fD6BV8vOAXnQ8eFwPdAU6MJLi8XwlmGt8fg7g5OO1LJe4egAq5y3z4fXC8nFlYNsSS55eGi4PD6N2MdarFz5mJD2Frby1/XCrP/PGE4s+CEvh/LcAW11cFo/fq884L5KH/rnMFl5eLs/YP/x4PF8ZHryHnq+7wpcjxEuO2V47xppUqbdQPI24Th7SNUI6EgFzGljUk0/JT+pQWnhozgvpb5q+GwrTKGRPSIEiIZ4po60moxY/VQ8Uh+wD3GNW6h9cRyj9ANNa/ziF1WqFjz/+2O0EcnJy4mQg79xU/ctyazaMMXS65XLptk0muc7OzvDo0SPHf7FYuA/HaTeTUJ/YhnJ4lAKYpflKYDAFyqbsGVwP5c95uFwraX1e9tmqqrwP/+kD1qurK9cXQ7rzTa1peb51XaOua+9DU/6OxtLy90fW1a7Wc59n2lV/yJ1fbppCc+tYlOqbsfxz58mc/Ev4aeNWTrqQ7Sw2FqXySI2xMi8eNmafC437JXNQT48PxLsJSulYnOq6VrceDqWJ1ZFGsu+N1ZZbnRk79GXU0mlfApZW0hgUqthddch95pWibTpVzPgYC8vhWzrwakQLn5Q82oTDBynqp6GyaCBvaMIZu39rbbBYLFwYbftDNJvN3LOqqtx5skDfS09OTLltMmYZt+WTk17G2dWESfdDFfUh7wQZY1JyUViOTLQFhPQ6l30nxSsnv20Vw32SXJARGWOwXC7xs5/9zIXxbTRkWmNM7wB7zWCTorGVP7lQvwnatkypd4jXMz+Dij5qobE0ZVjgffu29VNJsfmP5pLpdHoTojkaYx4wpv2I5JNPPsFnn33mGf3kGbA5eeca1rU+oRnA6bpeG7x4scZ8blFVFuv1xKVpGvJONrC2Yh6yQF1Xnmds+4wWsm0+LSjL/7l3LMnSvzYVYOrN+BQCHAnwAruiBcR6oKkSl+K5MZSBYio/BoZJwDWLFFmj8ei2YJEYBa617mNEvzJtPBX05CCtgXpOrI8l+h61vfLZLj8XnwOc6N4PJweLT2C0fMa3XVbBSM6DhfW2J8Zm7LZQtw/ugbCbtF4dGAFEG/TrmMJJNupnMg38OJ7HMpWBzpIluUOoXWx4k+n4T2v78bTnVvxmAKT0jLU2cm/Z2GXR4+3CZR4snKdrL9aXA2FPVu235K09D/Gz1vqesY2Sls6PbRLtJNpMBXgVovdJnkHPdULN+47rMppepK3NpU4pP4jX9NcSHV0rV4zkWju1NhpDl9pGj81dg2mgFukZvIwSkOUyaTpkqk0pnOwRdV1jsVjgJz/5iYtPO4VYa3vn1moU+yh7bOIfgwOt/eL6+hrPnz/vxZ3NZphMJt4HgyndPlePzG1jTrw9ZTwOJoTk0Gw5co2d2w6d3tfZr2I7BYZsbqF7eZ1MJm6XGWMMjo6OUNc15vN5Vh/bN8m6nEwmmE6n3vnOALztsGV6Ijluf0nD6bbU4di2ky9peyrpG54+uiHplEQ8+fg6ZFfFUPi++3LItsBpiD2/hG7qvanrGsfHx71wiWkAvn4kKVQfu2rLYjA2NUnHFgGxsBBpcWMNXFKBoc6SUuJy5NCeh2TI8abJBUdyeciFGD0fSiWKYSrNkM7O+U6nU7f1j1SUcgYdWR9cWUsZ1umrDHq2Xq+9l11ucxnyjJX1NObALxf2mtxXV1feZKTtqx6qB9m3QuWi50O8yUrGldJ+Ld+1nPc4xW9oWkkp40iMf9M0DjhN5aEtFHOMKTKeXOhI4HYoacYo+WwfVGp8onfu4ODAGUC08YYvoGO8cupRM96E4mjl0tKVfDwVMxLyNDlzU8xIl9vu2ljOw+k9kdu6L5dLFTTX+Oe2TcjwsU9KjaXr9RpVVeHNN9/Eer3G6ekpjOl7xA+hUBvmGEi3HZeNMc7gEhuTQoa1GF9Af0fonhaDzsgfeN8o39Wqxmp1hKurNVarBY6PJzg4aM+SnUxagJXA2KqCu6+q0HbF3CDog7DtvzT8svfORUIfjCokz6vUwAGwGuiqpkEkf+PHJx5emyhpQ1sO55DaB7kcwYSbq+iCvbHOdHHcGLMJC3paUppNHbh3axPfXalPhPjAzyPkgcsB11Bar31Z2p7M4t4DkfljYzxvVi8/UWeUtyvrxlvWi7/5N4aBwJu0Li8ex3RbEnNZvLqFbbf2BlpQr7SPiWJ745Wli/XjWT/MpeHh7Lc3F1sRn8J4XAuftw3z7gGfAXmkLBq46sZM8TsJ0m6AVJe2EVdrvTjW9gFYPmZH5z/lUXPdYPlsifV5tybU5gi+Ruu1tcwmojdJcCB0jfGWcUO6n+SXu2YNlTG2Ho6t9UI2I2t1z9ISHWMo5dixZD1ba93ZrhR3uVy6rXg1XrL8xhhPjwX6W15r/Ti1ruJn245hP9JIey9o/aR9BFxqR0j11Vw7UYhXbA2QWr/ybX9j/TkmU+w5T09rmhS/UBzJiwB+osPDQ8xmMxUASdG+1kXynaC+lbP9Mq9Tei9Ca8ycdc0Xkcasj13Ucc68dpNUKtNtLIOkXP0hRTlzrxY3NPaW7mbJ+2PJXBnrc1IHMqb/MZ3kkRM+Nu1St5Lpm6bBYrEIxqedP4by33WdFYGxMaMpUc6kLu9zJjoeN0fJKaGxKz134i7lGTOYS/4lssRoiIFzGyqRP0T8/DfOZ7lcbiVXTn3XdY2joyMXPp/Pe4dJ87P35JeCckHBF+ZUjlIKLQ640l9VlXd2TeicvBD/oe2eWzYue8mkVvrejKGkxHjJsXNIfiVp5UIgZOCQsvHFdq48oWfcyEB9Sm5XFJO7hHLf032RZswwxrizoUKGEPne82eSZ868XCJn6FnqPYoZcPhVbpUXKn+urDlxY4YEyYNkog9nSGbAN1xohq/cOorF27cSGCJ6V8ko8fDhQywWC7e13S6McNu+u7kyURtKBT1k6A3NyyEZQ8ZRnoeWv8aj/aALWK8P0DRXWCyWoKnZGKDdrhio6zafdrviBk1jNufKtiCttRQf4NsU+/99YJbyaX8ADcnLi5XRRCoYuQHBPGAul4eJx3dxc2XT4pkwn14/keldsoL3l6JaGawDpBJwdP3SwNt6OAii8ny1PMVZsaF4rcisX1h4vz0QlT33wEo605Xl1fNcJbaRcjpZeD6m5dt717h8ULxWDUsbAKi9uqI+uek31jLAl+oPcOG51ANZuwdhABZd+V25RXxr+78lKOo9s1YFY724CSCWyyVl4vlImTz5AC9eCIiV4fTXy0tcHQ8JwIozYtU6F/VNdWKtRTNvwdhm2feCpPvYnNHjn0GheaqEX2pNE5vvQrLwsKFGu5gtKMRrbP14G5L6oGYM5mtx8u7gwJamd3Pi9gZ+T2m07RtDOqi1fUB7V/ppyL4ItPaJuq7dx3SkR5XKEtPPc9ZTqfy2qRte57Jd+JpExtUoVhZt7VG6/qI1Av8nHoeHhzg4OAjuTBeS+abWPaF3cUg6TrsaQ24j3VTbcYqNB9ranT+L0S4Bpn1R6by5Kxpi68ix38o4od1EcvPU8h6ig431Xmj6YGhsz81zbBlTNHY+1oYxnm3e6Vwe25IHxqYE0oQJfWm4jxdd27YjlG/I5Ty17UQsfNtyaobom6ahyuW+J1/enmTUTMnDtx/UFhTawnhbOjg48IBhuXDlRF+9ciJQQIZJ2bUr4J8ZK9MN/VpRUgqAGIs3tZ+cWG/bO5RDpQvHnLg5iwAtX60OtT4am6y1xWtOu2hf2efQLoCgGIXaS5sDYu1AfGJfcPH8UuVLLWjHJCmTMf0vuLV+xA2M0minGRmIUnN6icyp/kIGLj4P0IczZPSZz+dRpVfev6pjEyeqi7qu8dprr+Hq6sqrH/Iq3ff8P1a9hsBX/lzmmbtoiY3xsl9L/UOWbz6f49NPPwWwhrUrnJxMMZtN8PbbB85Ltq4NplOLujZomnbb4vW6BWQ7z9gWtG3bjwOv/MrDu7JeVcBHkwpzY3yQMlBnvS2JvUjwwTWwduDPjPLP0mi/XboYcfll3IyurK0FgvyHEAMSHT/rA69qvAgfD7iFzkN6yQKsr1I8w3ghzMuJoM2RCiCc2k6595zqRALGIu8eCGv8qzHKlsKUDiId+3dxjO3x8upMyKKCwiHyqlip783vHvjKAVrr33OgMOgdK+Laho19VvAI8ZNxWJh71vTzdVeRp/tv/DAOkGpX27Ath7lnbODq/hvxu2G/I8Cr33y+7KvlCpeXl8GxQc4J/Mplo/7F7yksdhSJnM+kfsRBnpCxT85TkoeUWStbCcmxSOaf0hFvux6WAwRMJhNMJhNcXl6q641QOmv97YdJbyupE6mHh3RdWZZtKbauoh3HQv1dS1fSB0rW5715siBNjoxUv/wMU+1d1HjLZ/zjeyLOVyNuNwuVJaeuaPtfOU7F+k6sLGMSrWFy7J/7kulVp1Ib1z5luGm5bgPt0m47BuW2kYyXu9PoTVKpXWss++9tpdswVtw0JcHY1CSspUsZLEMdMTeMP+MKYuw8C02msV+GUoop0KWGvhCvGB8tTQ7PUJqctKWKDDfky3AKyxl8pYwxfiXE+zQZ7nk/5Fu2WNt+ucH7LK8PAmK3WdiE+jgpvzw/fs8X9kPyoTBtoTYmhRb9Ofntc1LS+rlWN7I8Ml0OH/5MGknGKkNOeE6cELhR0teHvqfbgie5JNst9U6E2p8bmmL9fKx+nTPuSKNYLt/U2BAalyWPnHxiMmsGpdT7RCBtqp6Hjn23VRGlNqYtmw8ODryPhVJttm3eu6acuSMVZ9sFkGbk1tKu12unO7R6hMFkYnH//sQBrU3TAqitp2yDqjKo6+5jCWvNxmsW4J6x/bNj/X+gBWgXAJ4ZAwsg9QlXCogs8XBVEkdB3igAvAuSfFP50PNUF5HgooEKyEpgU/WClbx6WenesiHvWpWHMfCAQZ5nJP8cT12vTMbfXtmTVW45zPlxvjw+r0cJBhufJ8UDoMsMv84duM1ka1YNlpdL1NMa1TR+LtUmo36QHCOsEk5tIZ+Je2v7cTyAVN6H8mL8e7+5uJalCQCxPI6MR/Xu8bUsLufBReRrHCVP/ozz6vErVLec7GuLZt1gtVx5OyTl6PMeP9sHYIfoHqm1Euef0kM1fbDU4MjTabJoz1K0jW5caqsYQjH9QeYfOyJD6u4h/Za3U8oex/lxW8uu1/ghkmXS6mgbftrzXCA3VJc566VUHqE1S2gtnVrHldq6cvqLbAvNziR3hZOy3hQ4FOtDOWuCUNx9rulu6xpyV2Po0HYZAmqV9MPc8SIn322phN9t7T+5Mm1j24uNl6F5YQhtW78x3SuWx77G0W1oV33vtvZrjYrPjOXEDZUpSu3nXKIgyIPVc+TcNu42jRoqW0gJHjJh3CSVGOVjCmUO/5x+om3/G+KrKbqhvOU9L89sNsN3vvMdd+4qxTs/P8f5+XlSFs6TrgTsyvyHKAuaoffq6sq9k7QVEvGm8xG3JZlnauEXUpxSCyctzW2j3L6+SyNADr/UYi60KA6NZcSHQJ2hZ8aG+sMYNAY/OU69CkqQRqVznTQOUlguz5Chj6ctkSVmFEwZICk+ALf9GT9neZvzjrX3KsXrpsYza63zFv7a176Go6MjrFarpEf3baJ9v391XffOpZft150B29dPtDT8vZLG+/W6wePHV5jNKnz1q4c4PKyxXteo6wrTaYW6Nqhr6zxj2ytt2cQ9ZGmc1q7d79WkgqkAbM6c3RbcVHU5Bmi5+hAgGI/nfhsWxqMJHr10UQEz4hpdrqCsYM9luIdt2S6t6MYa0Kh6iG6uwbmIwELr85KyyDyzwN6NTF5ZWLmd9y2l5WVVyqwBnV4ZFUDX8ad0tA0yFdF0WwjzOjLG+N6uBL6KbYjlv9yq2G1TvOFHZX/2F8/wB//kD/Dub76Lb/wPv4Fs0vqH9Z95HrFgY6AVz9i9F0fMkz3vVMHT4yt/S748LOYRS1fNG9fC82CleDyOtdY7C5buPT1V84rlcUP/oj5dPUGUldeZBezcwn5iAbYU5HoTp5hBjevZR0dHAIDr62s3X+esr3P0DwL/ZJ4hXtqaVKbT4sR0tVC6ITrRbVsX0tzH9eXeGGRbr1Y66oj0i7quvb4T6kdE/HnoXDmtT0idg/oYeRFKfeQ21HFMhtA8uK2eOKaeGbLvWGu9Y6To/WyaBtfX11G7EO9jWj+JtZ98v2NrKeqvTdNgPp9jOp1iMpng7OzMyTibzQDArSVSa8199i1rrffRo7Qza9tCcxlTtEubwG149/ZFr6pd5UtKU2rup7BYH+Dr8BLiOg9QZuvZt+3vNs25t5lepfrZCowFAgaVQLyYUh/yatXC6EwCTqnFQiwOj5tSDELG5pjMMb6lRu9teZRQalHI42j1rClroTzkIjImQ4xfzjMt/1w+PL4crI+Pj3tn1S4Wi14dpT4kKFnAlgInnKRyuVqtPBlzwVDev1OL6THapbTMYy+WtN+h/HIBJrkoT5HMI5YutPjiv3Nk1tqWG11ShqBt+m1sLBqLSCa5eKX8Y/UYkjFEoXkkt78MzbeUxqh3aWjKySOWV84cnMMrZZihMVDuIMDl0AwedD9UKU8p9tuM+SVE/Z8+CprP5x4Yu+9FcU5+28gU61ehMVbTg2ILpZBuJI9dkDKFDKaLRYP12uLqag1r2/NiJxPAGMA64MlsflewFrC2KfCQpW2LCRwRZRqhG3KgVHq1brXV7w1RkVew/wAdBhvwQo2AjzKP4vQaCDqEQnxK+RPQGUpDZaF3zkAFgHtlDjWPCRhSSI5gsghfkp89W14uMT+bY/5yrjO08tYGnzkAVDxzZXAX2/1mz7Tf1to+XyWtBHg5EOvJZ20/TACx6r+Sj7VWlUtNK2Vi/14ZRT2EgGU1rqh3XkavvGuL1eUK6/k6e82pzUekj/B7mU6StmbhW9VK3T1Xt9hWt0nFKdGvQ7pWCNjKlWUXFFtHyLJba93H5fxDr5AeIetBKyvXY0L9J7R243a8femhpZTqJ4Cuh+Xq6yX9XvIsWQdJeyN9zEwkdcactaNWbt6WJe9YaP1Du+cQv8VikfSoluvumyR650LbN2/T52/L+5IzVsbSDCnHrts1x0YyxGZT0i9z4sTe05R8JXU49jy3i747pL7kuKjxCdlNUvlouNJkMvHs4rQ9fonMksZ8F7TxvUSWLwK9CnWQdWbsTU2Oxhh3xgCnw8NDTKdTL2y5XOLly5dFHrOUx1Datl5KjLVjKL4phW3MRZgcILbZx/2mXiRtgOeDNf9yjgZt2S8PDg7cF8wAcHl5ifm8NcJUVeXFz+kPqbqIPZcfPPB2Wa/XHnBMX+Dysub21aEgRGyhPLQP3MTYlduOYy1mh/LhikyukqqF03uglZmH0SJNAv0aEJGqw5TiXTKuxvjxRar8CIi+oM1ZxIbCUnLmLDB2SVS23HlV60sUrslL9cnPQgrx0GTbRiZ6pslIRgUyhPEPVTS+oY/DtHbmz0rGin0TvdOffvqp225/tVq5smrenfsw0O2zLqThMjUmhYyf/JpKq/WdWL2u1xYff3yN2azCW28dYDarcHQ0wWRiMJ1WmEyqDUhrUVVAXUvP2M47ls6VbfsmvN8rYxxgVUQWPlAlwS1xbzb5eM80QEym2wFQrJEHbggP2JhHbBawLABZAL2tc7W40TAun42DuME8JPAJBkKm0mOTljxHY0lE+T0PWvZc3YaY5FT6hOfVav2rVieuDxp4ebu53nRxuIzGME9bdFspO3mrVibTbORqIpVhodev5T9Ffdp+uBt3lPugd6xVeFA+oWfiXuPp0o7lGUu/FU9YGVd6uKres/x/raShMVq2i9aMVF5rsVqu8OLFC6ABptNpb0wPzRdaHHoH1+sW2OWeklK30KiqKsxmM7f+o/M3ab4n42OpLaWU9q3X3JQdS6OYEVn2hfV67XStmC6iAVrcZpHTnhRHc46gY5hiurS1dpQdtUqJyl6im4xtuNbe5TGI6rWua89eVNe11y9KwGQOmA55L3Jsxcvl0o0tVVU5T1gg7GWak8euKWTPuC0G/X2ssbah2y7fl/T5opTdMZcmk0nPmaqua7z99ttu3L24uMDTp097/C8vL72xOHZkJlHIBkjvT0g/5LRrHS1FX77r49HWnrEhhWYsMEXjxc8eMKbd+mK5XOLi4qLXObUtjbUvIIhSCloMwJBxc8pc8uVLSDlIAQk58twWwDNEpUo2NxRrabU+USqTNLCvVissl0t3T2G8nWjxS/f8q5tUHikqXQzIxTs/DzD0JWMubx5v6ISh5RVbxIbijkUl9Vr6PmlgTSpf3nZ8Ai/NT+YVGldC/St3zATy+0LJOKhRDDiLyZfiKcdT3h+1LcVDAI3MO2aUy5Erl3L4h+YMrT9ID4sckn19yDw5dN4s0Uv4RwOhuTSWr0ybqu+YnJJ2qQRLEHC1WnkGW4qjyXCbFPMc8FSTV6ajfk4fJIXeY/6fsxAba35q26j1Xr28XGG1asHW6ZS2mWyBV6D1nPU9Y9vn1tJv+rikvachzZgNOCLArk6IuIwqEMl4DfYmvS2UEK9I/higGknjgYoFPPgWvtlALQNZHY8WJQ1uT5zjyVsE8CLxHiXqwIG8m37onccbkTEoTygdk1ECzMkxQHncA2A38f7/7P1ZkyQ5chiOe+RdVx/TPT2zszN7av/kiiuZ7E/JTJSZ9KhHfg19Mr3qQS96kNFkpoOiRPHQLpe2y9VyOWdPT093V9eRZ0Tg95DpSIeHO+CIiKyq7hkvK4sMHA4H4AD8CAA83ON2zXfN0Ro4G10TR5CXhAV0Udocw494mSNW/If972BnLMnDd+bSXbM8rfQf4HLNMgK5htXLEuZqB+VVCeW8tI9HJjdiGP/NZUcqi6bkeC5vxvQPK7RZ0yw2iZh9w5LOAnfRqIj0xGwVsTAtLiY78z7kOiYNpzyk8c9ttCmXXzkdKTlcSiuNSSlvCtrwKOUDdGxq9PQpV3KI6bE8Df7Gj1nxSGWJl/E/ZUe4SejazxI+zlddbOI55RwCJNuTRp+Fb9qWT+FQvNLVFnXbYLEnWngmZ73NsRPH1g6pjD7a3DJPot4/Go28nR6fsfbKsU/G+NiybufaQvseIxZ8tyFb3UV5LgUHccZKxwgfCgaDAbz77ruqM5Z+sYBQFEWw6w8hNQlZ0t4k3CXhxQrW46Xb4EVcaDhG4JMnlqsZlC3A6a7rGi4vL/2uV3r3BM2zXq99GvzSURorXNiOKdRtgE/kzjlYLpdBfbRFvCuPdc1/F8aeVodch1QfwjPm4TtOEaz4UfjQ0qYUfqkcWj9UziSBq08FQhN0NMXcqizw9qFKMs+La2BZluZ1pc246GMsScKaZf3Gnf2oZMfqGitfMt6kDJF9QOpONOp4xPSYDg0ilntFpPw8PnctP6QjlhvZUH7iuzPedIjNlTimURnj99BIeansSeWLtoA4KJ/GYLOp4fnzFYzHBZydjeDoaAQnJyOYTIZ+l+x2h+yA3CFL//f9z++RHQy2d8buGwqJpATD3gEWYZGoY7JQfithN+GkRSchAOv3WNFBso7ykrILNLXTNOU8DJyPjuWTnLO0b2lwBz4X73rdbjEOcQrOZn/freAAbuyIdSFuxB84gQsnl1Ps6CGO20aXEodsUezviPXOwgKCMmA3lKI7Yyl4f6BrhAGwtqJpiYMw6YAVwsR3J+DmedlvH0by8rjGk++MrV3olK2bvxv3yToX3geL/3w3LE0n7ZCV2hfbjXQEbUvnHNSbGub/MId6VcN4NG62N8knOVARD64D1HlB7+6kOkDMXhHbJUmdIimZONfAG8NlhZSu3gX/XZFpJL3cOef1iVTfaPI0xsXyIUjyRjB2duHD4VDk2ZsEy9pjNVoDhLZLSV9NlXMoPqLXhEynU9/20uk0mp4BELZXzJ5D68L1II5PA3rUb1GEH/sjnV3tWG8K9D0XWssB2OttyDPWfH3AIeaEu2D/awup9esu1K0tHVY7mrU8Om/H7JJtQfIJ0PmUHgnfpk7WsEP3+SHXpbsKfdb3ptqvlTOWG+s4xASBGPB8uAOW5zs+PvZHv2Ia3IGYY9SXBmMfkBJu+i4vh45YuV3oy2nrtgqVpMTm5uXvbSZIi3BP0zjnYLPZ+B1GVHHebDaeBvzqkdJhcRDxdokJ2zSMC8fapGNxFGgKoBSnOcM0yB0nXcZVzKHYx4SszZdthOQYn2r8rTm7LHxmjdfGGn3PaUupnjF+s0BqfKfCaftSIwUdX/Sokr4Xc8vcrhlJtPlA+0ejhEYHnbPqulY/LomBlSe6GOR4X9D6Ie4Y0L5Go81oNALnnP/AhstGhxDiDikYanMzH4M3aUywgmWdSuWXjJ18LGPa1DqnjTtpbuZzR1tl2DmAqgJYLmuo6xLK0sHRUQ2z2RDqertD1jncIbvlf+qULQpH4nDdc1DXBdSVgSbHfnPnaVHsHVwM7tzu1x39VrruHP0AgSPytnCYdrsq6axhKTqDe12dnidKq5S3oK8G5zU6a8G25ngQkgV50UHInKQ8zOdx7Dd1kNK87D1wxPI0+NuFv4OwhCOW/wfOV2im5b+luGBep+F1M17ELdRfc4r7d4KjLmuoyiq5hrbVOelVORRvTI6lul8sXwonl6FoOK5pVh3FYiPRZKocnf2uGiaRLukIV/7MkcVi9Y7pBlI8ptH6+yYhx76l8S3GcZ0H02gycN86J00j6dI0jJ7Qwk/vsYDVFpdj90nZmqS8kp7YVYZvA3d1PsgFbDvaroPBAGazmddXq6qC1Wplmg+t/JpKq60DqTXFSoMFtPmyK37rvKfZ4SjcxPyZGu996Pht2yNmL9HmxRjEPkqJ0YKAH5LEZC+an44nnJdT/X7Ta+ZN2HA4vOnz603Rn+2Mlc7CbiMEWNPzOziLooD79+/DvXv3snBZy9PAIny2NRK/6WCZKPuqvzYx5gqVbUHbfZiC5XIJi8Ui2C1bVRUsl0tRGeUG4JQSpikg0k4++t62bawLZxv8N9WXqfJi4/vQi6hlLon1AQKOF+6A4n3Pv7qmoO2STNGYEmLaQi5OSZmmoDlF6G90MlLlg7cjx40KUJtjutsIxjnKkwRIr+R8kr7AlgwYMQXPYoykCmWXuSMwrgpl0TpiHBo5LOXi/VnT6RSqqoLFYuHpTikWOfXoGzSDJ1ccaPul+u0uQF/GQPw4in8VSz8KpG3Spi2sBk8ebzUElqWD6+sSrq8LANjAgwdjODsbwWxWw2g0gKoawmBQwHhc7HbIDmAwAOKQ3d8dS59lpcxjDgB3DnqHpKErfNoCwuctAKU9qIcGGU7aPkBdu5gDUHMm0nCrczRKj+bcDBPt43KcnnqhOi27HcJFUXhe5HnVOQKdqi5MG+yGZeXRp8i/O3xFER5LXLjC3ykbOD8pxJol8AG6RlqPz8lhqd2xJicsvlO8Ci4fTn5LTtWYg9anq8Mw6bd/53fHYv7a7Z8O/O5X+rvxT+bfhiN6/yOsH+zLLKsS6qqO3iPG5UoEuubQ+zxjp3pQ2VuTsaRTHKxA1yFphx7VNaR6WQz3sXIRt+bkeRNAkkeprkHDJR2+jQ6k6Sqx9s5pc4vD4RCg6W9t8vN3DZfVBtpGJk3ZFflYs9a3jf0iJpumdFSuL9N3Sd/gv631iuk0twlWGvqmlc4Zw+EQ3n33XX8S5HK5hFevXkFZlsEVaocAyh9t9cebtLndFFjsZjcBfMyl5p02uNv2dQp3qo0km1Qu0NPeuByTkmGqqmrYDdrCbc9jtwl3YR63QldaA2esxmBWgcQCFiEOAIKj4TgMh8PGRct1XcNkMmns9lsul1mDUROyui72XSbY3H45FB2xcmN42wiLOXljCoLmKMmhS8OFky3+Pj8/D46/pry7WCxguVwmHTNcEaDvPK/FyZMSmCUDvBaXA30IXxQs9+bwclPQpU5t8gPIwpZkvKDhtDxNOab0SHRJ8xj9jUed8S/m8d9ybK1UL25Y4HRI9GvzAI1PCUOxvFqclp+mo4owpuNtMxqNGoqnJEBqBjOpbI1WKR3+1pRmTj83+HE8lA+6zgk5vM/DJHo5Hg4Sn3Gj13g89kIzFcBjBgPEE7vzm44dPo9rxjjaRrSefQmksTU2poxZ5aI+6OEQmzP6Aizj9PQUAMB/PY73dOG8eJcUg/h8u3WiAgAsFhXUtYPr6wqGwwLu3x/vnLKDnVPWseOK98cUDwYFwKiA5b0plEdDgKJoOKcAQHdgHtiukHKiYpgYdwOK3p3cLZsJfThvu+K3Op2lfAAgpy32aTRcwV24iAuPGqZpCtfMtwvzDljiNPbfLNTyuBHp4UHc8YfBdF7ANK75Lu6idS76HuSjaZyS1+2fNE3jCGL6rOVw9Td3ppJ4Kdz/1008NF5tU9ofEts4AFc5uH56DeV1CVDJMqCke/EjYiU5RKNHkpmkciQ8VvmJHnPMZZWY/kHrIrUBlS/bzMupNtLapK2e2ifgms2vzsI6cacWh5jcrPGPxiscJ6ap6xpmsxmcnJzAeDyG0WgEL168gNVq1eokHA1SOoUkk6b4LseGJIVTO2Ss/BgN1vJ5f0njk9IijSmNNik+RY+Eg9JI256PW4nHYnp/W4jpNLcJVhr6pDU23rX0UnzsaGoLDbTcPnXXrrzyJkCsvSxygAW/JV9fOn4u9FFHDZcEiL+qqoadeTAYwNOnT/3aXJZlcJ0fxcHXwZuwjUhpNBmBht/UNaJd4S7M41boSqtpZ2zXCTmFW1o48C5NyeE0Go1gOp0GYWVZeqMqpSFGe0qwtYS3hZzJ8KbAUl6KF6zOAmt5qbQWRdVCU0yBpXj4hEbTXVxcBHF0wsNdsRK0oU9S7CXlhKeJKZ9aXFchKEe4kKAPBSeGT5snrPxqaVOtPS2GEg14n+f2E6ald3/S/LGjzKw0SmktTpWYsSTVX7kGllSduMEoNleg8k7plAxxtBxL39E2S81VWKZEt8Wow41sPE2XNUCjkdZNmsvagmQ84XTiVQeYht+NGptPcQel1C+0DaVxrtVTM8QcSh7gxqRYm70pkNtmqEydnp5CXdfeGQsADQc9z9d2fYwpu23GnQarVQ2rFRp8CxiNCphOB+DcEIbDAurawXCIO2SLYJfsYFBAPRjC69MxuNkQRuiL5dVFx4REotY0h2YtjZ4D5HsbnK6doQC9r2+jzESXNBy8RdG8g7dgv5X3YKcwhkl38hb7/8ApGgFxbnGRNG6PW3r3af0jTCulEXGSNI0dovS3C383nME8Xnk2nK9u7zQVnbBM7qG7XRvx9M5ZyanL25b1BS0X6Vk8W8D6Yh2csoBtm6v3WORuSW6IyY1Yv9j6w5+o19IrdygOSb7UfmvxnFYuE6Zo1crBNG10zkPmwX+0F3D5S2vbmPyggSZjp3DUdQ3j8RjOzs7g9PQUptMpXFxcwHw+79XhkgsxfqJ8oelgKZw8r4XHculOydsWO40mg8Zk01zdWEsfm4u08EPrNN90sOgkMTuHdsyqNudwWwOGFUXR+MDIQosGMb6x2n3azNM5ENPlU0dz59Ji6ee2NrvUutsXWPG3nSuscw29QpCWOZ/PA1zaOo0bWnJ4Lwcs86yGX6rXm2rbeVuh1Z2xVHDU4qXOb3v0oAVwkEiClEajxMhvinDwNgykNgqONV/XctsAdbbSSRvfuVIO0DySiCsQbUH6iCHH0H7T4yBGCxc4bpr3Yw4T/G01MsTCY2DpD3SmWuZmLjRPp1NwzgU8ulgsYL1eNxR3nGclHuujLilHhFXROASfSMYmrqBLTmxJmZeMSF2BK0ASSDRxwwz/MlaikdY1x9gh4ZLuyk4pTZLCqNFgaWNJaaT4aFvhjsn1eq0eYU3Ljo0ZWlYMLHzfB2hlxI4yvyuQO+6HwyEMBgNYLpcwHo/hj/7oj2C9XsN//s//GQAAptOpv9u97XxnAeSRomje5R4DyfAIIPMyAEBdA5yfb2A8LuD0dASjUQHj8XDnpB3snLLb/62CWWxdD4VQV4kN0CFRkCdmE5rqxp2YDvwuRRoW0Atbh8u3DtZMuIVpQTt+Obrbtdh+UeCcE9NJu3ABBCfcPoGcF8Nd+BvLR6ddCqTdryRSjPfj3jXfG+n9q2uGuWbaBi4nhDsX4nBhuOXpf9dhXMwpS+OCNDWjQTiquHE0sSN13NUjqK/QIQ72eY+OjmBUjvzVNJpTDUHS+TT9kMuf+EEZyiWSXIRpLeCca+zURHpQz5CchtLalXLMSGXzesYch1JYTCdLye687W5K38R6jEYjLytSmZHrbRZ8CJr8nspL5VrkLbqTN3YyzKGBy+n0if0v8WisDVMyeoqONukl3ZDH3wY/WkBzdPB+oP1jsU8cQjf+pgE6iE5PT2EymQDAdiPTYrGAxWIBq9XKp+XXsmhOw1Q/8jF5qB14bR2MUtpD8hgfu33rzl3w4Ya3GOCHyBJIdtlD2QYoXr7RCYEeCVxVlUq3BhIf4BiidEgyQgyHVIdY2LfwzYRWzliEmJNCWpxzJz2Og97xphlc6SDNLTPXkJuj2BwC2iwiuUJ5F0jRJy1SFoO0xfhuwZMCTSHUymkaPvfHUdJJnTtDaHl8kdGE3LaQyn8TiymCpEBrea1pc2mIxeeUEaM9lS6lfFiUZvydMrpgGroL1jkX7PBDoMJ6ClKKv5anrSAcE/xiY9JCU6pcrqzzPJJBSmufmFKRM39a0ms0SXWmzlj6z9u2qipVKdOE1ZQQG6tHqr2kMWAVkLmxU+MjLAeNU6h08p3lEt6uYyPXqJoqQ3vX6D2U4mpRrrW51Co78DTYL/R+pR/+8IewWCxgOBxCVVUwGm2N6aljivtoF6RF4iNNrk7RIc2Ty2UNmw3AaLTdJVtV299bnh5AXRdQ17tdsXUBMGLj2ym/WZrbcmgG5TpQnWK4O/GNcLp+q7OHUMB+56mapLkztTEednENpyz9iCCXtKLwTjs8mhhppeXXVQ3lqoTBaADFIFGYw4drhOFv7mSN7Y6NpRPTS+/Ohb/xFX+TPGIYf7pmWsmJG+BivyUcDactv3tW2CnL25PWVeoX/3tXnqscTMYTGM6G/iPdmIPQMm9rtg+6jqWMo5JOyx0gXMag7+iM5c5RSV7geCmuFGjprHoWrVssfcoGYV13cyCGi/Yj1dViebX+spSZUy/nnN8RjTygHeHbF1hwSv3G+ZnyZ0qfzpGxYzxDf6fGJadTK0eii47B3P7UgI+LtrroIXT0b8EORbE9ZRKdsZvNpnGNkpYvpgPje5v5sQ+bjEVfjPkirGkttFAcOfkPpUtbygbYn4hHaeE0bTabhlOTz6uWOuX6YWJhw+FQPNJ/PB77cjabjXoSZcymkbJZSbtnrdB1ntNkOQtI/J0rY30Lh4VOzlgKdGLWvizTJkHJmItfH1B49OgRPHnyBGazGazX6yBOG3htQDMY9w2WBeW24a4PTC4wIMQmWO1roD7bP9VuWJb09bFGT5fJmOdroyC3hb7xt6m3VfHILQcdMffu3YOiKPxX8AAA6/U6uF+AfkV8iDa34MS+l+7gLYqi8YVkVzr7qq+kIMf67VA8zZVeScnWxi2udSkDkFSmJUwzfvEyuCFOalN6FItk1EC86KQaDof+mgA6Biz9JdWDPjWI4UP6+JEygcGVlafRocVVVeWPsImtQdxYKd0BZjEA3ZZ8cNPrRZ9gMb5Rh/qDBw/g5OQEnjx5AldXV/6ed2p07JO2oij8nbT4TmmmLfsAAQAASURBVL/wbYsXQat7VQFcXlZQFABFUcJsNoSTkyGMRlsn7PbIYtg+AQAcgEQSdTqBA39PJjo5nYs7O63OUJ/OQegk4+8kzNPAnlJapL1wxd55FyMrFX9I4A4ga1oalsJhLeOGp4LGztNdP+C9rK3poU5Zdv+r5JhtjM9CSLf7HdwZ65xP99XPv4Lzvz+H7/3r78E7/793ouSJ49gp8Q4ajtlUeICD43X7dHRnKI/3v1k6DBfDhCffCeuffLcr/a3shBV3vZK0wXsVOnqD9uLtgnWBJu3zz+aweb2Bj977CEb3R8EVNdSBlVpHUVbUZAUKVKaRdEouX8R0S+3eWjyGD08Cobj41Q4ctyQLpepkhZizSFv/eXhZljCbzeDdd9+Fq6srePnyZaP9NehqI+EbCHJ39FCQ+pGH5wDKPKPRCNbrNbx8+RLm8zmMx2NYr9fqVWIAh9XDECzOD+5oSDmtOX9TsPJuzOAv8SuGpfBzfSwFOc4hrRxrWTRvF5osOL4FGVCfwDFZ1zU8e/bMrwnr9Rrm8zmUZSme1JcDXMe20BabKxBSG1K0sBjE1ohcPBpovgzMd9f05tlsBqenp0HYYDCA4+Nj31avXr2Cq6srH89PQkh9pNwH8LabTCZwdHTUoPv09NS3/+vXrwO6EWL2dgsMBgOYTCa31p/a8eFtwGJz+hZuDkyzseYEkgR6rWM1xtWEC4nZh8OhP06TOmPxji/pAuaUIS5FUwq4gdpaBi3Lkq4tSEKfdWGytIPGGzyNFt4GuGE9J0/bNJZ6tpnULA75mEJpwRlL06YPcuvZVSnLyW+lTVKWYm2szXV4PBh+lUXnH35sNS3H0u8pkHgyJSymyrI4z3IVM8scbFWUKc6YsnhTAkZsvtOU6b5BagssM7Ue8nZPhXNczu2Ps8MxQJ1LHGL8lTPHxeJy5xs0wPB8qXUL6y+tQ9o4t9Ao8TWuxSmHYJ/rrIbT2k53BZDelHyGBmcAgJOTE9hsNt7Zju1/CDkN1xF68ktbPDlQlrTuNYzHBVTV9mjiwcDBYFDAZAIwqJyoKGjOTc8PDg7rsOT46fuhy26Qohx93A7Z2wF3qB5erjASFTuamM/t0q5a73jdvXt+KPa4VxcrWLxcwPpqbZtXFGcgjW/sjnVBJhGflMaHuX246IgF8ttn2afzayXsHZYph2xQHxIn5Y3F0XC+VjfuhK2hWQep/himtCUAQLWsoLwqYfzBdkeS5tixQmxNp7xoWePwnefnODV6qTESYH81CtLQp+6Zs95KMjbNrzm/6PtgMICjo6PAtsTbNdUXGm2pdqHx3OB6CB091y6G7YAfWtIPLlNgtYHRcnJw5eoNMdxctpdw8nRS2RLvpfjECpq9lMZzGlN6gTRHxNLH6JLoiOnuHL9F9zw03HWdJgacd+fzuXdS4fGtgfxitEVp9haOK8Un0jjQ7A996FsxHH32cWz9s9QjNa6ltBbQcEjH/Q6HQ5jNZj788vJSnQe1snLt6Bp9qX6jPIe+IaQbj/pPQRtbNtphLHPmIYDKe7lgqW9f61TfIPHWoefpm1wHWt8ZS4+q6RNwl4KE+9WrV40jIJ1zcHV15Q3AHDabTdKYSMPbDM5UfM5k1keZXfPn4LdMClZ8NzmZWdLchckophTzs+zpbz4WYoLPoSCnDbnB4hC7kLRFBt9jR7egwRwB7xB85513vBCg5R2NRsFupy51SwkokoCV4nf8mIXXAQ0UMYcSL4fPoVbBwSLEaQpEn/OGpgRo9BXF9r5dAAh2QfM0PG/q6LEUSMakvkBTlDUDBBro3nnnHZjNZvD555/DYrHwa3nOPFCWpReukZfxaDyNTqnuyMtaG9Hwsiz91/AYx9NyoyXipl8g07S0TH7nl2QA5TTR/EVR+DlkOBzCer1unAxySKDt2NXwdVfWVYBwncR+ev36NYxGI/jggw+gKAr48ssvYTQadf4aVqo3HnN9dnYGp6encHJyAqPRCD777DNYLBZJI34beVWD9bqGV69q2KLD9RDg0aMJTMcDGGIo+iPcbhcpOiY4GZZmYmmci9zlCsKchw7QnaOkKBQHMJZDHLX03ljqSE06VV2IJ+r8ZeWYQGo36gjSwkkbSXhofg2XTlLTMWXNm5XGCoQnxDgtnocX7Knh8z8LwB3XjfKkrMX+uOLAIbt7FkUBxWCbJnV3rDjvuEi80EemXbE0HvM4IZ1r8ppzrhGOYaLzFVzjyODguWsTadcrTSPFibtf+f9uJ2xd1XL5dL1n7cDr58uqnE+Da/R4PAbnHKxWK3XOpieM8D7FPPiP8grXl2J6RUz34E4mLBdpwTxVVcHDhw/h8ePHfsfM9fV18OEdpuUnkvDftH5SnERbaq2zGt1Rr+H5iqLwp7tgHYbDoWmnamqdtgDKhbQN2zgSKI/RullwpeQblMfXa/0DkjYyCc2Dco9kz8vFRSFH9uQ2lNhuc638Lu1g0Zs5vwDYd9N3lRvbyvF87N1VuCs6Sleoqgpev37t3y06A/KP1b6Aawb2K59buU2J/+Y00fx8DMTGnMXGxPGnQDpBTvqNeGNtq11f1YXXYmuqZKehu6FxAxuFyWQCZ2dn2WO0rV5s2SnNceN9x9PpFEajkbe/5cJtjXHrWhuDQ14NQKFPe03fvK6F9Ql94LfWu9M5BdICrzGYZsjiwgQVHiTjFReMUTCkBk9OG5/c6ZPTL01uKaErNajaMlHfjJY7+GN0S86KWL5cOtosuilnTq7zok8HR1uILa6aYCAJ8rFFuy1dFqHOClyBbOtoyuUPHqa1E3cMYfjx8TEcHx8DAPjjLBHwGNOi2DtyLYJljPZc5ZwKvJQGrAsV0DRBOYZToqGLsNHXuMyZm61zl8bzkhNbaqO27ZIaa9q8IJUjjauYgpEqiwIee3N0dAR1XcN8Po/SHuMjjZ5Y3fi8p/GipODFlC4NuKyhKbrcyJkDqOBxGSmHb/uANvOW1Pd9yAZ95kPANn727BmMRiNYrVaBrJkyRuSuhfReOFSAHz16BLPZDL7++mtvyM9ta8kQZ6HVue3/7g0AAOoaYLWqoVjXMLMYOlxLPoygFnffRsKzy6VOMkvaNxnaDBElD/b3XQC6M9U71flRwz3gjjqBMW3hQgf9Lp8/qtixNLt0yXHu+KvQ/jwNx+mavwM85MnDG+/Oib8bjltH0pC04lNJ18BDyuVxHE/s3znixFX4WQpvtNnuv1pVUC0qqMvtWr1cLv0upADfDrjcZbE1aJCzTmj4Y/olwF6/mc1mMJlMgiMLU/qlRaeL6Rr0t+RolPJYZTjUh5xzft232mwOKXel+pS2qcRX2vpP00iQcmxwPm1jJ6LyD01P9dSULKPRLv2mMnMfemlqrEj5rTyP4Zb+j+FN9aFER1c5OlZGqrwcPTRV7iFsp21wUr7rk6acfrLyKtedc8qS1oG+eMlqu5T0eik8tc6kyonRltPHdG7TaE/lbcNTmAf9KdRuQXdOYxqtbMSVM69J6Sx6KucrPAUVbTd1XQcb7+jH9by81Dwjzald6tgnWGQQy7zbpby2c5lVHtP8AHcZYrRa27C1M9aqNODA0UA7zrALXfToHADwzgYU9HInTOk+2jeFSShYBLwc6BNXmzKlRUyDHKfSbdQrBRJNdLGhfI0LU5cFOwVdcfIFkS6SaBi/7X7g5Y/HY1itVt5QPhgM4IMPPoCHDx8CQLPdP/nkE3j16lWWAUQDutMv1a+SADUej2E8Hvv31WoFzjk4OjpSv4LT5kupfM0RRdOnIHfxTQnYEmgOOgsOXFs4r0ppEOiO6LaGAI7fksay+zr15T2FGD4s78GDB/D48WNYLBYwmUzg6uoK6rr2fGcpi3841cYISecTxBfb3cB3t+aCRCdfpzSjUmwOKIrtTg3u2B6NRjAajaKniPQJmtEvBTdJVxeg7fwnf/InUBSF332MsiM3qvP8bcoD2J6wcP/+ffjoo4/gD/7gD+Cdd96Br776CjabDSyXy2yjC/JiH7Q6B3B+voFJXcBpBeA/M4qR5CLxlqo4aNzd2thdingKfG3ubHWww7FLh+90By0tx6cXmkfbLcvDRX5ktMbqrbYHjQx+ujBMchrxcCm/QoNYbqoPpXjJyUUCLTt1ufNROhpYQtNIJ4BPU+h4UsDvJEZ89J7Yxr22Bdh2xvpulPlASsvDkrzgWLxjbU7fXTOPcy4Md2E45vXv/El2wfL4xj2w6ISond9Zq90Z63e9kh2xUhi2T1AurtmkHYLfLO3y2RKuP7v2PPDFF1/49do5F8hbKJtgXkyDtgZ6ZL3kVJJ2nrbR9yQZmpaLawkaaQG2u2em02lwIpAmq0kGZk2XlZxlXWwWMVsBtUnR9f/Zs2dQlqWX2+kOlD7uYI3R2kY/iDkR+O4Zq53EqmdKNFgdHbQs5C9sc/rhc1/yJu3LWB1i5cVkeCldCp8UnzLq0n6JOQ1o3922HYVCzBnSpzzfN7TFqdkJuoK1X/kJegBxnmxrT7XUT1rL6PinayKfsyy8QfHTsc7nbo4ntftVG898De8CfaxxHCTZgAI6MelHVXVdw9XVlX9frVZR/rHYaDSaeFjbdlyv17DZbIKPqNbrtbhjNnZiJAJddzSacFx16fvcOSFmp6W4YraKPuCQdh1tbbjr0MYGxKHbDd4CaMZRi5BDQWK8qqpgtVo18tIjelKCkmXywHjpDloNtHq3gZtmwrblHXrAa/hznShSXklRS9GTC9Y8bXiHC3lc4OA4UgtzG2N7DsQWYY0GLU/ftGq8lgrjDh8+t9AjQSzlaXFaO2mCvnYELhWqRqORPyaTC65Umc8VtDThpK85LaWstik3lzakYTab+fuCsS3xCDmO16Lsp8q0hGlxXeYiDtQoQE+rQH4ZDodewNeMBRSX1RASU4wQl5RHK08qI1bXWFkcD5/DJOGeGr444FgtyxJGoxG89957MBqNYDwew+XlJVxcXJgVIauBLFWnPqDL2s2h65wizZvX19f+N/1Q8BDGV4TNZuOPJZ5Op3B2dgZnZ2f+KMA2Bsm+2tk5gFoq37F/DMsoRnKi0jgASO9+JWV6HFKYUq6Ex1JWDnDHcAOnHVGynCBdCreT06Scl8n0LvxtciKmC2kNFodsTjpjoZ5mv35gWLELK/b9JY5xS/81glwzXHkPyiQ8I+2W9WlpPI1zzTgM545Y9R9YPhfiCsLrMNynVY49po5X6ohtlIttSNvFNX/Tunn8SEOxT4MykgSSYRc/0sEPreiRtdTOYZWBc2QkKY7LK5vNBi4vL2G5XHoaMU5aT2O6HKcptnZpcl9XBw6V75xzUJZlUC/eR1ivLqDRq8mrGCe1C43nfSDJl5pzI1Y2x2epF+cLrVxN/s+Re1J0c9x9gjZ2rGVK/GVNb02T0l84DW31d2mstxmfsfHxtkGqbbrWGccRnRssOo2FhyguC71d5mrNlqmVY4XUfEZptsx9lqsC2vRpyn5rBWlNpzZA1IGxPLy+jOOw0qqlT80/2hrB8aJzlZeJuru0jnD7i5Q/B7R+ja3ZbcvjmzvafHBlha7jPQV92YTfFujdGQtg68RYWg3W67V4Z2zf90viV5r0+GMKuQ6KnLR3UeDoqvDcNejaxn1OSH2BdFcowpved0j/oe8a0RR+LYy/U2MKQLgjH6GNgsuFBi5A8Hbhzlgcv9w5XFVVsPsKDULa/VOcTuqsbaOM9iVg5kBXhZe2571792A2mwHA/ou71WoFm82mMR7vwhwRA23NlowFWDe8px0/ksL1GXduYh6rA1QTZlPjTsMrKaBtQWuLXONITMmlgjrulLm6uoIHDx7Az372Mzg7O4OHDx/CX/3VX8Ff/dVf+TtTqPHwW9AhNddWVQWXl5c+LT5TPNwGUAEeDAYwn8/h66+/hs1mA+PxGB4/fgzr9RouLi7UjwwlwPnbakDIBuKwCHYA0nccr0WYr4FKkSljO1S9Y6eA/V2xBXF0YjJyHCzuTMQjZANnLebXdt069kT6Irt0NYdt4Ci2ADp9tAy53RrB53cFMidbThkmPksksTpC+3Ka9up83SOFYBcsQMhHpFx/B61Tdsa27GMelr0rloc5whuIk8Q30lLnCg0zPhu7Y+sQD3eo8jw8PAhj/wH9vA6s7YJ2xCz19t+V2/R0TkP5TzsZDOdAtDcMh0N49OgRAABcXFzAer2G5XLpDXDcsM4NwNzIJ41JKpPStUXSJfhpIkVRwPX1NXz55Zde7uMfbPJ1h69F0pxP26CNIZ22Se56R2nD+tAPsfgO5aKI77BsUzYFyRBN42K46PrPZUr8TQ3YOfg5jVpdNMeoZGSn9NG+7Pu0vC7Q1tantaXFdkTbibdNW5yxeki6TVeHj8YHsTzfQv+A9nHJ/tN3ORwsDlwLr6WcZim7nYVWiTYLaGO+jc3CSlMb+zPmkWwFdA13zvkPkjGfJDNY6GwLmozA33ld6DHFCHQt5LYkKk/F6Nd0aYkm3j4SH7R1xhbF9gQP2pd9+76+hduD7Nk5x8AeC0vhkeK1Y0tyJjrLMcWWgXIoYfHQQihfPCyCW47Abm272OKqlZM7WUr5rI4BC57cPG0UzZx0Fr6+baE3RqO0aNIFU1PmJRyx8DZjTNpFCgBwfX3td7HhzqblcgkvXryAFy9e+Lwx52bMcZSaT1OCWUyZwzjp6yreXjHeobRrc0pqvLcdJynocz7FelIjFBVUJ5OJFxBz6tBGuO4C3DiWEjIxLNWW19fXcH5+DvP5PNjVR/8tdFGwtgXnQXxa5owYdO0Li1Im0Ued2ZPJBD788EN4/PgxfPTRR/D06VMA2B49Pp1OYbFYiB+paes4HYtWA89NgXVdpWm6jDUeFvvgp685CvlyMBjAZDKB9XoNL168gJcvX8KDBw/g6dOn3uAN0DxuMAaSEa8PkHaLObdzhDoSrpDonHB8MM0j5aVxoOOOEK3iDJyqCt3iDtoYbsyj7ILN2e1r3m2qdLHoRKL5uQNKoEH6naIL0zTmPYF/kvXEfBY27oPVFRytnLbokOX5CvIkDvzoMcUWSPUheW+0KRm/DadrxAnL451z+zQsPghj6bxsgO0QiXOOOWOd2++S1Zyw/EkdseBC2nd/vJ0aO35hT1t5XcLq5QrKq/gd4zG5Cuf6s7Mzr0/M53NYLBbijtiUEVGT6drIQ4gLP8BbLBaB3oBrZkqWwCemp85gKotKdeMyi2ZUTbUF1SNj9PKjGaX68btNU4ZYXganQ9KjLMbiFKTaNiUrtLV74D/9wJf2XY5jxVKupX142RJ/aThjZcfkbQuk5FKpXTSbAc1v4UGaP6Wnx2jnNEo6WQwseujbAn3ULdcG2bfjxmpXzYHUB/4pOmJHDgPIPBbTk/kY4Rsd6Lv00VWsj7rODxpeDTS7nGQ7aFsGgmSLoXG58ouGW/vQjdvmcmnX5kFtfdJottirc+cCKkdJG37wgyx6ZZ5Go8T/qXWuL5DW91Q5b/OaEHXG5g4SSSCNQW6nx76Ysxqq6DZvKy05EBNAuhqG+4QcwVKiO1aXQ0xAFkgJtIcsO6dcixFZmqi0CStH4L3rQJW12J0xfSyE1jSIf7PZNIQxvBcTYOtAOTk5gRcvXsCvf/3rIJ0k8GgLo7UfpfRaO/C5meZN8aPEf5JCyOulKWkSTskIwSF2DHcMeDpq2IrVWeqfwWDgjyKmAl9RbJ1mKACl+oTTlqvMxMa81MZWZZ0aUXKV46urKxgOhzCfz4Md17xPY8feaHRaDUJc8ZT6wbIG0Hxtjuvm5aXakisneMxzUWyPw/7e974HH330Efz0pz+Fn//85wCwdcbOZjNYrVbR+iJOTSGy9HMuL2ht3GbtPbRgTg1H1LDch1KqQV3XMBwOYTKZwHK5hIuLC3jx4gXcu3cPPvvsM3j27BnMZjNRcY3Rxcd8bzS78Mkdld7RiI5IrVgH4Q7VHf3+3UHoxNy9N5ynAMGuVtW5yn5Lu2O1Xbg03vcBw9HAR2lRcMecsmJ/Of7qGuE+H+unGB5zHE+z66eUQ5g7/ESHJuJyzqdxzgXOrxiojtK2bK/ky3LIIt+Qd/ohQoCn2NeZl9eV5gAn64tGGqmvSPvzdNhfwW+Wz/cp6VvYiaD0jlgMb6QnzlbfRgS3j3OC01UK4ztjgZQHrM68vVg7+LLrrTN28flCXO8lOZcbzopiewoXAMD9+/dhMpn4/M+fPweAve2DGoRTxiy6rvE4DSScFA9exUHT8Z0ztK50ZymnR9IbpLaLAbaHcy5p20nJMJQuvA+O46G04Qkx2C4WvT5Gk3TCkcQ/MZ1Yc3jStpVk6V5lBdi3D93VTXkXacK0mg6ZAxrf5PQLr0Nu+RpPWcvX2oTGS3qURmuqzFzbUUpXs+Kw5O2TH99U6Dou6dxLj3S16tMcF6aT7DY5tjQNL31KNGo0WehuQ0ssP21TgKa9sq0zUFuDNdB4RMvL3yU7K1838D324VVsXeLv0pyfA3yN4PnpyXR9zG0SzanrJ2J2N/7bQiNPS+1EEg1cJrG2Q2rdkdLF+M8COf3PbSJ9rhOpcdYn8LKiztguAhEFi3HvpkBz6FoGXwwsOPvuzC5gXeS1RTZWl74G6SF4JFbv2KKmCQaWxdsiqFgXJkoLXQz4WfJ9K1d9gEUoaquIWSF2lHOsD2O013UNz58/B+cczGYzf7QYhTbChkZnLqASvNlsgjDkE9om+BWzlcacenHhie4oltLF5p027aMJFCkjDceBY5A7HHH3tGYU0spoK5Sm0loVJM1YFsNDhfTxeAyj0cjfI1aWJZRlGfBWrC+lPpAMSzxfjAcQJ999QedGqd21ekpxnG4Lb8UA0+JYxfzr9Rq+/PJLODs7g6Io4IMPPoA//MM/hKdPn8L5+bkXyvFYwbsw798lWScFEh9ockCfbVvXtd9BPhgM4Je//CV88skn/qMGjQ4JJH7umw88Pif8A3sWLA7Ybx+k3N+6w0Hj0Znlw13TEesgHN/UAebbh+HmaUSaOH0FfU04ZBEa1XRimzTKoq8xI4hrvjfKYL+lXYBS+Q2c/LdCrxpmgIA2Kz7Oc7F8uXQZ03vHLTphaZ8V5Im/HYCr2fhNFWatIwlTeYH1aRBG39n4585M6igFgL3D1bkwTnpS5ywNc2TtZjtiXe10Z2wlPOnOWaktKD3EMSu1DdQA5aKE+edzqBby7oygC4gMMRwO/f3v9Ool57ZHBOJHn5pOxI2MbdYlyQAuyT78HWU6pA9lLe5k03DF6JRkqZgcgc4++nGkFXIM9DwcHbWoT2Eb5NhUtPBUH2B5sbviqJxL43ib9mXMpIZ6rk9uNpvgQwKehwKn+y6DprNpY8aiqyFeq93Rorfmzg2HtBshXkknvAs6y9sOFt7S4vgcgjqLpUyaL1UeTYdzepu5uivQcRCzC8bGfh9gXRO6gLSGa6DtXI7RlOKpVP424Jwz20OkOZuDZqPqCpb1jtqF0K7GabNA3+tqylbSFdrMU13gptcgXoesY4pTQmoutFEgLAJIrDxNaJeEaatQdJeFx67thU8tX8phovXZTQhimmNBS5uaGHPi2iygMUFYUmT4Dj9N6cqhIQcsC7DWLppRsU8jcgpPH2MbF/3Xr19DWZYwmUwAABrGdItxgdOcGncWIZW2t3RXkIQnRyHrKqBwBYHv3u0T2hqstPzoSKFQVVX2F5EWQ1VXsM4/PG1KYEbjIh63So8npjg5LfS6AL5O0HlA4k0NJy9PUzA43i7tnhor2nyXUrKogbYsS3j16pW/y+Xhw4fwox/9CL7++mu4vr6G09NTGA6H39i7Y9sakGJ8dBOAczKOh88//xycczAajfxRQwCy8UrDJ/HUoeVT7gxthLtmOu7QBAfN+1slPFEfacKJysvR8JFw6gAW0wv1UEnIZS2WPuDNFrgsO0idc0Fa3p/xIkInl+Tgdc6lHY0CXTcJwS7YNnQQJ6t/d+E8RR22mFZrF5GnNbokPE7+7fkpFuZIPzqSJvbbMT5yzTgfzxy29MnTBOF1+O6cCx259FmH6aS6OCD6k+KoDWioHVTLCpbPl363L22/mHxRFIU/1QI/XsN0y+UyuBKFyw9U/knJFBajXWzt1PBTGvhRvTHg9gTJ4G3Rf/EdnbHccW3RZzRZl8ukWv0BIHBIIy1SfS3G6BxdLgWS7Mz1aqQ5V99O9Q/ixbTIy9Jxiho+qV3ayGUp3YWGp/iBppHeYzrPoWRKjX8kulPtTCFXXtT0whi0dSi8LZDT9m3GgNYndJxaaWjLv7G5lNMjlYVjCj9+seo/OTYp65pFabbmtYKFBgsPxOayGOSORdRXU3RQfFI/a9fv5PSJ1teSvBTDx+fSlB4dWzclmU0Dy7pP3yV7lkavVb7Iga48n9vXOXS3oe0urTuHu9E7AV2FKxom7USy4teE7rY0fguHAT7h9CVIWsvuG7rwFp2Q8TgGep9pjuAN0HRg9MH3FuGJwqEvIm9reJfoogaIZ8+eQVEU3qAiQUzBi5WLcxvHZXXEalAU+2O1Uot4iuaceTZGT8w5zNPmli3lbQv0nqzFYgGr1UqMR6PEoflaAhzDXepraVtaR94OtHxq9MF/6oylc452B4iVLq3e2pwYM7ZYFB8LX0sKQgyvcy6YT5bLJXzyySfw6NEjuL6+hsFgAPfu3Qs+/ECF9Zsis9wlIborYF3wWGKcm6uqgvF4DO+88w5UVQXL5dJ/8MDHT+7OoGxgTpbCFcFvgN14Yo4jdNAFxxcTR0iwuxVxFvt0we7SYu8oKbbbDnWjOe54hcI7X33anfPFz5NCGl8XgjrYmUvLdRA6krF+xW68dz1ydkevlMaPd9d8bzhGaR7N2SSE8TJEejkOoVyeNpirHHtKZSj0RfPGcChxUWdxjL4C9jy04ymA3Vgpdm1eQGOntp+3CW7pCHAzPbtwjWcajlYpjLVpwFf8N03jCI6a4CJp6ZPuiBXjHKh3xQbvsR2x5Enp5+++vrQt2Nrtagf1qobL311ud8Sy9knJp7i213UdzOHorHr69KnX6cqyhOl02jhGUPvATCuzK9A68R2xPI1U/5Qhk8ZbZDBMMx6PYTqdwmAwgM1m449P5h/6cZDkJF4+TYN1RRlrvV7D8fEx/PjHP4bhcAiDwQCePXsGz5498+8WuV8rU3NwS7+ldkN6uU4Vo6kPvqFHUiMPv//++3D//n1fl2fPnsFisYDr6+uAlyQ4hAG5i6PxULYl2peSk0MzwlPguwi76n8SnRbQyn1T5PW+2+3QeLuANue2xWWxyabWAQptj/m1gvThf2xt4CDZpNvOo7F1Ltc+25bXrE5vLEOiFeP4qY19gGSXvE3IsZX3Nfalk11RNmkDXe26MbzS+EUeS9n5cqEPXrjt+dnkjO3DsHuoinLBk5er0ZMKvynD5m1MKKlJjU8y0qSjtXlOP0t4Y0plrqCZ66DPETiteTVlsC3EyubO2JhCKk3oXWlLgSSUpYwIfQmKWEasfpohJSZ40KNq6eJjacdc/sQ01rlONFKztrDSYDX2tO2vNopBLg91aTf6xHj6AQTPb62PZS624JFo0HBq6XIBBS5NuJLaMWd+aUtbrE3bjDlt3dGMjSk8Fjroe1VVcH5+Dq9evYJXr17BfD5XP6bQINYGbdZSxBmbYw4FkhHzbQDcXYPKLBrYjo6OvAGfHsmoja/YOEvNBZJTIUSAD9dwGPndsW7ntKSOjQaayC5WB8CjxN2x+NsxfBwt0lAkylVocQXZHUujKK9jutB7u30oO36lssTyrY7YqMexiV9LH+yK1WhyJE4r1im/admuWQ/VwXtISJWj1aUNfQWEvCTU07R7OEYDD5P4hoY71t+OpaXv/DfNS/ozeNI4F4b58oU4P5cl3nne4Envo4WQJu2d/6bPuqphc7GBeh0/dUPTo9EJRZ2sKEfN53MAAH8XGOoUMeNVG90pJg+kwiV9h+ah6w+2B9enYvKppq9x+WkwGMB4PPZyOL3LNqW/SfKWxeiOTs3BYAAPHz6EyWQC4/EYrq6u/D3wKfkn1q60HEm+serydB1P8UFMv82pA5bl3NahPJ1O4ezsDB49egTT6RQAtscWX15ewnw+9+lovQ4pP2ptKr3zMKyXVa+Syub5JFkr146p0aPNQTQ+x46VyhejMwU5To1DQ2qsdLVvdIE+9Z3YHH4okOYp6Q7pWB4KXWyG0vinpxHFIGbH1MrJtePk6ug561msvBx7oNWGnJI1kjqnUv4hIUWTVtdYHeg8l8tnEm0S3rbA15FcfBIvaDICf4+VdRvrQo6NsE/6TM7YQxvXLGVLDEi/gLTi0gyI31TQhFA+OC1GV4sgaVn8+/xqgtIkXVT+tgFVSDW46fGcK0jk5s+BlDE6Fcbzo9EEhcrY7mRLPTiP0nGGiyTfBaWlp19LObe940gbfxy3VSm0Ku7cSEPLzAGLYmmlM6dsDSdfh7ANAeQdDDHh/S7NTbmCcax9Ynna8EBuu9I0dNcBOrxi6TWcOQYODW8McA0cDAawXq/hd7/7HSwWC7i4uIAXL17A119/DV9//TUUxfbuYq7Y3gRY5ss2kGrDQxrsbhIo7xdFERxZDLA9Bh0A4OTkBJxzMJ1OwbntvYLSuHHO+TwxBdii/AZtLDhBGv9AnkAcGZgfnN8RCA6Co3+9s7NBxD5fQBM6SgoIdsBiubgTsXEPLOKh5VHHLoUiLK9BKzaNIztokV62o5Y7VC2O2cYY4K/SGCH9EOyKdew3kHhCW9C/Cm5xLgTCi8grILwLuIMdu4xnxLq1ASf8Fng2SMP4uuEcFeqCfObfkd+54zXItMNfd6mggJeH0aZ1Qjsznmn0t8ZLjuV1+/DA8MTjpDtiSRwNS94Va9gZ26AH9jT7eD4mKM1YXrWnxwKSDOScg8Vi4e/TRJmR9gveDYYG4pgeYjVmIp42MpeGT/qdUwbtk5QDiUJR7I96xjVzvV57RynFrckpdK2lDnKahtJJ+2k0GsGDBw/g4cOH8P7778Pl5SX8v//3/5L15TRQOnmbaE46iR9wRy69zxefFB+VuamumnLaWuoymUygqiq4vr6G999/H3784x97/fhf/It/Ad/97nfhiy++gKdPn8K///f/Huq6hocPH8J6vYarq6tGPe8S8D6yOGVj/Mf7heqSPA0fDxaHaMyJkDPO2sDbIp9zeBvrZLmXNZaXQx92g9sAyRmZS1vMmRsbE6k24/3TdQ2X5hOtLAQun2hrkwTIJ113yFrlgq7j1CpPATT7/FA2kRik7FgxyKkrb9u2ZaLshlBVldnn04bnke7bOKVQA6kevRxTfBOLlMbkbRyrkmCVEm6kst9EoUNToKR01gF6aFpSZcaUQu7IstAScyB0gRidFHIcR1yBbNumEj19CkoxhSSm6Ej03QTEBCeJx7oIcbHyNEj1MxcuJaMHx0fTcCHDUoZGH8BeaEkZO3LGKK1bm/aj/7lrCS2bfw2P9yTh/bGHWiP6HKcWQ16buFgazg+UjpQhQ8pjKZeOV63vb2KukeoZ+73ZbODi4gI++eQTuLy8hMvLS1iv117IzFWC7zK0NRLxNouNZ60Mi2IszWHWsZiSXfjuGlonNGzGgN/Dkxob2vhqhO8cE8Fv4qyw3NXqn8QBGjhJuSMVjw4GBT/mL/YOWn/kMM3vwqOIkQZatnYccRDGHL76xt50vKmttGjKY04IozgkXKQvY7tfozjAUA8tvZCN70g0424zlWXmya2ndB9sCr8f5zm7tkMkapi2wxN/m52wmJ7GkXfnXBhGcPt3+gQ53P+uQ3weP3XEUrlRKwfp4PWi4XwcCPVwzkG5KKGaN+9mz12zpJ2cmowklRNbb3LkoT6A42yzrmK+XJuDVXeUZLxYWTHjPPbBarWCzWYTrLlWOazNuizllfQsgL2TJRhnkMc/ubyC+ZC3UT4djUZwfHwMDx488IZjpBOdyH0Cbz8r7/G0XZ0eOeX3jdNKs9TXbccvL/8m8rxtkJrvb7p8DrF1rosNqws+zS6USieVxXXvNuXzMCmtZr+K0cjDLPYpKawvGaBvm2WKr1Jtk8qTKseCT8KTu9Z0hRz6c+hpS3sfdb4Jm79ku5egi+1JKtOa9tbujNXgkMyMxi7JIMYFQkuHtJm4v4UmpCbpNnjuKmiLAxcGrIsu/6qEOhokuAk+fZPHAhfmUnWRjqq9ifqndvRJwqZkNAmMWSzOAppQS3EMBgMYjUbg3P44W4of68L52FquxRDWtn5SWmxf3L1wdHTU2IU8n89huVzCeDxW15Y3Yb5CyDWSIeCaS3mBx1HAY1oxPlYu3wFhoQ/vVx2NRrBcLht3PbftE27wa6tAS0bAoth+STifz+FXv/qVH6/SXbFv8twLkG43HGe8vlyGiK2jVsUKga6p9D92TKMEEm7Kwzj/0XR1XcN8Pk8aLTVFA2m1rmlR/ifOCfrPd7k2HBkudIr6cgoI72BFxytxyPr7Y7F8CPP5cH5nK83Hnb8FoYU4Zb1jF2Dv2MW2wzL47lrFqet3AEvONaOTjqdp9I1j4cK7tkNWxM2dUwSXn2MYD1CcgRzhGL0+mO2SZf8NepW2MAHi7St9ChfvasJ/nqcL4qjF9DWAq/f83wqkbKTNgzSMB/p2xkr84dNE7ohFByz/nbwrNrIztkEfp5O8B/VjT1c5cKWDq7+/gvK6BFc1Gzxn7eXzfcygzNcmSe65LVkyJldLsowGbeSWzWYD8/nc7zAGsB+7adk9S+Pp78FgAMvlEv7u7/4OHjx4AK9fv4ZXr17BbDYLdqm0qROVXSx4uL6PMi7uFI7xRcpWoOXR0tP5//nz5/Dy5Uv44Q9/CB999JGvywcffODlb4D9jiv8WFeS49pCbt0sZdL+wTJ4mW37HQAC+2SfY7qNY4mHp9qzjeNQsz98C3tI2Znb8DkHKb9VjzmU7mnBlzt35eK34jokaPpmX3ZeOmZzx6M03rWy+7aTHmKebFN+LKxP2rquhzlAr0vSIGWPkCCnDtwe3PWjLU2u7gp94QmcsZIgTaFPT7KGqw8PeW56KkTQiciC5003fkrQVXmKKYkxYS8FsTQ5wkQsrs1k2ocwZC0rlS+1QPexgKWMAG0Vkq60tM2rOS+ldzwKKna0Qps5TGtHLUxbVLQFR1sEpbkuZ+5P5cFdXnRnLOcfXveuAk1MWRANcy3LoeVRQQHvfsRdsVzQlWiTaM0xZrWFlJKdOtZa6zupXXl9NMNGSqmXxmaq73KMJhq9Er7YXJsrPEt9rrXRm2S8oONfU/RyxmFR2HcD9yVX5PYj1jM1hp3bO9Vxlw01+gIAzOdzv+5sNpsGb9By8UmPK5TSSPWmvMYNtZb1C3edSjtZMd454rh0LC+GFc0nOpR8GTunLz0ieJtdcMS7fXhQBuxpDZyvFKf0BJKXOmdx1y008YeNEW1KMU2j/Ul9w2An/3ZyeIMWJ5RtIdjJv51zelwMr1I/NQsvQ0on1TUFljwkjDtULQ5Wv3s0kS62a1YcnwrtQVq3f5qdsuw3TePjHYtPPBvOWeKU9WnwXdkZS521nLagHhqvSH2wi99cbaCaV1CtKqhL2UlmXZu5vBKTvbn8LsktKdm+jTxvgVg9+RwcKy/XuI/xVVV5Rywe95yi1ypTpuwU+JEU5r28vIzKNzGaUuFSe0j08uMKY7RIfZPSBbSyEfA+e5T1qqqC+XwOr1+/hufPn8PZ2Rncu3cPrq+vYTqdwmQygfV6HXwQ2YYvY+OurW2G828b3qJXouCTynfamLXaAjQ6LGlieloX3UKSL1P2EFrnlC3gmwqpsd9FL2w7PnjemK6RKo/jyx23Uj4LLTGaNBql9Ll8K635Es4YXus8zfHw97ZjLIajrSyUAosdkve71IbW/tJoy+EtDZe13jdhB5TK65LXshbTNZbah7S1921fG+7UztiYoNxFQEjh5vGpu0VvkgkkIS+mVFjiu4L1CwVpMdF2Jku/eZrcCbMNtGm3Pto7pVDH8vVBi5QvNu76bPPbBlwM8HcM8J6iq6sr2Gw2Pk9qPKaACpAWgYPuxJSM7tZypXS5PBSbW6fTqY9HYwE3nOQes8qBL/AcFzrNsc2kr71y6hxLNxwOYTwee2NDil7p3VqWBHznaaoMSVCnZaMTCN/RoIC8H6NbUwa0dDxcotsyPmJAj0hrgys2R3YZgxo9VEgdDocwm82gLEvf/n3N/4cCnKvG47E/vq7L3e0SX6XGP6a1tEvsPu4YxMZ0rNy6rmE2m8Hx8bE/erqqKiiKwp8m8NVXXwW4MFwyqOJv7f4i2j5aP9A0/jdznhSuCBwljV2kbu9IaTh40Im5c7JyJ25gFN45QYM0uzK8k9btxqGUH7bpxOOKCU0NZ6vbhwW7YEkdfb5der9rlzplYZs/aF/lyOXw1YnhgZNSaFfNieZpJOHB7lf6js5B2oc0D4tzzoX0YLmcLoqH5Q94RcHTCCP0qGlZu4VBpI0ce5fKE8rXykM+8+kL2N8hi/GkvNidsfR47Cg4IQ2nG39q/MH6iqfzfUV/Y746zE/nC+0p7ZSN7oTl79I/LQfYUwj3dadjg9JYOZh/NofVi1W8/XfQxl5h0R9w7uFzviRfvU36GQesLzpi+d2osbo31oYd8DUf00hGQYCt4xF3xH7yySdZOqRmyOX0S0ZJjOP379E2oHI6l3u09T4mw6bqgPnwvnqqZ52fn8NyuYS/+Zu/gfPzc3j//fdhtVrB/fv3oa5rePnyZWMHMN213Acfd7UfphwLmgyOu38Rx2Aw8PKv1u83NW41nS81dgDyddLcuUnj/1j6NjTdJT3pbQDk35wdbDhXSWOMb3aI6evS/NV3H/N1gdPWFp8G0saFrmPvEMDpSs2XNA3+7mN+xt+aDYznSc1nfa09Eq67Jp9pNjhpLFvvXuXtS+UT7UMlmg9356K9mLaZNsfchI/oUHDrztiYIRbBKgRhmCZwpvJZ4KYXcEv75MYD2IQuii+nDzDcKnTxsqR0bQykAO0umW5jUKdpuhr4u+a10qIpETn4rXCTk2GuU00S8uhCQif+2GSvtVVbwwwVMHGXJRV2c8ZlbPxwPDG8Mf7IFcI0enIgRWeu4ifhabPAD4dDmE6nUJZldAd1W+NHLljbQ+pfOk5Go1HDGWtZo2KGw1j6GM1t5yH6QYB0PJpEW66xqg19SBsABHcNUwVQcqDF2r8vxTEHuBBe1zWsVqtGnGX9ocDHolQvTbHvCrG7rnOPy+aACsdkMoHhcOiPF5SUGek9FsfbhENKKfV0OPDOCXTEYrh4P6qDwLnnjwFGJy4QXJiGOVKLYu90DfDSOB9MHKySYxWa734XLdKFzldo0iA6ZLGd0QGL9FFnLy2f0JoEKQmhW8RJ2jVI7/T0Ac868s+LZjjVeuxwSo5OKT3lkcAZ3Cc44Td5avXgcVG60OEPrD2BhRfQoCcY64Kjvnd+kerOw6R313xvOF8B9g5WR3iMpnHbNJQHTTtjLccU0zKBPZX6Sv2B+Nev17C53EC1aMpwKWMeTYNA1/RYnpReLc3zvM5Subl2ji5rqCSDWPRLKyDelEyZK4tS/BRQVuT6IJXVNBpiOldKppHieL/jOzr6rDagXFuRRd/D8OFwCFVVwWKxgN/97nfw6tUr+Pjjj6EsS++k1erTBlKyo/Qea2/e9rljgsvww+GwIUdKuLT2bgtWHTgVn0NLysaQAonvU2MsB27ajvs2APbDaDQKdB7+YXYXm4Y2/jgNGB+z1VIZPjXXx8rU8Fvz0DSp8c7p5yeuUdDsSlo5faSVwGofS7VTF5kjZ+7HMlJ2kxik1is+f/Vpi+jbhqrl75tuXpZk/+mjPIvtsA0coi0o3Joztu1imJuPTsZavCXspiF3IrOC5HjRyqThuQwec4KmJi9NCM7BgWn6WGisyptES04/tl2EchwdN8nb2tjTjMs3AdoCrLULFYi4cMTBMpfEDOkpurs6gfgimBJ8c8qS5pXAoA16nWM80gVEg1wL4PRp7UhpRmesc65xLylN1+auco6jDwNGStHF/hyPx427HFJ9pwmmmqMohU9q/5hxkgJdl6T7mXg/0/pb+j1Go5SWlo87x51zMB6PxXqXZZk01vA2vS15BsutqgrKsvTHd+PR5fRYPbpWaG1E5xRpraO7uBEn4stV1qR6pMYKT29Ji8cJl2UJ0+kUBoMBvH79OjiOWHtKO0gwTnLqSzwZG2u0nX0ZO+eFd37iuwudtEWxj/PpiUOWpqF3sW4LhtBptcsPjq2fxAFGdw/SO2e5wzV4Z8cSB3g4P1I6CwjyeToLRi/APo0VpKHq8OHCNDSchfk4Op/R/LQcR3gDCI+4EDdPE+Df4aBlNJyImIbwUaOqTqex0Q4AIg6eR6Ijll5Ny+qoOlg5YPzuWRT7XbMOHEAN2398j/FLaiqP0B+MdSmcjjcWxvs5CHdhHs87PI4+yY5YyhN8Fyz93XDGViQc/yV+5bzM+RpkOp1zsHqxgvnn80SjHxYsRmlNR+drnybL5hj4UvLaTUJMj9DkS5qPPi0yAl9Pi2LvZJNO+OHrsaUMSX7gbYxl8b7k8k5M3myrc0ltKrU9XqtQliX8+te/DtJr8i0+YzpEG0jpSFbZjkOMb1DOBdhfXYO6YE45KfsEpyUHt1XXovjb0KrZA7lsH6PNUv63sAVt3sgFaX0YjUYwHo8BALzuopVjLV/qW67L8Q8ZNLuSc07cHSmtexK+WD00/rbu5s9ZO3HOQKDzCT+SXqPZOl5icoAElrGaAxq/ctnFAprso+FN9VkMf1e+12jLtelZeDeWV5JdYieYaeVZbR/a6YQ5ZeVAW37sOy1Nz/Pd+s7YQ4I0Cd81sA6iN0EQsbRzjqGyK+QImn1BrjDMQaKpy8RwWzwTU6xomGXR6aufLAuI9F7XNYxGI5jNZl5AatOu/ItqfryWRCdV+KliR3EtFguoqqpxdBWvkzQfxpTQHGXdOj/FjsZMzXeSsYnHc2MDv0OpDWjrCPbBarWC0WgEk8kEnHP+KKo2YBXCaPsccn3DciaTied9ei+UlB6gneAM0NyBKPW5xYDG8dJ0lAf5+MP219YpSdmTytYMCZLR1LntEcSTyQROTk5gNBrB5eVlY1e1plRyhYWPgdw+6QOwTkdHR3B2dgbvv/8+XFxcwKtXr+D6+hpWq5W/V5k7ZCWwrmuSwt1GdpLSo4ER+YcrMHTsamVzvhoOh3BycgKnp6dQlqU3bGjzH53TOD9h3yOdvP95+TQsKbcwZ4Xf4YpOTLrDdedsDZxbu7zeUUqPHeZ50TlCyKHp0aHl81NHLAiOWMeOJ6ZNUJA2oI5d4kDzbYw0SfXmd9j6au+dPrE7P8X2xvwszLcncXxiHbR31SDF8dC0QOJJP3KHXMNpSmnkfBBEkzjOK5rXUVvqGH2N9pNo4HkYbUnnNaGT7n71fFQwXmZlnH7nFE7eO4GjR0fhuMxZzqW0Wj0B5HKEPm68C7zU4Be2IzZoJ/5Exym5/7URHzmmmP5jvqgjltJP+Y7XY1fO+vUals+XsLmIX8dgga7rrzR/x3Dlyl65cXcJNPkN4zhobcNPG+LytSZDUD2D9o3FoGqR37W68fU6Vi9JF5Fkki58w8PwagqURfhuuvV63bgy5JBg4ecYDVTfsdosVquV15kkuTBGh0VmlfQITW6V6ON1aeMEsODVaGiL/67bQfuE26xvSm8A2I6Le/fuBelQZy2KAlarlbiDk+Prynd8fFqOqrWCpR1StMXwauOE9/tsNvM2vrIs/bHwMdDm9q7tfQiI6aa5eKxzKEKbta9N+/U1li32WgxLzcOHmmNy8cZsP32sSV3B6j9oC704Y2+CwXLK6GNQS4vFoYAbUKXy+4I+8Ept2XaSumlBI+XQoWlSSkds4bSUE8OdQ5NGA4/jE3MK+nL2pMZwjJcOAVK9+G/6jkojvQNUGrOpMnmelOOHAv0iGxVdzLdcLr1jgAuhMT7k/dK1H7Q5k85pEg9a5oBYe2v5ueOXOk9ifRejR+qrzWYDzjl/LyYvNyZMUKExxzgmpY/NV23mWZpnNBp5RUDabWehWaPDymfSeMk1WmCeFK92AYqfjz+JlrquYTwew2Qygfv378PR0ZE3VtFd1ZKhUVI6uBHxpkBq0+l0Co8ePYLf//3fh88//xyqqoLlcgllWXpnbOq4JT5mpflKkptivG8dF9w4Sw1WWpvH6sJxDwYDmM1mcHJyAtfX1/5Djrqu/XijZXOjG4bxD30wXtqRk6p7VKlDJwZxXgS7RckOV7rL0ofTvAB7Z6YLjyn2aemzEN4d7B2jlntgAbxTljpTxWOWyU5YX45zgPd/UlwBHXSXL3fM+uAMxc4paZweRt+1Haocf8Pxy9ufpyH4PW9Ac97xjk3KO+AaOEUHLKWDldmgz5GyOA7pt/ROy7RMnZw3Y3gZHD06gnd+751tcn5nbKHwSAov72+l7g0eEviGvzd+0zQ0DGkgd8hKd8NSB6t3qFLnKsXnnOiMDRy7nB4gT9o2vB0o/+zwl1clLJ4uEo29x3HTxs2U7npIGSBXVupbx7eWnyPbS3KZtuZKuiIvS9spZZVXJf2T0slxYLx0nYLEm13l3VS+oii8E7IoCn8FA8p79CqGPmXvQ0BKZ9ToLssykMUAIPjwkOOn+LraqVIg5Y3xi0SnRvNN2/TeduhLh+8TkKbBYABHR0d+/qmqKji2GO/1pnn6pgGg+XEKhmE6a9mHmg85TQipD2Vo2GQy8TbI9XrdGKexOYWGSfprbr21srS5MWdusPB7au5rK5P1Zf+RgNOTY7eyyA20bItuf1N2d0n2kOqTks0OPYa1cmPhqbklZx29Mztj7/oCbh0MsfTa3SIW4f4m4KYVSo0Gali0HMfQFqQvlriBVRKkNTiE0ilNWLl9dNNjK2eivQsQU66cc/6YTXp0JDWAdxmznN85/1VVJbblaDSCxWIBy+USqqoyzS0cB43XhLcu8wG2HXcMpIDyvbaYIS6+G1gynqTK6lJHpKUsS5jP98fZDYdDGI1Gvn81hxOWzZ9aWk2A4v3YRgiNtQXesQqwNzKkeEsrJ5YnRxC3Qk5bUEFRG9fSvEzD+a7EHGPc2dkZ3L9/Hy4uLgBg+6GFcy7gc0kBo2l4uTc99xZFAbPZDJxzcH5+Du+88w6cnZ3BO++8A8vlEi4uLuDi4sK3lSac07pxxZr3k5RPoisWn0pL+1bbccLzc6B9gvPjy5cv4fz8PDgpIYZfow3zUoOf1q6o3Nd17b+wpnzT4HEHfhebP2YYd8funBh+96rbO1GCeLLrlTpw0bnpHaqYD8DvOEUa/JHCWEaxD/dOF+60xTYiO1/pLlqAsHwHhCbcZYs7X4tdHfnu3l34tljnaQgcs7QPUl41Hu1YHu5QImH0nTpBuSOKOtiwPf0TXIDLzycuTCvhDBx8lAcQJ6WJ4WzkTdWfh7M2o32i7nQV2oOXI/G0x1FAE58UxsKdc00nbBeg/EfeeTx3UAZhLkwb8JJzzfYAsN0Ry5+RnbHSTlhwAHVVi+ESv4tylVRXRtPmagPXn1yLd8RGm77HtTYlk0r2Apyv+dytyYffRJDWQ4tBVDM28/VXsh3EjuOzGJTpv7SLlOalRyVLhl8qlx4KKL9ReWaxWAQyalEUyZOcUn1j1fEskIMn1W8cFzqn6KkqFrCMWQlXbrukdDk6p8RsYqmxdUi++6bCTbYp6mqr1QpWq5UPn8/nwZigPIEnhsV2cVp5NXZscezebqk8TW/MwcHzanExHLETtmIwGo3g0aNHvtz5fA5XV1cer2ajoGWnaM7lrZgeTtevGE2x+SQXYvWLrbmHAkt9tPi7JLdJ/Rhrz0Os0Sn+vknIlau0NmntjO2rkftevK1KzCHAMiFLdZSUq0ODdfK1CMSpPLH6SI4mPtC4I0NaSHMnMQxP1S913IVEvwapdsnBZU1zkxOWRWmQxnuK37uOB6vyK8Wh0FfXtepQSzkENOUZ4yx9JOWr69orel0WJ+tc3nZ+aBh0E/m7CmC0HK3Pc4XnFG/TvkCgxoaUgU2iUYrDvtKMQimI0RHDQ52xXZxQqXyW+SFHyUiB5qiS2tei4ND1Atssh6bJZAKz2QwmkwmMRqOg/FwjDtKUkzeGM2dcjkYjqKrKH1M1Go1gOp3C8fGxrxdf62PzpBTO892UYYIaqGJ9Y1kPnXP+63E8fl4yplvp4o5YrUzkVV4W5/uiKPyOVeecd2RQR+w28e6fOEKdYztl8Z07SxEnkHGywxWkxzq4vVM03iBhOd6BGjRKGBc4hHeOM2mHrKeZ9lMBjd253rFrPaJYqFODB5wQzsOowwnpoPgoSqkdSd9GeZD2oQsdno1dqo6U7UKa9kmcTI9GZ4quWBij3QdHZIUUBB8F7AP3HyJwEuh8xngk6bAPE6thkuMVnxanLOUX8TfmoTthaRydO7jjVtsZKxxTTNPQPEE7kjoFc4nUNqyOdVlDtahg9XIV5LGsSzw+ZtewQKxMiVelcmPpbwJia1ifRjqOl5evxUv0SLpDCo8mux7CtpU68lKjj/6nPgxtY4eQcNG2pCd+xOQ2SsOheIRCjt4rtYuFRpTJ+PUSbenUZM7UPJVjm6J9o/F1rm7TZm66Kwb3uwg3OZcj4PyBJ/eknKCSLmO1vSLwuYzPLRouq82BppXGc47txrJWaGNLSq/N60Wx/eAZAU8akCDXNk5ps/CYtr5boY2um8v7XWlEyJEFu0Abe0IXOU8bSzn+hViZEq9beavrumCxw1jiYnzKZUcL8LStnbG3uUi+qQv0ZrNJXlw8HA7FLwZvY+E9NHDjNe4ko/2LR4DSPADNrzOs7ZMj4BdF4Q3HCPTYyLsONzlOcpwwtzV+U8IbB5qG73xEgTRWBseRK+B4Y3hR+N2ICMPhsKFU9y3MxAwX9LemXDu3vz9EO56pLS/k5qOOCo7DMiek+s0518Cf2tV/1+d07D/8mhsVsZgiRBWlNv3LlZrbaiPuaIsZJDBsMBjAdDr1O+k5Pg70Hmhc9+lYkuYO/B0TbmOKYVvIUZyxLfB3WZZwfX0Nzjk4OTmB8XicjbvN+q61H8ZJiq6kXGBf4Bi3KHY5CjAaNTSc3EAZw4ftXpZlw1DCjYf0XVLmfN4Cto4WdIrUAG6wd5Bs/Y2Fd2rQI4k9XgfBXbK+TrgjlR5jXOzxYpzfUUvvjgXZ+aXtgA3uppXSSM9iVx7fIUt36GI/MLoCx3RPjjXsGx4eOF6d28c5OY7vIKQONNHY65ppaDqOh+88xHyc3kYcr7uDBl820jrhH8sAFsYMeVIdGzhpvQSFW3TAbiP2HxjgUKJOWQfgKufTBrxjhRSvkL5vxFE+QXpIv/E0Eq/4NJx/BH4J+pvuiAUQd8M2wqqmE5bS3OBzFsbr59PUDqpFBRe/uYBq1fzw97aByyI3ATl6cpt8fbQrXzO1I3rxGXMyWhwKdOxTfPRJHW9FsT+qN/YhLy9buuYEQdIhtXlJKqtv/tH6Gz/Ek+QK52SnsibXapCjv/UBvO0t+jF91/RkDlJ/x5w2UrxFRrUAlxlTab+Ftwdw/kLA0+Gc2+5w/8lPfgLvvPMO/MEf/IE/Pvfq6gqeP38OAFt++8UvfgFffPGF573YbvgcoHfEYlmpOdwK2phryKHK79Q1TtL8rc2hdIzTj/3xLmqNfrQXcvv1bcJNz9OHhtz1tIudo2192q73fcsJFqdtTpmH7GOLLJUDsbWbQjBS+zCMWyvRtSEtwoeVpkMxOjeeSsZ5XPDatGFfcNPlIfAFD424PE0sD0C67zWly6KAcaUrlb9rW/Yh9Go0agKEtdyc9Kl2uEmesxjeY3kxPVWoYwpzDKwTPVfgaD48Ftei9HEare2es2DSttRokvhNa7NU32h8HDO2cDos41hy6lhBuwukD7638G7XtZy3FzUypfhe4wEpj+Sk1/LFoA+hU3NSUYjxLa5f1qO7MD1tY/qRh3WtkupykyD1N3XgbzYbOD8/h/V67XfKpgxSGGeVi6S5judLrXlSv3PFnM7DKT6XwrV6c3pj64Q0/i3rbS4/7TM3nSrBzlgH3pnUuD+VHDvM39GZWRTE4UmdV470CezTAMD+mGPEGZC7xxM4YotmXGOXbiHgoPTRO2YdRPODI461VHNr3efoTxemo44nnt6RPMDSOWjg8TxNHZikTNHZq5UtlcFxs3+6i5Y/G7gFEJ2hAg2NePLM2qnLw3j/GqZiHOPBTmyFDhmBMZz1JU8j8UUQhu8uDMewwCFKw3AOo/NHraQTjimm7w1cwMrl/MnCgnca5hxUywrKeQnlvARXsnkB0s4T3o5W2TVnDo7JJG3wpeiIrVOpdVgK6yKbxOTdmEOujS5t6UOel6+rdO1uewxlrAyLDtmXrpGClM5FaaU8nMJpkZNiYYcC69hL6clSHg1nrs2rb7DI4Ck9sAv9t1n3uwSWevfVVs65hsOPOgcHgwF85zvfgQ8++AD+8T/+xzCdTgEA4PXr13D//n2Yz+cwn89hNBo1jhO2QMqeRNNIcTQ+17auzVESTV14UaNPo5d+4M1PNWpzHH4bfrLmj9n2UnhzyonlaWtfzAGpbVN+hbZwW3N+DPqiyWI70eL6to0dQnayzEGtPpvok5n7hEPdLZoDUrtIO2UQRqMRPHnyxC9Sl5eXcH5+3sCJu0ZzIKefDjnQuzA31h3hEHRK9I3HY9ExzL9Gii3Md3GMaHBXx3TfkKonOkgwrZTfeu/LIZQIPA4XBWMuLPNyrWPPurBZ8NF4eixVCvrkv1xcKaNCDB+uO5xvtPXoTRxr/KgtgGab0XawGu1wLOGXnPzDpJsCTfkqCvneLwRp/ufGE3yX1ofhcAiTyQRWqxUsFgu4vLyE8XjsxzK2R2xOQuBOXBx7XQ2CtH5WwRdPEZhOp3B+fg7/9b/+Vz93rlYrmEwmUFWVumMkhvvQoCmtmhFU6t8chV4qnxt0JWE+NsZGo5FKK/IDftAj1YvSWbt6uyttt1vNl4uOjd0/OmgxDnfCBu+1AxjIaYq6CO5i3RKAj116ujN29853yUpPxNHY8YphuPNVS0/DSLvTcO9AJp4cGu7bNuaZpfVlYfRdcsyqu2PJe+AEow40EsedXv4pOLx4viAcQicaTdNwvjJeCpxmUhpGj+TgC9qP46T1Z3ikunAcnueKcNd2EK6NceLA93enQoIvUiAVJbUTTSvwEa+zyEcO1P5PPnFHLIYp98NKxxRzfhR5XupPnoeUXW9quPi7CyjnJUB9c06sNqDJENLzUMCNjl3ayipPdNUftPUymMeFOA0PjacyIl41QGVGSfbCPDFDeiyt1uZc7rTIfYfilxynKYbzDxk1eBP1pxzgfMZleJw/UXZu4+DQyk3h0GTgb+Htg9FoBGdnZ54nLi4u/O7MyWQCf/zHfww/+9nP4J/+03/qd8a+fv0anj17Bv/zf/5P+N//+38H+Iqi8E5beudsrt3UOeevdEGwnESVAynbRdcxQMc1ndupw5ufmISnS2F++kRbIL5TPBK0of8m5t1c+yLNl1NG38Blib4ht+0tdu6+oW/nt4V/b1J+kcrvE3/SGSs15G0IQpyOHAfDoUCaOCRhcjKZwPHxcYO2sixhNBoFk25MCbAK8JQ+CZfUn7kTXF9tKwmenAbNgCkZwmm+WHkpXpJoofk4HgnHTU+IXfvrEM7DGOQIC7kCG03TMOK0BM1wjXHWCTzl+IvlRUBHC62jJBBQum5rzmyzGKeE4VQerd5thaY2CoOWvo0wH+OR3LbtYgCztr1FoHbOwWQygaIoYDKZgHMOFotFJ0GrS7tK4VbexfqkjGUIqExSpbKua1gul3B1dQXr9Vr8gKsP3m0LKQOlFl5VlXfOYjtJY0DjoZgR2konx5NqR0zL55EcOmJzr4UWNDqgY5XzVmyO0wDLxae2gz+gcefAoE6Rxs5Y+k/pw3T4Th1OO8dJcHwwOZKY7j71Ts8dPUVBnKnsN5ZD74EFAH/MsC+P3hNL4ihOpCHYXcvbHenDeuLu3f1Wx7BfRc+ZADyZ9yc1EDadUjQ9fac4HMHF+q5Bwy4e27/xm+BBJ2zDycfxUhwKqPG03FhzUtp4nSSc1nDKny3BOQdQA+zZJI5Mddam6qj1A+lb0bFN0tB5IEhD+6GOPGl+B+ExxXx+YTthJXo0nld3NzOanXOwudpAtaigWlXbHbF83pPajIBlPZTmdDr/dtEBb9shpelVVn3jUAZzSVbWdDaEnA8nc+QgfkpKDIckc1rbiOqCFhn9JoDrWjGbCaU9xT+3zfcIMbmwb8ixL3QtB8FiT8oZC33QdGjoOiffNnShX+JnugmIf9xxfHwMx8fHUJYljMdjODk5gbIs4eTkBJ48eQI/+MEP4Fe/+hU8e/YswE9PTbLYdtvU1aLXaXWXaOjT98BtQZrcwcMo3VI6jjeHXgtY1sE2ZXa1Z1EcMd9G23Zoa9eV8nfpi9h62KYNrXKatr5p/KD5SHKBt5tGg6XuKZtrrj3NasONyXkcks7Yu7Iw8Y6RlJxDl2uhSzo+9PHjx/Dd7343CKvrGs7Pz7N2hhRFAePx2HQXYdtFKlV+n8AHmHR3mnMuOCs/hUNLk+IXbSF7U4HzZcp5fxN15l93atBGMEuBZsTW6OP52ihc3GgrLU6a8KAZhCzzEcffh7BjhUPgzsUpHfPK33k7AXTnsxyeti7mEtzW/FQU8hfanDdxDeTORgqY5sGDB3BycgLvvfcerFYr+Nu//dsbNxqlQOMT/sQTMLT5azwe+35HJxstoygKePHiBVxcXMB6vQ6OLLYKw5ri0VUw1iCloEnHWtP/tn1tMTpod8hpZWpjlK8B+E53K2uGBd4f9KQASdGWFLfZbAZlWcJisfBjMNW/MX6h98qmDJ6+zqXzu2OLYrfDdeeM0nbEijtj3d7hAgPwzk/n2PHBOyfMloi940W8M9ZtafHlajtjibPV52XpuEM2wE1xERzBe0GcsswxpPJrbAg4hof+dC4IazjUuLPKNcO5s8v3D3mK8x3NR37THay07+k7L6PRBjyO0OnryduD1LNRVwmnC/8bch6L47TngJfp8MMAgruu66aTVWWTsL+VROo75xf8rfIN++1xsLaUeKbxzNkRS99pOTtatA8PYvUI6Nztur36+ArWr9a7Jk87R/uUSyzrl1a+JLvm4D+0fNWmbm3LoWuvtuZJsg8Nw7UQ11Yr7Vi+ZLNAkOw7dC5J6YL0mdP/ElhPdOoLeL/E6D6UfHoT0EWOtYC0y1qyEdwkdO2v2HjlZVh0n1zQ5qg3kf8o9EU/tg9+LA0g3/e6Xq/hN7/5Ddy/fx9+//d/34f/7Gc/g5/+9KfwxRdf+JMeq6qCZ8+e+Y+Mi6LwxxhTXc1iq8Q0lpO0JJ00F3LG2SHXPzoHxOrR12lYbwu0nSfflPngkGuBJjfw9ZzbQW4CcubxQ66VfdT5Vm53visMnkOHpcOp4YICGpspVFXlj+rj4a9evfLv6KDMOaY4N91NCMLa4KBHqxbF/hhg55w3XFKjNR7RSuluC7H8tC/xjk48RkLCITnBbhsshlkNDjVxSc7JLsB5t0u7x9qJxlkM+xJo/NFlQbEY0zWDRI4Qy9shVm+N71J931U5shhjNLpvSqm1tNtdgpjxhBuUsG6PHj2C4XAI8/kcqqqC9XrdcOQiDIdDGI1GcHR05I9FWq/XsNls/BoQo4PS0wek1sQY/9D1TBtvqEjimoLhWM/NZhPcCW0do7Q8ejwx3vtTlmX2kcB9QOxYa2l+sK4LWrvkzCHS2kHLpvwd6/ccujW+kuQH2o/4zo0PfN3j8z6lnddFWtMkGl3p4OqzK5g+mMLZD8/ADcKdsT492b3K46mDNnCYoJMKcex2qGI8PqN3xtKdrrjDFZgDjNAX3AtLd8IiTdqRxUXonKVlIt6gLRjbNfhd8LqpOz1JWICHOap8HSSHGqYDIR7xkv6UnJ5SnN8Ji+ko/QSfxaHaGEO8LSjPMZpUJ6Vr1rvh2KN0k/cGnTnLTKGn921W73k6KKeBKrIOcDo5jhTvSP1DnZy8rdlv05Ptjk05Y4P8QGgBJ9MY4f+A1trB5mIDm6sN1Mt6n6cIccYcdxRuSmbjczgtm8pIEq2SjGA1GEuyfM46p+G7CYjpPTwcZVOUmUajkfkahVz7Cect7vjAj/BQbraUw2UQSR+msqlkNO2Tt6l+QN+p/CLxlEU+uWuQo3vk1k3Sr+jvHP0kF2J81sX4r/VxLJ63V+6Yk8r4JoCVP3gczkNXV1cwmUz88cIU6PV7aJcdDAZwcnLi8X344Yfwj/7RPwIAgOVyCV9//TWs19sPoPCKHtT1KQ2p/uXzXc5ckeLdHN7QnJ68DIqTrtf041xNH9bouss83Oe4jK1LqTmIx6f6PWVX0OarVJz2nqIpB6wyayyfBpa6afE59pw2baHxRy6f5PJs3+lv3Bl7W8L4bcKDBw/g+9//fhCGO2P5UYSr1Qo+/fRT/z6ZTAJn5G1CG4aNAf3iAo2O3Bk7GAwCQYAblWMTaC4tFCjf0GMWY4D3JsSgy6RzE3BX6UpBDm9qC6I0qWs4UamUjo5MlS0JyM6FX1hLc5f0fhPzqUQXjs8+gdenS91oO3PljTssuhiXcuBNGlucTzmP0zkYDVi4u+B73/sezGYz+Oyzz+D6+hoWi0UwtyN+NM6MRiM4OTmBqqrg0aNHMJ/PxbXxrs+deJ8zrmUA4XihbUqdsfSuLHqXDgA01v6UskDfR6MRjMdjGI/HsFwuex+vHCyKD1eieRzNp82/ljaQ5pI2RjMNFw3n9YkZQDTjsDTekI/oDlzNSKHtzuFtyo2jPK9U73pdw/kvz2H2ZAanH52CG+4dSd4xuXN8OLff2erc1gHCd8pSp5t3ejrSptRhCxA4V6Q7Y7dJ5B2xwbHEO6Ta3bK+P6T8BeGDXfn0N3XQAsDWweb2+CRoONDCyGZa14yP7YblTinTjlhg7+QZC+M4aLhPy3A3yuf157TCHofWTo26MRy0HYInhOl9WSSfCDuHa1GQXa9CvEQj7tAM0iog8aevl4Bbeg/aOJdneB/TttrVQXxy3qFOV9jVnxxZ7NuD0SU5YX19YnXBNKSMxVcLWH65NK8Ht21HiDkueDqrAaovOfsuQEwv4uuqJCdxeW00GsF0OoX1eh2cTKLh0eQZK+2I++joCIbDIdR1DavVKpCbUc+keqdGCw/DkzC4/HfIfuc6AtKf2nl8aBn1LkAOr6T4rK0h3QIpfbyrfq7RleNA+Rb6B+z3sizh5cuXcHZ2Jjpjy7L0pxZuNhvYbDYwGo3gwYMHPs3v//7v+zF9cXEB//f//t/AGTmdTsE5J17JowH/IEDauUd5V/ut4cZ0KZBO/UrZ6Oh8DwCqLdtS/l23h9w23JR9VIMce/Qh+/BNl+8A7lYdtP6y2P5jcONevpgwIRmtYkY7C/TlveZ04F2vPA39yieGdzAYwIMHDxpp+d2yaKymUFVV9OheCe4CM9PFI3ZkDrahdmceVzSs5eYAfr2FZdy7dy945zjruob5fB4IGpjupto+ZhBOQUyJtwrhNykU3IRzjDv0qOFdm59ynCU8v4ZLM8DjOOL8mHJ25ILkKJCOH+0b2vax5uyW0uQquNb+fdOBKw0IkrEEdxLgbs6zszM4OzuD1WoFk8nEn/RAjUqoyKxWKxiPxwAA3ikLAP7u2PV67Q1QbQSgGPSllEl4pDFLv4LFdwrolMX2QTwxOiXexQ+4jo6OYLPZwGq1ylJ2+wKJbn7XtZa2KIpgF0VVVdG2SBmOpHm2zZi1KE4xOmPO0dFoFDjmcV7HUzk0HLRciRaLLC3R1egT3MFaQ+Ckog4af2QxhE5ZvjM2KAdYm1LnFzq7uBOWOkKRNtCPHA52s9J0WEfeNAWhjZWB7RXwEaWlCJ3JgQOx2LelWC7Pw+MF51TMYcXjojtiMY0TnpQWFobpGvhRVmJhQX6GN+h7gIBOHs9p8HTw9lPasFEuhPTTOtE6NoA6XMmQoUdiUxifjuHonSOYPpianbEcbswZK/UzQNjnEr+wPmk4ZvmdsXRHLKWH0B3QwtKI9aD01ACbiw2sXq1gc7FpzKcxGTsFMVkhJUfgPMsNsVwu7UPfyVk3eB6rkzcFvJ2xnvz0L1zzUmt0SiZIheE7l7dwZ+xwOPSyBwd0clL+5LzKP2TVnMFFUXjDPJ6cIulXqTWeOl4xDz3SE+NoXWkZh9Lhqa2M2kgof8XGCNJq4dW7AF3075g+YZFdrX3IbRq8/C5jn/OWNO40Xs7px1R7SHXT7AOSredb2H9kTB2HVVXB3//933s76ePHj+Hhw4d+jsGPgNfrdVT/QL3n6OgI1ut1Q0+V+MG6zvaxpsfy0bkU80h2JUpHil+LomicwBjTlb/pPGqRD6xA+8aqv1tosczVljmvrzIRl9Y2XdapHODjB3FKdhzrPEDDDykrSLSk1owULyadsTEG6EP4oY2co3z0qZykypHSDQaDxk7IqqrMi/hgMIDT09PGroejo6NGOmlnrGWxkKCPdtP6LEYbTRubCJxzXhHTdqtyBSdWFk8nDVRpYNEdStPpNOgrvssLYKs84rGcAPL9CjkG/j7AqszdVehT6EiNdSmehtGjIiVjiQYWgTC1yFj6TuPvtooFz8+NFW36I1Vnq4KZu+50WSBTcJcMAH2ApHBoSgYCOs4QTk5O4P79+15RowYnHEM4ntbrNSyXS6+UHR8fQ13XMJ1O/ZG9fd9/Igl70nsOb0j5OG5+JBG+Uwclxqd2Q2phRbG9V34ymcDx8TFcXV3B9fV19o6DNoJ6jmKUGs+4xlKDYmwu5Xyq1YMbXqzAjTVdQZObcK51bu+Qx2MLLeuApPhr5aZ4ndLggd39CA6CnbHo/CiKnYOycOLOWL+LlKTB98azAO9oEe+MZb/5XbHoLPNHHAtHGO8bZV8utiGvC3XUBkcTC/3TOK7Y4UPpQ61rSZ2jTihavmO/qZNt99vLC9wJycoJZHdoytC8TO4MbeyWxTyUFiC00DZy0ORPgcYgjpYbq5tr5mu0M77SehUgl22A8fEYzj462/JOncbHd1ZLu4OjO4YV3gjySu+cf/hv8pTC/DxBjyjGY4nZO9QJPiZxAS/wMPruwnI3lxtYfL4Q9UqLocciD7RdG/jaFVsruzgLuugBGlh18FgcypAoF6Y+vkqBtf+kuRvXYPyXaJHkCnym+k4Kp+VwfJQ+KS+XfyQaqFwR+5D2UE4olOV4HfmpHLQeSBc/XvlNAt5/muyagysXYgb7lN2Dh2n0anwj5UvVwzLnaHm6gKZDWMrpwzFxV3kbnbH8XtdPPvkEFosFAGx3vX7/+9/3doDj42PvYEW7uLTu4tUr+PFLzkfDMR0y1p4p/tL0rNTYTdkptDVEst3xsmPHIafgkLx1l/lWgi4Os7tQTysNFnlWg5y0XdpE4nOUCbr4K5AnY+uRddxYgY9rae5I4Wu1M/ZNG4BdQKun5JDTgKblSgfC06dP4c///M/hxYsXSXpSAgPCIYRqpKFrfr64FEXhF/w+6NYM7pJQwNPgu0bH48eP4cmTJ0HYYrGAr7/+OtixTJ3osSOCDtFPh+r7byJQoRHfKUjj4dAKFpaLY4nSICnbViWbK/O4OI5GI//lunPbEwDwTqM+1oI2CtAhyvoW0oDth0oUN6is12tYr9dwdHTU+LiI8xY6bJ8+fQqj0QhWqxUsl0t1N8Kh6iMZpKQdBKlxFJvXuUNNWnPQYMZxBI4hApJCWpal/0KZ4rztNUEyFGI4QMgbSDfKSuiQlIDyk7WfcmnW3jn9KRwpAwL9xzDccZ6z/sT4jEPqXmZPPzpPdv/eGTkQHK31Lrwu/JG9ND7oM0wDANQp5J/1jrbB3ikjHU8M0HTIBvVIHGkMvkj5COPYb8xH3wEgOK6Y06GCgwbt3LkmOWY9X1DnFXNWBWmwT9EZ6sgTlHAHjTCKh6eh8Tx9o26u+R/wOiu7UU/ET9uGpPNxSp0buFh9Gv3QwiHry8WjfMkHAtE8NuTiu7SLFCDkBXxqPCTyjfVJd8UmdsJKa58Up9VBKntzuYH5F/PtHbGpJuxg22iz5tD1SlsnaNqu8vahnG1toSi2u1DruobFYuHrhjpH33ILN4DTcIwry9KfJkI/vuV5NKe+VR9EvHgaBsrCKHvSncIaSMZFKu9xw6TG35zv+taRTk5OYDKZ+HbFk2/KsmxcxcD1WSr7DgYDGI/Hvo1uUk/IBYucdpsQk0Ux3uKstRr+MZ0kb8Zk6JTTLFamVk4sHR8DN8Ffd403KKzXa7i4uIDNZgODwQBmsxmMx2P4i7/4C2/jfPToEbx48cKP4+l0CuPxGP7P//k/8PTpU/ijP/oj9bo9nKekDTgYTyHVh9a2jM3XFuBrKZ2LUmt17OPanPpaeFOyHfSpH38TQLO/9IFXgpx58NCAPisOfW+SsNAhveeOF5QvDjGva/4lC+90OqY4VpnUghxLa11YU3GHXEQlh6J07CA3WKPywfNeXV3Br371qyRjSZO8JEBTITw1kbRpp65tyw34RdH8atJShlQvy6SFuFN3mCDQXTonJyfw+PFjj6eqqobixPmD1qeL845DTl2t6W8CbnKsSuXllJmaSC0KLE2TM9/lQmyRsSoXfOzReUzCoQmdtyk8fAuHB+3UBrzXm9+pEhjnd4BH7r9+/dob3/CuLjru+hojkvFKeuc0x9Kk5pYcobEP3kWllrZhytDbR9nW+lnnP1QCrGs04uqiJKQEfk6/xk+cZzCfFM7z8TGScpbGwKIESHN5zGiNxxSjw4MfQQwOgl2k24zg0/i0iK/Y4eA7ZIt9vKePHIMc5KOOVo7Lk7CrE+zzOLc/0hjLNd0Zi2XuaMFwANjjQnp5e+d48FjSYKzEHFK0LEfSszTirlGaFvuTOTFVp+gOp48jdGs7TsV6Bpkj8Y6lldLTd0J3sMNXSSM6AjuCg51TsoDwPmPD8G7skpXo4kEKnzTCWP/S+KCvsf0wL+5qrUndaDrNGas4YSV+knhF5Hvah7WDuqyhWlSw+npldmZanRCNNjTEpfBK6yNdK6x6U44NJZe3reuQVR+iH6DxcPpBnEV/tvYR7+NgznQu+DBck+U0nBwvx63RhrvCqG2CgqbbSc4mbk/ha7okWx9KBy+K7Wkts9nMl7tcLhunncRkZnynd+gCND88vg3Q+IjGc3nvkDSnDM2ch2PjKVd+zImT+DZWtlWfiJXTJU1bsNiHcvAgWObxNmXyPFVV+d3p+DHEaDSCL774ws9ZL168gMlk4vU1TPOrX/0Knj9/Dj/72c/g9PRUrFNq/uHzQoqnYnO0hFuz01qAlsXnIsk2ElsLKK5U3+b0a0y/vu25syu0kWVybOYW242FxyQaUnProew0tHxrWq3cmLzVN3/l2N+Qhj7Sdxl7OdDrnbFv+sDuGz788EP4l//yX8Lp6Wnj0nK8Jw+BH3mMwJ16uRAbSG3hEP1c13VwNLBWTpuyJaUJQTpu2rn9bhQAgNlsBt///vd9P9y/f99PNlVVwZ//+Z/Dy5cvYblcBnhSSvY3HXIWUquCkVu+pAAi4Ndrli+UAWwLkGZU6CJIawaDvsY8HjNDnSKHOD62D+BtajG+3WXQBPObrJPEsymlZbPZwO9+9zu4uLgIjE0S71dVBV988YUPR9zOueAjmK6gjYuUY6wrcIMT9h/dwaDdPSMZIzC9ZvhDY+J8PlfvsE8BN1z31RZtgLZTWyO5NtdqvMDT8D6xGqtiNHMeSCmAEo4YWGiUxmPMWOdKB/WwhqIO26Koye5ZF+6UBWRtdK6ig2YAPt4VOxwQhheDwscjDu9wqbfvfmdtAf4/2G3ri48faRx7NvK7Ijz2mDkPfRtGHK/abkhp1yt/bzhZIXRO8fhgJ6gURuKCd+Wp/q4JfsrXDuQywIm0NP4BGrhSzlNeBs8jvUv0ogMx0pUm8HTUAK7a8ivnj+SYZnwmJGiWx+IoD+CzwS+UT5wL8yZ4Q3TKCseb87pweoP5z5Oj8D3+3pVZV1sn7OXvLqFe5R3R3xb6WB8tzqXY+iDN53cR0GCPO2K/853vwO/93u95Y/4vfvEL+PLLL2E2m0FRFMGJU1ZIraOaLsZ3qSK9MTm8KMLdI6gb8XtvKS38t0W/5bIH6mYoS0inoEjyp9QWfQKXIVBmxX6/f/8+bDYbrx/w8rFuHGdZlrBer/1JTXcVNBkeQOaBnPGaa0yO4dH40VJ2Kn1K9u1aZw0Hl92pnYLqWRbZvSvcls7EaeiyHvC8y+USiqKAk5OTYEf7z3/+c3j06BH84Ac/8Gl//OMfw4cffgj/63/9L5jP5+Cc807Zuq7h9evXSdp5G1J66Dyr5aVjTGoH7To8AGhclUPXIT7np+rB4a6s0XeZNoCb+YBFg5itoCvcpTbuGyR5JZauTVhXsKxlMVlJy9OWXwNpJidz2wm+z4GfoqGtg4aXwUHa5iwdsXB0dATvvfdeo9Mx/2q18jg0ZUMTVHOFKA33IfJY+1hqw65gNVBqeaT2xqM5cOEfj8fBsdMXFxfw6tWrAB/dCd1VyOV1kpxgfbTdTYJUX63v2k5ufS3euQrITdDEcWptFFvYYrRICjxdhG5SMLIoXBrE2iYFXda4vh2IqbA2INGptZU2RqV+2Gw2sFgs4OrqCubzuU/HcdCy1ut1EI9rpObwt86psblFckBZ8FvmKauhIub40sqkabXxjooj3x1B6yYpqbzN0LhXFM2dFrkQo1cK4/NOCrcEEs9ZaOe08vaR6pLTNhIdKYUgZVSI4ZLGAudBTnvjN3XMEOeItDO24eyCMAydKsEOWQC/WxUc7B2vxd5xieXtEm/TFk3nKgCEO2R3aRtHFfMdslI41h1IfoqX0cTro+14FB21EgsEPinXaNOGE4u8ez7geShPSX0klctoDn4zfSRwKFMaXZhWKovj5Ls1pXryMsQ0WpkOQnpjgH3ZQfxx4MJ2p/zdVq6K8I3W3mr7YR6t79g8wMP8nM0csMGT0yjxLKuXmI/RUa0qcNXWEVzOSyivyq3jW4GuspS0BqRwSvN+bF1MySJWo5BWRo7s0ydQWWUymcC7774Lk8kExuMx/OY3v/GOTC4DpmR/qyEwJtPSfoy1jyTHUTo0eSG2PufUFdPEPoyN6T83ZejGI4XxYwPp1BykR2pfjEM83BGitf9NQ46+Zm3zNnKzBSfFrfGe1q5d+CWXdqs8zfOn5OScfrH0a2qM9w2WtUab+7sA/QAEP57Bo4yn0yksl0t/VQ7A1l56fn4Ol5eXgR2V28w1PZTXR2p3mt4y5+fEazTxqwqlK4batLuF33PqGBsHNO6u25BjOjdN0wVy+EOyY3Utp23fW2S4PuaAQ7Rvro3TKq/mrlMp+8uheetOfVpmWVwoxBbTQwlik8kEjo6OGsoSnqlvndA2mw384he/8BegP3v2TOwsvGODQl3XjTCNoW9DIJXoaBMvGaBzwJLeufALTGxvvqgul0u/8N6/f99/3bXZbBoLMuePrjTTr3KHwyFMp9MG/sVi0err4RQcin9QyeZfv6bytOGB2GSdMnpw/ui6oFl4vQ9o6yzhIAk/q9XKC+SHgNz5myuNnE9wfObwGkD7PumjXfpaw2J42jh06G86Noqi8CcM/O53v4PRaBS0N441abwVReFPiuhLeRyPx15JTOGiBgmsU5fyrUIdfadH8uWUIwmmaLRaLpfmNVCSFXD3gXPOyxx98CU1UOI70kFpKsvSpOhY1oWYcZWni5UDsP8YKjafWA1olO+kuYumi+2G5h8ISkojhqHRAHeqTKfThrFUAucc1OsaikEBgxExpA7c1im5O3rVua0jhu5w9WmLPc+7AflAw20dobhj1t87S3fEknwA4O+S9Ue+FjsnarHfKet3yGJa5rXyDttC2BHrXMMh3Ngl6/a0bSu4T7t93TuZosfQamzHwx3IjkMXluX7UAp3LB7DwIXvyEs1ezriYNsdNxvk2fU5hktlUhqDJ8UBjDZGL/8dOAJJGA1v/NchfcHvmoVHu8+4XuzarC7rJp8o/BG9Y9g3i2uENdKw9hcdshLfcJ7AJJwveHvVrO0oiTGjGq+TY+ES7zoHrnJw+dtL2FxutnPejna+vh8KKB+nZC6p/rn05RgBLWlSulCfgHoEljObzeDdd9+Fx48fw4MHD+Cv//qvPU25jraY81ajRcNPy8G1kZ5yRuNRn6VpKHAdBcNw7eY2HUyL6SXnJaeRyxJSn0qOW/rRXV9A+Zl+mIk0o/zB9QrtN60PXoUyHo8D3UFqQ422Q9vGJB7qS7+xlJ2SZdGZhB9tSkD7UBuLEm4LcH3Imp6+S22s6UQWelP9kprX29ioUqDRf5u2XeccXF1dwXA4hHv37vnwFy9ewMXFRYO26XQKp6en/q5ogK1+ef/+fZ9ms9kER7XjbwvPaTtku6wTqfY9Pj729BfF9sRLtDWtViv49NNP/bgajUbBaZg3edc16ocI/EOY6XQKg8EALi8vTTaym5g7NbhJGeVtgrvSVpqNy8JPfc2DEo8fon1y6bpTzlhrh6TytnX+WdNypck55w1ZFNbrNZyfn6u0zedzfzRvbGcsvTdFKj9m+Lsrg1ACi3KlhfP219JaFVVsQ8kYWVUVrFYrv4BRIzE6IabTqX/nAmzb41xpH1KauJOD1jOm7Eu4Y+Va0vJ4y/iMvcfolHDnOpQwz3A4VJXmFI4+BIJDCTOSIqKlyVGCpHnoUJDiFal8ulCneN9argUO1RZ98UcOHouww39LeZbLZWOutMwhVmNbCrjhJgV0/pcMopIRTcNjpU/C17bOEt+3Mepaw9sAN1ZIfMTLxDknprhqPEgh1c7S3MHTSIZDjkOiTaNZo1Gb2/qeZ2h/4IcTnP95m7jSweZiA1ADDGfDraOD7oYF2P8uIAwndUHnCb3/1TniCHUyP9D8uOM06DvFmcrvfMWyAEC8O5bviMW6iLtsMQ4Ij6EjCyBwuFn9dWJaipPFe96QnFXUoUYdbxiPfUvS8TQUp+cP1yyX4uT4Gmm1J60Tp4PiI5EiHRyHUq8Gfpav13HnoMH/gROWFEUdsDmO3iC90LZSP2g7Yul74ESgfepAd8aSNI3ypXcr/QKt1byCalVBtdg+qc6FsoA0j2oyh0UWyeUNLne3Xa8tkMJn1ce6lplqO3ziNUV1XcN4PIbJZAKTyaRxb2swh2fosFoaTkcOcDkuR/7DPFROleRCdPDm2MakNZzGx+g5FHC7Ci9T0zt4u06nU3jw4AGUZQllWfpTyubzeeNI6BjclDNB0kPa6Dm8HXLnLek35TEq+/VhO+xrzsQ8msxu1aF4vXJthbxdc+eXVDnWebJNebEycvuD8yCewITztnP7D7TpHHR8fAzD4RDKsvR2JH7UOIZb7JsabVrb5urmUp0luwA9IRFPdUBo84F1W9BsFgj8Q14aj85ZvI5N+yCX9/1NzaEcYv2ZM7ZiebR0h65zF3lEwtM3HApvjq1Oy5+yXSLkbsrR8LRJG2u/O+WMfROgLEu/mxUBFyUOr169gp///OdBWFEUcHp6CqPRKGuijn1xqQkrWN43BTij97UQbjYb+Prrr31b3r9/P3BMvfPOOz5utVrB8+fPA4EDF2iLYkQBF/rlchnUhX5hiseE8DwxBeAmgU+SRdHtDuQ+YDQawb1792CxWMDl5aUP51+MATQFvBwnz5sKXGijc89dqXuOgG2ZB+5KvW4TuICuxdN0dV37e1XwgyTcQYkfGEl3LnOhs6/5aTgcNuZEip8q8PRJ/3l9DwkxpSImYMYcg30AKmXYPnQ3SBecCCnlEWB/1DLyk1bnmKGKh2kGcYkPsf3RIQwQHkVFceQo+5QGHDdWwN0M1HAmGaMkxZmWi/lxZ2xVVX4nuTZfltclXP/yGmYfzGB8f7x1ShZuvyOW7ZQrBvvji/1doui8dG5/V+yg2N8hu7sHdltZCO6bpfkBSFp8Sv88Dd8h60ha/u70Z4ADINxJS8LQiWsGLanm0KIOLOK80pywAZ+zeAzzaeowredz1wzju2Z5ukZZ/MnTA8lDyyL9RtPSMiX6eJ2DdNJ9puw9Bxp3CJO+cvV2B6crXfNOYzo/5hTKkwbswdoTCP+k+IXygtK2Dacsz8PrHxIn08niOb0BLfWW964/u4bl10t/JDE1PuJ6iYZivtbfpEzP5+A2kFrrukIfzhiElAETy7i6uoKPP/4YJpMJ3Lt3D46Pj+HRo0fw4sWLxulTXH6T6G/r5KL5ubwSw4lrJtUh6TiI2WMQN67rKA/gnbo0XayuEl9T4Mdo0jR99jnFo8lI+Ju3FQXUK+hGhXfffRf+8A//EC4uLuDly5c+729+8xuYz+cwm80AoJ3B9Sah6/jvyzgMsNeZNptNQJOmQx1iztE+9KZ1lXgpx4jPZQGtHik73ZtiK7A6jDnE+leaW3GH7OnpqY/jDr3ZbAbD4RBms5naB+i8XCwW4g53jVaKL3bscZt+43qvpP9h2dPp1G/KAYDA0Yx6JE1/SKC6Mt6Bjvd1S4B+iaqq/IctFCx32X8L7eFNaNvUvHCbdNC1AX/jusbztuFli92pKwTO2FxnkQVSC94hyjw0xIQhKsCUZekFRoSiKOD6+roh6OCCJgkjXdpFE75vG2IKpcYTuQqD1UirtTHeFTudTqN41ut1Y4czd1hI5WrvXIiQ4NGjR/Dhhx/Cixcvgvtq+S6iXOW/DX9I5cXw8t99jXuJP8bjcaM8dA7dxljoy5lxaJCcZzcpTPKyJWjbHjmKHOftuzqfHhK0sYttQZ30WloKmjLWxcBABSxNgafPFD5L2bnzqZY+hkfawW8xoMWUbK4YSnRg31AjSd/Cp9RfUhopnoZJaayKQ6o+1DAbkxU02mLxmhHYgl8zCNB4yahM00l1jMnlrnawXq5htB6Bq932CODdUcPSfbEYHrQHjYe9wyu4d7YI0/gdhI44OHeeGb9DFtMVDEexo7+Axq5Wvpt1h3D/jo5jviOW9BE/ZtbfHQuwd7a5fTozNPxYzFnlhHAXf8e29vlJPMZhuwbzpSM85+QwipP/9jjBiTQ26uSa6QLnOeOxRlvxMEwHRN4nvCc6eOm/EaIOVAdQjAqYHE1gOBv6DxgCaCtKSMUq/AFAxr/0TtudtlvdbCP/FJz2Ih0CreJcl6KzBqiWFawv1p7OalkFx6Fr86IUznWklIzQxxqYg6OtjaQNnX075VKySlFsHeWLxQK++OILGI1G/v7BlO6fK7+naKTvsTaPybh8bU7Rq+nqAOA/QpM+gk21q7X/UnaItoB1l2QaSXahaWK2mLOzM3jvvffg3r178PDhQ3Bu67z+7LPP4PLy0uv21A5ymzpajAbLWGtjK5HmOU0O5LqSJmvz8jkdklM9V1+26jHWvDxe6wuJ5i66Tpsx2aYsbRxJv9vgy11r6JVF9D5YfOc2b41H0YlJd9FK9ZHeufOFQ6xvYnMfjaPX1OCxy0VRwPn5ud+pj9cjSXXsU4em9HK9no9rehUN1//p+OXX9HF8tw1d26/ruOZ4JJ25Szlt6bHAbfdrbB2kYF0TY3HSmgewtalJ91WnyrVA7vpGofPO2JThqe98dxmKogi+PFmv1/DFF1800kmeeTwmgAKmuesXa3cBbxxhC6F10PZVPv6mZY9GI3j06FF0gXdue3fC69ev/Tv/AjV1TrrEC6ndoz/84Q/hj//4j+FP//RP4S//8i89Hn7uP98pe+gFAkEb37xv+xC2ucBD23s2mwU7k29izsldXO464Bh50+chPgb6XoPepjUtZcig8yZVuvi9VhYlOVaOBTBvVVWNL+LxHhf+pW1qPskxIuTSyfkkpqDh/I0KUqq9pLm17dzT98cX2viwGCmoUY+OXymv1HeWdJiWv9N1QzpuL4UjBrxPeZ/xMDR64FiLGRc47bzeNI6m1eivqgrKstw6YysHbrB1yOIO1+DOWAd+R2xRkONYHYQ7Yp3bv5P7XfG+Wb/jFCB0yroCYLBz8pCdsQGOAvxOWH//LNl5G9vByHe4Uuevc9u68PwNfI6MwRyvHtIgvEtOLd/3KSeWC9e+wHGmxZGn5oht/AYn5tUcqf4JzbRiGCmP0ivWRylbdeoS/FgXDwWhKRMcOBiNR3D8/jEUgwLqKrwzFtNIDtlOd8Za+YS1NecFsb94H9N6cDqA4FfqkKSz3o/39es1XPzmAgCgMYfRuTCmQ0tr5aGMpZSWLrLEm6xHSIAG9NevX8PLly/h888/hwcPHvgjizFN6r7UPtpFMqpKMoa2w7QoCn9kJz+dxWKkwzUbd4jhB95YJr/3j+eX8HWFLjoN7Tcqu/H25eVJdOPdlE+ePIEf//jHgTy2Xq/hF7/4BTx//hxmsxkURQHL5bIVzX0C1tWiB1nA0g8WHYGmrarK70CO2d364qk+bSOSrKzhs57s87bo8LfhYMH5Co9Wp20+m83U+YvDZDKB0WgUzH9amTyMH3vc1w55rjMNBgPYbDbw+vVrX89Xr15BURR+d2zMXta3nEHXB01vd86J1yFa5krtSOnbAk3fPRTk2Knf1PnjJmiXfCnaOLDYZ9oAHqeOH0xYypXapm9ZvJUz1mpItEDfQsqhmYkq6hTortaYUEDzopMIjWtcybDW5aYcl31ByhCeyqfllxRqqS94GfyOAlx0iqKAq6srv8gNh0MYj8fw5Zdfwnq99nn5sdWpekhpqXDCj0X84IMPPK/MZjN48uQJfPjhhz6v5GRyzvkjDSnem1pELU4cfE9BSsGgYfyLPPqRAxfW8FgeFGRiRyZp0GWMHgIkXrDQYU0XK/MmoA+DFgeqMGu8Zlnn7vKcmwupuvIxTL/elwygVqFHA8mAg31SVRUcHx/DvXv3gjx1XcOrV6+gLMvgXqTc8mJhsbzU+JQy8PF6IeD8jfVEWSFGX5exS4VO7FeNthyItXts7tGM6xoeyZlqVTKkNPhFN66/KMRLd8hqdMaMj5xO/s5xYp9IBmFaFjeucZ6k9UOlBHeTSDJTkM/B1hk7dP6YUOpopQ4tf/8qu1vWua1jBh2sFLd/kt/UKRukwXoLjtVg1ypJ03CukjDtGZRREMewUs7uh9xHli2QDhr14U427vTi7RP0F3W07X5LO0LpTlkfJjx5WBCONND+3v0QnYYkrZdboInHOeYcZXUNaKH1AJnWWF1Ep2Eb4GXtjvLdXyOcnldNzl+ehDZzhC8a79h2NYlTeMDXT3OyUtwJeoN0nC7ihC2XJSy+WkB5Xfq5CmV4zCOtGdIH0FqbS/lj623fRhkNLOXkODskOYWnja0xVlqk9ZyXhf23Wq3g1atXXo/jJ3NoeCm9kixqoZPiSKXDtRVpPD09hdPTUyjLEqqqgouLCyjL0ju6Uripzo6ncd27dw9ev34Nz58/F9OncGpxN6nb8bHDbTQWJxm2sXMOvv76a/izP/szePLkCbz//vtwdHQER0dHcHx8DLPZrLEjTZO1b1NX02Q9KR2P1/jar5vsKeXR9AdeBpdBY7glXJLOINUjppdp85LFTiiBxosSbRpOXjet/25yXUjxs6W9JL5sSw/FJ/Ud16e445WOeY0e7d1qe0y1SZs1n9Z9NBoFc5yGq0+gu3apDfnhw4e+vLOzM3j48KGn4cGDB8HxygAAL1++hF/+8pewXq8bpz3eFF/ngEZb1zbWeMwqI2jQRxv23Q+x8XUX+5yCtobQa9Q45MjKOXSk4rQ0t3ZnbN8TURfhWwqP4eHHxlBlEN8ti+NkMgGA/RdFvEzuHNKEKE77XYXYBGaZuCRhkeOxAE9HF0s+cK+urvzvyWQCR0dH8PTpU3j69KkPx6Mqcsul4bTc5XIZ3Lf4wQcfwNnZGQAAPHz4EP7JP/kn0TsdsU4cLz1+4jYn19iXW7G0Eki8QOtInbGDwcCPOYD9F2F8Vzo/6lmDmPB+CLDMK1Y8AHl0cyE2lbctrVI+Tdmx4ML8mpDE43jfH/puzhj01d85eK3zQ8xop41Zi1EwRyHEHQRlWcLR0RF89NFHQXxZlvD69Wsoy9LfVaN9KZsz3mMQ49UcGQXbgn4IxI0AVqODVKY2HiyGLI1eSxqN92JzkjTfaMYmy9xm4S9s36qqYDQawdHRkTcQ4PFZ/B47jjsGGg2p9ucGCm3MUNlRkhVoPvywDHFLvMXLrKsaiqrwDll/72sB23cotk6UQeiI9XgcNHfIAvijjzEed8hinuCYYnwHaDhQMYyDlCbHEas5eP1dshGnsG8/q6ePJWvwlmPh/B1/O+U3CRPTkf/AgUv70hE+ldJq+Nh4kXbAik5YHq7hJjwTdb5CvC4eCvbeBhxsP2Io2BxYhDyBR2+ncMXCGw7SGK+QtuJ8EXXESmVm0BrgcUI4L79yUC5KuPz4EsDt9WPNqE6Bf3AbmxNTDo8uYFlTefltyu0qNx7K0EfXF04j7oaaz+fqmm+pl1VuScnAsTzUCVNVFRwdHcHjx4/96RHz+RzW67U/Nleii6/7yKPT6RQePHgAP/rRj+CTTz4JnLESb2qynVYPyY5ySF02ZrehPK7JhdwZ+/XXX8Mf/MEfwOnpKRwdHcF0OoXj42M4OjqC6+vr4L5oaxv0pWu1sUGl+C0mr1KekuarlB4g4eI7urHttXFlKcOi+8TGhlSOVraEh4/bGKTuFKT6LZWzNZ1Eotc6RiU4pO28rQOG66UxHY/fXbparWCxWAS2SonfKF5tDU/RSOnMaUfeLpb5Ep2xuXZXXk9rPqxTUexPaADYricPHz70+up3v/td+PGPf+zzfP/73/cfsmN5v/3tb+Hjjz+Gq6srb4vuS/5py79ty9fGYJsypHgLL8TGw01CW5vvocpuU0asD2g59Nh0ritwWd9CS5v5MCf/wZ2xbQ3pOfjvIiADSIZ/vnB9C3mAAmNu31sGH18s+B3Al5eXYp6YwBwDFEC0I42Kogguoj45OYHvfe97/v3jjz+Gzz//HAC2QuL19XX0eI/bhkMYOGJAdxmjYrfZbOD8/Nwboa2g9WvsTp8+4SbnOqk+OQp7W1pz81mVFko7NZBsNhsoyxK+//3vw4MHD+Dq6sofabtareDLL78E5xyMRqNWF7/n1kVzkvUJbfBqCjc36MQUcbo7NaVYx4R2nC+n0ymUZQmr1Qo++ugj+Lf/9t/C0dERTCYT+A//4T/A3/3d38FqtYLBYABnZ2fg3PZI+UOdEKApeNrcYFESpHZIGSowjDtwNZp5Pk0pb2O81NLnGL3byEk5Sh/FT2lDA+lwOPTHbOERXJhPorcNcBo0oDtiqRykGWdxzdPAOfnoqhidm/MNvP7lazj64AiOPzje3hu72ylLjyl2bn9nLDpXCyi8g9XviCXHDONRwpgOHbv+/lXsUnSOOdji88HpHbJhA+zLDt7Jb48T43g4wP5OWepUE8LMIGWhTi8Xhgdh7N3zg4OQx2i8ECc9tbAGDgjTqU49+oRm+RYnrFYXjl9z9Kq/Td0k7NaV0u12kNfVVlb0/EzAzyd98IvEKwI/BLwi8YfGW1KZMfJ4e/JXiaYawFUOrj67gnpdw9npGdwb34Mf/v9/CK9evYJPPvlELEuSVWJriGWd6GJE7AJdbAXUMJ5rBL4NcM75431R1rbo+Zr80IehT2s7XgbqFbPZDADA6xhIv3RNBnUa0tOZ6K6m6XQK9+/fh9VqBZvNRrQhcTo47VxGp+W2bScrcP5N3RtJAU+BQVvHxcWFp/vjjz+Gqqrg5OQkOK2Mn+5hhT74vg0Ore15O8XqlGtERrmWG6bpmOPpNX6TyrCkaTs2+7QrWPQvKY7mk2w/38IWaLvg2ATYf0SN8YvFwttheD46d1nXaYDtqZNos6Ef0XZZG7SyOHD7q8ZnsXWFprMAbR/eVqPRCN59912/4eTRo0dw//59H39+fg6Xl5fw5MmTYLMKwHYDUlFsnbtUT+SO8xw6Kdy2zNEnxOTLt6meKYjZAHOgr/Yqy7Jh9z00SHJjSg5vOGPbTFKpha6tkJLKZ52gc8vtKy2nL9eBKAkz35QBnYIcYy6m71pOWZai4ZLvprXyJVXWYvEAoZDxzjvveAXl4cOH8ODBA0+fdnyhFWLKUSw8l6+1yaot/hitVABD4/Pl5WUwnlKKAu9TLtTxsSkpx7cBsfItfMIVNin8JiG21nBDBU1P0/B7C6qqgocPH8IHH3wA5+fnfoxfXl7C06dP/TikvHQo6Gv9PQRoYyVmYKFhkiEpNu5iYwiFK0zz8OFD+OlPfwoPHjyA4+Nj+I//8T/Cy5cvAWA7Z85mM6jr2h8p3+b4XW2+ksaFRC/9rY0nWo6kOFroxGNsrZBSDnPnsj75se16ZAHKu5QXOU8ir00mExgOhzAajRpygNXgbW2b2BqoyRqp9tHmb1RWqLwRg2pRwfzzOYxOR+Dedw1HFnd2qUcUs/tgMc6HkzTijlgHW6cWpks4YcVdscUubHfssB+bOwewD9/tVvTjdkeLx1XsHVZSGA3PAu+jEhxgpD18kAvT0fcgjvVFwPukP+kuVylNo98pflqO5LlzwlOqL+GlgMdJPkpfkIfR7/92vwPe3dVNc4ZanaSNdBQ3HumNILFEDptwkoLmcY025m3UcNqTtg7CrOSk5kDeNBK/1uCd165ysHyxhHpRw0l1AtOHU/jBD34Ak8kEvvjii+ADOb5OxuRAbU3LXUv6WJOsNFjWQp42ti6ljMEpaGtkjgGXtVO6dKwsfLa5fgZp0cqU+Ksotqed0StvOA5JzqCyMXdEj8djOD4+hqqq/MfDEs5YHbQ2tMosXSAlu6b4k8po9E7Kr7/+GjabDYzHYxgMBv4EnDbyah9gGW8UYnqPZGvQbCaWcrjORXHSMK4TSfTF7CWxsdoXn1l0IWl8tNEjUnZtHnYb+lFbGqS8hwBqO6XOWAqbzaZxYhXXdXL6gm5eGQ6H/uMWXoalv1MgjSutLvg7Nka4XcBStlQOhcFgAMfHx96xenJy4u/WBtg6Y8uyhMePH/swvOJuMpnAZDKBy8vLwMlsPX4/BX2PBasdxzJ3NPSNlmW2nbvfJLDMP7H6W+VZS1qOF9PTq0Q1XKl+0sacJMPn6ha3dkxxCm7aidF3eVLDS0ck5ky+34IdUoMOQFcOUoAGWYtgmAK6OOMuL/xq7Cc/+QmcnZ3B559/7o2/VVXBcrn0XzkdHR3Be++9BwDglROKmy6afV5oz+Gu8zF+8XV1dQXr9bohEMbaRROg7triKjl83hbQFFR6rDDyuubsou1RlqW/+xEAvLPl4cOHIj40krzNkDOfUeWDfuVqFWa4EJMykkp46A5XvLv70aNHcHZ2Bt/5znfg+9//PgBs+/rFixdQlqX/YGU8HkNVVZ371GLswn/kJ8vR65gHDXDcMMXT0yc3lLSdB7rkjYEkwMYMJG3nMm5k0uZwTgdvR/yqejQaNdZTqUwrrZIxF/mD8lRMlsE+0mihuCVln9NLDXLSfBAY86rtf13WMIAB1NX26Ya7sSztaq0BikHhjygOdsQOIDyaWDim2D/xd8H+B1vHrj/qGPPzYeOaeb3jF9sE45zyBBaG7ckdp4jb6tUSkjV4yglxrvke7HoUHG/BvCvFOcILwm8tjDtCAycffbI0Qf66iV9yzgZ5FFr8fw3+XmN0+vl8tQvaYd/ULebAXZ2c2x7DPTmbbI/jroizt8BH+NGAyRmrkeQIHjZuRD4Rfu+zt6t3LFyijfPH8tkSVi9WnqZBNYDBaADn5+dwcnICP/rRj+DBgwcwGAzgyy+/hKdPn6qnXWjyRrIamXN4ru7T1nhFZduUnHXb+hilM6fdUc6JGa5jgGXm7lrT2lsyqlEax+MxzOdzePr0KZycnMBoNPInakg8qR2RTcufzWbwwQcfwGQygaqq4LPPPoOrqysYjUaBw5bSqdVBq1Mwf0I+D+cAl+9j8gpNp9F1dXUF19fXPg4dOrd5rQxt1xjwtpDw0A8SkJe7zGXUyULDUYemd+ulnFYSHl4OTROT7WmdLboRBW18H7L/NTsEl6np3Z0pfDdhp7mp9UArh7cD/ZiVfzxsaY+YbloU4UkEOHbw1AX60Ya1TWKOFcoTtO/bAl9fKF46z/M60jZGXRVg29Z//dd/De+88w785Cc/gfPzc1gsFvDkyRN48OABnJ6ewnA4hO9973twcnICANsP2P/Vv/pXHuff/M3fwG9+8xuPfzwei5sack5Z+iZB32M8Z73vWgaHNmVax3QOHbmAJ4ukQBu/fbQ1t8lQuHVnbFuPd9eyOMQMXlJei8AVq1tK2Mwpqy3k1qkNzq5prcpFbh5rmVxYwkWR70BtWyalnS6oRVHAbDaD4+NjmM/nsFwu/b2x1PAwGo3g+PgYAEB0MkrCo4UWTNvXRMgVCWt7pfo2JsxyAzQKMPSIHo0WLlxbyrtrQPuP0p2a2ySwjLFDCfwomFrS5eCUvmCcTqfgnIPVanWr/dx2fHSBnHWIjwPOa1Ieje9yBbXAIbQLr6rKf7k5mUzg7OwMHjx4AJvNBlarlR/34/FYNWZ07e9DzA04V0nzpzZHcUiNS4uxpG/g9MQcpW3o6DouON/il9X8mGCtbbXyU+uV9B5bn3KMr9zQpdGiGTokIxQ6sJwLnVr0uGI8qhh3yPrwomg6g+g/NH9LO2IBtu909yzuaKXl8J2sdNdtw/FUQGO37Da4aODxdBQQpKMOW8mxFdspy3e8+raQ4mkbkrSB85U6OzlNjuHAfnRhniAvjeP9JdEn5Gk4YsEFNPDftO6UlqAOQn1peY2dsQAq7wV9RuvIwRBeDIv9vcoYhmNY4D0VYsNdansaztos1c6dQWtHRoOrHbjNfh4pr0tYv95fITIej8EVzq/js9kMTk9P4eHDh3BxcSE6pySwODC1fH1BlzVVkuUPVVaMhhw5/9BruKSfW/NagOsekjyLxv/5fA4AO35l9eZ0SnIE/sZ1ejAY+I9ENf3HKgdo8rMFcmwGUh7aFpoOasWL4Xg3Ly+vqyOkLUjGVR4PIKylEPKRBF7WUnSsWDkSLsnBQ+nP6RvrnCnNGVyXkcaMVgcLbRbQ5F8r/ptYMzjE2kebby1zcK79hOPPwSPpIpjXMqenyufHcCNerf+suLX3nPWwLcTGKNfZ6DxY1zWcn5/7E51wrTo9PYXT01OffjQa+c08R0dH8OjRI99PR0dHKj1IE+1Ty7jg495Sfw6HtFH0DTGd+pDzRYoGLD+1pmD+2FxyyP6w8Ik0NiU5S0qbCkccEk2pdYS3r9Tet+6MvYvQdYF+U+EuOppyFrougPXmDhr69Q/eU9inosfLoztb/+Ef/gFGoxGsVit499134d/9u38Hjx49CmgajUYwnU4BoF1b5SjWMbgJYUTDxyc53DUMsL+rYr1eq/zdZlK+y2NeUoRT6TWHQs6cEFMOrKCl51/BIk18hzqNk5ytaFzhZSwWC7i6uoJ79+5BWZbwZ3/2Z3B1dQVVVfW2C/5NBMsRb1TY0eagVPtxQSlWjgRXV1fw6aefwvvvvw+j0Qg++ugjOD8/h1/96ldQ1zU8efIETk5O4Pvf/z588cUX8Dd/8zcwHo/9DtkuRkNeJ14XqwGK46NKJf2nY0Q6PpsroV3qctsgzQdd5iMJP33yu9txl8v19TVcXV2Bc87vwsiZE/gahc+YAkuNcBpOpMOy65obRFMGiOSYrRzUm3rrZAK33xGLz8HuWezG1s5JW9Q7xyU9slUiuxB+0yf+445aGlazJ/lHesS7Yvm7g2bZPB6E30DepfpoIDmwOC7F6eb7S3C+Bb+pY5Y54/wTHZ5OiHNKHMOvOm21/1pO75zbxhGaAjrqcKzQ3a4ch7ozluyKbezeFLuJjUst7a7sutyOEw8FccZ3mW4DEkJ+0JywQR0PARy1xK+kfzaXG7j63dX+w45yPz+hwwBhtVrBp59+Cuv1Ojj6sBO5ik5glZ1pnlR4F5B0nZhRrEu5femFfePKgdQVQLE1jhrwtR3XqJPgbis8tQogvSMOy+PrMV6l8fz5c/j5z38O6/Uarq+vA7yarEdp4/XhaTTQ+irloIjhs5atAT3ZBOlDWwwCb5fbBJyvck/daaOrx2RDygf4Tneu3bt3Dx48eOBlx6dPn/oPCooivM6H63Wxu5A1/UPjS832IMV11dM4fm2cWuRfDKfjuGFg39kO+AYAC31t65jSmW7TqSWt6bETqto4q+q6Dvic2oqksWNd46W5tgtIthLNlgUAwZ23ueVMJhMoyxI++eQTH456LcD+FDh0ul5fXwcnx/H+mc/nMBwO4eTkpPXafpfsDLcJXeSjtraR2wTNRmj5oBLz54D2gVbqdA4rxMYlvbIiBQ1nbIwYvtB2GUw5DpCbZLA2ZcWUOUtaqwDcFVJCkFXQy4UYnjaTSZtFsS2vSgowj+8CMfzr9doLFYPBAB49egT37t3zxyauVivvZLy4uIDr6+vG16J0wsmZfDSBTptIU3U8JHABndJH64zhsXbI5SlJ2eA4JVpj0IfxIibUxUDjxbZ9mJpjUul5Xg54DwDvU2oE4H2rzcH0iM75fA6LxSLgGW444TTz40UB9oIAdfhxZZUqHBS/RdGm9bHwTA5vdZnrqOEkZjCU8liAK/qr1QrOz8/h/PwcXr9+Dev1Gpxz3mAzm83g5OQE3n//fe9UK4qts0074rANxOaD2LumJPJ6Ut7hjkMM5/yeawSgv/uYu/uUKbrk1+iIyWnYBihw4+kVMeOG1ZCDcV0NL6kycnBZ5xAAgGpVwfr1Gib3d0ewur3zi/43wmH7bOxkdex+2YLgwDQ7h47fiUreuYMpOP61gPD+1114ancqncc8HXj0MqWD9gNzdvk2dU38kcLFMMlR6HnHpd+DNdDt2y+II2HJvqR0cnzcOUjq3NgVy/mfhUkO3kY5hB7RIUz/XLgzVtyJrIGQjtPQ6Ft0NKP/tWD82nb48mZjfY+/LQ5mEVJ0afgk/kRanINqUYGrtm1WXpdQLau9QxxkeRydXl9++SXUdQ3z+dyv81Yds81aKOkWvEwq22lyj0U/SEEMR1uZH9NK7RRzlORAG/2jK1hxxdY96zqO/EBl+tS6rsXVdQ2r1Qpevnzpr1Oh97rH6InpPfS3poNYaG3jIKF42tgP+Ljijva+HSU5EKNDmgssfCHJ/Za6aXYQPpdhG06nU39akHSqGq2LRidPL6XT0ki4LXNPX/MEdTjTPrPye8zOm2NL0fQ/jtMKmm6dq2PnlpezXkjt2qVfY2szQPM45Nwy+5pbUrqjVl6q/JgeC7B1Gl1dXfkyXr586e0eePUeXueGui7C8fExvPPOO/6aN4ynbS3ZDqQ5LFZnLDvHRnUI2aIr7+fWoQ30PWdo0EWuRJpS/W7l7Vx7hzZ3x9Y0Cz4K/LjutpC1M7avSTOGv42wlgs3VUYftHQ1th26nrdVVt+QWiAQpEX+UDTQxbAsS1gul36xfP78OXz88cfeMPwXf/EX8A//8A+Nuxjwi1oLvRovUuXyLoO0MOPxkihAYDoLaIYP2haxL6AtgocEbduZL1htIKbg9wGxcZVrKBsMBnB0dOSPqOVjUxNOkScsZeAua/x6M6bo4m8cowD7uzuurq68QUWiiQsNGu9gvdve/9xWQMzhAVR4EIf0xRs3FtG1PyWkoSJAv6g9Pz+Hv/u7v4PRaASvX7+Gv/3bv4XPPvsM3nvvPbh37x783u/9HkynUxgMBrBYLABg2zez2czMDzGwtI/V8JXKLxncYuklyOGD2zCQavlSQnSOMYDiin29iM56qS36XhNpn9H7aaXxYzX6SrRSZTtVB03pu/78Gq6+uIJH//QRnHx4AoNyt4u+2vEnHslabP+943LgoKh397rWu3W72P6uoYYCChjsLnl1hdv+LnZxSAuSVCT+6Z2ztJpun8bvlGXh4m+Oi8YBiQclLBc0ZxuJa+w4jLw757xDzMdTucE102A/et4U0uDO1YYDlJfjQnxiuXWzHPxNw6U45/Y7Yxt0KDtjXe32ztJkd+yduGL/UKcn4Yu63MnyhG/MO2Mp38lE7X/myGq++AgBRnSiM5vxHMCuvUsHV39/BdWi2ofVzbUK3/Gup/F4DFdXV/Anf/InMB6P4eTkBJbLpb9XvUFTZH2U5A8JUsZ/6eQQPl9KekTOvG0Fy1qk1fU2dbuuNg4NpLVa0xGkduFrbEwGkWR4gHBXJ83PDdkU73A4hOVyCb/97W993GAwCE7N4kcn07ql5EPe3s7JpwVp+TAvyifB3EtwS+1Er1ei7YB1kk56of2Az9h9oX3bZawgOSMAZP6O0UllM4AtPwyHQyjL0nzVBI1HnRFx4d2OqP9Mp1NfBgX80FnadRzb6Znb/tLcGeNFWh+KA3nJMq8jzx8dHQV6Ku6qpHY0Pv41ulPzPs9D+Z7Xr28etuqdXfTTtiD1JwXLx6+WsUX1fMmWB9Dk3UO3hTSe25SJ4zSGvyxLb/sAAPjqq6+CcmkfvP/++/Cv//W/9nPCT37yE/jRj34E/+N//A/49NNPVTr4jmdtfYtBbv0t4+U2eLpvaDM2u8wlNy2bamlSu+Z5mLWNJFkDQK836iAccP2UYL1eB2MuBnfumOKUIbYLSBMDL/MmgQtrKehCZ5u8N9kuOX2dStuWb1LCZZuJTVPyYkoSwmg0ChwbX3zxBbx+/RoAtgvpxx9/7PNdXV15AbKLsq+NkZTAb8GXgi4TdixeM4hI6VKQO28cytDQBWKGJ23+jS1Qh6JJKpML3ShE0juY+LFWHCcVyNFZul6v4eLiwitjknGFGgNSbYN5kDapXSWelAwl+I7GD37flNZ+KYgZlySIKc0xw4JGX2xMasYlKS0ar549ewaj0QjOz8/h008/hVevXsHJyYk3ODjn4Msvv4T5fA4PHjyAoigafR2riwVSPGvBHzMmpNo5pxyt3DZ5Y5AyXnIlDY1tOXyZ01YcUoYfDWcfc19bxdtitKLppXKpgzk2J0ngw3fOLe9MQacWHgFbQPOuWH6H7M6RgztlqfMMd9yq98GSHbHBfa5F6ATCp0+/c4YhbmmXqp/veRnFjnaAIDx4L4q9A0rYAdlwgAmsqu5mpHhJnO87R95dM47iDfqd9BHduRrsXiVP0eFL8RN6g7wQ5g3Ko/xHeCEo0yXidm3TqJNzjX/VmdpocoHuSHpsU38McrHnSwAA3NUtjq/cKSFnqqa4I/zZqkyFF51zUM0rqFc7B1TloFpXewe1pTgy5+HJQPP5PPoRlXVebzsHY97UnMkdctqaIhmZ+4Y+cR5ap7HKSXz90tZGSWaX2v5QxkvOMxZZ0VKmJJPQ+mkfDNDrV1BHwY+W8Z3n4eOQ1yumw+BvDW8wL2e2AYXbtOdJ7c/BMs45H/fBKzwv/7937x4MBgOvB6dkX0nmlujXwiXdnM+PkmyaM6+neIPex4wf+ErOv5i+a9HtMSylp1nLaQMWXG1shm1pca55opmUTgKJfqs9I0ffs+DMKU/iAYs8kKP3c/uBNm5iJ4JdXFzAJ5980vjoZ71eB3o6/SBe0tm1Omhrg1bP1FGvlrGRY+/KtY21hbZrHe/X2DxMIVavHB7j+LR3S54YtGl/3kZt5rTY/MJ/4zxGP56P4eF0IhzcGRtbsNvCbQlbNwE3sRB+C+2gDS+nBjXHTxfHo6Mjv8uuKAr48z//c79T7+uvv/bn/zvn4Pr6OnDcWs8p1+Bt48OuxhcJ3rY2kgAFNk05OSRIxhNtwaOGBf5Vq4QHcR0fH8Px8TFcXl7C5eWlP7bWOSd+7SSNq9Q9jbEdblYoiu1XWWgk4X3SZrxj/fi9P0hnV6MR33mnKap8bErKi6ZI4o6By8tL+Nu//Vv45S9/6csdDAYBX1xeXsKf/umfQlmW8OMf/xiePXsGX331lZ8vU4YgSahLKYtSvLRbQsOhKXLcIMZpsgjqNw0xAwb2AT75PUI5hs5YGAXaNilDRYwHDwV9rS9WY4G1PGy3wWAAxaDYOijL7b2YAxg0dsa6wgVOKP/c3edabLe9btNRwLtgWb7GDln8p1MgvzNWuDvW/wOA38UovTvlCSwMWDh9h3245vxtgBOcfYrDSwqTdsRqv4O52QlPcPudzk7BJ+ARcUlPXja5B1bCQ8N5WLAztm6GBeFO2ZUJ8loVpNHiaDmlC+5GDvh292x9d2xBfxbN/AK+6C5YgICXrNDgQ8J7uOt1+dUSVs9Xvr58hwr/TcOoLIJHa242G7i6uhJ3dPUJfA2xGFO1cGkt/iboECno2wGA/KK1dczoKOXFd6nfUwZzq8zIZZGiKGA2mwHA3sgtyUP8Gh4sT7qeh+sLeFIM1R3wSGR6XCXFgXmLYvshI5Vl6YlAGvA25uOKf1zBnVN3RZalkNKVaDqAuMONhnOgMjLnTwtPUeD9XhQFfPTRR7Ber+GXv/wlrFYrfwJTjIe72pliYHUw5OJEJxIAwOnpqV8/8ENs/NCH5qEfQMcgpQ/G8t1F3j4U4FjH08Jia3if7ZKDyzK/W+J4upgeGdNZ2+hp/EnHK7WTcXj16hX8t//23xrhk8kkuKubnkrC68bnGMvpY5pD95DzzJsIKdtGW3wpnLSPLX2S02+p9dOKA0C2A1mBrrMafloGjqPZbCbOY1YZsHdnrFWwsEBMSH/TFi6JXnSsUdC+VslRAnNp0gZ2DhO3Zf6bUkb7UoL7FJosSijto+Vy6XmmLMvGwKfKprYbLwU0XZcJv037xvJ0nUek9755702bkxC4sMadOfjOj5891Nweo5H/Hg6HwRfa1IkjGdCocQ/vIKPHSND6WhRsiTa8mwTbEp2dVqNdCiRBoe28xNtGog2dY1JeDacWZm1L+tTyUIPuYDCAyWQCw+EQBoOB3zXz6tUrGAwG8OzZM1gsFl7Rxju2JaOdhb5UfXPmmJTwK6Wn7WLpP5rOSlMKv2So5vgtRk2OjztiaXyODIRxeKRabPzhBxOUz6V5w1IuT587NrlRlodR0PomV7awpKVK2Gg08v+DYrB1xFYDcAVxPu0coM5tjyX2Tku3i9sdIcx3xjrn9k5YeswwTUMcjd65SXbS+nyDvQOK76AN6kd21QZPV3gnMY/DMI6bvqOzljrBTI5YzEtfeR85Fu4fLmizxq5VB+FYleL4k5fHf7tmuYHTNvYvpG/s3hXwId824oHEQXM3LK+ftR9ov6l9SNrFOQd1VYcfAkDz2dghqzhVo/cbF+F4EI82LnqUeV34G/u+3tSwfrUGV5Mv0uvtvbD+zjZCh3XeovIY7lySPszrGyxGFIBQbqTvNL4vHfRthNx+tPANXT9TMoz0MR6VV6j+I63LHHJkBQ24LJIClPW0I3w5fXhU7WAwgNPTU5hMJlBVFSyXS38kriSPj8djGI/H8OTJE38SDTqxUvY6uquKx/PxI+3O5fjuCrS1ecX4hM55NB75UpITJVlT0wvW6zVcXV3BarUK7EroEEG9lfdLriybkkVjc76Wjl8bEptbY/rG5eUljMdjODo68umm0ymcnZ15fVEq32q/kOwWuXqERHef0AVfLv2Ul4bDIUwmk8DGgKdepNZOjovXI6eNLWVZ9HlNN43pcRqdMZ0st7+0uZaevEjj+D3K3PbDT0TQgM9bdI1NjU9Kc1tbtkZPDuTIbKm1720BulZL/Gvpq7Y2t7brbKxcq102pgsMBgO4d+9e4xhj6YhirQ536pjiPgzMXQbtIZUjjhuNx3wyRKGW56NHZ9zFwZ0Stm4SLOW1oanPekiLe0wgdc7BarXyvFHXtf9CCcdJbMdVypirlWuBPhTPQ4NmDMF/ScGJ4coJv2lI0WdRjLSFrI86WnHwI1IofUgLNchxQV4bY7Sv1+s1rFYrH4dKHs7NqWPwJGWLOn+kY4+kvJxOjlNSxNv2BV9XY4o23YnLcWgKBf8qv43yILUr/Y3GAkw7mUzg6OgIjo6OYDqdwldffQXX19fw9ddfw3K5hM8++8wfQ3V5eQmfffaZdyb1AZqBLmUk4MaKlPDK8aXu09Du4aLlx+QKzTipQWwtQKVbuy+NC/ic7i5KmHNN4z3Fh7vO1+t18HWu1q99gNTuMWUdQTqmnOfH3xYjl9RnsfqjM3Y2m8FkOgEHDupNDW7its5Y3Bk7dFtHZL0/GljcGVtsnUfeKYv3yToId8ZiXiQXnVyWHbHEOetx7MoOdu46EkbbFZ2yu3z+CZHfPK8VpKSO/nSqM0x69/3rGF/ReCGu8SRO3QAHzQssjP2OPS1hPFwKC3bB1hCkC9KTu2lj7R841nk8qXujXWoAVznvmASAvWMfx+nuIR1jjODz4hjCeAeig1b60KA3cHJ7YJ2rZQXXn16Dq0Lnlbb+aDIPn99oGOpA9NSLQ4Mm60g2CmmN1/B9U0Fbt7S1yKJjSmtXTKamabnuJ8lmMTxa/XJsWjQOdRGtrBhNkn7A6+mc87uaRqMRnJ2dwf379/2OyNevX0NVVQ35GO1WR0dH8MMf/hBOT0/ht7/9LVxdXcHLly+TdyBKRyZjOum0H609tLrfFki8ptkTpN8xWY1+BM31QCk9LV+LAwBYrVZwcXHR0KFR55VOTEIZ3jJ/WWRRGq/ZJyQ82C6pPo/JunVdw/n5OUyn02BX92w2g9ls5u0JEi1Ud0rpPPw9xccx+u8KWMYa1xu4HDAej+Hs7CyYj8qybHyMaykrp51ic2dsfrbOwbE8MZtUDt5YedYxMRqNRHsPHQu4exnzbDYb0w5XLAf1bkpb7MSrmH1Lmx9ywLqW91HWXYE+18UYnyIfS/fZ59CUkm0skJL72kBMFhkMBvDgwQM4OjoK0l5eXprHy51yxlrhNoWuvsAyyJ3b7/TiC75kRH4bJo5vIqBgibu6EObzuf+yYjqdwuPHj9XjPLigHhMqLPR8U0AyOgPslQ6qpFi/CHvb4FCLuQZ1XcNoNILj42MfhoLdfD6Huq7h+PjYG+PoF9xS30gGAKoES05fTeG0ChHcAct368YMMlI8rgW0Pm36BfHXdR0cMYNxRRF+GXl0dATD4RCur6+DOknGSa28GJ0pxYc677iQjvOcdJoENait12v4y7/8S3DOwcXFBazXa/9VaJ9jWZpL6JPzgJSPQ0pJ0AwymiEy1X/UaMKF35TCmDIODYdDGI1GXuHmoLWPBjh2+VfytDxKR6zNEEajEVRV5T/QOLSsqdGUUnpoOsrr1vJyacSxQsdaURQwGo7g6vkVrL9ew9kPz2B8OoZBtdv9hscUD3ZlEodqURCHK0C4qxV2DkzcYVvs0wTOqAEL505XJ6ThuxR9JZkT1pF0bv/040NwyBbF/i5bpNHvou0yzQjOwoZDDCJOQRDGO3GgcQeqT8uPJRZ+B45SIczHCWGWNBanbHAsMUmHztbgWbvmkcVS5/Bw0o5if9J2BNjeibqptx8mONg7/CmfwP7dp9nxVOH2jllKR7EP3D4Yv/J4/5EDDdsjE+stAuMp5xxszjdQXpdBmrqsGzzniyviH/5Iefo0VLaBmAHWMudquhg3UL8NNo22QOU6KuvReOl3SgaK8RjHibICyhP4oR/Ga7KUZlyX6kj7muPU9NAUUDy4PmuyjoS3qipYLBawWCxgMpn48nl+lAHoB2uz2Qzu378Pjx49gvF4DK9evQrkMK1NuKzG6cU4dIR10XduClLzksZDVtwSz8TKseiXVVUFx/FSHDE7U6p8S1wf8zjqxG2M9PyI5txy6ZNDjv7ytgOff7g+OJvNAhtbWZYwHo9hOBzCZrOJ8nKq3zUdOJY+tt5redpATN9LOa9ynPkcuI2Kh+O8wO2ellNIrPzMN6DltmHbuTRmD0G8dxluiz7tqGHpSGkAW5tKMhjaGKybVzTI4Q3cna+VJdGCG2wolGXpHa8nJyc+/3Q6hUePHgW+HA16d8b2xTAWoSMnvQXHocBquOThODFKXnietq/JqS2ubyEPpAmLTzir1coPeq5kcUEDJ7NUWTl0aSApW23K6htiCh6GpYDmQQGEt/mbtIBTiNVfE3qpocQKqblZEqa48DcYDODo6KgRjs5YFNg1gYCC5HTDfuQfQNA6S3XhddDK5nftWoyQqXqg00kyWFmB5sd1BRVvqqhSYWI0GsFyuQw+RmgjEKfagOKW6NZ4McYDRVFAWZbw93//9z4NOgUl2mKQmkesAmTOfJRLEzeASXyVU26qr/juBW0OpvfBagY7zamaokXLw2mjX/hqMhlVCOga0AZy8mnzoSUPb8uUYk/zp+I5Dknm2LzawGKxgOP3j2F0NNo6uyrwzlR8Fq4InGaFK7a7BwfOO18DXiLHD/OdscE9swMI0nqDJD32mB1XTJ2kxUC+w1U6lpjGIS6aVouX8lqhwatOiPMPt493YXxjtyyJD94doZvjoOXR/MyhGzhnSXzjycptOFRJuOScDZykvA7Ck/+HzeqCZxugx/VWqwqKARmLOwer57uiyUOclmh4UQAnNaAdnb8av0WqyXdBN/qsBti83sDqpfDRCuUxkJ0vKWfBXYUcuUeSIft2SLyNoPGNlIan52k0XYS3PZUV6PGsCBajolUvxDxct+TxXG+RcFJZHGV6/B1zhCDgTsjVagWr1Sp60gr+ozESP5i9d++e19nwqek9Wp9Ksh8/DS4lF7bVS24LpD5PgcYz9J3PO5qsi7veeJ/jjjnpA+LY/KXxpxTXtp+kcS/RkqKJjnfpY2yeXypLa1erbdoie/cNMX30pmnBXZjIC9gn+JF97E5TikPjc+2qmxik4vuy98XwSGNFq6PEr7E1w2IfoM5YisfygYZ1Doulp7YpjfYUWNduaf2OzU1d5Lcua5Nmj5TWegyP8Y2lLPoekz0kemjemBzGeQHXJSttGkgndNByEQaDQXAHsgTS+JD4E52t1G6NVzrwe8gluLM7Y98koSoFaNyjgEfD4BnTeHk8n4hevXrld2l8C3cbrAK1lI/yOt19QgXFV69e+QVxs9kEX1pYt8Kn4K6Ou1TbxhYFmjdnMdW+1LEq3W2hLR91Aapsc+ekxeF5CHrwS+zhcOj7E7+YxOO0APbCW5t2w7xccEHcXFGjQg5tlxh/aUp3jEc5vj74gfYvHqsBsD1KoyzLhvKDAvh4PPYK0nq9NvMCP6ZQogchplhTpZkanijeuq4DnuDzIQpckqKhlZsLlrlF6vs2c5MGw+EQptMpnJycwLvvvguXl5dwfn4Oy+US1ut149jpnC/EOb/iM2UkQ57TDAF8zdEMODQsZgjB/9Fo5J2pZVn6neCcL4uigNlsBqPRyH/soX3Y1DdoShSNyzXmxNYnaX2XjrGWlH76j22KdzNDsd0VV20qGJQDGMBgf1xxQZ5IDnn6Y4wHsD+6GLa7VIsBcbpSf08RKpveWVvA/sjXRoPt89H0jaOQC/YOzad4rCxtMv5OccRAc65xXE6IIw4z6d255u+GU5Q7VQl+n19Kx/G6Zrzl6X+z3a4aXufCna8+rma42W7YwElM2562M2ljBy5oD97O/r/eluUqB6502w8NdvzmwO2dswYeo+PAg88uHH0tsXwhf2jAIRjv2LYbB4svF+DK5lwAsD2SGOcCaR3AeTS2rmlz/U3Lvzmg6Uia0aoL3IYucNNA+YTLClS+A0iv/7F3LQ2XgbiM1lUGj/GFhFtb/yXapHaQZEuKB4HqPS9evIDz8/OGA5T/xviiKODzzz+H+Xzu4zabjf9Qlh53S8vl8jeV5yldAACPHz+G8XjsZYyU7mGxXdzWeOpbf+b1sNQbYN/nNL1VB5DaTtNtOS5JJtWuT0nVgYdJ8iyvY2zeKMsSXr9+3QjHHYH8DmZJr8+Z+9/2+ZwCnz9iY3Q8Hgd8ulwuG3p8bN6X2rUvu2gb6NLPbfNyJ5HmQKXlaDYTjrcPOyC3oWnA7W6S8yvVRqmPuzlNEl7JHprKcwiI2UQkuM05hq4DsT6w2AVjYbHyrWWt12uoqgomk0nDKVsUhf/Q7OrqysT7ePQ9p3c+n4vH/lNIOmNTwk8fEFvgNbCk4QvobTCoJGyiMXwymXhnrLQd2jnX2SiYMuh9C/1BF/6iggpfsPB9sVgECyd1nrT9kihmDI7RepMQo8dibAYI2zdmxOaCnaSQajRo7WJZtC2KQ2xR4/S/aaC1Hc6VmAbrV5al6iiVlKVYuZLRw5LeGh4L43ej0H8a3hVwLcE2Gw6H3hmLTip8UqMY7hxOGVVjApRV4MK00ppJjXTcyFMUhTf+SEeIAIT3y7UZw10hF69ljtLyjUYjODo6gnfffReKooDFYuF3PVjuWdLK1dovR0a0COB8HEtjQSuTpuUfc0hp6e5wfgdhjoHFAlaDmUSnpY1jc41kAO0KKLNiG9br7W7A0XS0vTsWd8Y61zh2mO6ExeOKcecs3TkY9Ee9c0Dtdr/CIHSK0Z2sosOMpOG/LSDllXbIYp15XgRTmVIS4hwMfIiOhbG60/jGGMYwHkdxMfyiw1bIR8sJdp1y3OQZ0IEO0F245JxtOFf5PEXS8/9Ge3E6IcQdgOOvu7IqB3VZQ72poS5rv+sanbD4UYF3phYAxaDYH9G9c+IXxY6H6dHFO76mu2upc5a+B32CvyuhIpSnSL1c7aBe17C53IDbxOd7i9yV4zjQ8t0EtJkXcw1lUn4t75sqz6cg5lRM8QpPm5JFY+udJvtzfs5dP2M8QfV6jR6pDjSvJONq+odmTKaAp3DRk0C4vszzXF9fw3A4hJOTE2+s5/cBSvIebxupP51zcHJyArPZLPiQLgVWWSkXcnXrtuVovC+VnztX8flZ4rE+9c4cvS8XT0PuEMBqx8IPeXke6oTlerpWNwtdsfibcup0Lcui/1M+0/qQtnFR7HdfWuUFiV+tdgcNr9W20Xb8WSHXlhVLZ7HdSHWylG9pLymPtQ1j/MPLlPq+TT8dyh5kHXN03dRkgVgdU+XE2r6rPKutU5b1K1V2G16LAT2GWwL8QISe9qHJU3jMuuR0Xa1WQbhkW4o6Y/tmxL4gVzACCAXLNvnbgDaJv/fee3B0dASDwSAQqumXQTEcMbipun0LMvTZ/jhgN5sNrNdrePHihXdKYFm03JTj/pvEG10MzpPJRPy6UjrulirWMYGnr7ZHZZniwqOGuuCnRzJLdexjLUjRFztGFOlC/ud3F0p5coALYPgVIHX8UUEh11HDlbrUfaXaOoAnKFjvDaF9NxgM/PG8s9kM/tk/+2cwGo3gF7/4Bbx8+TL4+uvk5MTfFwuw5Q/OI9gXmpCF6xl+NJISqGkYN+SgolYU4fFZlF82m01gTBoOh8Ex79gGHDfdlUHpvQnoc63A48XwTtwPPvjA34G6Xq9hPp97B6XUvlalVzOmxQyj9IhraY7JAZpXuivYOweJ85nyqWRYxVNJEDeOk75lYIuiw9Mgb3a5K4iDZvSl8VymQB4DAFgulz4c58rL313C6GgED372AEbHIyhGBRRu62iqoYbB9qzgbR3BbZ2pfHcflg2EpwZbp2dwN/huZ6qnv4Bg16u43vI0dJfsLj62M9aBC8pDOmg7BmkIuGJ3LLMVJL8Z50UnhKNzjce5MC5YZ10zn+iEldLi7zpME6RlYY1nvaclCHOw3Wnq3D4N2wXL74OleYMn7lit97hS7b2PCtuTOi9pGznnYPnVEhbPFtudsYKxSILJOxMYngy9w7YoimAnOOUtHubpEMYRrZurHSy+WEC1qhpxeyJJ2K4+3BErgSR/0bkiZqhN4e0qe/Yhd0v9KH0IiPGaDKuthd9koPqstL5RWU+Su2lbY19jPL1PMmV83Gw2gW6BZVL83HGg1YfSw+UOfj1GCjg+/DgS6UntPAEI+Y3jxv/RaATj8TjY+cpxSWXUdQ2vXr3y15jgjjYLcHrwwznstydPnsDJyQlcXFzAarWC9XoNRVGIdrJDg0Ve64pfM7rTcvq032h0Wwz1UrzFgJ5TB2lMa/RaAevGx3js4waprtqpTzyPRd7/JgGduzabDZyfnwfxdI2k85fGA/yqpRhYxpdVLrFASl9rwxPaHC6lo2uWZDPmQE+gi5Wp0RF7l0DaiBArUytfKgvtRfwDodgpGBrg3BCz+3UZ55Ld/jZOI8yB3LVI66OcOlrXHCrDSZDaCc7rNhqN4OHDh778y8tLUcZ59eoVFEUhOmPpGATY2l/5nBWVDLsqQhRiCz9Nc8hFyypIU+iqCEqTG54jLZ1r3XZCojhSab6Fw0EX/o0tcM5t77zDRUYqN1W2hba++a8PsBi1NIOQli6VhuPjhvEUXk5/X3Nb3+3LBQxpzupKO82bs6ZIAolkWKH0ScqiNO+n6kfbwCKgxhTnmLIWA0nAo/1jFQBpfF3XcO/ePTg7O4PT01P/Zfv19XWjTKo4aTyQGo+ctyzzFKWD4+QfSVDcKHhrp0xQmvBd6luNR3PWUks/t1FgYviokImGu8lkEjjVtXK0/u1r3pL4VhtDsfmSj9sY0KOVeP/T/EUh77a+DYNfil8OQZPG/7Hxzg28zjmolrsPHzb11hmFO1/JDtiiJs5StytnF0ade3SXbOEK7+R0busYk3a/irtesWqxNLR+ZMcrf1Inr+cTYWdsA2dBaM0BKbn3/TXr1nCmCk5ZbD/RocrSejzOFxCW46A5HnfhjXLRCaw4fAO66LoLjBbmCOVl4nvjScu1tDEvS8tPcbjdXbGLppIf6/tqVW0/XCiK4AMAP/7IBwHgfxbBewOoYxUAXL0dn/Wq+fGKz2KUoa3A130OkvxC1+S7IC/H5IhYem2ejsmU3zTI0UdjcmaOLK3hwngq6/K5PkafBXJ1ay6vavYkjc5UGVz34+NQwkXD1+s1LBYLWK/Xwc5Vq17CaeT1HY/HMJ1O4fT0FJxz8Pr164Deth+n9TW/URx0XEvyk9Q/MZ1R6ntOe1taaXkSxMpI1cGi91jmdkk/T+FOrTcazbG52MofOWObpzmEzawPyOG12JiXxkJRbD+upPNG7P5XmlfC3UZvk/osNo/m2G66AK9T2/Jy6OVXfnF6UmCVi1I4ctLHyufzJwWrrU6jz2pvs/SfxQak8R+dt7T12kJnKk/XuTG3vBxI2SlidPAxxp2oOCaKIvyIDuUSbH+0t+FTcsZyn40ku9ypO2Pv6qLUFnDbshTedZeDdQL5Fu4+SMJgbJcrj/um9r+2cFkFXb5Qo5DIccT6AtPhrjQeDgC97bSjE75Gdw5o9MYU/0MC3S3qnPNHB0kfH8QEZonmoiiCHYEU+PGtXCDlPMS/lIsBFxBxUUeekHBQwxBAcxcG3UGcAuec/+p9sVhAXdfwb/7Nv4EPP/wQJpMJbDYbePjwYfCll3POK0l4WT1tX2zLmHBF27APJ5Jz+2OWY3fR4hf02m4Amg+/xMcjRLA+4/G4E82WdZkbF9oo/RRw13Nd13B9fQ3L5RIWiwUMh0N455134MsvvwzSYxtIygBXIiwKg2Y0pWMFeYnSgLTTtkgpPdLcJLXler2Gsix9uVS4pmUDgP8Y4ZB3xVrbEccb3/lvySutX1peiQdiSiwC0iauO27rXBqMBjAYDwAc7HfGFgOooYYCChgU27hgNyqioVUjjinqHA12qu7wBPdzFmGcJ4+ngWJ7V+2uLMznnb+7NPSOWHonLb87VtoZq95hawHeBdRJSJvdhWH0veFodc30MUcpz9tw5DoFP4tvPMluVwx3zu13w9Lf0k5ZxE92vGJc7Mnb0T9d+N6oB6kzrystPxfK1yWUF6XHqc17bQ2NWCd+92tbQDq0uRLlNZwnsE7SiQwS0HnJYoS/CaC7N3MNYG+bXaMPoOuMtGZRORMgbHfKH/SkD4yjYNEHKW9Kx5Gmxh3dUUT5va0jJ6bbtdkxw+mhcwzdjarxttTuAABffPFFgxbcuUvzdYHpdAp/+Id/CC9fvoTnz5+Dc1snLZ4GxWm0tnmOzG2FlNxsoZHyNT61q1dyQJpDOR1cz8zFTXlM6pscSI1ZCdrwHdcDMEyaT2IyNwdJd+dl3hZ04f22ebltAGCrGy4WCx/ObQp0/k+BpCtpH/OnIKX7YJoUrrb97Fy4U5uX1WXekugejUbB2MFTojA9lecojQC2D2Is7dBlTMTmVUq/BrnypVZnzR6dKjc2V3BcqfZO1aHLuLfm72rvi9l9pDBJ3rLQQPlis9l4ezONv3//fiPf6ekpnJycwHq99rv7rdcoICyXy+Y41BL3tWB0mZA4SBOJpeNue/HjUFWVupWZgqS05gj538LNQkpQacuHtM/58xBKBeLtEyzKQJsyY86EtuVowngsr6TsUjy5C4yUfjKZwP379/3uP4T5fA7r9bqTk57Pl3zusSzyuXzIFX7+jvfCUgeFdoxWrD68L7S6Skc9U4MMp4/eYSr1Mx+rFJ/UBlI7xOjNAVpHFDzQCUmdZJiO3kmtrcWcPl4v7hBta1TFI5LpBw8xg4dFAAbYK2t4ZcBsNgMAgPPz887HfluA8kIb4wMFOjac237I8PLlS9+PVN7Q5kepT6VyLPWJ1cU65+Ua2CRa8IM4bkiU3jltffVNW9pT85x1jQFoGhFS8jWte6rOAR/XDjYXG4AaYHi0O9acHBNbDAr/GwawvQd2sN/9uvWzFt7JRXfAFq7wx/363bOwd54hLgBo7lCtAfxdtc4B3tXpwPk4mk97AoCng5fDd8lqYY32Exy1ksOVvwd9uGsjzbnq07rwN48T03Bc3BFL6XEQ/GOY+CR5HLhGGum39M5xaWWL7dts+Ea8mJYF4f2quDs8B/ixybVTPsIo5PnJR9P5G+LXZoh0RGRbno7KRRoe6w4LPjfxdfEm9d2YfGHVIzQcVr0kJhe/bSDJ/QD7+97x48WYsQt5RjJUxvgU4+kzVQank/OstG5rcoSmy2trc45OZrWVFYV+NHNq/uD0aOXlyvsIqJfMZjMvm6fw8bZP6QddxpelXtY24O1IPzxFOTZnDud8FNOXcsFqkEf8Ek/H5ldpnMTGrwW3BrmyvTaGYnon1zmseA8FXcrKsbvkQszOENPFtDmxz/GZ0mPbjKuUfGDBlWoDibZYGTGZThrTqfVVo5HGtZ2DtDXJmlejObW+UDy5+bW0qTkkhvtQ61ebMcH5IobPUt+uMkQKr/aOa+5isYCqquDo6Kghr+H6PJlMfFjsZD6+6YfDndoZewjIEV4PARJT4t0XKRqwA2n8eDw+CJ3fQnc4FA/l3jPzTYaY4A4gzwexcddGeEYa6BetOTuuJNyDwQDOzs7gZz/7GVRVFexk/PWvfw3X19cwm82CL9zafE17m3cVcGfAcrn0TmbuUJLyaoCONclYgwIB3emlLdT0q2+A/bicz+fBzjsKscWX4o4JWV0dg/y41mfPnjUcrfyYMdxhKt1tQNPFeKWPr7mLooDj42OYTqfeMDGfz7N5FAVEanhCR/QHH3wAjx8/hvfffx/quob/8l/+CywWCzg6OvLjKFfAzjHu9WV4pncJX15ewq9+9SsvMF5dXfkypH6jgibyC71/11r/NoZkSdHuCnQOR17Xvn6P0dQ3WB0Nbfggt4+w/JjxUsPN5zqPs3Rw9bsrGJ+NYXxvK6sWwwIGMABXOKiL3d2xFWwdZYXbPwvY/3vEwnMAe+ctyRPsQB1AiA/TYJuz3wGOwrAzFu9/JXSh0zbYiQvpMRBz1IpRjuQh8b6PHHl3zTjutNXCVXw0rRPKcSwtC/NPfldsHabxO03dPo1PJ9wVizgxnO+iFY03EMaJ9aI0C23kagfr8zVc/vZS7i8DpBwftwEWA7hknOIfp9EdsZadFDxPSqa/CaDrY8ogZnFKWY2Qt13vQ0HKLoOO2Ol0CgDbE08sMjbVX6w6F+1blA9jfazRG9MxUHfBMqRrI1JOG2qwtRj/LbIFdfzF7mbkZTnn/Aky9EPZvgD1v+VyCePx2Bs86Wlz/KQjLldJMjYvAyDcyX+IuZcb3PE3j0coiu0JSvgRKkCow+WUaQULr+TgbOtk4eVKY5jHae2i6ThaPE9rnZ+5I0XLx8fuXVnnbxtoG2pzPIAsa9C4nDnQQlMMYienYZjVwWYBzVYpgSR/xPgO7+iWcKRol+ZYXFM49LE+8LWL02ehl+OR4vsam5b1B39bfUISnrZ8npoDeVrnXNKmmcrfFrquKYhDa2cqk+GHYM+ePYPpdAofffSRagc9PT31vzebDSyXywaduH5Pp1PVn9PJy9Nl8utLyejLoNbVEBoDCa9z4XEAPB01nmuGr2/hZuAutnfbSanPxaZNu6QcU23oijkAtAUgJTBLYYFBELrPddr8Scf7ZrOB0WgE3/nOd+Ds7MwroIPBAC4uLuDq6ipwzLY17luEmNy5Noc/tDmSHp+lHfkTE7ByDRcWJxoCLs70+FOpbHRqUYNRztHVfYxZbD/nHLx48QLm83lA7/X1dUAflovKER4L1tYY0Na5NBgMGscI4xix7pJGXHytxXyTyQSOj4/h8ePHUNd148jxHHoRtwaaICgJ5rExp/E6wJYv67qGq6srjwd3mWM6bRe91E5UFknRwpUzy+4ord2wHbR4qmTmjFs6j3PaY3T2CbF5KXe8S/zD24Ubiqxjxqq0Bul2TrF6U0MxLMCNt07YYlAADGDreB3s0xWDItw1O9g6vIp6l97td8gCwDYN3SFLd6/WDuj9s1gOHkWcvDMWd98W+9233iGL+cjO2CAvvae2gP2uWOcCBy1NH21/6vgjbet/Uv5wLMz4LjoYiUOykceF787t0waOTRfGq09o7oj1cw3B4d/rZjx33vpnSvYzDK+Go5y2CS0fHcIZwMckQo4TiY97DMd3Ta7JmWukMS4ZGmlZ3ADIy4jN+VJ4V7AataT0fK3QDJcavjZz7zcFpDbB9kYDVqy9KA/Sp8R3lCd5mJQuFyS+wI/a8N7Tsiz9P46T2Ik8Wp1zeJHztSQrSGMT09PxLMmpvOy2fM4dHC9evPAn+MzncwBoXmXD20h7p32POJA+epWGhovH8T5LzScaHhpO6yU5pbT51gIxGVpKkxpzGg4NJH7O/ViClq/J7RLE5FieTqOVp4mBZa1JlXOTushtgUUXPlQ5CLGycux2twWxeZuGp3ia6oupPtBku9h7bl20ci1hXcqI4Y2tLTmQy1c5MnoKUnOnZd5rsw5puo617SzzYe56qwEdCwiLxaKxXvFrtwBsG2e0+INvuZMGdtvFOwdue8K0CAj4tacE9E4Mzdj/LXwLbcG64LaFNouxFWJ4c40uKaCLiPZlV44QkUrLv5per9cwGo3gRz/6EUynUyiKwtPx8uVL+PTTT8VyciBHQLnpeZXu0pN2tklGCUmgjLUNfumV235IE+0vyVjBj9jFnc1thM8ugEYIvOuJ15l/3Y+/q6qKrlUWYVHLlzI4OedgsVgEOwtOT09hNBoFu3ul/qP8wY1OlJdmsxmcnZ3BBx98AM654M7YQ/E751tuSOxyf9NoNALnHFxeXvrxw/mU37srCdhIG3fC07bhdOIuC0xj2QkVq6e2jvD24/0spZXK4HWQcBxqHaNtKLVpjlGI5pf6iuaJjZdUufbKbe+OLQYF1JPdfbGDLR/i/bHgYO/UJKR4p+YAAGrwO1N9OuwuPF5Y+qdQ7NP6u2SVfH4HrCPhDsK7YdHZS+nmT7d15Pk2FprT76RVm9DRl8bvxu7YXZnqO83rDHlZGud28TStI+EAwW5X1THL0oiOWO2uWJpHuCfW766tBXql9iVxngYIx5AfNwwHpnMVa+MMkHY8oZwXW39u21gbc85Ia4uWT5Pp+r67W3IU5RrmUsYebQ3qW256G4Gv89hm1LglGYFpWtruMf1THNusD+gJKim6+X30mB9pm0wm8N5770FVVTCfz+Hy8hJWq1VwDK2mx/C6SHRq84Qk60hh9GM73ob0g1M+T3H5jta5DVAduygK+PzzzwEA4De/+U3gKMAyYnXW2hTfadvjx8zSR5iSHBibvyR6LMZZqu9gO1jk0tx1QKMnJu9a50o6t2q4aBpLW6dAkv81m3NuW1E8OQ6UHPv2TdjC3wSQ5n4erkHbtunSptY+4baoWJ7UuIyBNK9zfk/xcMququmV0jvHmapHl7krFywytSU+h3+0tagtvi6g6f9WGlK8htClvWJgpTuXV+iczNf1y8vLBj6UIShYPuzS4ODO2JjAlBqoOROxRRiN4bSG50yOaIinuIqi8McJakKrJEh8C99C35BaGHIE0BzcWnybxY2/c7rbCrJcsEgZxjSBJlcA4nOEpKCgw6VPg5WkXNLwLjglvBJIDpyUcUVSvlLKIBVGrAqac/LOXJ4GYTQa+T6iZazXa38sjLT+abR37Qf6FZd23IbUvtpx3bHxgLi4EU1bj3k4XRuLogg+gkDjyWAwgPF4HBhwLAI/Gve0o1aGwyF897vfhel0Cs+fPweA0HHZN0iyEK2/1lcaHgSUPbCu3GhI89G+0dqEj0teFuZHR/Z6vRZ5xyLbaHwiGTDoWKZ1sBrBUvLdoWSvmPLCDVa8b2i7Uj7mY4XipXHSx32cPzRljeeR2rkoCqjXNcw/n8Pk/gSGky0PF4PC3+mKzlXvbGNFeYcshu92uPrdsMUWl3q3KzpqicOWO2JjjllfBqZBGh1JBxCEB8cXA0kfVswGkgORvyKvunhYtlOWhTm3y8vfyW+aBts/eDpQHbX0GGHnXMPxyn8HxxS7vcOWP31eYPRK7YNyBk9L2qURXgNUiwoWTxdQzvUrFDTAo1hxrnz//fdhMpnAs2fPoKoq/1FNypkHsHdaaUbpNvOYZmzTcNF1cjwew8nJCSwWC7i6uvIfrvEPjLU6WY9M7RMkeUuak+k7nf9oGDd40TC6uw9x3pQhrg/om1ZNZ5NOkOFrDu8H2pYav7alP2avkeQGLHc4HMLDhw+9Xvfll1/C5eWl/0gTT3jR1lOJZom/Yuk13qa6QRe9XqJDkw0k+ngampfqApLsR/NpbSfponhk4KNHj6AsS7i4uIgeB2yxA1hB0kNjeHGtwP6S5GCNHku/0rmZy5+0DKt9g6eRxmJML6DA82o0xPQNq+7J06bsNxLOWLtL+r2Fp2LtfKi1I4d/ugDV4aU4K2hzEI2LQeoamxgvWHgmRrMUluLN1ByaC7kf0XC7SBs5Jnfesuj1bSGnD2N0WOdErexUPitfptaHWB5eDr5b51FrH2lrKq55h4DYfEvLp0CvcUOYTCbiqbXHx8dQliWsViuxbG2uu9XLKNsMrNQEFQtDyBWa2gJdmJG5iqLwx9R0hTdJgfsWDgPSAnJTQtQhQFvQrWPWquxZwdKGkhJtUS4kWvC9qqrGHEGFHr5TNEV3Sjmn9MeE2r4gNvenFnatbjmGAgteGp4ylnAYDocwm80Cxd45553s3CCXA7lrJv/S1OJcxLWLfzVvpY+ud5QG2oYxwxO/x4T+3mw2MBgMYDKZgHPp+50pXmz7mDP2yZMn4JyDL7/8EgDy7nvmdFiVQW5EtBqtY/xI7wLTDG6aIExxWu9adc75eWmxWGTddczrww1CuTwvGZJ4Wbxc+t6nwmc1yuBvycio4aQGPa1srmDxd9qnqbXMKlu40sHq+QqgBpg9mW3veR0V26OIC/DHCbva+R2w2wLAO1CLugiPLAYIjyeud87SgeKQdRAcU1y4vTNYJ3xXdsGOKUaepA5ZpBfzsOOLxeOMHWbb1cewpbLhSCV4AEhfOPYupI06Yclu10YaFk/jnGuGN57EQRo4Ysmz8Zs4ZX0Z2jHFtY4v1qZmhzeNJ3WolhUsvlyo5Yhl73AOh0MYj8dQliU45+DJkydwdHQEX331FVRVBdPpVP1oV5qnpHHbly4g4ebzAl3rh8MhnJ2d+XWHX9VAaedzb2yNaTsvc37U8Frl5pSsqNHK2+lQhsUuoOkCh9QnpTZDeVlKp+XlcpRFx7CMEd6vNA+X8QFCQ/VgMIB79+4FJ5YAgHfGoryr4dfojYGmR/MwKt9L/JgqN6VD8HfrfCTxHW9bDJPkpxid2CeTyQSm0yk8fvwYlsslzOdzKMsyMJZyfszdtcfLlozalrZAnR8gfvdiroMg1qe5uFKgrR8xHpPWsFj5sXa16mIaHRLOVL5YXF9rcxs8OX3Yt71MyqPJEm3p0OiK6XeWtd2SPqXv5UBOGRwkuaoP0OwD2n3pVpzSb8saxvP0AdY5UOOJVFibvmgzb2ltqc25lrWUQ65sIuWX+JvaSK1zviUuJhdKc48khwLs5Teefzqd+uvVaDjiynbGWoTY24bcxec2FR8uyFnSfwtvPsQG/ptc1iHBughoEBjwWubPpcF6v5GlbE57XddwfX3tFwQ8clS6j5EbByyAda3rOnAA0+MzpTwW6MKTVOnG+Zsbs6SPWrDMlDEsBlq6sixhNpvBeDwWHaq4IwT7COPxqF1JMee/8V2j6yYAeSnWXjljBPFQ3pQER9xRPJ1O4Uc/+hH89Kc/DdIsl0v4T//pP8H5+TksFgsYDocwnU6hqirTPbz8K/vhcAjz+RzOz88BYPu1Wx9tnNMutD3wC/jpdAoA4J2avC9SfYNAjfnUAW0xYHL8NC3nDzS206Pe2ox9xM95ixtDJIE5lUYqh/+W8vYpi+UYD2MfTXCjgrRLHP/pMeypMZviC1pu6qhAAIDyqoSLX1/A0XtHcPSdIyiggMLt8DjYOisxOT4H7AkQOj/xOQB/T2xR7ByfBfj/oij8bswt+t3O1QK2u2qRT3c7bH15BYT3xu5w4zHFGMbpQUcwhqGjT1TGBe+ddIctydB492mdki6VBuNZ+/v+c7s05L3xG18txxPjE9NqO2JpOD+mmBxLjLiCf5KG1080qNKfbr+LltZNqkO1quDqH66gWlTNvjECzvV4//m9e/fg9PTUj9e2X4b3MV/FDHjSXEDnC3Ro5Ojc0k7YPmUdaX3DMH5SQI5xh9ZdOsZVWksxHX4Yxtf1uwDoQKeQoq1tf0lyIC8rZjuJraEaXbn6HR2PEl7URaQ5pqoqeP36NUynUzg6OgrSaKcfWeik4zBWx5ixFWmXyraCNCakNHVdN4yXKaDtLsl8Uvkx2iiezWYDo9EITk9PYTqdwmKxgMvLS3jx4gUMh0PP/5ItQfuYUyo7ZkuV5HicQ7Hu/GQgrR26Qmq9SemkbfhHm09TpwZqOoY2j3axQ2i0tknbx1z0tkGOnKDl5xCbM6XdbDHQeDRVlhW/hpfi5jyi8ZG0u91CY4pODV8qT58y3KFwdoE2skcMF82rAT8eN3bKqpVW6xiyzlXamM6xi/UFKftKW8BTDiX5AACyZZ1k6raTTtvF5VCDzYrzUApHDHduW6XS37UJKxdy6Y+l58r3TbfLocrrurjm4L6pdssRHKzCRpd5KCc/GpOs/YJtalGunAvvlx6NRt74rtFiAantYuMoJw0P50aqFC7JyIDKqYUXUzxLFciYgQ0BlWLsZ6qo0zIHg4F3pFFAZ6GlryWnGaU5F9oqybRtpDbiaXJxc/pQyJxMJnD//n34wQ9+AP/8n//zIN3V1RX89//+3+Hy8tIbLNDpbRWA0TCEZa7Xa+/0xPjc8U9xW2iQAPl7MBjA6ekpFMX2WDt6kgaXsSRDSGz+1pQ6qb6akVgqE/shNR9b2oXyllYvGq/NLZZyrPTwci0g9QPFkYM3ZbDFMcDvkOMfCMXGa876FaMP0xTF9rji1YsVjE5GMKtmUFe7UwGoQw5gu7vV7Xai7nbN+h2xxd6p5u9zBfDOMbozdhsc7pLFcopi7+zEXbV+B27h9kcawx5/4zhi0J2mPDy2+1W6KzbmiA3ieDLH8rtmXJDOCbgcCVfS0Xjntv1BaaNhsR2wmEeLk35rafh/cFdsDBjdvO6NNqdZnYO6qmH9ag31pt39iABNR8N4PG71MVAferc2b0syAA3jshKurfSpQWqd4mV1Bc1owsvj9FlokOZkxCHJfJyWPvrQAjF9w6pLHaJvpPaXaInpC5ie82yqz3k/aO8ol0s7J50Ld7dSHHVdw3w+9w5u6YOp2PovtbMkQ0t0p9orFZcqxwq8njm6vmQ0tdIQawO6ax8AYDabwWKxEMdmSi6O1cci2/F4PM0mZuyN6WYpiM1PEo4UTq1P+5y7Uzj5upQaM5iub1o5Pm1us+JIzYk5oMnuKX7Ixd9FD4udBCLxQZf25Xn5+sGBl4m/rfKBlM5Kd47ufEiIzXmxeVPK27b8LvlTuBHa9gudrzV7i9Q20pot2ShQb7CMNam9Y2uJVB9OnwY5awQtV8vH56UY3jY8oeWJjX0+T8VOLqL2sP+PvT95kiXL7sLxj4fHnMObX1V1TT3IqO4GCROg/skwkGHY19ggVmzZsOVP4M8BY4dhxoIlBlJL3UJq0d2oh2pVV5VqenO+nGKe/LeIPJ7HT5xzB3ePzMhX76SlRYT7Hc6999wz3oHyu9oRfUzxNie7SzHQFDLX6qmqk12DuhkI9WUVBh1SzzaZVyyE4BIyOUPSy3e70gca1KUE1QGWANkVOgpRHi1hGNIGn7Di4BNyPmOY8NMuAweQH2P1xRdfIE3T3FmXJAnOzs4Kq9dDV0hpuLTbbfT7fdy/fz9/fnJyguFwiNFoVLiYPGbFT6ysICEWk96nOIeAy6ClsSFeTUcNUz4y6sl4Bi6NaRorekdKlLYiPkThqANiHBlljtKjNvOdBNJZJdPTkYyj0Qj379/HP/tn/wx/+Id/iH/5L/9lnq7RaOD8/Bx/+Zd/id/85jf49a9/Hd0mzjdo9zIFdj/77DMcHBxgMBhgOp0W8OZ5Q4DzGeseZl4ercSfTqdIkgR/8Ad/gNu3b+Ojjz7C0dER/vZv/xaNRgN7e3uYzWaYzWZe3sJ1C14npyW56p7GnOhdKp80/3m/cKCjWfj4c17HDYn5fF7Az+ewojHT+lK23ZVGvpN94oK6ZLRGA3IHswysWmUlSYK9vb28XLqvxHLWWffKckeEy3AIOaqP+Djhs5qvsBgv0LwwOZIkQZKuA61J44I+GglWWOW/kaGwW3XjMxO/Hf8J2DHDCS53vl58Jkgud8iKvHJ3rLVLlo4kzoOw4jePv4YcT5z3Qehz9qwwdtlmmvx95nhOAUntO0uXZeJ56Ke8G5bvds2K37V7YbMsQ7Zku2Ev/i+bmhXxBquf74BV+majrfxzlQFLFMazDCyXS0wmk1wuPn/+HIPBIN9h5zqiVR5jX5deHsIHpf4t9es0TbFYLPDy5UvMZrPCwjXitVJP1XanhrYp1i6R6TVbQfocpO4i5SlvA72XMkvybH4XOz9Rgpdfdz/4ZCyXhVI34O2tg94sO8uy2WP0ZZ5Xylr+aTnStLJbrdaGXCM6IX2fgMptt9tYrVb4+OOP82PJ5/M5Op1OXgbvdx/4fB28/3y2URmbItaWpnSUj3RIWkzsu66rDJ1Z7eK0m2VZfizxkydPkCQJptNpjg/ZdHRygTU+Lv+DpuPx35z+NHz5ncka74m1eSwI0aFdZcu+8dGVnMcaDj49n0OZEwe35cfidC5liWsuXidY/NYFnH9U9Q9a8yPGT1FF7mlA9KfZSlLnkb4OFz1aC0u0NpehiyqyOaQfY/i/xD/Wvt7WHL1K4LQgN5Jo/RGSRgJdDWX510LKiuGLPr+Tq0yXTibnDekKITtY69JHXX4Pqx4NvxDfnIToY4p972JAY8Iux5Mk0hii3abA8znLtN++5753MXl2iamFGINl8saWdZUQK4TKQgiNlRGQshyrnpiyfHMmdqx5vlhmqr0vwy9ClJOY+ckVq8lkUtgBSM46F08MBRJ4tCORjtyaTCaYz+eYTCZqnhhDPwY3njdESYhtc6yyI/Nqx9FZ/zKN/C7x0BT9MnjWCdoYxPA0zXnADVSucNFK9du3b+POnTu4e/duITjV7Xbx8OFDvHjxopA/lgZ4PnJ4vHjxAuPxGMPhMA+K8rRlwMUrOT/lTiIAuHXrFu7fv4+XL19uOKw0B4hVh6veENDGjpyPWlrXkXeEM3du8WB/GXx9OmOIo0mbb7F4+EDOnapGtyyTAh6080YrX+sra5w0Y8nC1dXX1NblfInFaIEkXQdh892vKxR2SSYrdjRwdhkQS5Cs09IdrAkujynONnfC5m1nu2TX2ZLCs8Ju2kzZ8ZpdtIPeiztgC7thWVr1vey3kGheXrRShnzk+s0CjYV3xvO87y+e+QKxfKxkEFSmUfOwZzyfmSbLirtgs802mW3U+iZjdKj1JWtvskiAhZEmAPh84XyUrqLQdIEQHhX63soT45BxzXX6Tsd48TyhelxMG0LLDPURuPCsYhfwcmmBH1/Ap0Fd/RAqv1xySdM7fPaWC09rsZFVnqyrDM36bFhZHx83qadSGtKHpJzl+cfjMZLk8hoHnsc3bhpesk2Svnhal50WAlVsD84TeFm+MmU7YvUvbd7L/GTnDgYDNBqNwgk0Fo5VfXLaeMk+4mldgR1LJrh0vKq2b1U71IWbNU4u2efCJwTfqnMjtNyqc6guiOGXLtD4aFW54Mpr2YZWHvmujK1MebU0Fj+SdryrTMkDfLiEgs9nVEVml6VrV74y9r1FxxqeoXw8pp6yIH1KFm78naUjxYxhDA8t03eu5zKNJQN8Yx1aVxUZF5Jek+dVyiOI3hkbCi4GuI0O4mljVkpVdbDF4BZaV13KkwVSOa6L0VSFOvC4yvbsUt/FQJ3KXUyd2+qrugWmqw5ZT4yB72Pa3CnD76yRMJ/PMRwOg8r1AV+R3+v18O677+L4+BhPnjxBr9dDp9PBZDLBbDbL87juMqyKTyxoDhoOku6095oywu8wkzuO+Wp2iQuAPEiu3XmrAcch1sG0bSgzb+VdaFoZnU4H7Xa7cPw2AXdWzWaznA6B9VFiH3zwARaLBf7P//k/WK1W+S6D0PYQkCOUdhL+8Ic/BIA8OMvv/I0FjUfEjCvdhfvNb34TzWYTP/nJTzCbzbBYLNBut9HpdPK7+ULLJFz4J6dLzXHG+VKz2cx358/n88JiEOpL2j1i9QntDqHjobPs8lhuqy2+fqvbUJJ11+G4kDwzJGhN/e8z7KlsuoOSdnXI0xYsh5/GH+tyRFJZ0xdTzE/m2P/WPnoPe0ACNJoXPKJxEeRsYL0zNkvyzzzIRlVrnxnWO2iTzf8kYccRI9m4Vzb/x2U9hR2wSbLxGyimKfQbLuviv9eoir5P3LylcCSz2bn8qxJIlIFJsLFl7/ju0Y2ALH+fFfNvpFkpnxdpNj4j7oxdLVd5Hnou/wttkX3C+kM7nrjQJmy2L8dlCaRHKbJhhvl0jmyVbRxHZQ6VmGukV5Cu9+WXXyLLspzHSrlozV+XY2ebQPX1ej00Go38qH+uB/H+DXGIhjg3Yu1on7PHqkcrS3u3QUMsj8Vv6f7Q0WiU69bbHL8Y55WUt4SzlCVlgU4k2d/fz+9TtYDqtvwVlsy29ButXF9bSD+R5dKuSb7LU/YlPWu32/lz2slC9t1isfAuSguBbfiKOPD5yf99c4X0viRJ8gUadEoQ9Z3PZ6fZWi4dxeXUpROLSL9//PhxnkbjuZp9pt1xLevR8Pa1S5ajHYldBUJozKVvy37X7IlY0OaqnOMhvoYYndWit7psiZCdvdv2V+2C/8AFPhxj+CG3p2J4n+Z7sOQL+YIkEH/gdhiVzXHhNEGyg9Jx/1qd4OLNZcCyza8SytRp6Ww+/utLUxZIn5I8XktHctMnI0mvqAJ16B5lwcK9Ko3F4OaSJ7FtjMXbDMZaBfkcQ75noUaZVoZLwQrBrwq4mHRofplPc7RZCp5WZx0Tp45JtEuCX+vnqmWFvL8OoeSDup3UVdtYhbn5aH8bOFoKdN3zRwPNGKFji7jxXvWYOsmDuJJIRyJzJZMf2esqM7RtMfml89RloGkGnqu8WNAUNaqXH0/M67FoOLQvY4z8MhDbFyF4yzSchrhDh9KSwTMejwvHhjUaDZyenuLs7Ay9Xg8HBwc5HYbeI+zDlYKD/DjeWOPORWvaMx4wWy6XuHfvHvb39/OjHtM0Rb/fx3vvvZcHY6fTaW68+eaiDxeNl7l4qRwzCfLu7BC+HDp2IfJ4W8ZnmXKsvnU5guR8l2OlvU+SJA/Ayn4PoV/N0SzH0Hqv8TXJ94B1EG01X2ExWGDWmaHT6KzLWF6+B7C+t5WXwYKZWOHybtmLQGW+y5XuhG0Ud71qO2KpXN/dr/kn3xGb4TKwy8vOsssgbIZCoNW8OzbzOAOKkVYb5Lts87sWbAUug42FtBlra1b8vfFdpLE+C7tXWd6cRpTy5PPCs1VWLFNp98bxxKwftL7NsqyYhwVtkQGNRQONZQN3D+9i2V5icDrI9bEQ8DkeqRztPnoLfDpBiBPbeubi4XxuN5tNNJvN/L5Fl11E7118idLwtFUhROeUekiIfsnzc34Y0gcUhJc7K68bZPu4zK/ic+A8IUnWAenlcol2u50vLPPVY8kaKtdqg5ZXo28p40heu+aZtrDKpxvLeaLZEVadmu0RAnXZyBq4cMqyDN1uF+12G71eDwDyU5foLl1aPJamqRnwkOVrdFoGbz6+Gg2V1V1dtgDnEXJuuHD12RexfWDp+L76rLrL0FYMb5Z1lqmjbB+H1BEjMzhekieE4uvCxQV12GNlyw8BjSfLd5YcjsUnxD6idL5xkTzWJa9cz3xg9U8VGV2mbh+E9G1V342vzS58LTlcho7KgNV+WQ8tWuLvk2Ttm+U2SFU+GQoxYxaDQ934x+Dpm7vaMx/txfDZ4J2xVzXBrc4rcxeiBmVXLJVlGi6D0rqvpA5heJVw0/B9Da8eVFGirfJ8sG26l4ofGa91lEt8kO9ekE7Fvb099Pt9fPHFFwDWuxL5aj7Xiq6y4Ot34pmxK6lj6/GBJpRJMNOxzrwOq69czgTpINw2hCryoWn4GFFbuEOG6uT3XdCdWo8ePcLLly8xHo/z4OSHH36Ix48fY39/Hw8ePMidmHwBQZk202ensw4QTSYT1WFWF3Blr9VqodfrYTAYYDQa4V/9q3+F7373uxgOhzg/P0eSJLh79y7+7b/9t5hMJjg9PcXPf/5z/PznP8fe3h7a7TYmk4lzPnCdwnLyURCVnGHyGD6iDS3gx9vlCkxwhxM3Jny636sA8mhmcjxzoP7Q7iuyDDY6Wm8wGBTGju/Wo7Er47x18ST5THNSy/Tjx2NMnk1w+/u30b7bBhKgsWqA7o5tJA2sN1Sud8Ym2UXehNWVJSjcGct3xRKwZ0mSFI831v7lO/k7Kz6no5QBbNwhS32X9w+MvqdyY8HKk/m/53OfBTA3ArVaIJMFPel3/hzIg+kb79h3cyesfM93v1I6ZUdsvmOWt0O0jbc5rwcCD4HvRpszACugfd5Gb9XDP/n//ROkaYpms4mTkxN89dVXlexTwoNOFfDd/cTzEVwH7yS8+/0+2u02zs7OVMepdJhlWXERkpQr9KzuNvmCIzH1a05ZagPnvS7nPNHQcrnMTwi5bhmoObpj7m/0lQms5RrtjKWxH41GODs7y/vOd/oOB6Il6n9N7vBAn3bnuVYPv9t+tVrlJ3rQmNEuTzophxbGyfIlrfCTK2LHW94VLXEPCeJoer4cI5rbXNeTY8LTSByobaTr3L9/Hw8fPsQf/MEfoNfr4dNPP8Xjx4/xox/9KNdzSBfmizAl8HG1giRae11902w2N3RXWiRB4ynnAI2rVmbomMp+ItrQyqjL/pM8rkp+7V0I/cXWE8qXrblcJ0/V2iftdDkXaJwlb9BgG36s65YpIcD5SAxfDAlkxQZLygaadqGvQ+dcqK/nOiCWh4TowZZ/qKof0QJ5nYEGhDc/AdHiEbdu3UKzWQzX0Qk6JycnODo6KoUngavPq/ggt30CwasEhdGNVeo4uAydULAUEPlZFmKVOB9oiqgsXz7jea13IYrYrjLSXYC6hOJN7+MqSqlUMLcBcg648I0VylY5oWVZOGpOZ199VdNKp0KZenh+K7jCHfn9fj93DpZx4of2cWy6uow9H/B6NENL6xMe2JJygX7H0o4l+65K8a8i1+UuSSqPnA/aEUHtdhuz2QyfffYZHj16hKOjI/R6PbTbbRwdHeGrr77CZ599hsePH+fHCdNO8SpAjhAfH4oBre3ae04rdIQbOXVv376d79AdDof49NNPMRwOsbe3l99zpekgvF0aPiG8XdI9jRs/HlmW4TOMyDkX6hTi+G7TyeKCWCebzEffuSNX00WtfBovkr/5HODOQ467xTs5/fhsAI0/WQ4R0wm6AlaLFVazFRrNxjrwurzoh4udsoXAKguKJgkLema43BXbuNjFuro4Tji7CAI1Lj8BbO6OpcAuq6+wK1bsenXttOU7XXme/H3enGKglkPMPbLOZ1pwkn3Px1kLXGppsuJvSld4to6ir4FipDIAK/Nm2Lg3OMsug61WwLZQt9IP+a5Wow+c8isrtpnwGQ1GWC6W+RGzh4eHmM/nuTMlVgZpPM1yDtat62hyoIzNz2W5FURz6RDyZBefrXvVThyrf1xjQmld75fLZeGUm10BjZ9rz2JtQy5/ms1mvujO5T+xypGyi3YYk97Nj3zkZcmjLC0bl+iY6/E0Zrxe/t2nZ2l4a3Tts2H5SSgu2at9t+hXk9M+oLolz+D/PKiyWCwwn8/R7XZxeHiIt99+G/v7+1itVnj69Cl++9vfFviHBUmSFJzXobqkS9+i5z7b2hrLkHpd712O+7r5nYW3Ned9/FjmDbFDNJ2e01JInRJcPp4YHqXlkbRjjX+WZYVrnyTP0PKG2m0uCLHhtg1V9BPXeGu05vNJyHHcZh9U8S2WrUeTmWXK8ckOK19sfS5+EepPraIDhuourr6x5ruPHkPoQ8NPLogHNgPKVHen08HBwUG+kG08Hgct5LbAag8fh1A6ccmQuuZlTDlV56uPX8fqUBwq3xnrqrwOIRGiWIbUVcfAcwLyHSu0LaYcAtsSQFXL9eUvW75mKO8qbGNs6qbtusqsUv8267lqkEZ/FcWGr47Ksrj7sYHiXbSUn8qgXVbtdht37tzJ0/D6XEryVfQtN/brABfeIUqJBuQgiDEqLRm1jT510WCdc5Dv9JB0SkFHDo1GA+12G+PxGD/96U/x9ttv4/PPP8+DsV988QV+/etf47/9t/+WrwSk+0tdO499Mof6OGYu+cp1OXPknKKdEsD6+LbBYIBGo4FOp4P3338fjUYDg8EAH330Ef7sz/4Mh4eHuHfvHk5PT/NdvD6Q9EWKPd1pJp3oXPHnfasF0S2QfUT5+HPJF13KboiTuA5wGVGx9XF+mWVZvruGds8TaI6gkHGle8/4sdWWY8syQq3xDMVDyjcOhIt8vpwusZgskDST9d2xjSQPjDayC9qjoBiwufuVf8rvriFiaZLkIrjauKhHPudp6ahi/p3yZJdtzbIsrz/JWDkZC8zyI49ztC7exWyV1ZJm+ve8/2VQ0rUrVrzPMvaclbfx3Pq0dsJmlwFPvjNW7ojlefiO2LzfOJ7KpwzCFnDhbYDAfZkhW2R4efQSjUkD3W4Xt2/fxoMHD/J7ssvoYsCmg8NyEJUJmJSFGHmSJEkeWORXWIQ4nfhzCn5p9ZflvTx/TBkhfU18V9vBp+nJ8nM2myFJktqCsVVta5/szbLq10HQOPf7faRpmt8xTH0gF4qGyB3gcocIzUF5Fz2l5fczuxaxEV2TPURAwXPNJ2XNW/49NBDDcZC0S8+4ozbUUS/vOeX4hNgDsq2aDkf1yGtISK9tt9u4desW7t+/jyRJ8Id/+If48Y9/nAdjfb66JEk2dp6HHPEdoitSuZozXDrCOZ+rYqPxEwJc+Grzs6wu6svLdfGqzmsXDqHt8dWpBQAA/T7QqsBpno8J2XC0iJ3qHw6HG/OXL/LYZV/lVYBFA3X6d/inLNuiHVdZGs+0bNMQvcM3D1xzMKaftkFrIX6/kHqtuaCNW2g7QvqmzDVPVLYLH+udVpfF6/nRwy4c+/0++v1+XtbTp0/zjQpAcedtVbDmEX8WM6dC66yLH1SFUDzK8PbKwVjAP0Da8212rrW6rk5G71IcNOZaxuAKdYaF4lYV6phU2yj/Jik014mrz/irCiF84DohBKdt4O1S2kLAEnqxDF8a8lRGq9XCw4cPcfv2bQwGgzxQdnx8jLOzMwyHw+DyLXyvAmIU3hDgCnWMEI55H2KAVjXCJcQ4JGPTqc5u8Z4Hq7X+oqDs0dER/vqv/xqPHj3C4eEh/vRP/xSffPJJvmCAgoSTycQ81szXjrK06jMctGfSCCcHNB0znCQJnj59iizLMBgMsLe3h+985zvY39/H4eEher1enp/vRLKOtaT33HHE56imX7hW50sDQ6NLn8OHHHWyfi1fDL+uU2GX9bdaLbTbbUynU8znc6/DUAO+S5wcxTH4ugw/lzPWZSjy31qbLJqSczfUicb56fTlFMvJEo20AXSBJE3QyBrIkgyrdLU+rjivlBXSYM9E8DVJLu6MvQiCJsl61ywSrHdqJrjc3ZqxvCtWB3tOu2KT5DL4miSXAVbpbMmyrBB45UHXPB/VIfrNF4Td2DGb8a/ZxrPgoGymPGcByfydfJ6J5zSXV8onS5tlmb3blZ7zoKwRjC12BcPV6keOI6t7ox9EcDpbZZifzjE/m2M5WQIr4MmTJxiNRjg9PcVoNAo+VtgCTcewdEbOm+rgeVX4J+EyHo8LwVR6J8uUdfkcpDw4U1Z/42WGliEduC7928rry7NarfLjb2OdjC6cy77XcJB9Ric6xBwhzMuiANdwONw4ppoWhRHwo/p9Tk/+3po3IfKK56OALYA8wEJlTKfTXIbz/kiSpLCwTsOVf0o85fywdDStbdZcc+Gh1W3hGaKTyXnDr74YDodYLpf4kz/5E9y5cwfvv/8+er0ebt++jeFwmPfdbDbz+srkcd5l7D6Xw1jjiZJfSVrT7g120aKFm6Xf+XQ6rbwyerSrfF/eqrZWWRu7DO4uPdolW6055pLd9M+vJwm1Hy2oy9YJKTvUX1B2/Kz3kp+E4MA/y+oMLnqK7RuJi5SnIXmrQh3lhMqWMvW55I1VbgyvcemBPvkQQqtykVMVsMqgK+M49Hq9fNMMwWq1wsnJyYbPlvSUsnNDmweh8ku+c/V/iH5RBlwy1wdl5WhsnYVgrNXYMsaQld4n4LS6ywxCiGMpBA9XOdpdKrHtC1WMX8PVgVS8dxHK4lfHPK67b1yGUQy4xq3sPApVRLcJLp4SY4gQH5c7ENrtNt5++200m02cn5/n6Z88eYInT554cQmFMoI21JiuApaTx6W4ufLwNJZMsMrQyiybt24owzu0/uAONm1VO+0KPTo6wk9/+lN8+OGHaLVa+PM//3M8ffoUe3t76HQ6mE6nAJDvMqyiJ4QYWaFKmeZcA1Bw1HFnI/VBo9HAs2fPcH5+jq+++gqHh4f4N//m3yBNU+zt7aHb7RbmMCnYfLcGd3STw5Mci9oxfQQuHhNiBGk83Eor7xKWdZU17LcxJ7JsvVjl4OAgv9uP796RYI09jZe8z046HjXDUZtHPoevxEd7JyFkt4d0FMc6QrMsAzJg+nKK+fkc7TttoIH1ccXZ6vI4Ybl7VBbFArFJgwVdL97lxxU3knVQjYK0tLs1UYKy9E/1id95HsA+vvhid691bDHl3eifhH9VZAsPEm6+VH9v5GHf87ozlj4r9jmNlfzN0xWeZfqz/NO6M5Y/X4l39L/arEe2Md/RygPG/JloU+EZ7wuGY7bKMD+ZY/JkgtVshSRN8OTJE5yfn+fBWC7D6rAdQngs5/PyfVWbMSbwAmBjlz+9t8rx9ZEmO6r2aVknqvXOWrTkogMuE2hHKM9b1/jVBRx/CiTI3bEhsprLOr5zFUB+dD99p7T0nXRFjd61enx96AqESNlL6WjnCR21S7vd6JQL0rGkfRUje334UBm8fyz9zVeXy04JxTNE36N+SNMUo9EIg8EAP/zhD9Hv9/GDH/wA9+7dw/vvv4/BYJDPCQp0W/Vx3ZfAtTggRo900bLUTzlOWlBFpnHVG2JXWu94v7js1bLgqjsmf0i6kL4KAaufLP+qpN3YfrTmaZIk+QkK9Hy5XKLZbBZodlf4/XVDrIyWoPEki5e4+jx0vGPx4zqDdm95XfZrqI0eC6Fynn8vS9suGVAGt9h0MXld+ol8pvlpfHglSYJ+v4/Dw8PC88PDQ7zzzjt5GmAti37zm98UyiO9zXcFAK9PtiGU5kP4eBXaCPUN1clTY/QKS+cPgaCdsbEOMgtC8ocwDMtYCzUeXRBqOIaW5yI8SeTbcCa+hnh4PQ5rqDLf6+AXZcA1X68anzocc1qZrrpiBR3dYfjJJ59s4DoajfIjLqQDqophdFMgVFkiKNPWEOdRVYN4l4CceuTA5jS1XC4xGo3y30dHR/kuiiRJMJvNsLe3V3knkg+se++40cQNbAuks2Zvby932i0Wi7yt3AlJjkrqp5cvX6LdbqPT6aDZbKLb7WK1WmEwGBTmfJZlhWAaOTnpfrbRaJTv6tTapOFN7XMpmFJ/4Y5XVx28LmmY8v4PPRZZc6pUpZF2u41+v487d+7g3r17mM/nOD8/LzheQ4HSS2ejxmMsh5zL0JPtDpE9ZKA1m82c3mT5HH9Oa9IhGgO58brMMPpyhLSfYv+9fTTaDSABGquLnUZZst4xi0YecMsDZnyHLP2m74nymz4pEEtBWVx+5+/k87wu/h0sQMufZ8p3lkf9nbEgrWeXbN4PrmdKsLKQJhPvKH2WbX5Xfm8c5cvfZfo717HE+U7YbDNQS/+FYOllAzfbKZ4VeDWr39UmCsLOXswwPV3viG+1WkjTFL/61a/QaDQwHo8xn8/zuy9joYp+eB26dVUdmrfVtZtgW22Lcdi5gjNcJoU6uIBNGSnLpDTXAVo7SfdfLBa5nJC8P8Yx1uv10Ol08P3vfx+dTgdffvklzs/P8ejRIzQaDbRaLSyXSywWC3Q6HbTb7fwuWC43uSOTdCmu/1AajcbkTlstACDH4Pbt27h37x729/cxm83wV3/1V5jNZoWdsVJviRlHTZfk/Sz1TS7zQ04ykc+1ciQuMl+Mv4vw5WXxBWzz+Ry//vWv0el08Ktf/QqDwSA/2jUEfPNTa4fPSarp9lrf++a7L42sVy6Mdh3z7oIyvJlotkx9dUOIkz8EpM4amkem5XdGy7Jd5dLR69/+9rdxcHCAN998M6eHzz77DB9++GHhih5JXzF+lSS5vLaK53Ptzt8m1Gl7hYI2PhJi/PexfKUs+PhTKGhxkCrgartrfLfp56yjTVq5VXCS5ZYBn1+E+16fPn2Kk5MTHB4eFuTL6ekput0uut1uVH0W39+W/nnTynWBxaer4hIcjOWfPkalvbfeSYWH1xOCEy+/amfEMOCyhmmI8JDPY4TMa/j6QYzSGQp1KB11zBEqZ1cg1jAlsNrkYuohfIAb5DLQwoUGd2BQWVmW5c6OFy9ebJTN75fleUJA4uJqhzSA64BtKc3bghB6kN/rgBi6tPJo+a13WZYVgrGyPFrF12w2MRwOcXx8nNPdwcEB2u12vhupDnDxGvmd9w2fTz4aIfzJwZgkCabTKc7Pzzd2mpCRTs644XCYtzdJktxhOZvNkKbpxh2hUuFO0xTNZtOcYz56sniKxds0R1xIPRy4scH7OIRH1OkQSNMUvV4P+/v7uHPnDh49euR0qHN8LdCOOa6iu7ryav0lxypNU3S73TygpN3bGNLfls4v500hXQbMTmZIpymWD5frQGyzgQwZskaWByvzXbIs4JmsLspsrANofCcs3xlJQVvavSp3sVLg9RIlkYYfVYzMDJgWdrsmm4FVWQe1vzA2niBsXoZIVvWY4kJ/yTRZ8XeWXaaVAVlfIJZ/5+XJtDIQu5HHEYgtyBSWNn9e6IzNMnIclsBqtMLsxQyL+aJw3+STJ08KzlTJg6vCNhxRrvlZpjz5LMRGpkAF6awh/FnrizJ8neeV8sWFr6W7akelWo57+s6Ps5VQt/4bAxbeUt+hhZtlghTAeuFnr9fD3/t7fw97e3vIsgzPnj3DV199BWAtb6n8NE3zAB2dSMGB6zv8tAmfr4r0zxjodrs4ODjAw4cPc71L9lHZ+e/ylRGE6uQcl23YLWXmn6QNGq+nT5/maWjBIOA+KYTyu/yM8nmMb8Tqvzr604WrvJtW4411+0TkeMTm03ByQZX+i82r0ZxPjsj3mo7Ov8v+p9+LxQJpmuLWrVt48OABvv/97xcCpl988UV+tQGvy4WLVg991+6D5DRlgcvPIPunin2igUv++WSJC48Qv0SV8l31WeWH8HfpR3D1TxncY+ePS5/j+LqgjG7nktmhPHhbfFLzafiuw3SBph/KMvjcPj8/x2g0QqvVyvnJZDLBaDTKT5Lj5YaAr099fNKVp2yaEHyuQ0cOBU328Ocu8AZj62x4SEeHQIxBGIJTWSXawiMkL4cyd7DUAXUJ2TqFdUxZdSsJNx1e98f1Q+gY8HQhilas0JR5+TtLieBHhm0bXErTq0LHV83P64CYvg81CqSjjDv0NGOU757lQHd2lr1/PcSAyLJMNXDpfcgzAums6/V66Ha76HQ6GAwG+QII3n46TjjL1veoff7555jNZuh2uzg7O/PWw2G5XBYch/zILJezQb73Ob+A4k4nntfiNS4HMDns+c4cflyhD+o6Amw6neLZs2fY29tDu93GnTt3MJvNcHx8jNlspq5K135T24Di0X2W4i7zuRwVIc5nnpacb41GA91uF71eD/fv38f5+TmOjo7y975jkMs6n6XzOssyrKYrnH98jvZhG3vv7yFrXezuXjWQNC/SN5L1Tln6TNa7ZpNVAjSwPoY4SdaBtASbn9Zdswkud8I2LnfEJklSCP7ywHDebvY8/w39WQYH7cZ2YyZ/ZhvPnLthtWc8MJmxNFnxd5aJoCXlX11+AlgHUum5yLNxFLF1TDG7M1YNvCpB2Pw7axevf+MIY2onkfsKSKYJmi+bmJ5OMZvNAKzn63w+x2KxyFehE0+K2dW4a7qNC58Ym9pKS7yYePjh4WG+IIlOeJDBBx6wLQsunVq2WfI0F/+mxWL37t3DYrHA2dkZkqS4Q4na49MjNLy2SR+usrMsQ7vdLhyhSad00MkJ4/EYwOZiKR+QTKex/uY3v4m33noLt27dwscff4xf/vKXaLVaODw8xNnZGabT6cZiPSvgytPIcdToJ8T3kmVZQf8cDAZ4+fIl7t27l8vN5XKJ+Xye7zChI6djToyw6FD2HdFXo9FQ7xnmfSB1A1eZUifh/WGdbGLh63su53en0ynMNzl+ZfW2bdtcrh39km+FyoMsKy4Qkbq37Bt6XqWfXBBiJ+2SDLMgpo/4Ag1uMxEkSaIu4iBdud/vo91uA0C+kJiu06Hn9+7dw7e//W18+umnOD8/R7PZVGVEqAOfFtsSHlXBJx+0d8QrLRuOp4vFxVVnmbJ4XskDJdDpRwTS/rR4blmoeu9onf53l/5TBSSNxpRp6Uwh+erqG0sOxuLDP62yQsofjUb44osvcOfOnYL+0Wg00Ov1NuoNOUXD5WOwdKcQCKXvUJ+iC8rIRBff09KWPTnBBUGe9xgnZF0d4WMIGoFYzN+Hf50KTYhyvW2FMRS2waSusqxdVAivW1HdJm2FMFLNqc8hBL8QI9WXv870IcaJ9js2nyudS3hLAy2kPAlcieZ11klPmiKiQdX5UxZnyznmSmOVUQaHq5QLrrp8dBTi8HGVzf+1/JrzzVImQ6HsXLSctmVxSNMU7XYbrVarMOd4m6mdq9UKL1++RKPRwK1bt3BycmLiqjlpqDzZj6FtkA4hDegddyzIsZLlSCecVbfPYKZ0Ln5G9ZYBcsjO53Msl0u0Wi30+30Mh0Pv7hqfU8MaB2s++MqV76V+azkPaee0dApZ/eoy1iwnJJVlOnVXGRaDBRppA8vZxY6Bxjo4iiXynbFJkuRBzaxxEfhrAPnO2MZlcA4Z1jtfKcC6utzdCqCwU3adPLvcXSt20W7slOX5ss1yqTz+2/cs7xdHZFbdAXv5Uv2tHd9LeOfPZECTByu175n4DuMzE5/sHlitnPwoYnFfrHc3LGtYIT3LV8ivtefiXYoUyTJBMkmQzYpHhfLvIfcra1BGHw5NG2OnaxCqO0qZGBt0oOPzl8ulU3e1+LdlH1TVG0N0GXrf6XRyGuDyjGQ8lac58a/KRnTxXJlOjg1wGYwlxxPJwE6nk8vEGKB7cmmn6RtvvIHj4+O8n+ikD44Xx5vLTpeuTu9CZKvVH1x/mU6nGI/H+d3IdLw/1amdJqHh76tTK4PjzgMcvGzZLqkv8P7in1wH095bOIaAS0flPJROZtKOenfpnFXxi9GTXHnkOxdOmi3J69TGjZ779MYqfF7DPaQfrDRWe3zg0olleaFg8YpQCG2L5Pvj8RjD4RCTyaSgF+/t7aHb7eYBWi4/QvC2+kbjCxLvsnaQq35gMyjDeZXkLxYeMfZGKK6u8l19ydug4SB1Plm2a15Y853jFDtOFg3EQKhcDOELdZXnylOVll3g42tVy3ad/qDpa1wOUNAVWC9wnE6nuU8JuNzIIHmK1GlCwNfHof3B8ZdyLbbsGBp36VIhMu+q9HSCQjDWtxqeg1z5YqXTwFox6iuLM8iQ/C58qkzm0AGy0sWsKKgT6iSuqybUXYEYgfQa1hBLK2WcQl8nsNpuOah8/CZJklyYXyVsY/w0Re26+V7Zun2KxzaV0lDjwoeHVMQI+P1eGtAKPzrCLE1TTCaTaAdgLGiGFTmOY4xICVmW5XfE7u/v5wEwCvDRziFyctL9bD/60Y/ydHSfGqDrXxwn4PKuN3KmcnqiftR4g3T6aQY1r2e5XOY7XWazGWazGR49epQ7by0cNYMZ2NyVwQ17V3spr3Qulp0jVP/JyQk++ugjdLtd3L17F3t7e5hOp/jss88wm81y3smPHrNAM/Ct/vXhxnVc2WZucFj9vFwuMR6P8ezZs3zXuctB4cOR+p6frsBxkc5F2ZbFbIHpyymae0200Ua2ytBoru+LTVbJOnhGwddGAqRYB+4aWb5jFhlAO2IzZJdHEV8cX5w0LvBP1v+FXbDUtKT4n+9qZWny4435e/EcKL67bLDZhRvHJl++sPMEBWJ5uky8o/RZ8VnBaM420/Hn8hn/5DtfkWHzjljld6Ec2SaJM4rp5LN8ly7hqgSWs1WGVtbCm9mbmK6meDZ/lvNk2iXB7y6n8i2d67pA8hUXVMXTZ19zfwLHK0nWx+1ru2dCdAme1gL5TlscJH+TTqLpGJyfJsn6lAvux+Dv33jjDezt7eHly5eYTqcFh3yIDKtLX40tg/SMvb09AOuj8WgnMJX18OFDfOtb38LHH3+Mx48f5+PocvQRv2+32+j1ejg/P8dwOMSbb76Jly9fIkmS/Cji1WqVX6sAbN5tFrIr19fHkhb5My6LSfc7OzvDeDzO74ml8bSc82UhZL7SP7+zONbxzU8eoZNY6B2/0sLS3UnOu47d9uFCTuRer7cx56jekN25dUOojskd3ly/kTwqFN+Q3bSW/cHfxzrIvy4+lBhewenbR3eUhk7NIDg9PcWTJ08K+jAtPnjvvffw1ltv4cMPP8Tx8TH29vYKO9Ln87mJJx9jjnuZu3/rGPtms4l79+4VTjEi/QhYnypAc91Xn+uEyFiZqPkvJA4yjexDyTNdNFSmLyVfkzhx3F1lVAVrx2osLnWCz/elvaviZ9P8IJJW+Px2laONaR36wWq1wrNnzzaeP3nypIA/LaJrt9sbJ124cJc4+9LEgPTtuMoMqSfG7ybBN9ahEHLqGy/fh693Z2zMZKBKtXQuJ09MnVqaUEIPSWcxaytNCIQoTFchROtkpl8XJU7CLra7Dka/TbD6LEQAWGmrjEOZ/vLxBU350+a6T3GrOpYyv1WfNDJIYSjDV6Wg0Rwcrrwu/EPrr/JeQgy+Vl7el6HKhVW3b/zqklMcpPOLDBkrGKopG77fIbBtfkt4u2Sy697kmDaRoUoBV+pb2oGp7Qbmhi0/Rjx03tBulNi+5+MZQl+tVgvdbrdwp4nlOPABOfI1miqrvJcBMq7m8znOzs7yFai0K4pw5U76kDLL8nhNBloBihBcaC6TI0nyK01vteY0Oa75M1c7NN6YLTMsRgskjQTLzjIPflIAlXa+Fu6QTS7KW7E6k2I9CZL1LtoEhR2yhV2xF0HbjThohkL6LFunUXfW8l2xGePpYkesczcsBQs5Hj5yke+zze+FMckuP+URxRvBSiVwWdh5mnk+ZSA2yzbS8OfymdWeQpsk7mCfPI3RtmyVYTFcAEtgvBxjOp5iOp0Wdm4Wujcr7lTiQYmq+ps1b2Ns3BB7s4o+Hep81PgJyTntGgKeh9L7+pSPBa+L183T8HSazuprD/1zWc0XPGVZhl6vh1u3buWLXci5HuoQuy4bk7eLfksgHaTdbufHdYf6a6jPv/jiC2RZhm9961uYTCZotVq5rkNyn2gEgKkLhNRJUNYGIJ03yzKcn58jSZJcVpbRbWJB0pwGVQIBSXJ5fUWof4wHJlx6KE8jeRK1x+IDVt0h70N0xtAyOXB7oNfrbfCyUNuwDpvXyqvRpVWfpYfFQkj/1jFHYvwmPh9riPwLsXs4X+Ppl8slJpMJnj17lvPKVquVL051XaXi6yvL/tTKivUryPchujy3+biPwMULfD6WKr4CrQ/K+OylPHb1pTWPYunfJ7Ms35pmC8bWVxV8elqZ+qvIcA1ifYW8vy26lL7UGD4V8p7joPnfQvw7lr+wzLzw4WvlqTKnffXFlh0yt0L4lOu55ZuxoPQFgZrywc+wl2lDDTheliakfKtWY6EqMdYFdRjyr+E17DqEOFco3XUBBZ6kY6IOR1lMOinkeX7aOWgJWQ7yPhRyHnGhMZ1Og3Dj+LzKUJYXS6dJSD/ReMjdl5qT8aqBnC/9fh9Jsj5+ie/y0PSAOh3SfDfoVQF3FjWbzfyOMAqmLhaL4PHg/IN29r58+RKLxSLfmTAej/N0ZLSTgt3r9fIxoJ2zgFvn4Y621WqFyWSS/w5ZQc0NZo0euQOacGi1Wuj1euj3+5jNZvi7v/u7POAsnbyueoFLfkX9TPXF0lmog9GFT5qmGI/HeTCW2kl8tKyhrxnOlpEfGihwGYvSAMuy9U5tOpaSHIuyTbwPNccTL/vu3btoNpt4/vx58NgX5Ncsw+TpBKvpCmgArb0W0m4KZECSXgRW0wt+KO+QbSR5kC3fGZusg6zqDljj2bpw5R9Q74t17YqVgd2NXa9ULsTzUNC6NCJwqT3Psmzzu/jNn+e0sWKf2Wbawm5X385YiSvH0/rOcWF1h+yIXc1WGPx2gPlwjsezxzkOSZIUdnnTc82ZQcd9LxaLK5dXEj/CS/6uo3wOLl1ePideQPKL5BuXKS4eEcLLSU7w+kkGynTyu68OzsNWqxXOzs5y/SBN01yWz+dz3L17F++99x7efPNNjEYj/PznP8doNMJ0Ot1JvZn6n8aE7yCS+E6nU5yenqLf7+Odd97Bixcv8rtkLaB+XS6XGI1G+C//5b/g8PAQ//pf/2uMRiPcvXsXg8Egv383SRJMJhNMp9OCH0gGAfmYhTrQJF68D+QzguVyieVyiRcvXiDLLhdfxJ5wFuMwpfQkP+XOO833xvPwNLxP5HvMPI+uAAEAAElEQVS6v5n0WqsviS643kPB87JA9xBrQQ/q513ziS2XS/T7fXz3u9/FdDrF0dERzs7OcHp6WrhvOQY0vur6zfNp76r4Gb5uIGlMfue/5dha+jqwtodWqxU+/vhj3Lp1C9/+9rfzY4sJJpNJLhN5ANM1fnJucltU3iWt5bHwluAKVnCgxTnk97cWaxOf4PqUxC8UQni8vIOZ1+Wid8ve5O3iekYs/jE6k08vcuXV6rXySLooy3Nj+ImsQ8p1K42mu2l4x/K0ELqwYlJ1gFWupENt/pB+4gO6EkCeWLMN/m/xjxA/UKxcCrENXHiFptdsGk1WUztj7UAzGFuFyEiB9KUB3J0T6nzTHGJaWs0pZeGwLSXQhWeMsHwNr+GqwWc0uIDTdohzZVtCIgR4MMMFVZSkkLkeo3zwNFaZXHhoSo9VHv+MaUeMY+SqoAoNh5RbZrxJ0dOMKe78kUHeq5gfhBPt0JSr8GJwsOjZlX6bQPTpo1Man2azmR8BQ89dwB3NUqmjFfW3bt3Cw4cPMZ1OMZvNcHZ2hslkUrh/FcCGEktlxBprIXxXjq+lN3HggWIeqJU0XYUfynSSlgj3UN4aAhz/6XSKwWCwMdddThmJd1k8rDyh4+9yzvAdSfK9Sw7L9A8fPkSv18t3BVBfaY4RU+/NgOV0icX5hZMpuZh/aKx3xgLrHayUXWt6clku7TLNjyk27n/NsgxooPA+L/8i8Mp3xtK7vP8TXO6uzcS4XOQt7OrFOj29l7tlL5ti8BgleYEO+PtMScP6T+6OpXFQg7CUhz9zffLgrHJnrPxd2KULhpuCPz+yuLAT9uK3GYjFZX2z0xmWoyWW0yWypdu+5HdwA5cOPy4fpNNuY1zE723J8BCHh+WkjHHsufDXeAd3UmiyRuIvAzT8mdavljyX5cjyYh1E0+m0QL+8LfP5PA8kuo7pd/2+SuD9yY9gJaB2pWmK2WyGly9f5um4wymkDymwOBqN8PHHH2M2mxV2DxM+Uu/R5LvVjtC20qerPBcdaeVpeIToAq48mj5m4Spta8t+ozS0wIzS86sWpH6TJEl+jHGSJOh2u1itVvnx0lZ/aGDNda3e2IV425hLhBvNjV6vlweyF4sFTk9PkSRJYTOKdvQyfXfxHO291l9VIFQ/rQt8dFG1/tj8mh1B3+WmIu2KGp8NyMePeKY8wlcuWKRyQ/UDno/n1fo4dF66wJLno9EoPxmJ+o/Xq9G+D2J0pzL8VQNLB9LsPRd+2twNaY8FkieG0rpFR5Yu5eMxobSj4Wjxs7L0GJM/hD60cqTckXPVqovaH6NXuMDHa6wrqzRcY+jHl07Oi9ByqtYf03cxcsHXnhi+IvkglevCvfTOWBfI1cFlV4yFgnXvmbWLNhau2lCKnaxXDTETehfL/zrATerDXaJ1YqLaHIzFs2q7XHxAGt2AvqOXgAwMS0nQBMW2eKVV/3XylDrrlsqur2xOc9Z7eZcMrVLfJmRZlhui3IjkOLTbba+ScRPAp9xTf9NYhOozFOSSY0VOrHfffRd//Md/jKOjIxwfH+PP/uzPcHp6ilu3biFNUwyHQ5MPaSvvpEEljUoZ0NfmhTQofMYHsF7lPRwOcXh4WFgtzXe3cvykwzDUEOTlWHSnOSXKzG/eX2maYjAYYDKZ4ODgIF9l6usfqx11QlneRfcSj0ajXD6E9Jts82q1Qpqm+OCDD/DgwQO0Wi0cHR3ho48+QpZtBmOtsaPny9ESk/EE2fIyTbpaz59kuQ5qJmmCRrYO0DayBtDA5d2xjcvAZ74zlpwk2m5Y+s/Yd2y+z3fByvfY/OQ7ZvO8SDbTiGdBYJBQoT95GiOYSZ/yWZYZQUzlOT3LP60dsmJnbJYVd8QW8ACrV2kbxzfHQ+Lj2xGbZciWGYafDzE7Xsu2JElyecYdsPwYWm2XJfF3OtFAu/PtqkDKsV2xAXgwQwvIWsEf/snLcvEojVY0J7J0cErZopVJcnwwGOR6G8kJSnN+fo6XL1/i3r17wUe383quSw8m2iaZTThTAKrdbmM4HOLk5GTjZIzQugHki9p++MMfFuaYXIDmskfqsFW0cqzykiT8GP66QOpKWZZt6JF8PEP9RjTOtLObTr3h9+Fq0Gg00G6387q63S4ajQaePn1qHunua5tsn6Yb8H6/LluDcKB7g/f29tBut/OFlI8fP85PRyBw7QKy5qHkhTGw637DbYNLDvD3LjsbQH4VCcF4PI46TpuX12q1MJvN8Mknn2y8JxtJKzc0eMh3xtY5N0LLWiwWODo6QrfbxRtvvFG4SoeXpX0nCKXbunUai16kfSPtZh+4ZKzLz+bqg6ptJlvVR/v8dxV60vrAsiV3hWdp4yJ5hmYDcOD+Ags0v4prfH06Id+ZzsE6ucKSO7Hg88Fwuq4r/rdt+V/XVRBcX+TgkiNmMLYMcZDyUcU5xZ01rnQ+fKsaNSGMJBTKEvquwrZx2+W23xS4jjFy0bl85ztit8rxR2WAB8Q4XjGKbkyQ0RVw4GVpvFDixHGWCqsV8KB3pFzw9D6jxQeWcukLyJSFGEfXVQHfNWOBr82EL43P3t5enk8eW1ZV2bHkMJ+HzWYT9+/fx3w+x9HRUW4MkmPO5SzZVZ7uM4QkLwg1kq06aNcgOezb7TZu3bqFRqOBXq+HXq8H4DIAYOHmo2VpAFu81prrIUopKdm0Y+b8/DxXNufzefB8c/WrdMxKZ5VPT6U0sTxCuxeNxm80GuXPQo/SK2toV+Efsm5trDXZ4ZMBkp54WqJjuk+QjBLaSaXRnkXf8+Ecq+XFjoFeBiRAI22AdqEC688VVuujimmnKRWnBUod/0ki7o2V78HeJxf1GMHYAs3xvAw/7VneN8b9ssVO0p/xHaMbaXlwkj3Psqz4nd6JAGZeBn+mfcYEY3ndjiCsxK0QgGVtCAnETo+mmJ/PsRwXF+xqfI+OASN+J3kQ8QV5l2QIuPQzrf2uMqic0HyucjT+WocMt3iMFoRw8S2JE9c95NhQOsvhGAIyLzm/+L3v9Pv4+Biz2QyDwQAA8vuHy9RTN4TqnADyBQj8He325X6aGFrjaWlHJu0QC8FZ1mfZatrvEJysMq8SXPqzNhc0ncjHh6jfXSeu8Lq57sqDSDF6GC9P0o41t5Mk2dhhWtW3Vwb4PJjP53j+/Dk6nQ46nU5+xQ8/5ptwDQGLnkPKsOx/q7xQCMG9TNlXxd8k/w/Bh2ifghgHBwfodDrY29vDcrnE8+fPc5ub+4t4fm0ckiTJFzHQu1AatnRxl30XCqF055vjpNvTFUZyvmpla7JYA00uWP0cCr78Lv7rsu3rBpfdXsc8D/EtVoFQXhaLu2V/xuQPwYPLQUs/t3RIq/9C6SVGDli+GlcgVqMryQ+sOk2bTMFbpvG9d+FZB9Q5X11zhOSDBNfd8oVgrOxUSYCWkku/y6we0kDWWzW463rvw+M1vIavE8QIiZC5ZTE/635pwL/6yAUhgsECvtvQUoRcbbTwKIOLVobGf8lBYgVuND7OQToZKb8rEOTCUT7THP9lnDhlIYSe6xTQoUqE672ku+VyiVarhf39/Xysz87OCvf8aru5qxhpfGECldlsNvH2229jNBrlR9WtViu02+2NY5ZdZV831GUkxMxx6dAig5WCsf1+H3fu3EG/3wdQPOpXq1fSmU9x1viX5ajW5qZWH+HRbDbzADPdF8qPrbMMSp+TwcLHx6dcxoKszwUc9yRJcnqno6rp/rQQA/0qHYguGajhoO2IdeEr+QJ/TvdL013HVD5Q3JEjcdFk2/x8jvn5HI1WA7QbNmtl6+OEVxfj0lgfYUwBt/VD9pmJzwY2gqxqYFYGXnmZ8rfnM8kuj0vO+4rKV6btxlHJPpBJKQjJ32XinXiej2VW/F4Idq5EGtdnRDC2UD9vhjanBf4Fvsbfye8cvxUweT7B+Mn6rkuL99HzxWKR7yLT7pijXWH8uO+ycq6qLsL1ONf85XVUwdcCF6/jY8ZtAA1nzUEk5ZbF7yVP09L7ZJP1W94ZRzyt0WjgxYsXeP78OY6OjpCmaWG34S77FHi/Wbp6kiR5MDbLMvMeU5fMpTnS7XaRZZenrrjsBolnrO5VJ8TqhTF4WPaldO5xOtZ4FtcdLd5KehpfJMXvjpdAJ97RcaR8N6xrvmj40afcsSVpj9Jo/XOVc4kfUT+bzfDkyRN0u10cHBzkdyZT/7RaLVUvjcU3hidrvNNlI8hndfJ/nyzXcKwKPlrX6pPfadHVcrnEbDbDnTt3sL+/nwdjX7x4UeDzrrbwOuVx9TTH5BHsMSBtoBCe5PJNhOoC1rvFYoHhcLiRhnwJEg/JDzhIm5G3T55oEQKaj8dnL8vv1gILq7+s/rTSWj46ny0bA2VpLbRezdcXW0YIHtocln4JK68GFn+UO1f5Tkef/mHJ8SrgoiPtmoAYHclFZ1J3k+k0Wre+W4vuLNxcfCK0jND8ss6QvC5+4PJ9aVDLMcVpmqLf76sEQAq7RjxVA7cuZyUQ7nR9Da/hNVwtWMoHf1dGQQ2tOyZ9TPnSeSHfcSFPCh539MfUxXdpyPo13OV9QHU54UJxlQ4Fl+J0kyHW6WL1ATc8Wq0W3nrrLXQ6HfR6PXz66ac4Pz9Hq9UqOIlpR6J0boTgzOmQ8t27dw97e3t4//3382PqRqMRgHUgcW9vLw9KjUaj4B0g1wU+pU+moT6l3QAuvuUDCrQOh8MN3YdW2ZPRPp/P1buKOF7yDuiQI2nkjk9pqPrmo6QnykMBC17HNhw9/G4l6RCkOkOVYI1Xh9AH5XE5wK4bpPNFw9XXL9Y9srJ8+v3ll19iOBxiMBhgPB7neSynk8/ood/zszlW0xWQAY3OOvDaaF6cPHBxJHGSro8nTrLiJzIUjivOg7IUmIXyKYOzF8/yI46x+c4MxuIin3VEsUIuheOLfSCHMLssI3RnLA9aAhfjkm2+y+ezFpSNOJ4Yq8tyN2iQ6gTDhbdL8JS8bCVAuxGIXWVYnC4weznDcuCWU4vFAp1OB/1+H/1+H51OBy9evMBoNCo4FjiNE7++Lp2G31vL+aAPp23h6woG8OexZVq6tcbLZT9wPCRPi7ELpAzlv+lezfl8jvl8fuWn/FSFbrebOx7n8zkmkwmAYgCt2Wzmx9yH3gtPQOXMZrPcd7RYLAqLC7U8dcwtaYMRxDj9dgG4DgLocpnaal3XpcnbbrebB6Ms24Foej6fb+gYGnDcqN/5TvKbANwOy7IML1++RJqmePnyZW4PXSdu0qavYqfcdOAyOTYPXxxEPKnX6yFNU7z33nsYDod4/PgxgM0FORbwY/l5Wt98scqSfNDyu4eUbclS7b2LR9KJQRq+sXTINxfQb85nuB8rZAF4HWDRkib3XD6XqrpQVZ9dTN5YP6n0O/EyypRXln+5YkJV4Kr0+7r4tuaHcdGljxdY4BrXWH7jg+s4gc/qtzJz2JXGGYzVlDWtE9I0zVfLSUSzLMuPL+CwWCwq3+kqHYmybg7XZSD7wDVBdqnMXYavW3uvG2L62qUkahdc8/K3PaYhDLZOvsH5FQUmrTbSqmXNqJKOIMkHfe3SDHgNYpxSIUBtrgsk/mXHalvKrRWsCe1vkrXk4Lt9+zb29vZweHiIFy9eAFjvVqUAXpZl+fG3sTwxSZLCDjnC5eDgAPfv38fv/u7votls4mc/+1k+hq1WKz86GUAegCk7b7fFx60gj2vs+Jyie3n44okyQEdVnZ6e5vds8kUKfHczHf8c6tjUwOeUsfSnGKB8fId9rHNbOhDpmUYPGh/jTiheRqiBESp3ND7jCgzskk4SY+wDm23VdgTIfjg6OsqduOTAp7w+ndyaowCwHC2xmq6Q9lKkWYq0teZTSSMBUmwe9Ss/tUAp/74qfia4oJvkYixpB6sWgL0I8CaJ2P3KPgs7YzPkQdiNgClrt7kz1ppK8nneJZnaLxsB2Yz1IX+fCVqQAU75KYOyWjCW1weBk/Zb4CvxUXfD8nZR3asMi8EC8+dzrOa2k5CCBmmaotfr4e7duzg4ONhYZAAUbWLNUXoVIHVKwkUGCstAGYcxvbecumVwcNXncoRKWWAtMClr02j5aNGWXIS+S/LAAtI12+12vrBP8nmS876TIVyQZZc7ykkvomCsz5EdWoeVzkebZWR31XnGywkpXxsXzR6MBVp0SHJcw4sWbFIwVjuVx8Kd6xNcp3ZBXX1bBxC90xHkVUDqnRIs/VnrD6lDh/BnSedleZXPBg7JW9XZbdnOMq9r3kt6XC6X+cKDVquFe/fuodPp4OnTpyo+rrZaiz+stln9oQUFNVsp1vax0lh6uyxHHk9M5cTqAdIvJn1G/HesbuLygflA0xX4M58MCeFf2nwPpbG6+KOm28bml+2O9QdICNUnXHnKtIOXI/1iPt4SgqMFZcqRPhBelqYnhPCGWBy0965xqKJzu3Q0bd6F9n2ILHPJTI1uNPy054VgrLznLkRAumA6nSLLMty/f3/jMtuTk5NcqHEkaZePfM5XFmk47YqypoGL8W/DQPMpLTfBKNTAwv2q23OT+/A6IWSOlp3Ldcx/TVkD4NyhJkHes0TPLAMpSZJCMI1gOByqdFYX7fEdZhpsg59KY8cnVF914IYFX+3JnXmtVgvvv/8+er0eZrMZ+v0+9vf30e/30e12sVqtCoEPKiMWGo0GOp0OAOQB3SRJ8Pbbb+M73/kO/r//7/9Du91GlmX47W9/iw8//DDPOx6PMR6PC87HMjhcBR1oRqQLVqtVfucb3QtYFnhdb7zxBv7oj/4I3/72t9HtdvG///f/xl/8xV/gq6++QqvVyuuz8JfON8sZ7QJuxPuc3fyT8tIzXmfozugySrlP/vscr7yt0rjy4cnL4fcF8r6XRzNfp07qczq50sYaasSvvvrqq5yf0e4p+u7DUT6X/ZotM8xezpCkCabPpkj7Kfbe2UPSTJC2UiTNBI20gWR1sTOWPi92xCaNi7nSWAdXk0ZyGYS9MDeyxnpHKn26dsPSc9r1Skca80BrTndg7y7yrotj5VL/Q7xzgRymPHaZbb4XgczgQCyydT9R3szzubrMk2Wb98LyujYCztkm7taO1w0j24X3KsNqsMLy+RLZyOaPmiOJHLH9fh9JUtxlJp2fVjlXCfy0FE0+cCgjq+tqG+cTEkKcm670WZYVHLaaA5Xy0WdZR6GWngfCr1sOxADh+vLlSzQajVzfc8lNeSJLSHCNw3K5xGAw8OphmlwKccaFgOXn2kW7RJsXQNHG1OS7ZUtOJpMNnVbOHyrDwsM1djJfr9fbCK4sFgvMZjN1vsg5qjnEr3KcqE5+Byjp6rQ4AfDbFVV5gtVPMfnrxqkKXMV88/Fil14sgXSDqwTuP3HZWTRXJH6WfeTqE1fg02U3WHNU068kLrTIg9sPPhtVw8micR/fuGreX0X++OZsmXbE8POQ4BXPZ8mv0PpCQfaf1PFignOWX9iqy1eeCyw6D/Wda3mte5fLgMZXrHpC9WpLjtHz0JM9QsovCyE8SPYLP7WNA/WhxKspE9GnNekspZifiU9Ad4H0er1ceaEVNLQLR5aTJJu7p0IdZmXfbxuuS6nXJucuGhihcB2434Q+rFN5cDlxYyBUeGjPrtsokL9D8bH4J+dpfKzouetODE2gWYZ1SHvqhlAFWToKZFs0Bfm6HSIuQyIGfA4GoHiUJ/9vNBo4PDxEu90uHG9Nx8TNZrONu5vK4EmGHtEplb+/v4/Dw0N84xvfQKfTwYMHD/D8+fNCPnKm1A0ajYc8CwU5Jtr8ovlPCmFVnkj5u90u3nnnHdy+fRsA8OTJE/zN3/xNvjPB5WjRxrqKYakFIVx18aBjiHFVh0wpa7SFtD22LiqXL17kTmteb0xQoS5w0YILuKPdojlLZ0+SJD/ClZy5nU4nnztSHoY4EmW61fRyAVG2yrCcLNFoN/J7Y1dYre+PBZAfSYx1IBbAZRC0kayDhCy4igRIVhfB1YtPAOtdrSzQmmXF70mipM2KuCdJsg4Qsh28eQAXl3gW+rmunbF8vLLLT/VoYnrHvmuB1MIxxZ7jifnvAl7YxCskEJt/GkFa/i7LMmAFLGdLZJMMq/MVVou4owtj7yhz6WihdZYFqTu45lwVkPKR12Glj33vcuJIfuty+oTIBZcuLct1+Uas37tk/4cA7VAlPcRqM++TEDlnyVoKBvJxJdDKdo2dC1x2lDU/Yvrwqsa5zDzWcCPZbI2xi2eUbWur1VIX5NI9tSFzUT6/DpB38hL+tBjbxfOq9in1mZY+lIfycnYBQnDx2RZ140O+ajqlCMDGccNVfAJl0mpjX9b2iQHiD6G0GzpWPJ3mE9J8Q1VsyBh7VcqjqvVrdbigjnpC7X8XuGzBEB9AVT5Tpv/lPLHoM6RvNLqpQ7d38e+6ZV0VXhCSV7M5eN4QP4uW1zpVK7Y9oTTu4lEWvVv1abqsC2/vnbGkYEynU/XuVwDY29vDd7/73Q0COjo6wnQ6LeyKHQ6H+OKLL/LdNwSdTkfdFetqBG/sVTi5bhrcxP7YtXEMxeU68dYEzS71oQaagyvLLldYXwfw3aIxDjjAvr+a3qVpWgimJcn6eC6ZZzKZYDKZFI68K6NMuRR0TdBvY5VnkmweOQOsd17OZrON+x+1/C6om86t8lz1VK2fB7bo0yW0l8slJpMJ0jTF4eEhTk5OMJvN0Gq1KuFCDgXC51vf+hbeffddNJtNvHz5EuPxGJ1OB++//z6Oj49zHHkA96aCT7dIksuAc5W28mP/RqMRPv74YwyHQyRJgrOzs436LQcoPyIw9sgmK53rOc1hWhAwnU7z8dfurY6t24IQHsb7g8rnDkatPM3Za42rlofK7nQ6efvpnjVKz3e8hwQsJNTJ26gckinylBqqj/9LHiQdExrQznq+cEHKMdmfrvkk6+Pfl+Mlhp8O0TpsofNGB41WA41mA1lrveu10WwADaCxuvhsrD9phywaF3R0EZhNkqSwMzZvM+2MTXC52zXBZQCWO27YM74bVqYFsLFbNn+eFPtX3SFrDEFhbHgaI2i5EXilNOJ7/izbfLbxqRxTnLdX4KU+08Y7w2WAVR5DLIOyDE86lvj0b0+RLBOk2eYx/FofJsl6cfFiscDJyQmyLMPx8TFGo5HpJLkqx5kvP5fhFoQ4ckPzh+DkcnxpfLVMXa50/J3clQds6mAhdYXww+uGWLtQjhOduMJ1DEpDd8TzPHJuucad67n8aG0Np23YspbN5HMQXpdt7bNHrXmkyVwNON9w2UBlHetEK3t7e7meQHdcn56e4vz83OuclvfFXcddzNr408LVMvdXlqWlbdBg2bHdVbDsj9C+Gw6HGI1GOD09BXBJw7G7/+sEslX4tYBke/A0sq0+vrbrwG2JmDyA3daQPrF0PItXhdKYLzBj4egrJ3RHfh16VSjI02RiNttZ+Pp8nj45LU+BdZW9CzxR0pY2r63FTHXgz8vlvpbQ8uX1RtaJOCHPrhNC+5KuGQSQ+0l9bSl4ZTQnDH8nEWk0Gtjb28P+/j56vd7GZOj3+xuCK0kSTCYTtSxJTNI55INdmDSvoRrs2uQLhavE2zcfYp0lV93nLqNO4zMxQtaqj/L6yrEcCiF18Hqkw0vyVQogaA5veSxDiLLC2+lSwMuOdVk6sZz6oceZhuBl1et6H1ueD1z1aQo99YNFM1wWLxYLNJtNdLvd3OgPFfAuXCTIeyGzLMP+/j5u376drxLu9/sbsl7DvwpY5cg+9tFzDJ/0OVelLhJKX7wOfhT1YrHIdxg3m02cn5+b+Xxll1W4Y8aL6C22bEnTPojht7zd/O46KxhrlVEGOB0kiX10D6Wl+mR+F26hOPig7Fzl/ePrJzknNYNLS6PhR2klXRfmXLbeKbucLLEYLZB2L2gzARppA6tkVdipWtiJSUHSRnZ5VDEPnK4uA6p8N2weF81EevY8b1eCQv18p25+OjG/SxasDPbA3CFb6KzN3xuBTiOAae6SzdiYr4ppCu9Z4FMNylr8lONAzzTHl4KvfF94d1F3tsqwHC+xGC6wHC3X75i163OycUfneDzO5Z9rDsc6ujSoIke5wzIEFyn/qAz+LES+VbW7Lf7In4XIOg0XTWfgv6uCz0G7SxArU/j9upquZB2DyeWhj/7K2nLW81BbiX7L8kJ0hlAImctamlCasvJJ28Jla/ts41j9zQVEF3SFAdnAZMdovNUao+vwW1DdBJodYvFdaef5xjiUD4fanb53dciuXYNQ2rX6n3gYbUIifkiLGa/K38zHhnzk5C8vewSpa/74ZKgvP+WxaMxXtpVHswl4GRZo/MzHD612WO22eJJr3tapi/D6Q+a2a25Y7XPVrdUnn2k2X0zbfbaojyZ9PFTWEeNbqlOfdMk9Fw5W2hjcrLF3ybc6+aDVxhD+UGU+uXiTy/YIpTee1+Jj6s5YbeW8Bvv7+/jDP/zDwv0JHA4ODrC3t1d45jvrnkOWZRs7aF/Da7gquC6F3wdSsa+jrDJQpv5Go6EeaR4KdRnLWh8Sc+ROhroUJc0B3Ww287rJMB2NRsG4hz7noLVXU5RCDMYQkApgmXKuch5u08CSAthnDJHD4uTkBHfv3sV3vvOdDdksdwW6ynXBarXK72rpdrv4/PPP8eWXX+I//sf/iD/8wz9EmqYYDAY4ODjA/v5+dJvqhNg5HpquzNhbiqLmXKLVy61WC8PhED/5yU9yg3q5XDp313OgPifngHViCU9fFTi/0nAMXekYk0Yz3mS+LMs27rfj/cHpU6tLrtgMAeJH0uHMy9Lu5LacnGUhxJmiGeDUJz6HIS+P9HZtZxkBpZG7YfnOJ07jPnqnMqhO7R7IxWCB+WCO9r022nfbSDspGs0GGq0GkvRi1yvb/Zqkib47lu6RTS7ojt0JS88A6Dtl2XPXjtiN39DHKSgAe5nY/s2+5zTBApdWEFa+o+dBnzxwy+vRULecdVmxjI3nrB0FnAmPZYbldInhb4dYTBb5O34vYQyMRiMMh8M8aLBtJ2xZfUfjffwTKDrtQpyKmh7ocxJxfFy8V3NIuJwiVhreHq1MCyidJQNCeJPEk8uFmwiS71sOZsupql0/ZdVjnYK27fkFFB1iFm1u07YOmYNWuioOSI038LHUeEYdQAv5Xrx4gTRN8eDBA7RarZwG6EoD+W/NadknVz3nqtZXhc5dPNVXpwby3s5XEWL6W+tfLSBxHUA2GOnS/X4f0+m04Cefz+cFP7vLn2/JUv7OZytsA0iXqYseY8ae81xLpmt8WdLYNvomxP/p00G0sawTV01fcPksY/W2KiB5XRVfKgcL/zInqcXckazhIOvUcChzigOBnPuxbUySJNcTQ07xcW0C0Hz1UresUy8PpR8tny+uUODS5ByxFETtWavVKgRXpHKnXepbBjQH0auqOLyG3YCvM32FGtQyrS+f5eShvFUFRFUIMUYt412mkQq87Cep9Fl18b6SznyXImXxTGu8tkHvUrnnd6OG5pflxOTTYFvtlN8tB0pIGZwmptMphsMhXrx4kcvT09PT/KjnOmmfyloul5jP5zg+PsbTp0/z9/P5HC9evMjHcj6fF4JSu84ztXnKv/sMB6s8Vx6Lz9FckHPCwlE6y6x57HP0lQHuICPQjnWXdUhDy8WrNND4lzavfA770LJDjAM+R8j44caNpXRf19yQckaOheVo4b9dCz60vuZzidOvlF+hfN10Wq8yrJYXO2TPF+udrh0ACdDIGuvgHZkg9Jmx74nyKf6TRL83tpA+U74rn4W7Yi/y52UWGid/Jpe4K1DIz9PIoGhWfJ7ny5Tv9JMfPQz2LsPmjlif/kR4aLjnH5mOn2NHb5ZlyMYZslmG2XSG5XSJxXSB1dy/Y52+1+FwteaCBXXwBD6PXTp0qBPOxw9i8dLKcb2TZbjqlzxM6tVaXaFlhYBW76sCMfqrlPkan5dpQ+1Gy/YJ6XNfvfT7VRg3TefT+lhrv6tMXxpXPpmX7BWyXcjOsPQBqRfv+jj58NNs+RgarvqujJ7sK6MuqCp7tbIIytCOzKPJ16ukR2lHaUeLa31ntV3zB7nK4PUQWP6k0DHkdoKrXiuvBrG2X0w+F8Tk5/1ZBZfQORPCl1zlaDQUQvu+MbV8Lj5dMVTP9vFHn03r0qVDeKlG26H0GTqm2vytQssx/eijAR/flfwV2FykTT4WLSg7Go2Cr7cI6dNY8MmCmL4sBGOtHa6xEHJvjYRQZgHcDKXsNbyGbcNVzoFXdb5ZylBsGZqwTdM0P1aWnyFPQMfekZApKyg0o44rEy6lldLF3OMQCmQwSOcJgIJg3fWdBHUonTFKLvUT7cQZDAYYDof5sbbAmnaWyyUWi0UwjrGQZRl+9rOf4ejoKH+2WCzw+PHjPBA7HA4LzpRtgtVXPkeGS2nm7/hRt5ayH+OgtPAhnDqdDprNJlqtFqbTKabTqbNuWQ7NLYlznWPByyIeliSJel+cq+46DATpjPUBd8pbznl6Lo/3lPVwOqJPonsKxspjTK8LLAOAeLzWVpmPr86l0yxWqxUmk0n+nJehOa3kUWp8fhFO9KmNj8VTNUfG/HSOxfkC7fttNPeaaC6baLQaSFspkjS5vDs2bax3wNL9sRf/SJDvmM13uTaywm8A+k7ZdUR1487YQh72PD+mGMX3/NnFj8t2K8f6Fjtm87sWfPUFNfN+zy4/Y3bHbqKVyQfF5wqu+bhnm+ksHLMsw/L5EsvjJU5OTrCYLwonj7j0PIveuK4ied62oazzOBa/bTgorHr4J5eDPpALziwHsvbM5wiifDyvdg+75WiRZey6LusD3mbS0bXjiDXZwecYLd5x6QVWX/l0LGtcy9K+bE8dNmFI3THgcw5Xze/TOS0bhd6Ftofm1mAwMJ3JfF5peFbVwXcRytoSu6Bvvsqwa/TFd4tm2XpxNPkALLDkmMX/fOALclQ5JcnlMynLM7X8IYE0/s7Fjyyw+Bs9y7KsoKMCxauiQvQ5zedn4WHlu2ogfU7e22rZ9yF6VVm/g8SFnoXMB20euHSamDlWhfat02dj/SYEIXqazB9Sp6U3tNvtDX90p9PZOGV3tVphNpsV7sv2QVW9Ud5bz/OGnCjs0ocLubUE5PS1os+hxwjP53M8fvw4vwydgO6MkI4ijriE1wpIfdBqtTb6c7VaeQX8a7geCHHUW++rKpZ1zLuqRmWVOl3vfQae5YzheaTSpjFsnp6OlJOKrBZAiBGkVd7HQghtSYVxW2MfY6SHKOOa8h47l2Lmq0zLg21JkhTuHCUFNVTxkWk0xyUdfcSPY/ziiy8K95muVisMBoP8NAyiYVmuhQvRtAzmheDvm4Nau7heoYFmlEgeJZVGF56cB/jaQwE8wH19AwfOXzS8Y51ivvnIedhisdjQz2JlgmsMNVp2OUnpHfWj5LeWsh9qGFnt02hBHpXsciheBUhjiuPE37sc5lmW5QuK7ty5g+VyidPTUywWi4J+GMpLKWhtGbuuvmo0Gjg8PESaprkDajQaFfNkwHK8BJbrz0argc6dDpJmgnw3bHYRdE0vnq0ApADtXOXHFfPdrvx44jVCl+0q3Pt6kR5AIVCbv4P7O91TGw3Z5vfgYGyWFb8bAU8zCCvrNPDaCKwKHOVYBu3kXQH39u/hfv8+TqYnGKUjDAYDzGfh19v49AYtGBgDZXmA5Wjz8WvAlvNlZGgorq46eFtCZQDPJ3Vrbcx4+SE6lmaLhPJFX5myvF0HX7/w36H9K/PwTx//12S9NR+s8kLwuwmg2aeaIzhEj3bpJCH6rhwjX1la/VraELtQ0ztv4nhep17IQfZ5FRlnwbb5n8/e5HjE0mpM/bKubYGUS7SAt9Vq5b56H3+W4xzbfmlLUDlAuYX1LptWq1d7HlOX9jtEnpQZ1xD7mn8PuWs9pI5QPU/rj5B5wsff1T6y+yx5T89dV9ZIX6iWn9K5cPZB7DyQfh5ffk2PjcHN1T8yndXfPlsn5J1Vt5bP0iUpr3VVhTVPJc+x7s2ugwdrvNIHZXyYBN5Q7mKxyBm+hCzLMJlMNhyJrVZrI0o8m83wm9/8ZiOK3Wq10G63cwLy3X/2GuqFTqezsf07ZLXVa3gNZcElWK4LXEJDA1cAhyumriDQbDbL74vkAp0vTvEppzyNJfA0p0YdEKLUa8qKhUOZwE4dbfGNfagQjlHoQ5xZki64oSX7vup8ssr/6KOPNtKmaYp+v58fMRaihBKQ8lQnHfrqTpL4+yJCjRvLiRmiOBN/oAVtrjkU8sxXNwfSz0jOhzjCuO4mnaNWX7jo3XKsuxziVjnUhxIvAoknfWoGndUOC4csW+8C7Xa7WCwWOV8nutsFfZYMfe3OV5ob2vHKFGR++PAhFosFlsslRqMRJpNJYeGGzCeBG15l5n6j0cDDhw/R6XQwGq0DbicnJ0iSpIDDcrDEIrtYINJK0Gg3kHZSIEMegE0aCZLV5a7YJFsHTPldshSULdwRy3bI5sFBfg+sEoS1dsiui8hAxxRzMHfKFhIpj3if8vdKIDP4mGL2Xf30gLaj15STGdw7YQVuWZYhW2V4+/Bt/O7bv4vPk8/xvPccjx8/xmg08uLmcu7QfOcOstA7vWUduzD/dwEsx5Xm8OBjEeLA0vh0LPh0Mo3PvWpjy/u9zBUYmvz26bwyP0+r2Q4xDjJON3XYHFcFMkChycxY3mI5g13y2KXHUlnb7sMQx/JNg1AHPk/vSqu9D7VJLdxeNahDFl+nPJf1kj7e6XTQ7/cxm83UYGxZ/4V8J+WfK5Bi8VpfHXWCj0f5+sXSUULyhgKvg/wB2+CpIf4mmVazg33lWXX7yvT5TLQrNMucwKoB6fghPFbirdGFpi/K9y5/iAvP0LkcU25I2ir0uM3TYrivXEKsrIuRxdqzqnO2EDG1dr9KSNMU7777Lvb29jYCeVmW4fnz5xvGMAV0tfQ88Bdk4N9wRewqQGOe1v29Pia4Kw7F11AO6p4vVWlBM/5cNBZjRJcxuOugbWk40zO+UIX4q3b2PR05Sw7zUIHqmru+MuqgCc1Z4qrDZRyWodOyBmdo2b66OFCQ0Xesh0up09pC76yL7Ouc2xQcTJL1Mbr8TljCIUkSc0eshpvPMLQMuxiQ9dMckuMRgq/m8PM5jzWwnJlWH2RZVtiV7MKTv6PyrBWoWj2kjxGO8k5QLY9sgzU/fHRBea3jrCyewcvWDB55/K7lRNf61mVgybIIB5qPs9kMvV4P77zzDiaTCQaDAcbjMabTqXc8rsq5Ix3k/JkL5vN5ThsUmF0sFvnOeF6+NTY0B2XdlpNV4kw8icpvt9sb9auyYwnMjmZIOymaty6OLW6vjy1O0iQ/sjhZrQOnjbRR2BlbOLa4cVH2BZvKVmKnbILCd2cQln6zgK1sc94u19nE2qts83vepyzAWbhv1XNMceFTlOPFEdgc54zl4WUE4J6tMizHS4wej4Bs3V9H2RG+wld4+fIlhsNh8CkDEiyHdqzjqc60sbyB6xiuIEYMD3DhEuPolXJem7McfykfJG+QbdTKk7JLkwW0GJwvTPq62rsufV7KdT6eUu5LCNGbNXks8XHRbox943p3Vf4lXz2+d9oc8IHLGSzrrNK/vrbJ41ZduLrq8OGx62D1gc+uJpD83CrfKiPUkb3LfRwrc6vw9uuQCz7fymKxwHg8LvjQpJyV5cX0g1W/PLnLZTP75APPb/lPyvgIfHyuzHj65lRVGrF8SLItml/DlV7WQZ+uPnLxnRDQdDYtv3YnaKPRKGzq47sgs2y9AJv8piH+Eg4uG5/e+3iqFji37AUuq3x1a3lc6bT28H6OHV+Nz/h8Kb62hLTBBZIWqEyNbmj+uHRHDZcQnYjy+MbYeucCc2esK3OapnjzzTfR7/fVtCcnJ3j27FnhmRWIyLIs2niuOrC7BD6l1TIwQxgtByJc+czHdFxHDOwKlDGersrgqguq9Heo0yfWORTCyLT8Wlu0YGyswuRyHJQda5+x5KrXFWDWFCtyBmn3t2rKLA/a+pQebayq0H+VvCGKk+tdqBIh88TWUyWtq26X08mql/PvOnivpqgAl6sNW60W0jQtXFFAOCRJ8chkH/5laKWKoyVJLnfLhezctfiDnEcuJcx6zh2WGt3KZ5qTzZovmoLv6y/CicaP8JNBYK0ejiOAQrt42VZejiNvo2aYyeeSn/My+fMQXdLFf0J1S+o3UvybzSYePHiA0WiUzxvrRBmtrrqAO1p4P/P3LlkmgRu7SZKg1WrlJ9/Ilcku+gmZgxIIL34ENVA8eceal0mSANn6LtllZ4mknSBbXjiq0kZ+dDHtjE0aCVZY5fkKxxaz/szrooArBWmNoGzh0/dsowOszgp4TsFL3q/ZRZtCjyleZcVPeqfhlcmfGw/8AVjtHW9HtsZlMV5g9GiEJFvLo5P2CZ62n+L8/Dx3StYFlvMkBKrI6bI6axU7yCVfXM+0MuXvkL7g9qZsf4iuGOME4TjRvW3WqVwu/e1VBcnzCLRn9Fzm1/JYTkNepwvKzAufHbltP4BLv4wpQ+Z12aCyDmkLu+ZkDL1b4+6bi6E6SKwP4FWD0Dkh88jvks+T/sp1+LKLmOqGMvw2pJ/KpN0VcOG7Wq1yW0OzH7X8msws42/TeI0Lf4v/7/o8d+lJMl2IDiHzWM+s/tLGs4zuJ8vS6is7JjH5rGBsp9Mp0AhfZE86G9mHMaD5dvi7MrqCxmvpt/bdpQvFQkz7y8xznq8qHppvS+Km5dHuGNaOKeaLRLTyfT6QqvZe2fzOYCwZtdrFtJ9++unG5KHOCTki6jWswTdwZZR4TuxJkjidg7PZrOBcpXvP5MXiuwxX4bR41SG0PyxmFqIMxBzzVodgClUUy9aRJJvHUIbUw40eMoJcQixEIariNLwuqKLo3ZS2hvDqUGfRVRgqPACyWq3QbrfR6XTy+mnBQEj/k2NVXk0ArHWKZrNZWpEmfCxwHb/L+RfnZzQWvhW4rnHSHAmWcm4tjqKjy2OdV65+oWedTgftdhvvv/8+Go0GHj9+jMlkgtPT04JBJPvHap8LNCPH1bfkICJ9Bdg8hkbuyCb8uCOdOyPkuHLZwN9puITIM15Os9lEu91Gt9tFu902j+PmQcxQmosBbby09tAzbcEd0QHdD/vkyRM0Gg3MZrP8SGiqg9rE9cgQCHG68TShJ7TIclfzFaYvpkga692wzYMmmgfrnbJJmqDRbOT3yOZHF1/80w5ZJBf92bi4I7YBJFjvmqV3FKTM+9zYEbt+iMsjiBP+OIEZhNXACGby74U+kwFZ+T3LIAOgeVYqJ4Bd++6H1fCVeBZwWWVYTpcYfjZc3wu8Wpe3XC7x6NEjHB0d5SeLzOfzjZ3TKo4OvU3jMVcJ123TVGmvi3daThgNuNONdG3Ka/FV4luuMdNkKTn+lstlwSa+KXpmnWDppNJh5ZKhllOav9fq5TLTJZ/LgOUg3TbUgX9dPMhXzteR3ncJJN/xjXmoM9uqi5zZ5CfkunRV5/JVQ8wcuQ6ZXieE6tghfLiO8aV4gW8hnJQnMXWXPcLXlyeWDjS71lW+6528iqpuqEPmXYX/iXa5NpvN4E0HtGGAx6pWq1XB38RtUi3g5jrFruy8iOXBBD7714JQPVeWtw0eaNGKlCWudJPJZKPds9kMg8EAh4eH2N/fz8u4c+cO5vM5Tk5ONjaNWP4C61ldfKVsnxairNL5ZzkNAeD09HQDkTJOpZsi6HcZNIVMOlEBqCvfiKERyB1PFoQ40r6OUJdyUydc1dj4jDzJvHzBp7KKRIiQ8dUdApai6wqUAJsKQIySqfVJiICT70Pnd9l+DE1XpzCLAWvc6py/Fo8sa1BcBfBxz7Islw/kDNWCp775ph2vHNMHPqe5K731zhpn67lrLLU0sk9CHNRybrvya7oXL0u+o/IajQZarRbeeOMNpGmK4XAIADg+Pjb1BqvOEJBBDasczbglfPmdoK6gqwsHWYerXWV4uhYgCG2nz1GwzblvObylQ340GuV9bS0UCMW1rJOP+A857K38G3NhBawma5m7xBJIgaSdABnWO2SxDrg20ABWANKLtmQXfZBhHSBtsDbSM/4P5bv26fqu/XaBJxgrd8Hmz6lvfMHYKFSUYKtWjvzJ34tAcLbM1v+rDKvpCrPjGVbzVSHfcDjE2dkZgPXYt1qtjQUGLr5ovedprlunj9Fpy/LpKiDnnEu+as98c5m+U1pLx9Xkjat+nrbdbmM+n2M2mwXjFAq7QEOh4NJjNB3EGgstj8s2sXSmkL4L0QNddHEToIzPJYQnaLLfp1PFgK+cGLv3uvxM256/Ibq9xKcOoCAFD4Dwa+NiIFRv3ibE0EndPszr4ivWHLfmsOTnlh/JlY/np3fSr2XJ6RhepOFQpp9D6MJHD77fVjk+qMM3FuJPidUhXXLbByE8X8r65XKp+orkmFM+vojEp6tpOyh9cyMkPa/DZW9ouoiL5/sgdBwtcOnSMeVqPKNKeUDxCgP+bDqdotvtFvgMLXqXZVXRF3zjzD/LyhCNjxWCsWWFMIFrZUyo4nhTFWVgd/DnRw668Gm1Wvh3/+7f4b333gMAfPnll/jP//k/b+ygbTabBSa5zQuZbzrswvjfRHAFHuoqv06DLsbwkHcdSCWZ7okNFf4c6IhMbUGFVc5VOBilcK7bwC+LS51pY8qR7Xbd6VIFl9hx9SljfJcIle8rj3YljcdjHB4e4h//439cWPEIAH/zN3+Dr776Cp1Op7AT1OVkpU/XyknLcehzuvO6fUEyy8ikvtcMDV6uT2mXK/okbmWAAlnD4RBZluHNN99Er9fDYDBAo9HAkydPkCTr3Z109A9vL4CNXSsSHzKMZJslUD/wdkpFl4yzXq+Hbrebn84ymUxynidBK8vV17JtPI12H48mP5Lk8m7lTz/9FKPRCKenpybPpd3m9+7dy+sZjUYYj8fBMkWb41peTR/ndG3daUzlEb48/Xg8VnEsa/S46Jkb3cB6wcBwOESz2cRsNlPvOXYFEggW5wssR0uk+ykanQaavSYazQYa7fUO2UazAbpDFg3kd8eicVF+gsJuWfmZIcuDsvnuWQCXG2HXaQtH+Sb8a6I+L3aO51kea2UB0ozRiQh6Oo8O1nBR0hTa43qv4ClxybJ1AHb0+Qiz0xmy1UVAdrFpe7RardxIJ5rlq6QL5VNTPA5HLgPK0vc24KrwKNvmGIdf7DsqX0sr74jnQQZL9pOsGo/HaLfbhTu/Q5ybMXCT7ELJl+vCXcpnqdNVmWsWXWg6QZ124C5AjG/NJS/l81elf+qA65q/1jhoNrxrvF41mrdgV3yw24ZQG0DLp/na6ugzqV/F+nwsu22Xx5O3z3XVD4HPr6DZtXTii5RlsRvfquhddV6RRaAF8ix/AdUt/URS34/1I3N/Bb+SKzR/CFh+qpB7gUPLLIsn98XUCTH6Q0xbRqPRhn+bdkPLNuyyrNPaqB5TXIUIXc5OX5kxdbrKuyqBvC2jJaZ+qtdnjJDDgqDT6aDf7+Pdd9/F+++/D+By14lG1FI4Ws7GMm3gzHaXBe91QgyTdjmPQ/KHvIsdb1cwxMUzfKDRTpXyYvPIcXEFH+SzqsJKHnVJaUPKDqWnqvMxFJ9tgabwAfUH5HkbLaPChaPF+2L7v8x4+QIiVsDMKoPTZ5qmuHXrVn487ng8zq8xoEAPBWNdOPjwj1XCy5Yhx1YLbG1Df3LhHZKP3/VLwcx2u41+v58fQy0DEFrZMX0dO+dknVR2mqYFIzWmj1zjUIW38fEnY2YwGGA8HmM8HucLZLS+azQa6Pf7ef3L5RKTyQSArmvRc1mObIPloLEcAC79WabhgS56Hqv7lnEG8HaSwdVsNjGfz4NoX+3Li92WyfSi/5MlstZFPWkCukt2hRWSVbLeKZusd8qiAdB9srRbFmCfCfuH8h3Kd/Y7QWIGaS8bZTW2+F3bFZv3hwzGyvyeerU7YTeTO4KzMgh78Wy1WGE1W63fr4DFaIHlcOl0XEh+FQsuXk/OmtAjsuuo10pbptwqzlZLZy1Tns9WL2Or+IDzDpeziTvhXLLuJtumsTqJld6nF1m2im9cYwNJrmeW3h1Cty7H4K74JyxfD4cY27lMXl8ZMaDpMlqaKjz+pkBM+0LowAeUj9+zZ6Wr4lfaNmg+z1cdfLyqzvLKQFmfS4hPLaS80P5wyQsrX4xPS9pJPns51n8k05YZxxhfFYG0VXma0Dq1Mrmuxo9xJpC6OAVoLd8ML5vjp713+aEseorxacs0lr1u1cvTaDiE8ugQfSsUXHaCq16fvNFA2zBKNLMrfL+s710NxvoGow7DTkKsorstJ1sM7Ipi2G630W63Aaz78fz8fIOpvP/++/gn/+Sf5Dh/8MEHePjwIfb29rzlz+fz/J6wRqOBbre7sSpnuVw6GZkFsQ691+CGuvuwzvKqGrPboI86ywwtK0TxIUWnjJCh8svMx6qgte2qArJXUYcFoYYRD24AxdWNu2Tk1jUviIY7nQ7eeOMN/OVf/iV+9KMf5fIkTVOkaYr5fG4qtaQ405xwOfx4EM9KowWSpDIfogPJdD6HUUhgzGqftms+hl4ODg7Q6XTw8uXLPHCYpinu3LmTH0FL9fAVvpbBFYK/xe8txw8FjOWOTn6XrdZ+aYRZDnRXf0mcqL+lk576iPAkmM1meUC11Wohy4r3K/OVxc1mE/fu3UOv10O/38cnn3yCwWBQ6v5k3h8h7eRptHRyzPnuMd4vPI1VlgskH9TeEVCddKS2y3nLZY3EUcJytMRqvMIiWSBJEzRvr++RTTvp+i7ZlnGXbJLku2TlDln1/lgWjC3slL145mq7F5Qg58YOVFfg1arOMYwbgdgY/MBoROCVrTJMX0wx+nyERnIxxxb27m0Cute4jMyyHFjA+kSgfr+fnxQwm82uRaeqClep47qclxy0e6opv+VECwna0HuXs0wrbz6f48svv8zrr/MO712AKnOjTPnyZAkuI7Rd6z7Zrf2+arju+jnsgo1wlbBLfW9Bmqb5wtIyO4220UYXnUgfAZ+jnIfyMnaRL1b1K90EsGSi9V5LQ+l8ZflwCLUHLR+IBVagpg6/SJkApQ8sf5PLvtd+k75BNqO0d2VfarKVIFZmu+SttfB2W8BtZgI6mU22keNNtnu320WSrE+qWi6XuY+J8vAyWq2W6Zuoox3blM9JkmychFgVb42vh7QjyzI1rzU3YviAlla7T5bXGQoWTdcxbmUD3WowVma2jJkYJELqiYG6iF1O0m0J9m2Uy89Mt5yH7XYbd+/exb1799Dv9/O89+/fxze+8Y1CeQcHB7h3717uVOS7mHg7uLAghe4qjIOvg9J108GnOIXSiRzrWEbL63Lldb2LCUKElGkJN8spbuHge3bdhnrdQi7E+RZaR4ygrNqP1o5Pl/LMnVI+g6Qug2KbsFwuMRgMckVZBkikMyC2z2MDQaGKXKyskQ5HrUwZPIzB13KOcHwtyLIMnU4nD8g2Gg2MRiNkWZYvtAoJvMr6Q/pI069C8OXfaaGX1rcuHELkB6dFrf0uuihz9ze1ZzQa5Qtt+BE72pyPBZdOy/mKRlscyurFsXOYt1cbM447540aP7Hqt8pNkovgf7bCarrKd802mg0gwzoQu0o2g7JZku+WTZKL78k68Fr4jsvvwMU7sAAtoAdEXV1tdG+h3TIQK48fDhmiGPLzlKfhlmXrvp6fz4HVGsfFYLHeGdvYXCTjRSHbXKBB32mcNZy0OugZ390eOx9D+HxM2TFOU58slXPKh2vMWJTpJynfXPLOZVtInibLdPWL3GHxdQOfAy3EKWv5i+R89PVz6HzQ5o/UkSUd3fTxLSOLtzFvQyFG373JII8StfiXTxctCzHlWvaki/9rz3w4+/w426KJMj4IzpfqxquKnzlkXGN0A5knxDaywEcvPjutSn+H2C0WuOZkCJ1Y6UJ1Pk2Wch8C+fP5d63ckP6L8Xm58oeMUxUZovHMEBqlNNxHoAUnOe7L5XLjajg+JjHtDPFpWBAiG6w+kHasD09fnTE808LFhW+oHq/V5eN1lt+kbB3aew18uMSANxhrgXRc3VQF10VU26ynDmg2m4WjhzW4c+cO/sW/+Bf5PX6Ey4MHD/DNb36zkDZNU/yjf/SP8jtjP/30U3z00UeFNEmSoN1u58HYxWKRB2+3DTeVxm4y1OmccClk1wG+ue9jzrGGhW+Xq+YsjBEyIauj5CqmXbr/+TqN9bp5Cyl6FHyx6nDJ0Kt2HlUxGC2YTqf4u7/7OyyXS7z11lv5fZmnp6cYj8eYTqdIkvVdKS5nYKyxGeKQlnkIXIq81ieEv0wny5ZGlWt86R0tuKJn8k4T/qkB3RV7eHiIt99+G++//z7a7TZ++tOfYjKZoNfr4fT0NE/Lj3/l7SN8XXWGOGZ86XgdtJiB7oklXGjnrkzP8ZXffQ4FyzmlPZcL3uSuXa0+jud4PMann36aHxU9GAwwmUzQarXMnQchjnJpsGgGTIhzmjsFYgycmHnqKwu43BFNcrPMneoakIOD6Gg6nSJbZlicrldlZ8iQdlO07rTWAdh0fY9skiZopJe7Zenu2CRx75DNn4E9x+VvjlfUrlPZByLYyssy76HleeQUEahsBJE1HDZeKumyC/xWGRajBU5+fYJswQJpKB6HW9VhJ3eqc14m+TrJbH5yBd13PpvNouu/SeBzRFUZg1jwyQqX44zzfEs+aHxe27H5dQFLTlL/uRx+lE7TvSx9KbSPq4yFtUD9VQHLXqjiHH4N8UB0Tos5aMHjLh2dqIHmw5W6c2zwZZfbGwJX5f+tGrSisbF8RpRum+PhC5AQWLa4T54QcF1Ms9W31cZQ30GInyTUl0InhXF/vcRDuzPTkqlWsKgMbZQNprnAmheyjZIvaTY+xS20dPwaKSq/0Wig0+lE6SMWyA1pZcu0bGjXiQTc1+gLQseCteu1ankhfmfph3DlifWVbtO3Ku2JUDCDsXU5Vb6Ohs1VgZzwdIyWPMaA75yVeZfLJRaLBZ4/f46joyPcv38/d1o8e/askIeCsHUwr9ewXdCEFVCNMdchfGOV+1CwnOkxeTn4mLXmDLKcQyEOoRD8LFwsAS7HnY7/DOkXq09cOMRA3Uacb7xcimTdvEw6peSRfJZR4lKcy4CPJnzvQurVaIIbSESb5+fn+OSTT3B0dFTYgeJqH6drXxpNEbbmmG8+uRyJIaDlLTs/OG1o89znrKb30+kUo9EoN0AWiwVGoxHOz88xHo8LRxPLdsiAhXzvwyeWDnma1WpVOO5X5nUZ+HXNa9/YcRqVc5+AdtglSYI7d+7gBz/4AZ4/f47f/OY3yLIM3W43L4cC+1rgnX/XnOSu/idnRsi8kvldPIpDqFzjwS+Zn4D4SKgTxzdfNf7Gj10uwBLAFGg018G4+XS+vq92b32UcbISwVgKziaXn1ljvQs2awj9IMlARxbz4CY/vjhxbEsNua/VzJOs0+flW4FZ+Y7KcNUl3/GAMAVgswzL8yVWsxUSJFhOl+vdyKtsHdC+qMfSaTTgNKfRdaxzkhvT8/k815t2aeGaBhp9W3LM4smh81vrZzkGlgPJpXuFjrl0Olt5pfzU3tH3unXSVxWsfnGNiU/OJMl6QZt13ZGrnJCyQwMHMeXuAvB+jtE3XXPGmp9lbFZeXlld2ir3uoG3q9FoYG9vD61WC6PRCIvFQr3iYpfwlyD5N6Dz5zJtcNlass5dgJsgC6S9YaWpCpx+Y+RzCC4xPjqtrXX4RmLK0PihxXdlHWXnDgeX7I0pw+JFIX7EEAjVu0J10xgb1IIQOaTprFIfkf0Xog+50nGIoQ9pk1TpF5+vLPQ5fxfj5wypL0TP02ygELutTN9Z89nHJ613pXfGVoUYxlQHE3tVgffLdDrdWB3ig9lshuFwiF/+8pcYj8d4++2383dffvllIW2/3y+s2HkNRXhNp9VgV/rOxbxjeJavPB/T9gk8LkS1crhiQU4OiYt1d0IsPnVAjLJfZ95tAPUVXwnmG2vNyVm3MVUnWPyO6Iy39+joCI8fP8ZsNiscyyp3fpYx+LRVlD4l0qdMW45tVxoqywpQSmelnMM8rewX665Cq520WpL6eTAY4OjoCFmWodVqYTabYTAY5Auu6M553gb+T2XSp4ZTiALqokFpvCZJktMSv0tGBtBijAgNrLRagEcq93zsrCOPkuRyd95kMsE3vvEN/Pt//+/xp3/6p/irv/or7O3t4eDgAOPxGPP5POfJ0+lUNei1NvP+0trA00iHATcupfHoqs/V/xpodbtW/NJdnTQXeDBZlhsL1Ga5Wz0vawkkowTNdhPtThvTsynG4zG6b3TR7Dcvd8KmIhjb2NwlKz/XSAu8+dckfoesVs5lvJUFXvPYqLGIQ0nrBa3M7PIzp5PVOug6fTLF8nyJZrO5lhNL3fmiOcxiZTyNMXeMh5RBecbjcS7LXuX7Yn3ppDPMkv2ud/Teem7JTQs/y6nI80lZJfPwz1BdLRZuul2oLZjRxorrM7EOc9qBLueZlDGWrAp1LLtgl+wHH1jymr+Xz1w6mGu+VqXdXbPNyoLVF0S7Dx8+xOHhIX77298WTnMB1n2gnaCySxC6UDtmLHeJ770qdMghZMFTWdD4SWgfhgaeqgbY6gDN5xKLv0sHicGBvsf6QngZdc65WP0xRF74gpR10VcMkC2q8WipD8b4MuoaC42+5L24lt9L21Euwadr1wmka8eOIT+6O7a+XeH7rvmxEYzdFtI+B4oLyV0S6LsAjUajcFQw3/Emmcl4PMavfvWrnJB///d/H//wH/5DHB4eYjabqQ5HX92vQYddoVOpIIQ4yWPANZerBNPkd01IS8e4r7y6+Fmsc4FDlmUbR4lI51MZYcjTySCrDOTQ+06ng2aziel0umEs7oJiHGMMlnXCW88tJ1MMbpqTyLczNiaowcfIMp41AyFm7oSCz4FDO/zOzs7y0xmWy2Uud2TA0QUh93HK9lo0zR2v1C9W/a557zM8LP5FdKY5GjU8XO2QZUn+0u12cXBwgO985zt466238PTpU3z++ed4/vw5hsOhemyMz5EeesSMzOdzHmpzROZ1tTcEZB1Eg7IcH52F6qtU/nQ6RZqmeOutt3Dv3j3M5/M8wNxsNtHpdPKFdN1uF2maFhYtyLplWyQuxHMk/YbMfYsGtXdaP4TMUWoXBZ7J4F0sFjlv6/f76HQ6+e/hcIjVahWkg2pt4HOPju8mnDRemSTrKzkO9g8wn83XJ8+MllhNV3kgtnXYyu+QTZIEaGB9L2wjudwBS/y4wQKd1Bc8OHuxU7awixWXz/UOFX2rTINsvRUWhR2xlDdT0oaAlizD5e7ZDFiMF5i+mObPk4u/1XRVoGONXkhv4XO+DFA5Lh4P6HbNarUq2EhloQ69aluBJc5LyvAFCbHOWksfdpWlHclmyQNXPVR+zNFpZWBX7MIQcPF+nsayMWV/cz3L1Q801wDkO2Q1/VaTX5ZOYckADhK/XXHahYA1Dj7eWraeKn1TV9+G0Oe2QLMFFosFWq0WOp0O3nvvPbz77rt48803cXZ2hp/85CcYj8dXjlvou5D5wcvgundon8ektUDjP9a7UBtdlhOLw66A1pZQ+Stlv6WHyfosWy0UV618kulSNlu4a3wvljdodKTZdrF6owtny9cj8ScfhVY+nbJkjUHInLP61+VP0uqyynX5E+Q4h9RZh24q03Kdg+MlfQK8ft63obtSY/gN7xc+9t1ud4MWOp0O9vb2cHJyki+01+aypVuH8DQXb5DpfO0L1dt8eaVuE+ODs96HlBVTfhldpxCM3YYiGsJQAX+H1mHQvipARw0S0HFawOURdwTT6RR/+7d/m//+wQ9+gN/7vd8DAPMOpBjBtqtKytcVNMcyQRkFKiatz+AKNRBdSgb/7qPHEAEZC2UZfx1GiYWLplRy5Y+vNO90Ouh0OjnPoLzymNJQ4RqquF4Fn/D1hw8sRdmqQ9K7DHZo/WPhFLsqWSq01wE+mqaFQYPBAO12G3t7e3kwViqbVJ6EJLGPGYlR4rVx8tG6NX5lwUVfvvnGA/ouvi6fdzodHB4e4v3338e3v/1t/K//9b/wxRdf5MdFt9vtgvGkKaWaYu9zimq/6VmoTiifc8ep6x7mkPIsPLU5FaP3yOdk2M1mM7Tbbbz55psbwdg0TdFut/P2UTBW0q41Dlb98rurTS76C+njUF4k20T3cfLjKSlQ2uv1cPfuXcznc8znc4xGIzUYG+Js1Jwh/J4fy6nTarWwt7eHwWCANE3XwdiLwHHSSpD2UjSaF3SZZOvjixu4PMY4SfLjh5Pk8hml3wjCsvcUN82SbDMgS/l4eyHknjKc5nHFrNyLhDZk/Gt2+Yy+ZhmQAYvhAqMvRwWHW5qm+ZhTWm2VdKyuajmMSH5I/q8Z4XJ+0SJXjr+PL7h4i5W2Tvmi6SSuun3PfKDpQ672SPxiHTjymcW3+Dwn2cGdcFZZr2ETJM/m8l/bTSz1A/lcA7ouqdVq5TvmfTiF2h4h6ULnzVWDhZMl+y0+Z0FoO2P14Fd9LpHOQvpIu93GO++8g+9973v41re+hdPTU/zqV78qBGN3haYIQuSX9t5FC7H8NMRfJMsP6UfL7t+1MagKUqcNhVB9X5Zdpv+kTRnqX9Hw1XhekmyeCCTxl+VbECMDYuePZmto+cguabVa6jUq9EzaL1ZbXePsG98Qf4r2LrQfrXQhvgRfeb733O8hQdtNKvu6zLwLBekfo0009A4ADg4O8M477+Czzz7D0dFRqTpCoY42hsqN0LyavVOm7FCItUNj6722Y4pjEH3VBGhVoBUd1C8uhpJlWeHo4vPzc5ycnBTSzWaz/KgVAPjiiy/w4x//GM+fP98oM8uywhEsu36P0muoD+oSOqGGnUuJCOUJIcw61tD0lRWCU5l3sXhkWYY0TdHtdvPncrEG31FPyolLUZd4VlHO64Q6x7AMEE2SEmXRnaXghb7X6ozFsS4ILWu1WuVH6Jc56rEszuTop+/8OS/XcsRJp6Ism3+XCrrWhlAjhQIInKbke163ZpA1Gg20Wi1Mp1M8e/YMR0dHuHPnDjqdDm7fvp0HY60d9fTdMthCDL2QZzHveZoYYy/GAJf5NOXaZVTTcxoXXv/+/j7++I//GG+//Ta+8Y1v4NatWwCQH8NM9MrvG5OBhKryRUvncpZTG7QV2vTO2rUe4sCh9pH+Sac2jMdjvPvuu/jud7+LLMswm83wP//n/8TJyUkBTzl3aQc+LTRy1U30L+cA9fd8PsdkMsF4PM4D53x+YQWMn42xt7+Ht999G6enp3j69Cnah2209tc7ZrPGBQ4Jiv9AMVibIQ+wZll2GSxN1kFVmQbA5S7UPHYrnGis6RtBVwqcJpn63AQeiM3W9WdZhvHjMZbjZSHdcroZ7KZFYNzZwI+SleMaIkNdIMdX8jQfcLreln5RxdHpKrOMs6VMv8jnMVCH3qaVofErSmMtAtvGOLxKoOlQloNcgxC7h+QAv5aAp3GNq5RVmo7mqpv0rpsEso1lbXSp827DwfyqAdfNlsslxuMxBoMBkiRBt9vFv/pX/wpPnz7FD3/4Q2RZhl6vh8ViodL2LgPn9XIHI72PgW3a6tftB7gqoHbK6xdcNiuHUP9EHTiGQgwPku92jV+57GMZBNTsbG4Tyrun6bsmj8uADCz6dvvG2OnWO5dstvLG0HcdwK/SkmNWxm9n2RGaziGPTB6Px2g0Guj3+xv5Hzx4kPt4syzD8+fPMZlMCvUuFovSpzTEbIbwga/ftDT8eYx/dJdBa/e13hkr4esgROsAUv4IuNOWG5S0eo8rf7PZLJ+o5OSif0p3fHyMX/3qV6aDej6fFwSEdA6/hlcDpJFrvb9qfKQwDmHwrvK0MlxQN43X1Y9SAVytVmi1Wuj1eurdnJSG3y8pAztW3/oCWi786gItOGSl8ZVTFjfNEaUpDC5l02qHC/cq+GqONKsPqhq3VBfdb2EdvePC1defsbiE0mkM7cSMVSGgI575xl8LoFmQpmke2Do/P8f5+TmSJCnswpQyXtIpGfwyACZx0Wi4rFPPxc9jHL0+Y9Wn2GuGn689ls4ErFe3fu9738PDhw/R6/Xye3r5kbkACkFyXn+IA8wVIKkSbJB5tb4t65STzj7SQ2/duoW33347p2Paxc3bJecfOfPlXTqSRql+66h+ALnjVFtEQulmwxmSdoLb3duYnEwwO5uh0W6g2W0iSy93yq6RwzpAevGZ4PJu2EKA1fF749lF0Nb1nL/baEPg9Myy9X2vhfQXgdhsmWF2PMNisNjIo5Yj+Le809UKjmiy1qpH1kfpNd7lmkt1Gv9l+WFMXk7rkm/55mcobj4eU4UPhODC22fxA58zUJblgq+TX8KaUyH95MofWrf8l+VqjkzX/NXmgvSTWPrFTfBlSD0wxLHt4iWaTA2pPwa2aQdeNfBdavP5+ioD2t39wQcf4NatW/jxj3+M5XKZ34m8y8FY1/zV+GasfNTslhC91leehp/8/qrwcd6Hsp2ueb0tXKrYE4Cu11ntKKOj+OxA/tyl28TW66pTs3G5vLLmSV0yydUn0i9E+El8rTEM6a8Q+aLxFh+9VaVFXk8ohPJArsP49OUkKZ4EtlgscnuI56UTpPb29vJnPBDLy5PBWJdNH9IenrcslJUfoXksvdEnc6rOszJ68MYxxdsUWNsov4ow4Iqn7/m28YkpkyYhQbvdRqvVyp17wNpIOT8/d+5Ems/n+E//6T/hs88+K9yNNJlMCmURTCYTr4NkV2HbtH3V9bzqsE0BcF1AQpgfL1IntFotAMiPcwSAe/fu4R/8g3+Ae/fu4f79+wDWTub/8T/+B7788ksVRw4uRU2DWIfjTXB4cPC1P1aR8xmKsU4RK9CpOaJDFOi65ho/Wr8uRTfUGa+Vw3dh8Z3MWll85x8FJrVjbKgebc7w97z/LaegNJZcCqO1a5GCSGma4sMPP8Snn36aB/roOe8bWUen00GapphMJhv3a1pKsVVWCLgMPAJ55CjVCyAP9FvGrPytlc/v45H0Rc/lHYMuZ67WT+PxGE+ePMlPHqEjeKmPx+NxoS98ThYXzYXosiGOMZfRKPNqdxrJcuh/Pp/ntCjbQjtTHz58iP39/fxUBzlneD+122202+389BZ5EoSr/do8GgwGGI1GeXv4XbcAcufr/fv3MRgM1uWNMqyy9ek1y9VyzSsuAqSNTgPd+10gZXM+wfoo4ovvG7tncXnUMb9vNr8LFiKtfM7yXf5M1AAtIAK32fp/MV5g9MVoHZAFc4xcFLycLIN0X41eLF4aAtYiMl4fOcGtFd4+niDx13iLxtN9wPlLVbvBlb9uHasOh5fkS2XbznkJ162lw0suXnaVR3nqsOXK+hN2yY7UeDn99u0kjZkL1E9cHrgWJvF5GEtHUrYT74+1X7YBIWNv6SgEMXxM1qnpotfdJ9cNckyIn6Rpitlshul0ml/7Rcdtv/vuu2i327h79y7Ozs5wdnaGJCmedOKr57rBZeNkWZbbEDG7p3z2mjUH65A7ZWHX/MxUhnUqTQhYdiNQlKsEPt9QKEgfsixHnphi2RGu8svgtA0IlSfa/NFOdSGokx9Le1bauSH1xc5zLX/oGPAdq5rct+zZUNBODIsFbf7wd/w7P5XQAkozHA7zZ8PhEC9fvsQ3vvENvP/++wDW7T08PESSJBgMBk6bR44xPb8qCNFxfGk0f1AMLVlpt90PWvkFT0UsQ4oVJNtgeFWMOC1/HcZh3WA5JTmuUsHjQoznH4/H+fni0+kUn376KT755JNC2Wma5s4mWacFu66sb5u2XfXsmoK961BV0apKi5aBG1J2iKPH987leA+pm8/9ZrOJ/f193Lt3D2+//TaAtZOb7iXk9/S5DCEOPnp29Z+Wtk6DKaQ+X1oXTq52u5y0oXi58CjbVy7aukq+5HJCcFzqNLRcwSX+XDOMY+gg1gEfUgeVq9GBD7hyT4r5+fl54b5GXzlpmqpBMspbxmCxgia8XMvxaz2n76QHyV12IWMTQiehdMnrlPknkwmazSZGo1HuvMuyLD+amAcOpCNC9h03+MryUJ+jVcoUOYerOKgAbARPeHkUjAUujx8mA9yqN2bnfQjwHf28Tt4PRHd5vUsgm2VYTtb34GYNNm6rDMvZEkmaIGmwdiQXfcmCrWgAjWajeERxdhG8zS4CrpmgV36H60Vwlv/m6bJVhmyhjH12mYZ+L8dLzAdzZEsRjC3pCNRsExf47DLNsUBjlqZpvgCF4xszZ7SAj9UGTQ/T5IWGi0uu0DyXaWN0GSnnOJ9ytcMqN8S2seqwxlTrC4sPyzIsXliVZ/Fyyvg8Yu3CXbIXffoJUKQVS5d15ePvtUVOMq+mC8T2mavvfbpDGR01xMZz5dfy+mwOVx/KOewakzr9Oy4bxMcPt4GPVrbFC630i8UCw+EQp6enSNM0X3hK3+nobdJjLNiVeV+GxwHFcZGncWlptHJi9fXQMmJ1Dq3csvkseqpjvGNksIZDnfa2D4dYW0XaUi67MRauaq6V5aNV2+nSmULmQllfUVU5p+nPMVCH3Ar1+4SmiZEnBJp/hY6uBi7t4/v37+eLYrIsQ6fTwWKxwGQyyU9hsOZ6VTkaQ6M+HTG0HF63j8+XbV+VvGXBuWzc12lVmVkZBboqXHWdddfnKms6nRaOQNF2t/7lX/4lPvzwQwDryf7o0SOzvCyrtvKKl3PTxjmEEZQRTmXhJvbhVUBVYV2lntBypIP4KvuU7rJpNBrY398HsBboDx48wGAwwPPnz7FcLjEcDpGmab6LpKwiRFCX88tV/jb7sYzDltKT0zfkrkceXAhRLnzGiKtfrDGpqy995VRZbWg50bU+8Y2ZJdfouwtPGldZHt/tzu/7CHFkxjxzOdpcwYFms2m2V9bBd/+22+38qgM65kZrm6Rhft+JCz9XMICe8/HyrebmK/XlnNL6K9SJodXNHSp8vvN+IV6QZetA7C9+8Qvcv38f9+7dy4/UXa1WhZNJQuiC6qrCp0Lmo4veXPRj5ZHP6fgl+kzTNNdhj46O8Mknn6Db7WJvby8/cp/6WDs6mMYh9jh0aoPEV5PdSZIUVuROp1M8fvwYJycnefv5TnIO2TzD9PEUGztXgY1naSdF581OHrjNy0twGWhNUNgJmx9RTPVZ5xBnwGK4wPCLYR7Q5Y556g+qM1tleSCW3q1WK3We877in5Lvcj2D0z7/J/lo3QMp8wKXc//w8DBfnEFXsRAvlE4K17Ht8s4uwkkbY8vZwftiW7qR1BO0+eriF7F6AO9/zYEm9Z8yekaIU0TrU04/Gn3wRTuUh97Rb9f9pBa8qnZhDM0STpL2XTRH75bLZa5LcRnFd+/I8fT1gSUHOD+6yRAj+zkfkjuhALuvbgrUMR/K5v+Lv/gL/PSnP8Wbb76JW7duYTQa5Quf6U4/WX6IrVJGb60CVp00X/i8jp0/Pn2cw3XOy5vg++Jg+Wkt+tqm3iHflbFNfHZHbJl1wHXMxVCI9YGElBEDkv40WnCd0sn1NR+OWj6ZJmZMXGlDdM/YPBbwtsuri6y6tfrv37+P27dvI0mSfMH3YDDA8fGxt69i/AlampC+LztfYuRmKEh5JOk3xmeptSumP53B2G0zGWms+6COAbhqxlmmvlAByo1L2lrvctwmSYLJZFK4T4s7VCRj0yZuGYZ/HcLqqmj3qiBW4d1mndbzkHpD2lGFH2j072KSoaCVaxkVVeuKBe58I5zSNMX+/j76/f6G0xJYH0FKd8mS80MLYPjANQaudlcVrNs0uPn4VuHfmmNWc1KFgBxfq17L6esruw7YBp3HOj99PMH328XbtHnGj1RarVbmfVCWISd/a4qhD3/rGQdLSXbJdO5Al7iUmbMx/FI68avU68LFWr2vzZ8q/CBJ1sGbzz77DKenpzg+PsazZ89MY87Hn0LSuPCJzed6bo2rby7x35zO6PtoNMLR0RG+/PJL9Pv9wk5inofjQTtZt8X7pJFG3weDAabTqV83yIDVYrVRZiEJd3ZOVnnAtdvtotvrrne3pw2cn51jNp+xguijGJBV+WMGLEYLrGYr5BtgPfTP39HijlBjNYT3afW6Ai4ajpx+KJBOdpHL2WvxF5/uGFKGltdyOFZxomlzUdMbXHha4+ADWb6PfrYFLjqTciUGXDpCXTKpDGyrLzk9yraH0IZGD1oaqyxtvla1E6zyYuydq4aq4+uiW5etFzrOVfiWxNHiq1r5sXqKr/467MnpdIr5fI7j42PM53N8/vnn+WLoxWJRuA4lptyQZ3VCrI/Gop+qEGILWXms36H9v+0+rgtifVEEIbaOVVcZvGLByiftUSuPTw8oi0MoH9oWhNpuZfWbOtrjmmNV6vGNeVWI6T+XDRDSthA+5iuL3k+n03whMAHZwfyULTohqOoRzBoeBHXZNCFgyQWLP4RAHboA4SDL9YH/QqXXsDNgMbLZbFYIsEpYLpdoNpsbRw9nWVZYsbdarTCdTnOnVggur2E34CoUdJ8icJU0se266iyfVuJTuXXj3mw2CztUsizDwcEBfv/3fz+/M4/uJSR8Dg4OcPfuXTx+/DjnHSTEQpWJbStH1wFSmSir1GbZ5s4zPvbyPg5XPVXuxvAd+XaTwHKklnXSaQqTFiiycEmSBO12G81mE71eD9PpFMfHx6UUMdk213hp99aG0IdmSNLOIU3ekwOJBzMkXXOnHe8714p5bRy1gAHHmS8U8RkoEnigTo57kiSF49o1vCROBNbuX14P4dtsNjEej/Hf//t/33B0amNngcsA4c9chpDlXNecXxb/0PDQ8sTMMX6UbKvVwvPnz/Hs2TP88pe/NPHnzpkkSXIZR/OjbqC6iV5o5/iXX36J+Xyey1u5U94qxznPZyvMn82xXCwxnU5x671b+PYb38bt27fR6/bw53/+5zh5enK5Q7PB6JruqE0al88zYLlid7tmgLZx1uWIp3d7e3vY39/H6elpvmPeBxTA5Udya7TIF4jlfaFcyyL7kdMjlU+7Yul4L3JGhPBGyYMkvbvGlZdTBXxOUYt38D7iZYXqny4+6ytHo+0Y3TLUKWaVpT3XrvFx5X0V9KU6QMopl75BoM1rnx7lkmUynW/cXXPQN5/kTtxXCUJkDvUvXU/BeelNt+0sqDLXuX5H+vjR0RFevHiBzz//HMCl7Gq1WkFO9psAVRztZdpel3/pVeh7YFO31toVcp835+Mu+aj1mWbDuNKEgo9H+8CV9qrHvk590LJLNYjt92378srID0tf1Hxr1wWa3h2qX4fooz5YrVZ4/PgxXrx4sfGu1WoV+PTh4SGm0ykmk4l61yqHGDqV7VgulxvX+tQBkl8B+iltFm4x9ZTFj+MWC1sPxpZlRrFOt1dBwIaAr52yX3z9xBmbi5jqYByvYbtgKcia8zsEQufYtuaeRqsaXtazOiBUsGrfNScA/6zqdOJ5+RwmxxMdPQwAk8kEWZbh5OQEg8EAZ2dn+TNZVmhfxrQhpj2hUMUgDAWLJ7ocP6G80serQ9PGzodtKkl157fmi688wG8gUpmWAq31uVQGs2y94vDevXsYj8cYj8f5sb6x+os2pjLI4KP1GENWc6rzvqE0dHQgf28F2Xh9vAxXX2pttvDVxkoGYfjqT196rQ6Zzkqr5bXScTyIR4fgoOHieiafl3FMhDhrQ8GiCateOQd4fVKG+niGLFv7XVV2JEmSB/x4wFD2k4/HmE6HxQrZKkMjaWA6nuLo+REWswW63S6yVYZ2q43xYrwuJxMOjAxYYQUs2fPV+rl5fLGnrQRpmubGvjXGknf1ej10u10cHx/n/NGan/LfogWtbynPfD5HkiT5qUF8ZxKVIwMN/Lm8QkC2qeyuYOuZBRZPCskX0nfa8epauipzxuL1Mo10Dmvzg9pi4a3V4+NpWjqNH7nGsgovCcHzKoC3wQpIhuAY2w4+7vSdHyUt9S76Hqof0hhzHsD7PE3TXH+wePWugoZvqL5i5edl83lmzbeQ+R0CuzIPYkDiSvNGyombRFMusGwADSzdOyStlS/Gxvk6gTYmMbKpjByzdHOuO3H8YkDjT2XsGe1dXfo/QWw5sfaQj761fi5jc/hs47LzV5YdY2dL2e/S/WU5PtnmwjWUx2l2T4hOWhftyYWrhIO8n1zaVBwfa374IETvqJM3+3RwX1qXveDD3aojBJcQnfJKdsaWUbBeC9fyEDPZ5/N51CqTV0Wh/LrB133cYp3IGvjy+/rYtxqprNONC2NyOCwWCzx+/Dgv58033wQAfP755/j888/x7NkzDIfDjR1sV73ibJfpsixuMYqzVh83aIDNMfEpr5Zze1twFfMq1BiLpV/u2JV5Xfel07PFYoE0TfGtb30L5+fnOD8/z++KonShBqkMPPB6rLQaaLs7ZFpK43J2EtBxNy665Q7/UKeK5cBzGVt8TDRnOb9zTu5c1QwR3gd1gtZXjUYDrVYLaZqi2+1iOp1iNBqZRqpVTki9Fv3EypgQI8LHz2Kc25I+Go0Gut0u0jTFcDhU74ktg3OdkGXr+4DpWFyua1jBA60MbawoaNlqtXB6eoqTkxPs7e2h0+nk98BPp9NCcJMHFvgueu4krto/aZqi3W7nPNcK3BBfXS6XuH37dn5X/XA4LNxjzfkH5eOf/Lgt3l/anaA07/kuaXrOnSxJkmw4Mqg81+5ugqp9WEYntWjLlV77zqGsY9KSazJIGuLE4Gm0Xc9avrKO3thTanzp+Hi4HI1WXk6Hu+T3KEtnIeNipZc8SqYLGTufA5b4I6cvurvdZ6NtG8rSQKhtyttsObm1uUn9Y13D8RrWkGVZLpubzSaybL0omsu3q9ZP6gSpq5aRHZZOGsoruXz+uoLV91VkeFWQY0J6WFV6l/Rxk+ePhBB7OTQIVDeUmduuuSx1eVd+WVbMSRVl4k11g+ab4GDpL2VwJr+Hq36tnljf0lXNubL2SCiE+EwJYnf4VqG5WoOxoU64KuW8Kky4CpSZKJoi7XP+Wcr5a7h68DlS6oZtKDx14FpXgCzGOewykC3lIbauqoKZB1XJAXp+fp6/f/ToEX7zm9/g8ePHOD09LfACUna4EIzlMZJXuAJBVZxOLkdPbKDBKtvllKijPHKOh/JaTbGzHClaXpfidVVQFy8JkVfab21uUoBif38f7XY7V2oHg0G+m0rmsYCcfL1eL98lZylyGi5yjF38Ro5pqFNZ4quVS+8ajUa+UEsLTJBDhPrQpdjL8uV7n2zjaTR69jl8NQekliZEf/WNkc9wJKf7ZDIpBJh88sVFgxpOPn7iAkkLIbqApGX5TvavxsP4O44/P9aWlxkbjNmGfUK4akdWh9YfOneprul0iuVyiTt37qDVamGxWGA2m2EwGCDLsvw4RAD5PXaUP5SOLYiVI8QnaPz4uBHfkEeEa84365hZSq/NE21eUVp51zeHRqNRCGhrbbIgRE/kaX06TKhcCAFtvlDfhji3rT6Wz+R8l+Pga0+ofmiVo/EZiR+NMXB5aoymU2m0KNvN8/Jj/fkzjk/s1REu/m5BiP4e2mecBq0yfHLKwtslA3jdElf5nuMt65PpZRpNZss+qEt/9YGvn6z0BBqPlL81viP7V17pEKIDhOAbC1fV71VA431JkuDevXtYrVb5aTnAzWgPYDusQ2z5EHszls5lPZpNrOW/bru3TqhCO7H9oNlcdUMZ20TmC5GDPj2L1xvbxz5cQtrjk6FSNskTeLRPq35f+yQOIXaxy+b09btWp/Ze6pM+0OzRbfBel25Wpl4trS8QbfXpdDrd6NOQDQbac+K/MTTuG1cL921CqD+DgNuLZeZ3DN+sfWeshXCIMlnVWREKMcbedQjzqnVahhi/V9bHZH1wXX1TBkKVyF2EqoycoE6BVJdDCCivwFhluxSDEF4jywnJpykcmhDkaTUng9UGiYevPir77Owsf//FF19gtVrh9PQ03zHCIWQFUKxQtRxYVvqrgFDnRagxGgJaufQZctSeRRP8+VWsFL6OMfP1DR8T2Tc+5Z2O2rx16xb29/eRZevAD92b7lPo5Xu6O3Y0Gpl3pvqMJZeuRH3BnYdZZq8S1/rGcn5qbVssFhuLNuifAiyuOc4VX82pJ/mqy5GiBXOsdlh8Uho1hEsZuuZ9odVl8RLauct1MUCXDxqE4kttk3Qo+8+lc3M64/hptGTNC9czn9FKdc5ms5zmtDa42lE3yHZS/2rBO5es0PQUa45yOiUjezqd4o033sDe3h4ajQbG4zHOzs5yPkR9xE++4f3mmmuET4gTy9U2ToMaj7LuXKU+tRZ08T7jQXqLxjTHEndKSDxoB/tisciPOi7TPz6a9/GfmPnlA0uuUPtj7pfTcLTyyDSyvb5+dckL173ksi7JAxuNRr6DbTabFY7hJ+A0YrWf46vp0JK++A5Y7aj6EAeWD0LtHA343KJyiD60/vbZWdpv65ksxydnXHmtPuBym5dvOdvKQJUx9MljDi4dxKeP+MaI9D46TaCKrlQGysgdgquaO9Z4UP/ev38fy+USjx8/LuhPLoc4panShm2AxUtdtO7qyxh5ZtkWWrm8/Ovuw1Ac6vArcPDZWj4cysoPiz+H8mxeTmha13sp812ypSpfK2tDhvyWuoJLV/PZvDKN1WeaXLfSa2lcdWj1uOoA4NTzQ+dO6FyMBcsWkPWGlO3qXwt/S/5Pp9ONtPKEJAsvTf+2fofwFh9Y81Hjja55Lp9r5UqdSdqIWl0hPJrTgSWzXH1xJccUX7dQlFDn5L0qqAMXH4OMgV3qGx/EOhFuIuyC8hkLLkM+hAlzkEIhxEC1ynb1I2eoLiEpV8NruGxrvKieVquVO/9PT08xn88xm802Aix8V09ZvuBTdn3PQ+vYBriEsZZGeyfBR0MWvfqUOqufX2XwKTgynZbPUi4BoN1uo9vt4uTkBLPZDJ1OB0mS5CsLtV0T5HilOQWsHa2j0SgPHoU4GaRSaAFXIqVjTDp1Q/pKvtPq0wy5ZrOJvb29/GhUUu7lbiCp5LrAp1zzfiprPNfFO1zlUJtdPMRVTl1zOdTQDQkG0GfIohELyhiYHD/teN3r5HtaH/K7R2X/lzFWXXKTOyYajQZ6vd7GXKOFJpPJZINv8LHV6gmZa9PpFOfn595jK3nek5MTLJdLTKfTwphq8z3LMufR6LFgzQXi7zR2y+USzWYTBwcHGI/HG4smqtZJECIbtN8x+aSscI219luC5XTSyrVomuPj07VkXfIIadf8iuEPUg5beoRrblAaLdDC88ljzC28Ld1Qw9HCpQyP5PXK3Xw+nVb+1vQRi/eH4Gr1WwyPcNEe8QLu7N5lu7oKbj6ZQ+/5Qh7eb7vaJ7sA/CSKTqeDb3/725hMJjg7O8N4PMZgMMiD3BrctL7ltsKu2KO70IehOFTFtY4+j+GrLv+E9b6uq/BC/XS+csqUd5Xgs4s4H5ZpeV9LfSTEz+X67UsfkiemrKsEH11bv115rXyWjqb59yxfjARtUanEjWyckM03Pj1elq3lj+UhWl0+KOML2sa8j7GlNKgtGOtT0rbF6HaJgdYNIUyAIJSRuNLeVCgz6UPopqzjd1fgqvGONa6tdLEOV81xURWHMnm2zYti8SSljYJEckdskqzvoosxpKoKVyu9y8G3DYFcJr9PgY3hKVre0HI4X7IcrT7YdZ7mc/iGguY8lkCBCzruk+7H0mhUGjWLxSI/0pjyxwYRLBw1+WM940Ean9PdB5rTjQcuKPgjFXoNtzKKMs/rOu7ch3tMvhjcrLHiAbm6QevTMu3Sggo+fF2OmirjG5JWOhtcc+KqQTOaCWQwwpXXAqvdMqDQbDbz3bCUJknWO2RpsYS8a9FljIfQx3w+x3g8zu+q5W2SeBCMRqN8cViIfOe06rKFyjjleLmcf1IAqtvtYj6fb7TBx1uq6FA+3EP0AimftHxV5kuZ9mtz2JJTrjKpHE77oY5brVyJX4xOrzl0XL85WAtbXG2RdOqya3n/xvQP5bfeu+imLh6s6TWu+kKcypIXuwIDrjqrgqRjiWdofgt8+ol8J+ebTMP5b1md5jr8T9vS/0LrIfm2Wq2QpikePnyYn5azWCxUm2/XwKIXH86hsjiELkLlQxkoYzNfN4TyjKo2oKW/uerWdAyfHeiSuy4IaYtFq65826CJuuwUqZNbOpQmv2Q6Xx+UxctVThkdXUJs/21jfms6tmXza30g55Zrfll6rk8nkrhxIF9ViN4EFBdjEVhXrIWUVweE8iBfmjrme4w888GV7IzdZdCM7ZsmpF1wFcredffZqzReryKUHZ9QAV3GyVIGhzLtCHXQ1AFa2WmaFgIa/LixUIH6qkJdR/tSP4asXuPpXc5mjp9U/uTKfe5ct5yUu2z4u2AbyhLvR+4codXqx8fHWCwWaLVaeXptHtOz6XSKjz/+OD+CkO6jC3UYckerVR8H+t1ut5GmaT6n6XhliadWJ31qNMudxeS8TJIEnU4HzWYzT0P94wKtHTFjyueHdKheFw+T92uHBAbqgpA6fDKL4+wbC353HOc1tHiBvye+5FrcE2LsWbjKNtXV31WdJBKXJLncYRXrZAjBhebgo0eP8OTJk3y+El3SndXE33jZmuyRuGj0IdPN5/N8/EPbd9P0dArOavyHoIyDU3OOaXy6jGNMc9rx9/J7lmXq/eguZ5prTspnLt3cJRd5OzR+oo2H1lYXryD5SYESX5DBcq6RPLp9+zZu376Np0+fFna/yeOOZVt5ebxcek+/fTqeD9+rhKusW+pRsn4596TuwOdACD+rE6rqL74jb8uC5BVVZeRN4/0cysyz+XyODz/8EAcHB/jggw/Q6XRw69at/OjIWB1hmyD1Ow04z4nVV2QZWjkyHeFTh5Nbg6umx236mWODENsEixe56rfsWwll9KFQHHx41UFzVcac8nJdiPwNHGjhpfauTggZT6t+jX9I3uMqP8R2teiwap/4fHahEEpbWjqr/WSruPyQITtiQ/CSONZFa1elK/jG7zrkciEYGzoZ5LtQpH0CeNtgOR9cv+sGnwKybdhGP4fgva32ae0pwxyqCMltlR1aZt3OSa2OqnljBEAZ5TK0P6oIDk2h1nBx1WPxzlhHkoabVg8JHW5sSYFdRskta4SVqdPqZ1//uMbHVX9s+8rMEx/O8rvWVssp6nIaXrfh74JYeuc07svjoh25QIF2t7bbbWf9BHQMODeQQo51DdFH5Dv+n6bpxnFnvEyX49eHk+b0JUOPO4f5blDLWc7bZRlfPpys7zG6qMuRFGN4+PhJCB1bssSVRj6PbT/hphl1oW2i7zGrY2U6jUZ9PFQbuzqdcjH96Kqbz08qR/6Owcv1fDweF+Q58QJ+/yXnaxpePpvPokHXHU6cX9Bdupb8qaKLaXjXoZvw5y4+Zel9vrK1dxpNldFfSPaE6Jn03Fr0FaujWbzVqj/UF2DxJ9lnZXQ6a/6HlkPfl8tlHnA5OjrKd8VpuLnmgG/eS9lcBkLoqi6b1TdHYkHKDj5PXU5Il/5LfFLKxauGOuxSyw4M4WFl9JUQua3lrwJ1lhVSV0xa3t9nZ2fIsixfEGU5wi2duAwfvqp+qaNOjZfyI+gtm7eu+q8SYuy82LLqhqr8T5P9Pj7j65+QOV9mvkjQbCIX79T4YKxd67OFYvhdqE4VgpdWXhn9zQU+W6oO8I1jqO3qy1eGT4fU7fOVaPa1C6+y+j3lteZvXXpTHTYhB9cYVp1XdULlnbHEtEJ2Gfk6ZdtK8C4L7avA7aqNDC5E6mqfPHLNd2dVCOwyXYTAVRonZaBu3KRCEFK+PO6yrl2RQLH/LYdAGWXNVY6vDO701nCqQjNlHFfb5D0hTuVQKIMnvzdQ1m8pQvSd3/8hIaQd0klH+GhjbjnQd41/SENI9o+cu+TwlzuGtfLkHVjL5RLj8Ti/X1kClSv5DJXfbDaRZRmePHkCAM77OCznAq/XRX/NZhOdTgdpmqLZbBaOROZ0RP0REkjQHB1ED7zNSZLku0doV6TsJ56P8sTOJ81w18rZhkyJMaK3qa+65iYfU81ol2VoDgN5ZK1v/ss6NfrW5DA9k6u5JX5aW6x28d/bDBiEpuXzSM6Z0HLkHAzFh3amcwcm/S8Wi437YpMkyXkDLRqx+JRG25K++IIT2Z7lcolWq4W7d+9iOBzi7OwMi8Uix7XZbBb4Xgz9+cDSOeQCGf6dB85Wq9XGcfNV9AstveSV/LlMEwu8fbJMK73PYePS46Sd53Key93zsk6JM6+X71KWeWJ4MelBk8kkP1nC6muS/bK9WXZ5QgDtEj84OMA777yDJ0+e4OjoKD8mXDvuWkIIfWu6nlZOqG0jaTBEFmwbLBkidypo+qGUy1LOEVg6ZQwd1WXPASjwReLRMeDiIVraEHyvwh9XFq6SPi35qPEdoiGyCejZ3/3d3+WyZzgcAoibp5Teh1doOZqsXq1WhasOJEia5POS4+PTGzTQ+LnMq8kGLX8oXDefu2q4qvaWqeMqbbmy/RDDDy1+rMkMS7egd1yGcV3E1T4AG34lyWtC7S0Nl1CItavqkDdl/VpSt/Dl03SKkDpIb3RBaF+4dFb5W7OFJN8NwUXq4bvEQ60+K4OjpoPF2hmxEB2MdQ0aB8uBUgZ2acDLQgyT2FZ7r1rB3oaQDSkzVvkLzberECI4ZNo6GVcI+OrloKWxnKBa+b62aQaJC4e6nb9VoQydckdtTLk+Z7mkLekYiQHXmPCyLQPZwq8uvhGS38fXNd4j2xY6TjEyxOeg2XWw+tY3tiH8ne4/JKeqzKfhwssnBZU7WFwOtRCcLGd4o9FAs9nMncByB47E0+XoCAWf0q7pehrfiFFmfYZOqB4aAzFzxsJpGzpEWZkZW0dI34UYcBbIndQuGc7xCsFlF/mb1k5rPhIf4wt7LL1Ezi1tjnHDP/TeZWvecpkU2pfUFromwdK9eN1avfK9Vo/Ekf/24WjpGfP5fCMYq/HkEL02ps0uXEPwlnWGyJcYB7pVjwZlfAAazqGyQOsTC68sy/IgmA+vWF12f38fd+/eLRz/7AMfvfL5F4rvVdv7dYOvvWUcoloZgO6s9skpnl+zsUPqBS6vkuFXZoRCqH7l4r+W3lO33HSNo4XLdYJP17V8elwurFYrDIfDXAbyO9a1MsviFZNX469Sdlp1+fwBLh+ArDvGfvVBjH+pTPnXBXXNxbraG9rPIbpH3eDTMWXaOuwqXz0huFgyzOfzcuEZy1N8OmCoPyQkfQxOofaKxMVHp7E6XSitWD4qXkYdNq2W3sLJZ0f6yrbK2AUeGjuHY+zXuuoPzRscjPU5Pa8KYifRLsJNx/+qgPeTXMkhDRdaCcSNqiqOw9ewuxASHKhi4PGdJryMsoKvKsQKaA5ZdhkoumrHDM3HUKHvKyt2HKsKyrL1uZzvoXRkPb/JzjUfuJzWq9UqlwEyuEC8P0mSjfvvXAol5T0/P8dwOMzTaDuLqXy+s4c7JmjHmeZs8bWP46c5UWkOU9C12Wyi1+thPB4X6uO7fCzeFWoI8LppDtPK+dlshsVikTsQ5/O5indZmbttGg+d2zGOYEq/DTzKgM+4rgN3C39t9xs/slYapRZP5Ed+a45Oy3FxFcDxoPkvwdJDqE1pmmK5XOZHnLbbbXQ6HWRZhuPjY1V2ljHW5Q5WTT5ZDlQtncZTJS7tdjvnF7LOWOeTDyeJjwxu0L+2E1d+NptNrFYrHB8f5+Ok4eqDEMcLlzca/WrzguPrSy9xcN3lLHGqAoSbHEtLvmj5eVs4H5D5QmUbvef9Nh6PTbxC+AnJRuJ3w+EQL168wO/8zu/g+9//Pn7yk5/g5cuXalst+Uw0qt1LzvtVtqUqP981oPZYwWxJX7xvfHeWW7xImz8az6wLSFe7c+cOWq0WXrx44d2Nb42zXOS0K/66VxFc8kg+Xy6XOD4+zn/TbnqrXNdvrY6yvFprgzxO2bV7ymdHhMg/DReXrLhqHW9XgeubvD924f5hCaHjz8Gl69UJoTbxNvvUZZNpurAFXA8BNv3lIdcmEYTqU1cBUuez/PuxoOnVIfreVUFdY8B5hebXJoitZxdoIxSkXijBOqVHK0c7Pa8syDqcwdhQZ1EZA85SNHxw0xTMbTrceB2x6W9CP8pjJy2cpfEv32nfqcwqyuxVQOj8i3leJ8TwCNdvIE4AaWNJnz7HYhXQjAyXkRLqgPLBdRsiltNUPiuLpzb2Wp0x4+kLDoU673wQ66R1GfNaH7p4mMt45XXugqFmtdsyOjSHm9Y38igfl+Kl4UIBXF8fhfQfx0XD1yrXZ3i5HIMyyOByQsbMH4uX0Q5ifrweTx/qIL8uo6+KTChruPscWVelj1m820qrGXA+fkJzQI6vNodd7fb1iezTMn1Yhr9rDtHYuvnRqLSIYjabbegXLvnlAikXQsc8pEytPAlEI3TcLwEtquFluvrPN9/ouGMZtAnRiV3tkelcfDX0WUgbNdlVZtwtXLS5p7W9zHjIdmgy0IWfpedYwSWJp8+JK20DVz7+3NVmWjDRaDQwGo3w/PlzHBwcoN1uF/JzXDUdN8RO0OxVH/+8LruhLtsrhH6tdsa0W5NVFi4a/7dwt8rh9dHiv1ar5dUhLN2h3W5juVxiPp872+XCy1ePlq4KuHinZeeE6E4x/MzCK8TepPkoeYqPb/hsXVeeOoHkZ7/fR7PZzPGYTCZYrVaFqwxidHWXPRND3z57MBRi9Bae7qp0clmvBRwffj0Nf3/dNj6Huuy7WL9NTJmav8Wq4zroAbD5hKajWu/oU9K11c7QeW6VoeHkA4vn++qXaWPpReuPKrpESD2+56F8LrR/NTovq+f70mxjntTF1yz92Wc7UF5NT/TNA6t8Cc5grG/S7hLj31W4Lgbugl3EiQMRuDQsOLTb7YIioq1YiBUGryEeyjpTy/IOS9BuQ3nSBLzmENHwoTwaDZa9r7Yu5bYKhPSpxNNyREkIeRc7pnwMXKvsZNmu+uQdsdIgdyl02so+iZtWr0xL9aRpaiqT1O7lclnL3dpVIUS55mkoQErOKqk48SOB6VlIYFICOR1oJxV3TFjOQOkYkE6LmHbzdNyxaPE0WR7dSUcgv/N+jXVM8PxJsg7OjcdjTKdTjEYj835iWQbHX2vTLuqSZXjVtttSpXxNnlk8T/JreTcxBcA0g47mD72no7QpPz+umIDfy0xtdN2nzXG+Kh2P81a5E1bKOG3+yvbO53N0u110u12MRiPMZjMAl07SGL5hOV+oLssIjQE+Hj7H6HK5xHQ6zZ26HA+pF7kcAlod9CxNU3S7XUwmk8Lx8hZeGo/UjGstDdGsVV4MyDosfcHXP66yLXrw2USazmbVY8kc/lvyEi5HQp052i4g+u3DU9P5ZN9QGfx0JalnWUA00Wq1cHx8jBcvXuD+/fu4detWAUdtnDXas2Q/PY+92zQEtsFD67K9fA4uufhN473W4iANV3mqg2u+cH7ouneY6tTmBC9rb28P8/kcZ2dnAIpXXVjlrlYrtNttHB4e5ldthEDVMb9pfpWY9kq+q9GgZfsBmzttpI3G02q+gLI+lVhoNpvodrv4xje+gbt37wJY7479/PPPMRqNcHp6CqBIhyGytQpYdm9d5W0737ZAytHZbIYkSdDtdq8NHwKXnar5WSzZVjd+Fl6EQ6w/4jrB4hMcP853uO+EQ9mTXkLwkeUR3/PVY/FbrptZ+NY9RpouoL27SihjB4SUVxW0k5vkjmyCbfhEYsvUaCWmjCS5PAFPO2Wpahuj74wNbdC2hPWrDnVNlJvc3+Qc1+Du3bvo9/t4+fJl7rwC7GOdXMaR6zeHXRHIdcJVtKkuHiDHsQzz0xxHvvzcIaoplRwXC+cQw86Fs0bDLofbtowijpMvj8tJ66szxPnuK1tzTst+5M6bELxCIUTBjynTRV9UXh2O9l0EfvywxUt4+zVFUJsj1nt5nKcLpMFASppWV1ka0wyt+Xye3xlrGSc+vDnd+/onBG9enotvWPPtOnSVGIMhpI9ieUQVI9Kl17joP8RZbB1NFyLLZfncOU7OAddCJNnPlsHvw6+sXsDBkrF83ki6l3PANb77+/u4ffs2BoMBBoMB3nnnHdy6dQu3b9/GarXCL37xi/wY8ph2aePEj213tVe2TZYTUp/MQwtFeJmybyl4L/HlaWUeKfc47co0WoBGAu8jrY1JkmwEoyXNuWSViyYIbxnQCZEnmnPR1VYN71Dg5bp0PatvZJ28T1y4y8Vv2vzXcKX71cmJMp/Pc5uR3oeCNiYab8iyDF999RWGwyHOz89zp42lw2tl+3TvuuXlTdAXQ3C05q4MqkvZQrRg0bJLblL5QHEhYIieT2m63S76/T56vR6m0ynOz8+d9GnhQ9dX0KkldcEu0UcMHWg+njrbkiTJhuzSZI2mE9UBITqYBkSzq9UK0+kUR0dHmEwmePPNN9HtdnHr1i2kaYrT09PC4gS+8IHTt483UrqQ9rj4q6udLvlyU8HSJ/j7+XyeX3kh08YG+suCZk/S3OA40UkpWjskbmVs6Rias+SxVn6oLhxST2w5PntZoxHX3KjD5uTlawFgLW/ouLnS1WF7W/Vo88ylh7t4TF0+gtB3VemxbHmaTWPZPxqUGeu6gexNrsfxdxbE9llInxaCsVoHaMbhVRsDLkZ5E6AKYZVp803pJ0txdBkSb7zxBh4+fIjBYIDRaARgLRD4sVAhR3JWVYpvgqLnM+pd6cr2jybQQoVtSLk+XuBT4F3pZX3NZrOwWt7nkOQCWrvnTqP3EN5Xhf+FOK7Kli3r8fUP/x47FqFp+TvN2Ve1bPmeK8O+OjRnJqeNGLCcl9b9B7vMr6QByRUjbVW27CvaeSfLC6En2XeWM8VycEtjiO/w42lCnOAu+qFg72QyQZqmaLVa6hHBIXRUdme+xMniLS65E2pY7zqU4UnWnHc57vh7KUPqMEItHCTNuox9q528rNVqVbjDMwa/mPkcC5YupLXdhYv1TssLALdu3cL3v/99fPTRR3j+/Dm+853v4Hvf+x5+53d+B4vFAo8ePcLz58+durDGV+R3upOWaI6vZnY5FCy7T9NHrHZnWVa4A5N/8vK4Q1ve+a31IwdrpyPHWePnHAcNd/npon+f0e7ijVxXdOm0nGe4ZFEoD5LPrfSEY4xux/mUxMnSf+SOe61MeRJGSDC12Wzm8hLAhjNYG0drbK32yD799NNPczyte25l/SGOH01/tMBFCy49Yxf0RG0uagFPF9/h4OLZMl1M+6XuX8ZOy7IMvV4Pt27dQrPZxGg0wldffYUsyzYc3Xzua7TfarXQbDYxHA5zWUvtku2U311yRMNZg12gHQ5lxyNkbgHr+d3pdArP+XUDWv1S3mj0askqCw8OvDyfPbFYLAon3Dx48AD9fh937txBmqY5HfLjigk4L9baJdug6RIhup2vH14Ve4JA061cizJocS7pUNc1B7l8pt+0aJj0GzpGXabT9Cv6DKHnutvhs93L8BWrLl6Oq32aDiD1QtkGTQfQZJ7VDo3uKC294xtW5LVFvjZJfHx6qFWeNl6uukN1LdfJKC7boAqUpfGy9Wr0Y6UJfV8HHw6Rw3WVSzvIXeMsy9gGBO2MfRWE3E2EMv1+k8aKO2sI0jTFw4cPcyWv1WoVjuIYjUb46KOP8kAsAWcI1sSqwwl908Fy4tTF+CxHlc9RZEGMgVwH7UshK42RsnVwQ3rXjNa6eIbmPAgVZrEGswUhfct33mv0pfElrX7uNNaUZQ23brdboKkybaCVsI1GI7+TT1NIqf9vCt/zORe0NHyspDNYlhNCGxot+NJLZ7LMqzkoXOVLY4vXk2VZfvzndDp10hHPZxmQMX0ym80Ki0y63a66GnYXedw2wGeUa3QoDdyYubnNfuV04jLifQ404jeawSPzaI4WTV/QdArX71Dw6UJ1G9Zcbshxf/PNN/HBBx/g+9//PsbjcX7Mb7vdLtzf5sOfv1sulzg4OECv18Px8TGm0+lGXulcCXGIyN9aHroH1+VICXEEaHVQOXTUc5Zl6qIdWVeII8rlVCB8Ned0FaBdR1xuS/xcMoSDS57II1hDyiPQgjay/fLIWL4wSfIU7kgk+SlpXOpUZeYl5aOFlZajVaMFizdZ4y7LDwmyy76QUJYXlemjmwC0KE0eeU7AnxE90dG9PK10rrvGVtIJ36kty3TZv1qZADAcDpEkCW7fvo1Go4FOp1MIWsi5x8tfLBZotVrY29srpKNFOBoPk3hbclYDn8y5KXTkgtB2kIxutVqFa7NIJvloCbikSUsPlPzJkm1Jcnn3fIhOyfki2SxHR0eYzWaYz+cYj8cbvJj4mZwvWZap1wRoINsawtd5X4UcHf8qQJqmaDabhfGkeZ0kCW7dulWgt8lkkveLdVTotkDjnZwm0jR1XjXgwlXTha4KNH3lVQRt/mm6uq8/uGzUyogFV5+H+DFifB2uuix916rnOkDDQS56cF37E+v38uFSx1ype8656NslU65q3kcfU1wWqjRoF4j9quDr1FZNcWw2m7hz506+kpmOTQHWffPrX/8ajx8/3iiL3/GiGf70Tj4LAZ8Rft2wLSZiMWiXkAutMyQdd9ZsCzSFgn9yBdjnPNTyyt8kYEIcqyFGis+hc1X8hCtidc2XMvlDlHtNSeHv+aeWX3OaWiDnBvG18Xgc5ICTCgR3CDWbTSwWi0IwkjtCZZtuCmiKkWs8yLnkckJoDjsLYgx+Ggs69ssaO9kGje9Y8kk6zmazWb763mdwcCcKoO8ssUD202KxyJ0+RMtypbPE3+eYuQngmqP03cW/rWd1zUuLBiQNafTHeZhP3vAxjZFX9FxzoGuGbki/aLI1VPb5HDvSWRoqz0LxlguVkiTBvXv38M477+Cb3/wmBoMBlsslZrMZDg8Pc8c6x03rY44nBXB7vR7u3r2LwWCQO+xC8A11PFhOGam7abqRa+xC8MuydaDF5aTlOpulp4Ya/T5nTQhotCVliFzk5ZJFlozRnGca7fDnLtDmqcVTZD5+R7SPXrRx0nZKy3ZauhKBdrd5qP4Wowvwfgrhaa4jxF32hsTdx7t9cBU2bhXnGp8noXoe5Vsul/n4a3Rs4SZ1GDlvQ+RuyG+yBQ4PDwEgD8KQviV5O5enpHN2u92cvqfTKabTab5Q00cTPnnoSyt5OU/rK0uWEwox9WwLSP7QQg++C9Aac043kh5d+orrOdG2FfDS8OYLc+j32dkZZrMZWq2WepwscBlY43UQrXKctmVzclkSUt9Ns30J0jRFu93O7StOP0mS4ODgIN+VOBwOMRqNCjK2zqCYCyw/CNGUPBnFVY7v3XXbi3XxnFBbMaa8OuzKED3Iqp/S8EWRLnwsPTDEvnDpQ9azEBnn4r910F7IuJexNbU5yHk8PfctDuRpQ+0/33MrrUu3tXCS9dSlP7iehdB9XXBlwdjXYIPPSNGY7XULpliwDHX+/Y033kC/38ft27dzpn7nzh289957ebqvvvpKDcZqddCEDzFIXsPNgm0o/UQvnU6n4Bxz7ZKU+GhgOVB9YDnQ6oY6eInl7LquXZmhbaKgJnAZ6LLGWyo92i43qSS1Wq3CfS7kXKQAP69b1sHL4WnpGR3p51LGb5Kc8Cm9sv+pX6kv6NPKG1puiCM1RFkOURZDHPwcP67IcnqydAKag0SHtHqe7yiznM1aeZSX3lt3SfG66zJmbiJU4d1lZJxr9au2WEYLgGh4ULoQfi53xBFIGpbl83c8zbYdfFcFfM4eHh7i3XffxXQ6xWKxwN7e3kb6NE3R7/cxnU4xHo83ygL0oCZ3lna7XRweHuaLgGi++u4UlPOWnL0aDfBx4QEB/ttKDyCXhZLPuUDe30pA/JDXLR0RVj2UjutdGt1bOLrolT/T5LW1W43n1eq0cHClCQHZFouPabiRPKLrAzQ5KMebj5tMq/GCkHZlWVZYLEQBBi43twUuB45sj0YTryKUaZ+cD1J2ceD01Gg0sL+/j2aziXa7jdFohMFg4LSn5BjIBR70GWIPWvhL/TLLMoxGo3yBHYD8iGFKY12RQ7yeAmm0mw4Aer1ejnvIyU6WLmn5bW6qjREDIXOS/EvT6XTDBpb5Sc6RLPKdRqHVpfF7Oqa23W5jMpkE0accvzRNcXJygmaziQcPHqDZbOLNN9/EZDLBy5cvkWXrnY6dTge9Xi/PSyca0Gk9/Ah5Pne4fJMyNgRXrd0+vZDPuZsKFOinncq/93u/h8PDQ3Q6HRweHuJ73/tefkrSj370I/zoRz+6Nly18aQFI/SOrtfR9E8aZ0tn3JVxvG48XMdW80+CbeFLPIHXE1qXtP9kuXXgptmeVJ+lJ5fx9ZTBKaSvLBks509ImTRWfNGOhVsd4Grrdc+fGPDZCHX2WaVg7E3q1OsEn+IaOilD0+8ScKeGC5Ikwd7eHg4ODtDpdPK7fg4ODnD79u1cEe31eoUABt8x4FPYqjhGQ6GK0mApl1etiJR16LiEXFkcqhjw8neokkK050sXMy99BoMLyub1vQ9xcvvmjHReUHl8BbvLKArtWxcOrnnvA2kUa44PlwPDSscNC6InSi+PSdaUaDnnNScON3Q0PKTDU4NdMHJkOy2HtVTuZBCQ+lWjh1DnkYtHhPAPDf+Q+jVeYo1rrJOBcOGLAigYGwNa/1uObauvqsrfuul1W/RfpcyqOGn0FmoMWXRq0SfX71zGb6j+xdP62uXC3QUxNFi3vkjzho6WPDg4wK1bt9BqtdS66PQDV3muZyR/NH3K4m3ad3KkEZ/lu3W1cXHthNBopYwzIJSe6JPvAuJts8rl/RMauNNkmQWcn2vtl7aT5WzT5kuo7HfhLp+5gOPI69X4gIaHT8fV2qjxOFkO0eh8Pt8IUoS0LZS+QvJZeolvDl+F3arBdemGrj61HHz0nn+22220223s7+8jyzIMh0O1TF6vNZesPNpvrT1aGnpOp9sQfbp2S1s4TyaTfEdtlmUFXS8ET62NvH4fnVelE6sclx5s5dVspzIgeaCFIy2u9dmOnJ+75rzLVtBwIQe79FtIHHy29nQ6xXw+x2KxQLvdzq8h4XKT7AgCviCWl0U2geTfZW0XrXyOv8t21uhDa/8uAu/vLMtw79493Lt3DwBw7949fPDBB7mv5auvvsL/+3//Lx9Dyn+V7eN9z/k1X4hAeJWxP6u2xcfbqR5X3XXJYm0uuOwonkaWY+mGVj1amS4dK0Q/006ecOWz5FOozJJlhcJ16TUuHmWltXa4a/aI5P/aaUEWvYfSdBmdOWbuVBmbunSQ0Losfb4svN4ZuwMQSoB1Kb5XCYSr5pyRQujg4AAHBwdoNBro9/v41re+hXa7Xcjz1ltv5YrGfD7Hp59+itlsVrhDtt1uo9PpmHXFrGyNhW0wBJchVActhBguPudOGTxCHBEhz6uscLeMb0638i7UGNyoDi19qKIRUgelrVthpHpDHA5SEUuSZOMOzTqM5FgguuW7adI0RavVKuAaYri4nMx85+pyucR8Psf+/j5u3bqFfr+fvx+PxxgMBs7jXYGiU8bXPuKJ2pHLPiV8F8BlFEknhjTQeXrL0Lb6gufRjnFx0T29cwXFJd4aThJ8xgin59Dx4w6b1WqF8XgcfL8Uh729Pbz//vs4ODjAvXv38PHHH+OTTz4xlX7XnCqjz9QtC+vK49odzNvpGns57mVwCznCUZsnLgcVOVGyTN95Hjt+IXXXKb92DWg30/n5OVqtFh48eIAsy3B+fh6960rrJ86LhsNhfhccveN8w3UkO3ek9Xo9vP3227nB//TpUzx+/Di/u5ycALPZDL1eDx988AHOz8/x29/+Nt+5Y+3wCnU4yecanya+SG0l2qVjnzmuki9Tfv7P32vzWAK1UePNllyhQIylG0kcOB6ak1qTORoesj2cP/CFNjKtJXepvzivID2IdvhoMpDrLy5eou0kk3xS48Pz+Ryz2Wxj3GJ3pvnAom/rRAL6HmPzXSVcFw583kndLESX5QHJg4MDvPfee3j+/DmWy2V+XLvcsV3WESyPFHeBLFvWSVdPuGwRDafFYoGTk5P85BPi0bQAwZLtMujL67V2yGq8kuevE8qWty269Y0H7cK3FvtwmuN9B2BDZll1aDY2B1roxXGKGZvlcoknT54Uyud3l8ojiYlWeFqCxWKhBmQt0Hihlj5mnt1UkCeycVlGp47wkx7SNMUf/dEf4Xd/93fxX//rf8X//b//FwDyO6gpb91gyS++uITao8lBS3/l5UuI8YnFgIs+66YpTYdx2ba8z7huadndPtlVZl4BME86oblO46wtCgmpy+evCcVT4ifzaCd21Wl3WnjHli9P+XHBW2+9hQcPHhSeLZdLjEajvN7T01M8f/48f88X6m4TfL5M3xzYNlg2sAbbwtEbjK1bIXqVnSxlwdfHPufVTQGXMxC4VEDov9/vb+xQbLfb6Pf7AJAb2JQXKB5NRnW5IKYvt6UEhNbJweVsiS2LygvNJ400yzDw1RuqVMf0dagBG1qH5hgIhTrmqaZIWE69UHoI5TdVHEVWn23DaHeBbItUajm+EmT7LVqxHIzA5d0vtKOfgmAuXF1AxrZ0mvBdoRp+r4KBKpU13q7Q+RmaJ5RnSCd5HfTumnOWLiCNCo4Tf877UHMIavXye8n29vZw584ddLtd1TDz/ZZtqIsur4q+XcZhFRy2gb8raKGl8eEROr+0cvhcsfAIMYzrNJivGrIsy51jWZbh7OwMw+EQ0+kUk8kEk8kEo9EI0+l0Q8eyjFVr3tPv+Xyey5wYR42mY9BRiJ1Op+DwBYoBJzrqkMtX64jjULBkLu8X3+ImbivIOSv7hut9Glhy1pIB8ruUY3VAKA/R5rykI01WyDK4DcLbLXdS8fs6NZ2K93loO2OcmUDRGczL4Z+yfS67JcQmrzquZedrlbQ+faBq+hAoU5Y2X0k3psUg5Hi0bALfnOdpfPi75KpF7zHylcqkuvjR4NQm1/HGMeNm+Rpkv8k8Fu4+HaMsLdVh+5atV9pgHB+qM8ShruHpsvcl8OsEYvkPlcdP4uD2JtVPdzDTb4vGNLrhfeLzuVhtrFN2WmVdt73MdSUu34bDIZrNJvr9/oa9f+/ePdy/fx9vvPEGbt26VShHswW3AS665QvOuE4bI7tCwGU/x5Tvkv8xdYfWH8v/Y8Diz2XKq6MtGi3G4hTKB1x8xnWsvA/fUAgpMyYf6dQyf6fTyWMjBFImTSYTtNvt/DSOsjJCQmg5ll7kK/e6+bEFdfoignfGxjLCsoRdRRl71eBV7Qt+xwYFWxuNBp49e4aTkxMAl4FWy4DWgJSUV7HPtgEx/SSVuZBxcR0HV2WMNIZeJ1Mk4Cs7l8ul9561MqA5ByRYfGAbba4K14GT1W/a0amhSpXrrju5W5rTxWq1yle48zq73S6azSZ++ctf4vz8PL+/wVJAOe/j9HFwcIA333wzT3d0dITBYICzszMsFosbyfs4fXMHrjQ2XWOiOam08mVaWVaoUs+VSAoESFyksSlx0HZVWLxSrpyX7bWcHMS7pJOOO0osmiHn5Xg8Rrvdxu/8zu/g9u3bePvtt/HFF1/gxz/+sXcnHy+b7xrwOc+vAnjbY4wJ+ucBhiS5vL/NJSdi+GMV41zb9RJSrqRdPi+1fNpOfJ4/BmSeXXWUlYXVaoVut4tvfOMbWC6X+Ku/+iucnp7i7OwMDx48wN7eHv72b/8Wk8kk3/XQbDYxm83UIwI14Dyz1WphOBzmK6PplBnNYUzA+Rof89VqhcFggL29PXS7XbRaLfR6vVxH4vOg1+vh7//9v4/PP/8cf/3Xf50vSJK7PULAMsa1ldbSsOcLMykYQ4Fv2qkpZY2sm88BzoN5PZLuicdqDpNQu1g+t/TvGAe/Bj5nt2afWzoq3RlIYw2s7648ODjA+fk5RqPRRl9zOcRp12VPuO4pp2cErp3fliwK0QEkzhw0vU3rL16Gq895fSHvfVDVXqKx5jLwKkHTYQiIR1LgIk1THB8fYzwebxyjWNb+lQvELdkk6VzSi8SHjoF3laeB1B/n83nhGgqNT4Xey+hrK5+vrv6M1Xvq8g/E+C19aa1yV6tVvvuefkugk5hoo4Emf8vOSa5X065ouos+BqxdUpzuZ7MZ5vM5+v1+YUEW6Qu065zfUe+zqziE0JKEkAVeddLBVYD0N9Hi11/84hfodrv4wQ9+sJHn7t27ePDgAf7pP/2n2NvbA7AOvvzJn/wJhsNhzq99OmQsuHgJ9SW1RS7iAzb5CC/DBzFzPZbfbxMkT3btgJQ6Evl5aL6S3emSD67fLtDw4XVptCRP3LLoTdudGgMkP63TmjTcXfaHphdZui6ll/l9aWQ5Vn0uvSpJkny3O0/Dr4YjkHRx69Yt7O/v4+nTp3j58uUGLVlt/TqCJQti5FkMRB1TXMaIjIVdEITbhNg+eVUmg3QAcSOEFEgSNLPZDOPxuKCMzGazXBHkjghpxGrG/bYmz65CzBwKcX5aebhCEWtAxoLPaR7SZsvxqKWzjh4tW3dIfl9ddfVlnfw6Buri7ZqDUL4LUaokuOiD8y6N3uV7AjqmT65cl3yKlyPnJHfcEb9cLBY5f+R3ytwEiDF4qzoeeRnS8RFjCGhluJTvMnLeVwf91sqWPJk/p8ADcLnAhN652s/fJ0mS3yO1v7+PVquFyWQShJuGp/bsquk3tl7NgaaVF/I8lB9VdVDwZ2UdTS7HYUwfavqCxcs53bmMorrgquyONE3R7/cxnU4xHA4xm80wnU5xdHSER48e4c6dO4X7LWWwMwQkL7HowXI+SIcoOVTH43HuCJB3Tkvdnu5r7HQ6BWeRjwZ9ePO6tPZqv1erFfr9Pt544w0Mh0MMBoPcWa3pvzw/D6iG6BQSDyqL7Bt+z66rbXJe+ZyOfL64dHppe1k4yLH12VBSVhBttVot7O/v5wuCaGGBqyxLD5N6U4we4NMZZb/4xlY+13Q4V/+G4C51Sk0vdMG25Cp33vlkYtV6JFhzUKNrWvR9fHyMyWSSH9Op+Q20crQ6fTQS2i5ZX4i9zfFx8QCJs0Y7IfXI/tSCXhqdh9A1z6fpvrG6iizLJzustoaCNn6SB7jw1MoqA2RT0jH8VEeZK0hC5DLVSXKM6pdpfEfNauXH2A5V7CuNR++i7SxxIl1kPp/j6OgI3W4XL168yI+GbrfbODg4wK1bt/Duu+9iOBzi7Oxso2/5iUahPq4qeAOXfc4XW3McYuZFWd6r8ZQy42/xkFBw0bFL9ylbR0i9Vp2aXJWypdFo4ODgIH8mFxKQf4ofky11myqg4WXpuHJxSBm9KhbK0qpcUK3RBsd9Mpng/Pw8P4WP0rTb7Y28/Dh5Xra1uFo+i5EVvnZq+Vxll+nPkLKtuXdV4AzGxiDjGrjX8PUFYnZcOSMGTtDv99HtdgGsGfnx8THa7TaGw2G+kurZs2d4+vQpsiwr3AfrolFyAGj4hCjOXzcIMUK1dBKq3OFKUHXFfxWglatyZalGK1XwrJv2Yg3YKvUQcEUo9I7TKhDjiHSBZjy7DHWexnJKaAoTKUh3795FkqyPeiXD2VUWx4FojPhZo9HAZDLB6ekpgGrB2KuiGR9wIw0or09suy2WMcd3rnFnhZY2xhHtAho7yYM4nbZaLbTb7Ryv8XiM+Xye3y/maienQ1Lq9/b28PDhQzx79gwA8kUBtFuO3x0DFHcJWc4PTt+hbb4O4HfiWM5ECVLXkHoQPZfPyoDPsLWcHho+li7A+Zw2F2S6Mk5OyuMzDOtypF0VPdEcunfvHgaDAQaDQd7Gjz76CMfHxxiNRvnOluVyieFwWFiAWKZOQN8FKOW4TCPlyvPnz9Hv9zGfzzEYDPL5qq3IprbeuXMn341K6UMWg1j839JJpeOC55nP57hz5w7++T//5zg+PsaLFy/w6aef4vnz54Udfrxezv+0hXmyHuLDhCP/B5A7RMhhzkHuuJXtD3X+Wf0px1vOS80JEbIAQOIlaWu5XKLb7eLNN9/MA/MvX77EeDw2cdHKljRMz6Utp7VbOpmso6x9/RbS99qYye9anb4+9jmJXLzRha+V1yqHp6Ud8qRP8KPV6+Knsiwud7Sd0ZJmF4sFTk9PcXx8nN+lCqBwQoBLTnEa5fhIurD0L60sPuaUjus/SXJ572aZ4Kcsn59OZd1jrY1bCF/W6NfFoy2w2mPpKxbtyrHZll9Hsx2t/pM05IMYnYbGlxb80u5v7fSB0Hb58CKghZhcV+P5tYVOZWybKjhbZYbwKB/PvQrQdhX3+32sViv87Gc/w5dffom9vb3cR3pycoLFYoGHDx/i7t27+Oijj/JyCNI0zX2twHqTSx0nvvnGgS8GlvcaJ0mi4iDbL09gqdPfUba8qqCdnhIKPrvTlU/i4Ernkut02s83v/nNvJzBYIDhcLiR7uTkRJVpUm5L3ck397hu55u3fNMXr3sb/mZLBsm6LJ3U1w+ynKOjI7x8+RLf+ta38uB4mqbodDobeUkHIiB+TbzBsqdew/YgamdsrOCLTXddTrbXsD2wHD/cEUyrpQE9gAoAZ2dnePToUeEZD07wZwQug9gytLfBeMo4JENBMwTL1iP7S3OwxdalOa1CIUah4M/L4Mnr0+7YsHAKNRp8ddZBd7EOmLLKrFYfD75wR2QdwjzEGRVreAKXzg8NNEeDz3nG8Ww2m2i1WoUVaAA2HLu+tvExo8AX7ZxKkiRf8e87fqXMu1Ao69DT0lj04uMhcmxCHZSW88aV1sKNlHp+lLBGl5pjjp6Tw0xbTWqBxoO4cSPpzaIxCfJo1OPjY3S7XWTZekHU3bt3cXZ2hsFg4MSN18MDN/wI+JA2uXDV6gtJT2lc/J6e0w5j3p/cseC6o03DM9ThVgYsvSu2zNj6XbLXmtdybsQ68eqQoXXKYQLZFqIdfi8swWAwQJZl+M1vfpPL0DRNMZlMSgUvfXqJJd9c9JIkSR6IlUFFPh8WiwU+++wznJycOB0lEm9rrPlzl8Pb1V66q3d/fx+r1Sq/EoXGQcpjVz+7dFopx4iH0hGVVIbLweUC2RdSzwrpE1+9vDzeL765zJ2kpOcsFou8j2mHtKWraOMv+0pLI9+5+DnP4/seq9dw3EiW+9pn1U1llJFnGp4uPURL7yuv1Wqh0+nk893SQbflzPPZeNT//Lm1wIDTjXwnFwD42iPniOVncOXnAVTZ1hD704Vj6PyQefhnLMTQQCy9uOjZopEqNk/IfKRntKib2kSnSWgBchl49tkiLvy0hUN1gyUX5JyT9O+iS/5p8SwtTwxY+kMdtKHVQeWXLYPySr9mkiSYTqf45JNP0Gg08k0sn3/+Ob7//e/jjTfeMNvC+VxdtGGNLS0EpjStViu3mWazWa73lumzKriHyLhtyC1ed4xMlulC7BUrjWxbqGzi+flR61Ku8oWHnG7lFT4hY+7TUy2d1NdX2wq++kDOO83epee+tml2AACcn5/nfqMkuby2gdcjTzWTOPL0IbvntXHS7BLZlpByXlWQbXUGY0OV9W0xrddwc8E1AeW9BePx2Lsr5uXLl/lKLyqDyueMle6aBTadDj5Hz1VDiPHtyy9Xu8Zeys3T8uCUxCVWWIc42eqAOpwVPC8ZRppxH1J/WRyq9FGdxqWrPJ8TghuffD5fh4D19SU5BTX+oBkqmlJh1UeOX7q3RdbrCtpoDiEqnx/hTriPRqONVYix/R2rjJeFUIUuxNDwlUH5t83bOc3wVekhoO38ox2rdPrDYrHwlmfRLV8Fyvsi1BDhOzWSJMGjR49y52u328Xbb7+NLMvUYCzNF77yVK7ap/eyHt4Gq41XDavVCr1eD51OB5PJJO/TRqOBfr+PxWKROxZ8sG26tJzGsU49V/o6x0GTtSHzeBuOs1AI4Zmak3y1WuH09HTjmN+TkxOcnJzgq6++QpIk2NvbQ7PZxGg0yudPSFtC9TZrEZ/vrqL5fI7JZLKhw1N/0B23f/M3f1PYHWOt/vbVLWWBdaeWBTwfHZnc6/Xw1VdfodPpFBaCyn6jfreCEZInUR9wHkZ8ot1uF/QjC08X0PhqcoMvAHKVG2ITyXKtdERrXG8h3Y/+Z7MZRqMRVqsVms1mfr+idkeVr7+t3a2anmaVoTm+rO+h5cjnnC589Czpmj8P0Zd8jq265QyNEZ2SAaz1hLOzsw0bntNEqD1VBh+rbOpTWgTAT7WQ+TXdm89VzoOtk5+0sZMOVUkP1r12mi6s5Q8dY95Orn/xOlxtcoHES9PfY2gxlK75mIUuhKtDZ9DmtyZzid83m82cF2qyXMqPqriV9dtoZfloo8xxxK7yQuvW8oTU7bPfr8u+sIDwoXugCWih3s9//vN8ZzTBf/gP/wFvvPGGWd5VnjrX7Xbz3XZpmuLOnTu53nh6eoqTkxNTRhC+muzV6KOqTNF4/7b9B7EQorvFlCPllEuv4cD9EtLn3Ol00Ol0cHp6WliAyK/WajQaG0flxoIlh0PmsGX/VOnTsjaqjyfx3yF659HRkSpjuO7jWkAPbPZPyKlloWXF2KlXCdc936N2xhLsGoN6DbsHFmHz+wpoQqZpWjBGF4sFzs7O8OMf/zh//uTJE2ddBGWczppCHZLe9ywUQuvnBpo0HrmB5RIsPjzrchTLNsUo1lZ/yHbVzYdcTp6YumINBMpjtTtWoPscbKEQaoiHOLy2ITMsh0do3pjjtF1OVDnnyCE5mUzQarWQJAlevnyZ3/UKhDkcXMDvouV5fPPNcs7G0BzPYxlKLnAZWD58JX7cScWPjw1VHkNpXKuXfifJ5e5ROq2BO4gsp41WDwU5KBhLAT7Kpx27T5/acdWxzjcNJ2rLaDTCyckJvvjii/weNtcRV3JMyQCjNlBwhB+hbOEY6tTWHMC+MbZkHuFL8+yNN97AW2+9lR/H/NOf/hTT6bRQjvx+FXqBTO+qv6yjtOw8iQU+V6wAE713BW54Oh8PKYNrmTxZlmEymeCrr74q7BrkK5fJQcGD/S7Z7ponNG95Ph9fd6WVBr2mr2XZekX8kydP8jtCeXCBdnG4nGnyCFLpRHU5wDlwB/1gMMDHH3+MZrOJZrOZ7zimOd5qtZBlGUajUV62LNO164e3QermWh/HgqRVi+8RL9XsAFlGiP5jzS85L6ndWXa5KC9NU4zHYzx+/Bj9fr9wvYxWBy+7qtySvEHqZ9rc12SHBRwnrY80XUx7b82BMmDZS1VAk2mr1QpnZ2eYTCa5c530acvBWqdNSeVpPEHDXY4/34Wo4UU6CXceWxDSLotuJZ1pNEn4uuahpEHXvNH6zTWvfKdjWc95Pdbck2OhtYm3QztKXjtJJlSHdEGobeYb/2azidu3b6PX6+HOnTt52168eIHT09P8OgIqV9NF5ZjJ9su0dcw1Kl+rk3/Ka0hCcdHsNwmSbkLGxDVP5PNQuyBE7vPn2wafXvvjH/8YX3zxBV6+fInBYIDxeJzrlkmSFHbFVQmy+HAhO5wCxaRv8Z2yMi/XWTWweAbl1fhOmXaE6gB12He8vNC0IeDSm3w6lcTFkgNZlmE6neLRo0fY29vLeRxweTqcVQ9fmB0ypyx+4uobK08obfj6vSyN+HBy5eNjR/oJz8tttCRJch8kh3a7jUajseFDtGzuMsdpu+g7lO608mLkbyyEjlUdIMstBGMtw4Lela1kmxDDEKsyz12poypc11hK5ZErO3zV6XK5xGAwwM9+9rNC3th+dTHuugxXn9D2GVsh5Vvf+W+5MjS0PWUcHZSvKp27xkJzXMQaGrFpLUNXw4PjXwZceS0j0uLNIWWXoW+fIUVpeLqQu8bK4uAyqPg7rX6tLb6VdVrZMo1WDjmc+Q6i09NTZFlWCMZa9Wr4asoxOR6s8d6m0qIB52+x9YUY3NvEoUq95AyiAEsZ3Uk6WKQR43IuuPhCKM9w4UN1zGaz/LqA0WhUuAfS4tmSf1LgKcvWRx232210u10sFos8GOty8FA5LtqmOvhx8xafcPUf4UvBhfv37+M73/kObt++jeVyiV/84hcYjUbR8l9+j4UYZ4Omc5RxVmhlEsToGhIfl37kkvdVeI1W11UAzSE6yYDmOi1GpB1nSZJgMBhgtVo573WmMiVoc6OKY4n3MT9WUVsYQm18/vz5/5+9P/ux7Ejuw/E4dfe6tXRVdTebTQ5JzVCakTzQSLJkSZZhfwXBgi1AejDsBwM2/OA/y370kwHDMAzJgrVgLBka2dZoRrOTHC5Dstfaq+6+nd9D/SI7blREZOQ5596q5vADNLruOXkyIzMjY8stPMcJUK3NPTa0V5dptslgMICPPvoItra2YHt7G8bj8dJOuU6nA/P5/Np45oE/jVZL5qO88thFll3Ag1aazcrporKvqA9l2bxcd6NOwLuPR6MR3Lt379o9VR4ZQOvg5RuaR2zCmcuklFiC9dsag5LsktJI9bPsAAsxO0KDJD/yPIfLy0vI8xy63S50Op2lhWfad6mQeI7rbPqMf0Of8b+1+1PxW1ycYU2E8u8oYuNYA42RaGNcsymk+lq+oCWTsP3o+LFOJeB0aHwgjWuentqIvO8kuUp3WVH7W2unMkjNp1arwfb2Nuzv78OXvvSlQPO7774Lk8kkLFZC+j16WqKlrE1H8/fWkfKOl24tb6lcj6wqqs9iz2K0pZZRJB+Epve0vL71rW/Bt771raVn6FOifWblnwLLPsc4CJaHk0IoRzSZYeXL30ltUwRcvxVFqq9f5HurbElWpup8KZ129HmeXx2//uzZM9jf34e9vb0lX4EuzpJkN4XH1rToTPFDi+bl5VFeXpHvPPlibEIbE7VaTVwg12g0QoyJLjjjNg+AfVqShZgfX8R3L+IHlkVVujWGpclYy+j0KpJVE8yR0ujrCLysM7hTFYoaCUUgTVxQoLL2OAwWitSnKO+mOPBcsElHjmn5cqFW5XEjHoMU6afPJBr5M3qfaJHyq3DsV4F1jptVoIgyjOUHYBuCZVAm3zJ19Rqz3DnF3YR0JWoKn+N4oQEGPA4VV5tqBi8NcqQaqVaAhctiyYmxAjz8G15+bExZwWAEvZfUC9pOlkzDuvE7fLCP6E401GVSn9By6DPcRTafz8NEjRaU43QjJHkrGcZee44a8OPxGL773e/CfD6H8XgMs9kM6vX6UhvQ/LEO6IhjGy0WC2i1WrC7uwu//uu/DqPRCP77f//vMJ1Ol1bMxmiTQB1+z30nVl703Xg8hn6/D1/4whfCBNNisYDLy8to/pQ2rTxNzpSVoRK/xdJqtFk8Q9NQ2SPVS7NtPAFGXs7LhCzLwp1K+BvghWNNA2WavZQSzJGC4lzWWcEtT33o3yi/tre3YbFYwHA4VGnmtqS0i5fTRu/Ppd/SdDjxi/nX63UYj8fw0UcfLe2MpYuZ8C7sfr9/LcAhyX+p7DK+qDU2eZCNPqdHsdbr9TCpTPWRNg7LIqW+o9EILi4uwu5JGpCl/Wrly+vukaW033gbaP4Ltb+0Ra6SDYQ0aXaUJsd4uVi2xx7S6l8FLBsKacL7gLndQ9PFgnIcUjt57D5t7EjjVZIjUt7UZon52/wbmr+mq+hzvvNT+057RutnyXlpMkSCZ3zH2kXSPzxv/nfMdqfpUdbRBf0Ir99WNbDcdrsNWZaF+8mfPXsGP/dzPwdf+9rXAABgf38fvv3tb8PR0ZErX82vwjIl/ywV3m9jNgh9TvvTI89i+Xm/KSIXPe0YO5GF5yflXwUwL9T7CKQdF5wh8NoI9FtSfeQYJF06nU6DLYKnRiHq9frSVU7D4XDJ/qUnxki6WyuXPk/lgZv0J2K6LAbNvuD2Cf7t1cV0PHA7jZ50OR6P4dNPPw3v6TsAgHv37sFkMoHj4+Nwag6NXyGP8LIpLLoxraSPYjpVy0t7VgWfePyGMvYT9td4PFblWZ4vL36X8qcbbLQ8+G+PzUr9F/q8irb10Fk0z1XJiELHFFsoEyC5KePps4BVGWAexzjlW22lpeZoWwLAEsqp7WHVx5OXl+c5bdrf/JlkjGjGiVV2WXgcRZ6OB7PwWYoQ9xi/XsVttUNMkVgBkhRh7VXE3vxSIOVbxNmxflNIgYGidSvbFjFDLvZdqqzkOyWlu9I02qgTgm2Ik2B0J0IsCOFBTG9L45fTSN9bZUhpJVkmBbZifJPCxym2ihRkpN9a9w7SPCQ6eVtSpxX7N+U4KSortX4rArwv9vDwMORDjxmWZCNOxvIAQJZd7Ubb2dmBN954A/r9/pIzpR2/zeuogdebfxdzrCivYh3QgWw0GtButwOd2l1gMdosnWbxWgyaExujQ7NFPHpC0vdaALZM3WgZ3oAYx036FZIMo3WhRxby7/g3PJ3G6xyWDWNB60du0+H9rHgMsybr6HfSb6n+NB/NluSBA9zdfn5+HtLghGCWZUE+5fmLo97pjn8J3raTaIz5J5pdrelOlD100QsNoPD2tOokvdNs+RTMZrOwKI3u9i6jg700eXSf5StI4zR2fygvW6KZ/u3RASm0e+wxL3gb0HFP74WmZWu+WFFdFrOdPHWg32jtI9ncHrvY0pG0vaRxbeWlfecBl5FaudJ3qek4X1jyi6bT6u8d0/T0EylPXNS4Tp2PtKPNOxgMoN/vw+npKTx8+BA6nQ7cuXMHsixbOi0g1lfcH7LScnqqhNffozR57HfLd6JlecejR3568oq9q7p9vTRg2bjrlfpPWfbi7nZMhwtdY/ZHlcDxiXoSF09g+bg7D+BqMpbqUz6ZJ/EQ5S3JHtXAv5F0/E1Cq0Oq7uS/YzqIf8dlOv+e+rx4vSCi3W6HidaNjQ3Y2tqCer0OJycn4QTM2BiVaInZSvy3Zv9K7VDErvfAa4Pz/MvKMAD7KHJ6RaSVl6WPtXrFeLdI3Tzt7bGpUlBWp3p5StwZextR1Am8LXhZ6F8nndrZ/xpui6IsAgyYSEIWg9TetqeOiPY+xUnVHNUYYvR6diVJgbSbRqpCvu3wOByWQVYWRQJoq4THmLOcTRqsAbB3fEu7EzVI73HlIDo0s9kMzs7O1HpIeaUagdJR8l5428X6HumIga+4xv9T+SrVwMPfPMDE5RjnEykfXjbqgn6/vzQpaa1e1Mri5XiMXwvo+OOxhNTI9wTSptMpDIdDaLfbsL29Db/7u78Lr7/+OpydncHz58/DsaydTgem06k6kSPVgQceqU7V6iLlifmirp5MJnD37l148OABtFotOD8/h9FoFCagMeim5SXlHRtTKbJIqxeCHsWK7/muoNTAmlSOZENoAViP/KXP8R13Kj3tfRvtRYv3yoCPQandedDJWsgjTQzneZ60MIR+p9UX/QDpXqKYrYtpKA9zfsagDwb+8D1dQEPvVQO4vogqFVhfDCji3d/0FAteR0p3ll2/71f6jgZX6VGE3N+I6UUr8K2NbQtcP47HYxiPx4Emq205j6bIPUvX0oBiTA57ApT0OeaHOsyiGfmR/sO86AIB5Eeua1cBrZ05fQik7/LyMtCJC5bwO7RXcdcinSRIsdMkm1LqPyk/agNY9g/3x+ld8PQ5pUH6Xhsr2jeaPrX0K32fWjcNVvk8RiB9K+l3vqNGku90Bzj6Omi7IZ9I9hWfhEXZcufOnZB+NBrB8fFxpXo2RR7h8Y/NZjNcK3N0dATf+c53wqQULuTrdDpLC4FwxzmtNy58xGd4OhItE8H5oao24PzGd8R7fH2vvbnq+EDMX6LvuaxeB31eTKfTa/oB5SwALNkcyIc3gdlsBh9++GHQBVyv8Ws5vOOM60/PN978P8cyLF3A/e3xeAzT6RRarRZkWQaDwQBms1mwURGWbePpq5h+svItA2pHWvTEyrJsBM3G8ehnaRFSLCZvnUrGn2tjzatvqD1V5Vikdpckr1cVEyhbB9fO2BSleVsretMoQv9N1Jn3JXVgtXSYtgi838UCmFa+ltNjoYgTY+XFHTbuAJbJ31N+kfdeReJJL/GMFZhNrbvmCJRBan2K5q8pkFSUoYkH4Ky+0X5LsByeFFh8YTmiqWVVPeakAA1NE2tnHuigdzxYciV1bElGJHdIteBPihwvA28QV3ruHRtcpmlBytQ6S/yg0UOPypT4RXIAPLLaosNTH+o0aEcT8jwxuMZ3c+/s7MDe3h4cHx9fO54qNfgs8b7XZpDaDp0SPE55b28PZrMZzOdzuLi4CHd9SUFIjbYi9ZHo5P2o8X1qeVIdyuQp8Sh/b+lszfak72KItX1RnZ2q92JjrWiAyBus4EErKY30rqh+L2Kvcx5MoUkL9mp9QOnL83xpB5VV55htxMvDPKW74qnNZ8FKE2sL7V2MN718aOXD/Rs6OUO/l9rB4p+YvyH1kVf3FvGTPN9YfCPlg+2Uetx+DB77SaNH8qnRTmk0GkuLx7C+dMcWPo/Vw2PnF9Gp9FurH1N9Mdq/mj7jcs1jY1r0WXnz+sbyj9nN1jfaO42XYnYSykt6RLjXXga4mnhCniu7oEaj0QvObxsbGzCdTqHX64X3/AQYfoS01Dc0P5oH1/FlbRQJEn9xXZoKiSekseTJu2h/W3Yo/p1iS3r4vSqg/eKhC397ZVtZuhDYDnhtBR3nFGX6vIxOKIKy7Vcl3Sn2Wkz3adD6RrK3sywL8ht5E0/8orwnyQ6NlrL+3irGocfWpmWvkwZpjGs+Pk3L08RsNu1dqv8nIcUe9/Cu1g+cJ2O0eeny2P2Iyo8pRkJWrYA+x+oRc2A98BrTsTxWjZvkWct5iT3T8tMctFSUaRceUKD0SWlj0OiI7UxMoT9mcFQNT3DCQlmDMGZMWLRJ7c5XLN8EYsHLVMNCU9T8mccw4yv18Z8WeKJp6apoL6QAKC/DAjeWKc34T7sHnAcSLVq8TpcUMKOraYvkWwYeXkcZVMQBjhm6mmOj5VFWl9NJVeneNfwb6zydTmEymYQdsXfu3IHBYACnp6fw6aefwsbGRtgFgHTi8Vqxe90sOuk/C1pgtF6vw2w2Cyt779+/H+5//vrXvw4XFxdweXnpvt8WIS26smSS1s+xOlHQlej4fZ7nS5NP3NYrclIH5s3r4wmsSfYP5sUDTfSO4nUElTi8bZISPKD8KjnQqwC3zaQ+t2w16R3d/ZZ68s1tgzf4yu96zPOryalarQatVgsAAC4vL0UdwPuc/o+7xJDPpfvHuW6md7RJ98JJsi7WBl7ZxuUI7pScz+dLu7ooLWXuE7RsMYk2/rcVmOJ2v3TPJspQiX4ur6X+ld5jn+KJBqhfcIFSGXumrJ8h3V+P9UAepcf57+3twSuvvAKTySTcFTccDsOu2lh/SzovRbfTfPBbb9AN6bPsKUv38DKxH6078TjPWXlrJ6Vwn8Jj38eea/0k0cnHdCwPCjxmvdVqQa1WW1qk5/HbcNdfll0d/yvFHtYF3tdIk+Sr5HkOl5eX4Q5NKoOwXnmehzsWW60WbGxsQLfbhfl8DoPBwOSd1HEi0eetc9FyvLZt1ZBoQT3L9ackgzz2J+Xdm7CHtKsv1gXJ5qHHFiNw/KP9IulFmmdZaDIpxea5CVRBWxXtJ8V+KPBdv99fem7Fa4oAF0XH4kCSj1lVO1C/WUsjlc9plJ5LaTw0ac+leDxe2yKlxzgIRyzW623bVY01bWxLpwhUkbflK3tQajI2FmApm5+FVMftpnETtK6jjbQAA8LLtBSWICnK8B6no8q2ijkOHucila6YsLfK1MrTghM8uCDlr/V9ivBelyOh5XGbDTPJmPDQKgUd6HOP4aDRkBooKQJPnaUx5gkA0W9TUTbY5aVDclytoI72TRU00ndVlyehrOEXy6+sAenpM75ARAsKS4EAq2ytvBT6rXSxAA91znCHwvb2Nkyn03AnLE7S4CTDeDyGw8NDODw8DPlaEzmSbuL08mCWBM0Ro/YMbUM8Ovri4gLOzs6g1+sFGq22jAVrrXogUo7e0sqlAVr6PibrtHSWbOWyt4jTy8vDcaPZmlXJ6yoChWWdaY/tlxrgk9KnyPMYPfQ9HeepSJVzKXlpdcrzFxP7nG76Dd6vRCfFYmOCH6sao5MiNm74dzgZgXWw+i9lvHhlBU1T1K/ylJGaP+8j7Z1GD/dxuR0p8YI2NmN6n5fL+1GS31pdYnZ4quyU8qd0cJ2Fd6tvbm4CwNWChMFgINKglUGfe2SDZYda4ymmg1O+09JhPlqf8npYSPVLLb7x6qQYTfR+QOlobYkG/oweWc9tFpqHpsvwBII8z8PErNfvWwcmk0m4ZgYAlk5MsMY7/k3fox9BdxEjitSV27y8fOk3pV1qZyt97Fnq2KoalA9Ty5H0wyrgae+Y7KuaHgqJJyxZ6uE3K58y47yKfrL0kvebIjJaqrfXr7PKsuxFra8sO0Tb+c+fpcqCmK3DIfGjNnasPKQ21/jdy8tFeNgaU7H3WA/N993Y2FhaiFfVKS2cRgmxPvfIFfrOQ3dMnnryLdI+K9kZuw7cBsPqtqOKNooJhlX0A19pLtGUgpsyxLmC8zqeUj6p9Ft3DKaUT50kmg+/+0rKK9aPXho89FUJ3nbrMKpXhSraPjb+MUiZZRmMRqNkGlcFbdxY/WndC6WVUQZVyCbpeysQTg00boRp8sJadUhXEuNvToPk6HvrYtWBjlGPvLFgBeO0ci3aYuOGBzBooA4nBzA/6Rgqi7c1VCXDuNOB/+Nxn1tbW/DKK6/Ab//2b8PJyQn84Ac/gKdPn8KjR48A4AU/jcdj+Iu/+As4PT0N+eB9udQBsOrB33snSSntVn+ORiM4PT2Fd999Fz799NNwJKPloNKxRceGFzQfuiPew1u8jvzeaq1deX9i2ix7sZrUcvo1npDqxesjpefOOT0K8zbqYq+Mo+DBEI+9rfFrakACQL53m5ZBaeK7ACVgGunORV4PWl4R2nl+MT1mLW65uLgI+dA86f9bW1tQr9fh/Px86d5PrW70vuaU3QCaftZsUSpjaD2K2hZe2cLzl9qb60u6KxLbKFauJFO43pTKL4KYjNVkm2QXSPfjWjYDfSddU3CTMs/iPQrk+W63C51OBzqdDrz22mtw7949ODk5gbOzs2s6MYVHuazg+oqmkb7jz7S68jKk/tbsEppWsoUxnfS3V85KdfLS5M07BsoPeO0E9utgMICLiwvz/mSuA5DncQcp/kPbQ2tLfJdlWZjs59+sIk5QBEdHR/D06dPwG+vSbDbDKTEAII57KjOpXmk2m+H+2TLAnfhYVspVIak7kDX7XNK/HOuSgzgW8XSL4XDoKlsah556FaXxNoP6uAA2vdpOZMuf4GVR3YvfePvsZUGV9g7Px/IJJWgymX6D/iZ/jr+rsP+RhlWNMy80nwDfSW0do9NjQ8ZiEfSZ1McW+F3lw+Gw0EJbDVrfx3RKVf3rsfc946LsuEyajOVGY2qnSrjtyqQMqmSWdbUTL0tyQixaygrUMmVr31VBlxeS42wN6FTaLEFsKYHY3wD+yZOYwkmB1Vda+/DyPWVaxrHldNPAgRWEKAJvu3oMSt5XZQxQqZ4SL1DnzUNbCqo2NHnwUJMlXsdBgqWMeUBRGrNlxk6R8ViGh3m7xmSzJUv4c6/zRWnhfF/1hI1l0Ep1iAWKY+M0xVBPeR5DrM0o3VI/YfAty67ui7t79y5kWQY7OzthwhWPo/rkk0/g+PgYBoMBzOdzaDQaALB8/I0UePXQGws0clmrjVn6DQ2G8bbg32He2jGW60KWXR2P12w2w465fr+/5LjGdCMPqJSth3dc8nJrtVo4ong+n8NkMjH7sIzeSZVB+K33aF6tDSwdwuV9zEnneXltZy63+C4lTf7F6hYrt8x7CbzeXptIkg08yIcBcclfom2Ek7Yx+UK/lSDZpVZ9itgwVdtc/Fh0rqfp+LZssZQ6aPabp63ob2+ZsTGmBZroO+vbKoNeHB6/AumgfI3P6DuefrFYwHA4hMPDQ7h7924I6En+Qpk+ttJg3pxmrSyv7cPLSMmHTkBb9iF9Fis3tQ95XxaRvfQZPd4edfR8PodOpxOunIjFE/D5YrGA8XgcvrPqKfk/2L5UD6/b5qJlSvqZjgG6qM86zYD7W7jzmMpR7+JFDXQxLe0va6IlxSZPRRk7grYL/k7VB/hNs9kMmw/o8bp88jvL5EWX6+TDm+B1Cx7/1NvPq7QRU+iwyvLqVC9NRb+TxmjRumL6WCxDKlt7xuWUV4dhXpJOl8oo44ulfGfZArG+kPIq0j9Svlp8jafD2ABfuG2VVQRaH6XqrJR+5flr/JlaX8/zFJlUeGdsFQr3timO24p1ttMqFJ4XnpUQKUbVTYHSxCesJKFZZR2q6h9NkWk7gsqUX9ZY8ARAvAaDVmeab1VtzJ2sWLt6gwHrADp/N00HwhtotmAFJ2IGUiywAnB9sUMKbRaos8cDLVZ6hDXuYnxJA4q0/KJ10H57gEEKz0SsN5jt/UYK/mnfaAFWzSDVaPGirINo8QvnD7qKstlswsOHD6HZbMLjx4/h6OgIAABarRY0m0345je/uXRMGwaT6AppbUxadUp17iXjWaoj1g1plMriuh+/xXuQpLpUAas9ut0u7OzswHQ6DUdGz+fzEGDSaM7zF7sj6vU6ZFkWAqtV0aw9o3YS/t1sNqHRaEC9XofxeAy9Xk/NpwywTO8OJQQevU1tvpjs5JDqT9Pz8VZ13dety6u0faWJBgmp8hAD31mWhZ3Z9P5zSWfi2MEFA/yueIs2TiM/1t7Ko4pgYFWQdrlI8sPi59Rgf5mALB972L+Sv+m1Vygv0jRa0J77GvTY1lXA217e4CnSO5vN4OTkBJ49ewYPHjyAN998M0zU4fepvGrxvId2lOlan0r5aunoyR3eCXPOC3Ss8/cSXZ7YR8wu8shHDzgvo86r1+tLO1svLy9hMpksnaRFy+c72BaLRdDrfFet1HaSbU115037ppx+3MnKMZ1OzT6h7YSTsDgZiN/hJHjKjlYK/Bbv26W7kqsE7xdNxlfRdzSfVJ2P47rb7UK73Q53uANcnZaj3Wds1e+m+XGdsOpK9VwVNktZ/ViFHqLvV22DxfKP2Zop9EljsUwssgr9w2koGiNZhZyhz4r4/EXaRmtT/oyffoDAO2EbjcaSXSLdL5sCy8eneUpjxmq/FLuVp1/lPfJl+No1GVvFwPEY0rfFifwc6wM1LqVjBqTfUqDqZYAWuI0Fg1OhOXf0HaeDp7X6wYKl3KQyNEM1xdjAYJWnfTm4kKaC2lrlGKON16UKhc+dd/yb1t3DN972iAUNaWBDom1dKFKmZjDTengCgVJfWN9U7ZjxIK92fLg1tqQgBz6XAkb8N+U9KeCUEgCKGf1a+hQD39NnEqx0VhvysRnjK0kHWHKTfyfBI1s9ciHG3+12G2q1WjimDo/0PDg4CHfHoezAoF1sctqqlza2PHTjc+kdThq0220Yj8fw6NEj6Pf7Yv5W3nx3GE3v1Xcx2a61D8oGtKtarVaYVI0FcjEQ2mw2Ic/zMJmsjc+isizWP9QhxAAZBno9ZVq2CO8LLAftCTxyu16vw2w2W1o4wPNaLBbQbDZhe3s70Dkej2E2my0d0xWD1+7hdYzJTY8NUlYf3QZ7PMbX9FkKNjY2wtHxlFck/qc8jd/EJmy4HJN0qZYef6/a9rICIkX73hMXSIHVz9o7zh8x28/jg2KaqoJwHvvG0oUeW9YLqV5S/ig7nz59Ct/5zndgsVjA3t4enJ2dBdlaVm9Q8GOPvfZDSjvkeS4G86h+t2jTQL+hCz1o/vR/6XmKfKf8adkwUj9zuxSfXV5eQqvVCnm2220YDAbiuEmx8zX/oaj8WYestMqWeEGyD3lb0b7C+8ERVCfht6vwcyS6vN9RWqTvvYjZ3EXB4xiYFx4d3Wg0IM/z0O44UU0XI0h5Sn/fVpQdG7Fvaf4x383KoyiqtFFTxlTV8JYd89dpfvR/Tc9o39NvMU3MH9dOYsTfsTHO86d6MzU+4oU1PmJyUbM1JB2u6Tat/BTZbl0PIZ0oIfVNit0ei0vF7GmrLO8YSLHvU20JTqNVH6stopOxKY2jweo8rYzP8dkHNy75O3rPkuQE0Hc3DY0erW7ad5YgL0ILfaY5Q9JOMskJ8ygBqQzJmeLOg0RrrE6cVs4fVtvRMmgQVnO0rfJigQmvkxwzhD0y1OPU8m88RhSnAfmBt9nL5HxwvtRo9/IRfhcLHlTZLni8COZrTcZyGcBB08aO26Rym/KvJAc1Ax+feeRezLC3+jJWhyoNd63OXqMxJgtiskfLN5a2rA2G37daLdjY2ICjo6MwGVur1WB/fx86nU6gI8uuJvpwNyHnGxqckmjk44z2pbfv8FtprM7nc6jVatBut2E0GsGjR4/U+7C1MSXl7w12aPWWyuNjHEGPsgO46ps8l4PJKMuRVtz5g5OxsV2olp+Q4pDQPqQ6BmUNTsamrG61aKZth7qs0WiEyVe8Myx2Bzces31wcADj8RjG4zFMJpOl+9284zBma3GHOZWfUhBzlOnzFJlk5ZdKnyevIvWn9cmy5d3tfLcqHTcUOIFvBWGk56iDvd/Q77xBCo4ydonXxl0VYjYNT2fZ6FpghefhsaMsee/1aby2g5aHVUYZPpHajOulRqMBT58+hePjY7hz5w7cuXMHLi4urh2JV5QGWibvWz5+NZlqxRI0f4nbmzHbUypD8h1oPtKulBQ5IiFWtpRWKovbM2gjTKfTsIuw1WotnZ4UGw8SLTR9yokysfzXDdru2m7TmM1HF6WhPYSQbKKY3WghxW+pClXoH8vOjtkKXEagjh+NRpDnOezu7kKe52EXs3TSVZW+5E2gKlqL6j0NMb9Yel5ULnrh0d9VQaqbJS942ljeHrkcs3ckH57rGM1Xtejygupfjy/i6fMy8Rb6O+Y70d8x+0GS617+lfwUzke8rpqdprVFEd738mBqWTz+AgDm4mitr2K2rlfXWrZm4WOKveAd/TIpptuCdbZbrKyytMSM8o2NDeh2u9eOExqNRmGFGqZ7WXnJ24ZlnIyYILBooG3rVSLSc00R83ccXqMKd/loeaQGB/kuQ8yD3olTJTzOr4VUA9JSHqmgzghX1rdpXFrOGT63+pbfdySNMSnQg84zf1cVL9F7NQGuxsL29jb83u/9HgyHQ/jDP/xDyPMcWq0WzOfzaxNeEmhgRTPQaPlYT23MS0GyqpwditvAb5Ks40em4btYe9HnyEftdhvm83n0ODMvresIskwmE3j8+HE4lg0nM3GScDqdRo/v5O+koIsEry6U+gexWCxgMpkE/pfuVbGAR5pivjFZRGnHfqdy1qOTkT50OPA4Ypwkx0Agl2lc3+GkZLfbBQAIRxtrAS5Oh/aO8x51liQ5S/OaTCaBftxZZbWhRpf0jDqouAMC69toNGA0GkX7vtvtwmuvvbY0GUtt1hRaNVg8VPWYluSEx+7L83zpCE8Pz6wKVZSFenw2m4XxlOd5kA10YtYTYPIgZr/H8sa++6z63N5AkCRr8G/Jbovl7wW3mTRZiP97gkBV0VYFJH1BQW3J6XQKk8kEJpNJ0EF0oXWZsmmbpU7uegJ5tDwtPb8HVsoD20M6cpzvske7ARdy8KN8LRms0WnRn+on83xpPrPZDC4uLqDRaATfA/s61Z7ndg/lmZSg6csGzXbxLAjT9FBKW3CdrZ08dltRlE7adpK/2+/3w27/TqcDBwcH4T36Bjhx+zl8vlnV5a1jzJeRl7cRUn3K+hZSX1C9rdFAxx7qSy0th9fn09JWjaIy0/KFPT6AZodIvpzVDqhz+GYtiV9WEddbFawd2fgsta2qwLXJ2Cobilf0syK8Yqi6nlXl5xFMHiFcBY9IwWsACIFnbsDjLgPEyzwZW2ZMSAFZDAhJ7yzlpylhSWkWbWtKU4y3pGCSBOrYxoLa0rcapIAi/h1TRkUQ+z61bl7Exq9X8aDTxvmEBw1W3U4ANs0aH1s8ht9ZY4AHa/gzPEqTluO9XyoGdL5xN1e73Ybd3V345V/+ZTg7O4M/+qM/gjzPQ+A4FsjhtMfKRnjSFjVIq/omhf8sGRobF9R4lvKx6OJBOwrcnYeTAfTOQg1lgjGx9Nq44d/MZjM4Pj4Ox+PixBQ18unkoEQ3gjso1tjUxiPPT/qbp8F7tKyjffhzjU9S+wCDYPR4VDqWLXCbiu+Y5zRJtjoeJc3bitJBkRpsxT7kAUSpj7PsajKMHvvsdQZTdD7Ai10mdLGRp+9arRbs7u6GiYdHjx6J9ea/rXb06r6qYTnc1njh3/D067LZqywHxwLKLW0sAbzgWdq3ZQMVnrpIPsVNBz1uAyQ9KMmzlLxS7COtHI9+kGxpLyzb1Cozlh/+7dHXmD/aLfS4T2lSMlZ+0XFgpfPa9978PD6n1vfUxsmybMm/SuknrsulMrU4gvStx9ag/s1wOLx2hKvkD8b6gOt6Ohlr2cBWH6xL/5QB7wPaDlp6TKfJCsvejfGsNtZvk35JoUWrL7dHado8z2E8HsPGxgZ0Oh2o1+vh2hWAq/jkdDpdsht5mbepvapGjOeqGncxm98jq6x0KbIvRS6nwKOnY/6tlk8KiuRp9bk3VsTz4N/FTnL09osnBrBqpNhmaBMgLB6WFscViT3id57xkuKDl5XX0ntvnlZbWzEWK/YixS5SUXpn7E05fqsShJ8l3KY2svjk4OAgHGGY51crzhGTyQR6vd61o10ajUYwzukq0s8hG34xoelxOCV4DHucEKJ3nPAdUdoKKOtooqomtjQgz2lKu8j40oLYKfmUGdNVyGm6IznP8xAkR0OK7sBaFTwBLw2egE3ZI7Ew306nA81mE05PT2E8HgcaG42GKx+Oer0e7mKazWbw67/+6/DFL34RXnnlFdja2oKdnR04Ozu7RgvuVPIaoNL4kgLMlizB71PvB/PIFM+7mwC2DV2lzsF3OvDvaRoMOG1vbwdnfzgcwnA4dN+bWRVijhYGXjHt+fk5/MVf/EXo+/F4DO12O+h4zotYVzrxIektHmBOdfqk+kjggVHLKZHy5iswPQFBlA00DR7nLO1M5d/SI3GxvOFwCOfn50HmNBoNVb5hHqPRaGknKu7I5rtTNHroc2tnBQ88036VZJU1rmi5yIfW6Rmcn7HPptNpkFnIqx59hn20u7sL7XYb3n///aU60mADHee8v7y4zQFmWqey9o6W3qPHqwSVyVimJK9jK6/pu5SAkNYGVL9rRxtX0d63AZYOQtsT/44Fg1PqWYXdnLrDjNJ3E3EWTi/9n/Mtykfqx/HrM2gdYoubOKgsseQBnqyV5zn0+31RD0u6ib6nclXqL2q/8TpoQTluz/FvaBmz2Qza7TY8fPgQxuMxDAaDcNIC2nzSEamcBl6nFN+I2/oeXxu/mc/nwX7gE4mYX2wXM/dZsM2azSZsbm7CYDCAfr+/VC4i1ue3GUXoTOlXj/zgvFLENrkNkORnCpBvhsPhUvuhf03bBBecttvtsCBB4vOqbbbbqqs9+jc1v5uop+SjvyxIpd3TxrE8PfFRlO24SBhPzgKAa76W5HdJ+rMMNPnGdXcRePtA8gVS42Y0r7KQfKsi/omVVstP0tc8LY01e8oq6mNzWAsByrZ70mRskcKKVN4rFD7HFcoyx00pm3q9DvV6Hba2tsJxeIvFAnq9XjCmccUZBT/+s4ywXDViwVOA1a3Q0ZwyjQ7+O5beUmA0kE1XC1rfaO81eNPGlAmVN5ozXbRftLHJ30sTDdo3Vj5WXVOMMy0/2q8AL4ILKRMVHljjJmYMpjin3nw95fI0aHTiJEiZxQM06ErvBzo4OIA333wTvvCFL0C73YazszO4uLhYoof3mUR3zPgpAx6ULxNwqNKZ9fR3UZsnRieXsTwIyOuLu7Hq9fpSALFov0ntmSLrtXrRna7z+RyOjo7CO3S8vBNqHrkX01UcRQMEtE+k/pHy9LYZfUf/p0ea0/JSbYrZbBaO2ZV0svQ9TizS3cz4XnK4pfbXaJV0i9SvKOOQXzxOodRetCwLOG5xJzTWyavb8jwP98zS012kdF6apG+kdk7Nr0oUkaMp+sXL+zRtahmevLhTb9lpkr7z2N5avrTMFHvQylfDbfeti8jwMrpcQ4qNWtTm8foPReDhS0ne829QV0l0UZ6l8pzXJbV9pHbBf7j4ly8K9YydInqDjk/620M7tf+ovqnVarCzsxOudqDXjNC0ReUd7R+trlp7SaDthv+qWBhC2xK/bTabSwv2Jdy0TuTw+gP0b9o3VZSRgirkipTPOvpD4hkKbzsh/yMfo01IF1LjEezUJ7fs66rhtWtvwzgo4/eXhcbPlj6oMgayKqTYILH09BvNtrV4SSrPSo+6utVqLekM6oNKu/3XId+0unB4fHFPeVpesfaTUFVbefwXyyeR6OH5e9vUsqm8faXlraWX9EaMx8vIjGuTsWU6PpbWi9ugOD5HOXj68I033oA333xzyZChq8oAAJ49ewYnJyfhm1ardW3nyMugNNcJrxHPneRUoDJF0OMc8zwPEwcSfQi+u0ty/Gl5PJ8Ux4UrDQyeFtlh9jLJKO7olTHO83x5h3OtVjOP7bsN0JQ75U3c+eXRZ5yHcLKA7qTudruwvb19rW3wWOHUPsCjatHJQzqbzSZ0Oh24f/8+TCYT+A//4T/A48ePYTKZLDmNWF8pSEIDvfR/qe4WOJ9hUMxzX+1thUemeJ4B2Medcn6UHBIMRA2HQy/5a8d4PIYsy6DVaoU7lBDIC1wO07rS/70GOG9T6tB5+U4K4NDAYiyvKvgbj28cDoehz3FiT6LXAuWXwWBQiGeyLAu7cVFHUhnCg8PS0ZNakN6Sqeigb25uQqvVgufPn8NgMFjS05rNgOXduXMHNjY24OTkBPI8X5KFvF85vYPBYGlX/3g8dgXWRqMRnJychHZAPYltY+2u5e3Cg+V43KNnQqEsUgMu0nuJzqr9Qk6ntguF/s37HnnKUy/8h/pMkuf4u8iK9rK+NOpcPFqd0g0Ape7pvG2gR4in7jj19HeVwHbnd4BSID0ob/k9opKfc9M+CB97klylafjEaAwefUvz0e6n5roCx65VHwncTpHucvXyFpddqKPwnvpGowGvvPJKyO/dd9+Fn/zkJ9fqRYOhPJgttYFHztH6oBxrNBpL/n2ViLUZvp9Op8GfqtVq5sI+TPey+h0Atp0CIPN2VRMVq5YtsdjOqsvjkMZHvV5fOn1vOBzCwcEB/M7v/E6wJ7/3ve/Bt771LRgOh8HXybIsnPRHTwDSbORV4yb0BMoNbXxKttxN46b16SrgqRM/8QUh6diUfsP8aLyexskAADY3N6Hb7YaTHzjtqHfoO9yQgEg9FTOV17QT4mheRXiniL3v0eOajeO1k1Pth6rHcor+0RZ8URqqutKSym9eR0tHe+89VqPoHoe/TKNbwTQt/W0TlpRBq6ItZXCntL/EQKtsTz6ApRUujUYj7Iilhic1zukRBjxfAHnb+E1BEtJSf1YhwKsS/mWg1Yn/0/qIB1Y99GkyyApSSLKGB6i0Y58846bqdtXkicZLUtCRgzruPA/rO+l5rJ0thb9uOa7pMdoOFk1FaMXFJdJY0ILpsTpQQwDv4AJ4sTIXj3yZz+chWIxpLV7iz3i7xL6jwSD8TkORcVIkoF+kzzx0S04JDVzR316j2QM8hh/1qIdmCxptZcclHf/I/9RpirWxxyb0yOJYcE8b75I+4+9XYWvQ/sjzHHZ3d2FjYyMc/44BnZRFU5RObnt5Fs/w4z653OI0p9JEf2vOX6PRCDtMqeyU7ETO061Wa2miDd9ru4F5fTAfOvZi42M+n8NgMAgnE9DJWAnWOEwdm5Z9VUTncpvCy/uSftP4pgpo7STZRNxG9eRB683/53nS72MBjBiK9Be1EejOnO3tbWg0GtDr9cLiQ6pLbptfnQLJ/q3aRkj1s3k5lv3A7QYtHykdr2tsjMb8mrLQyi8iz6zvNNnEbTHrCGJuo6Xyg9XWkk3oqaPU53h6GNpRXK547GOvn6bpVJ5PrF6abNVo0+qv2di4AAMXr1Edjem9fp015iSa1+2/euHlN/re6hvJh9H8SM0GW2U7aTytvU/Nm35Pg/m4OK/ZbMLOzg48ePAAfuZnfibQ0O/3wzUX9F5jvtB2FX4E0nAT/OmRBUW+R3j86CrqzeVfVe3p1cup8NixnA6rr1L5UmovDZLNgWNjY2MjbOyQdpV7bfRUmovAwxOx/LX3sbwlnvSMDQ9iMlXKm+po+kyzu2Jl8rI9YyM1/pA63qy6ee1IT3+V2tKkNfIqFMJtNIAQt402qf25IFw1zShgAa4CWnhfIgUXuHgk3vb2dviW7orlyPPbs+vKI5zLCIEi9GhOlxQwo3R6lDoNsuORhqhM0UnCd7Tviyj72LPU1bp5frU6C3cVDgaDpR1c1j1zq0YKn2C7p8JqU0//II3IA/yOBymowJX2qiAZAvy9tkMkNi6ok0+/oUGfer0OnU4HsiwLK9wxmEJPAOD0ecfFZDIJd2EBABwdHcFPfvIT+OpXvwrdbhd+7dd+De7duwff+MY3YDqdwmw2g2azCa1Wy5U/1pHSJckRjYes9uO7Pl52UJ6mC04sQ9syUml+9N18Pofz8/PwDI9C1WjSjMWi9SsCpHFzczPUB/mRAtvEw1s0vQXNIfBC6xMvYjqLB4TRVsJdxf/f//f/wd27d+H09BSOj4/hr//6r0Nb8jbU5Ad3knn7xRw+1OG4K9RaXcp3CpVFnl9NFNXrddjc3IRms7l0ygbqGF4/Om663S40Gg14+vQpAFzJZek+T4AXuyMl3YWLWzy72kejETx79gwODw8hyzK4uLhYOgWBB+SkXRJYhrbL06ufaX5ldW5KQI2fMrJOO8qyM3ggH228wWAA8/lctPk0O5PbPdquQKl8Kd+yQDsQd5SjHY73Nn7ta1+DBw8ewJ/+6Z/C6ekpbG5uQp7nt/qEhRi4f4PP6G+OdQeqcQzjYjk8jo/fjS7xjnWUr7W7qmygkZZj+YKxIJqVpggtmkzR9FmWXZ3OMZ1OYTweh2Avp5XbSrwOGqiNIdkumg9EF0Jwmqlem06ncHp6CltbW7CzsxPSoOyy4h6W/yXVm0KiS8vb007aDm8PUHdRnY2TsHmeL42D09NTGI/HSwvNNBuQ63LNZ5XovS2xPj5GPTEbS2ZISLU1PgtAuYxtMp/Pod1uQ5Zl0O/34fT0FP7wD/8QvvSlL8Hv/M7vwK//+q/D7//+7wPA1dj55je/CY8ePYK/+qu/CncaNxoN6HQ6MJ/PwwlcVchpjf7bAhyj2juKVLpXyXeWrllH+atEzO+L8WXMR0cdq7WVlner1Vo6rng6nQa5PxwO4fLyMqTlehx1akostOrxtyp+KDOeY7oc4IX+KOq7e+1QK39PTCcVtHw+P1A2TsFjK/R5Sh4c9VgC611KA76swktDLGifgpiR5BGOGm2p3/LvyyCWz2KxWDryFAMiGxsbMJ1O4fnz59cmY9GRob9vE4q0twTa95LikIRBLH8t2E+/j/EE9g8G2QGugg2j0UgN/HHh5W0HLa+y/ElXYlFgABcDdEWOspKgyYSYM+0JLqVAC1CmfssnE1YtR3i5/FlsDFjBaY3nY22lORNcPtH7DrniTmkfzBfp3dnZgd3dXQAAODs7g9PT07CTjpZBHcsy/aS1oWRo8/GFO3b53d8aXatyVD0oGpBD8N1GWmBTqyOmx3xwIh/7n95n6UHRMVjkO2lcacFS+k1szHqeW+mqlEMxntXGhkQX/sYAIx7FtLm5CTs7O1Cr1ZYmXmu1mnnUY5GApwQua3j+PPjM9QFFbCzH7Gj6jzr6SCNPg0D9jUcZ8jpI5cUgOV5U5uX5i2sP6E4mWh/aVlRW00lMWjcacOb/czuOl1UlUoNnMZ27CtroGJTKwneNRiMcgd1oNGA6ncJoNHIHJWIBqZgMoGk5bbG2sWxDOm6lsm+br1QUXLfS59rYqKK8VNp4QAjlEN4JStNKgUTOR1z+pOjCquyF1HFM6+ixPz02UuzddDoNbarZSp6xIcmTGM0SNL2o0YS8Qa+o0Gi1/BAtjdcPsNokVcdIespTFv97NptBv99f2nUYk8eaHcYXNXj8Sw+tXsTaMDVWwu2yKvw+65tUm8lCVW3qgdd20fp+MplAq9WCL37xi/DKK6/Aq6++CgAQrmXZ3t6Gv/mbv1HL9NgGnxXQTTmaX2HJWfyO/l8EVfC6Zstr3xXxVVNp9Xxb1ThN8dOt/Og3k8kEer3etSvt6EJHnheehOA9ftaS31qcoGrZw3nC6xd74hhWXpJulNLzMSnR4oFHZ6XaTkUh0aLZYVY5VchpKj+09ozujNU+XPXl5KsIKKwDMeNKwqqV8jouki8CDIIAXLXN7u5uWNl4fn4O3/jGN67tpKG7G15WY0YyLqydTvR/AN8Z9jwtBvZoOVQAW8IY6cNyms0mHBwchLzw+DMO6ZiWWDkSqGORGtiTxhy9h4++f+WVV2B3dxfeeeedpftpvGWl0IDPU4LDtB3LBldSDCueF/5PAx3rktVehxkgLouzLIPZbCbyrvUtD5DwXeK4wx/gaqzge3r8Sizoy43/PM/D8UcAV/dt/72/9/fg0aNH8PHHH8NHH30Eu7u7cHl5uRRYRj5Hmi3ZwX9juZKTL+3cwjR4tNrW1lbIbzgcwtnZmVouRxX8VNSGSDkKWJKhXEZ5wNPj8dLdbncpEDUcDkP7F3W81gGkTZuA176JOeke50Qrj0+UxwJX0nPLuMf0KUE0gKvx0m63YTQawWKxgG63C3fu3IH9/f0lvY07YiR4yos5HLSOeDQy52Vtx5YUYLHKTnXwcMIaEbOBsC03NzfD7lbpnltad6nvtSsWcIEEPYo4z68mY+nRkrRt+GQyti9OGuOEPJ24oau+tZ29lO9oG6zbf5L4nga8Vy3TeZCMB11wt3Wn0wm2Xr/fh9FoBD/+8Y9hOp0u6UutDISkOzlP8W+sOhS11Wg50rUEw+EQer3ekt90W/REKri9SceR9/tV1x1PQOET43jyAcpzyi98Mpbb+Zqd7Qlmeb/x2MuxMlMDmlmWLd3vifcd8/tYvcjzHAaDwZL85pMBnDZN9nO5Sr/V2tTDi5o9g383Go1wzx7SzMeuJVOoDULrbN0Zbd23Lf2WwOW85VvQbyS9LPHRxsYGTCYTePbsWTjth6aj1xlYoD5YEXutKhTx4bW4AH33ssr2m4AmH2NH+D948AD+6T/9p3Dv3j24d+9e+O7hw4fw4Ycfwn/7b//t2kaSddtjSNNNlAtwVd9Go7Fk904mk6VFMp740U2MT012pcQbU3V1WRTpZ0nWWrqRPpf+5nRYYwvgKnbc6/Wg2+1eO72Nxq8oMGbHeUuiL5WvqB5c9byJVL6mI1c9hq268ivXPO1Slte9NmYMZXbBWn6S1Hcaz8VOFkO4dsaWESpFO+WmAwurgtSW2oBchfDWDLuq2hedTSu/ra0tODg4gN3d3eCkzufz4IQAwLVjjdGBve1HXFqGQ8wJ5s6U9J3H+Y7lL72z6KJAQ4ru/sCjiel3Fk/HAuySUJOCXFZ5CDT6Njc3A707OzvwxS9+MeT59OlTODo6gvF4DM+fPw8BVnp0HQZ0Y+0TQ8xIoO+l8Wk5XF75zfP3GpiW4cCDATeBqLL7//cnl1Exg8j7njr2mAYnNTDYpvEvz5Mfacm/HQwGcHx8vDTxO5vN4NNPP4XDw0PxLmQe0LEMP21Cki/mkMYrDSoBXAWDF4tFOF7Ma2iV1X8pQTH+PFY2dda1sWjlockBfI78ibs8kIekYNUqUbUjnDq2yspYrjs1nqdleR04HswrYqfiN5hXnudweXkJFxcX8ODBg3DkOS7yoJOhKfwdC67ysSu1hdaWMd2ujQ/NscOVz6PRCPr9/rWJCutYQWxH1NV4LBwtk8OyHdC2ofd0S6BjdDweh/SUX3CSodPphHJx8gFpo8GFjY0N2N7ehslkAufn52IduAy26rMqeGwZntbLj1ZZlNekdqDPcYzhaTxZlkGz2QyT/BjIt46ArQqcZq1+1rcI3u98F3iWZXBycgLT6RSazSZ0u92loxJfdlg2jITUvtVkF50spJNltFwc76+//nrY+dHr9eD58+fhG5y4xcUilj1RBtzW97SbpAskn8HyU7TxLkGzbWI2ofReSufxG736QdN/tA6S3vHy33g8DpOOR0dHYfcQwPId8NzWkdouphukekj1t77lut/iV28b0HJ53RaLRThJRLNDYnXDMastuKJ08O9jfnysThQxe9Mqz9IlvDxPOfQ7bVzTNrX8g1Qdo+XjyUPj3di48+SNx/7v7OzAdDoNmw96vR4AXPm3+/v7YeHs5uYm/MEf/AF88MEH8Cd/8icAAMHGqNfr4aqRqn0rxG2KxcT0Z6xfPD40TV8WUp7SGLR4W9NXq+pvXlaRMRerSyrdlp3qpS/P82Cr4jHf0uasWB4xOj1+rQdWnbU0KeXEfKYUpNjHHrr4eIjpBel7L1L6I8ZrVl4e3aHpG6ufNZS6M1ZCqjMpwQoI3TRWIfS97yXm8Awqj5Cw8koB7uCwBtju7i787M/+bPg9GAxgPB5Do9GAZrMJAFcGDv0e87Xov0kUNdY155Mf2VCEXwDklSFl+h+Dh7j7A+DFZCwNOsYuYEfaPHzO6ZIUsOakYKCz2+0G3nr48CH8w3/4D8Oukx/96Efw/vvvw/vvvw+np6eBNnr3rXTfYRnEFKsWGIkFQVLKlN5ZSsQyfFIVahWwxo0UrMDV5jStlIdlTON3Uj9I+Y1Go7D7P89frAKnE6PopCFoPjzAgGX1er1wHyJOek6nU/joo4/g7OwM2u32Unlam3DwNDToyINKkqxDAyXP83BEKN472Ww21Z3ItI0xz1U7LzEarGe07prs8dAvjfM8z8PCAXRG+JGsUj6xOmhpNXjtAU33SfmUKdv7reVQaLzvcdowHf7NdzdJQVKtLjxvOhl7dnYGW1tb8NZbb0Gn0wk7QuiOH+/x41mWiRMFHJIz5ek3yuvSccBclkiyggNtDNwFTuVFnr+YcJJO26CLGGazWVhYFZts43yBY67RaMDOzg5cXl5G7yRC2pBeLg9xweHW1lZIj/oB09JFNI1GA+7cuQO9Xg+Oj4+v6Qm+oyhmQxRFqgyWdGYV0PxCTe5wOrDvcYdiq9WCzc1NaLfbgZcwTcr9UylIlakA+kSHVF+uW2u1Gjx//jzcFYv3KKM+pt++rJBsklSk6ml+N7JkG89mM2g2m/DFL34xLAZ9/PgxPHv2bOme33q9HhbV8b6OBbk0W0XSc5LtJ/322sRWm6WMe87bFi1SOfR//E5qI2kMWXnS/CR68X/UsfQ3L4f7ULH2GY1GcHFxEdKij418E5N1vN70f81etaDZ+zwPy2637An+Df+bl8n1LC7Ux7R896tmZ/D8OZ1aW2j1KgJtTFo0WWli/a6NjRiNWj09vkaRNuK8VKadLX8iJkPr9To0m01oNpswHo+h3++HBXIXFxeQZRl8+ctfDovsut0u/Nt/+2/h3Xffhb/8y7+EyWSypGsHg0GlsSSJdk8dVwnad9wXQHlG44QpPFRmx6LHPrDkf9F2jI0zr60uydcUX5b3Cf9esrG5b+eh0SpfOqFB819wwU2324XJZALD4TBaFrchLF3E0+V5vnRyiWVTem0Tbxqr3cr6cpLOkuxKzTe2fDqNlzS9K9HjpVsqx/O9Z4xIPBEbtymbA2N1rnwytgqsW3GsA1Kd1nV8sHfAVwUq2PjxcACwtNIf4GoyodVqLQnpLLuaPKE7QV6WgIFmrEt10IxELbBrlRdzgLQ00jv+HTqAVhnoIGnpOB/g3yl3IErlSqDtx9PVajXY3t6GwWAAp6en0Gw24eHDh/D48eMwGXsbUUYxaW3h4S+pf26bjKZBEM7HWoBJmvSMOZxUucccHUoHyrG9vb2wSnY8HsPx8XHYCUZ3m0vAPOr1OgyHwxDUy7IM/viP/xhqtRr0+331e4tWjW7uVHmcClwAgbIAv8ddwtqxHSjzAV7csVZUNsTq5wksaMEhCx5aadBIC8rRiT5+PGlVsORJTN9qbagZ85jvqmA5BBrP0jpSR4yCH6dF86EyhB4t66UNn8/nc5hMJuG42svLSzg8PIQPP/wQTk9Pw4QsrqanwUfLSfbYD5LzrTnrVhvTbyVZiTTTxShSHhTD4RAmk0k4urfdbrt5CJ12utuM1ovSzMcW2gevvfZa6N9PPvkE+v1+OH7Ys4MS39M7n3GHBU7CHB8fL52ewAMB4/F46ahvpJf3URUBIw2cJ25K998mm4PqKoDlO0EtOmP6U4Ilp2OBL4Bl2x3HJz/h4mUB93U0/Wl9H0tP0/BgHZbH73jWkGUZtNtt2NnZgf39/RBcRH6p1WrQbDaDDYiLkCWdw/WVRLdVR68PXVU+ND2VW1J5vM2r5smY76TRZdn2XH9J93vTMvjfsUAhX3zujYXwsiU7W7LxpffSlVCSfgdYXhwl1ZfTwNPyPLnM4t9b7aDJBa3NNf9vnbKxqrKK6hbeJ7yttH4oQncRPVg1vHoDFxMDQJDfZ2dn8O1vfxsePHgADx8+DPnt7e3B5uYmAFwtqPhH/+gfwaNHj+D99983ZfeqcJM2k1RPHjdJ0d9afvT/MuC+i+QP8nI1umg6KR5l5WdBk2mpbchlPLcJeVmp4zy1jpPJ5NqVRlKetVot6SQDT7touoD/XvW4XaX9k0oDR1H/0hMjKtK+1KbUEPNXvXWyZJSXZvT/LbiOKY4V7HE+f9rhYcp1lL+uMpH56DFxCDzqA+m6c+dOWFVGGZY7vLc5aOClzRoP1OHWFA4VDFowziozRXjQ7/guDJoXpp3P56pC1YSRx0CNOV3S97w85J9arQaNRgPa7Xa4S6vRaMDBwcHS6kWJRl7muqA5SSnfIiSDU4NX3t/0uLQc/hRDlQcTuNMgBY08yPMXgfatrS1ot9vQarXCjid8LwX5KS34N07kjkajMGF5dHR0rR5l24PSEAvQUeDkIQ8e8R1uEn14qgIN3lU93ooY6B79o8lmKV/NSaPv6a5kS64WgVdf8GdWEK9MmR7E+FczvqXd8rwfJP5GHaKtkqXBBKk/PbQBvDiWFyfi+v0+1Go1ePLkCfT7/bDDHCdj6ZUN3E6g9ZJ0Nm9LCVU6gzRQy+Uop43bKXS3GA/4WsjzF8dbxU4/0N51u134mZ/5GZhOp+HISBq0oPd/e9qA0r+5uRl2WvT7/aU24e3Edw9Q+1CSN/SZRl/MFykjb63gbpmAU5XAtqb3SWrpJLmHbUzvKIyd+GDlHUtnfUvHKg+eIeh9w1IwLrV/bhpcdlgL2Irkjf/H4hp0N7WVrtFoQKfTgbt378Lz58+Xdl+jzYNHZkuTsZz36ASZpmck2arZXLwMKT+aPuYPpfIRXZgj+XGWfa8h5V2MXksfSjacdsUH/R3zu5Cvqa5E/RADH+Nee46/l3x2ydbh36TyhybjuP/ubUs+dry2DP2Olhv7fhU+Sio8MtxTD+1vbptRpNiLMdtdel61PeIpm/LCdDoNvIg6vtfrwfvvvw/1eh1eeeWVwCd40gYAwL179+AXfuEXIMsy+P73vx8WRdE7oS0aPivQ5AHVofxdSl5emSr9tmzhmE8X86Ewr1g/c1qK2GMe/rFsAUtu8/8tORErW0srzRNw4MlAXpmM5cbolviQvtP0WlmZJ5WzTlj2IE/npc3S01bZqTGH1PaKjSltzEtlSf61hx9jNCTvjP0sK411I5UBV0VDlUAj2qpXr9eDjz/+OPx+/PjxUuAZ7+ha187hqpBi+NNvEB6n0Pqep0Ulw+niv2NODv6/sbEB+/v74biWxWIRJoS0uqUYSNo7DFogbZpQo/yCRwwjfcfHx3BwcAD/4l/8C9jf318K4LTb7aX7ijFvTIN3Xt4UqnT2JKViGYj8900YDRQ8wJAa4OXBO6yPZSx6+Ji2Dz9inB8rhncBIk/hAgEe3MN86c4WXu/Nzc2wa46OV29gOMWA1p5JmM/n4fSD6XS6NIZp2bQ+3EmjRnARnsPv1hUssQx3iSYrH8wDeRUDczeJWPnrsGc0HRgLqMTy4DvFqM7DZxLwuTTRUYTnFosFfPzxx7CxsQEffPABLBYLGAwGS3e148561G+z2WzpfnNKg0Q3ppWOO8Q248cuSvogxV7htgQ9RpDbIvQfrQNORmM+Fq+h085pxnc4wY0T4di2SMN0OoXT09Nr9cfyse0kJ97Sq/P5HC4vL2E2m8FgMIDhcAjj8Ri2trZgZ2cHfv7nfx7q9Tr8yZ/8CbRaLfi1X/s1ePLkCTx//hzq9Tp0Op2wipwH/bFNblpOICiP8MlAgOXFllwPV1UPzoOoF589ewaDwQD29vaWxgI/2UUK4FCeoPqeTtZzfSZNOEll8LI0xPSIxPurWtx0W6DJqlWD8yrKFbTd8Ijx119/HXZ2duBnf/Zn4fj4GI6OjsICVsnXor8BIJycgmMJedXapV/Ebud5oe1GZZ2nnbFdpAUxnH89fLmqfvX4E5IuS4H1vVV3HLex/tP8Oq39pXJizz2BTC2dRFMMnN8sOi1IdYjVi/LlZ1lmerGqNig7rtYBvEaC6tAnT57A//gf/wMeP34Ml5eXsFgsYDweB1m5tbUFo9EIarUaPHz4EH7/938f3n//ffjOd74DzWYTOp1O4K3hcLiyaxFuGvx6LyrH6KJGa+EgjwOU5cNYLIfLCPo7NSbC+Zv6Vxpd65I1XIfzuq/iVDKLFqksqZ3Q95XSrJvulxUaLxfR91XBYzdweOJiXh0ei9lxHrXGsgbLRyl8TPGqmP2zbvhIwS/+TgpO8W8kpUHz0QzjVGWSChSGnFYKaxV5lmXiDkWvAr0pVBE8sr5PrV9Keqn9pPpg3zQajWBk4X2YUp6aosffGq1acEoLCkvf4Cqq8XgMeZ6HyePXXnsNtre3lwQ0DchSmui7VaOIovAoRSvgR8vm6TSFcRscJi7bvEaF1l6Wo88nBGJl8bQ0+EDvLWw0GlCv14NDwnd38D7R2p3eI4j8izyr6Q6trlI67bcEnifu5rSOG+ZygQYhaf/yXYCSk6PVoSrdYAUgU+Ut/0aSa0UCqZ5ytd8x3k4txxv4sp57yuGOukeP8jFl9UXMztJ0naZXpXrQf71ebykAyxcJUVmi5WnxDD1aOUYXD5pKejzmREllWDpeygfgumOuyeQYL1B5orXRfD6HXq8XjhOWytZsEosH8bSY0WgE5+fnYbFOlmVhl0Wz2YRutwutVgsePHhw7U5ZnEyfTCbqIpey8OqJWB5UbqO+w2OneR9JAXrLQbag+UDYb/1+P9zZSR16KygoyTXuh9Fxz59LdMfq57HtYtD8ylSU/X5d5Ul9peVXpc9F86P/DwYD6Pf7MBqNIM9z2NragsvLSwB4cVwx1SEav+B4ksrTYgJe31jSY1rd6DfWb+077T0fN97vabqifFk1P0tjn7/nOsSyQWI0Sn0h7WrV8rbKlb619Ls2/mLgepN+W8Q+SylLylsbD+uQfTFUoZ8lWGNIe+ehwWMnxvi/CE9Z9HjBrwzLsgxGoxE8evQI9vb24O7du/D666/D9vY2AEBYHI0yvtvtQrfbhZOTk/Ce+uzr0qXr5FvN5qC2Fsr6FLlmvZPGdOpvSQZZOtbbpjyt5SN48i0z/r12lTbeqipboyXVNpOuB5BsoVi+qxofMbtJe1e1bOeItUuqzNDsNy+K+jop36X4jRoPlbEJrHS37s7Y22DolIGHgbmRZwlmDZ4BfRNtyetG70HU7lXDIA3NIwW3gWdSncgygjb2reS08/eW0LeMhLOzs6UJE+rwVbF7VDLeNEjB5Hq9vrRziAdze73eksK+c+cOfPOb34Tvfve7wXhut9tQq9VC0PC2gx9jCLBaRW4FF28r8jwXd4JpAf4yoEebYjs9ePAAtra2QnAfg+9bW1swnU6XjqHFI+swkI2LAaTde6PRKNwdSftFM0QleNPysVnGcORlTKdTaDabsLe3B7PZDC4uLsK7TqcD7XYber2eeFzvOuS/1K7U+MTnMXnBv9NAJ55XMca0YIcUGPTgJnUw7YMsy67tWrSODeT50P8tpw3/5Xm+tCudl2H1Ierp2Wy2JJuw/bvdLgDA0t3LtD4Y1FksFuHeUQAIx/DjjvRYfWm5WA7Sg5O+PB9+hCLWxWObIO0S+O5Cmt90Ol3qI28Am/ZVnl8tzMLjQAGu5G29Xg+yBe2c4XAY5PBwOAxt7R2PKfLx+Pg4HE999+5d+Mf/+B9Du92Gt99+O9x/i7y2v78Pm5ub8NFHH8FkMgn6xKp/VTIkZZzXajVotVowHo9hPB7Dr/zKr8Dbb78NX//61+HJkyewubkJWZbBYDAAAAh6DI/sjgVviwDzHY1GMBwOg57B+3wtWcFPmcEFT+jXaPTS8eRBSt1S+rZoIP22weIBHjzV3nnL0IC+j5Qn9jnyy9HREfR6PTg9PYXxeAynp6fQ7/fDyQaTySTkI9kPSAsu3Gi1WlCr1ZYWkGpB5ZTAplYPTltqfIHHBPi7qlAmCFj1OCgTxOS0aKcvaHZas9mEVqsVZA4uSMbTIvhONcveW0Vg1QvtegheDspgixb6PV2Mtg6+XAeq4mGP3FuXv7XKPiiaf61Wg06nE9rg448/hk8//RSOj4/hy1/+ckjXaDTC2JPKlv5eJW46RopjGGMjGNdDfsL2on3i6R8r5sr1qacNpPhQzFcvC86LqypL0++xb6rYtU37NrbAVwMu6kefDIGbt/A+Z0+Z64TXJ76NWJUMlk7stCDFG738HLMRtEXAkmwpOx9gxVhdk7FFOuRlZkALMaHpfSalWbVDsC4DM2Y4S8/50ZwvC7S+TTFaeYA/Jb+yQXMroCnxJL3DTDJcrL6XvvHQagU1ufGFvMQnw5D2i4uLYFzMZjOYTCZwcXEBx8fHIR1+X5QXvUZfGQOsKifSCiYVyW8V4MEKCTxwRL/F93TyAN+V0W0pxj0uSqHHYWfZ1WIDHqilExye/PnOCq0dNCdQ0z3SN7H2ou8lOcFpw8DidDqFra0tePPNN2E8HsPTp0/DhAi2E6XJ0wexNoy9j30rPYvRJbVhTKalwlNvz7caXbG8eR+tA5Z88AalpTzzPA/6AIPfPK/U8SqVQb+nsoynxTz4RAAGWvndO0V0kfU3Hb9SW2rvtIBDim6X0mjfSsCy7ty5Azs7OzAYDGA8Hocdpvx4eZyMzbIsTLZ5yomNE3qMKdor8/k8BO4ajQbs7OxAu92GdrsNnU4nTMwjnbhgh/ONVGduy2j9ptXDShN7Tndw7+7uwsOHD8OdapKDnWVZ2DVStd9Jy+L3mlsT2rGypON/vfLAKtPqVyldVaD08JMqViHTU+wppIHbe5pto70r0s/SM8uGRPrwqhR6mhBO5KMs59/RvCV9I9m7Wr2lOkvtorWNVT5/zunwPF8HLB8Xn3Hd5uVHKc8UHVzUBtV0KPWB0SaQFouUGc+xMevNNyb7pLQSb0t2h2Y/ac94nSy5YtG+Tmi0VpkvR5l6cx+Vl0fTpYyLFLusLKicwCsjnj59Cp1OBzqdztKJV61WC6bTKfR6PRgMBtfinNx2uA08tWpY+oLLJEuuevOPpaPQ5A61MyjdHhtZoydl7K6aP2I+f5WQ6qvpE4sfaBoA/aoh6TuPv8PTaTRLtr8Fy/5Iae+qeSI1P41vV8EznvYtI0e9/afxURW2gXtn7E+DkpDgMRYtYRozAFORYvzGHJB1gwZa8PdN0bJqUMGaOnY0Bz+lvawVHDF+9RpAeX591ZRHoWjlxwx0nofUTpzHKEajEXz3u9+FVqu1RCceH7MKWEbHbZKpqxiLVTmIHkOVHuWpOZDUAYodP80DYhJiuoEuTsAd2W+++Sa0222xvemKbVwB6KHFCqRRWnnwDr/FoA0dy54AGjcg+U513PFB88BjNjFA+fbbb8POzg4AALz22mvw7//9v4eTkxP4v//3/8Lf/u3fwv/+3//b7TSlplkFv3uCQTG5VhUtReonBbW85VVRvqccKRDHaYg59Qi+A4/KCdQlzWYTms0m9Pv9pZXunl2SsaCWVB9c6YtlSfThkZd4hO3Dhw8hz3N4/PgxACwvmpJoonTRHU9IJ99VjHTiXauTyeTaoiX+jeWoSSehcFnC7Sf+rWVba/ILAOCf/bN/Bv/m3/wb+D//5//Au+++C3/2Z38Gz549C3IId2rm+YtdREX1I8pzgBe7ifF4YgAIi3Nw96v0/e7uLvziL/4iPHr0CD7++GPY3d29toBHsyfo7mnJXovRXtYxp+129+5deOutt6DT6QAALC0oQD7sdrtw584dOD8/h16vF/Kg5cRo8Pg6eHIK3yXFda1UtsRblt6NBQksmj26fZXASWpsH76rrkq6YjqD8kq9Xg+7//kClNR8PeB9TdtB4huAF3ciX15eBv7G9/TEKEq79IyffIN2FT6Tdv946svbRbJXqH3I68fz8pQHIMt+D1ZhU0j2bCwdgB5Ip3e5I59KeUk7fKS8LRo4KH8BvFjoiLY25i3tTIr5OJINIulhyeaS3lu2ibUwP2ZfWz4Zl6WcD/mRsdI3twWrsq9XCcsmk9r5NrU3pQ9PoVksFtBut2FrawsePXoEz58/h1/+5V+Gg4MDAIBgn3/66afwv/7X/wIAgM3NTQAAGA6HYXHnbarnuiDxL9ehVrtIcYnYN0Xamcor7h9JOkGrV9V9XMX453LcSseRUrY3rWSPSPaQJj/o9Yaz2ezarvSYfuf15O2i6QHNFvBiFePf8r3XjbL8kwIt9pBad23MenxLD8QTYmMfpVYiRYB6UbZhiyDFucC/tfp5gkYWw8acJutbLTh12wyA20YPgG/iOyaAPeOB58edee0YxJgxo9VD4iWangZYOW24wjYmrDz9KY0B6rzicSZ4PBctw3IeaQAZ+2dnZwe63W5YoQ5wFezu9XowHA6XjkO27tLT6i05nJYjlyrUV6lcyxiPsSDjOiDxKaeJ0omTnTyNtywLnA+QB5Dv6FEq4/FYPV4Y4LphUcSgoHRI72mAk/4dg0Rzs9mELMtgOp1ea1+NF1qtFuzs7MCbb74Jr7zySjja8u7du2E3GB1HFh0p76x6SbB0LpeVEr1awEp7zvO26KT9QPuSpuUyP2ZvSPTdBmhykPM6f+bJU9Pr6BRq9/V5eEbjn9j40N612+1wtG6e57CzsyMGEyUgj8SO6aN8jMe4bm9vw2g0CkcfSnXiv2P6ROo7KT8Nnras1WrhLtb9/X3Y3d2FbrcbFsYAvDharkjwRJKH2hjkO2PRzsvzHIbDIVxeXsLp6Sl0u90QLGk0GsEuozs6rSMsNVqKwPJhtPdoL6IuwJNIcIKYO6SLxQKazSbs7++HNHg0vRYYoWVZ9nCs/poc9nwr8T3noSIyyKPXyvpzll5Cu4W+s/SKRDPXibGx7fGj6ZiQFiVobaL5RzFI+fETErjO0cqT/CqetqhNQNNr47WMz1D0+6LfVS3DYvRYNp43Hfc/kU+s63a0PvOMF812NMHwvwABAABJREFUoZOv+IyXU2QMpH4n5SPZqLwMCTE72CpTyt+Sz3Q8W/ZkER+jCtw2u3wV8MQWuI1ZVsbRvD3vkD/wqpBnz54t7YAFADg6OgpXbGB8C+l8Ga7BKgKPvNB0oDdfK+9Vw9KzFk0p9Fo+bJXjv6o29IzXFJo8/jPaqNK1JhY9Hr9bssX5MysO44HHL44hJq+8fngVSI0def0i6VlsnHnlieRbenw4b1tq8Q2OlR1TzImhTpKEdSulVCG6SsSElyeQQAfcTZ6PHsNNtbEXqzCuPYJfAgZcLy8vl4IOnv4tWibyD99Zg/nRXR5WsChWhvRNll3tcMT39XodWq0WDIfDpXvTLFlBj/vDtPV6HX7u534Out3uUtnHx8fwzjvvQKPRgFarFZ7jcWKr4AMrEEPTWaAOwLrH021xAvlEJQ3s8nbhK6CtHbE0XQq0dkEjEY+nOz4+Dg4Z3hcGAEvBGuxfXIGLu35TgspSgBLHAz/CW1rooOlr6Rnmt729Dc1mE05PT0O9tEApotPpwP379+Hf/bt/B51OB370ox/BbDaDN954A77//e+H/HGHjocez7sy4AaaFOiyQO/8lED70LOTrUhw3jIKtcC7VJ703bogGcq0HYoEEGl/cpuK7mThwXUAuPYOQW0yHpjX6kPzk3Dv3j3Y3d2F4XAI4/EYXn31VZjP5/Dee+8BwJU80fQkPaYf6dP6E2XPdDqFRqMBb7zxBpycnMD5+bmYHvMDgGuTw1K70LQ0Hc3L45Rr3wJAmLi5d+8efPnLX4aHDx9eoz3LMuh0OpDnedjJFvNZOA34Dd9tKQXK+THFmP758+cwHo/hhz/8Iezv78Nv/uZvXisP71XFb7WAgFRHLHcdPsJisYDRaBQWv52fn8PTp09hY2MDut0u9Pt9WCwWQffN53PY3t6GL33pS3B5eQm9Xg9++MMfwvHxcVjoE5NNlk0qfSPxGepJS99qPpukG4rAKreobZ8C7BPc4YfP+N1ulg7h41Zb5JkK5N9Op2Pe1y39TinD0n9UPmhyjcof/B9PFZDyoml5mfQZ8qY1wachRW/H+jilTNpOHjv2Jvwaz1iX9A/lBeRH1Gd08bKkx+jC0FQauMzCZ4vFYmlBJJZB03D/qOyY5LRxmul7TY5LkHjQa+NqdOG3sXtmafvygCrNx8vPN+k7V1F+VfR79HURIF9Zvk2V4H70YrGAb33rW8HeQdRqNWi322G3XrPZVE9v+6yC97N03QuPKZYZ51y+lOEHS2em2qEanTcJLvslXZXiq5bRJVwux2ycPM+XFjpI/qRFN4Wm2y1fqUiMQcOq7Hqub1fNc159qNm3iHXoyyyzF8pp/gW3S7S+o/ZOrD5LGiG1cYoMutQ8VtEhkoElGX0aXVqgQ4O3jTyD3nIGypS9DsT4C+DmJ3uKls95yXJk+TucdERgsE4TEprDXqSvKV9ZfGQFRCk8NEgKDBUpBm1wJwjdNaLlJQU7aXAjyzI4PDy8FkA+Pz8X+6pKHkztE48spEcP4nG7WvBQ40sraJsa3Fqn40MXJXgNIdouHlqrqI8UdFwsFnBxcbE0QYuTo/TuWFo/60hOWlaZoKNGrwTNMKf8hPdXYtCRBzUkPTedTqHdbsPOzg588skn8Nd//dfw4x//eIm22wh0qiW+5AFICZ72ttLztvfIjyJ9rCFVf6/K4QC46guchESnjvK1ZihTujhwFyIGN7U+jclJ5BNcYCGl0YBlzmYz2NzchG63u7RoaWNjA+7fvw+LxQK2t7dhMpmYC3WsY4SltFmWhftL6/V6WLxEj1PHIDDN19JF+H+Mv/m3Fui3ko3UaDTgzp07sLu7C1tbW7C/vw/37t1bOt7K0osxGul7TzAGbRXc3ZxlGXzyySdweHgYrk745JNP4Pj4GAaDQQjyjUYjuLi4uHYPoNTe3B6S0sZ8iFRIgZp6vQ6ffvopLBYLOD4+DnXhZWLAkvJVGTqos4086pVtWnvyMnh63p6xto0FINal+2jZuNvg/v37AADhOODRaHTtG48/zK9esIDtxWUtDyjhXc/S9zF6YuD+kKYnYvERiYf4KQsxe8Hy/auC1mYpcQWPr+D5ft0BOQtWP1jtv729DbVaDWaz2TUZT/Pgf8doifnCFFguXcwZs9dSxk6svzz9H9NLFi1a32hjKFXuW7GbIvLkJlE2rlX0G4+tJJVD+8vSibyvqNz2+lapMSv6Gxf/Yx4Yu0JQGwbtILTlP6u7YjliuhPfc/9K+kaCRx5qPGnJrlSfg34ryVmNJ4vwYYocKmMnpIxl6Zuy6T3xDG+6FN8yRVdrsqgoNPlVRod4fRFvPjFYutNK48nH46NL0MYfyh3t5DNebgo0m0vyg6KTsUWQapR7DcAq6JM6UqIhha5YWUXT00EutSkPLNykI2+hCud43fDSJ6XzGFm0TWq1WrivDOBF4IOnw/IsB8rqb/6OT/ZaQi52TJwXGo/i5CsKKrxXjH8TM7T5KmOk+yc/+YnLMbAUqxV08gRrYvCmrdfr0Ol0wkTBcDi8drcfp1dTClp/VKkEi4KWh5Py2rG+3MjQnPIqaPIoaakNF4sFnJychN3a1Enb2NgI/Yl9SRcoUL5H2S/RpkHSJZzGIu0kGXetVgs2NjbCxBOdUMYxSb9ZLBbQ7/eh1WrBvXv34Pvf/z78p//0n64d97YOXZZiBGdZFnZs0XuEpDYpyouWw1G2PayAR2pw5DYAJwkxSE8nZRGWY0XbE3mWBlL5HZc8H6t9cMKP7oqi41+igQZ4cNFNs9mEvb29pQnEWq0GX/jCFwAAYG9vD3q9Xth1KMF7xC0AhEVh3W4Xut1uuEN3c3Mz3HtlHRGltYfHKUR5EbN5LGBf5Xkejj/f39+Hvb09ePDgAQwGA2i32668vOVx+qwgzHw+DxNcWZbBO++8E3htNpvBO++8A/1+Hy4vL8OJH/1+H0ajUXRnD8ALR9PqH0qzNe5TwO3bWq0G7777LvzgBz9YuquV8+B0OoXLy8slnc/z47+tQFuWZdcmIzyLEaw+4+1l8bLFB7G25bJmHXIXeWUymYSd8LVaDS4vL+Hs7AwuLy/D4jFvfgAQrhpBO78IsB1wwQ1doEDLuk3g/buxsQHNZnPJTvD47ZI8lfgi5q+k0utJ65XR3I7l7zRbnn5bBWL5xOjQZBJNs7e3B+12GwaDAYzHYzg+PgYAuCbTYj6VVm+UCxr/AEBYQNZoNMKR75w/PDpYotWruzW7V2s7Lb2XlzW9JpUvyWPuG72MsasiqHJ8efKV4iyUv2JxHsvf99TF+tZKyzGbzZbuLO90OkuLv1BX4VULzWYTJpNJ+C3dPfpZRaxftPFWRbm8HE4T5wcu42Lyiqf1yIjb2O8xmxghxbY8eiEVnlMjNKTa29K3RXzPVDpXFZ+8aT1VJF5l2Qz4vggsPw0Xnlon1XnsJs0flxYWS99fOyvBagBP4FYzzAF8wR+p3Bh9UtqUPL2DVKtXzKC22s1qL/rOywApTLIK3EYFkwqJl1KEgBVsoJMKeFwbBouwjxuNRjDoFosFXF5eqrtOJGWTIowtJ1ByRItCalPqUEppNEfYumeTl4H/0+A1PqdHRNEV9qkKTQuUxOSl5PxJ+eD/eNwND4TRO+SyLIsegaO1s+WAat+uCnm+fEQrPTaaK2zNYOLOWdlAVeq3NB3uTuI04C4JrEetVjPHMOd53A2IeePYoEcxx4IiHl6Xgoo0z9lsFo4xpEcU0/5BuUh3Az99+jTsIODAyTV8L42nqvjRyls6Uokiy64mZXGVNK1rnudL31uyKs/1I3FoP2lyk/OWdPwc9gXPg76neXkCKdL32rdVgtbFmqzndNK7Nz0TAyiH+FF/iNh4jTm4WuBR4kka2Gm1WvDw4cOl+xO3trZgMpnAycnJUvtY7cHpx8lfjtlsBpeXlzAcDq/RZo0fSf7G5A7Xqdb4i4HKVbzvdjKZwPb2Njx48CDYBnSCpAzvxtrbeo78WKvVYDKZwHe+850wQTmZTAKtFn2pAb5YfbX3VoBqPp9Dq9UKu5C3t7fhyZMnYVJCQq1Wg16vBx988EFwXkejkSkTKY38eGjKN/Qdv4KiqP9ZRNZ5v/HotVS/xANubz58+BC2trZgsVjAxx9/DI8ePUoum6bDiXl6QoAEfsQ5z4/aOpJulfpJ42MqWyRbXntvQUpLA5aWbyPRxusl+SiSbZdCb+xdbEGcZL9I/chtC6w79Wv4XcBV2BKxPKT28o53lD9Id7PZhE6nEyZk8aQDPNGIl6XpQ8qDUvnSN/S0JOnqBN4nKTIktR+Qbk+cyrIhPL4bjgn6v5VeKld7ptGzLn84hjL2Ec1jFTa7x36Q5GERXvN8E7M3Pc+1dNPpNCw6on1CFw1R3ly1j3TbEBv3Zb6L8ROm0d7h35J/bOkFq2zJjy6j14r6P16fxCrHw7NVjFnpmYd+PK4YAEQfINVG1+xKD30Wnfy7qnVIql8SS7NKHbdO+WfVA20mCh6zoM8t30DyV+lcA4B8zWPSzljPANGcDUp4KjyGmAVLMFtlSfloTlQsDytwQWfNNSNfEiqSgX4blfttMViLwlLeUlrtPVfMtVoNtra2lnaO8dVy3ImRlLv0Hv8uamBb9Yh950lDHXtN0VoGgbc8zIPfOYnCkQbaaZ1TaLAUqlXHGB8hXbQOrVbrmvHIxz2l3VPubZQZGGyjyLIX90JIkwW0rWMGr9VnVcgrzj/aTlYMQHGZrvENT4er3uk7fmQuz0uTKbxsDh6AoDyKgR86zniAiU7G4u/j42Oo1WphdTEtu16vw+bmZuAFWo8qdQrnlVgghk+uIl9S2qgMp8EhTV9rdYvJeyktlw+UTrrjswpUaecVLZ/zmSX/OLzOCjfUuS6hz4rwp0Y/pxGdBpyAvXv3bli8lec5bG5uQq/Xg+l0CrVa7ZpskOinNMQcFtzpw3lNGjPcF5Dkc4y/Y5BsYuk3jkeciJ1Op7C5uQkHBwdhMVyVu+9jNo01bnCcTqfTcFQ7wNXiFJx0t/LB59aEllZ2DB5fLM9fLHTY2tqCe/fuwauvvgrD4RAuLi6WHFNaj1qtBsPhEPr9fpi0m8/nrl2Y6EdxuUv/8eNh8TtJ51kBjXXIN2ks8nGzKjqwb2q1Gty7dw/29/eh0+mEYJc21jXQ9HRXtGZbW/d90XI844B+F+NdqqeldJZPEIOnbG8bWjbaKngi5qdpz6x2kvKi43xdJ6FwSHazloaD1h19tWazee2oUgDZ/uLtzG03rXzJfsed6DG/NNWf9vrb3Efg9Fs+aMx3i+lOPlaK8mQsnWTbrNP2rQI3TS/lhbJylSO1bkXjIpR+PJGHLoincSZE0dMhPkd5xOJu1KfUbIFUv1KLQa0LRf3RlO+t+IO3/inxJw4tppGqswD08Yn8wSfXLFhtUFb+lvn+JuyrKhCju0iboOz25ivJBm7j0W+4DogeU5wCjbE8jgYKOsngXpVxoOWrGf3rYFRcPcXbRjtWj0I6asvrwKzSkf8c10EdBXpXRJ7nwVnD37Tvz8/PYTQahZX89ChfHmjmvz0GhwbtqM0qIDl/WZYtHc+KRyvN5/Nw5CQ9xtUbgJGAQXVPoF6ifVXBWloG7R8+pjc3N5f6P89zGA6HMJlMxAnnWHn0vTfg46lH1Xj11Vdhd3cXPv30UxgMBksBdGrsrIqeMhMsFPTIRJrO2hHBA9cUXMlrY9tjwPAdVVbQhAZ98Nl0OoXJZBLy4t/NZrOwk5dOjpydncF7770HFxcXUKvVwu4b/A4nT1Z1woMWYJbqj+NxZ2cHGo2GqHMxEMYnB2i9sT1ioDyd6lTwoBHd8ajZXakBiNsA1Ju1Wu3aEZBaehr4LBoE4sF7bfIEd4HjYgV6hLLH+aTHluORh8PhEBqNBoxGI2i1WvD2229f29HK7QmJfgTXOxR4jDjuvEVYx5VSfqILNdD+oeVxe4Y+s9rFA6RjPp/D6ekp/OhHP4IHDx7AF7/4RciybOkI6ouLi1BfrVxvUIKmw139KBNjgTiUq1mWQbfbDbICgwAecP7WAvux/FL1Hp9oG4/H0Gw24cGDB/Dee+/BaDSCer2u7r6muoPvjpPSUdsRxz8u4Dk7OwvHjNPTI6Q68rxXjVXYKdJYSqWJ1n0+n8OzZ88AAODtt98Ox3nH/Aee52KxCBNTw+EwHLeNefGyuVyV/Bxu81XRZym6z5JN1Han3+D4xZMNaD64c4ratR6atHgL/zbG45SWMm2r2UwaXfQ3XXSONpRFc1lo+praS5KfrX2Pei7Pc3j8+DEcHh7C1tYWZFkGr776KozHY7i8vAQACHYALQ/1YqvVCjIf7XvaNpK/o9mIUn/weBOvlwcxvvDwjcRfRX1s2o4pehLLq9fr0O12l8buYrGAyWSyZKfH/KMiNH+O6vzrKlG0b9BnTfWpPmu4Sf7WyvbKF+l0GW8//rT2dwqsNrI2I9Hvf9rb2RsPSn13m+GNha0Dkh9EZT+9O5yDn84E4JyMLSKUeGBFeh/LpwzDWE5KjIai5VrOjwTpnGrv0XkIbph77ke7DYwMkLYa/7bQzBGjS3OeEDSgyZ3P0WgEw+Ew5MO3tktBCo02LSDH25YHRTmqEuI04EIdUXw3m81gNpstHWdm1dFyKnlgWHqHiAl7rzFXJo3EMygr+IRrnueBf6g8KeJccxpWCctYxuc0ALG5uQm7u7vw5MmTQvdTlK1PVe1Bd4cirKAKvpPaS5L5Eq1FAnoe8PGIu/bouOY08Hd4tO/Tp09D0JwfZTmfz0NAJLVuZepH6eXPms0mtFotGI/HIXBD6ygtlqL8LO0M08rS6kSD7zHQfMtMalvBvqKBtDKQ9GmqbLAgBal52Vr98TeV39KEqZcO3CmIE0xZlsF4PIZWqwUnJyfQaDSWJjslSHWJ8Vye52Fscl6nddTKw50CeJQ3/k7pp7K8tVgsYDQaweHhIRwdHcHx8TG0Wq3QnnmehyPGLRqqgseRzrKrHfdUB3j9Jm7HeZzY1PQS6EQGAITj67vdbuBfzzUKfBxp6ZAnsb3wXjYuizU+teRrGXht51g9aVtYflAVMpjnvVgs4Pz8HDqdTnhPT/GJAY9tXSwW0G63YWtrC/I8DwtMNVud15M+08YA/UZr59S24XXkPpMl87R8aB0sv0vK32Ojp/j5mi9pPYvli98U2fmF/CXRVbU/YvVtLK32jvZpv9+HLMuWjmsHALi4uFBtN6x/o9EQZb7Ut14/U+JB+j4V3v6IlSPJP2tslbUXuHyh/EUXu1M7y4JHT1k0rgOa3IjJD29+ZVFENkt5UKwzNsDzyfP4LquqYdkGN4Uq6SnCG3ycW3zvkfuSb1cGMRm+Cr6kKBsjrEo3c7vHimuk6OJYGi9NHlRVdpF4llZ2FXoev6uCFyU+jMUeytLkTefpv9h3+C0unuNtj3EgrZzknbEWoZazmzIIblKplA3klRXQ3BlB0GexLfKrcmBuCi9jPbyCgu6UxeAbvtMc2iLBdEoP30knnV++aqDjSfk9yzJot9uQ5zn0ej31myLw7ELT6IzBEyDV8pScCF5mvV6H+/fvL620SV2wodUj1eCpWjHj3zgWms0mvPLKK0GZtVot6HQ68Pz5c/je974Ho9EIAK523OC9iZiXtJq+CFZRR8yXT8JpQUmaxsNbGJDm+UmTghqduBsrxVmhsgN3veB4wKNT6eTQbDYLR09i4HyxWMB//s//OSwqoHcjDgaDSvrUG7zKsuzagiasB/0e/2+1WjCdTuHo6OjaLmU68STtFJaOOy6L2DgvE7SwwO9rXAeo3MU+mkwm4aQAj560HFXqFGK9kK+53qLf8PFHeYreBe+ljY4jDtxh8+d//ucAcLWAix+TRusUK4vXg7bvbDaDx48fh/SxOiBt0+kU9vb24I033oAPPvgAnj17tjSu+EQE/R/tIGtXN6dfygd37Z+dncE3v/nNsOtlMpnA06dPzXpIZXkmL5De+/fvQ71eh8FgALPZbOmYZwt5noddhFZ6uoOL8ok0tpvNJmRZptJwW3yHWPmSzYWLdtrt9rVxi4t+tLZZRb2toJLnW88zHmSs4hh6nJgAAPj2t78Nu7u7MBqN4PT0FPb392E6nYa78TQZUK/XodPpwGg0gslkAl/96lfha1/7WuC9//Jf/gscHR0FOcqP9qITUJ4gaFUBQfybT9oUyV/StY1GA7a2tmA0GsFgMIBWqwWNRiPw7OnpKSwWizBOsR898obSjv+03ecxe5DKX3qtRKyuuJjcimNo4wFpXdURnrRsLgd4kIzre9qWHvsY04xGIxiNRnB+fr6UVroTF/saT4/pdrswGAzg/Px8qf0pX0q7d6V6a6B1qlrmU53E+5TyF7c3JFq8+pLbuZYcpeVOp1M4PT2FTqcD29vbS7YGnrpAeUALtN603vwc6bjpmHMVeNnpXweK2Hibm5tLm2X6/X7Ii8upVZ3cxVEFv6bapCmxKA8k+S+BnryUGmctCklnSeXGdK/mU38WxurLUo+bmNdotVqwWCyWTgBCPtne3g4nDHFEJ2OrYv51BeiqomGVnYiGtWYoaoEl7bdXIKwDkgBaNVY1eVIVJEVWr9fDrgfJIdKcOymvFCNDCjpr+XrKTmkzDx8j6MQQTcf5K9VJK9LH1IkvKsekoJIFTnOr1VqaqMdgAZ/80OiUgiDeCSqJttR0sfpSQ6Xb7QZDaHd3F/b29uDi4gKOj49DoAKPl4zxVBGsUmZJTnyZsmnAQ+KHouCTMViWRisGDvlCD0ojzZMe2ZnnORweHoY0uAMcwD6qsky9tPpodeSBTVwQRYNiGxsb0G63w8RPCk30f+ldDF45GMuTjsPUdqf1oGOzShtSowsn63CyP9Ux1vJFXkWZ49mFzuUSDWjzsWCB8invuyx7MZk5n8/h7OxsKY12VyzPP0Xe5HkeFsGg7YKQ+po+azQasL29HSZ5UK9r9MV41cvLmBYXSsxmMzg5OYGPPvoo3B+LdZK+pWUVaa8sy6DZbEKj0Vg65SMGyebi44vT5wFfeBfjQ6vOnvaYzWYwnU7DbkgvvVIdPTaTNGGC+WjHl5eVTzHaytgTVfqsKfyLehmPVcUrU/Bofr5jTJNP+Lvb7cK9e/eg2+2GxVaSrCjC26k60qOXvMEzXgdpPNHfOBmLJ2vg4rnd3V2o1+tBjnvGJaeV04H/vAu3eXl0sYz2DX9u+WSSrc51HNd1Vdp+FiRbN9XPkfgZ7Vd6z7u3b+miL40HNVlWROaU+TaWZ6wMiYc9NEnPvWVyWxdtR4AXbY8nk2nfaGWvO+6mwZIBHtlWxiepCql2F35DYfGbV75b+d12FGnDlwVYtzL1k+xF+g79A2lhdlmk0l12LKzyW69tLdlgMZ3rkfU8bYoNYdltUv4e2cBlTMyfLQJrbFcdg+H5SrR406bkuwqk6DdN12v11XQuXqUjQZyMTRXcmiCUnJMUI5d+Y5VdJo8yjnlRxul0OuKRsymrmWm70mMcbxN4/VY10G6jkcHrO51OQx9tbGzAvXv3lhwzfgwnjhNcGYSDO8UpKUqrB9pqaY9ypGXxncFW4EAL1Kyr/8sqtBRZhTsPJODxzf1+HwaDwdLR5lyOSIaBhapXpVt9JD1rNBrw4MGDMJnw8z//8/CLv/iLsLW1Bd/97ncB4Kr+H3744VJw9zbKPy+swDt9L4HeT0rBA0P02IwUA03Khz/XgnBYjrXCEOUB3oXcbDZhNpvBYDAI71cdLOe00HaSAjgAV7uA8e63er0ODx8+hK2tLXj11Vfh448/hh/96EdQq9Wureyk+eC7PH+xqr7I6trUfiwDrS3pDqeqnVWE1ofYzrhyGeWfxKsxp4jqNZx0uHPnDuzv78PR0VG4V1RCnr9YDIHtQXd7Z1kGo9HIxY+oAzAtBnJrtRrU6/Xw9+XlJeT51QkCAC+CvzygrTmaSKvliFKdgnR7+JQuDEEnBPsEF9VIE5SSnKI7lTx8xWUc6shutwvPnj2Dx48fh3d4woK1kKWI7PTSlvKNBOQtnODChWxSHniSBA0yewMLEjgvU5mGJwZ8/PHH0Gw24fT0NLwrG+RZJYrIU8ux52MpVpeUuvJxXlW+FnB3d0oAFH3UV199FRqNRpBXUlCc18UKlNLnVhtYdugq9BTPE08B2d/fh5/92Z+Fg4MDODg4gD//8z+Hd955B/7+3//7cPfuXXj+/DmcnZ2VKtvbLzgO6TcoPzY2NuDOnTsAAHB5eRk9jYvmiQtfsuxqJzAujrLGB8oLPCqW5ofpYuXG0tE+oXf25vmLe77osfAaqL9axtbh5WBMqN/vh9gA9wE1O9tbPh1j/LqEdchYyX8vm09Z0EVtiJ2dHeh2u+H3ZDIRTw6i/bGuNtQgjXvccd/v9916LWYjrxuroOO21G1d+CzXNzXOrNkWFKjvBoPB0jUbVCaMx+NwUtttQ6wdvDqD65tVnVpB5zIo+Ikpkm3I66ktPMH0MRq0fPgGOvTL6TOt7KptzM8itL5ZlX5N8W01v0GL0WNchf6O8YC6M9b60AomeARdDCmMmxKYod9IjZzS2R4H0frWChRa4IE2D32rRtUBhtuK1DpQIcJ5Dp1WLrzz/MUKTYlPJV6LBfdSgktcaPBgLuW9ImOF58shKUAP7WVoKasoq+RtTTbRyXq6K5YHycvQt+4xSnmIBjhqtRpsbW3BnTt34O7du7C1tQW7u7tw584dOD09XTpi8WWQKxqv0/rTMczr5AlO0nt0qzL8vHreSqPpSeRfDEDRycgid2rGYC1k4dBkBH1OV9Bj0GxjYwO2trag2+1Cp9MJMlw6BYMGj7mBX9T+4byUUuei7cx5OKaLUpHiMNLJNHp/NjeYrTamdWk0GtDpdEKfYpCc19Ma3wh6vF2q/aY5idye4PXT8ud9pDm3kgMhHZUo0cjBj4nl9Ei08LaNlaH1A8+TL16U5DD/luadonNw/OMkehVHmWG/4KJOlJk4sc3liQStXbX64ztuD9I0WlmDwQAODw9hPB4HeRnrS+u9ZquiDMD7lL02Km8LiT7vJEJsTPAx62mLWJ+sAlSOLhYLODs7g9FoBOPx2Fw0jHXCUwqQ34fDIZydncFisYBGowEHBwdwfn4O5+fnKj95kOqHx+SWJ0ATo4f3K81zOp1Cr9eD+/fvw/3792F/fx92d3eDjtnd3Q2LLbmNQP3IFHmUavdQfQrwYoGFx9eQ3sfGIS+3CH8XqWOWZbC1tQVZlgXdhAugeJ7eWJdGO5/8lfLE9HiNBx2D2Iba7v6icsCSdWVki2VfxfKP+TpF7ACtTK4r8XhBnHzBu+6tUy0022FdiLUL2rI0HT/+PKUOKfEWSsMq4NUVXhun6nJpes7LL0Ps4jbB02apbSrxP5XRuAADF4/SxdUIa+PETSHV7q2iHE3Pe+JHGlLtMymNV3fT55oPLfnDmk9sle+B5j9IbVJVvCVGSxGZ5fWXpOdFbMEq7Bfv9xZ/SnyFC1mlqyGT74zVCKqSCVcNrZGL3NG56jryDuXHQ2GaVa1Y8eCmjYrbbNigU5tlL3bJ4PE39OgLvCMoz3MYDocwGAzW3q/Wqh7+TrqTrgi89aPjrOiduZbDYQXONOG+irFP+QXbJsuuVrbi0dYSndzxp448v3MwNYBVBaQxKt27iHjllVfgn/yTfxKU1r179+DNN9+EDz/8EJ48eQJ5frVrHFfeS3LxNiAml6RFObH8aJ70GF98t7GxseQcUJ6SjBwtb/5MC4JbddRkM+7oRbmIxx96V3CnAgP0khFk/aZ1pc/p3bd4DGez2YTNzU3Y29uDV199FY6Pj+H8/BxardYSr/Od67SNLJkjBZjod3Q3Jj0yOjXALAWUtXJ5m/F7VFL7kubLdypq9aBHRtN2wCNxcTcq5uEZA7VaDXZ2duD111+HZrMJzWYTjo+Pl9LQky6s+mDaMsFzbFMsE/mY06I5xBpoX9Ggr9Q2ki7x1gEn5HBHJp1YkGjh/aTxUUqAJs+vjlluNpvQ6XRCntokMa8H18nWuMHyACAEdFN3qUi0ZFkWgj/379+HnZ0daDabMBwO4fvf/z7M5/NgI0jtQm0Lqx+loAMNRPH7sfEbekcrwNVJF6enp3B0dBTuxrTuSdcg8QrdBY5jAOUylQMUvN8sGafRURY88CfZlSlBJ0tmFsmXjrdGowHT6RS++93vhudaUJLSMp/PodfrBT548uQJNJtNePvtt6Hb7cKv/MqvwP7+Pnz9618PuxJ5PrFAjVdGSPWryl+k/MP7lZ8SMZ1O4fDwEJ4/fw4HBwfw8OFD+PKXvwz1eh22tragXq/Dl7/8ZXj+/Dl85zvfgTzPw5FmUr9qdaBjwuIFKT/6zeXlJdRqNeh0OsHGoX6sRIt1byYvU+oHHNP0/tiq7EGqL3Fy7Y033oB2uw2DwQAuLi7gJz/5SSgXj6qlC6MleyzGh1n2YscttcnoP5onXZBYq9WWdpFr49uyaSQbqkiQMxUpPgamp+NFkos0fRk6JOBJHWjLb21thfvdBoNB8DH5GEi1uaoGXZxNQeUQLjoAuNrliydqFZGF666r5R9Vkec6EPM5V43bHCP1YpX0a+2DsnhzczP4kzjWut0u5HkOx8fH0Ov1KqNF8/9uApYNQf2hMrDy4DFLLYbp5Y0y7SiVLbWBNz7moUWK+fA8UcZ/VlGVzF83aCwMbYRerwf9fj/Y+xRLv6yBRxELQmjptGfecmh5KUjJRzMMq6CD0sOdEimIY/2Nv4saVJ8l3ETdLT6W+pILz9lsthS4oIa0duRqqgMVc3wxn9iY5E66Nt494GMqVrZHXnjkjnes43MtmCEFXyz5UESBSDyDAVgaANXu1aXf0nfaUbaSYZNCt6cdJODRkdj+dBcGHg+D7zGAjrQ1m02o1+sib95WUDpp0ArrzxU3h2aYYd5aWTFarDxoOSkyhweotHxQh+F9nN6x5QHNq9PpAMD1wIUUXKO/PQFQDLLh/ZOLxWLpSFYpP6+88dYR4MUqTTziTlugkBLApvXV2ozyrSfPGLh+KRqM4d9wenk+NB0u8BiNRsEhl3bYemjy8hF3ODc3N2GxWFy7twzpk3SyJ3+NXi5/suz6TpwUntHuM+ew6JZkBq+rpce0cpC+lDu2eftJ+Uu2EZ7k0Ov1lnZeFQHNFxex7OzsBF3I6aHf5HkeFqXE+F/iDW2HOS2H2rG0naxJGg+sYCZ/Jx3TTO0ES1dabVAFrdIzj5+s0ch5MXbNRyqwTNzVbR03KwH1Ua/Xg0ePHsEHH3wA4/EY+v3+0gIS7yIPCxoNqXZQFeXSfuFyAXfZ4LhAuzfPc9jb2wtjFGC53WPl0zFt1Usa83QxEx3XaJd7eEfTtwAvdljH2ht5INXX9YLb1nRM0YU2njvXrTKk/On/0nNa1nw+D7YH1clUR3PEdG3qws+ykPSMRzZKkGi2xntqHXn/jEYjOD09DddLtdttqNVqoi1m0btKfxRPFtrZ2QlljkajcHQq6nt6jRHAcrxpFfSl2Obe7zSeLyq/V9kvtxE/bfUtAm7LUtAFm2ivcH+RvuP5eqH5OVXEQ4qCy3GuQyl9HB7bVsuDjnl+XDFPx+NOZdspZkNxe5teJyh9x2MOVdGn/b5pxGxuL6QYkLesqmhIgZe3JYjb21KYOVbIKoSHl/HKdkbMMZQGXGonawPT80wKEBbFbRvMtwFl+jPG93Q1eIqjUQSUHm0FTeo4TXWOvOXwoC/d5eABDxDGaLPojd1zVAVieeF7XJVOAyN8t6OUJw2wpBz/6q1jrF2t9zzIhKvQHz9+DK+88spS2na7Ddvb2yHojMdIYT6Il0GOcYOdB6CkoFaWLd8fFRvTPHhDn8eQ0u/W2PYEiHGBwWQyiZZZBBhM3NnZgTzPwwp3PFZYMuzp/xzSeMvzPKyov7i4gOl0Cs1mc+n+RM+kT6zsGPBYtU6nA+Px2BU4Khv0xDGMzmnq3Z4SJHmlBVE10LFEj3JFnRL7djabwXA4hNPTU2i1WtButwOP0iA1loHPueOa2g5ZloW7iO/evQuz2Uy8lwiDhJ6gH9UB/DnSyetPZRD9lu+2pnXEdNgu2Oax3VKcnlRoecTaZjabLR1pa+kOrQ15GmkM93o92NjYgNPTU8jzPKyw1+ribQc8UeXg4ADa7bbLRhqPx0tlaTYEBx3XAMvHc9H8cJEh5Q+ckMPfZSFNbEiBMU0vemzXInpTA6ePt48WvPGWren6KoD91263wwKVlDLwNJfj42N4+vQp7O3twYMHD6DX68FgMAj1bzabheyAMoH42JinaWlZMTkh9TfqHTw9A3e8InBH94MHD8KuzMViAa1WCyaTydKuPI0+iTaN36m8jvG6NNY1SAFC3t4aqB4pysce+Ulpwt30FBsbG1Cv14Nt6o3PaPRQuqgtItn5iNlsBpeXl0uyE9uFT5xb9HjoXIXPxK8d4e1gjR9OWwo4L8fKo2VSe+Hi4gJ6vR40Gg2o1+vBf3jy5Mm1K6RuCrPZDJrNJjx48CDQcnh4uGQvSj4A2mhlF0jdJMrySRHchj6/TXQUwW2lPWYT9vv94M83Gg3Y2toK7/gmCen0rVT+9OpMC6tqa5ovj0Fp7RiLAVv6wLI/PDZv0Ta0YkAIesJbzE5KXfxbhNYUPfc51oOYzY5YmoyNBTVSM+d5ewVDFcxi5SHRkSq0UgQKAlfEAoAaWJfyowGv1CCBty3XoSBvWhHHnOjYM09bpvRH1Y4SD2Dj91RQSwJZ4qdU/o4ZDzxIyQMGGmLH6VlyykqL6S1lrrWdRj+vo7d/PbRiWrobVkuHz7mzRVfgx/pX4pWiBmUsDU6wjkYjmE6ncHFxAZeXl9Dv92E8HsNgMIB+v7/0Hb2n47bd10HBg174zDMx7uVLnp6W5+GVWBkIKwjO62jRz8sp8s6TJ7ZzvV6H/f39cBTy6ekpPHr0aCk4JtHt0Qk4pgCuAh+ffvppmAgdj8fuY3tjclOjjcturBNfqUm/T+U3ThsN4OJzegdVkX6z+MjSWZqcRJoorRjExCMDAV5MMkljZDabQb/fD1cKjEYjcwKf0ovyVxrnHhuhVqvB66+/DpPJBA4PDwHgBa/h5DcHtxfpPXUxIL3S85i8oXWWngNcBTOePXsGo9EougtO09PS3Twx519qa5z00XY6a3XQfnPwAMV4PA7ta429WNBYwmKxgOfPn4drLWggSLIdU3bEUFrxuFLsN7x3F/vGyg/tFvpb0y00P4+9SfOU9BP+xnxxNzG+l4IjMX/Xqqc0DlLsdyvvWLlVgfcFvY9YS6sB747d2NiAZrMJn376KRwfH8N0OhXvn005ljbm13hojAWosG0leWDpnhjeeeedMGa3trbg+fPncHx8DPv7+0vjCoN93kUTlAZJ9he1yXD804CipjeRZ7AvpftSaVrNbizC0x7ZjPqT7k7e3t4W9YElS60yaB5S3ayJMG4D4fix7G8Nln+s8XUVsOxdiW6a3moXzzfUTvDYLtIzqucAIExw8jvPqzweMlWOZ1kWjj7vdDqwvb0NnU4H9vf3A62/8Au/ANvb20tlPHnyBL797W9XrjdSUJWO9eRdFQ1e2VumTVPHdNVYNU+sg9/K1kGSM5PJJNgw8/l8aZEDP4klxc+TyrX8Dc1esewe653ly1p2jiWjNZ3CfY/YOKWyldsaUhnaCSJWPTxppZh6LA2+l2SVFBPiNjfN37JNPYjZMbF8UnVSLD+uZyV+523g9fe98MZEvGm0/LQ8JpPJtUWArosfeeOkChn6vKwwruL7KhR5EdTr9XDHIQ5ezWjlTqk2iSKtSFllHcqgakW8LmPS67B4nPOYQ6CVbwWfrO9SeEFzrLV0qYgZv1IQiypayfn3KnaNnhRFh3LQa4jE6pvqqNL32pHDCH7HG00n3S0j1YX+TR1bi8+LBFLwWFW8x2Y6nYbJ2PPz83BXIy1LumesShSVLd7vNANP+w0g85fH4E5BSlBMGr9Zll3Tbdo3q+o/pIHy6/7+PnQ6nXB/66effhrGkXQUK4C+2pPKAToOR6MRPHr0KOwgopNmVv9ypwPL4PAYzfSuM80ATzGWLUeGyk+PE+RxvpCHuKyxFi9o5fAJYpyYx6MfuSzktuF8Pod+v7+0k8VzsgR1wiRHQepj7ozVajV47bXXYDgcwne/+92lnTSaHJbK4e0pwaKVt780JmJ0oGwfDAZh11Gex3coW/DaZBL4SnZPWdyx9jiA2Fa424/zl1QHyxGX6jmfz+Ho6AiGwyFkWbYkb6T0Re9irNVqsL29HfptOBxecyalusV4j6eX8vPYUZLNiH3M24QeQYo7PS3e18qU6C2rc7XyJKSWpdUvpuep/PP6CPQdyt1arQaPHz++xjd04RDVxxaNUl2yLDPHdZH2WpWN8t5778G3vvUt+I3f+A14++234eOPP4bJZBLuVMbyZ7OZqVtjbR+T+dI3EjY2NqDT6YSrGGh6rY28MlqyT1bV7lS/ot+xsbEB3W43LJqhiPl8NF/pN9e/1G60ZAiVSdw+LbpLuYhvht+WkWuaruQ8TP/3lse/5TYktQE1Wmjb0P/p+KO2dZZlS0esS/RIdK6Cp6fTKRwdHcGdO3fCZCzuum80GvBbv/Vb8Nprry3R8bd/+7fwrW99K0n/pyDF17DSafwqtaVHHqaOYc83ZdNX/T3HKmXpbUWR+mq+GGIymYSTaObzOQwGg/AOT9lCoLzg8beYz6DZoZSmImNLK4vnJ/2W4oyxsabZ0p64ipYfptcWDAPYMQhenvWc+vk8RqDRLZ3OhzxgxVOk/Hk+UplF4RkbKTK7Ctli2X+r0lEeeMpOtVMQ0glArsnYlEKrgCfQsSrwgVMlHbjSTjM86MoRKfjmwU0y77qxbkMJ4LrgKEtDVf1lKdciZWi8F3Oqi4LfCYB58UUI1r0NqeXTcqx2om3hCTwUoUX7tmg+MaMP4eVfD89XKXsODw/hL/7iL8LOWICrvr+8vLxWZpH6xFA0H+s7aWdy6njiQYNUeL7j/IfBKwkS/amGVJUOIx4Vg5P1X/ziF2FnZwcODg6g0WjAxsZGmJBFgznFSedyEY2qer1+zVHQZL3GrzwQzaHl12g0rslCXi8eZEoF54larQatViuUhZPPReAJYHFZzREbR2hf1et12N3dDcdC4qQSD3jS3bNaGdZYpMFXq448LwCAbrcLW1tboT13d3dhNBqFu0cBXuhFvvs1FtCU7BeNVyRbgi9ekMqQFk7xYIV0aoMWJOVBaGtHK6Wf/41pab5eucPrpO0wXUUwDfNFHsa2Oz09heFwCJubm+68uGyO0ZtlGTQaDdjd3YWvfOUr0O12YXd3F7773e/Ct7/9beh0OtBoNGA0GkX7RXuXKo8s+agFfaTxsWpoNqUVqCoKr+xN0bVZ9uLUEvRJUa9KctnKR5PZrVYLWq0W3LlzJyxiwtMI6LGAWZaFHaP07lEaPIvpTw/K9gPlLylwiAsN8zyHVqsFH3zwATx9+hQGgwHM53N49uzZ0rF3VOZjvlbQUuNzKZgrvZfy6/V64bc02e31fWI7ZD11rAq46PPJkydQr9eh2WzCYrGAg4ODsGsb+d+61kKiX4LW7il6RCpD2jEtyRceMJby1ni2TF/QslPiCDStZldTXqLtSduDnnzD9QOnEcuWTsrB4/e53ZXSDlWkoXRhoB9jiovFAra3t6Hb7cLJyQmMRiP4xje+AXt7e/Crv/qrsLm5ueTH8XahV43cJsTkQaq/+dOEsvHJn2ZIMls69hvlAV+ETn9rcserO9HnprKv6iNvy8goPl9hfRObNPWULdWf7zj15ONBbPGTVd8i/cP5IiU+lVJG0W95HqvIfx024G3D0mTsZ6nylpOoDR5pIHuYyttuaDBJz+k7eudWCj43RqpFkSCDFQiUvuffciGcMialQCsvx6KJB1A1WlcVgKRBWxwP1FmVHHZpfGpj36sgUuWGVE4VY7GqwBCAXfdYYDbVScTfRfliY2MDhsMhfPjhhzCdTkMAkAYDpXJvs/4qM47xmfa3NmbLIGX8SMYjdUBi8qJKuqkMAQDY39+Hvb092NzcDMFElBuegFdMXtLAvxT8520mveN/e8CDMvx4Ut7usfK9ZdHATavVCu/oaR+peUp0UXq1QLGWD/2bf1ur1aDdbge5UqvVrh2hSusZswct/oi1h8YjzWYTms1mmDButVowm83CsZaczzRZwe0JrS6pAWb6ndQPvO/4zm/NYUYZL/Ex/Ud3u/A6xPQbT2fJWSkfTc95ZYmWLsXhxvLw/ms8fp2no/lKvOYJctKxfvfuXdjf34eHDx/CkydPAOBq0QLea1lVEFcbe6nfYd20le0xXoyVRfOy0mk86ZX/qbzqkVlcN0jtBvBCr+GkVJX2VpZdTfQ3m81wJ229XofxeBwWHWDZKBvoRCzNJ8VXitXB0o9l64/HNuMJDScnJ/D8+fPw/vj4OCwYy7IXO/A8uyEpv0u84gmeYVr6N05M4uSPJWM99Fk0We1bZXwjz68msXBxZ5Zd3Vu8u7sLAFdXTuBubrqTu4j/bLWtlifPJyZbuW6T9NJN+Eexcan57TFfm+fL2zXPX0yYSjKYj3Gpneg3XL/y9FXyphf0Cifk50ajAdvb23B5eQmDwQA+/vhjODk5ga9+9avQ6XSCr9BoNALNdFKWX61RFlWOYctv0vjoc3wOCZqOj/ma/FQPmobLL+7LxGSWxbeSjaPpBsvmXxW8cQXPGNZkRkx/VbUYj9Mm2V6aLyilk77R6lJUR3v8EOt31XY95unV/dr7VFpiMYuqUeWYcu+M9aIscdr32oCoioaiTrW3kzGIZG1J155LTHkThvVnFVW2JVXKFk/x4xGrKrtqSIGPIvRgMIWD7nbZ2NiA/f39pXuV6ZFY/X5f3N4vGSn06DON7ljQSoLXMKgCKQEmCZTWmHMrvdPSSHnFHCArKIl9nOc5dDodePPNN8NRS+fn5/D06dOwq3GxWECz2YyOr9uCmDyQAmcAqzWcvShKAw9yr1NXcWdnMpmE++7Oz8/hW9/6FoxGo7Dz0QowW0EJlFvcLsFdFNJOCj5OOK1F2xsnpzqdDgAAnJyciBMQlv3iGbvz+Rza7Ta8+uqrsLW1Bfv7+/CTn/wEPvnkkxDkKeIMpdhQCL7qWMqD3+WD6fM8h36/DxcXF+LRyLSsLFs+1lR6LznDNJ3XGcb8p9MpDAYDeO+992A+n0Ov14PpdKruEJHokoK++I4u9ovJeE6zFKyzdItEo0QTL9OiKzZWtO/5OMc0/OjBPH+x83s2m8F0OlXLknivSDBQo1kLNgJcHYs+HA7DferSrjW6mM07zjjvLhYLGA6H8OjRI2i1WnBwcABf+MIX4Ctf+Qo8f/4cTk9PE2p6HdoOVik4nzIpxesC8GIyjL/X0nv9Qq+tdFNAm5i3Mf2n8Qge4zoajWA0GhUK7mGbt1qtMPFK9XOv14PNzc0wGUbzxkmxRqMR7vHm8OqdFJqLBIOksvjYxUkUnHzGiRFaHt2B5wHnea53UoJvSAs/DUVaBGNBqz8f1zTQHDsZZBUBPNTx8/kcnj9/vjRG8J7Aer0eFpxou0elcSFdQaHRTfPi9fDu+qH5pdjfZX3NGKhPn+fLp8BptJSdFJSOO5d2vfJj7D27aSWsW9ZjeY1GAyaTCTx+/BhGo1GIk3C6O50OfOUrX4FOpwO9Xi/wyN/8zd/ABx98EPgcrwuqCtKO+FR/x8vLRWwvK6/P8dmGpC8k/wX/9sQEMF8PNP9I82cBIPij0uRj0fgspdmyZYuMCcln0+xsK/917dhHG00C1V0UUqyBy6IUH0aiKRaj0Z7HYr0xe75MbOpz+OG+M9aDoswS+16aHPAEXKR8yjpYqZAcI/q/RiP9nubDn8egOVo30QbrhLfMsnRZTq70TFI+MZ7wlhcTql5D1TJOpHKkPK3AogTqWOCxZDy4OBqNokqbKx9N2VShXCzlRctP+ZYixUHWZKEmT1LB89D610rHHTLqIOPvjY2NMPE6mUxgOBzCYDCARqOxZIQib3j0irdesXRVBOYA5PFTtq+L0hTrR657Y/ItJWjhkZ0xxPLAHZDT6RRGoxEcHx+HAIxmWGt8ytNg4AZgeXLQkoe0zbk+9/CB1v60fHpkcCqveORrs9mEbrcLd+7cgWfPnl2jyfo2ZuPF8kgFbW8M6uf5VSB8MpmEI55pek5HLFAc07seUJ7L86sV2JeXl0v3D0tBAo0eTTdrgQYJRepDdU5KH3JZaOmRMu0s8TftY5o3PwLaEwhMoU8aD1z2WMDANk4W0yNlNT6O0c7ri79xQnY2m0Gz2YROpwNbW1tweHgI0+k0lF0Emj6UeJjyQszO0nQYv9/Jw6uabE7h81g9Mc0qAh+U/pT8aQCJLlzh7y2g7MS/qe7FBco4MWlNxmn3b3E+0cbhqgNKWnmaDM7zPLQr5UOqzz11kewIfC7ZG6ntUEa/UZ0Wy5//rclqb14pwHylu0C9C0AseeT1kTFtSp15+3L5YuVP/69S9nAdotkEZf1Ribes8ablpcUMOD9aesZKUxQWL1CZjouM+v1+uDIly7JgP47HY5hOp9But+HOnTvw1ltvhZMGfvjDHwZZVKvVkif+LaBPT3UAr18KuH2p6c6yNrnlw1A6ypRxWxCjvyg/Vz0WVlVeme84UmyjWExFiw+UadeYzayltZ4VSVMVvPZnWXhiMlK/SJuuvO3K02v6WaLNU2cp5lK0z638te9T6ZZkvhcpNNwUCu+MXYWgXYdyq5LmIgxP4RHC3u9SkBokK9tmN8HwVRgQVRvVAKBOIt2UQbeOcjXnCEA+3rJWq0G324XFYhF2ewHA0opN6jDhXVL43HPGv0WTR+BL31flvKBjJNGmlU9hXT7vBW1P7Z5rKYiS4gjzwB4ezfnOO++EZzhe0Nm8KeXpDdbyZ9SIvk2KH0A3hmhfNZvNpbuEcGd6ykkVqwRvd76j5PDwMOwsxHvoMAjhGeNavzWbzaXJGnpUmDZ2ve3jkSVchs7n87BjyBMc4gEnLNMyWpEHzs/Pwz289+7dg/Pzczg/P4fxeBx4JRY85HRmWRYWYWxsbETvoKUyLmZjTadTaLVacP/+fVU3SPf9YJ2994NZtHhsWx5o6/V64XQIpENrO54/7vy2nCsp2B2Dd9zQv1Fux2SGFGTENoktvtHy8ID2MV3oQ69JSIG3fbwOPqeV7/jBRUqYPlXPVG3vprY9fiPl4WkrLqO53uV8xydjLTq0Z2VBd9jxAFtMFqfCYytq6dDuGo1GMJvNluSuB7xO0+k0HL9Oaciyq53pFxcXMJvNwoLMPM+DXmk2m0v+AqflNtlX3vaRdupJkHQqr7ckm1P8Eq5TtCtiaBrtWwprl6Ekeyjv0zGi0Vym33Ec4gTW5uYmjMdjGAwGS+m8Y1J7HwuCF9UZfJGWVA5vI6wHbdtVjR1sWyxTOr2BgvJHyl19XH5TGcHrz+uKu5roojx6Yhftd63vrH4v07YxH43aV1mWQb/fh9FoBHt7e9But+Ho6AiyLINvf/vbcHx8DHfv3oWNjQ34yle+EhY60zvnsyyDbrcb/ImiOojWGyd58bl0ulmRvHn/r9P/vE265qYQ4+2XKc7M7W3vQsyYXLfKs2SS9Z12VHIMfIxobe61R2JIiQVqkGJqMdqK7DylQL8P86F6gftbeBIaLVuqJ33m9TE88TkPJB7WdP46ZWgqPusyd2kyVhqc3FGkz+l39H8JlgHOmfcmhXLZMjwCLgZNwJcZKLG+iQURre+qUKSrhofGmFOSEqhZhVDzKrNV94WkECWl6eEprpzwuEuqCHFnGw3IWgqXt1NMgUvBbA8fWGOzaECUB+Ws8r0KvEga61uL/8o6RZKxyQOGRej3jp2y+dN8tPK0Zx6DXysvlocHUiCEHzGlBdUsWjWUMco9+WZZFnaNnZ+fh+OKiwbUeEDOukukrDzwggZN6TGC9L3VXzSdx37L8+W7vOv1OrTbbbi8vITFYnHtaMNYfhot2niy7NCikII7UhpaHpfTVmBQghXgpjxkHYGsfcedrlR+t+QN5W2tPP4dTtBLwQAJNG2e52FiZjabXbuHyVsPHlixnHz8jZMItI6W7C4y5mN2Bpc1XL5w20WyZTxlx2jF47L7/T4Mh0NYLBZh8URZWUfrYvGHJ/DH20cat1r+ZZESUMP/q+ARnibW/5qMsPxWOg48fOWNBfBvpFMAUAbiJG6V/mZZG5rbBPS9h79itoaXLs3uiH0n5YPptdM1irR9Cl1S3a12qgqoqyRZa9kfRWInqWn5GI3FXbhOkMYu1xdFwGng7SS116rkrqXfLZT1Vy2aiuRXNHYA8GLhA179g/7P8+fPIcsy+OEPfxgmE9rtNrTb7aWJ59lsFuy1GI0e/pN+S7xp5RHzM2keVp5l+tlre3jhaUPP9+tAil8Uy6eIrCzbVkWQYpul2JRaWi5Di/KqlqdEm9Z33nReOig9HjvAU16KnxODVk4Rv06SS5xOL71V6BYPH8fa0fILvM+1fKTvuX74LMBTj6XJ2DJGZcqA+Kw0sARrYBfBOhiyaP6awX0bEaMRJwERdLelN49Y+V6lTdv1JtrWcux5Ovp3TKkDXK8TBj3x7263C61Wa+mbs7MzePbsWUiHu9KkPCUayhg36wbSz3djpdRDuwswplQtx5o+twJiRfiV7/Rpt9vXaNN251aNqsebxZcerEOvSt81m01oNBqhb3AxBO6OwWMpY/dH3hSQZyeTCYzHYzg5OQmyBumnaRHcmPYaonmeLx0pixOT2j2fGs3Wc0sf0QlSKjuyLFvaHWAZ3NLECpbLn+ORaBsbG7C7uwunp6fRnTRWXbFvkA7JgaEyQrrrVaMd79bBI9za7bY4yUm/wbytRT+pwRep/7Q+pXW1Jrgl3Ye8SOlPkTdSQBX/pquAUTbQ4B13knFHG+aLckSzDfipDvP5HO7duwedTgcePXoEs9kMOp1OyEvKg9aFv8O+pUfxYVvhb8wD7wik9ZICFfR5EUdZkzF0TPB3Wp21figSuKALcfr9Prz77rtQr9fhK1/5CozHY9jd3YVGo3GtjM86pP5ICVho6Xg+sfaM2d+WDE0J0kjlptihkl6h91Yj0L5A3sXycZzj/e6anF8HeP/gb+1uZi0Ap8mpFDki+VFUX8SuKuBlUflHZRo/as/Dl5ZMs+oo2cvcJlsFJDnLF7dJdee6RALVEVzH0Hyk7zi4XUJ1qaSbaPn0H7elivrIls1KT0nBf/TIWo3eMkB6+D2wsfxpHEKSwXwsePqvCFLy4f1J7y08PT1dau/vfOc7kGUZfP3rXw/f//Zv/zb883/+z8Pvy8tLqNVqsLu76/JTPPpDGjN4HD3A9bHhBeVf2serkA+rzLNo3jdtaxWRyWXrWmWdi9prkj/IT9qS/LGqQMeJda+p1lZc1ms2gIcORBGZ5c1TalMpNkr/jp2+kAorVgDw4u5eLB/lLqXJslnL7uS1oLU1tc0pPPGCVdraKf4Px7p8gFWh8DHFHFpDeBo01oge56YIYkEODx1WfrcBLzuDrhpUidK2kgSwV4HHxoKnT1IVnAeS0x9LJ5UTczw9NPLAJk7CojLlRzKm3Dfiea6NfS1oUmQcWcaFBSmgkxLY423LadBo5HnQ76T20YIqWpDFChbQZ0WPVvbQkmp0WuV4x34RvbBOuY11oTvBGo0GdLvdYGjSu1b5zgHMg+ZF86b/p9arSNvRsjC42263l4IWNOiL4LTFJuL4TtCNjQ1ot9vQbDbDbtHBYHAtKGUFIYvUW5MztO1pXa0+0Jw1fJdlVxPcuFiJBgel45m18aCNHcqH9DmWje3NF0t5xiIG8wHg2gQcp4/SyYOXWnlSPb1peFCqqJ1ryWTtXYxuy7mXvpH6l9ZNu/+Wlodl0vslO50O1Ot1cTEQHwNa+ZoOlNrd0+fSeJPy1+rqyZ+PXa1/eHtov720YvmUN8/Pz+Gdd96By8vLcDR5Gb+H04VlcsRsCovvPYERqSyvHZ8a2KN0S3dKxeCxwWg5fOx75QDmj0el06CjxYcWvRqk8anZi8jrtO/L+t5F7BJuS1o0eNq9jG3E5UQKtL7UyqoSnrFu6faydFllUV+EjqNU31ySUx4ZLNkhnn7WfC2eh2WnS5MLFvjYBAD1+EbJFtX0Tmr5vD7SM01+c1mp0aNhVWPEW5Zki3N5OhqNwu/Dw0N4//334eLiYqkN8GSqVHmkAccQPSGF94WEsmO8jJ637AntmxidVbVn1dDqFBujFFXJ49uEqhdepPpfMX7x8pMm91IR4w/Jp4vZ0Cnl0eeW/0h9TQ0eWiW+5zpZoyEGyYaPoYzdKOlTq428tsltkmkeHc1xm+RWZZOxFqzAAP7WoDl3RZTh5/gcHGh88qNR8Q4ZhMdo5H9rKBqwSElXBKtcoWMhy7Kw+wXvhMKjCS3H03s5ugcpynuV4PWV7jerqhwJVpCgzCSpVpZUJ+/9gFqeq+6r1GCM9ryMMVc18nx5p9nm5iYcHByEO5vPzs5gPB5Dq9VaCtjQHXjIu5ITs45+kTCdTqFer8Pdu3fDiuzLy0s4OjqCRqOxdIcshzTpDABLdcSdYdPpFJrNJnS7Xbh79y689tpr8P3vfx8++ugjaLVaUKvVwtFhq4DFZ9g/APYYlmwyWu9GowF5frVLjteF7pbG3wBwbZUqD2jScijf8JWmzWYz7GrN8xzOzs7UST2pv/L86ug2vK+KTqTT+2G0vHggUXL4UoLh9E5aXi69Y88KDHodWloXrVxeb0zPg8eSAy71gUY73kGJ9pXEB/gP7xpDubS3twfz+RwePXoUeILWi9Mv1Y3mT2mSZDGtsycwgjRXAS1gaY3RmA3k6U9OA8CLBRqNRgMODw/hf/7P/xnejcdj953KGmJ6kPOYZG9r44HqJgTnFfpOOx2A58npkGA5+lUGcyzw8RgLZPEy8vxqMta6K96iS5MTUlorSES/xQUaNxkI8vqD3rauAvwO4hikMSUF7aS7eWO+Uoo/JqX1BkirbFPkdWpXxHbFxMrnJz14QHW0JjtwDGiQ+gh/cxmHaendnmVs1VqtBrPZbOluULSBuU7R7jkuC2vBKCKFh1J5et1AnkA6W60W1Ov1cLUDwIuTBxAfffQRDIdDePr06ZKeGA6HlY6r+XwO8/k82HySXeWVWTeBm/JdbwoeXS29+yy1Ebcx+fiXbMdYPh5we83SGZbcjNme0t+03JtGjN+sMYkxHWuHrHdMS76hdFJVVf6PhCJ5W75FEXkm2YX4d9Vx4TJYhY5el/xXJ2O9gZ5Uoz+Wn/W9FCC0yirSITHDcJ2CKhYw04ztz2FDCuYgMHiDzgPAlUCmjgWmWQU90rsigjOWr+asWd96xp9FDwU6vdTxpQ7wYDAIaekkkWakSMaT9p6j6nFjtR1HLFhjBVaL0OWV61Y5nrb1BMWl77n8riqYVZWsTKHBG3zkuA1yHHU73gvId8TSCUz8jWk2NzcBAJZ202C6VRv72KYoX2gAqlarQb1eXzqiWPue0kn/x79xdx4a/NPp9Joc29ragrt378JgMIDJZFKIl63xjw6iZwIBy4yVK9Ubn1OZe3Z2Bj/84Q9hOBzCcDgMwTve1zFdJI0RyjOYB/IWDZhiADGWL/1bW8Dj5cmqg0d0koSXgX+nTtxI7U5tFmvCRMoL00hBCP4c+wT7qV6vw9bWVkjHg7QWDViPu3fvwtbWFozH4xAopO1i8Zam8zzt6Wln/J8ei5iSj5eHaF1TJwS0smLyWJID2K/0WdHJWE9bxXhSChLwhSdFgoUeu0uTk1I6adwUKVODVDd6bL0HUjvRZ15/1BOopOOW563ZSdYx+CnysQrwI/VjPOChrSzdVEZIeio2lqxn/J03ziL1lTTGPTGdVdmNNH+6EMpKi5DGNn9n6Smu73h+Ujvz/sVnkn6Xxgn/FhejZVkWbOPJZJLU3rSO0+kUtre34eDgIJR5eHgIw+EwTBhqAVxN/ku2GrcxY5DkU8wW0vpMk9/auKhKJsXGAtrOnU4Hms1muCJiOBxCnufhCqiNjQ2YTqdweHgIg8Eg8E+VspPTiD4SPV3BwqrleBF5YunIGFYtx8qiivZetx6uAh77nNeLj/UUXzLmC3vtBw8fef1u6V1V/m1q2phtjHqaL+a19J6EmP+jfcN1EKffgyLxg6L9YbUntoEl+z0+YgodVdi5nnKqwrrkmBqVtAwLno6iaGDASldGaaakTaGJwhu0qYpJbqsyf1lgCW28O7bdbi8diUiPd5GCGx5nUvqmqEK1HMaiAhLpKWNoas+5AzSbza7tgMSy5vM59Pv98HsymSy1ubSTKYVW6xuueKpSIBIkY05y6LVveBoepNTgvRcglg9NR+nztJVkRKUq2SIG5aplp9U/nm9ui2zHlYWNRgMajcbSSQF5fv1eDqR7Y2MDtra2oFarwcnJydLKbJpOghQsKQqcsEPEJmOlABg3vKX8cWJCmmzd3t6GxWIBn3zyCQwGg3DXdZVGNdYNHRReH/68DOjCmZOTEzg8PAxHotHAHpaZZVnYvSjVgbY1pRePIKaOAvYfBpu04z0tWST1pRWg1t5reZUBd/A1vcT5U8pHAwZC+RHPCG+AAWmgulK6WxXvd93a2gr5DAYDGAwGpp6gPLGxsQH37t2Du3fvwpMnT6L3ARX1R6wgu/Y37RO+GtuSZWX5hvMB5wfNNpKCDx4bgKbDsY3v+PHkEp3aO6tM6V6oWF60L+hzGrix+C5m90k0pPqOEiTe0MqJySv+DecVKQ2AfiQfvrfureZ0aDa/xXceHxnHlnQEpwUuu4pAk82W7qmqbA9N0jut3CJ0xOSXxpdZdv1+UIuHU/ydorDGGLcbY3Rg/Xg6abLeEyOQxqom5yUdEKsj0kbpwt/0dJMidiq2xWw2g+3tbfjKV74S3vX7fTg/P1+6LkRrA6l+kh+XSp+mk63xbNmrkuz3+MxVg5aPu1BrtRq0Wq1wms14PIY8v5qMRVt6OBzC+fn5Ul6rkFGYL19Uz1FEnlvPtPdF5KEUY0nFbfHtPdDGp9SOknyLtak35rMuSHJXsn0l+SDJpjJ0WL+1d9aY0PpMy5P7olq+NwVpAw8+53X1yIVUHqR3c6eC0rQK20aD5W9ptBSBp81XDcvfQVQdv6kCrp2xVRNddX5VMFIZmjwDetUdf9sY6zYCgzzdbjf0V7fbhd3d3ZDm5OQERqNRcEaGw+FSEACdFWqU8SOOvZAEl8VHq+xjKpSloJ0GyTnh7yTQI4uyLINer7d0NBIa74PBIDgXUnDQUx/6vycgZOUXS1cUq3TiaJvxoJrWzzRIxwMFWtvHgorat1XuMl+1gZPaT0UCGjcpy7vdLuzs7MDGxgZcXl7C1tZWOPKq2WyGezf53aIUePwvBgJwojLF2a5iLGRZBvv7+0unHOBz6kBKwZQsezHBwuU7pQ13+eGz2WwGjUYD9vb2oNfrLX2HAbDYhBLSEXtO2wkDaFKa2GSsFrS3+kBaSWmNvZicod/Tb3CC6/XXX4ft7W3o9XowHA7h4uIi8CGtg5U/pxHf4b3Inm9SYOma2DdeZyIlqIW7i2m78vwAluVxkYCnxH/WpJ1EP9ZhPp/DBx98AI8ePYLxeBwCelz+rEon4/9cZlC+y7IsHN+e51f3so1GoyBzytCWqhtjOprSYwVkKH9J4yEWsLHyl95LgS8OWh7f9WrVg04e8/Roh1oymbeBRWuK7qJtqAU0PbZWDLQMqUyAF+OJ56tNfMZkmzQuvbJEa28+QbRKm1miiYL3vYeOddCKZaRMpsXSFaGbynDan1x2emmQ0pVtzzzPw8K84XC4lC9d+BWTk/wZ/Z8Gbr33Q/P4gjaWaNn8+oGYDuDvUE7O5/OlhSspYxbbstFowOXlJfzd3/0dPHz4EO7duwf379+HRqMBR0dHMJ1Ow/Uekm2dYnPwtkJw/UBlhTeGIKVfpb1RBpQuajOgXtva2oLpdAonJyeQZVnwzbAfbgqr9HVv2pf+rKIK/4jalrdtLFl8Y/ld9HtMe9twm9s9BaivaB0kXX0bZcBtpEmzc16G9iyK28b/S5Ox3kB21QYxR1Hjv8g7jQ7L+aS/y5abgs/KILhJZFkG7XY7OBx7e3vw6quvLt1xh+08n8/DUZv4LQZvyhjllrLW8isSlJF4OsZDWgBOA3eGPAF6gOVgfpZlS/f54c7k2WwGw+EwrOTUAu4eGnndUvKpUt7xfLmD7TXkyijF1MAHD9JbAVqef0pAtijNMb2VqmOqMqZTA3a3wdBpNptw584d6PV6MBqNwp2AuKsUF0xYu6sxLT1aFiC9XT3pYv24tbUF7XZ7KU8pqM/LRVnPn/PJEdQXmN9sNoNarQbdblcMdKzSAJQCeIhYW3p3j9Gy6IQYD0LywD+ng+tQHkjDyTvcWY3H3tHyJF0VG2teHtRoS+2/Ivo2NpHhlYWSLqYyXLub1uuoS3wmtS+/V9oDOj6fPXsWAodasFlrK/5O40WrjhbwPR7njsf/SeOiCJ9a5cZkH9LA+4mPVak+WuDaIxs8kOwe6X5GTY7xwHisDzWbD/tMm4y1ZBj/W6qf5Td67GXN1rLKjtFkyQjpG8/4SB1Xsfw0WqzfnjzKwIqF8MUhN2HHcX5KaZ8yfWaB8jnffS21lUR/VTEiiz66yBAXXHshtR3VXxLfpvjMXEdrfkKKv8/bnMpIfhy4lzfoAuvhcAgnJyewtbUF9+/fh93dXajX63B8fAzz+Rza7bYpp2J0e/Qj/VtrO03faXLY6mup7KrhyZufYJRlWdiRTK9TAYAwgY79vi65laJDy6CsT+3lD28+LzMsn7JIO3M/7iZB9bhkm9I01LavKlYk0QLg1+EpdHjsZkumlekry+fgaTy+l8STXjvRC+/3Wj2k77U6VmnXSNBsLs2X5z5sWXlaFh5b0IoFaN/cBvmsX57mhGdwpcIrnGPM7qHDMmy9HXbTiuSmsS5lmloOPc4Qj89ER6vT6cArr7wSjlF88OAB3L17d2nV5ng8hvPz85AHDxZpRxoVxU3wUZXClefl2dWBTgA/5hCP1ZEc4yIGEHWOtXdVwaMMtO+qkjHaWLFWelt0YZ70f3znWYVfhUNUJL03uEcNbAvrcMJWYeBbwHJqtRrMZjM4OzsLk1+tVisEq9CRpwEbGoTkR3TeBHjQpd/vw3Q6DYs7zs7O1OOyOF83m82lu2H5xCsALC3OyfMczs/P4ezsDC4uLiDLMuh2u64jHjm0ILwUTKL8ojkoHhQNyNBAa6fTgXq9Dq1WC+bzedjBKpWF4Dsx6S4PPt7wmFssl9JA89XGstQ+lAYp4IbPuD7jvy1H0JKhNK0ku7T+5s+sfqPjk+cvlY1tz68SiIGW02g0YLFYwNnZGdTrdWg0GuHo81hQVAI9+lGi2aKJ1kt6V0au5/nV6SitViscA0iDNZyPtLyQx2i9+P/0nWdXp4aU3c9F5UkK6LjnR59LabV29Nh3vC3pzllJpkgBw1gbpASEuJwrIn+5fOFjhdp9PMBC88Hv6Q56+r2HztTAHe03uqONy1cteHhT9gaVdZosirXhKmgqEzTjvMHHVArtXP7xoN9tiJugTZfnORwcHMAv//Ivw5MnT+CHP/yha/EQb+uUutFvYmOG23nId/xED69/R+Ud0j+fz2E0Gon18eSH1wnRRYibm5twcHAA29vbMBqN4MMPPwwLrDXExohkp+Df3K6s1+tLtrs3T2xHy0bSaPf6kqvE5eUlDIfDcMVMp9MJC0UBysmiKutW1D9O4csqULbOlt9WJVbJd9w345AWXtNvtecpvsW6xpRUR8mHqhqp8TlOZ4r/ftMyalVItT+rLpvyepWn/q0Kkv2REjspamtWhc8KH5t3xmrQAoWxoFsKvA2sBbvos6qg1cUKGmjQlBV/d5NM7sU6FWQKqCOZZVfBdVwJ2Gw2YW9vL+TZbreh0+lAp9MJgWR6dx2ngTuWqXRpdUrNT8rLm0cVwcyUoJOWtyXkeXCyDCTaLPlRBbz5lg3GWQ59TJZ65bnkoFNnvoj8L8v/FmKBH27EFi1Dyl9qDw8ttN3XJVdpABZPA9je3g5HWWEwQwt00++lAGqs7FjwidPpyRPT4cRrvV6HyWSydBe1VBf+m95VKtFEJ4bm8zlMp1MYj8fQ6/WWJn05bR6kBPTwb87zHjuqKtmaZVeLnFDPSvWn6aXxodGC+hj/aXlYugKDbDQIieV625rrC+kdLU+iQZML2jc0DX1P+1dqBykPft+6p+xUOUQngjBIS+/65W2vBak4H0s0lbHDKKRyU4IaEl9ROmP5WXws9RumQZltjSVtTLwMfkbM9vPoXaueWl9z/pL0s0aPJiMkecPHXxX6gfY75yOehtOM7YcT/XiEu7Yoo6pAiOUHUJT184vYVpa8TuENj4xOoYWXx/uiin6pKg+LTg1lZJLV1tq4bLfb8Prrr8N4PF46iUmSH1IeMXo1WWP1qVY2z8vyM/n4pvnx57iTski/a/7BxsZGWKSUegWCR/ZrdlmWLZ9uo03IWj5ICsrKpiqBdjLaDujDSEe9p6Ks3KoCMd3nTe8ph441Tx976roqvqhKF2Ne3MeI8XaqDZOCVbRZLE+rPim6PoUOj42i6Z9V2fSWfkmB5sdKeVv119JKurUM36TUW/Jl6f9l+bcK2ebhDw8fSfrWY4ukIsUHL8JHRcpaFcTJ2FRlsg6nXhP8qd9Q5Ll832dRY/RzpIMPoirand+Hhmi322En7L179+BrX/tacA4+/PBDeOedd2A4HMJisYCPPvoIBoPBEn+gY0F/F8VND/wqEAveVqWEtHwR3MHTAk1aftJzqX9WscqpKM/HFF4sKOmBtOOVGhj0PiRsZ629U43NquFpi5QgkWb0VTGuq3RoUvlrNptBv9+H0WgET548CYsh8AhxCgyuoLw9ODiAbrcbjpfVwHmhiiClRFue5+Geyel0eu0oXl4mBm4wiEHvCgfQV5OjHVGr1WBnZwcuLi7gb//2b2E2m8F8PofJZBImtss66inBpFRgPjQIH3MAsO/v3LkDW1tb8HM/93PQbDbh+9//PoxGo5CeHlXL84g5VlmWweHhIfR6vXD/MAZLKQ002JcaNJWC6rQ9aF50gVCsfVL0UQp4/vwOUwm4oIL2HX7DrwJIrRcHBgGRHhwHOLZooIeDjzNcQKcdKZ4qPzSnWdrtT+nU6rtYLGA0GoUFA9PpdOnIRiwjFhCXflN6OT/i0ch4xKbVJlSX30bbkwfOLRqz7Op+QtomAMu7Arz+qbXTgz7HMYK8HOP/Km1e3FEe25VB6055BnnRs2sC69btdqHVakG73YbxeAyffvopALzQhdbRzhRan3C6YzLyZfDJqX6j9eHPqtbXMZr4N+uCZROXaYMqx9bm5ibk+dWCoWazCffv34fZbAaXl5fw+PFjeP78eTjtQ7KBNUjyWJL73Nbw5h3LPwbLV+P0pyDPr07RQdlweHgI77zzDuzu7gaZsVgslu7oRXrQZpCOCsU0Unmcx6i9VqvVgl4ZjUZLCwS5PcFPR+H6liLlpIB1gtM6mUxgMplca29Nb/60wTPmqvTHi6AqfZFa5sbGRthRTWUfjg3p1LqYjruJ2A+nx2pPfpQ+Bdqd9CS/KlDGtkn5TrKpipb3MsmLKsaPJyYjyQkp7nEbEOtHfhqK5k/dJpTt55vm7aXJ2FgABtOsujO0/FOClB4BZ9XX2zFF26aKsqvETSh8AD1oUiYfgOW2w6NaqGFer9fD3bH4/WQygVqtBo1GA6bT6ZIBgvcf0vw9/bNO4yNGjxSALJIPD0576KqKpy3Hi5cp0cG/k/LUyuVptSCwN2Ado5fTmfptLH1MzvJ+4+2Hx1BaTqtllK/KAOX0F+E57RurTzV+KMrzRRx93q6pxjrWb7FYwHQ6FY9qswLXWZaFiU8MIEv8tCrjmPMoGpV0Ekj6XuJfzeHCdpJkQa1Wg/l8DpeXl0tBHeuOXakOEj20TD6GpXy1d0XsKwuUJjxZAvWtNl68dGM7jEajIGvoJIBH5xUZA/y3Ra8luzUZVJXTYMk3jWZvm3HetvSaplNoWi3o5wnaIB9YOilGC/3G4osi8hoDNNJR5ohUXcTrq6VBmlP0TdW+RVF9TnnNY8MB2PZnEX+sirbgfLqqcjRY8oXSxHlQ0omor9BH4uWk9rP0Df72BjWr9CE+a9DkitSv3m+rgqZDtGcxaHycSo8kQ9Cn2d7ehgcPHsD5+TkAvFh0iPZkzC636mrRpL2rQp6ktHURO53SQhc14d2x8/k8XIOCaSwfPLVuWn/y/6lNaY2bMrRIv8v6OzFYtg4ABJs5tuBp1XSm6I9UnpWQojNidmhVcjK13TU/sCp4ZBPaAxJ/x2I8sbZbNc/xMrxy2eMnp/JESl1jPB1L6/UbpN80ndcuT4Gn3dfdN0XhlTE8rhD71ku/ZV/HvinaRh7ZvA5dwsuzfG/pG/4tTRsrr2ok3xm7DsFZFhaNfIWCd7WwVEbqAIjhJtv2ZehXCxb99+7dg83NzaW+XywW4Y4TAIButwsPHz4EAIDpdArvvvtuSFuv16Hb7YYycPeDBMswuW2IKWKKFF5PDTjSvNCRs+5ZjK0y4o5Unl+/S2wV/O41kqswplLBA9exySHaL5KMbDabsLu7e23VLU56eWgo4lSkpKc7nDTwozM1IzUGKxia8q0WBPEaTlXpINoOtC34c2y7er0Og8Eg7H7DyVytHbMsvvuySN0kZ5HvKpLu/pTsgvF4vORM0nTSHaOI2WwG4/E4pE8xqjUaKZ14BFnMzvHwPwUfAzFasd+zLINerweDwQCm0ylsbm7CvXv3oF6vw9HRUQhyakc9c7qlelxeXi7JcLpIAOlYLBahXSTjWtr5SN/ztuB/08ByLCjM3/MxLo0vfk+jB7EAkiXnKY0xG0AKuuB3MXql97QvpHdUJvNxJ7Ud/y0d6YvyKjbOeL1pHvy5V97GvpX4COuuBbx4fWIOPbezvGPdg6L5aN9hvfiY0PQjTYu/8X9Lx6zaLi8S8EgJfmm8RPmG7nrnd8fi/1wW4LtOpxOthyQTMN+UgCL9lv7N78dcl6+aYst7+pjf11gVUvU8IkZDmWAdgC/gV6QduCzVeMlDu3R07auvvgpvvPEGDAYD+PDDD6FWq0Gz2YTxeBzNTwsQIp18MkzTy3Ss3pS/WCQ/1N0bGxvQbrfh9PQUjo6Owu58a3extIMc4eFV+r+0e43rUcnm52VxWriM0mi5LfEeTiPfqbVuOovwVFFerBq3gQaA9U1yzOdzGAwG0Gg0YHNzExqNRrgPOs9zODw8DHFQ9ME0WGP7ZYMUY6Dwyir6fYo/EfNbuc8pybOyWEWeVWMVcjimk6R4z22RGxKs0w81WDE9z/dVQPN1b3NbxxCdjE0RDimdkNJoKUEDKy0XIKkBFZpWKifF8bQG7G0VbrcV3DimDg86APiu2WzC66+/DgcHBwAA4Y4/gBeBB74LFvORhE0sALZKoPCpSgjGeFATvhJdPJ23nbSxEisrJoMoDd6AEf1WCmBpuCll5EXRAAgvk64Yx13n1o7Kqui15GmZwExMnpcJOHsMHJ7uNhgWlKaYAYSBLX6Mo9YnPH8trZSO06DRpJXL0/KgGZcLNIBh5YtHE2PeOBGQOl45PyCNHluI68OUgGhRnsN+v7y8BICrI+GkCWPeN1Z5MT1rfYeTEBy8Tbx2F9cX2pG50jcAy4E/r+7Rxp1WjqeNPLqUQ5MBsTFGv+G8bNVB4nManNbaMlXOW3qF8x7PWzoWGhcDSHwbK1PqF6mteXlF/RitzBQ7R8qP5xPLo6yOy7L4YoBV2WO0/WJ9kKLXpXGijVtvAKKovcrHIv/bkhkpOpvLam08SHI7Bo98XJetVSUvSnreU6akfz2yPwUeeZza5kVp8ZYzm83g7OwMdnd3YXNzE5rNZph84AvyY+NJsiE5LfiOH2lP03psvTJ+SoqdbD0HkG0cPC2CXongqZdGUwo/oU1Kv9Vs6Kp1xG3x3QB8NvdN0xvrV0v/eeAZJx47ykpThodug26i5fEy6V3SOzs70Gg04OTk5Np3AL6+pJDSp9TZ0l1F4e3LWNlW3dYRJ5Rg+T0eHRuzeVNtzVXK4puQax47vajPpoH7F7H8Nd0Qk7Mp+a3S71rHNxxl/awYrk3Gpjo6VRBRFbTdJBx5nl/b2WjVuagToEHKS2L2KsqM9WdKfxfljSLw0i31b6PRWDpe6+zsLByPc+/ePfjVX/1V2NzchCzLoN/vw/Pnz2Frawt2d3cBAGA8Hps7M18WxNrQ25cp/EH/t+jwCPUUGrjjGzM4YtAcxlgAnaZLKS8VRWUDP2rbU47HiOh0OrC5uQmTyQRGo1Fhh3sVoIFByqO0LlIwEP9fl/FchmeqlM1U3/H7Ma3gKl0ly/Ph+dO/qwjaeccl5Uv+jbVzk/MI5Z0se3GH6XA4rESHaw6rd5HDqsafxWeLxQI++eQTaLVaMBwOw+5gzjtFeFU7Xo3LI1oObysrCGXxNf9OOmXB4mPkD0ofnUiTaI/xjVXv2DdWWksva3pd07XSc4nuLHtxByhO4NM7QTEdTnTW6/WlhUCYL07WavY1H7OcNnxGd8ho41CqIz0xpapAELVzeR2oD0N5kOu6WFkS794W3X0bIMkb+rtsW8Vkj8aD/H/LTvPygwQcj5LcsyZRkWethSuUZzmd6/Q3iyCVNtoO3iBYrGzadrEdsutsV2vMlEHRNvLQMRgM4Mc//jF84QtfgP39fWi1WrC9vQ3T6RRGo1GhWIl06g5Hq9UKR/hSHShd86DZMKltzMccpxvHtbRzWMuv0Wgs6VDpW6ktqO6O+QNa/aXneJc7vscdu17cZtmDiPFkqt+wSlqKpr2NuA30e/q+CI1ZlkGz2Qy/cRzhu7feegv29/fh008/Daei0THI5YoVA1h1TCUGy16O6dGi5a0aMf/upvl2lahyXHplq+b/0jTrREobSOk8cYSXiYe89Baxo6rEtcnYIp1joagykH57GssKuCG4k6sFj6w8eX5l3nvKKIpYvkWcm3WgKN00QAcgB08wSAxwZWh0Op1wxMZHH30Ex8fHwcjA/HAyF7+hdFj9Kzkjq0JKQC02zj08L6WPGTBFjTDr+5jjpo3zWB6pfSXJGXxepVyN8ZRmJOA7T71432Lwt1arwe7ubljwgAGg+XwOFxcXlQSjPfXQaOXQeEB6VsZBqLq+UrBuXeUXgSYHuZ6l/zY2NtQrADy0Sv1VRObRYwOzLBNpkhxL2k9eXtVgBdZ5GguWDSONfToZ47GzaJvn+dXEGB5VTNtCkn3S0c5l7EOUO81mE9rtNoxGI5jP50v3wNP8JVlAA3Xe9kX6NbuRtiktj773BFklGeyhTStHqh99hrKctxmXS9L30jc0PW0TjQ4M4PKytre3odlsQrPZhPl8DkdHR+5jdj1B3VjwQstX6mMrvSdf7RtNF0h0a8e/e/hbGptYV3rMakqeGnjbSTJDkk0a3TRfznu8TC/fWG0t6WjO9/zbFLtaq4P0m5dB5ZS1SEH7djweQ57nwaajfaDtRE4dQ7Q8Cyl+jRep+scjq2OywGOnxpBSd4tHNPuJl5MiQywdpvEx2oGWDPaWh99LR7Bq+aO/srGxAePxGH7yk5+EUz0ODw8BQD7ylpdp8QTXFfgM6cRrJ/jR/UX0En+fIjes71JAaePXC+A/nGimV5lI+Ug2q3b1B7dNebvjO6lPKKQyvahCNlVZ3jrpSSmrCJ+V4Ulapjct3bGOepTKAknXx/RKTA9L0GzHqvpe6guuH/jR+rVaDV5//XXY29uDfr8Pk8kEBoPBkgwuKtcpLWX4V9PZ0nUwqfwo+Tha2bH8udySaNbo8thFlqyL0WflX4WuSPnewwtVyrvUvKwxr6Fs21n5xuxmzX4qYltI33j4NwarrNiYkMpP9TWK0mtBy988priIo+LNz2tkehVPCiTB5BFU3vRF6JHyLMsYPw2gRkOW2fcWAFw5Vv1+f8nx2draCsr5Bz/4AXzwwQfX8tPuiC2KVfXtOnjGYxisC5ZxI2EVzgnNs6r29wQdrW89gRGpHE3W4fio1+tw//79EJjFo7yOj4/h/PxcpUkK8mplpQR8yrQ1NVJ5H1ooY4R6lfW6ZL/mcHmdyZR0dJIsdYdnKt9LzpDGO1h3BHfStIAO/k3LKnoXkydQTumMOVcUUlDL0z4x4E4DXEWNAQyeLwL7nB5bJ6XzIs+vJmNrtRpsbW3BfD6H0WgUgijSmKb9xRduSfTQoB4tN4VuSxbH6offW7yNaXigkdIfK8frpFhjkdKojReLBuxPju3tbdjZ2YGDgwOYTqdwfHwMs9lMPeXBy8u8jaT2pmOPlkHvyuZ1tJzBVGhOJJUF0piT5KY25rkOkIB1ldqj6sAZH5/4t4eP8zwP7YH199gdMVro37zuMZskZaxb/ZUCWnfPHdRUztVqNRgMBksnG/B0PMAnyRlLTvDvPTq+rO2eYlOlpL1JHz2Ft6TnkkzQfld5Zy+WTYP2kuyPwdp9TcviwDrgHaa1Wg1GoxH86Ec/gidPnsDjx4/D5IKHt6021uwLlG/D4TDUfWNjI1yXpLUHHTdSn3h9DEtup44Trkuo3MYrbOhpFrgQE6+IkvjOajv0R7W68QkzKQ8Oj44pizJt/TnWA+TPRqOxZFtNJpNrvkuVft5tArd10ddD/q3VavD222/DdDqFx48fw/n5OVxcXITv6C55ybZBVDEeNF2tyTf0D6XJWEuu8PKsci0ZbOlcjeYq40FW+RItlh0n0RbzEV+WMSBBqquVVoPkr1bdLlrcQqPLazdYZWj1WEX9XlZe0ug2Z648zq9VYIwgL1LSWgIfjTRP8CDmpBSFRp81QF5GhlsnaPtQ42k8HsN0OoX5fA6NRgO++tWvwv7+PjQaDbi8vIRPPvnkWhDt8vJyadKA/u9BrL88goumi+WlBYK8hk8KtIAZzb9oAEOjjQe9ysicFBRRWKnB1ypljNfhlAwJq66cx/L8ajUzGqzeHUo8QMyDAdJzHrArAm+fYDnSziyNjlgQ1kobc1RiBn1V4OV7jOrY2LACrPx4UcsQ5Xyh0R6D5GxwWcZX/vLvPKtoOQ9rvCv1LW8DmocEa9UxpU+zdawAo5f36IQU1vX8/Bzm8/nS3ZnozPMAnXUstARK32KxgGazCXfv3oVmswmtVgt6vd6SXtKCx1znx5wHzoOS3OQ8weUODWTwHaB8FblVDn+vjQFaR4tfaZ4035S+4fTSfipiu25ubsLu7i5cXFyEhXN5nsPOzg7keQ77+/swHA7D0Wke55imwfbmz+l7gBf8TccyryvXgxK47KD2pdVGqbY/HW8Sj1B5RAP9Wj9Lz3HsURqL+ihc51BbkgYAOWiZ9B5hbEs8xQaDbpY9r/VnjGZv3TS6q/LpvLKT9r0kFyUeWSwWcHl5CXn+YqLMCkRLcirm33jqIPGYJm+raNeY3NQQ08VaurJ2Hr2jPtXviNlgALYu9ZTD24DL3slkcm0Mp5SVZVmwJzxpJTmOfzcaDZhMJnB4eBh2rHps4lSg3dRsNuHLX/4ydDodePLkCQwGAzg5OVFtRCu/oijLj5pvVK/Xw+QVvZYBF/Dh/3y3Ic2T8o61w5/zpyXred0tubIqcD5cdXkvM6qWl1K+1M5A/wVP2cETwDR6kCYPXdqpJbcNeEcst8kAAC4vL5fu0sYT0+7fvw+DwQAuLy/DN1SuU9uHL/ym487yzbQ21uQC98WzLAt1Q/uQxoyx32NlajqE0y3VS6KRl2XpQU8+qe9S/HAJmn3GyyiDVLtgVUiNV3jSrUrGaeVp/VWEtzikvsfn2hjVvk0tKwarHuvkK6ksexthiQK0DimDWB5WUAHhMdjL0lOlor3tSvs2gRtE8/l8aeXr22+/DXt7ewBwdT/MRx99dC24MBwOr+00kIKjRRw0z2DXFK8krDWD3goKWPnG6NPy1wwpKw/puRUE0ZymlDbVDAJPfbR8ixoxvC2tAKFEWxHwesVkNJ1AoO+kAIWnbPzHJ2diMruogSDpI09/xYwHqQwpX4+BZZVR1kAuCo0/PLC+wXxj9zZpbVmET7R60GBxzMinYzVWP06TBMuh1PIsI2Pwb08eOAHisbWQLpxcBQDo9XohuIoBuTxf3vWCgTgpsB/rYwTuiD04OAgyhe6I84y1mBOk0SLt6rYcc4DlCUCaP7Yf3eFDv6F5FLEFNfkiBULo5JfloHt0L29n/p1Wl42NDdjc3ISDgwOYTCZLk7Gbm5uwsbEB29vbkGUvjlLldMXqTwNEsbaxxg2+12wTTcfTNq/avqeBLqnu0k5HHlji761TDLAc7642zW625DQvT6IBJ2No0F/aIU/ziPUtT5NiC2jveL28cl3yOVKhtYO1w2wwGADA9d3XNA3Ni9uxHv6WZIX0W7KR+fOi8Ppd1reWDMBnVY13mg8Gl6U6eMuL+Qb0Wdn25r7AeDwOOyc94ONWk6eaT8XlDgXe3TocDkPaGG3WGJBAbaNGowFf+tKX4ODgAGq1GhwfH8Ph4SEsFosw4aHVhT+3bGbLx43BUx9OG+1fALjm76FsbjQa4Yhmqx0pvXzhk1QHqb8s2VIERW3zIr7VquyFz3EduFgSF3U1m81Sspvb82X1QBmf0EJsTAG8OFkQ7YE8v1r8VqvV4M6dO5Bl2dJkLM03Zkut2i5GoL5EPxRPt6Hyyguvv0rTa++1unvjDjQfqZyUfKQ8ON9Z9VylnLqpuFiViLWhx+8o0waSDREbm1a7WzLJ8reK6OQYDUVx07q10slYC6kKKMZotGNjAqZoEEvLb52o0oH7rIKutAS4mizC3Xv02OIf/OAH0G63AeBq16ykeDFQB5CuFG8SRcdWKn9VyYs0mIl5F3XIvUgNDiGdGrR3KfWQVvVq39M0sWAyLaMIsI1xLEn54MpIHvzku1GsHS60vLLymvIzN2isfqV05/ny5JGHzz5rcprvXgSopo7I7zxfK28pYI/9SfvdGhO0bJpnCt34f9HgS9mFYOj4esc9fiPRzo/3o2MP03llJa4gp0fSUVnA86GnVWSZfyKH1xEDuXQyk9cF60rHttQ+XBZRXuI8ZrUFzxef0SNlOa96dAUdA7FV+hZNAHagkqbxjhFaF85vNI22+zfPc5hMJrC/vw9f/epXYTQaQa/XWypjsVjAs2fPYLFYwPPnz69NxKaA8j1/HtP1WGar1Qp8N5/Pw5GWmh4CgCX7tNlswubmZgj8jUajsMOA0mDxhtfGoPWbTqfQaDTgrbfegslkAo8fP14KjktyCtuLL8LCd2V0AuUdOonM5Qa9VoT303w+h/l8Dtvb29But8Nuq2fPnoVAIS2Pl63R5aW/SlAZU1Rf0LakdZ/P5y55gTIJJ0vwOf6v1bnIJINlW8SCN+v0xcr4SdgPm5ub4WhWTQaVpVEqW7KJy/J9EdqQF6fTKbTbbfiVX/mVcCT24eEhfPTRR+KipRiN2u9YHTX+smwEmkdRGxLjFaPRCIbDIWxuboarX549ewY//vGPYTKZmEcwe/rPEzTXxl3KOMO0OHlFv6N2Pl8so9WH20Ve34Dnw20OaTEc/wbp9NS7DIr4EZ+jWlBbAwBUG6ff71+LU+AxxpSntZM88BvP3e2cPvr9uoG+HR87h4eHcHx8DAAA9Xo9LCShwAUWuJBFih9J45zGXlP0o3TlDJ1Qt+qIV57UajVoNBqwsbERjqSO6RrMg9NyE/3lAaeriAzSjnf+HDpWLe/XoU889sTnKI7Ck7HezrcMX3we+1ZLn+qsFWEizoCftaD7ywSL32gQC40qgOXdJUdHR0tGQ8zhKNrX9Dtv8JbT4VWaKfStSlhb9dDSprZLCqo0YiV6Y+2YKuc8gS5v2R6ktA8a5HwXG3WwqcFODWLvJIaXVg/NnqCT1Zce49sLT/kUN6VXNBqL1N3DT9R55WVKf0vwylhOU2pAVeM/K+jFafPaSZIc4H/Tf7RsTgulRypLo136W1qcRIO8NMCGz6nzTlcfA7wIyuE7azLW0oPoSNdqtWv8JAX8UvqC0+DZzS3RS597xoaURwqdsbxjkPjW8y1PK/GTRC/y0Hw+h3a7DT/zMz8Dx8fHYbcUpsMJz9lsFv6nO4dS6koDYx5I/Y/BG8rXMVroeAG42nGBCxlGo5FLV5S1LXGs7ezswHA4FOnj+UpHVsf6l6b32tGaXJXSUFmD8qRer0On04Fut7s0ec939qYELqy0MVo9el7qX02mx+wJyTem7/gkQ6xPeKCa96lUH/59qtyRnltyQ9K1qTEFLz2xWIYFnIBDWxqD1auCJjd4+2CbeewcLe9UfYWy9969e9BsNqHf74fF0RpfVeX3pNiK2rsicQHOs7VaLSxkRbmFd6JzuUInMzwyP1V3VwEqX7QxS9Ol6ANLNqTAE1vxHsPugbe/UrDufv2sg8sbeu0Bvud6hS46BZAXTUn9Q32kWPqy8ZIUX8ArUxDD4TDUudFowO7ubnhHZQDattz3kXykmB0U0+mS35lie9C+3djYcB1XLLW1l+ayqEoOWL6Zlp7rwZR+8qTzoKrxctPwtPu66ub1K1N18rrof1l5AFF4MtbjoK4DWpDLG3hLLatKpK5s/xwyFosFDIfDpd9SmpOTEzUPNK6snVNV8lMZZVIkGFAVvMFACR66PWlSykV6yzg+VUOiBVflIa10wgKdd2++1so1/r+2O5zmx51VPKYmdhRUnr/YLSvdPULTSePBMwHiCZBw55/yBD1ilZdfhbzXAtxSuqrK9MJykPB4d6SNHuUjpfeW5zHeveMuFgyXyuffc1qswLJGr1YGvR8XQJ7UkL6X2iilvT3OrQYeyMMxQunHdwAQdsXj0cR08gOf37lzB958882Q95MnT+D09HRp0ZRWD/631Ba4wwQn8LjsxPagu+piTlCZQLAUFKVBeCk4Qf958teC5DyYGBsjWtCorLMv6RC6a7rf719ri/39ffit3/otODo6gg8++ACm0yk8f/4cer0ezGYz2NnZEcuS+MSSMZSXJL0YaxOOer0OOzs7S9di8AAPwIvxgwE/PKYSAAL/IuguUdqmUt9IfUzLQd7Psiy6U0CCVh7XvxxeO1VKw4/LlnbEYjq6GCTPc9jb24ONjQ34yU9+EhaK0Tw4bTFb3BtgqhraGLfGP8CLBXLY99QG8wbPOO9WFfzDPGI+BB2HXJ5Ksr0KmorYHZ500+kUNjY2oNPpwMbGBuzs7MDp6SmcnJxAvV4vvJOG276pdoI0lmi++HeZ9qXf8rttsV0o6vU6tFqtsDMJ80D7k491uqjLQwfnPSqbEeiLaXeZ0hMOimA2m8FoNDIXoS0WCxiNRtBut2FrawuGw+GSTS7RnYKYDPHykZaPRVee5yFeg23AdxlSGriOtiDRT32rdfpXqXEKgM8nWdcNyc7a3d0NE4wbGxvw1ltvQb1ehw8++CCMwel0Go7wB7B9ySKxaC/vrzMOiGVh7Afv1MbTVQCu6G42m9e+pfJKi2fl+fKJZLjIVrPHua9N88cy2u12oLMIuI7VbFXJhrzpsZwS3/AiZi9a362LV6soq0ge0jdavKFsWRxlvpd81XXB44t4sE7+WhVWfkxx2QYumjZFGErfxjo2tV5FlOlNC/ObQMxJ0L6J7a7J81w8RoenkZASnPHSm/pNWXo8+XkVbVGhJxmWMdq1cVyFcuMOuofvuJMXgxUIpvnwewN5Guvo7Fj5nE6Lbq2+9PlkMllaGarRoQVoPW1C89CMceu39k5yzDV+9LSFBzEeony4ToNVAwY88zy/FiwsQl/RgDynk/ZdFbRIzopWfqpOwrxpGdp4qBpF5BL9lo7HWFujvJrNZqGuNOjf7XZhZ2cH7t69C+PxGAaDQdhRiMefa/lbNhymx6OopOPFYjaXxkurCNpRHSPJLk8wvYic8NZDcyLp30XHMddjdIEClS21Wg263S5MJhM4ODgIV0pgkHY0GoUyqhpLsfaOyQR6T3Ge59fuQubfSe2q3clq6VT6TuMn/h1tt3q9rh7fq5Xpoa8IYr6aFgjjMpZemQDwImio2VxWG3rpTkHMR5XkEn9H20Eas8iDOHnF627xWYwHUtuoKH9IOpnr/pjtVgSpfoYXlHaUGdad1UXhtYGRJkob5yk+Nizf0JIP0nco7y4vL2GxWEC32w2LUmKy3SPbpO80ntIgyRpetiaXNNA60Enks7MzODo6CjLszp07UKvVwlH9nH9i5ZXR+do7bx4xeqjdRt/RPozZfCllW3LeY7/ztKvczW4hpU89acv4UFVCkjc3AW63ZVkGnU4HWq0WPHz4EJrNJpyenoZFc/REMNS5CMkei8kfzS9A2vgzTe7E+DvVx5XA/bzpdBre8VOQYvlYkOqi8Qm/k5rnLelbOnEb08XUd9P8R8m2j/FCUXh0vSS/PN97y9TqKJWn/b6J+IenD4r0kRbDSPmuCO2aPSS9KwvN5kmxPbU8vfDwd+z7m9Z7EgpNxq5DoBRJRw1c6QjEVXTAbexUxG1lOguroJcfswoA4c4HRNWOcQrKKEpP8Jamrap9i+aT6lDFHDRvmZYRW8QJLQMenMaVhJRH6apsvG9qsVgsrcbUAiwaqILW+N3KA52Cfr8f0vJAAU1Ly8P6WIsmvAEH71jlaTzBZ+nOWCnfKoxbz1hYp0ziQbk8z2F3dxdarRYcHh6Guw45ranyyuo/rV1Tx6UVXIzB2nXgoQN3W2N70rtRq+xPHGOeABHvL20SAODFHYwIPG6Kl40LMvCoYbwHNs+vdj7s7u7CP/gH/wD29vbg1VdfhW9+85vwd3/3d7C5uQntdlvUyxLd1OlDuuv1ejjtQpIXUoCW31OM9bCcfsmxkd5ptNOyAZbvjKWyEyeR8vzFaQJaW6A85f0m0e+FNJ6rsokoX1E+qtVqsLOzE/pxOp3C2dkZZFkGr776KnS7XQAA2NzchFarBR9//HGY9OeTTd660d+cFzSfQQvm1mo1uHPnDsxmMzg/P4+Wj3yMtI9Go7AwgfN4LOjmqTPlD8pTtVoN9vf3l0474PeDrxKW7AGwdwVL+WDdBoNB2E3WbDaDrqJHQPP/eV6rtv+sYChdqBALEPLxSuXIwcEBvP766zAej2EymcCzZ89gMBhAs9lc0heWrPDa3Vm2fM+blJ9Ujia7tHrfNl9Wooe2F22XVqsVTgNoNBrQbreX5HfRMZcSjJL6kn+DvFfkDveU/ul2u5BlGXzjG9+AN998E/71v/7XMJlM4P/9v/93bXck5ok7KVE/UlueTwBIR74jfZi3tQOETrRg/kgL+gYox2M+jZY/HqueZRn88R//MTSbTfjVX/1V2NnZgd/7vd+DTz/9FP70T/807KLVdnZxOenVG5Q/AZYnR4uOM/zWuusW6aUTOPRbTefyOvIFTDE7UpIplp6p1+vhH5VveESrpzytHS0d8DnWjyzLgq0wmUzg/Pwcer0e/NIv/RK88cYb8Gu/9mvQ7XYhz3M4PDyE9957L1ybgf3WarWg0WgEvka+shbmabwXi+lRG5GfXMHTSj5QqrzS8sXFklgf75hIjedjmTQfLh8mk4kax2s0GtBoNK5dDYBHwuOR8VTG4glP2hHUWnvje/zt9c+1vCRw3Wi1KdVhnJYqZM4q7LJV23q3yY5MBad9XXpDizFQXtR8Kk+eElbFB1Ib3gaeiE7Gak5HKlKYyJO/1fFa46YGjb3QgjtF86sKGh23gfFSkGLUat9z58vTBrEgXgoNqWVr33jKXlf/SkLZSicZnjGHUfrbG6SKvZeCE2V5zYM8z6HRaMDDhw/DDhUegH38+DH0ej1oNBpLwYcU3rOCNWXqwxWwR6bwb7T0Fp2xPi8SmLfSacFFjb4YuLMg6QvPmFqFDOdjtNPpQKPRgFartSQ7eVtTWqx+kPox1m8Sb/F2SWmHmMFIx7/kOEp1p9+hs4N/cwfIwytVGLA8PR1zWkBWkn24YwVXgmM6Hki2jgHHtO12G1qtFrRaLQCApZ2smmNryQx8hpNz6Dhb8pvzk+bEpox3yzHX+Jt/gxPbfLI+1d4oKtNXba9aPEt3Ms5mM+j1etBsNqHRaFyb5MEJf3oMdgqtXttA4jVeDtKCvIf95ykHgWMKg7uSncTL1ejV3kl5YPCKBp+8somXSWUcDQ7y8vBbbcxpdUkJ3qG8oX1TRk9qct4jMzQ7R9P5Gi976af9QfU22o+WrE3JX3pO28XSpxSW/RfzJ3geN+HTeuxXqnMXi0UI/pbtiyJ0UZqs51af4ftYHlq+FIvFAsbjMfR6PXj69CksFgt46623oNfrhcWe/AhymqfEJ5TPYzyh0aXZllJ6fvx8ar8ijaPRCKbTKTx79ixM9g0Gg6Wj5bWAPi8rRV6m+uNF4OG3mH7zPOf0W3nG7E6+IBcn+1N9jdgzza6rQmdZ+aToUy9NVdHvwSr5lNovVJdubm7Cq6++Cp1OB7Isg0ePHsHTp0+Xvrf8e0mWUFjvYzZ/Ub7U6JXS8rJoffliFYlG6W8JqbYsXUCEfiYuasOTmLR+4PWQypRsM0vGpNCfIt+q8sdifo2G1PJT7D3+jYef123v3VYUiWFY8PCv9E6zyWJlefJeNW4LL0UnY28LoRJSVpx4lFaKEIzlxY+WWKUDxmHV9Tb3pwSPIRND7NiMKgOPZXGbaNFQhIe8Ar1o/ho8q/XKItUgXiwWsL29DX/wB38Am5ubIQ8anP2v//W/wvvvvw/b29thwpauauRGlcf5w7xjtEn5S4sZtKOTNVBHN2WCqgrEArMpDkMVKMPrVctwqW0ePHgA9+7dg5OTk6Xd2LgogK9sz7IXx+/RCRatvBikXWraSlmKWBBGckDwb9xhxQNF0l2v9BSOLMvCnVc0OI2LKKydDRrdHkdJchitvDWe4+Mb37/xxhuwu7sLP/rRj0JwkOZFxzE6wBSTyQSePHkCzWYTWq0W3L17F9566y14+vQpnJ2dqTtAKR1W0A4DZkgLtrsWzKB9YPFPkfHPy8X24HzMj8ZaLBbQ6XSg0+nAeDxeOnKZ96+0c3GVjruWf5X5np+fB3pHoxE8evQI9vf34d69eyENHj8r8Snve2+5Eo/EgibU4cS7w5CnWq0W5Hke7n312gS4e5Ee841lSvIGn2NbYCAq1ud059N8PofDw8Owg4zylpQPtjkda5gOd4TgHcDSorHPClLGAuUVL19yOe3JnwInDXDRy+bmJmRZFoLGfBED/S7FhvPQhmnxH/IO3fmLaXlQONVPv60+LR1TtA1wx/9tAZWfmg4FSG9njafoQqyjoyP4oz/6I/jiF78I/+pf/Sv4y7/8S/jrv/5raLfbUK/Xw+Qkp4PqVlzMgju/ubzWeA2/5fEFKlux33CnFKUB7d0sy4LeTvUDcYcsAMD3vvc9yLIs8Eer1Qq6T4IWF/HES6x2KgNN3km6jD6X6I/5a5xvpeNcud7EZ5Zcpvdh4re7u7vXTlaqSsd9FnVlKqpsTw9o/y8Wi2DPURlC+anZbMIv/dIvhXH/V3/1V/Dtb397ic+kq1KkKygkecO/wXeeevA88bcmE6x8pLRabATlHS6wjeVb5YQitluz2Qzjstlswuuvvx5ORXn69Cm899574Tv0x3k/oQ7gchB5gPq5Wj1S4xFVoEiMRZLz3K/8XB693CgTe0v1p6vEunXAbUPld8bGFEBRBcGfWUamF2UcDs6smnHHHQAPo5dlyNvqnEqw+IH+XtVATckzJViyalqqghaclNJwlGkPOl40g9KTB8W6hLknGETpQCNwMpksOYJ0Vyym+eijj+DJkydwcXER8paO1OJjw1N3qb+8gcIyATBtHHsmFqR0Rcrn7SP9LQVrUoOUZcfCTQEdjv39fbh//z7s7+/D9vY25PnVkV1HR0fi8UaUN/BIL3R2UgMslBYpfy0vb9un9BEG4SSaPY6OxNveY5fwmVUOT6Plb9lQFBjcxKAm7oymAXzP8VaSvcNlPZYjTeBKdZX0g9S+ll3FearouI7xLw8OSn1LsVgsoNFowNbWVjjm7Pz8HObzufvuJQqPjOeTJR49mqozJLro8X64e5Hme3l5Cd/5zndga2sLtre34dmzZ9BsNmE+n8N4PFaD4vSf1taaDqX949U/NIiHu7im02lYhCJNbPIgDwbvpIlUr2/A6fbUA3ny5OQEZrOZOkFH8+MLp2j+sV1Dmu7W+EuThVZ6TlOv14ONjQ0YjUaFjuTzBKZSZIhEK5fhmJ91h7ZFJ/7O86sFAefn52GHOW0DKpe0+mgyl9IsyXg+lqgc5BNqXt9BCip7/UKvbWvRUYUvTttmPp/DcDi8tviiSL4SUm1lr+1Zxr6l31E7BYPoFxcX8OTJE/je974Hp6enS6dn1Go1aDQasLe3BwAAg8EAZrNZmKCkuxixTa2+jMkeTiuvM7dlUKZyPWS1FW9zTMd3eXltGf5c0/cWJHslRS9Z+Wp0UX1olVWEpz32Ck/Dd8TSo/vH4/G1ndcSyo4T6duiMsKTD+8bjf6y9t9tA6+DdKrOYDCAk5MT+P73vw97e3vw+uuvw9bWFty9exe+8pWvwL/8l/8SfvjDH8L3vvc9AEhroxTfTkvHZZEFiW9j/olHNwO8mJTVjvSN0eTR55R+Wg49op7aobjI9dVXXw2xtbOzMxgOh2GsS/Rpvzldlo6I1Zum8eiLKsB5hbc594W0PDB9kfKtb2mfAFyfIP4c1cBr72FaDkuHVIEU2yWm37Qx6yn3JlD5ZOw6oAkNblCsEh6nUHJaAeTA0E8zNKVctj+tgZ2a56oVQ0pw5zZhVQJO4gmPwVPUsCkTGJFAy8eVepPJRAwO5nke7oV977334C//8i+XaJKUDB0bUp29ddG+1cZiLC9qYKa0p5S+ivHA+SeWZ5H7PcogxThaJXBy4N69e/Abv/Eb4XmtVoNOpwMff/xxWD2MoAZ0ll0tLmg0GmHRAUcVPEHf0TSpAYxYEBeDMlmWLa2I177H8qiDi/9igTVt7KU4dB5o8oG24Ww2g263C9vb2+EeJQS9Y4d/j7CcKNzZ77lzKwW07fG314gv4gzz9LQPKC2xfLE9Wq0W3LlzByaTCUwmE7i4uID5fG7eHWtBsju1QCj+rQWIqwTyFy7Y4Lrw6OgI/uzP/iz8xh3DuHNU2h0KcL2tpf6lwZdYIJXTLPUvwFX/4c5euotG2smFdNJ8cRdtKqTAGuV5Hlih7zCg/PjxY8iyqx39Eq20DJ4XzbNer4fdJDwfbLcUp17zmbQ2kO79Oz4+hsViEcZPir+l0ayNl5RggQbtONIiPhAuEHj27BlsbW1Bp9O5diqDdqcjl4Wa/uL8YO3YxyO8qcz3tIvVtik7eW8SUh2m0ylcXFwE/rxJ3JTtiXyAd66en5/D+fk5vPfee9But6Hb7cJgMIDpdBp2eH/5y18GAIDHjx/DxcUFPH36NNib9I57D29ofgaXO5JOpGOBHpkv7YDzAstttVpRe5fTmBpL4vKby5gqguCa/vPQVaZsrR95GZrPW6/Xw6Iq5K3pdBoWUGTZi7tFUycmboOPVwa8vquQvzF9uirQsU7HEy6KfPz4MXS7Xfjd3/1d+MIXvhAWLP/mb/4m/Mf/+B/DZCyC2qdV39FJ4R37lo9Zhi7Mg9q+VfC5ZIPic1oXtD/RhsXJ2DzPYTqdQrfbDYt4AAB+8IMfwPn5OWxubi75A/y6Ds2WuSn+pDRQpNDCbbn/H3v/9iNZctyH43G67tXV15nZneHu7HJXK1K8mKQl0aApQ/rKgB/kBxuCYL/4n/Af4n/Aj4YBww+GHwwLgmXJpixLMCVZEmmullzu7IWzs3PtW1XX/fZ76F/kREVHREaec6q6Z3c+wGC6zsmTGZkZGbe8aXYdL2tT9ZUWZks26kvo8PKIx+6T5P06ddi6xtZVjtlUrH0ydtNGiCd4ZQUHPIY8DwZphhkXJpJz/aIwSh7QwC0NvGGgm6aT/qa/uRL2oKiREQsE0bR58s9DixUkkuiLlZnSRp5xpH1jpbXqyL9LyQefWe2d6kxpwVzJgEFDUQu6YCCx1WoFQ7LZbEKn0wlpptNpWHmIu6WovLEChzFFpAUaJNkmrRyl/YXfeFYcxoJs0k6cPEFPi185rVq/eiE5DpRuL/3r1gdS/hJ/jkajsBstdkdjrVaDarUaeJg7ovxowjy6j6bld7GmgvYN73tufEo8FOMV5GEaoEsNSFnf5TGmrfJonvQetJ2dHdjd3YUHDx7AcrmEs7OzaB0QOJbPzs7g6OgIHj58CL1eL7yjjnMeSOMN/7cCilJ/SjaH1sax9qR0SXyllQnwvF3q9boqAy2+oOXHAo8SOO1lQHPst7e3oVqtwuHhISyXS3j27BlMJhMYDoeX0kv9mWqDaRNBnAe5LcoXDnCZEAvkaOXwv8uwzzAfynvaGKMT/ZbdhLJM4y1cxCPV0WMvcrtD2hkqyWLpSEpaN20xRBF5qvkpsT6K2aNU7kqQ9EIMWlsjP8f8CC67NH9X4y+uA/G3ZGtwGafZfZbuLeqTSfkUzYtjnYF5LyydK9loFGXTjPyMO5uWy8uTiziR/9FHH0Gn04F33nkHHj16BI8ePQq7ZnFRk7Yz1uInCskP1fweTIML9rTFh3mBdeJj3jv2NFCdgHXj9j21NYr0uVZ/j+zkMs/S/7SNrPbQ8qJ8X6lUoNFoBL329ttvw8HBQZiY/clPfgKTyST44an3xGu0bQIevqDQeEJacIrp6GIITV9YtHDfbNOgY6LX6wUfuF6vw9/8zd/AkydPYHd3F27cuAFf+tKX4O7du/CP/tE/CnLr3XffhbOzM2g2myvjTLumRqprzG5KteW1fLCtrR2yluyT0uTRw5JfY/EHp5eOXRyrAAC7u7vwyiuvhPwePHgAT58+hclkEnRHlmWXFotp5a6LH2PjEv/nbZRCkza+rTGpydUUO9Sih4OW5TlV6osMzRdBaDYPf6/lSdPxceahx1Mm1y+abtbotfJPHa+etGX6AhIKTcbGDCkrbZ5BlvqNJxiQmkfMcbbK8XwrlXndBJJl/PJgg3SEmbQ7ULqTUiq3KDyDOw+veseCxyBNLcMLSYCnCDCuhD3CKbXtNGMvr/zwOgBFFb/0baVSgWazqb5HowMNd4CLXbR4Z9ByuYTz8/MwIQawuvPO69RKillrF834wv9jbUS/5w5BzABIGReePsX/efncCLXuy7MMBE6H93sJKbq0TFDnhmI8HofJsxifYQCDtrlV79h4j5VJJ2MtXWTlqcEzFmL0owNOHbxYm/D33Pnizz0GspQ+Vm96VFun04HDw0PY3d2F6XQKvV7PdFhpGbgDr9vtQrvdhidPnsD5+Xl4RxeV5IXXUfDkw2HJxhTaUuqIu8jwaF489pYGwiQaNdrx7xQapONEy5RB2Cbb29vQbrfhrbfegsViAdPpFM7Pz1cmYzXZytvEskWl77mNKuk6yQbn3wHApWCs9L0VrJL0MUcRp1KzE/hOLk3uaLYRvqOBRpQdefkFdZE0acXb07IJccLPu8vLI0PzfJvSb9wmoXl421OytyTejh2FzGUX5X3Nf40FcqT6SO8sWawdl11Uj1jwtL9XR6BdEJNb64AmdzgkO2SdNGXZ85NHpLZGO+L+/fvwyiuvwG/+5m8GvwkXL00mk2CzUNlF6efP8Z0mfyWdQd8ByHEMrUzepjG7BeuDaSwfRAMtQ5ID2I5WPdftf2iQ6ivxIrdvYz5HrB23trag0WjAaDSC6XQKd+/ehXfeeQe2t7eh3+/DT3/603BkMU6YUzq0fPNiXe1vtadUPpdZ+DetP/9e0wkxurx2SUq+sTJ5HnjCRL/fD5N3P/nJT+D4+Bhef/11mEwmcOfOHbh9+zZ897vfBYALefDxxx/D8fFxOBoXAFbuH46Vaz3X2tgbg9DK0eSD17bRdFmKbyal8T6jdt/e3l7YvX779m145513gp3653/+5wAA4QQSjE3TBcieutLnRevogTW2UnQDl5VS2hSbRPNLpfw99oTEU5oN+0WEpo8tHtD8Py1/DTGb0dIlMb/Wqzfz+MFl2tgeO7+IzbS2nbHrMCI8QmQT8DC3dr+e9OxFEzBWW1MjBMB37KenLzfVRuss56ocGw4u/Mqqc4qBHAsEWWmkPLzGkKeueRxf7VuOarUKX/va12B/fx+ePn0K8/kcDg4OQhloGI7HY5jNZiHQgKv4Usriq7ox8CEFGrQdrV7E+k3Kl9/9x6G1u7c/LCeFG3gpRrWnXEmmpfLeuuUF3cmKGI1GcHx8HO7k+vjjj+H09BRGo1EIgPF6YGAfeZbfg2i1fQzL5TLcrYyBTPzfug8wjxEWM/ql4BbekyvxENJqQeMLLaiIf2vGtpSHVQ4F9u94PIbxeAyDwQAmkwlsb2/DdDqFJ0+ehHScJikvAAjf/cVf/AVMJpPAIxJijgMfzzRARB03+k5rF40nY85Ayjj23qGEvPz06VPo9/tR21EKUFH6Y/ZpzHnmgbeysFw+PxJsZ2cHbt26Bf/gH/wDmM1m8OzZM1gsFnB6ehpWrQNAmJCW6NfGq6V/pLrjO+v0By0/Pha0smPjXKLHCmogvZQGL2j+1FbXAiYazy6Xy3CENK1jzOHX6iwFimiemk6l6fIckUnTefqI027l6dU/y+Xzuyfz3HNLgX0yGAygUqnAZDIJ40nrW6398Tm/F5PLCEkWUeDuR2uCnMpuBLU3PPfpXhcfC0Ftbm28luWDSeOK6wLLZ4qN3U1gMpkEmV+pVIK+WC4vjnW/f/8+tFot+L3f+z24d+8evP/+++FUlvF4fGk3Nn4LcPkI49iYjwURY8AxTe81BNAnZ+iiFgAIu349MRSuhySdGdNlnwdofarZEPQ9XqFAdSJeq/Hmm2/C1tYWfP/734eHDx/Ce++9B8vlMqmPvLRyujYl07SyuGxHvgbQbUnLxqbg48zymzfVFpYc7Ha78L/+1/+C119/HXq9Hjx8+BCOjo4AAMICSim/2D3QFKl3r2p1QHA9jf9Lf1vg+RQ50rwsnTcYDGA8HkOr1YLhcAjvvfcetFot2NvbC5saEHfu3IGvfOUrAHDhVzx8+HBF5tIYgxcaT143OwTBfSav/Vo0FhcDyll+giYvax1+6YuCFFuOPo/J4RgPxKD5h2WA1rMsmVEG1jHu135McUrHe/PTgt08XRlClYMzhlSO9MwKrr6I0OinjgcaIR4FEHMSX3RYPEsVHg8IrqvuknGWEriKOTeesjk4b9AAkdRWUp6x9oopp5hiSQ3McYO3UqnAq6++Cru7uzAYDKDVaoX3dNU8TsRaxon2THrPj0zlAT/tWBBPe/J0KTxLx4XGV97219LEgn88jYeXLMPAa7iWrRtTId1zhTvUsH4nJyfw9OnTkF4D5VlpHNO/Y7KGO3yoUzDoMZ1Ow99S0I3rEq+jyWn1gAf+eD01ftacZYmmssDp5O2FdIzHY5hOpzAajcKRbLgYhAbjPZjP53B+fg6np6fhW5zAthCTdVL7Ib/QNJIDE+tr673Ga9pY1uwd+hyd0H6/D6enp9BqtUIA36LJE9yy0lnPrGNg8wLtm+XyIojZbrfhtddeC7uw+/1+KLter4cj+q3yrbFP7Qft27x6i9aJf6sFNDldVj7cLovlaUEqz2PvaTYefY5BFC4XUmwV3k/L5epxpTE6efuk2gs8XUpfWnlptqqWll7TwGlI4U0MCo9GIwC4mNShkzVcB2nyQeMRzZex5GaWZSvBTq1N+EkSlJaY7a/9tuDhcc+3VltZKOrr0Tah7RXzIzUdoekrKa2WF3+eUi+06/AYdcoP8/kcjo6O4LXXXoNvfOMb0O124b333gtXwaDtqdVbexfj29R+4X2CvE/rqNUdQe/Q48fkW0j1S2I+TizNplAGDZY8Xi4v76xGn2Y6ncL+/j60Wi146623oFKpwPvvvx98E8n288p86fdVwqKJymFeR02exMaW9ZuXa+Ufq48nLaVV0o3L5RKGwyF8+OGHMBwOYXd3F7rdLpydnQV7ne4Upm1k2XFe+r1pvH5NEXuX65i8eRWhBeD5NV6NRgOm0yk8ffoU2u02VKtVGA6HMJ1Ogy7Z39+H27dvh3588OBBmIzF05ryyHuJfou3yx7nee0dyzeleXsWweWlR6KFjiOaH+pRj+/yRYDH5tTSpPqO3vSWrE4pj+ZH/887dlJ93atAocnYVMFVtMJXOQCzLBOD10VwHRigLOBuBh5opTwyn8+DwyQB25Z+n3fVYQxFhUae8iyFbDnBqXTFxiXyMuZNnRDrm5jT7aE31Zm0FG9epb8p4MQRTm7g3SMU5+fn8P7778OzZ8/g008/DfeN9Hq9lWMqJfrLkL1lyzRv2dTgajabKytttSN9LLkhOWf0mRS0kuhLaYs87cads6I0FAG2Mx7bA3DBjw8ePFgJcAEANBqNECDiTthsNgt362C/arIVg800UKUB0+IxyBj4ODk5WQnYad9aoEEF+kzrHw58R+uC453mz78pQ/5wvuELK2J0cxpo8J8GDT/66CN48uTJJb3tCdjSdHj0Lj/WzaqXlSfPn9LtNbppn3nkikaz1zGUxjc9BeHk5AQmk0koM2bzaPKC86X2ngNtAl6udDRoXrmHRwBubW3B/fv34fT0FP7ZP/tnsLOzA9/61rfg3r178OGHHwanG3lFOs1Byl/qK6SXB31ofjwIJ6XX6p3ipGp9K41JzfmM0cD7WhtnqbtpOegpCTzwqCEWsEX+wzaSdrh5bFsEjgF6DKpHz3rldNk6G/NrNpuwXC5hNBrlslXwdCJvv2j3uGpjStPtUjmLxSLYEACrk0w8AEfL5X/T/IsGZspECg2cD5fLJTSbTajVajAajQrviPaMfc1OzrIsLKzw6vcyQO1B5A0qJ5G2RqMB8/kcfvKTn8BsNoNvfvObIY/pdBoW6FE5XeTeOa4fvLKNjxeU9Zy2GKgc1Oij5abYgDyfq/A91g3ND+TgMgZtVLxi6KOPPoKTkxP49V//dTg4OIDvf//78Eu/9EsAAPDpp5/CT37yE6jVatBqtVZ4MA+daI9eR1BdItkOKYv3JJ0m2Vxafl6bO296pBG/w4WoJycnAABh0u/DDz8Md1V/9atfhdu3b4fy+v0+VCoV6HQ6UK1Wod1uh3zx9CiEdUWbFv+U+sAj5zRb02Nn5uFNru+1k0tSZRAfN3h0eKPRCM8fPHgAZ2dn8M4778Bbb70Fv/IrvwJf/vKX4ejoCI6OjuC9995bsU2Q3phfyOnwtN11BNYR6yzpSy2OURZwoTfm+/rrr0O9Xoef/vSnK1fWIC0om/kcwUv4cZ3sZ44XZeysA67JWMshjMFSrCkGo/ebshhMKkcLnkvPUoPEmxgYeYySWH4IDHrwyR1vcIj/Tf9flzKI9WfZsMrzBuPKpkMrX/qG05Ri1Fn5p9QxFmSwsO4+1oLi9Fiq5XIZggc4QdHv9+Hk5AQePXoUAiLcGCx77Eo0YznWc/6d5ehq0Ay8PDI1FjiNOeLr5AlP0FhLswmjBOtPHUO8G7Rer0O1Wg0LNVC2S3IL7zTW2pM62zHH2gqQ82CmV8dKvGzRKn3Hn0sy0FM/jcbUAAYNFnjHkpaXRv9gMAi8QSfYpcA5z5uXj/yRZxJI0zveSRNvuhQaKGIy0JJhGATHIxa1caLlh785r0o0eYMc65KLOIar1SqcnZ0BAITFC3t7e9DpdFbSa2POyt9Dg7dutA2tQLpnzMf0t8QjKfXN01+WrLXaibaHZKOUZYul+pll2PNl0u8th7ZblmWl3KfN/SgrnRYQ1fg4BcvlcmWCgk62Udsjj4z22n78G2/eKflq31v+PrZv0YURKeVqoDJf0x/4LrWvPDEbzq9c1+Ou6l6vB71eD87Pz2E6nQb9qdl8Un5WbCEGy7aUbDKuS3m7Su0s2ZYpvO4d+7E6rdM3SsU6Yj4IyhNUXlUqFRgMBgAAcHR0BLu7u9DpdODg4ABu374NvV4P5vN52ISAvnsM62zvmL9cRjmazW+VwfnXK1c020rzGz1jxKMTOa1ZloXF8ZPJBEajEfR6vZCm1+vB7u5u4B2+GJIveEL6i/S9Zb95/T9LFnr6NUaTZjdrPjT+9tryCLroZT6fw2g0gvF4DKenp3BwcAC3bt2Cra0taDab0G63YTwew+7uLiyXyzDGsVy++FOLH/BnUlqtTaRvU9rAw8uePDSfXOsb7ZlGi4df8B8u1m02m9BsNlfyoBs0LNu0LD2xzjzLRgqNmq3Pn/H8tXy8ZVjpaNpU2RyDN9888MpYL0o9pvg6M23MMCmLdskYkxTSVRi66+wffi+KtrKIBvTpqikODEpIdzCkwjPAJZQR/NO+SREqeZxGWhaCt7fkxHohBeFouR7B7g2e8fHjaQ++KGCT421rayvcJYOrZRHz+Rw+/vhjODg4gK9//ethVRii2+1Ct9uFLMtW3lnGYV4aMV9ahgSpbM0A0IIC2GeSfMRn9O65VOQd4/R9EefIci5eFGRZBoPBIBxviM/o8T3SHY78OFHa37EgmQe4oIHvqMkbSOPfag6jBJ6O74wFeC57ygqyWG3IgxNauR7ZgTuc6XeLxQK63e5K+1t1wvLpBD/dHVVUduUZp7R/uCMn6Qgt0IP/e44NTJEFw+EwjDl63JmnraQgFg0o8vbi9Fn5oqNOeTsPaHviCSq4CxLvbaIOON53yccr0sB3QZelF/m4ovlqK+b52NfqT9PSRSUxp1azYSy+84wN2r88HZ5uw4/9lGTMS/hgHTmKwSbsj+3t7bBILyXwhXnhe08f4ZHgfLdOCrAcrh/wH+qD5XIJrVYrTDbTkyToKRdaoNMqO5YuT31S/DML3C7Ab2j+uGATba0y4a2HtLtS0oNl2rcoD6nO42Xy9nj06BH80R/9EXS7XWg0GjAcDoN9IsUTcCKXnsqB6VAWSydApNSBjgGutyT5iqfOSGOO08DtO5qGxlLob06f9k6yha87ygqQ03ahdhTuvkKMx2P4d//u38Hh4SH83u/9HjSbTXjttdfg+PgYACCc/FJmrOq6+pDUjqNy3XNXu8f3k+xUSR+kjs/Uca3pzyzLoNlshtOCED/72c/g3r17sFgswulnkm0F8Nyf5bKe2wbWIh3+LmbrYZ4aqM9uwZPGQgrdtExP+uXy4jSR4XAIT548Cc9HoxE8evQIAC749u7du7C9vQ2/8zu/A48ePYI//MM/hNlsBqPRCFqtFjSbTRgOhy6bXvqbt3Oq78W/yWvjeHm96IkcKaDxJICL+kwmk7D7/P79+1Cr1eArX/lKGEeDwQAePnwY6t7r9WAwGIincK6D3usMjw9J09LnRf36q0JRGcRxFbpW6jdxMlYLViE8ys0T5Offx4QaTZ/HIJOEYiwPzXnC762gsJS3t102gTxt6KWZtwtdNUjbVHK86PM8wrAsAWopwZjC5e9ivJxCSywfq1+LtI0ngJv6DdIUcwitwCsPSHtkEk2nfVvG+JTqNRgMoFKpwLNnz8IChtPTUxiNRmHy1lqokDdIJDn01n0Q3OFP5SmJTnTi+KIMrRyPk0F/e2WaxAtWG8TyTNF30riPBUzWIdMQtC/4sUhoJFNaJPC6WO3GZbtUP0mv0omQlPbIM45Tv9F4V+IL6VnMVtBAA3XS90X4Blejpi7akewiLqPLgqaHraAkpQefp7SVtx4xu5C+p8eyajR7YNmjvMwUmV+k7zTdvVxeTEINh0N4+PAhHB0dhXeak2i1R1F+57Yo1Zcep9fjv/C8vXSl6EF8xvW95sPQcvCZNGlITz/AI+HwXi7t7mxPnZbL5coCNvovVn+eD32eqiOksWeVLcnuGH9KZXH66ZUNvByP/sX+k9og7zjmNOA1ARKQT6QFJZS2lHK1d962j+Wbx2aUvkvRc8vlEqrVKjQaDdjb2ws7erxHJPLy88pnj2yReKksXS75rzxvtEG2trZgOp3Cs2fPViYzedxA0l8eP9PzjoL2tzbW6FgoIpMkmyUv3VaZ2rOyfJBUFBnnecuhNux8Pofj42MYj8dw7969cIIHHqOJ3+CpH3kXuVv+UFGk5untc86P3vFVFmLtHJOPHruOfotjmB6pjvqOTipJMhyvD8CFT96FjpoMiNHphRWP4OnyyJyyfT6eL7Yh9R3oRPlwOAxjdWtrC/r9fnQRDC7gieniFNtQA5c5nrRS3pbvayHPmE3Ro55xh/2HC0B3d3fD0d7VahWePn0a8qnVamGjSt6Y0IsKafznGZNFYzGa/cxtlBidqeWUAc2eWJeckiD1z6XJWOrAWytzvKspigZwrPeaARyjxwqSSJBW86Q4TPS764TUoBBCE67UqKBpUDlKA5gOXM+q4DIEbh4hkaJUaZ6e8+21vNc1dvKA3xMpIYXeokEiLkwtQ0Z7l2qIa3lL/CTde4oTkWdnZ3B2dga/+MUvLtG4tbWlBrk8xrJFJ+ZP06Ecx0lhuoNDarfUgALVE7VaDdrtNtTr9ZW7c3u93qVjSJDmGLicQSdHa0P+jWY4WOBpy1pdlqqXioC2AQbBMYiAQUKpDVPGqTctl5tcl+BzPMq1qB71fm8Z+dozKZiD72LOFm0vr2zitNKyPflQYIBhPp/DfD6Hfr8PAM+DCFL5+D8/frLsFZcxh4MGRb3gx2diPhL9ZQQDJZ1H78mMpaf0WZNfmu1uBcsw6KjRTQMdGixew/wlek9PT+E//+f/HO7Z0qDdb87HlkdH8XbAAAzA6l1KNH3s/j7+WxqjHt6h+VkLlaSyOb18lz4Hva8R0+AkB12Ig5Ol0+kURqMR7O/vw6uvvgqffvopDAYDqNfrl8rx6u/FYgHVahV2d3fDs263C+fn52H1u5QvHT90skPaoYmwgkPSuOK2CJezNA3PT8rfAqdfusMZ87J8VdxxynV4ql1F60zjAnSXId2ljmmq1eqlRV34Hu/BbbfbIT/kAYtPLT5fVxCuSHDTI38WiwVsb2/DjRs34ObNm5BlGfzoRz8KweLUcq2FlUXbiNs2ZYHylTU2kW9wB+KDBw/Ce+pjWz6SVobk46TWwSobbVce70gdh/ib5pFySocETgcf6zyfMseaN791xHw8WC6fnwQ0Ho+h1+vBf/yP/xG2t7fhzTffDHeIIprNJjQaDTg/Pxf9fw9d6xhjUjll5cVjW0XojsU3pPRlyLU8wCNva7VaOFmC7q7HyT+kEU+82N3dhZOTk5UjjtGvpbB0Ird1eX08dgbmQ/PUyvK0BcBl34CW4/EfNDpjoL4L0qtdm7RYLOD+/fsh77OzM5GmRqMB9Xpdnbi1ximtL5WnWvqrhmXH0ud5aedxDVy8ifF+yaa8c+cOHBwcAMDFSRj37t0L+W1vb0O73Ybj4+NwolSWZZdOGbyOba0hJsu08aml5enX3RYxHrpOuK40XpqM1YwDgMvK0upgr0JITet5Tt9JznNZBkMqTan5boJpyjBm6H2C1LnmzjwPosScbwwKl0EzF3aSYyYF9bx5SzRKAR3N+fHkmRfU2aVlegJEGk1asMrzLUILNErOsrXSX8s/ZaxafOiRM/wbWjbd6cAdGeRz7qin1EOix+IrPja14E3MibdolL7HgG673YZWqwXdbjfsrOHjPA//4y4DlBspckIyoDnKkscp7bopoEzmzgNC2s2SMubzGIWoW6hctoKyvCwrDU+n5ZsqIyT5roHKPU2OWPRa38RosMY35QVebh4U+Z7LRE/bWrwQ4w2PzvDysNZ+0nOqoyX9x2mgaaX6cgeYv5fAjzaOpefwpMWjsJGuDz74AAAgHDXJ8/HyYB56PflReUgdXN62Hv7hsjWFlyS6pDyk8YKTstL3+Izy0s2bN6HZbIbdZ9I3eDQjPyZMmxzw9iMuCOETqin6Q7LpUZd47/TD7+bzObRaLajX6+GeSst3sWS2RBNNg33Fj4rHNFmWrQQdad/nvXcUZT1dFEJlCv2/Wq3C9vZ2qH+/34fJZLKiozm9ND+L3+nYouXyNtO+5YuBPPX26PwY3angehvlYb1eDzs+cHddkTIoPHaOlY9mf5VtD0s+My2LvudHveexLyV5bvlz0njVxrdWL85PnjaUbMoyeVLLyyPLipa7CXhtBwqUxQg8Sns6nYZrWXCM4gIl66hofK7RksK/Hr0TK8+LmA1bRvlSGXiVBV2Ugsf7arrXooXmX8Sv4TJwPp+H08yk0yJoHAInbKvVKjSbTTHuodWD8lZMnnt0m+YnemSppaOtOljfSt+l9o9kfwBcHFN8dHQkLhYYDoeX2oBP7EqIyd8Um7UMOc5tSi2NVLbmK9JvYvXR/Gw+1jT7AWN2dHEf8ny73Ya7d++GI6gxn263eyn/PHbAdUAeHUWRoqs9dq+VLkZHTMfFvvcgr017nZF8Z6w2mPI0YoxhNmWsWUCjrCyjhv5OyfO6tAfAqiKqVCrQarXCcwQ9llhy4qQdENzIwaAdzzsvzdIzrlTzrO4rInyke3ryIGY48Pt88+5csgQ5dzjz5K19FzOgpb7UvsvjLKWCBslwZxkPVLZarUu7xmO8lyozpGfe/i97zKGs2Nvbg/39fTg6OoKjo6OQFnfXpOgSmrbZbMLu7i50u92wq48jZkBzw7wsWHy7DsckBTzAJb33OCg0fUrQTqofHTcA5e0+tmjKE3yK8ZOHDm/fxvggjw2mvee8kOpQlhkstEAnECW+S7E3pb/xt5cXioxTrsO00yi0HaIaTTx/aSU76gR69BpvvzL6czwehyPEFosF/OAHPwAAWDlWzII2RqUgktX3qXXx2CaxclGG0iPukGfLCCJIARHU91gGrkbH++2w3bIsC/dWfuUrX4HXXnsN/viP/xgGg0FYcU7HFx5TzO/v9dImPVsul+EOU6/8oW2O+fEdgpgv5unZ6ZBlWdhh+sorr8DNmzfho48+guFwGOwUDNDTPrT0ntZGOB4x8Iy2i8TrGKDGeuKYrdVqsFzKJ7JIQFro5DfWWdul02g04NVXX4VWqwXtdhs++OADePToUdiBi7vIaN7oB0rj1KLLCvhJspqe6lDGGFpHsIfzSJZlMBwOA893Oh1oNpswmUxCgL9sHZpHzlB9ZKXJY+dptHB5jvcMUxlBd9NYdFO5pfmo0k4qKk802R5rT+zvvHYB58OYn2jRo9GhjavrEm+6ClC5DvD8uhaJ38bjMYzH47CQIuWKhZQ+0fK4Cki+ch6ZogF3neJd6gAQJsJRD6aUqbVnKp9TXxjg+WIaakdRuYHvAC54aDKZQLVahZ2dHeh2u2b8T5JHWptLvo63bWI2i+ZTxWinf+OYwDikZ7FRURmENl+324Vut6ve0U0xm82CL8JtZwne+A2mXSeK+p55ZU2efuL8iosapHz29vbgu9/9LhwdHYUTMZbLJTx9+nRlh7lURooe/KIhRV4XjTsV9b83gU3FrDSIO2O5UqHvJMGSJwiYx3lPyZ/Dcu5oGs2Bloz5mPCyyiwj+LJJaHVdLpeiEE0xBGiAUILkIKfSCwBigBHzxX8eQR0Lynnp8gYcPLSsI3jgpUkqm8sJK42VliL16EUtL6utyjKckI8kx4xfPC+V55EdPJ3HOcEJLtzNAADhriou9/M4hPRbpKdSqcD29jY0Go2VtI1GA7a3t0MZPECs5U1/Y1tWq1XxmBKvkyIFU7V65UVe+UV3NVHHJk++mHfKN2Uarp5+RSD/YECXBkgs54i+swKIHuOrTLmq5eXhOylQ5u1HK/9YHpK+ssYCDxCUjZj+tHQB3e1r9aXW5rE09B1t1xQe49ACITE6rDIlvUttMMnGzbvzTisbQY9GR1o8PKnpCMxDQ2wsxGC1M9czfLxzucR3lXpo5OktvrR0HQXqTy1QhRO4tI/G4zGcnJyEnbNUNkt1suqD45IeQ093mWj8QOsoyRzpHW8Tq58o79MrVNB20torRb/SdNgOsQlVK+/ZbAadTgcODg7g9PR05ahnPrknyUd+ByetC/Ir3nHabreh2Wxe2nXtOXadLkygfUT1u1cn0n6iwfsUxGwKms6CZMfT9qO8WKlUYDKZhKMTW61W+C1d25EXXF7mtXnKtH+8kPgV5UNKjIHnZaWlfhD6cFIeXNZoKNJ/XlnC9Sd9hs/XRePnFZodO51O4dGjR+GITL64Km9ZMb87L3h+efKX5LPGa9J3see87Xg5kr61bCBLd1g60Eu/lo7SqNnTSAM/AYSmlWwViV7JL6RpU+W35F9b+lb63iqr7EXVMVDbAk9wlGwE1Meoo2m8IcYjRfUaz4vb0VIazR5OpU/zFyQ/U3pH+1uKC1iyZzabhTFAfYzhcAg//vGPYXd3F+7cuRP4rN/vX1rYR+nA/GgcUFpc+EXQdV6bx2NnW88s/9Lyf8tEmfnm1eFl0LAyGYuDnAbqEZKxR5/nJU4KbpTdaRK9WhlcGfJ3MUHJyysLKW2yTsbnwNXjqfTx+9rKNkAlUONHUsaxo5MleOjm7zZtkHAaUozRlLy9Tn5qUID+LxmGkqL3ODfSt7xORaAFpOhdbBz8zlZKGzecvGVS4FFozWZz5eilfr8PWfZ8B3VqQEYykDB9pVKBvb29S2Or2WyGydjFYgEnJyewXD5fBW+VA3DRVo1GIxxPLClSKRBFDV5PoE2rG81Pg4ePON9K72lgSCvDO5a9vOMJ4ORx+DRIfUV35Hp3c0tOML6LfesJHnh402sXWd/w9rdknVZXj9NGeVjjwVhQQKLRY2ul2g0SjZ7xJ8kACVp7UXmhBVB4Odr98JTPpDs7NbokftDqS7/TeIZ/QydG8BlOlqKDm2LXWzoV6aK7/JAGb6BBsgckSGNOGuux+/di/KzlK7U/lkfrEPue/y0hryNZrVbDYijO72gT4AkeW1tbMBqN4Pj4GCaTyUoAi9Pi0TX4/Wg0Wll4g6eJcL0A8LztsFxrcps/42OC2gNSG/L7rfhkLKVDa1+p3vQdrWPKKRQUuFOw0+nAL/3SL8HPf/5zOD09hVqttnIyizQuuXzhC8DovZw4GYs7OfH4RfzWmqTGPOlkLA18SsE2bdxxO047yjEPitr/li6nMn8ymcBwOIRPPvkEGo1G2F3M7+T1QpPxlm2s0Rmrj/U7FVIfW7ZYyrUmlk7UQPmJy2VJHlm6Lg8/er/nsovKRSk/3r7eOpSFvGOzjDGdmr9mQ08mE3j48GH4jfoB8ymDhpgfkmK/avCMNalstAEALttMFv2pZdBxJk1cWnWI2dLrwHK5FK/awHeSX6Tt8MV31gIqS45p7eLxyaz3sTJivplkg1j10Ox+aaxI45WWh4vSpNMz6CQe2lEenWf1M/8mZsdrulsqm8Oj2z3jj143qNGHf3vKlL7FtLPZbGUzRbVahcFgAMPhEP7mb/4Gtre34Vd/9VehXq8DwPPTNiUfUbKZsuz5CUB5cBU6p8h3Kf1BEbOHYnmkxgQ0GxPT0P+9eaai7L4t0n4I1zHFkhLB32UbbHkaSGNMqWNTGGcT8DgGefLcBDRlZP2WwA2OIsfoWqBCXAru4NFQ6yiPBrjob4Tk3JXFFzxQ5M3Xa+xJeVpOXh5QIR4zVLjTLEGTXXlkRQqWy6V6D5vXgYjVid+3BnBhoGBQLssy2Nvbg1qtBo8ePQp3VsVgKVGLluVyCefn57CzswM3b968VNZgMAgBPS9over1Ouzs7EC/34dutxvudSsylsvi37LGMToINEgEsB4dTBEzMuiYLEpHjK9T+gTbKfUY+NT+ssYEzYvfJ8SdNEmm8QAgRYzG1PbS8qT6Uru3Ow99XpowHZeTkmPrMbCRfjoB4KFHChLF0vFnvO2svDQdx/PV8uBlegNhNAgEAOEKCrwywjs5YNkyEs3azltN32tt5q0vb8+y9b7FI1JAgepLb3CKB594n0s8U+R6ChwzW1tbMJ1OodfrXbqbnfuIKcArG+h9fNbuC3wvyU/6DGmhE/60LgDPFx3wNs2yLByFhnabdW2Ndvx0CrRAF68PpuNjtlqtQrvdhm984xvw1a9+FT744AM4Pj4Wy8E25ztBpPIHgwE8fPgwHBdpHRFHy7DGqnYEbCw/bXxYAVcsl+bFnyHw9Bi8y8yDmE8kvcOjFLWTcoranhotHn3K8+JpyvSPNHtH0plSvbx6lJaH7yWe4ItApIkRSmPsBJayocl6Lhs8+XhtJss+pDRZ+edti3W0YUr+9MqtLHt+pY4lQ/Igbz5F/UyrH/PknfcbxHg8htlsBs1mc6WN+ckZ0l3h6+aVvMAFbEgrXXjGeQnrGNN3qcc1e+BtP4/Ph0d34zs8gWUwGETL0nwgD6w2azQa4rv5fG4uivX6CEV1dxn8m5KHZFduAqg36YQptYPoaTQUyO937tyBvb09uH///sqVhph3GfStE2XyR5njf53IG/Mpml9Z360T7jtjLUVnCU1PpWMGcx5YCipF2RQxtrzK5DoyBsKqt+YUxb612nS59N975KGRGjroVEn0c6fbUsgpQQP8Bo0rjWbJsE81aK0AnrRrQaI5BVo/SgGYlHHE5Qf/JznQnsCH9czjSJYFaYJIKidF6WryDg0enIzFMdBut8OdLLhCDR0EDRqdEmjgc7m82PXS6XSg0+lcSjuZTMKumzw8iBOy/X5/5egoqU0kPrT4mCKFd72Gu5Uv1z+z2Uw8YrpM5Gl/LUBVFmiQmDsMmqz08KrHPoj1uaXTacDZSpMa5ErVCx7Zq9FAv83bnnmh6RGJFq3vtTHtCeCk8AFN77GBYmVZ8oPaWjEezjOe6S6EZrMJABeBpOVy6b7LM8XuTw1qSumxLbRV01IeMZ4uQw5o+XDZ7hnjFi9LeWNf0vyLLFCi/UXveJJOm8mjy5E2uuMU/4/xusdWorskuI3JZQH9ezQahaNjY7IX2yOml6ktq73nNEmLYaS/cafBzZs3odPpwJMnT+Dk5ORSvbCN+LF9WltOJhMYj8dQqVSgWq1eCoBJ39C6SO/zBlw1+YYBejp5gv+n8CO2Yeq9rZo9hH/z39ppTevwO7y+fN78itBM+drabee1yS3aLLlKaeB+Z0o+PG0qLHskVg7VbUVsMk3OpNj46+DjTUOyx1DOoKyXdmp76x4bl2XZ1ZaNFbO/YvpV4kErv1gZuDibT5zRvrCO+N0UUsrCWIt22od0ZD+1E6Rxz2Wj12b1tJVln2r58XRoK2B+9XodptMpDAaDFRkl2bCcllQdTscOzY/unETgGPaWoaUrwns0z9j4SdE1KX5/HrtdyjOWB60f90lo/9B74fkd8Ts7O9BqteDhw4eXbNGyYxEvKrw2X2qsI6VsjRck3WbZemXSZiGP7ioDK5Ox0vHEMbzoTF+W0VQk7YuK2LFuHFrQrWzjiRsPtVpNDNJtgteRFo9Bk7cMCykCzXJ0aWDPyiNWtte5sHYxS/SlBnauk5Oo8UZK4EF6R4+7wyN99/f3w11fdPcJHpE2Go3Can2kIcUhlOTpYrGA8XgMw+FwZTfFYrFIPt4J82+324FH5vM5DIfD4LwhBoNB2LnjHfspumAdPMQdhOVyqR6rQ/sJj7f7vIHLII+Rz4NnkqPK88a0ZUILzEp0xGRvSpkWvE64h24r/7KhyaEUuYGyAI9nx+coHwGe6x3PpJVl/3j1vcSX2lUKKaDjgE5MYF0tmZ5lGXznO9+BV199FU5PT6HX68GPf/xjmM1mUKvVVJmk5eV5RmlGB10ax2XB0mv4TtoNBbA6XmmgyWvnWRPGUhAdf6N/RneHAPh2K/PAJV8YSOluNBpBv+K3V6VbKA9TOcTtQ2mnMf5/lbYetisPfNAxznlG+o3faf1ATxY5Pz+H+/fvw2QyCVdQjMfjMGbpsdJUTuTpYxowo3f88jpwPUyP6kV5ol0T4/Wb6I5zKZCs6TEpAJqX32k7Yn7YL5pOWS6X0O12V/ikrDu6KQ3rtneKQJJ7nm/o/6nlefKl+hLB+/Uq2tFbZlG9iWOJ20wAq7uHv2jQZLQF62SZdaGMsqh85DYv7hAGWL2yzMt3XPYiUJ4PBoOgJ6iOQdBTKpBHr6KdY6C00LEEcNnXo/WIIaar6Pgsw4aTbCwLdAINdX21WoX9/X2YTCbheixvvqnyhtrl9Do9+j+/YxTLpzp4k1fLle3reJHi55cFq6zRaATvvfceAFyOZVKexg0YCC6j6HUnL3G18Pr1VzUGrhIrk7H0vHCpIVIDYbGAnycPD7x5pAaGPGVxx++LCkmQp7Stx7HyOuVSedyI0wI3Mfr4916aPIZ7Cv/kVZgpwWteHjWyU4LNND/pOxqk4eXRPFLqYI3LF32ceusj9WGj0Vi5p5X2K3+Wt50kXsedJXgUOP5OCRBRQxwdNDSYMS90ZPiYlpwSLSjnrZ8UZE2B1b5Z9vyuPusITxrkjOVXFLzdJCfK238pZXJnldJCwXmZf5MXvG3LNBSluknPqdyN0ZQiLz062qJLen5V8jXm0HtsDO4k5GlTz3spT67vyt71HhtH9O+DgwO4c+dOeM4nOWj7pIy3mL3M+VrjNw80O4PnlzeYT+UNBiqtoA3lJYtXLdkm7Z6wyqLfS+8wLzqxQI/E97S5Jddpf+axPTVbXJogkfrTyzMSD9P8UnwDTOflYz6ONBlvlUvzmE6n0O12wxGPdCJW+t6SbbyNkVfoDh/t+FbLV8b39C5bnlbKg9LhSashxhcx3Sq1Jd/lKi140MrFxXTI13knY4v6lpbc8OrXsn3TGO1eGeVJa9kxHhvbYxeUYY/Gyigrf8mm1uppjY0y/I/rBCmO4f0utS28/oaVLtZnXjq4XUzz8PIJL1ezM5bLZTiNgvq5Ft2UBzW71NOWXB+ntJNH1nhoibVlGT6IRYulCzSaeF6oB2n/4SJyze7x0pw6/iQ7TmvXWF3LkOEeXeItJ4+/WQby2tcIq/8XiwX0er1gbyIsO0vK5zrpniK60GObpYwJTU6l6oQ85abaENcVsTiK1JZa+146pphmrq38kxww/v0mB8BVCSIJViCFC46yVr++qOBGmHe3RSzPWB603efzeTgiFZFHyUvwrqZaJ29yGqSxjM9SdjpLq49SaIkZItrYQIOqKJ9YgajU/qDK5SoUP5bJV4xRTCYTOD8/h1u3boU7W7PsYofpYDCAk5MTMXiUd0Ug3fHAcXp6CsfHxyv3lHnurEWasyyDfr8PtVoNbty4cYlXxuNxmPTdhIz1OF1eYJttbW3BV7/6VdjZ2YHt7e1Qj4cPH8K7774LjUbj0p1meRyUvMAjryliu3Pzjg1rbOE7uks4T/5eGjisMc/lFJU5mjOIz607Ezk8afIESrkt5w1irAN5gsmeuvJdfx4ZrvEBDxbRdNhHlo6t1+vhXu/FYgGnp6crdw2n2CiWba4d7wYA4T5IbSI4xb6ynEcarKHvsK7WkWHUXsGxRNsXv4s5mZSveVCA/8P8JHsKZQ8eQ6fxYOpJMjx4hGXRKwAwnZQvpZfWgQdU5/N5mLDLsgw++eSTwHutVgvG4/ElBxptPl625TNK9aNpy7DrLND88X+0EfA47uFwCACwMimGi8hona0gUpZl4b4rOmnJy7Z4i/YV/Ya3K+eBWq0Gg8EAPv74Y7h//z5UKhWYTCbiriJvm3F6zs/P4fz8/NIpAnT3Am9zyneYFk9kQRsmNiYoDVTvAzwf9/Q0Efod51Me5+DyguZF60HLQ37AxQv1ej3w0XJ5ccdu7ModzB8X3pUNqe3zfM+xDltTGv98nPG+2traCidfjcfjJJ9bol/6nspbai/Q8UTHMOWZIoHO6wQcn5K9hBNmeL883gFo2ZypvvJV+dYW8L5tzc7JY3OvE94xy9Nx3Q/w3D6j8g35g8pouisNv+dXhXGbBcvk/ygtki3JkeoL8DbI+61FlyUPLHvZUw7XUfx9ik2WCsnfQftnOp2GeEW73V6Rm3RXKsr3oicDSTrESovyKhbHQfm+qfEs9eM67WNaDkB5cqtoPltbW1Cv18Xj4PE9AKycHAQAYSxcF/kLUI4u/DwgRTZ6407XxZ6Q4jQ0RqFhxQNICfBojZmqQIqk9Thv3rSxMlMEYcw4877LA4nJymC8FEPBM9D48zIGHA92xGjC55IDVrQ/rO81gUzfbULparTwdzx4obWvVa+ikIzzFB60+r+o4U3bKQbJseHl5+FjLWBC/6d8jve0Yt9qOyeKGGZcHywWCxgOhzAajWAymajpYsAxS508/izlCDFrzJUhOz1OEO0r7As8LvLw8DAocjzOjjtgNB8+Pso2OnigmD/3jM+UsqyglscRp+mL0iLlHxsjXI5KclWCxo/aogtPgMKiz/tce1eGrKdtmaoTpQCSlC+H1W5F6mQFv6R3aLDjXYUSfZSmWJAhLy3L5TLcCSqV760Pp0MLuuH/kryiwTdOI/72Lrjx6DJedkyWWX4BPqfBJ54ntwdS5GYeW0B7Ttum3+8HHgBYPbqtLF2i8UWe76U+sPhFek5PheJ08eM4tT7CMheLRVhUgd/jWKJlYlrt2Go+Hii/S3yDaefz+aWdBFznxPwTrT0x2IWLROjY88hn7kdoOtAjd7k+tfgg1b5E/ud2lmYjYxmehSjWbyl/TT/F6sR5JNXWiJVZxFf1jKcU2qyj9z32TRm2i0WfRQem8/ZnKorKbMo/Ul4YBNdkbBk0pfjWRdOkwMs3RfXnuvpdo8vSb7Sf2+02ZNnFAh1LnvM8U+vj8fMsfzeln/L2UV7+i9mjlo9n2YAePY/5SHR66cP0MfuenobG7S0uO1L6oKgcj+lq6d0mdEfZkMa6xCOWzUGRR/9L/gYvk/M18jIuRNXkCLcFpbpsCinlFpE3PA9tPJbNoyn5SXyntU9MFmmw/CdPeulbD3+XIW8QK5OxnmPRyjo7PVX4ap1UlOE9DmRMGMXy4wLE2plg0eGpq+R8lmWMe8rO804qLyWgxAW5BjpBQwMtqdCcfi3ti4osyy7dI427JPA9KkjpWDtLoHmNdgrceYKgq+o0o8L6fRVIGSMxx1ZKT9PiSm6+6n65XMKjR4+g3++7+T+vjKJ9NBgM4IMPPlgJWnlBd2EgLXgXLZaJO7qkcY6/6f+xenH9FHMI88pZvquT8nilUoFbt26Fdjw5OYnmR53msoITWpCLfov3SY7H45U09I66PLCcbA00kLrOAIjlXPM2k44gjJWh8arXQfaWI33Pdx1p7WnZSHlhlUXptOQ+t7soD1pjWRrvMZnBdR3lWctWkGjCccTziuUj0ULL50fcSvQjPefn53B2dgYA8TtJJUeQwnJuYgEjnj/Sz+Ub15VSWVg3esyVBloGrQOC73Tmi39wwirLsrArAO89GwwGIY3UT15di/+4POF3pyG9VH/SdsI02M9HR0fw7NkzqFarGz+9RxobUv/T0yDwfzwNo9lsineyar6ZFPyh4HnRcSLlN5vNoNVqhWOC5/M5HB0drez6QP7gV0VQWqQdm5VKZWXyg1774LWruNyUeIHzM613pVKBWq0WbK08trwEWga322LxAl4XXidrTElthr4G7xd+jQddVKjJVa+sod9If/NytIlfLvMsP8zSg1obS3ouFbE6anzI7/Gbz+crPoZVntYG+B5lKR3nnLdjR2ojfalXDHjaMW9bF8mPjyNaV3zX6XQAAODs7Cy0gdR2eZDCY1fRhh7w8cqfIyzaioy1soD2A/qntVoNvvWtb0GlUoEf/vCHKzui6R3giCK2hGW7SnQiHako0sbeb/mpklJ8xlueR6/xEyskOq3F60V4D2mYTqcwmUxgNBqFHbLaqRFa7ILru7L8eulEEu+3+EzSuUVRtJ5eWD50GUipR4yf6Ql6nkWi1FfYJK6DrH7RYNmcqbD4IdY2RdpOih15celsHCsTy2HVvs9jIK3L6CyipKU8tUCQBKtdJGFu5WE5aKmwmD+VF7w0aAHGvMrHCgR4HEcPX0vpr4vAK8rPvP7ckZICMvTbFL7n5dA8suzi2FycnOJ3BXDjjecRCzZL9JQRRCoCzfgr0qe836gxgsdQ4vF5CHr8VF55HDNiizjoUntgMBL/xmNMpOBiGWVZaaUgojcP/J7u7MUJAwzij8dj+Oyzz+D09BT29vbCzjVtTHqR0rc8X6R3Z2cHOp1OCFYOh0OYTqfhvg90orxGSoymWABRCshK36UYZTEZl8JnnB5pXPDfKTyJ30v1LUv+eXT+OmSol3+4TvOMD29/W9/F3ueVR8gPMbosXR0rP8ueHzN3fHwc8sHFFbjwKsVeorqIykgrj5RgFP/Oo4No2pT+kAIuaG/w+2J5n+NxmtK44TJL8g1QJ9Tr9UB37Fj4WD0kvozJUCuPFMR4gJdl8XWtVluZHKSLAwEuL8qg5UuymP7W7En+nI9P2mfSsYzIEzQ/Xr7Gz9y+4+CLuyRbm5flked5fHtMx79FOcPtNdq/Gs9J/odHdqf41dIY4GmkeuL/mv/Ef2vvpLx5O0k0abzq6SuJLk/6MsGPApbGHy+3Xq+HHXrT6RRGo9GKfI/JeY8NI413+rclC64j8tohdNIG67e/vw8AF6f28AB5iq1QFp3rxqZtXm++qX6IVY4mR9COwVhMtVqFRqMBr7/+OsxmM6hUKjAYDMJCPq9NJslaTpP2O4V+bz5FkGLPSjpCGj9Fx5EFyeaU6LZ0jtcf5PfH0oWD9AoOXoZEs5RO0oUpPBF7z3WJ1FcpdpEHtH097ZwHkr6KjV2NP7S2iPWTRkeMboumzxOK9H0ee2RdvIaQxlZRvzKGTdkT2niyaBEvKoll8iIhZoin5qWhrB3DmwQPCABcXtHp6XuPEailsYywoqAr+5fLpbjDgztZEp3X0SGwULQttRWMUgDJWnWUQgfeaXXjxo2w0nk6nUK/3w9pcCKR0sn7JnavQBk75sqAFiTwBB9i4KvH6er9wWAA/X7/0p1a1WrVNK7ythWOJ7pLlwauvTyC7ULTLxYLGAwGIh9e9X3cKcYPtu9sNgt9hYF3DL4fHx/DH/zBH8DOzg68+eab8OjRI3jy5AnU6/WVOyU3qYcw8PXGG2/AO++8E2g4PT2Ffr8P7777Lszn88L3oWkGd94A26YQM2bxucSr2Gac76U8PeOUOnPXzSi3wIOyvN6WruK/taApLUf6htMhvef0esED4BKdqXIEv0nRc/gt3nV57949eP/998N9fAAQ7qiOgfM1pSsWeJOCvTGaY+ODpqfBH7QPU+pEfyP/of7h45Aeb4v3klJdTPORyqH9hoHO7e1tmEwml06B8CJ2fD/lAT7xHoNkO+cdD9r3NJCHaLfbsLe3FyZhHz9+DJPJJOxMte7txL7iPEDbVbqj1xN0RN1HxzXyAtXZ/H5kztOpwPy5LMA60vsfKc1a3ahdgen4DlHaPhbf0PGQZVmw5/kEnAakhZcd07EU1p3LWEekk77j/oaUN+1bTEuPq9bkSKpPQmUrz98zbovey7cu4MIKetdyTGbt7u7C4eEhdLtdGI1GMBqNwlHhKQFvXgaV47RNtZNN+O70Fy1uYAHlB8o01KNbW1vw5ptvQpZl8ODBgxU5Gts1/3lETHatq8xYOxctG/m/0WhArVZbicu02234h//wH4by79+/Dz/60Y+CnSLZtByW/sHndGxpdpKW53UB1fH0fw4tDkTtTg2aPcl1WowGKU8pbex7yptUPqBNjPfKanlyG5fbRx7+l+iM2QHSM8mv3AR/XScetlBWbJXLA2/M54ukayg8db+O8pBC6+PrTrcGK44j9dWlO2PXXWEtSGKlTflGgpU25lzxNFp6b/DIKseDosEOmg+vy7r6Pk//piDG5Fg3WmcMlkiBOC2/onxo5RPLS3LiUx2dlKCsNx8toOMBVbS8zdHwxolZakhiEFWi1RLkZRkKZcDi0zzfawY2D0D3er1wVKJ0JxwidQeUl6dT880Dj8MgjadYfl75XhStVgsajQb0ej2oVqvw5ptvQr1ehxs3bsBisYCnT5+Goy45+ITAuiCNM9zFu7u7GybfKf9ZQXEKy7DU+k2SI9o3eZDidGl6TasXdS6bzWaY9KJHoHJn1XLWaWAbn+etiwU6LjbllNJAuRc8veVgWzoi5phLtErfaXnNZjPY2tqCyWRyKfhkgQclpPexgBVvA+0uSKl9PP3hlbc8f68THssH4PkCF3oEqQbKZ5Kt5akPtiHKPZx0ozsAeNvy/qbjCnV4lj2fMAV4PtkznU6h0WjAzZs3oV6vQ6PRgMePH8Px8fGKzVRG0MITXOV+k6fPOW3Sd5VKJSwew2NKG41GOJ745OQEJpPJCm9rY5Ee3yy95/aj5gvyepepe7msRz6h8kHSOfwZ5yWvzePVY9K32jt8zyfcvIjRro3PWP9pdMbsR+ShyWSyMjY5b0lto40NTfZxfqY+rKaLLdtDS5eq78oAPVKT6kCtfbD+8/k8HGHIx31enyqWThprAPEFLy866LhFtFot+Pa3vx3007Nnz+CTTz6BWq0G1Wr10vUxL1Ee8vjmHv1NQXesT6fT4OvhCSqvv/56iNXMZjPo9Xrw6NEjePr0qavMFN/aSpunrpuEZj9rutrrByNisimmky14+4C+l/gIAFauMuKLXfLSx8uR7CaLVol23p6SHXgV8MakvPloeaX4w9I3KbpX8/143ily5Kr7adPIowtiMpP7Ddb3ZbS3ZetxGjeBlLHmjYtIea1MxnqMJc2xTRUK/NtUpRMDDzJ5mMgTlLMURqxdqHMQy8dSmmUIYu7IS6uPipaB+cQCaes2lCQFKgW414GYIKOIKRjv3QZ5hRTNUwrScvAVwJROj2JHR1o7Rg7vpuJKAYNxKXWSJt03IcylsSz1nTUGaRr6vdXGNC06wwAX9/qcnZ2ZQSktOCbVI2Xs8ny9Rq0kM63gEqfLqwN4eo0OD/1FZFqn04F2ux2O/QK4CHbcuXMHnj17Bvfv318ph/6jtJYdEKZ50/8RuKsBV09jwBiPkPROxmrgPMn7gh5NmdL+Hj72yHBPwFMzKLH/ms0mNJtNGAwGQY7ikdRSHho/Sv0vBQA4zUV4Zh3y1MvXsT6k9czjLHphyWzu0PNvZrMZLJfPJ+Ty7O7HevIAtuVUS/Ti3ZRcXnsccOs9/5t/w/OhdqqVZyxvtBvo7lStPviNtaghxjeUbrzXk07GAqwen6u1H/cr8C42ukuPLraq1+tw584d2N/fhxs3bsBf/dVfwdOnT4M9RY+2LxsxOWI5qtaY5PlubW2FO8fG4zHU63VotVpw8+ZNaDab8NFHH618p01YYptk2fP7ZvPUlUJbJJgK7qvgMyqz6S7M2C5COp64P8HTxnaKxOrmGSf4HMeExP9aWTE9G7MNYz6O1+fneczncxiPx5euZtD8Nq/u4XqDLqrgfR7ztTGdJtc88nsdehOBE6vI35L/xstG+6hWq4VJIoD47l/kE94nHt+X5iHZFohN+JibhnTPdrvdhu9973tBnv74xz+Gjz/+GCqVCjQajbBb+YsIbbxskjc0/03zazht1WoVarUajMdjGI/H0Gq1oFqtwuPHj2E2m8Hh4SFsb28DwMWx4dVqFWaz2aXJWF6WZhNLdFj2p1RXLtfWJbM80OQn9//oM21BpJQfz9ujpzXfL5VXtXaVbFukbzQaraS1fB2JrhitfDJW83c5fVY59HuvP3UdgbRbCz/LKkPKW2szzfa3eJ+m89DxEj5INo3H3/bYTx77l9vMKb6+hpicykOnlReVxR561GOKY860luEmwJ0OrzKwaC07QOFhHg2SYirLkOXOB32GQAfPE3Div6+LM4K0eHb9WXlcNaTBLB3PWwQ0qMdB73iQvqHAiVVKn2Vk4xGBWZbBjRs3oNlsrhxRjDw/HA6h3+9fMuA88Brw6wI3CDXZ5Wlfb5DAMnq8AQbPN1a70mPyMGhId6JbMpk7i1ofLperuwJidGoOjFR2jGd4ntRQp/zvcQglOZVlGezv70O73YZHjx7BcDiEwWCwcowxDTytE5bBRWnBoNnPfvazsDsJ65LX0E9xeiQn33scn3VMosd+kGiIpZFsjmq1urJ7r9/vhyP3cEInlndsUYf0jcX3Hjtg0zKWB0+lYCoiNu6Xy+UlPqF2kiR/pIA2fya91/qG0o96jh5zq9VdqkuWPd+NLvFDmbCCP0VsLPott0HQTqEnO3h5HHdUou7gd1jFZJVkJ+NzLcjhhWQXUB6Yz+cwGo2CrMVj/3l6XLjRbDbDwhh87tHtLwMY+YG8RSfgAVYDhLgwqd1uQ7vdhvPz80vHV9P8+G/Ml/KGZRvGbHFajkfPanJRs7M8QThqM1FbSPPLJbsrtUyexgp+S99L3+A4k2S9hdhpFhRaO1MdpumI2HiP9f+6fWLcJcUX20r9iTzT7/dhNptBo9EI7yRfVsqP5hnzVaX+9MaiPq+YzWbw/vvvw2effQZPnjyB27dvw3e/+12YTCbQ7/fhwYMH8OTJky/sRCzA1fNEGfyJegyPlkUb47d+67fgzp07sLe3F051QXD9h9cGjMfjpHgrtc+8/hX95rohppsk2eSNS/B88/Y3lYVF2lLSRfSZZq9460DzoeVMp9NL949rdotX13rjYi8K+DHyKTwmQYubSPkWLesl8iNFjuZB2XK3DB6x8vDSmycOrn0nfeO+zI0LSE96DwHaN5by5Y6HB1aQ0SP4NyU0MJDGy9QEnfR9LH8pWMTbwJv/Opk4LySlqwXRYnnwZ3lRxIiSgro8+OAtwypbGn8Al1fCakHXxWIBs9ls5a4eaQxLhtjOzg602+2VfPC78XgM3W7XXRduRPJyU2AZYFo7WHJFCqTkHctWWZYB7VXGRcAnJLVghoaYTObtyINikgPA87ECYHkMFrojguYn0cLT8AAkwMWYaDQacHx8DIPBAIbD4coda96AU9lOA5dBNJi6WCzgF7/4BRwdHQEAhB2ynnsZJXA7IMWR9YLWR9N9sXz5WIsZf9p3OMGCdytjf2Og0doh4nV289Afa5N1yJSUgHIe2zTm5Gtyi3+v6QSv7qFjie6glHQE5VMLdGW4xdO0LtLfFmJ0WM44z4e+j9nq2okunnJwty+dlKXj37JbJHokueSVH572pn1Hj0HlR8DT9DjpirtZcDLWuiLA21dXCa9MLUvfaT6vVRa+wzsvcbEhbVd8jjt8R6OROhkrlS3xPP+bL4rEZ1qeWj04ND/R0tExG5TaDzxfCzydV35J8pvLYFpGLB+abrlc5rJ1Yv6mNj41HUztf15P/M5jH3rHXFmQ+NvixSzLwm49PKYc31EaNTuSx0Isna61kyUz1yGXNglrLGXZxQKhzz77DGq1GgwGA6hWq3B4eAjT6RT6/T70ej24f//+xhaOvkjw2LWx7z1yDv+OyVUrP7QfcNfreDyGra0t+OpXvwp3794NPh4uRKHl07s5NT89VodU/8Ljj63LP04B99WoTSqBy3P+juZFJ8JTYxmWj2rRpOXL02ixEaleWjma7QPw3E+msXTOj9b3nCbtbw2b4imLxz0xEt6366Q7j48k0XQdfZNNIq+9xr9N9VM9+Ut5af23jpiRVI43rUWntwyv3yTBNRmbd4Bqjpsnf+yo2MShhRQFVEYdrbLz5i/R53VWvflLtHqYpwzBvS6HjuaLPIQKGoOd6yh3HcpMmuCxaPAEQ6TvrGOQeVBQakP+m66mpEFUfMd3v2rHpnnHsbTzY1PgRqV15LsUSJHy0uBxqng+2P7S2JD6Bu8v1AKSHiyXy3A3CJaBwfBYP8XGEj2KjAc6JWTZ811RdCcVDVrx8i1QQ2KxWECr1YK3334bxuMxPH36FCaTCUwmk+ikKS23Wq1CpVKB4XAIs9kM7ty5A1mWwfvvvw+j0SgcgYcTnB46NeTRe1mWQb1ehyzLVvpwOp3CcDgM90Mhz3Q6neiEsVQGp1EzGq0gmJSOgx/3ifAGY60yLfA75LA9uUzNsiycFEBPDODwGJE8+BgLIHod7KtGjEYvn2vBWS5DpXbjuxOxP+n33mBDlmWX9Fhe54seZ+k9ph/bLGXihvMZlosLCsq0t1CP4P2v0+lUncjC9uRlT6dTOD8/DztMqf7j+lHrc65LpeASDwANBgNYLlfvzk4ZQ9iOdDcvHau1Wg2m0yl89tlngYfOz8/Dc5wARHh5LA9ieWuBNe07rgvo8byTyQROT0+h0+lAtVqF7e1tmE6nMBqNAj9ynuZ3xeIzTE9PIsDnqX6n1td0fPATLjx2Ea0Lrxs/4QH5l+vsGPiufKSxUqnAbDZbGdPcRtR0C6WHpvPocQqaXrLfpDHPdS3fFULTUduXPuf55PHDvXyU2iaU1zSZRdNKz5EfsX2sq0rW7Wft7+/D9vZ2WIB4dnYm7phFSH1JT+GhPEFpt+wDXseY7RRr96Lw8E7ZdpllI6AexsXXR0dH8Nlnn8HPfvazlTshAS4WE+Ik3lX56ADXx24tA0X8cituaeVbqVSgXq/D1tYWjMdj+E//6T/B7du34Xd/93dhb28Pbt26BY1GA3q9Hnz729+Gt99+G/7qr/4KPvvsM3FCnttJsbp5/UMpjzw+b1mguo76fwCXbRFqM3rjL7RdUY7TBWEWuM2ltWeR9qO6V3vPY2f8vVS2JUvQNsxLM+aBsk4q7yp5Kg80e2CT8F63VxR5ZP3nST9cJV60ceGFpauKjiPRstUCUHkQE57Wkat5g1ApaYrA60ymtKHmVEpGSBmQHBNengVe9xRe2aQS0OpJkUK7xtcpdbIM4li6WNAK/47xDX3Pj/vTDA8a3LVWu/JgDc+brtybzWYhwJZl2aW7sKS8aZ5a8MCiS0KKs+sNAvF8Y+Xnkbe8HB6A0Oog9Q39WzNCLblOy6VBO5xstOBpJ4k+LT0N1vGdsFYZErTgC04M7O7uwnA4hNPT0xCw9ARZaZAW4PmumslkAvP5HI6Pj1eOJ8aJOUvmxIzKvDqdLmzJsiwErUejETSbzTDhjcFmunNLCmB6ZGBRPWG1j7YzooxyKTwGG7YNbx+kky/KsZzooo5IjE4p73UGImOQ2k6TiVIAn0KThVqdJRsIAw/Su1jfaAEqXi/rHeUbr0yl7Ve0D6kOj90VLclVazET1o3faUvfW+XQHRz0OH2JFsyPtgvVnSl2L572IR0P5vVn6PecZpxI6ff70Gg04OjoCMbjsYu2PPLCGu/rCGpo+nc2m8FwOITRaASNRiPoSJz8thZY0LFG27FarV46xprD6j8eWIwtqJTkN/2bf8P53hq31njQbFkqC1COVCoVqNVqsFz6FhR49UkMkr1K+0yqgzWmuHyV6p1X/lr1zdMWks2kpUFelezcGE34t2fhwbr0Oy2z2WyGxXzj8RjOzs6i5fIxII0hzSbQaJF8POlvyxYrCx55WrbMtYAyDW3+wWAA5+fncHp6eolnUabioqCrwibb5zqD2sL4m7+XQH2RxWIB9+7dg/Pzc1gul9BsNuHGjRswnU7h4OAAdnZ2YDabwU9/+tPwLX7P4zrSOLR+W7Jd+jY1TZmQ6qH5wCk6gtorPH/qL/LJX40uq1zPtxakeJHWLlJZWp/F2lazQbz6TTulIVb/TfOYtyzNVs1Dp+Tb0t8erDNWUKROXwRIY1JC0T4qKjtSy8mbv4dOjw7S8o7RtTIZm+cYkViwKgbLIfR8WzQdX+1YFHkZAgP63EDSlFMqUEHHoAU8UgfkdRJqnjvF1oV1Kps8SDFIJKcJJ4oALhzmmzdvhndnZ2dwfn4eglg80KnRoWE0GkG324X5fB523FHa+Crp1D7OO654G9LgMUKa5LHyx3zo+Aco565oaaeftQhGe2/JATrRulxe3HvId0Qh7+DxifS5FTzy9Iu164O3Kf9uPp+bvMrTI9rtNjQaDXj99dchyzK4f/8+AAB0Oh2Yz+fBSeX10WhEYDv+9Kc/heVyeWk3pNUuecaA9xvk88ViAcPhEF555RV4++234fj4GN59991wTNxwOFy5P4gfc+6haZ1yUwtccz4si4aY0Ut3IeEuYz52uOO9XC4vBU4pX3BZIi0KkAxLLz/kdeDyAumj94Vm2erdqBJoG/CJkVj/0qCGdTw0TY/vMY02GUPzwKNkqW7FutIABe3f2BiJyfc88I4H7JtWqwWTyQRGo9GK/WmNMUvH0B0EWH8+ZvkECw+sjEajMJGkBal4mXjfuXRcNd8Vzemg44rfoS2lTwmQScA2efbsGRwfH6/wIbYZL99rE6aCT4B4QNuB8jkdw/P5HIbDYXiGtsZ0OoVarRb6GL/nRwVT+vAfjjXsY7y3GwDCCS687bjvy2UxXVAg6Rw8DQZPvOB1ldoSQRe1eduX7+bm5Vn+Zq1Wg2azCXt7e8Em5zu16U78FH2CeaBdOJlMzPs5rXhBrC0obbVabUXGovzV9Cl95mlzbbxZ32v5S3KNj1troaPHlkY66akzkqxeh+6np+bM53PY3d2F27dvw40bN2AymcB/+2//DYbDYZj44/p4uVyGhSd57DauX2k+fOxL10ghJHvrusUA8kLr98lkcqmeeMUG1bF4qg/ukH2JzSIlBqiNb5xU39vbg3a7DWdnZ1Cv1+GNN96AL3/5y/DLv/zLMJ/P4f/7//4/+OCDD+DevXvwp3/6pyvfdzodmM1m0O/3S6sbwvL1tfSbhhYzor5MihzT+gtlJabRFkVKZVk2gce30OLGWEfpKhapbPo/t7Eo8Dn6a5VKBarV6so94v1+XzxZygPqb75Eufi86MeXuAzNRqdj+br3/zrsXVFeawmsgImVoSYoPQ2eUuGYMxNLR8uTAjdFaMubnis5SaFpDrukuLRyvG3EaeHprTLo/9dpsHkGljcYnRdaIC5vnlJ/aoF26Z1VX+6kNhqNkL7RaIQFBABwyUnlgStaFg+60eNU8N1sNgvGkxYQ4QEJPlY0mbZOSP3pDch45YamxKw6a8pPkvU08MWVpwTsi0ajsRLYxImMwWAAAJePby4jwMN5lILzGf9GCn556KCBmZ2dnXDPMT92ENN6JtV532CQltNkGTHeNtSChBpd9Ds68Y3HFmIAHFc90zrT9J5gaSpoAFjTWVY5WoCT558HqboEZR62c4wWjw2WErCO6fSUYIHWxqmIfauNrxT7VHqfRx5ZfC7pJ3xOjzOX+pjnKwVPisgDno9UppWvNIZQDlJZw8eodv8lhaYbJLnCZRqfEKOTqny8S7qI6kGJN6QJLk3/cxnF/+d/S/aNFxgIl47AjenxsmHJCo2WmOymE6x0ghaPweT2wHK5FCdIYrJQC15L9gTlb37ML02H36PNwBcrxeRrik2r6UXNTtb4DdPgojt6nK3Ex1KdPXRqdhxHik6TZAQArARtcfKIvpfaIkXvSTJaokOqg8Q7qW1i0avxZqz/vXnlgVTfdrsN9Xo9TNLHZImHD2I0WDI4lmeefntREPP90Nc7Pj6G+XwerlahOtIaR2Xx0aZxXemW5Ixmg3q+xd+oB/j7ra0taLVaUKlUYH9/H549ewbtdntlAg4nczlidrmEIn5ZDJvoU80mlGyXGH2W3kRdLV1TJdHE85TA9URqHKEIvHShfsc29ZzC6Rkbse+uOzbB1xwenra+T3n/ecC65A/3xTcBSzZJNgBNe5XjSvOLAGxbW4uXxHyb6J2xWubWCitemLTzySvA8+BFEowasG3ojq3l8vIuqbyIOYwe2oqW/XlEHiFqDXov+M7AmKPtoQUAwgp4gIuV5F/96leh1WoBAIS7uqQy0Pix7ijDQAjuphuNRpfuLuW00b+t4w9T+TsvT0s7n3i5mqzDNNLufG9/aeVJeVA6KL9g0BEdJgT2j7ZjgAJ3M7zxxhtw48aN0P/b29twcnICf/mXf3mpP/mRVXkMBO+OWOQ3DNzyu1To7o4YMB0GI1utFmRZFiZleVqtbrHgRrvdBgAId9+VhSKGHuryWq0GvV4P3n333XCqAwLzxt1Jmzb+KA3etBKNVhAjlp8W7Ix9hxMKNNjhcSCl8pCnrV1UdLIq1maao1q2HacZujzwI9FiAVeKU75ESHIc5SHKMnzG+cK70IKWg3nhb3oEKMpS751RVMbQ+uCkSWr/WHIpJY96vX5phzdvX8v5omPSa7toeQE83xmLbUMDhNI32h1nvP8xb/qbgudhndTC9TPlS2wP9AnKuos3Rbal6I5YOunEDmqLWA4vvScY2wV3aEljRpKNNEBH7UWcmOP8xO0zjT4JNH8+Ti37JdYvnrHBj1pG3kfZJe365UCdhOOl0WiEyeQUGYWg1x0gXXj/c7VaDROkZZ5qhHRin+Mk38HBQZjM50Frrd+kfDW7G5/xYDj/RgOngafFhQl012jM5+D0Yz70W4s2TovmB3lBdS0AQLfbhXq9Drdu3YJKpQJ7e3vhyGIrD1ofj0zjsjxlTNNyaZlevf2ig9Y7yy4mzrvdLvzX//pfw3ucoAOAcAKRhuvcXrHxf9U0pKAMfU8nVSeTCXz00UdQrVbhjTfegFarFfqcotfrQbVahdu3bwf/GfOyyue0x+oSC3rju9j7dUOSsZp85vSgrKTfU9uR+0r06gVqO/FvJZ81Zodrfi79Nua/ab6lVI72nl9VxmUNxrMQHvuZng6h+fVXgetCx0usB2X3bZE4+DridpKMXld8sEg8Q9MleeLUAKDGkQDYZKyk1DxOAhIrBSk8AcgY1tFJRZidM1AR+tA5tO6u0toyT7llKD0vDZsIvnuMAwtlC71YEChP+ZZxmTdgk6feWZbB9vY2dDodALiYJKITRWj80MAhBnwkOrgByI0pT72k3yk8GQtCeZUFL5sbuJqRK5XDy9IC1DHE0lQqFXj11VfD0VH9fh8ePXoUjHfpnrNYkBTva2s2m1Cr1WB/fz+kpzsRtHvceN2s4EhM9mqOAH1nOXJan9C2wSASOjvj8RiGw+Elh0ein4OXHWuHWP68rzivFzHocVzjynd+pCovc12QdNV1cFKs8SzJFCortWDtOvUpH38S72jQgrWeZ7E86Vgoal+ifKIOuTTpQtN7+kKjwcP7WDcaQKG7ZHk6qTypnBQ9GoMkJyUbOGb7SLJHC3DwvqZtThcZWLax9Mya/OLAPLSFVprj6nH+MB2nxTOx7xmb6FdI7Uh/a3RpsPSxlAflac9VDvx7Te7xtN7ggiVHaZ/QhX5l+F1aeXlkIoA8PjCN1R70G+24ds2/9cYDvOk4/TgJi/Tjvc4af3FZktqWdOKxUqmsHBOp5cXHjGRfxtre20ca33P5Y9mqlr+gyRErvaX3PHXSQHUILs49OzuD2Wy2sihGOi5eg9d+Sf0mRX/wPNeNddvbFJqOlo6QRl1kHU96nbGJNuX8otm8nnwkv4+Cj3Fvf8xmM5hMJiuTVNjng8EAHj58CPv7+/Dqq69CvV4PxxnjYt1KpQLT6VTUr576FfVZryM8upLrOyst2rkUXDYXkd2SHeL1xzy0pMD6FmNRCLoYBBdmxui0yky1OcrEdeJlzQ/KC8seTc0n9dtN6s+rhBRLsOods4dTvvGkLWNcWboz1Wcoiy8snavujE1xqKhjZ0ELwHvgYZoUI70shZ5HINM8KpUKNJvNS2n4xFQZSM3vKpVNDNeVrhQUHdxWAMojPPA9PypQ+25rawsODw9hb28PAJ7feYU4OzsDgIv7tmhwg+9AtPqOB8et4J8VpIvBazR6vqcBHGlnqZZ3kf6PtYEnaNpoNOC3f/u3YX9/HwAA7t27B7//+79/aaejlAefrKV8sLW1Bbdu3YJOpwOvvfYatFqtkB4n8gGe74yVgsZeeHb2ace/o0MpTVzwfqM7Z/n9uIPBAKrVKtTrdRgOh/Dw4cMk/uK6Fu8yo8cU54Gkq6zfqfnSYxb5kZixMq7a4KVt79l9kydwIZWn5U3vJsVd21l2cVdflmUwm83EO7y1/PPQK/FjHqdZstVi39JyYoGEPMA6NRoNODg4CAGhbrcbdmNROYE7pChw3CPP82MtaT0te5UHnheLBUwmE6jVaiGAgEGrVFD6cRV82bYSnwSgq/SpzSiVS9PQbyz+pc+wXriTWJOP/Lk0yULpkPpLOoLV67xKdcEApBVYw7aM3f8oHW1LoS2OicEKQKWOQapnua2ZZc937NPrKag8jtk4dEcnXQCo0a/1My0Dn/EdeJu4A1IbA7wdUF/gu1jfcB6mY47umtXGgEQbh9Qu3L6ybNIsy6DT6cCNGzdgOBzCcDiE5dKeFNfykoJ59BnyzXA4DPdB427fLMtgMBiovCSdyMB5lf/GdDFbLjWoKZ2oE4MW9LJ8/ZgO12R4KpAXa7UaHB8fw9nZGfy9v/f3wr1/GEDPskz1q4qC14P7q9THk2JedFzh703iquxqHKuVSmXFx8MTr5rNJmRZZi5+e4lVFPXPON9qYzTFV8UF+I1G49ICq9PTU/izP/szeOutt2B7ext2d3fhl3/5l+HVV18NMYbFYgHdbnfltETUZ6mxnhcZmr600nv5gZ5mR/UrnZjEPFPyp/1FbRAOKR96AlAsvUfPx04CBLjw1/B0MYCLeBe1xSeTiehTW3GSq5LrL5GOPH30RejXIvGrz5scXgdifqvWhrksWk+A1XJ8LcOfIhbUkdKm0Ov51vM9T1t0oofTRAMPeYHKVsvDM5med6KrLAFXhkDYlLC12oCPEw9NPKACcDlAFHOmtd/0OXUm6YKA1157Dfb29qBer8NisQi7/7a2tqDf78Pp6Sn0+/2QT4qhxo08nq6s8RcTklJZPMjC/5YCLLVaDVqtFszn87C636KFO0rcobfgkV0YcKIG+iuvvAL7+/vhjleAC+MVAx+eIBjmS48bbrfbsLe3B/v7++G+GFxwgmlpvnnGo8brWqAJgYFuDPrU6/VLaWiwgNNJ+3y5XMLh4SG02+1LxyrScWT1PcDlOwdp/usM/KYgJi+kQHhROSsFyiUUMSxT8/DKV0/ZEo/xBQ1UltEdBTF6tcBLbHyk0pyajwUqf/G4XqoXJN7SbEzNXqTPa7Ua1Gq1FZ3F03C7y1t/LUhv0bhcLoOu0BbixQJpkv2dp29S+JzKOewnnNjGhQX4zjq+UZsU4HwBcBEQ7HQ68NWvfhWOjo7gww8/XFn85W0767lGH38mlUV1ulWGxFdYRxqslPjIgjZJoJXPn8V0Viz9VQY0UtqpKJ2ecU/LSrV3vDrQ8i04L9LnfEJXqgv9PZ1O4fz8PNxHzOurBSol/uUT8PicnpqC4yvmm2r6QKtbLB/8m+ohvviB5013iiEkn5v/zdvF2q0cs4O8PmBML0j10L7R5Hle0PaYz+dw//59aLVaYeFv3vJi8l+TY5rcRLtXsz9of0njL0bXuqH5u0WBCzRxcSG9fsFaTPgiwSuLi+SfR1/kLYv+r9mr1rfD4RB++MMfwsHBAbz66qtQrVbhzp07oQ5f+9rXYD6fw1//9V/D6enpJVknlZNSd4+evEqbxAvNHkNdLS0OTMmbH21MZVQsPyrvNP3g8f9jY0fTMdozy/+bTCbQ6/UunciG7+lVVRgnk2wJSUek+g0vAv+ViS9afa87Uvwi6ds8fOxJWzR2ZJXhKd/rY2nvNd9Xst9j5ZiTsWU4q5qQ5v97A10aUhW3V2l7gppl0Wflm3o/lNbueZm/6KDZFK7SuclTthS4swYywtqZKH3roY1OqiyXz1elb21twa/8yq/AnTt3AOBiwurk5CQYid1uFz744IOVMj1CkvOk5aTS394V5utymmLfNhoNeOWVV+Ds7AxOTk4uHUHOgf3vlRFW/XgeuMt1NBqt9OeXv/xluH37dph8BbiYXN3e3g6rXxHSscK4Q3Q2m4W0WZaFI4pu3boV8sZ8B4PBSr5o4OeBFviy0uDkwGKxgFqtFlb3UvR6vUvHbHF6ccfqzZs3w4pfatTzY56tsSkFyay7kK8brLtfLGwi0EDLArAnJGKLnbxBXZ7O8x0PSFPH0DMZqEEL7HryQ94s4nSm9u98PodqtQrNZjM4ynRSygtPm+N9gXjnOdaV73qhMlODVndJZ0kThvjbCpbwfDGNZheWba9ZDhm1GZbLJdTrdahWq2H3MabXJla0CQpa7tbWVjhBZjgcws7ODnzve9+D9957D37+859DvV6HZrMJw+EwBINpO/IxlgJrMoJOQHnsGKsMAAg6qdvtutqLQ6qrpGek71Lo5d99EaGdqOAZJ5hOuzdXgySTpb7jvEhtTDx1QYP0LcBFcPPk5GSlHtJ9y1zvUJqpjZNl2aXFB9TWRPmPp0N4wMceL9tqMwo6iUTvENbsFk1Wc9nG+8PSxan+vnTfK68vz1uqD+drLvvoO83GKAPz+Rz+7u/+buUUGuvOrTzgu/M5pDFr8dV1xiZs7uVyGU4aQTsgy7KVBbsvMjbR13l1sQepckbiGf671+vBf/kv/wVu3rwJ3/ve92A2m8He3h50Oh1ot9vw/e9/H371V38VPv300xV7G++41uiQbOEy28SjbzcJy75EW7BIe9AYhSW7JB1Ky5ROC8D/Yz6jZjN544UpvvV4PIbxeAz1eh3q9Trs7u6Ge3MBYOW0KeuaQM6HV4lNxk0+r3jZhumI+Y9aWu83RWkqK78y6dTy056rk7HexufHS9DAhRYMKAIpLylQogUFtbpowpY/lwyGFOak+dGjxHh+9J8WKI4xPVV8MRo3YWSuq4zrIFhjNFgBR08e3AGmAU4aJJD4mAdCOF2Sg8kxmUzC0W00wCqBrjizxiWnQXtP08VAx5MmA7xC1xo72O64+xOBwfbj4+OVo+6kPrD6I+YgafKVfofHXlLcvn0bDg4OwoRHu92GyWQCf/u3fwvHx8cr39NJRcof0nG0N27cgIODA5jP5/Ds2TO4c+cOTKdT+Mu//Et4+vSpeBS2xZdlgQY8UR7S3cDNZhOazSacnJysHLvNx6gUYDw/Pw+BRQzYDYdDkQYEP6ZHCnStsz3KREyvrlMuW8FCK20Rg0tyBqVyYsELKU8tWMr/1tJYKJOXKP/HbClJ9lv8vVwuwzF3mKbb7UK/3w+yLLZrXOsDDFYDyItLUE7gd3y3O77nciyF76kswrbQjmfjeXE9jbYjncAty8nUeNGyN+k7lIXn5+fixA/tP+moeCktvm82m/Drv/7rcPv2bbh16xbcv38/lK8teqL6NgVeXYzl8zJoHQHsI04pjalH0/O8KpXKig3GwW2kdcjpLMsu7TxAWwL5tNPpwNbWFkwmE5jNZkF30qBflmVh0ZdVD4DV9sbyMR2+5+ALpngfSUFQLsP4Djnal1bZlL+8fpqUhsoFPLo7ZZEG/T62KEmzV/BvWoY07mML1AAubKRGowH9fn+lDySaNboofXRMcD5aLBZwdnYGWZatHFvI5Qk9WQZpBIBcC+eQdikwTesVk+l4XPv29jYAQFj8MplMwnjj/GXBY89RPlkHkFb0MfjpCmXJKs3Ol+ihsOQlHxeptqY2brR8uAyKYZNxEnpFgmU/XDfE5HUMEr9cF3jsdUt20/T0ig4cq+PxGP7u7/4O5vM5HB4ewu3bt+GVV14JR1S3221ot9vhmGL8vlqtuuRJqgwrM+06YNmq0nN6MkDMptXs0VjZkgzj+Wrxppj+53TwOmngdaVtwP00re4AEDYkYIxud3cXJpMJDAYDWC6XKzv6uZ7T9IRki3GUyWdXzbNl4Srr8XlpQwlFYj3S+Kf/8+cx0HGYYmN58vTAyteKUeWx2TT6NJkhPXcdU2wRKAUYPEKdfxN7hvloQbQYbbF8NRpTnGTtW14OQpuMpfXRjqyjsNrQqxwkBikysD3w5F9UIGwa3jbzCAqajjpdfMzxFW+etpGCF9q3aKjg5KK0cprCCqxKZaU4bJ77Ha1xTGkp4txj0KrRaIQdoLgLdTAYwJMnT1RDmJYvPZfuTJSCjviOG6L07iWOmzdvwt27d0M+zWYTJpMJ/OxnP1vZtYqGLr2bCeWvlO/+/j688cYbsFwu4fT0NMitH/3oR9DtdlfqgcfG8LrEEHMmKCT+XCwu7jWt1+vhfb1eh06nc2nynH5HjX/Kf4PBAObz+crdrpPJxKyXFOylwdB1y9wUaDI35ghK3xYpO9Ym3jbjQc7Yt5KTZ+nTlPbQDFXNhsqLIoalJ22KYY7yQ5okwvpWKhVotVoh/WAwCGOOT8Z6y8X86e5UTjeddKEyFfsc/3l2UNP60PphObSMPOME24JfU7Bum4j3uea8YRuNx+NLdaRtadFM39Ex0Wg04Bvf+AbcunULDg8Pw0QED6JotOeps/ZtzMeR+lyihcp+j6yz+pnzVh45VyboZFW9Xl+ZmKbXGIzHY+j3+5d2WuJYpXXhsjPmW2r2IP3HbS6LTymf02eWvadBCwZ4bXj+bWynn5YHH6NSfWl6yQ637G6+CMWydXBXKp1MlOpKabJ8iCx7PqFPxxn+3ev1Qlq+eIDyH6dRklFe0PIlWHxAxzSOI4CLydjRaLQidz100XI0PpbalMs/LmvyyhSsFwCsLDbKqy+1MqS2obRbtl6K3bNOePzhqwCNW2ltti5fJ8+YvI5t6EUR/R1rK03+0HGJcYLpdAoffvgh1Go1eP3116FarUKn0wk6qdForJx6A/B8UUtMFvLyX2RoOh//ltJoz6Q0WntZOlR6z+MfCOu4Yi1vjVaPrtD0DKUn9i36I5PJBJrNZtCb1WoVRqNRWKiFC3UtveuJCbyEDy/b7/pAGs+aHRrzuTxprTLzgNMa83nXCYsGrX5VnggnFPgH4/FYXQWKypnmk9KgXsWD9HEUvU91E7Dagx+LySdj11m3626E8sF13enNg9h4of2vHRFSBg18BwDHYrGAo6MjmE6nwfE/Pj4OOxowsJb36FkNXqNNAw3AUOMspmiktqV36dK22tnZCcEbfiQT7y8pwERX4Em0eCAZrThZyOXzm2++CTs7O9BoNKBer8OdO3fCROKzZ8/CrgSJbnrvqzaxgscR7ezsBIer1+tBr9dbCRrSvL315cEjqf74DtsBHUCcTMbv+E5V7dg17HO64+Tk5GTlLhf6txS8k44u5vz4IkLT32UFRVINdqstqSyILSqxvs8zAeDJuwgPpOoCqe4xGqwgZax8LeCL44anpRNsmtyM6U0e9MbAfK/Xg263C6PRSHW+eUAbaaR3TyP9MTokHUMnKqgc0OQbzY/mIfVZWXZBbGzzZ1zm0nd0F6xUh1S6lsslbG9vwxtvvAGDwQD6/X5YcLMpfwBliGdyivMt/Yc8dXBwALVaLZzSwBct5dUTmlySxkde0LzweNlbt25BvV6HRqMBx8fH0Ov1Vk7syLKLRWN4TC0fB8vlckUGIKgNodlMlg6g9KLPi3RzWUF1BW+rWBkxHUhlm9SWtC28QFsD7XRNhnCZqy2Ukb6l9NN6cNolbG1twauvvgoAAGdnZyGugLvpsQ5cP1n1SLUfaR1w9z4+Q/kxmUyCT4N00xgE8gdvC8/VApyX8qBarYa7z/EY9+Xy4jQJq72wLrE2s2jT+LpMvaPFe8oE7iKWFsYjHYgU2Yj961lIj/lSvuI8qh1Xv1xeLFhpt9thVzSn+/ME9GkR64g3vGgoKz6WR3biM9zBDgDw4MED+O///b/D06dP4fz8HFqtFiwWC7h37x48ePDghbqGZ1OQ7BsAEG3Z1LGt2fDUZuc0cFqkTVf4txYD8vIitUXKjIFQGTyZTFYWiVYqFdjZ2bmUHiB+DZpUDv07pvtf4iVeFGw6Llm0rDwxx+sCcTKWBquxUmjkISxnMRZAkp57QJUCF3hWICRPx3gdlLyKkbedFISg6csaFLGg4TpQNF8e2OC8abUN59NNChYNXqNXQh6jhfOWRI8WWEJHFY2ufr8fDJt+vw/Pnj1bcfAlx0gLOliBCut9CrRxhs80egHktsZ24Dtx8H4cALgUJIy1P83bU+dY39M603sXaZB8b28PDg4OAOCi33Z2dsIOT7rzVXO8EDTgjnc+4pFFABe7YXAiE4+KSw0u8j7T2kFyaNAYpwY/7TsaAKHfSDRwuvn9tzQwx+nhu4FjgZ88KNuRiSFGryZrvOVu0qBKtUPo/5psS6kL5zsvb8RoiH2jyWbpOT6LTUBYZUtpOU3cRkq1M7U2oXpuMpmEwL8VzKNBc5Qh9H9eLqfPE4ylu+Ot/HidpGBKUUj2dOo4l4I7PD2vr6c8bCsM/C2XS6jVarC3tweTySRMPJVlP1h2EadLqoeWjvcZ5a9WqwWNRmMlQC/ZLbGyKD2e/vPU01MW5jefz6HRaMD29jZsb29Dp9OBfr8Pp6enl3Y9SmVLNgKtC+exWF4xupEeutAM4PIEpWRfWPRJ74qCymGNLyqVyspRkNQOksaHZvvzvLWxzumyaM+yLJx+gAsoACAsHKxWqyu2FK2rFVvICy6P6H3h0ljl9eE0pNi3sfpwmcH7jO40r9VqSQtRUmzQFJlTJsrsb2l8euwmre5Wm6ToDEwfswGlMpAH0GfDu41jeXjt+5g+4+NSksFaPqk+BpX1/HtuI5ZpB5SNmN0qvbO+pe8sn8tqB++41vKg9vD5+Tmcn5/D4eEh7O/vh0Ui5+fn4ejqlDKx3FSejbXppmVZDJJ858/XzcseO4WPLXqahBeSjE2xkSQ5rpXPF9HiUcXtdruQv6PZmmXaetcdRceRJN95n6a05XWV+WXgOsksy8/hWFefeHVhqt4rQq/kn2ppOFaix3jcDcVsNgtOHd1FhAF+vpK46Co1zMNjvNGytTQIrQF4MN6LFIdLKp8qMQSd2OBGZyp9XiHmbb9NI6XOsUHpSSfBa9gVAR/4HqMAadF2F0rppZ1H+D/dCY8BEczr8PAQdnd34fz8HIbDYZiIxW9rtdoK7R5+SjF8rLw832rBcG1XhdRWmA+VN3t7e+GYE76KH4/CpXlJd+fxcmPjHZ1uvJNPMwSx7MlkAltbW+EoRwCAbrcLv/jFL+BXfuVXLuXf6/Xg448/Fo/a5WUtFgsYjUbh/dnZGVQqFfjWt74Fr776KjQajTAhOx6P4fHjxzCdTkOQrchdW9JzLb2km6bTKbRaLdjb2wvP8Gi8mOKmfMMnZGid6I4KLeCDefBgKS/T2w6fR1jBhZTvNtFeV+0ApMpHTQ57AmlSeTFIZUjO2GQygXq9fmnXupQfDWLyhR5YBgbVG40GzOdzePr0KQyHQ9M2sALVrVZr5V7OwWAAAKv2sRRI0ejn5Wpp6d8Y1OI2o6dcq3xeniW78gQyEEgftYFRv+ECIpoW4EI/zWYzeP/992E4HMJbb72VRLcXy+XFcci7u7swnU7DIiWaZ+zuS80mov1Ed4Rjmnq9Ds1mE9rtdtCvWh8g3/P+uC4nBdXrdTg8PIS7d+/CL/3SL8FoNILHjx+H3UzdbnfF7kTbgNqX0qIH/Cdd2UH1qXYfMeV77YQKzJsuROTjBe0FazdpWf3AnXtJfqJNVqvVVib0Oa9pNoXk5/PxFJP5MXmH9vKjR4+gVqvBm2++CcPhEO7duwez2Qz6/X5IP51OVxZfa8HqGD30H8Bln59fFcGfS8A+53xDy5QCM5p/QdvIWzfc8fP06VNoNptweHioXnGi+X9YJj2m36JLQ2oAaxO+NS8L67lYLKDT6UCj0YBOpwPz+Rw+++wzWPbDLtEAAQAASURBVC6X4hUsNB/OhzG6qZ5I1ZNUfvFy8B3aNhS4WCnluM08kAKOnrhdnjLo762trXA90Gg0gslkAtVqVaRHsuGuo+901TSV0S7YL4gPPvgA7t+/D7du3YKdnR347ne/C7PZDP7oj/4IxuMxtNvtIMNiyBMLtGRZnncxlNGGKFv4gqTZbKbeAy/RgfaRVoaHDpofxq+k2FTMT7Og7bi1kBITsPT32dlZeB873Si13BQ+uApdWDQNomxaPeP3RcA6+vFFbg8NqTZRWbaLBymx5jKwMhmrGaJ0RxEliAcK8jSQ5GBpQl/6zuocrwPh/ZYHBaw8Y8BAAxXCZXd0nv7YhLGaUs9UJ4+WUZazwf/2fpMXVjBDKk8LGscgjTXuuKPzMxwOLwX9qIGWBzHZYRk6Vh219/ic96vWflbgq1KpBGMZ2wQnbGez2cqRtfxbLyRH1JJZUl2RVqQB75Pq9/vQ7/dhPp/D+fl5OOIKd4tx45C3CeeT6XQKg8Eg3Fk1Ho8v/S21h5d38ugZLq9pkA1Bjx72BvvokcM0mMt3oli7ajQ6PShDxvA8PEGLTQX4pTGjyeJ1OdZ589DSW3zlNUJj9tCLgph8xoUmqcfNWnoBxyMAhAVFHkdayo/eaUgnEDSbVNMx1ntNb6BsoXeypeSbUk/rW2kSQsvfypu2Ff/HbWIM3J2cnECn04FerxeO85UC5amgZW5tbUGr1QonPdAFUJLNo7Wlpw1pHvP5PNhVyF+8naS2p7Svw5fIgyy7WKyHC5/q9Xp4nmXZpRM7+HHlHv4pSh/NSxuDUrma3ZsSUNR4KG/d0CZL5QFNbnnGU0wvafILF3y2Wq2V9kee4FeBePOnz/iY9PpPPC/Lv9J4h5cf8znyAvUlyorlchlklqc8TZ5o38XGSB4/OTUPTxmavYX9iTp8d3c3XL8jLRDl8RlLV1v0xXSyxEe8b6x64r2dzWYz+F1SebyvPfo7BWXY3BpoXbC+kp3Av8lDW8w2uiqk+s34jaSv8vjUGqjPixgMBtDtdoMd/9Zbb0Gj0Qj3y9Kj0mP0l4l1+VEpvGXpC2xHfpJWKrTvUvS1J2/L/9bK1OSchTzlSGkQNF5TFDH9b8HShWXDk79Xv5YRF/GkK2oXW2VpKEMeptBRVvo89rKnPG/+ecos0x5OzVfSpykyJC9dElYmY+kOKkqAtXLJG3iwCKPEaceG8tU36Lx7VyWnKiUpjxi8jIo76Xigfl1G37qE2XXEOp2BdZQTc3a97/gqbjqutIAI/k13bfIA7/Hxcbj/U4K0oqxM504Drx+XQ9R5pmWnrOKTdjoh6K7QSqUCnU4HxuMxfPbZZ5dkEtLC28oal7yP8O4yesyP9A0AXDpqD+D5CQc44fruu+/C/fv34cmTJ2H3D72viy7M0XYKU+DuoT/5kz9Zqbd0ekEe0IAthRUYwXfSDgfc5T2dTsOqU1qOBNyx9corr8Du7m5Ih+335MkTyLKLncm1Wg3q9TqMx+NwdFiqjN+EHNskPDLTo6c9+swKWqxbD2r1lILd9J3E3558i0A7ip3ThWlSHOdY4Ijmg/c2Alzsssf78KbTaZBF0kQN5oM76+r1+soKcgxOx3SSRitfiIioVCpw9+5dmE6ncHJyAsvlMuzqxHvoUgLikl7C9qaTEiibUWatc1eexBPSMylIjXXCxS7aGKY7hzAfutCF5okneHzyySdwdnYWdlfi1QlFxwc9qrZarcKtW7cCLffu3YPz83NoNpsrx+3zXXapwSyaz9bWVtg56tEZGs8ul5ePvo7x30usD5ofyvvXCphredCrMjCv6XS6MpmJ8hG/1crLExTSAv0SkN9pfahNjM/oaVyxsj3BFr7THuG58gXtQ2kHNaWDwrPLBqHpXek3ppfyns1mcHp6CpVKBW7duhUWRlKauE/kpY/Ld7r7PEZvXqzLj0e6UX9++ctfDqdwdLtdePjw4QpvUj3Ed6al0Md9SSr7MU+qJzEN8hK9kxNpo3l3Oh1ot9uwu7sL9+/fhwcPHkC9XoetrS3TZywbm9AlvC1Q5gE8txG+CLEuCZuO9fH4CuVnSsN8Poef/OQnwU5vNpthgb+FmA+xLlD5s6mYIsDFWG42mwAAKzICkdK/km7S/FKe1tLpXHdLJ49YNGh0aHXjNo60wJ3Tzif6y9BXlq6Wnn2e7erUuml8540df15QRp3X1UaW3ozJwE3KyHXAq2fWafOuTMZSA4/vGEJoRyVIglSaeNC+057xSQkU7loQMY8xkqLwPQENytQxoW3Rmceh89BYtqHGeSSvwyKl9yg96ft1CwYPnUVp4N/TI2BiwQhr7ElBGArquGs7cDAdptUUjESjZrQU4UurrS2HwYKlYDCPWq0G1WoVZrMZTKfTS3f2xGi1DLgsy8JEQrVaDUdIW+l53WgfUp45OjqCwWAAx8fHwbgdj8dh16dGH33GJygWiwWMx2M1qOBtE6ksKY1l6HP5S7+l/Dyfz4Mj79UDt2/fhtdffx16vV4I1uH9ybTPqCNFdRb9zQNd0rj1yJbUsVNkrOX9tog89Pa9BW96LMuzMydWVopNQQOfHvrKguYoWWm8wfdYvtJ7Gji3jnSk/YS/MejJd1bRsSTd0UrzpHKUfo/f1et1aLVaYfIYZbOHJ61y8T3nHcm+4jwjlZMXXvtNs3O9QR0Lls0yn89hNBrBw4cPYTwew3A4XNlBWnR80PbFKwekxaDaGLfGPh3jUh9RPrJsO8mmkvLlPEzzKBu0XJzEwIlygItrcA4ODsLkmLYAivtxmk1P20mye1JAZQjlNTqxxvUxP8LYA6mu9B1Nw99JY03Lj9seVK5JiNnoGo30mQaaDulqt9vh2PjY6SEe21BLp/nhXh/EGod5fT6v72FBGgvoe1i8IuUh8Y/kV3j4x6s7YrBkVRHdhvmh3Y8LbPDKkm63G07z4dfP4BiyjqbXfDuvXkrRXzQtHlfcbreh1WpBq9VaoZsvJrD6dBOxDQ+stsDFe9VqFXZ3d6Hb7cJ0Og16WrrmQEJKPbxySHpXdCxYNl9K3mWMHYtfuA2A6afTaTiRhi9C4Plo9uwmeI7Twv/OC06/pquorgZ4fj2WFIsvC5Zc5/RJvzXfRPpNy5NsPA8dMXpjtjMvM6VcnrboePoiw6vXNftbyoM/v279s0kZllp+zMbTvuH5WnK9zPrH+IX+LoMPJH61/AZvPoiq+BQuVoT2er2LROTs+slkcmk1Pg2CFQXfTSAF8TEALsHjoGnIyyxW0EVCnvtDitKzTqSWV9bg+CKB7tQAuDgCxtqxSvtE2k2oGUxZdnG3Hk4uaqBB75SV4FKQSfrbyx9WULLoOODH6nLZlGUZHBwcQK1Wg16vd2midLl8ft9Pnvs7siyD7e3tIH/p7lVKg0Q3vpd2Ty0WC/jggw8u9UWlUoFGo2Eas1gvgItj7bW68UBGWdCCawC6cYe8iu/H4zFUq9WVxQ383jAE73MAgN/6rd+C3/7t34a//uu/hpOTEwAAePLkCdy7dw8AAJrNJkwmk3CXJOZPeYkHIIs6f1dt5JUB7qRxPYFyJnZXvBUwTHG6rLxS8khBmfLLA371BKcF4PlY9hjeHtB8pDGLgQc+ocD1FAdOnOHOCTwKk45hustJAg2CAKy2D+Z7eHgIBwcHYRFOq9UKAVyej1Z/rT1p+0jBXNo2vKxN2VSSc0z7hu+EjS3EiZWF/zBfPHHg3XffXSmj6HihdVgsFjAcDgNPUT6gC9T4wiUpcCrVSSvfCx6wk+pAf2snDq2Dd7CPJpMJfPzxx3Dz5k0AALh79y5sbW3Bj3/8Yzg+Pl6RK5q8Q/pRh+MkryQbsGzuX9G+0+Qc6mO6CwPvfecL2fDd9vZ2oAUnmD2Bf4snkH6Jh6jMsOwgq648jUYPB20X3ldIrzYm6Pc4Mf/OO+9Aq9WC0WgEw+FQLNNqLywX7U9Pv1qQAqx0LPM7orEN6Ji37PwYio4/lFeYl2Z/5wm887pK+v9FsT+RftTX//f//l/Y39+H73//+8FeePbsGdy/fx8ajUZYcLFYLFaODaX/rD6nk6A8Tsb7Qoo/cTsIQfl6Pp/D8fFxuGv88PAw3IlIxxZd/ELL8/LspvvaKqfRaMD+/j68/vrrcHBwAH/9138Nz549A4DnE1hlB3+vElQWWfYzT48oW79L4GU0Gg2o1+swm82g2+0G+5kuGimbtusKqc34qRAofygmk8nKGEa5bvlt66AVQctDe4df1yXZn1Le2viMxQTRJuO6GMBevBuDpPNi6alO5Pz8ounGl3gJgPXNz8TGQYo+0GSKlfd11zMrk7GWYgfQhZXHAY01nicYLTVmrANTDDItKOZJK31rfZ+SdwwepeEpl6fJo0Ri+fOAe5G8rO+umwK0eJen4YFFvGcDgw6j0SgENZDPpECIFjTX2pWOabyThX4jBYek/CSH3Qoe5e0vq03z9r81jrnxTCesreBgzLCjO5FxtzH+k/qEGqK8DazfNNDHJ2h58EbqL62/qUGK+Wx6/Gn8xt/TsZJlmbqrReIDrF+tVgs7oheLBfziF7+AZ8+ehYAN311cJvLITa9zlZrW+j5Fdlt612NnSMFqT5k0yGhB04cevonRoAXjNNm9LmjBV06L9m3qeNe+kRx5iQ4anKLPeF5FdjdraDQa0Gg04NmzZzAYDNTjC6kMTbEtY2n4HanSd2XWOY8jo7UH/5sGuAHkk3f4WMD6Y6Cc6p91AeU6rweli9OryS3pe/yNAa7YTutUn4aOac6XmgzKC1rWZDKBXq8HT548WRkr2rjWIMknqQ2loJiUhj/jx01r9ZHGAgYHaXrpW40m6bui8I7XmD3ukdMAMu1W3nTXFACs3P+o5SeB97dXb/J+9HynxSi4rY+gdmas/1NlrMbblEdj9hLmE5NTedpqnaD9rdXT8k0Bnvs7k8kkXDlTq9Xg5s2bK5Mf3I5H3tVsC609PDYAl9X8nTUmp9PpymQr6hB8jr4lvrf6LXUMWnnwOhRFlmVhEdzp6SncvXsXOp0OvPHGG7CzswMPHjwQj+eO0SmNibLtKA20b6XJJD72vDpEspHLQqxdsGx+yg3V/VpdNtHm1wGc91CmjMdjaDab0Ol0YGdnZ+X948ePo8eOW/YPfy7Zhxp9GqyTAvB7y4f26H1PXrw+RcHtIA0xm/MldHhkbFG7SMPLPltFzObHdzStB572TZFZ/Js85Vnw6n2rvTw2B4c6GRsjhk7UxArnaSSBqQVTUhysIigivL2O6LqhBaXKoqUs41Sjz+prq1z+3XUx5iTDBmHRiBNx+Pfe3l4Yb5PJJOzGy7IsrMqn+Urt6+EBfg8NXcXLV+dad9XxyWRt4jAvYsESS7BbDrBWFjrddMJysVjAZDKBfr+/cr8qL4f3h+Rk07v18K5E7VtcaUqP1tUcOWm8SsdOY76cdimdVE909LMsC7THdqDlgWV8U1gOLd3JQu925G3Nj+zHtqzVaivvxuMx/Nmf/VnYpV6tVqFarYb+sQJiMZnwIhiJqUFEKx8LeY65tto+z071shDTo9ox4akGsDe9d2JECsqmTKrEAtKeILj3G4BVWafZl95yaJrt7W1ot9vw0Ucfwfn5eThNQKPByt9qO97WPGhj0VxGQJWW6W0bydbQbLrlchnsGrQnMHhnlTefz2FrawuazWYI+BUJOnrGCi7C4RMANLhIoU3uSX1KxwXdHVFk7NPvpHs5tbFYlvxD23QymcCzZ8/ggw8+CPdYSgvBkKetcYTtpY1l/lzyNyVbTPpO42PqY+F7XJQ1nU4vvZPyjZWv2a9l61m+o5r+TydLKd0pfr4HSAM/spjvSI7pJQTfwSql9fgPtM7UH/PYaFKfx4JNMdo4JF6S5Im3LG3s0PrklUfrBB2TKcDTDs7Pz8Pd9O12G+7evRtOtJFkTZZdTAYul0v15Cit/aneps88ehYXePJd8zjZOB6PL9GDE82YL/p4MVlbJsqwQ2heWXZxctdwOISzszP4+te/Dnt7e/Dtb38bRqMR/MEf/MFKnT3jjiPF5ikKlLP09CsOeq98zIbktNPYS2yceMeRt12oPM9j26fSlYJ15JmaL/YJjbPN53M4Pz+HVqsFt27dglu3bsHh4SEAXCy4+MEPfgBHR0cr4x/z8pYp0WuNk1iduI8j2T/rjv3x8vPEUrhNT59pabV3Vx27WRd/F82ff3dd7IirQFlt+BJxXPV49ODSZOxsNoPhcAjT6XRFyNKAtHR/Es2DGqOSoYC/eR40rWR44DEX/MhHTgOHFnCQnHXtGw2aE50yWPIMLInmPAooT5ll5SMFPfLQfB0EU0oAhRsMVgAzy7KwEw/g8hGAWt60fM3A4t/R8U4DEJiHFFimdaCORZZlYQVfytgsCm4IeXhLMp7ob0kW4ft+vx/e03u2ad60DC7jAFZ3A9FAJd0dOxqNLh3NrgX8pLLxf+QjyeC0HD0tb+rkacFLjtTxquUv0ZKSP5fXliE/nU7hO9/5Dvzqr/4qfOUrX4F6vQ77+/twfn4eAiXb29vhfkHkB09AQHKiyxwXRYy+dX6T0k+SvLRknfRNGbR4wfMr6ryl0ucNctD/tTw0/rHsOy1fSx7zgJFHb2hyx6JH4x0AWJHl+AzlOtq+eFQ8HnUemxilkI5MRd1K6fbqTNpeZQUBPHawxN8xmjX9gLqQT55zGqzASJF6c7mCdwAfHx+HY1TpkfOevGh+fBegBUnHaumQV2K7fzzllSH/aB7Yj9VqFXq9HnzwwQfhepnJZLJiU/FjbiltGi/ydrJsl5ivpMkpfl8bf49Bf/RLJXvesvFpXpJM8iCWXrO/PHY5l5f0Wy8kOzrLMuh0OrC7uwvb29twdHQEDx8+FK8/snRKnvbSdJ5lI3G9pNGDv7nvxP0mjS81fpeeafa7l07+LNUW8yDmn2jl5rXjU4BjFo/5/fjjj6HVasH29val63+wrbEvcTJWWzSngfJCrO9pud4yzs7O4Kc//SnMZjOYzWZQq9Wg3W7DeDwWF+F66LWeS/LUa7NxpMgVbPtarQYfffQR9Pt9+NrXvgbb29vw2muvQbPZDNfwoC63Fo/HULZPZsl6yX7w+OfYftznxL+lBfEpPopEv/bOC2/asn2zdeWZN19qd2Kb4NHO+GxnZyfYyN6j9z12PH+X6qemjomYv+ix9S1Ii6aQXz31TK2fZt+ti7+8WHf5efNPiUt4vi3b390k1tmGRRDTdyk2m+Z/aN+nwDs2PZDo9sggSbbkxcpk7HK5DCtzuBHIjzrB5zEiuDMmPeeVWS5XVwvhO3SOrTKKIDUfzUhal9DgZcSCNTFD3jtQPN9JNGkKSnIoLWxaWFoDUYPX8KEBV/rMalPcbQcAK8cVpzi2nmfWmOQraWk96Digx7SORiP3rti8hrkWYLPy1RSGxo/SfdiYtt/vB3ml0aYpN+xH6ijSdqbHFaNDLcGjEJCGarUKlUpFDTBiWikv6ujxNkt19PME0WLyjubtDWLwYIi2i2g+n8PXv/51+Ff/6l+FOu/v78NgMICtrS2oVCqws7OzckSxJxgl0ZL6zpM3T1eGTC2q0ygdMZpS9Z03aBjrj5Q6xsrT5I5WjhUM02RdjAaexnIiJaNToq2IvUPHGM/PUx98zwPe0j3p/LfEI9IkEd4HiUeT9/t9mM/nUKvVYD6fw3A4FPNL1T1SOi0P/p20Qn4TdpOnnyVZrOlKaSdzWfLKSyfqx5OTExgMBnB+fu6ejOX5cZ8JwD+RHQsY8YCrV+fxvPDbstqYypRqtQrdbheOj4/De77TkNuIXj1P01vjRZJdHp2MEzYS8DhB+jtGg6dOFijdmu+p5RvTNTwvix/zBB+4n7C9vQ2Hh4fw+uuvQ6PRgP/zf/7Pyr2cAJd353IaU8DbQuJ3qX0tu1aTtdZkrFQHqju8Pp3Vhyky2Tvuef8Vtf0oHXzcxOReGaA7sOfzOXzyySfQbDbh4OAAzs7OxG9w8pbuvqabFDRdTumXeMwjL2ifa/mfnZ3B2dkZdDod2N7ehmq1Cq1WK5wcwSfqNHBZYdl3KfJHSxuT3zxPzKtarcLHH38MH330Edy5cwd2dnbgS1/6EtRqNfjggw8A4Lnvru0Etmjy2mR5x4NUtlauV+7xca3Js6LX6Hj9cWssb9pWva6Q+mQ+n0O324UsuzhuvF6vQ6vVWmk3lEea7qCIvZf6M0+faHqV/22lsdJJ6bnP6tUnVp70meQTW/KZtnVsjHyR+X7T8NhW1xkeu30d+aeWEdPlsXJSdC995rHnU6DFiCS6OG1ee4ZiZTIWd19ZTj0PVntXnFFjkEKrKN6dRBEL+McEvEVbHsQUT9H8i+AqBI3VHtIAi7WLNBA20ZZltp3E79oAxkkdTLO7uwuNRiMc2dXv92E6nUKj0YDpdLoyQcfv6rQcdg+sO1DxWZatBr1x0pgb+ngMXZHVqRZwohrpTKl3qgLC9N473aQ8arUaVCqVsOqRpsF273Q6UK/XYbmUj8OSFI02SS+Br5RO4XlLP8QCBmVCU5QeueLNX8q73+/DaDSCer0eJmCzLHPdFet13PMocy+uoxGqyRe6yMEblOB5aGm04ExR2ZmKokYjwltv63spD04fDz564Qm0aXR6jHGcNKXPPIFHWm/pTm1pbC+XF0cD4t3tXBdyHtKOmMNvU+WYxb/rAF04ZO30TC2fLq7kbUghlbUOe4LbEKPRCCaTyUpZsfFq6UDsa+p0ShN5lB95UBW/ozskpCAUTY8o6+qAMgJJVtBMa18rYBYLttD33BdNDdyVAV4m9hW141JtWisQSPPRyo4FbK124nYo/Q4ntpHfnz17BlmWwVtvvQW7u7vwxhtvwPn5OXS73Vw2PP7zTOxjWq89kQpp8jUWF+Dtb91HimnzjGXN95TSxWRxHhsp1W5YR/9kWRbiSwcHB+GYcQ6MhbVarXD1CN2Zhm3EdYOkH4ra/JINRtPSXXX8yGJJT3rla5ntT2mWxp63rSRf4bPPPoPpdArT6TTcAUx1JC6ckxYhXxWoXKRH3HthpaXyg9ob9Luifk7RdryOfuimERtvw+EQZrMZvP7667C3twe/8Ru/Aefn5/Dpp59Cv9+Hp0+f5rIN1gmpTmXGAFPqy39T3vfqaW/enL5Ympf8/xJfVGwydrEJePzUGFYmY6fTqXrGPw3CSU4zJyLmfODfksHPA6Je49/raEjQlKKnzFhaD5OtS0lq+cYcsTyw2j9PAPdFG5ye/o8Fzeh4aDab0Gq1AODCMcSdptVqdeVOTulbS9h5+0AyWPh7Cr4inNJl3eOp0amVyZ0MNPSkIDr/Riqf9w/vF+k73jaaXJSe4e5Uelcaz7vRaECr1TJ3xALApfbWII3HImPRK1fyjmErIBHry5icsQKJ0nsu18bjMQwGA2g2m9BsNt0BzTwBGU+752lji8YyDAvt2xQepTKNBhSsNvbSbjlPsfGfgpTgpyddapmp31E7j6JsvrBgBdKtculxwvi9lofmGGtHpvIds/QIU55vlmVq0IHbtvSbPMExTValHJ2cWoZkm1tpLWB/Yft6FxRhH63DRqQTIvREoJhtQG1cS2fT+sYmVLifRMcntpP3PkveZx77yDN+YtB41NKzAJd9Q8uHiOlFqd/yBMSk8suQg1bg0Lr/lNLEf/N8rXElfYvfaLLSo88oz9FdhL1eL9z5XKvV4ODgAJbLJfR6PfF7qwxejmTL0fe0HYrap5K+xPxjtmosb29bp+ZvpdfsYFqnWBmxto3Z53nGpQXuG+Cz5fJiorVWq8FwOAzyGMvHv2u1WrDz8Zh1lLsxOzqPrJH40xrjAKt3JaNdErN/YvSU5WtYeWs6IIU/lstlOFq6VquFe9dR5uAid8/iBUt2eL9LAaWT+jv0fUx/cn6R5AfmS08eWMe9wZL+0NJZ77+ooPYcwMW9z5PJBBaLBdTrdXjrrbfCItDj4+NLk7ExPozJXk6L9H0sjZQWeZtv8vDm74kbcJ7i5XN5rF27ptl3lr2q2aZF7YyXeA5LFuaRI17eLROemEYe+62oHVsUKeVvMm6kjT8rbpFHBnnKiGFlMnY4HMJ8Pg/GJgCsHDtKhRlfYYbHvXhXa6Iw5OnxvkkOyyHl6VNWjOZlZI8xW3aZAL7jRbiRtW6F4BEwHFI9Uib+rgu0gA99n+KE0Z0ieCcVwOXxFsvHAt/dHgscxhQFH8voDGIf8932RYG7b6VgldTenvEmvbfGmrULkhp2NN96vQ5Zlq3sHsa2w11d6FjhvWq87XESPs8xQ8vlMtzbZikuK2jH60hR1q4bTk9KGquvsT94EF9Kj7utAZ7XC1eiAlwslKB9sFgsYDgchuMLY8GQVJQdoLouZdEyAfRxWNaOY6mMlG9jsBwGfM//loIr/Nt1Bi9T9JP09zp5hQdGLeAOAwret7yt6XM+Xnl9Ma+HDx8CAIhXZmTZ6uIgDgwKelaIazIaF2TRXeMYgCx6/Bwtl5ft+Y4HoaU8y8K67VkeyKUT/RxWgAmfpU4eb21tQb1eDzRRvqFjXgq+Yh8sl8sVW0wqf51+DLZhs9kMNmKZerFMUP5F8KMA8RlNz4Ph/HsKSf5QG1zTRTyQiP8wuC7pkryBKk6bxFf0Pf/Okh/o3z979gyGwyH81V/91YoNjHavdE2Rh2ap3nT8eXxMSrO2OETKh/OJVgYth9vc1uQFtV+prOd8qAWjLUhjuWjcICYfpICYxvvaN2XQVK/X4c6dO3B+fg4ffPABLBYLaDabYXMCyuFarQaz2QyOj48vjXcruBcL+lrjlNod/H/6jRUfowt/PLxdBsrsMwn0RLBKpQL379+HBw8eQJZlKztgh8Mh1Go1qNfrpfuneYD9gX783bt3YXd3F3Z3d2E0GsGPf/xjmM/nK/IPvwGQJ+olv13zQcroi6vwD1908DbT2hD7Gq8LxJj6//t//w8ePHgA3/rWt4JNSONBAM8X+SPWdRJdHqDswR380iJWDSl6iNpmsbgBlaOYN8b1tHirhxbpXVFd+hIX+LzJnutQn3XGcsrQO2XG5zSsY3xatp1Un5XJWBTsfKcWzVwr1EOYBIlID+FavrGJJa3MVDq1ho4FXmP5euBxrDbNvJoDHPtm3XSuE96BmyfYDQArE3TogFvOqmecaEa69czjWPFgFQ0upTpBMcFIgzVSmxR16r0BhJS2wyA9Gog0qEKDUQh+5CZNR/NNHT+Ww5aCq/oW4DJ/pOgLXn5Mp9FJoPF4DGdnZ9BoNKBarcJwOITj4+NguGMQgB5datGv0RR774XlFMRwHeWyJ2Bp8XaqA0XLzSPr+d88kIbP6b912APe76xANv8bf3sCDNK3sbrSvGi/ewPdvCz6tzTWrCA6bws8Bg8nQyW6LBvHkj+YXrOf8B/qQJz4pbtBiiIPH3plcJ7+w3dau5Upq2I2fWo+CIsvuWygddUmpTQ5J/GiNXbyykTrvdSGGPi3xhnnu5iczysvrb5NsY0sX4fSKT2X3nP+T+U7q31jdHjhbRdN92FwdDKZQJZlcHJyEhY70Mn6FN2i0WXxB+XRGD9aQRUr3xg0Xvf4WJ6yPLaQpdO5TErJPwWa/vT0kaVbtfwp3Wi77+zswHw+D4u56EIn6rNp5Uo0cHuU97G33Wg/0Hys/Gj7UftSotFTJw9tHHwcF/U9eDl4x/TW1hYMBgP19C16ty/mEyu7KE9bwHosFgtot9uwu7sL+/v7MBqNoqdheXXeOuuR1y6gyGNfllWXsvLK6xfS39zHQSDPYkzh5OQEZrMZ9Ho9aLfbYZIW7Sp+76w0LmP2V9mQ+pieBmfpFOl5Ku9Tu9f7vWabeXg+VsYmZIuG6zh+NOSxobz2QSry+LEpkORAKl3czlgHUto5b52scvLaEnmg2ZQpbeyxMThWJmPpjtgYyliBL0HbbWDduZUCy4FeByOvI1AUK8/j1EvHocTgmVTTHDc60UQDTBRXoaTKRJ4x4REuo9Go0Cq3mADVhLlnjMznc6jVatBoNC7VnxuImKeULz1mKaU+aFxS+tGIRWO1VquJQYc88AR4OBqNBtRqtZV0i8UiHD/D89ja2oLhcAij0WilXVJp9vCjZlhd5VjkvFhUhlr5cAVP+RNXp2IfPX78GH70ox+Fvvwf/+N/wGeffQYnJyeXystDc9HAyIuI2E4VeocnvXdOSsv/jhlE3jZGGUPHk3dnI7ddsC40X/qP2yfrGoc80Ik7wTFAqd2pqP2W8tXe8/HG62/1rxW45fTydFtbW1CtVqFer4f7xXiZXLfg0Vp04QwN1NJ6WHQjfXQVO/2W7l60QHdoVqtV6HQ6kGUZTCaTS/fllgEvH3qDFfS4XxpEksr05K/lURZ44MjTtrGAF9ad7lblPDabzVQ72UMz5ztel7x55wEPhtOxmWXZpV1AVrAH2wzHJb9zGPOnv/FvaZExlz84OcMDCvRvfmKJtMOM0glg6wtJdvGyrfQpSP2WjtUUGY3feoBB5vF4vPIc+4vugosB+4/a2xx4Mg23JZBeqvv4btfYKT+SLpCCO9r49ECyExDUX4jtxOc2TWrQjI9TLYillW3Vm+pL2p64s8qiVbPnKT04KXB0dATT6RS++c1vQq1Wg6985StwfHwMn332GVSr1Ut+7XK5DJNljUZDpSEFXB8U1d/I37ydtBM7JP8/lRfot6nfWfKe04npqY+m7WKrVCrQbDbDAtkicrMsSOUvl0s4OzuDra0t+N73vgfHx8fw4x//GAD0Y4U1G9gzNmJ97O2PTaJMevLw6SZiJNh3yKv0eq9erweDwQD+8i//Eur1ejh968aNGzAcDuHs7Cya/3XoUzwZo16vw2w2u6TzAXS+pEd5W7qGjgP0q6Sr0lL0rSc+qY0rHmO6Clzl+HmJNMTihxZ/5SmL+kaSPbwpePwe+rdlYxehgZe/Dn0o5bcyGSsd92k1TJ7GkJwIj2HtzTeGGKNLQtMyWvLQ4E1rBaD4+5RgEc/fw2wxwy1WLgYfY0EJq9xNDZSyYRnQ+J4LGmxTaQLC62hrARNP4CclIErLkwIRGi08qCAFvmLwBD6ksuh72t487xRY/Ck52rEgRJl8rSlZScFpAZZNjTNefkwOFgU3lum/+XwOjUYDdnZ2oNFohN2wo9EIHj9+HI4s48f0pwY889TrKoyl1DK1uqXkQ4OyZfY5/T9Gk8WDKYGk1HdF0qaCO62ptloM1J6M1UNzXr06wuov75H/lFbpb7rbD/PW7DArCMZ5kOtMywanO8nyBkXzAsv09ENMv19VkIJDs5li0HSmlIbySCxv/IbybJZlYTehR/5I/Mlp3jQoj2t2sQbLN/XavfhM+i3JKMrrscCaFTTQaPLIDakcjdYYHVYbW3RJfSXpB95W+IznPRgMYLm8OE4UF8dI7SDRLfWH5INI+Wk2piRHU3wRLotj9GtpvHJV+50CukDGe/KO5k/xdxJ9tH29toXWHrS9JZ1p+RJZloUTiPCKLnraBeaF98SibYQTfKh/Oc9JdEp19vrG1vineXv0vyWPuK7W6JLK1NJZ5fGyrLERk1cIOnEuTdp4dbk1/orYLrSPcNE13kncbDbhlVdegXq9Dg8fPoTlchl2/Q4GA7V8j0yRZLqGVFmSxy+8DtBsgjJka5424QsoeJ/N53PodrthQUqWZSvXlWAaT53yoqidjnwPcLHQgC6a8l5zmEqDx87mecfsLp7WQkxevIhjZxPwyqt1IFam9d6rq6RvUuxDnq/XD/fCw9+W7ecdP15o487j13jHqgav/vTkr6Wpik///x9Yq0sp+AplC9TgjwGDDl5o9/PkHcyaMSrtYNACAOsEH4AYsIkdqWM5KNo3MTo0oIOzv78Pi8UC+v1+LqeL0209Kwt5jRgpIJDCx7VaDarVati9QzGfz8NdstpOGsuxsZzovJjP5ysr3GKTJtwhjn0jpeffcLmi3enKHbe8K8M1SIrCky8eO8mNQMkojOXp4Vnrvluef1FF5oV3vKUas95+lYJ6AABf+tKX4Dd+4zfCgpK//du/hXv37kGtVoN2ux2OCB0MBkkBPE2XXFess/8tI0q66y0lUElhtbcWJNRkTqwsmgb7WqoHDYTy93RRxrrHH+4EWS6XybsstQCGtDiB18cyslPbOobpdAqDwQAqlUoIaiDouJfkLuoUvruQHinG89Oc+tgKa+tbmn+v14PF4uKuXDy2r0xI/ajZYXRykKfhO2JR13knxjeBmF2aJy/NtqZ3fVHwgHi1Wr10n3y9Xg/2obTr9LqCy1UtEG8B0+IuL8zXkut8kTH93yNjaPuinbZcLmE6narf07qtM1iN+Uq73rSJNY8OLHu3OcoE2paTyQTu3bsX6Oan2CDd1n3HGjAobdnhUvAbkdpnks9XBDGfnI6bVBuS540nG6E8Qb6WvqPjR7JnKB9qbWiNwZi+89z5i//TEyzwW9pe+Pd0OoWf/exnoT54zchsNgtyF0/UqNVq8MYbb8B0OoXHjx+He2Ut2iV/RdqJYrUPIqaHMY1UJh3/tD2oDVoEqX5iTO7S/ozlifZFvV5fsVmwLz100fYoAxLd2O64Q/DTTz+Fra0tePvtt6HdbsM3v/lNmEwmcOvWrVD/H/3oR/Dee++t1BXp9QJ5lE5Qr1NWlYVN6M7Ys7LyjqVHf4TyLI9RnZ6ehn6v1+tw48aN8A53idOd8Xlo2RTq9Tp0Op3wu9frwXA4jH7niRPy9HSscHtC09uSftM2VXjjEVI56+TxdWPTtL+o7UThjV9KuoO+K0t+b8JnlMZAmXVI9R/zoAxet75XJ2M5EV5whilj8MQM9Ng3klGbWo4Fnq9m7HjqYQVePQ5ajDYtEEr/1uojIda2jUYjBDF5HT0OyVUiVcHS4EsewUnbRdtBLAWWeB60b/MezSFB4iXqyOE/z1EePF/aRtoYSD2qnNLloYPSoiE23mg6akhbO11p4MKTJ7YxpZW3HQ9w0OCNVAbP1+KTdY3Xqx7ztO1wlWa1WoXxeAwPHjwIbXh6ehpWyksLX1KNjJixHoP2zXVxxlLtB87TlgOTomO9tHBHS2tHSxZYfKDJt5S0XtD29PKldqyTtzwNXjvMm48HNC2dMLXGhof/pPz5hKOUl5Yft8OkvsK+xBXluFOfB1+LjvvUtrf61evApMq9vD4JQLq8lcYy9rE0UWT1r5cP8H/kVzx5gQZVtePayrT5JKQ6pR65o9nLkoyU7ESpfV8Evef1CzSZhX1Bj1OP5UPziNl6Gr3amKd2Jk8vyTXJ/7QQk83tdhu2traC/UYnFimfUJlJF9VI45PrUKncMlDUduF08nGhjaUUnpB8tRQZ6qmPlSf3o/K0Ge1XtPW73W7YoVitVmF7exsmk8nKggv8O3ZtUBm8IfWbZg94eFKTHanQxnssXUqeqflI9q3GFx568/hwFl1WWZim2+1Cu90OPMY3wvBd215oevVFwVXr8E0C5QxdaIbPEVRH4caM6XQqntJz1ZB09Ww2C7artIioCP2WXWrpK0mmSfa+FluLlR3Di8zjm6a9iO9xHcaGZVdxWLFd/K3JCa+tlYqYfvXYhUX7QfJ/YvTy74rGRjy6nSMWy4tOxnLDnBp/KSgirLwoIgzLDlxpTnGKw5lKRyxYvGnBmWUZdDqdsKOMQwseaOmvGyRjg48XNDpoIA2fS8IBDRa6M0kzFuh3+Dff6ZkyMaopBAzwSfxE7xqczWYrddR4TnsW40/clQAQ30nL+0QCfZcalLJABXa9XgcACHfASXc1a0fbciMc+xdpjQWmODh/UEjBvOti0F8FHTj+Go0GHB8fww9+8IPwDulBJ+hFgeZcXCWs/pXkKX+fWoeYMSWlp6d+1Gq1cESo51teDpfdFh0x480D/Bb1jWcXHd6tOplM3G3sDbZSGqRAIv6Pskhz2lP6nu944fRkWbYyycXpQLlpGeBUNuNuGn5XsJdm1HHSrlFsj+3tbWi32yFgzGlZN1Im6i0+5zqYf2ehTJ1tlUEnNvg9lnQCPk/eCD7WkQ8nkwlUKpVwTxjlR34fKZ+cTbUPYrR65FFe/tOCxh6bUAqe0W+pzeShb1N60aoj1keSkTwPatfRO025/NHKKkq/RLsWMOHl1+t1WC79R8drdGAZN2/ehGazCd1uF0ajUdhpgzvRaHr8Bm10PHGI5015i/MSbYeYryPxOP6TjsfldFB6rLbA9o/ZKeh78PLwuSS3NX/U6rs8MkmKO0nPPbu8ad/xMpfLi0nWJ0+eQLvdhjt37kCr1YJWqwXHx8dwenoa6jcej4MN4a2zJwAYswEtfqD1p/rJgub3liUb8uSn9bcmNyQdgXYcjUtIsOTpJkDLxZ28jx49gslkAqenp5doxztvd3d3oV6vw2AwMOOLXI5I7Up/X0e/8LphE+2CvFur1cSFo5xfZ7MZnJycrMTFrjvwPlzk+9lsVsp4tHicp/PEyfJ8R+XRdYidfZHxIskxL+9KKEt+l60TvXQU7SPvWMvrk8ZiPmXiksVCAw+WY0CDVSkCjk8IeBw6L7Nqjk8sLYXlJEhOv2Uox2DVXXqvtUPeYJaUxqJdoktLj0f6HB4ehlV+6MjgN8PhcMUB1lZMXQejmUJzuhuNBgCsBipxElZyHHh+WrtKBrT0mz7nx9dpdEvl8bSWHKCTr5KDQOvtPRI4RjMPhkjgwQ4pPz6WU9rH8472K67Up3RJ/UPbi9OqOfb4HQ8Ua7R4630VxoxHHq2LLqntsb0wYAcAK31ZhCZJblv8WgTa+PbojFjaPPKZGjNan3vyLRpIipWBR1FjGePxeGV1ryXz8pTH0+JYLZMPJNlJg3saD2j0lEkf5lOv1y/tBpTSSc84PbgQ5uDgADqdDty4cQO63S50u12YTCYrk+1Yf1o2t/uo7avpJw0e24nXicuDLMtCUIMv0ikKj7y19Kn0DOnDYCn2T4xnLFrWpQNifM11tFdW5e0b7F9qQ+KxxdJ9hZROyUeIPdPg4XOrT2m/xSYMNmXve3mI9zNtbysYgHWVxovXb+Q8KPEnpamITrZsRA+tnD5MZ+kbaRLWY4Pwb3ChY6/Xg/F4DLdv34bxeAynp6cAACsBbo1+viiS29XeMeCFJT+Kjk2urzFPLS0P6FtpLblsyZlUaPrck6dEp9Qm+LxarcJisYCTk5NQ1ng8vnRikEVnrB4afVr9JB88tSzNv8zbJym2Xpl2Iean5c3LkeRKyphK8cGsdtW+pTYk/65SqcD29na4SqPZbK7kh7IMd9FaV4FY9dLqUiby0nHdsM5YCPVvarUadDqd0K+j0ejSscXL5fLSIowiev8qwE94Qf+ALpjJG7/k/kVqmxSVkQBXEzv7osDql3X7h7wcTd6XMR65vtJsq5itHkOMVkvXevwZzf7J20Zae3hiFx66Y98iUr+N2QYrk7EoCPmdBJKTjcahFijTKsIn2rQVsdIqRk+jFzUyUxpYcjI1GqRz6i1arLxi32j0SuCDQqtTjD4+QJvNJrTbbbh582aYpByNRisrt+fzeVi5jA6Rtnq1bGj94OkXaTV+lmXQarXCLlh8PhwOL91bwgV2jBbPqje+Ct66wznm2NK6affPAMg7m3lAyHIQKK95FQE+8x5xzfnZEpKpd7FoPCo5hnSlo+cYQc5f2pEuNMCg5YXPab/xZxzSOJR+pwafPM+kctYNLsdoW21tba1MxvIJnNQy+DPad9Zx1pSuvMjTruvqC43/LB7j8oLLlzKCTPTver0Oe3t7Yaw9e/YMRqPRyt1UGu0pepXWxyOzUurFf0tGrHbfPKaTZA3P3yOLPciyi8UP7XY7LNhK3YmJ/6MurFarcOvWLbhz5w587Wtfgw8//BB+/vOfQ7fbvTQZSxeEcR1F244uruF9TcvPC/49bUtcFECDGmXf84jQ9Au38y3Hhy9eoIEXqbxYfpwWS5dJ9oPmtMfqw+vstQHygNs5qIswEEvTSeOa0iKN2zwOqdU33n4rOi7KgsUzNA3Aqv1FeRhlpqazYjzh8UOQTqvN6U5t7+642HOPbtbSeb6jfoq1UFMb7/RdpVKBSqUCJycnUK/X4dd+7ddgMpnA+++/DwAXQe7pdGrabdhuuDNNGldF7A0pfdG4hSSvPD48z0OKT3DaeKxAgmRbaO+0evCy+HOuk7W0vB70e54nTnAdHx+H58hTks9Gv+W+kkeucFpQjgDIdz3jP6uuUp70/6K8hvDWL4aUPGJyh+s2GrewbFDNXrdoK8v3QLub01GpVKDT6UCj0YB2ux0WgyLq9TosFouVe+QxDz5Jx8dfEf+9THja94sCyquNRgN2dnZCP56cnFyajNVs55gvBnA1/S2VSWOktVpN3IgTs2MkfUdlpGZz4LeW7eX11VPjV1c13j7vwH73yI6y9CDmlWLXe+0nKa3mxxbRx5Y+SGlLb3r6nWSrWPnzcjzt46FDQxH+iH0rleu+MzbFwExhDI9ikZ6XHfiI5SF1dFkClzNVHqOuKA1FwNsiyzI4ODiAvb09qNVqMJ/P4ezsLASQxuMxnJ+fw3g8Nuu6ruCiBm+7YxC22WxCrVZb6TekeTabwXA4hCx7vmMWQF98wBEbR95gDebFgx3euvJAkzXutDxjR/nFgoG0brF7sax8Ut9560dlI1dOdPFBHkh9xZ9R/vOWhel436TKwc8TpAAUPd4Od8pZ90UVLf86oWjQpYyguzcgXATS+Nra2oKdnR31uDMM1MV2TGAb8KCLZvesA8vlcmXyRgoiIY38qHkOjyMTM/Dz9B+2Mx2PUlkaz1YqFWi323D79m34zne+A1mWQbfbhcFgAJPJJAQENH6L2Vg0YOqBVgdqa1v54VUGZdvBXqQGUnkAQ7vz3Juf9VujNy/vbQISXVtbW9BqtVbkh4VUu8ir87Vvs+xiAWKtVoN+v69OdGGf46I06b7bmFOPz/A4V8zLoi+2sImW7QlS0/aSfB7uv1He1nay4HscE1rZGp1FcV3Gg6f9pbS87Tz14bv0kU/a7falhQ5lI9aH/OhxCo3fpHTcH9H0F07eoy/O/QLr2xQbQAJdQMD1gySrPWOZ1l1aLMXz4nXEY7P5NzT9dDotHNDF73HxtlYXSUbmtcs9geDPi38n8U7MbvDUnV/jkxrvtNDr9eAP//APodlsQqfTgU6nAwcHB/DkyRMAuFjYP51OodVqqT47f1bmxMNLlAvsm2q1GmJFHO12G2q1GpyenoZTBK2Y+YvUz3RBAfqdVAbhQpjUeIslNyVouuzzJA+/CIjFkctC6vwW/ztls4/Xf8mDPLGKWLo8OvWqx9h1GedJl3N6mEialJDAjW/6jP9Nn1mC00tbCqygWUo5qUxpBf+s9vIYh1KwoAhdXPFl2cVdsfv7+wBwsZOs3+8HpTqdTqHX613KgytRr7BIGUxanVODgRgYxh1zaDRgPvP5HEajETQajZXJWHT+PWWnTkTwYBDPC8eOtduVP+Ntm8fYS91xKtHBHfQYHSlKwfPOCrRxOikN2skB2tjl4AE62oaUBvrPG8gCWN0BS+VrEaPeKzO9wZVNggc8+ErNPDtii9CxrjxigXjK70VoSQkgFw0yxZ579dxisYBqtQrtdnvlFAQ6vvFYv5js0AL3kp6WHEj6LmW88LS4iAVPWeBOAr7n9xRZdfPaYZR2r52GY4/rLesbXi/+vtFowP7+Pnz5y1+Gx48fw8HBAfziF7+A2WwG9Xo9ev+cZzylBK61QDHPk6bH59LOjzICb5JuitU79l6z7Sj9qYESms/nDbRdcDEj1ztSu3P5UVRmxN5l2cUO9larFU644e/xfzqG8UhZahtp9pRGh/QtT+vhG0qjNyDn4dWYHUXvHk0dcynwBiWLlpeqazli9kisbK4fYjpM4sl6vQ6z2cycjC2zb1LiBJq/6m1nzSZH3Y/H3tPnKf4ntkuK/0DbUhoDNE8PvONXq1eWZWECQNJZSAvec4i2VGofUF6nbabVR5INXrmk1d9rh2n55skvD2J9X+Z45OVq7c/L1xbxWZDoHo1G8OMf/xgajQbcuHED9vf34datW9Dr9SDLsrCzv9lsrnxLdYlUD4nuTSGPz+/p86JYF9/kAV2MwuVOs9mEZrMJ5+fnl+wF6fSeGGI6cZNYLpcrC/Toc/T/ME0qUq+RsvQPfeaBZR/y95bP/xIXWJcMS7FvUmw1+t76LtVGShm7ZbSVp86SfI8tKpXyS4kned5p6TQb7CrA6V+ZjE1x3KVvyqhUrIE/T8KrDAMOn/O/vX2Jd6LxfCxYR0l86Utfglu3bsH+/n64KzbLMtje3g5p6bEbABCOJ44pPq3+6+QDj5DrdrvBgcf3W1tbIZgP8Pyo2kajAVmWwXA4FCfWeFleY4D2I5av5c0FX+y4QP6t9E67u44HSejzvIahdScqLdMb4MozSRwbZ3Rs8XpyI1pysGl70jbnAScvYoESqb3493mwTke9THCljO00Ho/DszJ36m9qV6SE69gfXK97ZENe20NLi8G16XQKtVoNXn/9ddjd3YVbt26Fb/78z/98ZSFRqrOGQTzkNzruPAECT5r5fA61Wg22t7dhZ2cH9vf34enTp3B2drZy5G+WZSs7f/HaANRV3GD11i9PcJIfUbW7uwuvvfYaHB8fQ6/Xg+Pj45WxSAPm/L47zBsDqxS4C2hnZwfeeust+PDDDwHg4qgsPKoQ0/AgAQJlg3Z0PEXqce+ajJZ4fhPI4xNoaeg99nTSnwe2eV2L6BDJ+YqlvS5YLBYrsgbrgOMzthhk3ZAWFfIxgZOus9kMXn31Vdjb24MHDx7AYDAIR73jRLPlh1C7iMPyi/g7r3wtarfE9BeeqlD0lA1pwsBLuyRjUvxHD6hdRfWdZG9J3wLod7lqmM/n8PTp03CvMsCFvuC8gzTQI/q97cbb3dte3viGJbd42fyIYYDL48Sij5/2otFojSV6xPNyubrLSxtPkr2t0aD5/VIeki0Qg+UT8XJofbw+gZcGz7jQvqV/e9pPKi8vrsLPo+MgxTb18jd/HisjVQbQ/OgiSX4az+3bt2F/fx+ePHkC5+fnMBwO1f6lMQV8npenPs+w4jabsqkk2T4ej+Gzzz6DVqsFOzs70Gq1oNlswmuvvQaTyQQePHiw4gfRvK5Tv3rb0ZPOk0/K+ORxN+vb2H3xGKfLW9ey7a2XkMHt47Ih8YAWc7XszBSb4jpCi3NIfI/xbYR1ypxWRmpfblK+WzRI9bw0GZsq1DVBVlYwPy/yGh9lBJ84A2qOREqeWlprUFvl5S3bCpgAXByrcXh4CLVabYU3qtXqyrFEPE/PKtMiPFRGQI8Dg4qTySQEh7e2tqDRaIj3zqGjqAV4NYVv/ab0We/4e09QSgK2o5SvZtiUqQjzjBOr/zx5FDEWY0fpWeXEyk5ZgRRL55Fp2vca/xV1DjbpXFBjSnPyrTFRBHnlbxntw8duKh3etF49lVKuZPwW0R9UfuERoXt7e3Dnzp2wY4aehECPwUsBl//evpSCOFIaHKvVahU6nQ7cvHkz3L2K9x1LbUGPjaKyxWo3zbbhASH+TsqD8jZOJuOd63zltLSQSXOGsC3a7TZUq1UYjUYwn89X7ini498ToPfqhizLXA5WmQGzok6+ZZ/GbEApH+wz5At+TDFNH+PvooG0FPqvApQ+605N3sceeydmA3htHa9diukXiwU0m03Y29uDR48erQSxeJ977BTJV43J0aL+g0aDRaeVnxUIzGurU/nP08Tky7rGAy+XBkF5uV7+lPwQmq7X663oZ+lYdCk4i89Tg0JlBXlivKXxfWrZNH9p3HjlvyZ7rN16mtySyrLot/LQkJqO82qevFIQa5sYNPsqj20fiycUoTOWr/ebWJwiFXz8e2xuXq6WrzS2sTzuE6AtPp1OoVqtwvb2NtTrdahWqzAej8OCS2ks0vIs+/xFRZl2spX3poF+Al5v1mw2odVqQbVahWq1Cs1mEx49ehTSp/JmDHl9Bs2OT/me65cU+8eTrmiMyrI1Uusae3eVPGihLBvnqmG1cxn1o/yr2UdaOXmumpHKuw6gNGl0aYvVLfvTC8u38tg4ZcYJPLaUeExx3sItw8iDVCPhKoTDdaIvRsu6B6h0H2alUlmZiMVdo/R+2Nhq8HWtDMnjkODfuMuXYjAYXLpj78aNG/BP/sk/gQcPHsD//t//O9R5e3s77JS9KkOYrzyJCTytvbhw9QT5tDKkvJFWCr7aOQZvXbygQXXehlxuxeQgDfzEEBsrUnDLoh/viKL0eBHr57zj60VG3npoAdOyQfvbi5RgTOr3sW84NB2m/c4TaJDSz+dz6Pf7sL+/D51OB37+85/DT37yE3j8+DEAXNzftLW1pd4pi7LCai/ckYKTo+sYEzs7O3D37t1w9PJ4PIbJZBJ2peHufdxFSuUbTlKiwcx3sHEUDZIgPePxONBZqVSg1WqJxytL3yO/U7nYarXg7t278C/+xb+A2WwG7733HvzFX/wF/PCHPwQAgP39fRiPxzAajUT9LAXAPXXBdkVe0MahV4YDrC7AWZctsQ4+1E6zwKssTk5OAADCeEJe5PRwRylP39Dv6Xc4FtY1FvNiuVyu0MZBbRP+nAfsynQwywCXPRxSkJm2A7WlYrpCm1C6KuC949PpNCwOAdB3/9K2kGwHyic0jRWY5yg7UM/tYysYxfvVC9r3KD8+/PDDENCmi4ykbwHy+ZxWW6Xadyl2VV5I40Kz8SS56u2TWq0GOzs7MBqN4Pz8XDzGVbIVJD7B/sTTtKgfGAtoSvaXpWvpyQ20DC0PbVG19IzrMMkHTIkXcT+Z0ol2gXaKkjQhQW2+TUKKJXBY7WJ9i7pFutKB559aXh4Zaclviul0Cs+ePYPj42P49NNPw3Nq12r9JNlHGr1XbeN8XiZ3ioLrLoALX+vo6AhqtRp0Op3wHNtrOp1eOhGobN3tRdE+5PatpA+s8qgMiZ2a5x2/mg5cF7yx+qscM5IefDl+L8DlMuc5jANIC/H5KSKWXSHZEpuC5n9q8RL6np7ipMVCUJZVq9VL5UynU/H6kLx6LRajvwqsRBK9k3t5YE2OlJFvzMkro6y88AhaKeCgtVkZ7SXl7VEE2u9arQbNZhOq1WqYQFoul2EQ4ZFc0+l05ZhiroBTyufwCClv2/G8aPtsb29Dp9OB0WgU7vHAfPf29kJdMcCCK9twQle7zyDmMHjqFOP/dcEbmIjRKuXrGTeefk2RA1ifWABDkjtWW6QEXaz21N6ntEdqsCWVtzzG9HUJCluyDZEyjng/WPVMDUCkIsWpSDX0vIEM2h6eulGarUBeniAm7ROr33F3ZKVSgdlsFhbf0LQx49iye3geZfQ3zQedg3q9DvV6HWq1WjD0MUDKF3vEApE0Tarz7x336JxPJhORviy7WByFAUer3bANcJdwv9+H0WgEvV4Pjo6OYHd3F5rN5srxzZxezR7T0vLn/O5bDzzyyPOd9L4spzrPN8jveEIIHmsZ+yZV9qbaeZsKuHjlnjc/Kx9PuqKQ7rPV6MDfaAvj+PWAtoumL/F/rY3XHay0dBZPh/9zGePJV5PJWhuk1jlVh3ny4O8kn6cMvY4TUXgHaqvVEsuTwCfjNH+M5hGbFOHPUv1czzepcpjbYjE/w5sn9ZlqtVqYMKBleeilfM77wqsX89pUWlzEwz+xdzFbykqXB5x3tHFclt9Xlv1KaYqNRf6t5pt79AOFN12ROmvtj4tHsuzinlhM57nKy0sTj1tsyg+3xq82PrRYDP3musQRioD3LV6XgjtlpZMFuaxct42zSWgxGI2/y6h3nrhPqk4owrNl6QYPvHZsGXlpaegzS3/mQaxvvP3ubQfNvqVjFuMFmt5OpSlPzEIqV6PfSiPVgY5fTVZhG1Bo1y5KdmVqv1B4+KmoLailSZqMzQuPM2c5Bd4yvEZIkXK8iqBocKuIUR5jklSFIwlDnsft27fhK1/5CoxGIzg9PQ1p8O41AIDRaAQPHjwIAVZcGU7zuypDggsaOvipQ5llGfz9v//34fvf/35oy6dPn4YJ5qdPn8Lv//7vw2g0AgCATqcDBwcHK0KI3+/K4e2fmPLypPXCw/feMSzRohna0s4zjZaUe5JSghw8nbTSWypznbzsVQT8LkaeJrbbDd9tygiU6lVmgCKlfG//eQKpKeXid2WgqF6N7daRfq+L771BlNRvkL+tXej1eh06nU5YUIMTm95xuI5gmwY8Jl+azKS04N/L5XIlHd0Rm2VZWGwkGblWoESDJ+1oNIKjo6NQLvLfbDaDarUKt27dgtlsBmdnZ5Blq3cwosyj7T+dTuHx48fhHlhvQJoHYjXHiLcBpsXV65hPkVMJpDLpM9pOHv3En62TNymfLRYLODw8hEajAQCgTubxtpfqLo13rq+88sizK6hIG8W+8+arTXDEghXrCNThMeIYPLbaB8fCjRs3oNlswpMnT2A2m0Gz2SyNnqL8G7N1UmwC6Te3HbW/tTw1/cbfFQlIlA0poIY8rOlcWh9qg8T8GJR/qKfH4zFUKhWo1+swm81UWbNYLILP5kWWPT8xCWVv3vGVGqzkfCr5U7E8U2ylmHxBvsbf9Xo9yHs85ULbIYvfSW03mUxEv06S1VTnSzogFvtA/ewdM1TXxvqd2gOx4Ke371J8/3WgqL1Q5FtsT2kccNtAshWksSPFMih/UmjHK+alm74DgLBYDWNkW1tb4QQFhDQ5d9VxibIhxR6/SDg6OoKTkxOo1+tBdqDdTO19inXYeRo2IQNoGq5DrMV83riVdIKA91tNpniwybhaHpTpF6b2c8p360Ae/1z6hspotC247SKd+oibua4TNPq1fqPyCRfm4ampNK4fO7kCn0s2n6eNUnVfWb5Taj7qMcXrHgRWo0jGUZnIE9S18shLpyXsuEKNtZfm/HvaMkVQak4nDZrie7z/AAcMnZjlQbN1Gg9efqaGHwpI3NVL6atUKtButwHgQpC0Wi2o1WrhyL3xeLxyhyydcMadtFhOkckSrU4p+RUJpEvlcOMkpX85H9P+0PhZC8pK9Fp0a2nzprPGpJWnVi+Pk6WVze9v8hjrvM21fpSeawHC62x4AuSfTEwJqPLyYmM4j1GI31l8nqLfNhngoXlbgTPruxRI8gzl9WAwgMFgEO5okoJ7ecpFHbiONqRGK+oaPKIYj8n35mPxpsUfEg96+BjbuN1uQ61Wg8ViEe5jx0nWvb09qNfr0G63gz2BwSotOAFwMbn7ySefwHw+h16vFyZxcRcCp523hRW49o6lmL706Atse9oHmq64TvKW81Oz2QyLG8bjcZh4x37kx5bxOuUZO1wX5dFNV9GmHv0Sk/XWGLXyjtU3trMV+7TRaMB4PIbT01NotVrQaDTg2bNnoQwcix5IssniC56WT7hY/GXpvjy8QG1+TzC1DH7j+aX6B9KzGF3ecZp3HHvLB4CwSAdg9QhXzvuSPk+VC5aesNJ5QeV/jD5pzEu8EMtPsnuseqFOxYVPMUhxEDpGeFppjKbydYwWjbaYXU3pkuDxn7S0Fn3abw/ytF2Mz6V0Zfo6kv6m/ByzsTX9l9f384wfK3+Lzy1b3Esf1TvXyS6kSPFJvyhAWxgnMyxekOR4ETvZ095F+iTPt5Lv6Y2RafLbssUsmmMxupSx/hL5EGu7dcapeBlWvJPaWRZNksznPoNGQ0pMIi889Ft2meWD43saB8I6oU2JC/swLbcXMV9aBi23qP1d5recd8XJ2BdNOGya3jxBCwoU+p570IoaKLHBk+eOkOl0einPyWQCZ2dnK2mm0ykcHR2tDB68Hypv2XmQ0jdo8ODK3sFgcElJS2eX1+t1+MY3vgHb29vm/abdbhfG43HYvbOO1S9c+GXZ6qoSS2nw77nwks68T6WLC0ttPHn7regdw1JZHoebppH6XFJEHkMXDUMpf23nk2WI0nsUqYKM9d2m7w/S8KLpIwuSoaD9zgNqGBZ14i1aYzRI46loENgap1r+KcEH/L7RaECWZfDw4UNoNBpwenp6adcMH4cpAVx+f5210z4VqLsmkwn0+/2wc217exuq1Srcu3dP/Ib+z51+rwFLHVr8PiZbqTwajUbQbrfh1VdfDd90u13odruQZRe7kN55550wEXt6ehp25MXuRj45OYE//uM/hslkAt1uF0ajEVSr1ZXFUQCwErSX6I4FmLWAGy5Si8n9PIFJdGCQ7rwoyoPWWMM+wn46PDyEGzduwI0bN6Df78Mnn3wCi8UCarVa2D27LrmP/SjtLLluKMN5XCdidyHPZjNoNBrQbrfh+PgYHj58CL/5m78Jh4eH8Mknn4R7oZfL5cpEmcc2wbQePUXtbWknRIx3PUjx1TiPa7v6uEzw2qm83JgtQOu/iaCOlL8UOKG05L0jG4PZ9XodGo1GuF6mWq2uyHmvXWzVJSa/y5oMyZtHig+Wh4bFYgHT6RT6/b67HeliUcwTJ3M5f6Cs8PpRmEayta04jidgus6ApybTrB2Z3GbjsYXrrks4UnQAvYKDBq5jJ/pQP0lqH8yHLqi36NImWpB3ub7U+pH+r72PAW0urndelP734vNWHwTvt/l8DvV6XfUxvgigNp81biXQU+J4TBQnemg5aJMiLLuI6y+Pr0z/LhKrWTeuK13XEXxuR4LXZtd2gko6aJN9FIuNU3CbnZ/AJtURF5688sorl07GfPToUVjEi3kAwKUF9Zv0YWLwli9OxubNLPaN1FkpQUwLnm89jpCnrtpA4AK2KCylWyazFW33arUKs9kMTk5OwnM8EooKjzyBRoTHOdJ+x76nAgGPhZHa/s0334Rf//Vfh69//evwyiuvhIBKvV6H0WgEP/jBD+DTTz+9FNzFyVuusD3g/ZzXofKWS/sJjRGtPXnalMCQ9VsqS/o7LyzHPIXP6LcpPJfK/xp/Ux7F/vU4iimKPNYu2gTYVSvAq4bHYeL9IY1Rrh9j/ImyC//HADSfAEyd7JGeeQJhWFYRBzI2vlKM01j7ZVkWgoDL5RKOj4/hpz/9KZyensLx8TFMp9PQth66rT4tog+9GI1GcHx8LOrjGPIElrV+tgLd+BzvDz0/Pw/P5vN5mKCLOa1cJ+FELQbqMBDGj7vUxkWKbNV0CganpTKK6gdaV89RdakoqqcQlI+azWZw0PA+NDxpBI+klILR2rO89Hr6VEq/DlhBV4nnOe8WpSvP95725+OdBriq1WrU7qPf0b+1yQkur+hvKtNj9bDqZEErP5beC8oPRXWH5rPGJgK84LqZBl5QrtOAk+cI4lhdpO/4hAQec48LcfBkhVh+nBYck9LCXI89Hcvf+00sL9R9qD+1CTr+W/K5NL9N8itSbU1NjnU6nZUrCHBht7dNqC0MAJcWY8S+5TTi87y2LG9L2o48VuKJa9A8AS7v+rdQhj7bhA3Ly+O60MtrvN80f56XJ/G1ZD9KvyW7xfKHJD2PPJu66FzSidaYve54kWgtCskPAYhfcea1Pa4TYuNASq+9pwt7+FiVfEc6Lqgd4BlvqWPpReqTzwvy2FtlgMteWhbls1i8b910WjRoOsrSoSljeblcXXgbszkBLja9bW9vrzybz+fQ7XYv+cr0t+arWm2bYtuU0UeuydirAnc6tQbdlPHpZTStYz4PwpjXF48gm0wm8PTpUwB4Psgortv55wg6eDFwi84br8M3vvEN+Nf/+l+H3+PxGGazGdy+fRuePHkC/+bf/Bt4/PjxyjfUgaS87HHoLGcsT9AiBm7EAIC6E4imk1Ywa/TGAnDW/aYarAvPNXgDgTHwlfVSGbzfY3RJDhwtTzNGPU4pHZu8DCnYlAdS0PMl0sH7xBN4r1arUKlUVu7hQzmVEkTCciyHhAeGvXni357v6C5NyUGN6eQUHka5TwOsT548gbOzs7CoZrlcPd2B1ydFZmvpykS/34fHjx8H+rBueOyvVb4kD2I8mGqT0TLq9TosFgs4Pj4OOqXRaECj0YDhcGjKFaq7MCCJk314WkUKX3BH3uJVWmdMh5MP9L7dmH7AZym8gHnjCtKy5O66+HF7extarRYsl8vQp5VKBTqdDgwGg/BMCkp66ZZsN3ynjVv828p3U5DoxIUKaEdvOgguwdt2AKt8SRc8Wum0Z1QO0IkmTpOUXqJVC3xqdfLqrnX1jRWwkey4lPGD35RBu+RP4HOU0XgCET9W1CNvJfCdg1n2fDIWF8Zsb2+HEy/4XaZUz1k04AQh+nb4zAq0XQVqtRpUq9Ww0IXLD4D4pJSkn7gujQWurdMHtG+zLIP9/X1oNBownU5hPB7DkydPIMuyFX0X4xW8xgDv3ZQm0Pk39H9eTup4ioHGG2KyyoJmZ3BY/X0deBahyVnaD/xvapvH5LS0y1jje0+7SnIO+5WOG2kBkQZrEZH0m9cZy6aLc1HeSnriRcWLTr8X1sk9XyRo/hRduIPpJPBv8T5LTM8Xr2vfI99R+8Vj10q+30tsFuuUGXRRlNT3nvGr0ef1m/JC8us03RZ7ZvG5pL8R2nhqtVqX8plOp9DtdlcWVkoxdK0tr8sYXMtkbF5HKpY+5jSsC5ZAT3VKitRfe8eNKu/Z99yx0piVvl8ulyuTX/TYB5omtrJoU8rIY4wDPJ/EoMfdaEDam81m+Lvf76/0VbVahWazGRQ8XZHLA0g83xRQYZLSltJ3vL+koAwNsMT4RXon/S39pmV5kcpLUt08+WsOM39uOXCWkuNpaEBNajeeBx+TdDcYp08rN8WgzIProgARZdOTyrtaHp53WrrZbAaj0SjsjMWgFHXEvX1dJrx84zH28LmUPtXYpQZ0lmVBduPdpKm6PW898wLH/WAwgEajAW+88calVYTVahVqtRoAXG43jRck49yClSYW1MJAK7U1KCaTycqdsVoZAM9XoOKds7PZDKbTKYxGIzPIp9WFB+p4PfjxcxrP8LEntS3VDzSYx+E9YpfWDY86Q5oxOL3OgCzVQRaNOIHOj9YHWK0rzUc7slbCdQyCWMFgHAPVajXUD4+ssxauecdp0b5el/91nZxkCXn8MnyW1073QNLr/P91li99D/D8mEW8DxzgQibwa2Dy0EZtY26j43OUJ/P5HHZ2duDg4CAc4Z8H0+kUms0mvPbaazCfz2E0GoXFJFagzat3eD1TweVjtVoNu6q8dqX1TvP/8R291oHHDCxwmYQ7IdrtNvT7fXj69GmwEagPreUt6U/eBtI4pfWybG2PHW7VFb9DXrWuLorZCRokO69sWDa4t11itiEHH/P0ea1WC+Nd8ts5v0p/x+xeLa1VJ86vsf6jfeaJ62n50AXYVlnXWedaeFHpTkWR8fV5AK0r2sBSm0ixg9lsBltbW5dOPqQLA1FfYD60TCtmosmTWD2s79ZlW6cgVSZf93I41lmmpjt4/I3Tgzwdi0fwcspsQy3WwXWlZZPQ9PwZ1WUSzdPpFB4+fAj1eh12dnbCc9xUQlGpVODw8DBcQcXrgQvxtLG2LhmaamuvTMZqHe0NUuVxGlNQBqN5goE8vZbOur9D+yZVaMcCgFraGPixUfg9Z1ItOETzoXngQOOTjRK/lOXoc3gGAL8XDydiccKC58MFZJZl0Gg0wgpdOjELcBH0brfb4TcGI/DblKAZ0hITxJ48aPkxQ0AK9vEV7LFv8oyNmPOUAo0HPem196kOudVvXmcM02gOKP+Gfodj0eq7TeKqy78qaPxnyTGLZzU+pMHHwWAQ3tPJ2BgN6zJOrN/SOzo+1u14cnlTq9VgNpvBcDhcoStFJ0tlrANI12KxgPF4DK1WC1555ZVLbVapVMK1Ahbtmhzjsi5Ff3lkcZZl6u6i5XIJk8kEptMp7O7urkwqSrSjLsLJxuFwGGwTquc9SNU/lrzNkxf9juqBFHsSv8O7EgEunJvJZFK6U0p5A/mSTk5LOp4GTJDX8J/FL5QvU5wfTmeROpaRTvsWYHUnBA/Wa7Ycl6Fa+nUHQVJsU/xbs3Os4Da3a1NlrTbOykSsPgiNBk8QQZINUt4aTWWB9gfKXVxIk2UZzGYzOD8/FxdRWLo+ZgdzmULbcLFYQLvdhhs3bsCDBw+S64N54nHHr7/+OozH47AyfzAYrIVv8oC2k6brYnRafSDlj8/pccLeXVxSu9VqNWg2m3Dz5k2o1+uhHLoAR6MX+YMuXEnpF80GLROxWIBUpmRPeGWsZS9RGvLKBCkvLU+PXWTRo+k3gOcTLFRXeuwjT96piNWbQ/OT8vo/MRsK01j2ZFG+KAIv7WXmeZ2g8YOnL4r0W9HYmxeanWeVze0+nh/Vd6gjcEMM3z1Pjzb2LOjM0y4eOea1DTeJdfqF6yznKuDVc1YcBOdluD8UK0PKqwhSdY2VNmZz0DT4fDabwdOnT6HVakGtVjPjHFtbW7C7uwvD4RDOzs5yxVti/oY3H4k+L6I7Y3kQDWEJyes8sLyGdWo9UtsJv4mlobTwYEOsDMsh12jhz7hQkAQLvSOV78DzOhgx5DVELfC7YjFIuVwuodvthjuFXn/9dfjn//yfw2uvvQaPHz+Gg4MD2NvbEx3cer0Ot27dgslkAmdnZyv5S5d6e9vCGm8pwa51jE1v4McSktSAkibzY+XGdt1IZVJgO1qK0vrOU56XPsrrPOhhlaGNNXpkS6xOKTLjJS5D6+M8ber5hk5w1Go1uHv3LhwcHMBXvvIV+MUvfgH/83/+zyB7+ESURasmwyV+Tzl2y6ojLY/yv0WbBcrvMZ3Ey6KBVcQ6J+/KAPIB3mH+wQcfhHd44kO/37907xC2DZ8EQ1g78Ggbp8o6Csm2oWUgDScnJ2FH02AwgHq9DgDg0hfakddYfpb5TjZJDa7F4LVtpN2i2jjRsFwuVxZo4DUTuHM4hcctSAFkDIYslxe7zafTKfzsZz8LO/ipHanRLv1PTxzhgUdpsSCXCXkDed7vUvyMPLykBetj8m4TMgoD4sPhEHZ2duDmzZtwfn4eFlVw/0GjkfshKMNwzOKEi7SjzQpmUJsTn/N2y9vPlEeQHmmHEucB6e+YzuP1yQte5zKCubHvqe2PbUHtE4+M02z3FJtXWiwrAYM/r776Knzzm9+EJ0+ewLvvvmuWsWloeo6+9+YDYE/K8nRUX+Mzr9/F9e/jx4/h/PwcDg8Po7Rq/qUWt+B0Ur7D63nWHYCT/DucLJAmBlJluiZXLJQVa8mjW4uUhad8ZFkmXiWC4D4259XY2Pf4Erw8AN99vlJ/a3ooZoNIdZFiUNb3UrkSiugJb95535f1zXXEOtr7RQK3qajdr8l96d5dlBn4HK9PwBgw/V6CFnuT0n1eeE+DJfc/z3WP6TvNPqFYLBYr/pAWa+MoS2dLdBWV7dSWQZsK45Hc/vOCnjSKiMUPJLq4fXSV8tScjI01ksV4VzHo8hgPnvw87yVHkP7WHG/+zHJ6UgW5lJ62kYfxPA61dglz3rzzCnJv4EL6hgYEACAECwEAOp0OfOc734F6vQ6DwQB2dnaCUYs7kfB4KtwRi88RjUZDFKRSELootABfTPB4HbeUvtb4mvOmRJvEq+tQ8jGFYLWTh2+lvHi7aEEw6X5XCZps4PWK8ZomL7R0KTxgYZOO++cFdJzgYpJOpwOHh4fw9ttvw2QyCavK6GQsLjrRFjBoY0F6vmnnwhqnkkzLo5cQaNxJddxkkCm1LDzq7vT0NDyr1+tQqVTCpGUszxSZgSjDaKf54DNaPh4ZvbW1Fe77Q2NfsieofuX9mJdOTx6ptlXMHvPKZascLIPemVetVqHRaIjjpGybhP5DWdTr9UJ/4lURVuCe/63ZBV4ez8MDZbYL7/fYGPIG5y17aVOyi9ow0+kUdnZ2oN1uw3A4hOFwGCa/vMe/0z5HnkFofJvCz5wfUvtCSmvZZbE8eSA+1aex3qf69ak8E6ufZP9rgSfPSR6e95g/Bry8tqtkqzcaDWi1WtDpdKDX6wX9SnVN3v6yvvME9OhzytP0Wy1YbdHoKVvzbzRo9hrm0e/3V2wAOsmWRwdK5XGepHoq5XjlWN1iPrVko+B33B/25sfTxWyXonExj2+Zwt/ecmj/0lgOLZPbglJePB9P2al0xsa71U5WjMaTd4o/QdNK7ebNg+Klj18cef2WzytSeYxfR0S/4zKYHotq6SpetmZ3SmPoRe5PSZ5chzGe14/16Civ7ZkaA0DQRYGp35aBIvlq/pPmF3nsQ7rwFiFdAYX2mhTXLBInsPIosw9WJmPpqil6rCpFTCFf5UDkhkNRpDoSZeSrOUixFc+0zp7V0dL9oDFaPMIhFvAsoohShJyVR7VajToyFnAnB8DFHXb/4T/8B/jwww9he3sbsiyDTz/9NATy8Y4C/E6jKQ+0IFZR3qc7iKxjoIpAG6Oz2SwEalON/5QACNKA/3uCebysVEjBZC0vj+EnfcMVYErwRhu7mzAWr4MB9yKBHzn89ttvw/b2NkwmExiPx7C7uwuvvfYafPvb34ZHjx7BgwcPwj3WnEdSx00epzwPvGWUtZuPI2UVOUdZNkjePLa2tqDZbEZpokFOAFjZRY/le+6qspAqR2LpptMpfPbZZ6K88+QtpcsT8C8bdBwul89XfHvuIIy9Xy6XYXc0Oit4XCjABa/X63XX3chFgPXCHc1Pnz6FdrsN//gf/2MYDofw85//HI6Pj+HJkycrO/q94PzA76ah74uM73XB4mfc+TmbzdyLKqz8NwWsy9nZGfT7/ZXjRvFuPykQRv/m9iD2LU7eU5ue75SgY0Qb/7F2iY0zzWbEscuP584TEI9BCtRbduZVBAFR13Q6HZjNZvDo0SNxYh2PNMYFROgT0DRe+nHXP8DF4pNHjx7ByckJLBYL2NnZCTu0caIPgzoxPHz4EP79v//38M4778Dv/M7vwJ/+6Z/Co0ePYHt7G5rNJpydncF0Ol2bfeLBaDSC8Xi8Mjm1tbUF9Xod5vP5ysKcFGi8JC2QoOM5D89lWRbujX3nnXfg9PQUHj58GPQD96skfYH3+lKa+JjlfMjlkOZP5Y1h8Pahx2lKNHLQcmk78NMztG89k3dWmXmhtVneALqnPKuftAXPMTvRowskpLZhik7iNiPdZa3RSm1Empe0Q/uln/4S60AeG0eSoRLooi46uYP8TXUgHytaHE4qt+ik5Is4tl5EmosgNR7NIcWAJdms+fzSsfsvQh9QPy5F/43HY3j8+PFKjAoAYHd3FxqNRrDdAS58yZs3b8JwOFy5OxYXVPB5H8vnK+In5/1WvTM2FrS3iPDAM+GRJ19v+rKCpZhXnrx5MDG1HOm5pqxS4fm2qGFufc/bxTOIvPTwvqHHM9IjcvE4qk6nszLo6dEVs9kM7t+/D5988knIezKZrGzL99wtzHkm1jZ5215rO8xTCogV6eeUb7H9tQlgb0DamoDkgblUGj2QHH4Pr2v5aN9Lsph/k3dMWOVaz2P5vUQ+SO1JnzUajXBH9fb2dph4PTw8hNPT0zC2+fEgALYxgu+5M+41aiTaPTxZNv/EDGPrm6sIWhcFleN8YkoL1Ev8kLevvHojlTfoMbdZdnGvr5fOvEgJrsXSetqq7LogH3Q6HajVaiEQT3ek8nvFN4Hl8vkRtTdu3IDRaATPnj2D4XC4Iq8A4rsnAWS+5nYVtXOs71LkT5m+hFUGQJqe3qQO5jaPRA8utOPBXToxQP/n9qgWwE8J5Hn7WLPFPUE4T9ne7zQaOB97g+VS4L5sPtH84Sx7fqQ0/pZ2HublZWuMUBrwiGy6KCClHMxvPB7D6ekp3L59O0zA4gQy96Ok/L32UhFIvlSeeEps3Hj9V6s9eF7UHhkMBmESuVqt5jpG2IqTcJr4eNLajdMaq1uMxhRI5Vq6TyrDww9FY1RSW64T2NcenvXA8r1oH/C/U8qI0UXll5UG/7d0Q5ntH7NLvOm9sa+XyIcX2ZelsPxKSxZLafGfdj1BkbayxgMfA6mxt5dIQ4qdVWab543r4nMvLVTWb8KmtGDpypQ6IZbLJUwmk5VYQJZlYbMoP66YzrfwfGI0peqwshG9M/bzCq8D7UVeR9vjiOLzdShUTSBZhqy2i0RaFcsHhhVUswayB14lTO8MwOOm8He324XRaASLxQL29vbgd3/3d2F/fx8+++yzkEej0YBbt26F/E5OTuDJkyfhNz/2L29AW6tbHqfN07ZaAKEM8GAdggtP792vNN/Usbcpwz/m6ErBBKRHGyeeuvJvrcUAfHy+NABtbCLw7gWVMf1+H7a3t+Gf/tN/Cnt7e1Cr1aDdbsNrr70GR0dHAHCxcqzRaKwcEemBJif42KULVjbZTmXz7HXp4zx00EAMXUnoMTpT2nFdekID1mU4HLp2flB4dLDXiS+CGL2xenltRV5mvV6Her0Ov/ZrvwavvPIKzOdzODs7gz/+4z+GxWIRJkJ7vZ6/MgWBx01jUB0Xvb311lswmUzg448/DvJqPB6HiTxaLy94m+bta61vyhwH3O7GvHGHHd3hllLuuscqtfeRNh4URtrH4zEsl5d3H/IdCZa84vXX+nS5XIa7kOmiS063lm+svkXb1RrvUsCA61c+WVTUttWC5Km6gafHE4K63S6cn58DwIVM397ehul0CsPh8FL5KavoPfKd1wVPN6LvveVNJpNgQ52ensLf/d3fwWw2gzfffBNOT0/h7OwMlsslVKtVcXIoL9DuwoCUF6hb8P/JZHKtbX3qi45GI/iTP/kTqNfrcHh4GHglBmlCKpYe9RH68HSc0ysRJHrzticf2xa4j47leq6Kij33+M1l8Yw1SVyGrqKnkEltxtMgDTyO5Tl9LK+MzDL95DEux2O2B4830c0AAOnHkku8pNFGn3E564lnvii4LjRfFzo0xHyYdcYXU07zRP8Dd86hjWIdTW/JQEkmSDTmxXXv9xcNZbVnSj5cXmv2Os5TSN9L/LwpW06a59nEAm7qx1UqFTg7OxP1J0D63bEW8rZznv64NBlLHQdPUKgMZr6OAsbqBI/jJ+VRNlICAh4FohnzHmEjGbF5g4frhGS80v/pzsytra2w4hmPOer1elCtVmEymcBsNoPhcAi9Xm9FcOYxzlMVgxVEymssxN55DXSLTl5GSvAoJhh5G8acT6/Tqjn1scCeVUZRPpeCRzFnmbcNr1MsAJpCGwVvo+sm71MUrpR20/Wh/YWBueFwCIPBAGq1GlQqFTg/P4fRaBTuh8X0fFdsEd0RS5PSNtL3Xoem7D4oGtCO5e3NM4+MppCC+Fo+kk1XxPBM7U+v/qDpLdrXjdTAW5G8LAfOU1/cjdZut+Hg4CDcL43f4nGPKXcKp4IGHzH4QW3ELMsCXXQRgTQWqTzTZLfEJ2XUQUJRGeHhDz5RqQVmrXrnsUstmmieEjg99NsUuyVWlvR93rqmji0tbcz30XxEbpd5ZLhVfoovtw4dystH/2o0Gl06YjZGn/Ue28pbN8kGkvpIS4eya2trC0ajETx48AAajQZ89atfhXfffRf6/b5aB05T3vEo0UdlJA3cSUc8Ux+iLJmg7XTWdL/WlzzdeDwO7/DUF4DV+/+keki2gScgatlLklxLsemw3prveJ38I0mHlKHvaN9740sxeNrQ8t8lWvLWl48vKy9N7nDeSvV96DjHfK2yNZ6UxkcZPCrV0UKZ9ouHJq38MvItYmPn0Y/eb/NAGjN5yk+FJfc9ZUl9wv9Z5cby4zSmgo/HTfq2V6mDNll+nj72pvV8I9kCKfDK4xTfwfpW4m9Lv+D33KcpQoPHJ4r1X0wXclo3wY+XjileLpfiPSLXyUAsA3mcPo8hVeR+mDxMimny9o+kkCzapPd0RRGliQaQYqsnNsFf/I4wDFLSe/IsOp88eQJ/+7d/C1l2MfF8fHwMg8EgrMTgAiPPXWcSihifqbzB08f4oSxIQY9UmjwCNoUe/pvmT+8Ci5XBlZl3TFv1pAFpbWxqhqH0jtNattG8jnyv2mi8CtC+z7Is3AH77NkzGI/HYWHIgwcPLskf3LmasqPCA+1+eYDNBX/XgaJy96rhPWWA08rv2JHSUKQEJlPahcs2zvuxsorCCiJLf5cJ6rxIwWN8hu3Bd4JQ+vDewHa7Dbdu3YL9/X3Y2dkJR5bXarVg9y8WC5hOp2uR05VKBabTKfT7/ZUdY9Z3OHlDjyOiO5SQJyi9Xr7l9F1XoMzGXVuWni/DvniJYtACfN4d/Zo8tSZweHlWvjRI7+WBlLSa70y/Pz09hSzLwpGzvCypjfhuL37MssdHsGjGbzzH32KMpF6vw9HRETx+/Bj+5b/8l/C7v/u78G//7b+Fx48fX/qm7DGn6cDl8mJStFarhUU3g8Hgko1WqVSgVqvBdDo1746NyVJNHpVZ12q1Gk5KqNVqUKvV4OzsDE5PT8PR0NYCcEl3Unol/UF5jdbL2iHrQepY0sa5FuCkv/n3RYK29PvUvi1zkiJvmV7QO8wRnI8sOU7lCNIRs3X495rdKY1FqW1jwWqLbum3Jlt53WIyODXojtjUvdvrsgOtWMw6y3kJ2ybiQH8jFmO0bK+rvCO+CFDuXDUPXXX564bEQ6n68Cp9Ny7rLXvZc4pIan/H2i3LshDTiMXxkX6elvtr9IhkXp6EPLa+emdsCoo4QV6UHTCJ5ZViNHgmOfJOJmllltnOKXlJRgUfjNTZj+UfazuaR4wHYm3MjTu8f2a5vNgCP5vNVsqYzWZw7949aLVaAHARQKB3xY7H45WjrsrsH20wewxc/FZzKLRvLUXsqU/q+NQCqLxcKSAdQx6eTuFTjW+9eQDEjwj2yBL8nbd/Uo+FzlPGunRCCr+tKyi/acORGvx09wPARYDwwYMH0Gw24dmzZzAajeD8/ByePn268n2eMjmw3K2traTjBPFbqxyvjL+u0GhEg857jIpVV41XrfGHfGMFTrBfKV9Zk/c8sI/fxfhBCx56cRXjTvo7Bq9u4MFVT754csfW1hacnZ2tXL8AAGGn6Wg0unRPI+1bXFCWevyzF5S3cOEeBR6bjAv6vPXndgFtv1hbSjzH01pB0TIh0RGz/zSH1pKhXvsC06boTB6kpu2Pjq3UZxo8dmjMN0B+kxaXpNSR08v7wOorKyiu9ZVWF1omf6aV4QWXUzHdkqfvKDRelAIinL8ojSl2r8ajGn1eOYh0DgYDOD4+hmazCTdv3oRut7tydYNWT6/fz3W0RjO3DS1fRZMnecD7yROwSgHqCTxdYTabXdIlVr70nllOp8eWwrT4T5q0syD540XaiNMt6cJYrEmza7T2iMUQLHln5Uu/idVZyz9FX9G+iF1/IMlcqa24PuI6z6LZG+vRELP7rbJidkFM7ms8zeVLWbBst3XFGr4IyNtHZfatxyaXys/b797vUvL3yNwUnZFafl5s2qdeJ7y2qoZUX0kqP49t6qF7HTLVC81GkOIXVrwpdaMatqcUN7L0lSdvT6yKnsASyw+/ieXN87t0TLFlOFwlrlpQWMYUZ0LPd3ngycdbVt4gE/+OBteyLEsOzGu0FEmngQ6oLMvCJGuWXdxLMxwOw3F9ABf3Av3whz8MwZxmswmdTifkMZ/PLwXWyzY6AeKBD43vuKMW6xdtJSf/tgzjhwZdcedLLKCVtyyKFMePf4NtKq1805SoVifJMdfS0zIkxaMJfo/RV+Y9fFq6FwXr1DFSX6QY5RSLxWJFTiGm0ym89957UKvVYDAYwMnJCXzyySfJ+acGl6z0msFEkYdvrxM89GbZxWo9gLS78Kz8UkCDiDEHN8uylWNsR6P/H3v/8mNpmtyF4/Ge+yXvldXdVTXT0zPjnitmPLZBFkhImK+EhZAwEjs2iBUSfwEbdogtC1ZskNgClhEYYQmwZTP2GA2juXf3zPSturpuWXk9ee7n5Ptb5C+eihMZEU887/uezKzxhFSqPOc8l3ieJ56IT8Rzm6h6TNMfVh2xYJDVhpumsgEyq0xqWzy2utFowP7+PjSbTRgOh1cchlarBd1u1zy5vlgs4Pj4ONS9jrmHOgBPa7VarRWe5vM5PHnyBHq9HnS73ejOcuRPe9vJo5OQUpyldZIXj3hxnMcZjNXjJWmRE8ewXq+HhX7uK1nBf76AyjeySAFgCfPihgR8UoTKubetmrzg4o70G/7Nr5fWdmFb+pL3meVvplJR3JYiWzE/BseJP6Gg6SJvYCRG/HYZ6vcUKf/o6Chs3n3rrbfgZz/7mal7ixLKMD0ZjHyjXdB0KB0L+iRPKllBuXXZ6dlsBo8fPw6fcW4DxIN7VKYwLfdxpXnF8/HPmj+okdcH0PSBlt+bXqunaOCX1m2NuyQvWsDba58l/ix9xtN4fBIao7A+0/9xvmMalFFKPKZQxaZoLCs1TqiNgye/NPeLlCfx8aqT147cBn+3yvhEFbwA2Ist65AVakNjZOkoCdt5YmW/pPXQuuTFopjd9Mamb7NO5HNTiglL7edxI4twYyHHXikYIUYe/MLjXLEYA03r5W8FJdBdnN6KKJXplNtgkChJA6SBZk3gYgNRhUDF+swC2R4h1OqiTggPONC/ve0vMvZF5I8GSabT6Uof0N3ErVYrnPpaLBYwn89hOp3CeDwO6fAdm1SyghL8b2/wPFaPZ15r8k1lucoAH5UhWm6e5+GUMuefy5QHqKXOM8tQSvV5yrX6jbfH4l/TS56yafAQ+5Eu6PFAmNU+TwBByrdOKms/1smrt7+8adDhx+srl8vllcVZXPygQU7PFTx0zHlauonC0u+WztKCXVXSdeKJWKAK+4zrtHWSB+xrhAAYF2Sn06m58MDrsOTjNjoXMdtWlGdvPkyH76Viv9GFJ6usWq0GW1tbMJ1OV94qzPN8ZeH/2bNn0O/3YWdnB7rdLrz22mtwenoarqiMBXy9pKXHK5BRD6Eums1m8PDhQ+h0OtDr9eDo6AgALnUbps+yzH0KisqdJLMcS6RionWTZcvpCWf8zsIM6+Q/5hvV63XodDpho6NVBh0vHGv69Ml4PBYdeAvX5nkOzWYTXn/9dZhOp3B8fLxyA47WZxLGpIuoPDAg5ZH4omNSpR6UcBuvm//GyRs0Xi6X4un2WLm0P2hdHI9IgQ4rwBPDy5R3/lkauxScRvVHo9GAhw8fwnw+h9PTUxiPx7BcLqHZbIbNCFZZKSTJHyesE+cT2hYa4+H2wSJp/CRZWzeGxg1ttG1WvZYejI0rb3PRhetUsniV5JTKobZByaqHziG6UO3F8PQ77CeuSz32iM9tms/j91McJ7WRt4Pmof8kGaf9yuvAfGir+DXW1jyxfAcvpfhg6/CzAORrhKV2e2JVPA9PY+n3FJu3bvKO4U1gTA8PN8UXnyMxfMD1RKzsVL/Mw6/m51bVh7dJrl9F8sZIpXw0Tep4ptpiD5a16knRr968sXzevDSN9qyEVo50iyTFY9JzEhKfFt98o6yEGaz8+Jvkn3toZTE2ZQenBspjRIMHmsOl5blOioEDr/NKAZ9VvjbwMX60MahKWUtjhYTCG7vGUCrTS1K7YgDW0/aLiwuYzWYrn+kJ32azCbVaDWazGSwWi5XriKVTaV7yKkWvovMEIzzK1hPAsNIWdSrQgaTODg3aSk6PRVJfWHLBHcUUwxxLJ30fk1+PfHt4kX6nziYawmazGdJKO+Vj/VGVbvYY5SL1aOXehE0pQnzu0vHDecI3w9A8zWZz5XSGFVDy9Ie0eF/U1mgBRUu2q3Bwr8uRQd2Gi5raCVMpn4c8MlwkgIF8ow3U6ophkix7eUqABr14+pskrvtTnPUqCYN5uBjLA3kWX1mWwcbGRjgRT+0ovX74xYsX0G634etf/zq02224c+cOAAC8ePHC5C11jKz08/k8LDKjPMznc3j06BG0223o9XpwfHwMAKv+SMrpIypnWpBQcq60ORLD5rEyUsia0zToS+XBOzc5FbGFWlru5+T55UavXq8HeZ6v4GdP+fV6HVqtVsAnuLglLcBYgblGowGvv/56uIp7PB7DaDRyLaxwx1rz/ySMJaXDz1XqF0mOJT0Ww2qWnFN8yK9CT5F7tCs0H53jtJ9TfQwvVtD6y0qHny390Gg04PHjx/Dw4cPQzp2dnSun4or66TQd35AhEW4gBrjsh62tLajVaitvw6LvbvW1xx+6LsJ+pvbRm8/6TZID+jfqHPpmeRGy4kcpvh0n7I8ifHHdptmVFJ9X0g8pZdFyvPKn2QD8zdJZ/OSNVhfHs7w8ai+ovKwbT3pjRZpt4v3M7Z6nft5mzleMNwtjWdgmZn80GXpV/P+/bOTREXzMOfaMlesZd0kGNYxh6TbLp/T67p60v6Q4pdofmvY6+7+IL+ct0zOvUsiaT9b3GEfka0dWf1N8Ix3WktpYdl5qcSuvXKTI3NX7M9ZMkmPrzSPRbTGqns62nD9KMScy9lsRxR8rWyqziuuXqgz0eUk63cXfKsMTZxoPngBdUVqHTKcYFWvntXU9T4qMokLmJ1fwFBa9AkpTaB6QzqmIvNF/VjqNF/oddVw84C6FT61eiS/+IDn+zXdWx/oxBRCvk1L77DbYjCLE+caTArPZDObzOXzwwQchaBALWHmuRKVjin/Td/jKkCQv0jx6VceKn07hiyicrsMWWg5eDJ/wa/kooPXoR6r/bivdlP7iJM072s94wg8XqQ4ODmA2m13R3agH8vxyMfbi4gLee+89yLLLE8/z+Txc39poNNZ6+kcb94uLCzg/P4fRaAQnJyewWCyCXrOI7mT1YmuLF8xrBfwl/4XXX9U81njkeMSD7aw0t8lu0jYtl0vodDrhVJ/mb3DHGrHNdDoNN0Z0Oh3Y2dkBAIDRaFQoMLNOkuRGGjOP/K2bcFGW82ERjo92xXBZvql+RIwiLcrwtLEyMV9sbl1cXECz2YRutxs2yHnqK4OZaXm46Wu5XMJ0OoXPfvazcP/+/bC55yc/+Qmcn59Ds9mEPM9XFmVjvFjxBE/soSrK83zlWSDen1wn8vlTlDcpGAegL8p6YwOaXHG7b9VR5npbS79YaTjx2AnljbchNu+kOevxTyQ+6byjPHJ58ARaeVqpDRwfx3wkjl1iPGj1SpQq85YMePJJtpmWQ/WhNW8snU1J+4y630O33Rf5JV2lGI5N0bexjemeOD2Pe3F9RHnmeX9Jt4M8uvIXWVd45Dy1LJ5H0smeTVDcD8f5hriWHjLRbJhW/m3x/ZBKLcbehsZ4BYUHDul3Wtp1UEqfpQCqmBEqWq5Vn/ZeHA/4Wg6FBv6L8uQhyWnDCU7L4s44/ex92w3Tp/AnUUxhafXE6uSyLgV2pPIoEJEc4Bjx/kaiO16kgKPHmbPqjKWh6VJIcwL5dxIf0uei88IbYOIOtOaApgaLPOnLzgPNabsN9ui6qV6vQ5ZdLs4sl8twxSf+1mq1ACBdpqsGaDQQosm/J/+rRBi0RsDYbrfV9xyrbp9mj61Ak/Q3/cxPX1iBIms+vkrj6dWBKTYpZoek+qhNybKXNxssFgvIsgzOz89hsVhAq9VawSs0SDYcDqFer8OTJ0/ClZV4giq2UcDTNg1XW3YNf8eF5MViEd4CjMmPFfT1koQDPbJJ+7gKu2PVyfuV6lIJF1lY6abmXur4YL/iaXGOV6T0tC6cI6izGo0GdLtdOD8/d9fvlQVOKW21xiOVB6/flUrSHI+dxLP0ZswGeeeflJfjw6L6zMsb1QGIt1CPSWVX4QtyQn8UN9Msl0vY3d2Fz3/+8+G95HfeeQfm8zl0Oh3I8/zKCVmtfVXwVhVJOjpmQ8vGd7R6qvA9Yn4ejzt4+NS+l/CEll/DH5JvyNtAeZbex7bq5n6ClFZro4UVpLKl2EaMJD0jpcHftPZTvmkwWtM5NH2MP00/xcrwzAerHKkNEh6JlZPKk8anxAfn9Zd0uykFP8SIzklahpY2hUf6f0zfWXM8xYf8JRWnMv1cRPY85Vt2L1XOy/CnlRmL2dHvJbnW7ILHzkt9weMgUhlV+kAx3mL97eFlZTF2nY76TQfguLDzv6W0HuIdXGSRLoX4aQCrnipOL1mUYkyui2L9znnEYI8EYtF41+v1sKMYQL7O1UvrVBDcWaB1WrJgBRarHmMMWNAr6LCe5XIZTvpI5AE1scBWCvE6JEeZGxN+TY/UrymGVqpXSmO1gf6OQU1+vS3+hteqUWc7tnvJcxVkVSTp8VeRytpD7F88pdrtdgFgdYcyzilOUr2eABfWSa/f8uxsi9UrBXpuyvmoCqdIZcxmM6jX69Dv98M1+Z52lgHYlm7ndaCd63a70G63YTAYwGw2c8kQB8nWEwa3ce7epLNLxwivYpXS4E7SxWIBb7zxBmxvbwPA5dW/vP+lQC/ApQz+n//zf2C5XIbrWnHDRtV9gLtXccGYyiD+z6/x9JKleyjekU5zW3RxcQGTySTgFAnrZdnLjWR8IXidsq2NKSUt4LkuW4wLpXQTHY45YrxWqwXtdjuc5ubtuem5lxp843n42KcuINC5LZVHCe09vvWpBW9SePHYvPl8Dq1WC3Z2dsKCH2JI6wQ5raMK0uayFgy9DlujyRC+k1yk7dKCguWboe/UarXg7t278ODBA/j85z8PR0dHcHp6qtZBcX4Kb5QvKbhm8V0V8XJRt+CzEJIdpRs0MA23TTG9xMfFmmt8jPjcTu2fGIaTrv2OlUdlAP9ZbwlTPc91GCcuW1XGAWlZMV+d8k39Wvp2PU/LfWAvISawxpa+jQ5w9dpFSlZMQ2p7KlXpV0hjgv9LTyBJ88Hi0RMDSsFiki7T5nGRfqIxIGkelC23SlpHmWXL18ZDK4dvgPDGrXieMv0g4RPLdgP8csOARuuWyRS6Dh/vtpInxmfZYLSJ1N/Hp7DogYUYSTFrWuc6bvZCO83LpzFYSpqcxLDeSiQkJmSpoEoDS7eNUpQ9/80DoKwB8AZXeB6vspZAzDoUfcwRScmn/V5WhqT8VuASf6fG1WvoKWmGN1XB8fze+mLlcgfEAg5S3SljiAt+9N1dS0ekzk3p99h4eeanB6BraaT+lHi0HEiLP0//cxnXgmipDqEWVCiqD6ogqR/XbX9SQWNRfiRZzvN8ZUMJ/lbmCjNeB/8Oy5bkO5XKjE3VYN0qS6uL689GowGdTgfm8zksl8sAQM/Pz0Xw5uXJ088af9a85gE1GvCnJ2hiOiD2XcrvN0Epcpwa6LHS8MCWNqcwDS6g9vt9GA6H4pWhmiOwWCzg8PAwBK5xAZ7zWwXu4gtMMTmx9I2FDXgf0vRFcDIN1sf8gFiasiSNaSw4q5WzDvvL8THvR887ixJvND99GiPVp8jzPCwa8gUGLRiaGnTR/NyYPNO/U/CeNLfLUEzG6ZzodrthTEajEUyn09J1F5XLFOxbRX1S/VgH/k//SQEmLptlbKrmV+Dmmul0Cu12G7a2tqDVaoWAUqp/56UYdsI0ZTEb1zP0e/znLZ+WYwXPPHLjxQSpbafYoGg5KfrFIo9fx/sq1neSbFj4pyhxvMB9qZhd1eaJZr8solgbYNUf97Q9pX9jfMR+Sy1bsoepejr2vUdOJbsak1XruyKkYbaycYl1YM7UMquMeUh2OrUOj32M2Trpd4/uKsJPSpkeeaw6FnIb6LrbU3TMylKqz1GUJJkuqudTCP0HTY69/c751myD1x+zqKwspM7HwtcUeyq5CcWwboXEy055n6BofWUCuFXxkVrXdSkxL9GgUSydRhcXF1fe2ll3OzUnscq6i7z9y5WcR3kCXM6XTqdzpU38ymLc3SyVoznjZUgDg1Z6gKt31WvpJOKL/NKpWl6Wxxgh8WvE8WpKbdczntajAfqi5H17NpWuU6/x8j2O67rK1wjfhORvK1s7rWmd/G9vsHvdwAQpluc6+90KnOJ7bePxGB48eABf/epXQx995jOfgUajAf/pP/0nOD4+XslD399bJ/EAA+oeSY9KJ55Q19D0mg6htlYLAJehKjFeLNAmUdX4kutxnLv4nfR+OvJ8cHAA5+fnK/LE7QqeXhyNRuoiwTqI4y3LucH24cYF7w5XXgbKLX+PXtqYwu09f4fGW39MHq3fqRO+TqdYwxJFb89BWWw0Guqp4/l8Dqenp7BcLsP72Z6gQ57n4Qrt4XAYrqzGDSK8TXwOI0bP8xym0yl8/PHHYfMf3rzC9RmtG2UB66D6Kzb3McCOeehcjgVk1+W3limX8t1sNmFraws2NjZgc3MT3nvvPXjy5EkpH9gTVORzhI6RdYLPalMKr95YB5789gR9veV6+JPoL/7iL+Bb3/oW/It/8S/gN37jN+CHP/whzOdzOD8/XwmMpZwkkOYA5kd9ixtwLB1ate3mf0uEdgHtDF0Es/iUbAivl74RyjefaKeveD20bzEdvneN2JLfeoN5eB38b8v2pI6FtFAlEfaFNz3lp4h/Tzfs0PIA4ErfSTehcUr5XdNXPD0dW7x5A58uGQwG4ckIXgf/v0pfumyZKfn4nPPKHpULL3l1Nt5+wuN6tD4ai0Kb/kvyL4iXKYvjplRfko4j9Q2qsEEU+69zzcHb3ptYb0klLa75KvAO8Gr08W0knIdcz6YS91sp3kJ/lKctWx+1v9L409uhylB0MXYdwucBL0XrTslTxokruihgBaSscmN1FM1H81q8e0Gb5iClGqyUsUnpDy9Ik8q3eKpShqX8HIxKPFnOlxXguA5CRdlsNsX3vzD45g1OVuGQWOOa4gDQcrhTzckKAmo80LwxZ14iGtTHawOREKDOZrOVOmPv3Wj84f+p10VYcqgFMauSC0+edc8Tj2PD09PxwUCRFDDi+aT+S3V2PcTLk+aUpYfW7eRo9ZYtp16vQ6fTgX6/D91uF5rNJsxmM2i329Bqta5cMQlQnUMSwxMeOaNyJOmpKnBCGapaJrzzXwqwx/oi1ZGm81eSD/w3nU7h/PwcptNpeGeV6wT8m+oIAAiLW5r+Ljt2aD9SA57WfC86P6QxkIKc9Xodtre3oV6vB3s4HA4BAMJ3kj7T2iLV5yEPxky1FZwPrn+LzicuOzTgDPBycxe/CtLiEQDExUye3+IZ02E5o9EoLMbO5/MrDjbNZ/mmtG0axvbwl5KGl0/nlscvKVqXRrhhAk9aplCs/yh5cadHx0rj4sHVnGIxC802xuZYqtxYlOeXi3jD4RBGoxEcHx/DYDCAL3zhC9BqteDTTz+F8XgMx8fHYYNEjLhdifXDTWE21D/4/A0uwHG+vfxpmJST11ek+lfD81Zeej15jD8Nq1i/8zTafE2dc9pvnjiFRSl4RfPLU/LyemPzwCqPYx0MIuPmWlqX1ifevrLK4GloWyR8ZmELq1899VvpvHPLk4+2j/6j7ZDmCqajdo9j7F/SS6rSDmjYlf4ekz8PT14ZjWHsmB6WyJJV7fsYrli3LU4lr00tQmXba/mKReoqIwMpsQOrHF5vVaTJn4YxJCrjM3vtSwpG8MhmGXmI8VD4ZGwZum0KglMRhVFVIMsir9FP6d9UkH3bx04jdGboZ/q35qjx04o3STFAcpup2WzC3t7eyo5h2p6DgwOYTqeioxKjlHeaOcUAkJcPz2kaviPP47BK99Gn9E+WXS6CLxYLmM1m8ODBA9jd3Q1ljcdjGI/H8OzZs5Udq41GQ3xXlpdN+ZR2gVuAuQp6VeR/nZTnebguMAZwpN+1N3953irpF3nccPHgi1/8Inzxi1+E3/u934Of/exnsLGxAc1mEx49egR5nkOn01krD0jUtkngGX/DHeLcViLhiTJaJifUcdIOyFS9/otAXp2HMkPzcVuBJ5parRYcHBzAs2fP1DGlQVuq12u1GvR6PciyDMbjceFAkpQH69E2XHnICsSV1RnaPGi1WtDtduE3f/M3YXt7G3Z3d+HDDz+EP/iDP4BOpwMbGxswHo/DhqUqeOHkLY8HCgGuLpZQWvd8o5s28GQx8rlcLuH8/HzltGiM8MTQfD6H+XwOk8kklAewGkCl3+NvNB0GuE9PT6+cjNMWGZDognAMD16HTuPzH3dhU/4k3VyWt7JPHXA+tGClZZto+tT6pP4pSp4gbOy7ddNisYDz8/Ow6eB//a//BR999BH803/6T2Fvbw/+5E/+BN5//334r//1v8JgMCh9UkEiOseqkh9aNl84QarValCv12FnZwcAAM7OzoId1E6oesbIwz+tB/mKlY19w31hiTCNtz8lW8fbrPm+lHeaNmUxgevOlPiY1HcpOMpaEKHEN65qPjflwcMX/S6mw2azGWRZBr1eL9govElCaxf/nvKt2StP3IHzTN++xe9TbjvBz9jP3tsmqtAXUj/Q+cNjgRJ2aTabUK/Xw4YwxLXtdjvknc/nK7jwl7ReKoIRJL1UduFGKr+Mva8Ko1D6y+hr/5JujqR5VQVetnCKVLcWv/LG3rU8VD/QWA3G/vltnpQ8uE1djPV2VkoQ4TrJA4YxHZLHiU2Z8EWDSFU6v5QHCZx4y0mhGNjTAilWXq08CRxz0hx9DVhKjrz0t6QQeHlSsEEyvFLeIpQaFLD62wrc0++84J47nRT00zpT2i4FJSUePJSiM2L6QZPn1O+9JI0Vfkd326LjgdcjtVotaDab8Pz58xDApFc9eIjKBXeyqpJrK6/X8f1FIkvv8O94ALuqeiVKcfqvk7xzu8r68Iq5PL+8nmU0GsF8Pg9XgGNwQtvIoY2r126ntBnlAwMRWvCLB3/497Fr21+leVlWJ9NyrDJi41Skfkkn4hjxhZx1zEeOkTwywXWWpT+sxRv63qtnDNF5w4XXe/fuwcnJyUo7aL3UGVtX/1kk1YeBRvyb/2b5It5AEB1HPtdj41Wmjzw2x2pDTM5T57nVVpQlTMNP4lKepL8BfJuj8BpQ7cQwD6SX1WVY32g0gk6nE8rHK1R5G8vGDzQZlyimX4uS5l9advm67Bvng/pSiD1arRYcHx/D48ePw3u/7XYb6vU6TCYTWC6X0Ol0YLFYqBgk5qtTfZhll6dSKRbw6hZvm7Xv6EJLp9MJiyuTyQQGg4G6OciaF5JMaz6GRwa5LfESxXL0BgxaLueH/6aVq+XT0mqk6VfNH/CU5ylfy6vVK/mjVswA9bnVx5p9tfhdLpcwn8/DBgIsJwWvc1wiUSxW4YmfxPxui7R+k2TYG3vh5aQQjz/R51rwxofRaASj0WgFT2XZ5TX0nG/pPfsYzvglpZNmf3gaLeZkzXFOXptvlafJKcfQUjkSjrpuH+MvK6Xoupgu8uTRyLKVZeIBFlUhayl5pf6T2lqkz3g+z7zS8IvEk4YDLFurPSeBVMmbsbdRURQ1fClgyEPr6puUieMR6DJ8WrKgOQjrcs6kNNJbaxIQ1YgG3/Czx7inAEdvQKEqeUoFjJrSsviJOSPYp/ydnZhuwe9Sr0nzUEw2Yw4lDQRTufE4Wt7AcUo6egUxpa2trbDD8/T0FN5//32o1+vQ6/VMHi2+AeBKAEYDx0heeY69S3YbbdB1kBdkWYCiKn0s1RsLxqV+X4aXdZFXbx8cHMBisYDt7e0gz/x6dm99qQG0lKAYfftOIvouKf7PN3y8KnRb9EYqH0WuKgW4HLvxeAwActAhlRcpLQbmi7znGMMW9Dv6bgwNrlF9R9/x0wgxYqfTge3tbfiVX/kVOD09DfVRO471X9e7uxp5AttaoLVIEFSqB/vmVZrv6yLsA7wOGWVzMpmEd8qQJHzEbyUBeHnaTvI18Lpg6TYZmocHARATprYNTwgdHx9Dq9WCzc3NsKnv/PwcFotF2BmuBSqqImwfbaNnPhSpg5ZH/1+X3SgyH5EX+kZns9mETqcDz58/h9FoFE6YA1za96OjI2g0GrC3twej0QjOz89L8Y0bfLrdbtDHeOpW8wOqItT5uFiyubkJ7XYb+v0+nJ6ewvHxcdgYx6loHIvLOR03LXjK57InbsL/xzbwN7glovpZ403zJ7lP7iGUP7q4yNuXOjdT8Y2nLIpfAeQTpfQtZGmsKVFf26uH8OaHdrt9xU5rcmW1C20CluEJRMeI6xWvzyHVp9mEFAzBb7coQtRfyfN85c37fr8Pe3t78PTpUxiNRuGt4VarBVn28iYZSvV6PWxAsfD4LzFScfLoDtrvMb8mpkss/MJ58cRCfzn2xehV9C0snm9LrOE6SYspaL695mNKZdJy+LyUbjStSpYkexazjx77uYJOUwOjkmKqQuDWPQE9SpmDKq+Dya/j8vaHVJaUVzM0Vl4NPKby5AWFHkpVtKkyYaWni7OaUbXmAgVdnuAG729NQRWRe8nJ1ZxBT1mefEX4ROecK9LZbBauw8V+SnEWtL705AXQAyuxvuB8UkeI8kSDtgjqJSeaGhEuW1RWeUDIcuKpw7K3twd3796F7e1t6Ha74UTDo0ePYDAYBAeVz4NYoM/SWx59EAuGpMhDrPxfJKJOrwU2Uh1vbzpvuVZgSitHcuiroHWCYZyn3W4XhsMh/PSnP4UvfvGLkGUZ7O/vw/379+HJkychYIhXAtMFK0+faG3xBtkk0pzVIv1lBRxvG3n0vpbW4yCk2iauY63r99fRrxqfFs7X7CdPJ5WvyZ1Xdqltarfb0Gw2Q8COYgopUEb1y3Q6De/CpvTLuknqgyK4Xer3sg6qFESlC9/4G9+cpvFKy8NnFfB3L8bWiJ+U1vzVGH+0XRKe579j+7XAsYaTKL+4mY5+Ttnk4NElVvtpG/P88qThixcvYDqdwmQygVarBffu3QMAWHmH1CtfvL80Pris5fnVa901zGDxwPsd4OpNPRoPUjkp86mIXrHmtjbPLi4u4NmzZ9Dr9aDX60G/37/yewxv0THS6kz1366bpL6h7Y7Jn2QHuT9G83vGN2bn0IekesRrD1Lly7I31D/VdCL+zU8Lan6g1vYy88Lqx5ivieWgHUO++eItz2/hPV4nr5e/a4x58GQ3/s7nmDRfJV/dIk12OD7wzGnpsIKWT+LPoz+tWEOMNOw5Ho+h0WisXD3MP+NNQfv7+7BcLuH4+DiUhzcQIM1mM3WTxDp82r9spGHXmD9GZdGDSaRy+HcpesqyCV5Mf1N+yE3RbZorMZ9K+64K4nqjSptflqy5mDp+HNPTspCkeW3VF4s/xDCBhl2s/Kk+CFL0ZCyCE86sxKTFuMXYTUy6FKeU86e9PYqfMT/fTS+lT+HLoxBihiIGkGKkpcMgmCetpFiKKJHUgATWp52ojJUnjaMH8BbZxVeElzIkARVpPsfAvgYa8jxfeZ8ITw9MJpPw3iXA1auMLX49YL4IgE9xaCjfPC8Gziy+JeJGhgbTsAwpPa+HvoOyv78PX/3qV8Pvy+USxuMxfPjhhzAcDkMbtDeSU+en5ITzee91Fr2OdBG6jQDX0use3V2mTdfRH975dxvHRiIMmqATf35+Ds+ePYPf+q3fgizL4O7duzCZTOCHP/xhOJV4cXGxcloFwG+7U3CWFEQs6lh4dRf/7Anm3ESgIoZPispfSn7sG+kKG+2dTU8/ebEh/S6Ge6k98oyX5+SOxW8sPZXrTqcD/X4fZrNZeB8dg9i8PXTxIcsymEwmN6ZvimDxlMClNPdj4+wh7H96gkoKeHnmPi0TcYt0S4rWHq0d/KQWxSSa7Hl8Fi2d9NwGvYZSaq+0yEzz4DXHABA2DPD3BDUqg984ZVkW6h6Px/D8+XPY2dmBzc1NuH//PjSbTZhMJivXO6aWLxEdbzpn0eZymUvxCenfOFa0PvrvNtz6EJvv2ly7uLiAx48fQ7vdhl6vBxsbG1f0Pj+9LZWP/gR/g9wiDbuX6UcJY2CZ1vyVsBPnR4tpSTgKf5fkzvJ7pHo0wrgKPcEnlWvVH+MrZstxIZg/QaHpF5yXGi8p+MXS/9p4WBSTDz6PKNaR7Asv09JBEsbCG2joGGTZy+vfrRs4JD55OzVsz+1nil3l9RSxpxJ55rGVL1afVP5oNIJms3llMbbT6YQ8g8Eg+HGLxQJOTk5CWXThNs/zsBlJqpvaME9bPG2qiiS+bsIn4xSL/Uhy7pHlFJxQtg9SfWaJ71clFvIqk9XHEv6P2diUPBYvmu+RoitS5Kds/CO1bhpXkOyS1m/SPEnhg/sNMRznKZ/bLt6XVnnmYqxmFDXju06FUbVh8IBKqf0eoICOogS+POTN4+GjKrppowxQXgYkOZUmIXe+eXppUq9L9lOAbdG+qWpspTmF1//RgBg6GdjPsSCD15mrwtGX6pfKpJ9rtRpsb2+HN0eQTk5O4PDwMLzDStsrKX0avKYBIkvnSDKNV1nhFXkAl0E9vIosy7LwdpREGADgJxw0GUfeaB4eiNfa4dWRMVD+i0LSeHInzqMHb0JfW+BIwwhc/94GO5NC1tx89uwZvPfee/D48WM4OjoKgRcaYKcUm19eKnqFl0ZU7vBqSn5lmHWayDNXX7VxL0rSAivqS05F8aNGfK6VkROPTSoaiPM4b9zm0KAl9pt1vV6er15pvFwu4dNPP4VmswlZlsHe3h584xvfgMPDQ3j27Fm4FlbadFglaaefpKAn/mZ9LkperE372cMXdVil9uBJUAxqYlpMb50O0wKK0oY4/M0KqHA5tuSayhw91Rt7F7wMWQEKam/xZBf2I19U8xIuEmsB5+l0Gp7EiAXwaZmSDEl+l4UrOEkBJU2ePfKAv+MGD9QTqDu8C+RVUCxYhjcD4Fuws9kM/uiP/gh+9KMfwd27d+H58+fQ6XRguVzCYDAQnzHRSJqvnLB/1qUnrfZfXFzA8fExtNtt6HQ6KzaP/qPlaGXHYkESeX3V6yRsi8dWaHNA2xhm1Vk1SXG6WJv4ginvB6kPMDZBT8jijTbam71l41Kj0Ug8kRvLx9tAv6NyL9kFqe9S4k00nTcGRudRqoxk2csr/Gl9KTYAP+NvWN5gMAi2utfrhcXwxWIBo9EI5vM5PH78GJrNJjx48ADa7TZsbGyE2M7BwUF42gLg6tXXlm98G8jShTdJsZhPioxan2N2/zr7QqvvNozHL+n6qYhOflWI63Dq4wGst70p+sSK13EdFYs7aBRdjOUFaGCtDPjyBG9SB8Xihwe3rXQcuFl5aJ1eR6SMsKWAGs2oeerXwF6RsopSDHhRivHBwSktk19VxcFjEQczJt9WQEjjm1MZkIv5U4K/ltPJHYJms7kSRKMnxmMORSofPOCs8ZjiPFh50Gnr9/shAIB84Mk3fK/Iur5NC/J6gwCU0KmjJ5EXi0U4gZxl2cqiMScpgGk5PFKwQwpkSG1JAcExnX4TpAWAAdIdAE3HaQEEb70pVLYf+RhLARRel9YPrwJZMn12dgZPnjyBo6MjODs7C/M79S3NIs6gFCDRAgPWGPH0tVoN2u120CfXHaRcp2Ocap+Lli3ZEal/tICfJ6/2m3cOxtJQmdDq8NpYqZ34vxRE5Hn5fOL2iPKrte3i4gKOjo5ga2sL8jyHbrcLb775JsxmM3j48CF0Oh1oNBpr1U0ahqOBYfobn+OW/BbRHym/S/Ze0yXalblZ9vL0pYaFeH2xOavhe4lvWo8HP0rl4MIndcjr9Xp0MdY7VzjPllxr86roJgzeFmxfo9FYWeCVNvnFMBE/re4hC+vz8iVe+O8WxqVp8jwPmyuR+ObrIjaqCrtGeUDdOJ/P4Z133oFPPvkE3nrrLRiPx2GxlG7YLFKXRtINRyn+rIc02zMcDmGxWFxZEI7d1GCVi9/zujQeUv02jx1OsT0xjEFtLMcW14W/NRuv8RwrB8AeO+t0O28/91dxgda65aAMpsWr6Ol3mv6O1Us332hzT6NYG2I60sKC0pzwyD1N6/WhJVst1YGLppPJBGazGeR5Dq1WC1qtVtjQ0mg0YDabwcnJCfT7fXjw4EF4XxbLHgwGcHJyIraNUxV++m2idfpkRcnCalo6ba5I/ggly8cuQ6k+WRX13bZxXCelxmAoVR3ziPFi+f+0bA+G9dQn5fHmk9JaON2y+zxW5eVFm4daTKXo2Ei+RCz+oZWnLsbyYH7IwJwQSvxKJjwJchvJM5m4QudXyWkr4N4J8SqQBM65My9dT7yOcS/ar5hPCxLQQAl1IovyI6WreuyrLM+j6CylFQt04jWA+F2qo0rLo04V57UsQOHATOKRn3x47bXXVk7+AgCcn5/DkydPwuIn6ooyhDJKdyhrit5yqLvdLjSbTTg9PYXhcAh5nodrAbMsuxII9Y63Vq80n4o4/L9oDoxGqYHFlN+roFhQtepybzNRXYY7qc/Ozq6c0vvwww/h008/hYuLC2i1WkknUYr0B/YlX/RICcTz4BaW0Wg0YHNzcyVIgYEk7IN10m2UjxRHQXqXWyMa4OfBNWlhTuONB8Sk61u9mE1yPrS83uC3VAfHG1mWXbn+kPKBiw4AEE6veKndbkOWZfDhhx/CeDyGH/zgBzAYDGA8HocyU4OaqaThK/78AQ+gczxkBQA9jucv6ZKuIzDFsTDHiHzhE/nim/qkYKEkpxhspjYLqYhcb25uwhtvvAF/9+/+Xbhz5w5sb2/D06dP4f333w92AUnDrSn+Fie66MAp1RegizB8Zz7tVzwRiyfZut1uyBPTd1LgN4X43NfSUL6R3/F4LPpOAGljQOWN1wUA4fYdgKvX1a6L+CLbYDCA4XAI5+fncHFxAc1m08yf4o9wuaJyU8b/jOkb7kPSejU+6TM1Whup30ZlPSVYK5V9XTbGwi5WDEOai/g9fa91c3MzXEO7XC7h5OREfEOWUirGxrIpJovxKZVF53csIAyw+v5vWaLlSDoC4wyU6OlRKUbAy62SePm1Wg2GwyF88MEHsLe3B7u7u+H3119/HWazGTx9+hQ6nQ588YtfhNlsBi9evAhvcI/H4xXfD6/2xg180tvAUhu9c89q1y8qvrPkhFLV7bf8Zk3nv4rjQNtyk7zfdP23lW7DutJ14Tlu+2JUFlt7y/eOgYW3NFpZjOWGQlpk486K9E7ObacyAW9aBlcannIlMF+Ul9hglx0LizeNfws8cn4k4KHlifGS4kxy/mnZFKBadUvtTnH8tXK07zTyyF9VisoKeuDfknPEF7vpCZOi8sr70JNX63dJkWrAhOrFLLs8YYqLsfjv4uICBoNBSCMpZg2Ia3zz/uLOFg8IUEJ9jZtjMJiEi7FaQNAab+k3bUxTxyYWlJD+lnhcB3F58PDK9YgVQNHkJYXKBIW8RPuhDHDCsqS/pbRVUSygmdoeTE83oM1mMxgOh3B6egonJyfQ7XahVquFNHShJeakpwQnpLGx7IwmL/x7POGP+huDK3gayhOQvm3kce6t9GXrtIIJkt6nYxmzgZoelnS4V6d5yYNvrd+5XbLsA/YJfyPWSyjHOFePj49hMplc2UyqzcGq5N2yC/z3GBaTeON6YR1UJChVtv+kuYHkweUpWEzLy7/jGJKnlYLX/MYY/J7rC1peim9FdbN0cjHWRtpPiOObzSbcu3cPHjx4AG+++SZkWQYfffRRsj/GcazVjhifvHxLJiz9i3/Tz7gwMx6PryycWDxJGEkaR6msoj4ijlOtVgubVaSrpDFdmQ2jWNZ8Pl+RZ0vGUrEMzyvJJQCEK2Xxf+0kfhniOF2aiyn2wqMjPb6PVa5nHsTsA9dhRdviSSeVW4VfpNlJrotwIR9vu0J8YfWB17eR0lGfwLJpXtLsGtWzqT4qJcnm4P+4kYhvTJX4ob9LPMVwjcZXyhxBfXF+fg69Xg+Wy2Wwl+12O9jLer0Om5ubMBwOYblcQqPRgI2NDej3+9Dv90O94/FY7aMYRpL6wEovtf06SZLlqnzrWD1FqWo/DimGt1OxjDQ/UsopQjchQ7epfoB4HKrIWFQxfpINqVIXFiELY9DvU/pQswVavfRzDCcV1ak8jVWPhAtiY3DlZCy+v8Qz4kLDzs5OuOIST4JwJ4oaMsyLZa9TKKoi7jjR9y1pGinwI/WdB9ha6dZBReriQQOpLM1x9DpeqXlSyLp6FduGIDw2ebxjqpGltK6LrMClFDywSALY0pVwXDd4gwp0bGh59O9UGbPSUCNATxBIvLVaLbh3717Yhc7nx2KxCNdmxYLFXK9gWTyfNOcajcaVdJ1OB7a3tyHPc3j69Cn0+31oNpvwySefwHA4FG8/wPpS+uq65DZWj2Y4q6J1lImBzW63C51OB05OTsIV11X1a9lyPIE6LzgsG1SpgqxxTB3jPM9DELLX68F8PofZbAY//OEP4ac//SkMh8OVsmnAhevKlH72Eu9zKyhEv6M81et1eP311yHLLjdyTKdTOD8/D+/D0ZOJv6gkyXfqWMTGmcqHdcqYv0lVhqit5ydwi7Q55njR74rwTwMc2A/L5RImk8nKm24SJsGApxff1Ov18PbgbZRvjz1cl66lgV2sg25UowFm6R0gXACiefDNWH7Ch25cofXQNFRmsywLJ+L4FbIalcEMvP2W446Ev7daLajX6+HKWLydBGUbT2pJbdAC2+sgxN/tdhv6/T6cn5/Dw4cPIc9z2Nragm9+85uwtbUF//t//28YjUbB7y8TfKVBGSpPGBivkiRdh3EPfOf9rbfegnq9Dj/84Q+TFy8leeCxE/q7d+56ZWA6ncJ3v/tdqNVq4dp11Je0j4u2h+en2KDojRkxnMb1DNbLeeH8Yd6UYKU2h+lYaoE+yZ6mzAuce55r1ouUb6VF28dllmMFraybwvraQoZG9EQO7W+88aVer8Pdu3dhNpvB4eHhinzz0zx0vL0xsTzPwy1i9G1UyebROujtCSn+MZfJGH8eqtfr0G63odfrwWg0gvF4vPIOLuVbC6ZT/lDHW3Oal5EypyU6PT2FyWQS7DLAy5g20tbWFnzlK1+Br371q/CNb3wDHj9+HK4pHgwG8O/+3b+Dw8PDwFOz2bwSW4z5ydrv1xknLkJV+tbXSVaf0zgcxx4o35KNs/yQIvz9ktZPNx2bKkKWf7FO8sQCKDbTypDmXpETsrw8L66roq+4beI+K/1bqk9cZcjzy91AW1tbIdN0OoXlcgnNZnPl2hfJIZdAL2eGkgRgilIZJSc5RjEAwdN4gYbGexHh4/VUqUxSgnBSniL1FC0r1bmR2hZzrFKpCpnm+cvKR2paL8D31qMpyar63KqX/g9QbOEF4PK6MhrMwBNjAJeLoq1WCxaLxZWdobxuryMb41OTX3QmAS53rQ+HwxD404LLqfNI+jslnyddKsD3gISqiNuPGM/893q9HuwqLqjTd+essmK/0frwb29/pY6nJ/gcA0pV6oDrAtV0PPGphnq9Hq5qpG3CvyUnLcuylbfzLJL0hBTw0/JoMiHJG6bFJyrwxKBng4kH99x28swvyaHQHHH8OzbOHvtrzVs6llJg0sKoGl9SHirTFnnntkdmpL7EYFcKUcyPAb+DgwOYTqcwGAzCFdwevb5u8swfj24vG6zUSMMCUhDVsmseG8WDs1zHAry8rhpP6Uyn01LX4nIepb/pd5a8S2MSwxHWBg6pfv79a6+9BlmWwfHxsTtQodWHNzxQDNPr9aDT6YQFdt7X2jzy6DcNK3vnRJG8FK8gtdttaLfbsL+/D9PpFObzuTtoFJN7+r3WbknOpfJ4TAL/TafTsMHE4iNGFpaQ/rZIa0fMN5J+k+wcJZRJuiHOa78oT9TeU7muAqdbvHhxdhGK+SuWfUXsamGcMn63J59Wj2feceJl4L9erydujObz36PbLHmRfovJqGaHKD9SGV5ZSyVcrMbNRVz3W3Y+xTZ5fKWU8uiNKOiPo9zP53M4PDwMG6c7nQ7s7OwAAMD29jbM53M4Pj6GRqOxYgfxxjRN30jYskjfe2zaXzaS+taDOawYhpTeKr/oXPrleK6PON62yPL9NOzlrVv67CGP7dd0jBU3SCGLB6+d4flieWM2s2xfxrC55M9a/Gjl83rUI1+f+9zn4P/7//6/YDR+8IMfwKNHj0RGcVc6EgaVU6msYqkquGCd/NTSWMSFv4wjfJ3E+ZTAtpVeSqPVk5qnCrLaVrQcK811Gk5PfeuWQWmOpDgf/HdeznXNIYm3/f192NnZCUFBepqjVqvB/v4+DAYDODs7U8uU2mQpfGm+0aAX1o//49WhNP3BwQGMx+PoW1sp5NFnOF6pp6JpHUX4uo45h23jOyM9TiJeg9Xv90N6vP4PF/KKXL1J+ULyvC0okTeI4rlRQONtHVQElKWSJGN4dTluxsBd1RZmoDvwY+XHnMoUfMEDVVI+eltKvV6Hfr8fTvtjoEEqV+L3JsgK+tA02nexspG4Hk4lfmoW7QHX6ylzDDcM1Wo1mM/n4ZYXGpDW+LWcDCyf8uPhyxqLsjg5z/OwOAKw+mYyPz1CHTfsk16vB9PpFP7Lf/kvVwJp10XcNnqcvpuiFOeXnzryygF/DxLztVotuLi4WDmxhenm8znUajVot9tBFw+HQxgOh+LtIUXbjX/zIDNtI+WLzxuUsdiblkX4A3j5bt1sNoNmswn/6B/9I+j3+/D7v//7cHR0BMfHx5Bl6SdM0RYU6Uc+9tTvovqI4lqMJeD1uin+Fl+0l2RVusZW0kdIGxsb8Pf//t+HZ8+ewR/8wR+EhejZbKa+k4o6KNbfnsCe1n7aNuxD+m5orVaDjY2N0vLvJZyfEl2HLuOn8fFEMM63PM/DUy2Ypixfml6j77NLcgawehOGxosWCFwHxpLkCecl7Vv+HrQHU66L5yIk+dycZ9xgub+/D6PRCJ4+fXolj0ao47TTnRSLxfikvEqnpC3f2tJpVcgR5p3NZjCfz6Hb7cLOzg6Mx+NwRboXG3M+tD6U5EtqizWfsFyafrFYhJtWut1u+P7k5AT+8A//EO7evQtf/vKX4bOf/SwMh0Po9/uwvb0Nz549C/nxX7vdho2NjWAfkCx5+CVVSx676imD4wc+p+j8k94JlhZibhuuT6Ffymu1VGXMyvLfr2vMeAxD+s3KW4aoP1H1HPPEt1Jt6sqK6ec///mgRO7duwedTgfOz89hMBgEBxfBPV5xSU9/oVHj14B5O8MT0I/9XlWna52dWr4WYEoJVsbAbGq7qzBMnCxQqgWTrXqrUkqxgKL2ndSnHNx5+fMGrLR6Y6QB71Q+vXxo4FeqL9anPB//2ypfCnDFKGXeSToM68Xr9AAg7IJcLpcwHA7FxU5Nh0j9E5MB3ge8fVwvTKfTUB4PyEv5YvVSvlPmPc/nJWseWkT7swqKyY5llC0ecAfxbDYLu4jL8CGlrRKMeOdqSr0p89eS/5Q6yxKfq/wksycYQH+n//N6pDKtslLmiFanZjuKBm5uymmT9FaKTcb0KbJMbYV3zDg1m81gV1L5xTKzLAsbAqjtonViOo+u1IKuUjuKzkMtOMXHgH+WsLVVNi2HvmXP/RVJ/qu0KbFxpe2Kzb2UMbwOsnix9ApvB5U7+j290pvrUHo9Ko6xVO+6KVZfp9MJi3noZ9N8Md0TKx8XEp4/fw4bGxuwt7cHAADHx8fh99SABcYJ5vN5uI6y2+2GTWWIaXA+xcriFJMbqrM0PavpqpR28hNduNnjzp074X9+QlZqRxH/vChG1mxcij2yeCsyf7wxB2/ZqX499ePwylnsC8mP5HbE8v3XFaOgfMXqiOl93k6pDv6dVXeKzyfZbU+6qihV3rEvcQPbeDyGLMvCbTd0g4GEVSzskNJGy9ZL8ykVF0r8aXbX8k848Sfq6NWuGv6Mzec8z8MNUthWfvOY1kbarhS5RT4xzoOEi6zL5RJevHgB7733Hnz2s5+FO3fuwObmJuR5Dn/rb/0t+Pjjj+E73/lOKL9er6/Eini9sfHz2IUiWOGm/LLrpJgOS+kDy8cvQkXsPdJNj2csdvCLRBqGsXzg1DKl8lMoRb9506TykWLftDo9/eLJ69WpUvn8dzpPOTaTMCT+JmFLSU+vLMb+vb/3964w9vjxY3jnnXdCxna7DRcXF/DJJ5/AdDpdSYvGkn7Osgwmk8m1O8BVUuxEKCUrHXd46Qk2jWKGtYrgl1SuR8lboNNbT1nyKJkYn7EJ6a1HIhoE0uq3+CkKGIqk9+SRHDRvPTHjleqwlwksaI4A/Zu/C4GBslqtBsPhMID0VqsFDx48gMViAY8ePRIDgBbg4n1pyYi2I5nmp3wvl0s4OTlRT+bxtms7dK1AV4xP1Cc3YQOuCxTyeY7EA4HSb7VaDVqtFoxGI/UkNaZPIS0YWQXdFNjWQM9NkXTamM/B2Jy2gi1aEMuyY/RWklQwSgNxkszgm4bL5XLlzTAa7HuVsZ5ERTBW2T6o1WrQ7XZhuVyGzT24OJuC+/I8DwHEdrt95RQLXYT08F2kXSn4QAqC0/Zqb6fn+dVF1BhP+A83meKb77VaDZbL5crJdq1OL/6MOY6ag6b1Cf4Wa+Nt0pWUNEeW/0a/k/rBOtWIb7Dim78YyNXopvrozp07sL+/D2dnZ+GtVRqwpSdoLMzL+wfnRLvdhkajAX/0R38EGxsb8Fu/9Vuws7MD77//fsAeuLE6hSaTCUwmE3jx4gUcHh7CvXv3YDAYhPnU7/dhOp2u3JoFcFWfUnmOtZGWQe2NFHznfZLqr+Z5Hq6sRHt3fn4OW1tbcP/+fdjc3ISvfe1r8Omnn8JPf/rT8NRE7BaMKklrE30/FSC+Id7yta7D79TKiek6bh848bGnp/bw1ggA+d1Nis8p0flY1B5ymfeQFNRLIe2deeqjYtmW/FKdTfsdy6enGDmvsROgMawco6J5eT6Ui/Pzczg/Pw/4q9lshtsYJJmLbeQC0E9ESvyUja1IlGVZwHz8GSX83/JJJH7p9/QmHSoDaH8xHiyd7JXiDCiLzWYT+v1++A03vkv8WXjLIyNZlgU9ThffcWMTysd7770HP/vZz+B3fud34Jvf/CY8ePAA3n77bfjmN78JP/nJT+Af/+N/HOwfPmWF7+hyXqWF5TIxvLI+SNUxg5smbb6VaaO2WOPh4RepbylZ7bqtMuXBGVVTrC9i/fiqkObbVlm2RWXqluwq4iTvLY/SMyZS+pXFWH4tEABceSNWWgCgTPIgpNY4+nuRAFcVk4PX73XQNIDlWcjiRlhbiNJ4lH6z8sX4KZO/KHnrlZxyy6mkE6cqpaqNjwaerTI0sKml5fXG8krllKUUJaYtIKTy6QmaxJxv7buUfNImDNzdiI4E7vw8Pj6Gi4sLmEwmIYiL781RGaKf0WGR+LBkxqs3aVCIv1tShXxoepPPmZTxLBLgsMZX461K0nSz1c/0qi90+FDe8Fpbrz3i9eL3/F8skKvROoBUmfJoEPY2EA088WvLrXHE9Lhbmr5VJKXlnyWQy+cegkYtAC6VzeUG5RTfm+Nl0TZac35dmKKoPpN0ryegoxFfNPE65ZxarRY0Gg3odrtXrnnUQD0/IYi84E0IUv301JcUlEtpf9EAkGUrtLTS9xxbS0TbFQs2AlzFmpod1uopQ0UdcWybpB9RF/DyYxhU40GaLzHd7NFvKfOZyo83yOr5LkYU+8QWLng9VP4QM56fn4fFUN63dLMEzVsEJ8VwgIe4D/vRRx9Bo9GAxWIBR0dHsLm5CVmWwXg8Nq/qs/ikRE9WcXuj5U3xlTC91DfYZ2j3Tk5OoNVqwWAwCAsBRfuyyhgG8qr9hu2iN5xJ/keVPFYd35HalzIHqPxPp9OwMEsxTowv6TPnmbcjtQ+LzPUi8SOrbq0sinM1rMT9wlT/lY6rhk15Wfz/WFuKEOUJY6K4ccuz+cKDLyW/P6bTqN3lZWhtQNIwaxFMrelmvsltPB5fKV+b29g2bnPyPIdGowGdTidcf+zlOQVbaGXOZjM4PDwMv/385z+HRqMB29vb4Sr4brcLb731Frx48WJlkzXaE9qmMrJaBTbg5VF5WJffVpaqxN9aDIf/RvUP9g+9CRRlVZt7Vl9WMXZVU9Xjb43ZTcmZ1e9V8KS1zSMLWnlFeKBlp+DxqniR8FqZ2FCKj6mtWxYZ81SfU6uL13PlYdcsu3yPB6ndbkOn01ELpISBRSltEeUUI+9geJR2CsBOcQSp8uZKmgc2NX41gYmBtaJEDQsH1pysfks1ljwPB/zYl2UdixRH3QI4KbxoZXkVBOc7Ni6Y3tsHEkntswyLpOQ99Vtykqosaf9Kc1Y6sakRfwMTT89Q/dhsNsMVcBcXFzAajWCxWKzcGoCOCP6NQSXrJILkXPK28N+5A0fLx12ZeA2u1m66q9mq1/pO+z3m6FUBQtcF6mIBFktOJT1N7eRyuQwOZZZl4mksL1/0e64vJQc4Npe845viBMd0Fm/Dq0CNRiPwvlgswiJarF8ajQa0222YTCbhpL11Op2OWWx8OACljiLXg1K/87dLx+NxeOOYpuWBqOt2KqsA8pZuk2wV12sUq9RqNdc7rFIQBeDy2tJWqwUbGxswnU6v1C/xQE/4oI2Zz+dXrlijdWMwXjoVxNsbI0mGOPGyNP2YUh+1VR7d79VXKNex9J52U6pqbnC+PDjB0heefkG9YJVDNwVgniqDZhalOseppOkI2nf8M90Mp+mR4XAIABA243C9gPrEGmtebpn2WWXQ96uRv3feeQeOjo4gyy5PI+/u7sLFxQU8efKk0JvLvJ9x4xoGsPnVwbzfMY/Hf6XtlfQstZdZlsHBwQEsFgs4PDx0YzReduyazpRYBC9by4dpcIMovWWh7JwpInMpPrhGKViflo9PzFD5wXchPf3BTzp44wf42Uqv4XmtnVoaK/4i2SvPXJFO0NJyKP6hVOTZlRT/sKy/5/GDKOF75NguiqG4ryXhaq6bpLq08bDG1PPuLL3OH/UqHx9PfEEi7UaAVqsF7XYb6vU6LBYLOD4+ds13rZ/wc6vVgmazufK0j0cnpGAw2qdU308mk/BucJZl8MMf/hBOTk7gV3/1V+H1118HAIButwtf+cpX4IMPPoDHjx+H+rrdLrTb7bABO2Z3vfxKdsEaS+lvWhfK6rpiKtdFVv9STIsk+SmYTnoOA+e59tniq0y/rhvvYh3XQddVTww7eflI4bfqtkm+XKrvTPlK9SU5L7G0tJ6i/RbDTJKOLBpf0PRF0fmq9TPnZ2UxttVqBeNzcnICn3zyCZycnAAAwMbGBrRaLfjggw/g7OxsZcc+ghPqdOV5Hg38SwxzigUPrDRe8jo3GniKORaoyL2BIInWOaE9YO86KOZ80KuXqtjVu25Dpp2Wthw+j4zFHEYOqIqQlJc7Glb9kpNHedM+I1V9zVdRuea802trsiyDdrsNeZ6H9z7xRJwkyzxgTxc18FrEojJLx4YGADkPVhlesgxzrJ4Uub9J4oul1NmT5rV1YwQSzUMXyjVZ98oC/Z8uTGi63dIP0vil2AePnHmB1W0lyj+ekkfdgAvpFxcX4jVtGkkAG7/38GF9p+WV9LR1GhDfxkNdR+eIxsdtH0uNiugjenLL024toDsajcJ7hIvFAs7Pz2E6ncJwOBR1D9ofgJc6fzabhWvdOp0ONJtNODo6gslkEoJwngCkNo6SDkntM6l+7rhpfcSJBlVigRD+G9e/1ltkvE7pf14HD8LSuWbxuA6bGHPiUW9hWso/x3/0n7RIR/PGfKRU4sFvrsuQl8ViAePxGObzeak+tXSt1TYtwIFparVa4A/fsqR+eBnCvsdrFcfjMTQaDdjZ2VkZQwySe8ujbavVavDkyRMYj8fw67/+61fyYBrpRHasfEzP5zb/LVae5sdwfvhik1Rfv98PJ59qtRrs7+/DYDAI+dEGpBCdVx5s5MUUFxcXK/iE1kNPYdOyb4LWGVSm+mmxWECv14NOpwNf/OIXodvtwne+852wGYLjH9rXKUFaqg/LxL6qzEd5Su1vqqus25XofIvZ4FQqE8uIlYv/W3G/PL+8ZeTg4AAuLi7CJjl+wtEq09MfFpbitlTTlUjWaSCNL5STmO8W8/OyLAvX8aIOwhuAcJ7RU/qSTHI+F4sFDAYDaDQa0Gw2g75GfIvPEljjWEYm+cLsdDoNm9zxuz/90z+Fd999F772ta/BaDSC/f19qNfrsL29DQ8fPoSf/vSnoQy8Vc26EUkiS/9rtg771xtT4Dj8F4Es3JvSTp6W6yb8m/qDRcmaZ+uymb+o9IvWX1Xjpts216vmx7ILXl4oT+jbeHF7jK4sxmKh5+fn8NFHH4XPnU4Her0enJ+fw9HR0Uoh6EDyhlknfKTgjmRkYh1l/V4W5HqBtMfAadcTp/BDy/PyFys3BkKrqCeVJ+1vBL/UadICIl7Q4SELGGuEE1VTmBqAlb7nQf1YvZb8pshdqoLR0mt1llGOFmlBnTJEg6gYyEDHJcuysEBBg1pcfuk4Zll2ZTEDA4bSWyrS31q7qPNspbO+18hyNLUAYlV6SiuviBxp84nqGRoI5MFKHrCh8hGrG2B1l22RxVitP2KBvaLjbQUVigZe1jX/r4Nw3qNDjW1J2YBGydLb1hy3gi2afuayTz9rb+ACQNiEgqdr6BthGp+3mWJ2mesF/E4bK/zO+2SFhncx0Le5uQkAADs7O3B2dhauOpNOmqHt6HQ6sFwuw7t429vbsLW1Bd1uFwaDAQyHwyCzqUTlIQUj8/z8sybvXr3i0XUaTgS4qn+535KKJbkt4N9rJ6c5j0Wd7Vg+rd81266VIeEUHvzjJJWtpdX6MM9zc7Gcto/fOkHbWYakeW/xwvnCz7VaDabTabhJBd8mtMbQyz+tp16vh2tZe73eyhW7KRszOO4BADg8PAxtSBlLi/gcsDBS0fGk85TLM8V0lNrtdjgVV6/XYXNzM2yqtPrSaxvL6FOpHN4u/J6e8PH6p0XJGqOYrkuN72h+CZ7aww1KX/rSl2Bvbw9+8pOfwGg0EvGUhXljPHltTxWYqSz21nSslCd1w5lEZWMv68jD8/G2IabHwykAL3FYapwsBXd68ms2lf6vlcvTST4CTSvpf6nsLLu8En0+n4dnN/DNWKqDAF72Y0ye8IpjevCnXq8HfYw2VMPVVj9oZLUXMTfOieVyCT/4wQ+g2+3CxsZGuLa41+vBgwcP4OLiYmUxFvUyLsZ6cZvEX+x7T/lSXdItDla9t4GK2jXaRx7/iM576cpp7h+n8k//1sbvVfO5qySPn5JCltzc1n6m+FWi1HmPebBsWo+VlvMk/VZGd8TyavZLSsPTx3SoNQdj/S+VpfF45WjDdDqF58+fw2g0CtctAAA8fPgQDg8PV+6+z7Is7OKlzjG//owT7xTNyJRR+Cngmaf11OsNFGFaz8KIRJZwpRJ3yqzrSbwkCWeRPDRfq9USx8Qb3CnCt/R7VQpYAjJWAFHqm6qcthg4L0qSnK4DsKX2gwUiPUZK63s8/XZychLdHYNzbXd3NwRulsslDIfDcKUxBoA97fPqBBrI4lcuW3m0+vB3a8GG56k68Fkmr8dg4o5bmrZWq0Gr1bpyDROOubQ4Qk9LYjpeP5YLcHkajl9bJLXBap/UXqy3rA4pYrO837+qlOeX7xbR5wboIi1NZ5XB05TV9ShvnkVBeqKN1h0DsxLfVTtHN0lFF5itQCaWS/WBdh38xcVFOAmLi6f01KIHH7/99tvw27/927CzswPdbhf+43/8j/Czn/0MhsNhKIuOmWd+Stf8VzHmMceNBkhSeI451tTBGo1GAPDSfym7yUCThRhWoDYlFvDkn3Exj16VHqvzOkji3etnSek8m1txDOmTEa8K5fnlpgwcTyoTlh+E/UXny3g8hslkAv1+H5rNJvzxH/9xWIy9uLgIb7uWmcfj8Rh+7/d+DwAAnj17BsvlMryriGTZFotw84923TGVEc2eFg0E8U15k8kEDg4O4Pd///fDlf3Hx8fhhBzejGPRuuYh9Qtw7NHeYDusG1xuUj9ItrDImKUEDev1Orz11lvQ7/fh008/Dfif2mjJvvHgHC9f09k8mEc3a6+j73ndnrRWW9Hnxed6kG9uJ1P8lRhPKf75Om0c1oHvd3s2A10nSX6gxQcdb4pNPXVI80K6jUuiWq0Gm5ubsFwuYTKZhLw4/zkPKbLl8XG5nHtjKdr8Xi6XMJvN4OOPP4anT5+GG2p+8pOfwL179+B3f/d3YT6fw8OHD0Oe6XQaTunzp+qsYL1GRW1bjGh51Pd41UjS1/iZE6bh8iz5I/R/CZ+sG3P/ovjaRalKv5PPwVeJLF8qFXNruudVie0U4dFzuhXJkpei+ZEaPOFyuYTBYAB5nkO/3w/fD4dDePbs2UpmVEDcGcLr+nha63/emDJKLLZAoKXX0sQmbCyQJPGiCY2Vrqo+oY5GFWQ5QJ7JQUEUgjIaeANYfW/XUhQpkzE2hlWCfEl2eP2avFht0oJQsfQeYGLROhQzb781JrH8PJ9VLk/jIVyYQ/BN9aDWx+12G7rdLuR5Hq7PA1g9TRcL1Hq+09KkOsKpfVJGpsoYNEsvpBDKlxTcswKh2ve0LKkvKYDHawpTdlHG5rkUnMPPUnqrDJ7GAoASb1XMudtI9MpXOtaSPEvzg853q78peQNrWIann6XgDP9eyuMZ5yqprFOQGrjg4yfVr423Vh5iZOsmAbQR/OS1xEuWZWEDG+Vld3cXvvzlL4cNk5ubm9DtdsNJIE3uLJLSan3C+8MbZIrhrqLjH5tP9OrOKrGxd45YGDCWl+bBhSHJjln5POl42hg2jQUKYjIh9Yenn2h+XGi8bnuj4RT+G28LzndczNTSxuwvthnlut/vQ5Zl8Omnn4aF+jx/ecLH0xbpM9bx4YcfhrHBaylpGk4emaNjLelLTb7K2gksG+37fD4POnk+n8PZ2Rk0m03Y29sLi+YAoC7SpNibmDx75hX+j/0nBYqrIslPK1MH578sb9hn9KQS3ua2v78PFxcX8OjRoxWbzJ9BkvQU118x//W6KEXWUvU9ypJ2u4O3nBRMqn1fhT6XZFWTP5x3VT+hZJGG5WOxgDKxHS8/Fu6T0uLnRqOxMh+576FhPlof4hvpOnBPe6vQK8gHAIRDSpPJBJbLJTx+/BiOj4/hd3/3dwHg5QIs5uFvkWtzw4uVPe2KyVLKeHrq0HhcB6XoMW96b50U80h96iFvH3n8rKJUBWa6yfJj5Okraz6l6GKpvHXiAa8cpPDD9XKsPE+ZUp51kdVWDbNqaaV2VolTAdhibGowOIVQWVm/V9GglIHWHEQpYFqUpAl83SDdc31oLKgi5SlCqfkxmMKvwkbnWOMzlYeUcYmlk3a7IXneupXquy4Fhs6qRqnzK+ZQpZapUVX6QyvXEwChwQ/8jhIuxuIJnM3NTRiNRnB2dlapjvHsYEwNvnoMtydAVCUV0V9SfgxgZ1kWrjSkRHUPfsYApDXeFnGdiraX2uAiAXLpexpUpOms63QtoIFlVukIvEpk9TXV/R77hAFeS8do+j/W7/RtL+r8Y15LN2sg+7qcC42suVyVjtECXVKwFXUDfsZ3w7kelvij40PTS+834il61BXIT7fbhW63C1/96lfh4uIC3nvvPRiPxzCdTqHb7cLdu3fhP//n/wx/8id/EnVIsF1UBvn/GmZOJd5meopzneSRE48PpAVbsE3aPMY0KYRlSptcabmo43ExFvNIskvL5e3QAj78PVhKXK9UNRdvwl+qmiwbS08q4omze/fuwc7ODnzta1+Dp0+fwp//+Z+HAK6kx7EsxO44BnTRpGwfcjxA60WZ63Q6kOeXJ3p5EKsKeaDPg2j8caJ1SzaPfqanSbFd+Cbg2dkZLBaLUBaekDs6Orp2+eRjQT97sVlRXVQ1afyhDvW83e2hTqcD7XYbxuMxHBwcwN27d+FrX/sa7O3twaeffgrvvPNOuMJ7NpuFjbISv1rf0Tko4UA6TlL+65CjmL/Cf+MBWSpveJ36eDxOwoexwG5KP2gYu2hfamPD0+BGGaoTbiNxPUwJ7QnaCX5TCubBOUhtMepIXFjlddC6cLM56m8sj26OwHqQDwuD4cZlPlY8BiHF4KqIR9G01F/nsbMnT57Av/pX/yrogsFgsPLmMhI+LYInhYtQFboj1l/cflLf5abnQBGc6OHZg12wXslWYUygCgy2blq3b31TMlIV/3Rue24dA1iP/5Kiq9ZBVfp3lMqU6b2ZoQh5+UoZa6nMlcXY0WgUgtHYuPl8Ht6a4YVxxwzJC8K4I8nJI3Qp36c4cTepODgPVU5mLYjknWBFeLLySL9JTg6Xt1j9lmHx5vG0UXIGODipYhzpuBWd9BJQ1T57ypQCtWWco1i7ioxp0TpjOk0bY/45zy+vvmo2m9BoNFYcHvqZlmn1g9a/Gq0TAMZ0Bm+HZ35ZAYIiYFsLPNCgMf6jb0vxciwwTeckD4zFiDqjZQE7d4o5L9TRla6ajpVLg8Be0uYR769Xkag9kgIDnvxWWsnx9WCtMvaGj4lXP1rfXccYpwBmJMn2edtFiV8Jien5lZDe/sHPo9EI6vV62FWP31M9gQsGu7u7IdjV6XRgZ2cH7t69C71eD05PT+Gjjz6CO3fuQLvddmEnLfCCgYUqdBWWByAvQNO+kIjrEo+s0XnqGWsLx8VsMdVxXnvOf9NkwyqH2jRLZ1j+kIVttDycDw9OL0uS/rXmmYensjxL80b6nQd06Pyu1+vw2muvhXdYqwjq0LZr//P0sfmHmIBuAqha38f8djovPfNF0vsWPuQnXii2024AS8XpFn/S75avJaWPYdcqyeI/1W/n/V50DqCdvLi4CBu5a7Ua7O3twWw2gzfeeAPOz8+vPDMhPeXkxfWSLuWfi7SJ6/qifVI2H7Ux9CaGFJ/U4z9q81qLYcQoNndSMYdWDq+ryrnmwfge7Cn9L9Vl6RBqnzS8QecRLqR6fUmpPL4Y6xkzzrP2WyrR/sP3YwEudcfjx4+h0WhAp9OBxWKxchqY94vEn5fK6pHUMrlMl627inmRwocHR2vfWXhXwhEafquizevG1wA3txZSFXl9KAB9rCUdlCJrXtxT9XjG7KuHivBk2XirvNi89MTMyvZlmX7R2irJD0+7shj7zjvvAMCqg/Hw4UP46KOPVhZjsyyDdrsNAL4d7ejMSO9NcaEuA1hS8knvz8QmWMogSwo4NThRtC94PlqnN4hWNWjEv/kkpb/jbn4qKxywTSYTmM1mKwGNIjxZwJLSdQSTNJJOsqWWWwTUabJzHUTHhgJ8CwBZRANGUh0AEHaGIuFJNYvwbVEpLTr+eKXZ/fv3YX9/X33zCnngb2zFKAaULXmJ6RbptyInpjVwir9dJ/jA+qkertfrK9fpSYS7VnFRHXf60jKx7izLouXRfKjLNFvoJT5HJAe6Xq9DvV6H8Xi8cspEui5Ks1tcJ1GwUda2VRmsWEeZku3Cd34RD3kJ3wKsGoRnWSbqkZhD4glY4Oeyb2nedtLGggflPXM2pY/wxCueuvrxj3/ssuNZlsH29jZMp1MYDAbwta99Df75P//ncO/ePbh37154bmQ0GkXfNOR6BHXDYrGARqMB/X4/1IP6RGq3h7Isg42NDQB4eUqjzEkoOhZURi3Z50GloiSVSYPVPHjssd08XxmybC1/AoTbEfwsvdlL00lUFIcWIe5fcirzBIAU/LdIWsTBcni5+PtisYDFYgE///nPYTQawd/5O39n5UaOooRzGG0VLkrR65tj8wR5xLGv1+uwXC5hsVjA5uZmKPMmyDt3KSaSbBrGMnDuLZdLE8tl2eX18HgbAurD6/AZrWAXT4u61fLFbyOhnAG81FFFNgHRPsC++/jjj6Hb7cKXvvQl+MIXvgD/7J/9M3j33XfhP/yH/wCtVgu2trZgNBqtnJD12mK64bHoglNK22I8cf48dXFfwLrqXcJBZUjSs9xvrDpGGPuetg/7A3/X9I/WV1UGwbXxpLzG+ML5kULWe8cp+IrOcYvnFPLEr6gsAaRhA6vefr+/YjPoTXiNRgPq9Xo43DSZTFbes/eetquCPHIBsPqeIs477V1f/r7qTVDV/nSRujlJNmsdMYkqy31VaR0xJK0eaVMJ3ZiN/3N8zfmjN2QV4aNquq4+LOtve9t+nT6ohw8A+RT9iqch7U5fLpfBSSmibDVBtAxvTMFUpXC1YCPlQzNa0gKMp45USgHOWF9VQW6Ld08w1ypTIvo+mhXc8RggPqYpixxWuz2AUQtscV4lpzql3bw+TjEnXSPafknWiwZeed4UuawaZPHABC3b6mccI0lOaXukE5YIzDEQNp1OV8A48oKBIKlcT3uk31JkxBvY4n+n5vNQGVnDv625g2OxtbUFrVYL+v0+LJfLEGgcDAaBDxqELMszd/LpP0ufae30kqSPtLll6Vm+w9dDXr1bJa0LgPG5nxok5Lom1pcp7aCB11jQVgsmXRcgv06ielDDA0UCvbHfis5Tfi0nHSv8d+fOHdje3g7BHVxs2d7ehn6/H941fPDgAQwGg3CFstYXVltqtVpY2EW9SHmysLKGbbgepPpa6j8aDPIE3SxK8UU8zl8V80WyV9j3Ek9S3fx3i3evvpFkJtbeWH8VxXIWlqzCJkq4XMqT2qceyvN85RrGZrMJ29vbcHp6GhaGUtpI20LnTZ5ffUe0CK9U1jgmuC57HvNzOG7Rxs7CP1z+ef1V+ycp5PFTJXxxW+078qmdsvbgY64PcbEdN8E9efIEGo0G7O/vw+bmJuzt7cH29nZIa8UPrHql74uWkUJl5pslE1RmaB00D+oRj18Ui4lw8thdWr5WhpQmJlseXEgxi7f/rwtbx+RN0lsappDiHKnzkH7njU15MBctL+bvW+VUQRj3wQVZqss4aRiXp+E8emxXEXtE5VLSA7GyPbELTzsppYxLFTbYU5/VT+uisr5OFfQqYIeq+eJtLuPTSPqUzxmPDKfIuaWPtXK8c8BLXptgkebfenThdVPR+qNHeOr1unjqwzo9xo1jmXucY0CtqjJxUvATct56vGluWlA8AKqKOixjTr+j329sbJQOEMSoCEjz5uHvOHnk3lJUWlD9uijFybitxpkTtkeSM/5mp5SGngbilGWXpyJxoRVpOp3CcDgM9S8WC5hOp/D06dMrDiwGi6SAgEaa08S/q0qG1nEvv4e8gJTrH8tW4amGL3/5y3D//n0AuJSD4XAIp6en8KMf/WhFHlqtVlislQgdr9jiHPKnveln6WnPXOPXEEu7bjU5lpxhuvmAXklY9rrS6wpMVE14NSN95xMD6DRAQ4kHs+jmN6+8YF6L+EaOGPGgTCygnuo8VElVyIsVpEqZYxJ580lvdXKiuDvP85VxRV30zW9+E+7evQsPHz6Ew8PDK+/aNJtN+PrXvw7n5+fwP//n/4RPP/0UNjY2oFarwWQySXLE2u02vPHGG3B4eAgvXrxYyeOVXYny/OUNAXiyTNJfUr6UcZKCCVzurXxlAyIWvzgH6ftjHEfG8mIe3PSFi2NVvbtoEdcDsWv9r4uqDGLx8buO4NTGxga8/fbb8MEHH8DBwQE0m80wR7SgNZUHeoJrPp9DlmXhyvNOp7NyIrQMZdnlwvF8Pg92LfWml3UQt1WIXbA/6Mklqwx+xS2eekSZ8N6Gkkr8pAUlCWdQXEnLuC5fsqx9Rt7ou5IUv3LfyEt46rzT6UCv14PvfOc78L3vfQ86nQ68+eab8Ku/+quwtbUV6p5Op1G9qW0K8mIuirOui7zBZJQ7qQ9QlvA69VarBRcXFytvx2rE7biEka+TOPblxMdIi23x72IYOQVnrts/0nihp/y5XZfazHEbL1OKvcTGW4vF0Hz0fWYA/ckLzs86aDKZQK1WCxgbqVarhQ3eFONVwdO647dUBhBXUv0l8aPNKfxt3bYoNdbuiVdrefgcuY4YnEZl7G9K3qpk91Ui6QCCJjfczsXWsaz5ZOVLlaeq421S/dcpEyl9kBLr4PlS0mo6MUYrHsSjR4/C3xhoPD8/VwN1lDj44MEOJCnYoFFMgLEc+r+URgJG2neS0rQCNp7ApFZWGfLmj7WHfqZ/p06oFAOkgVLav2j0kSiQ4RPQGhMrnUZaebwPvYqIt0uaQ1p/l3FWJH6rGFepbFqHhx9Mr8kNl03efzF+pWAV1ifNd4CXi3bWnNbq9wSc0VmZTCawWCyg1+uZckH/t+YXr0eaHx7wFGuD1C8e0vjE38roQj6WXH/RvkPdoZ0yqtfrsLW1BY1GA2azGbRarZC21WqtBNys9ls2SUpbFaCSZBftOO0fydnS5gotqwqHhX//qhLnX7u62srD08f0szRGsXQaD9qbwdJ8jDne66AUnVeUpECRxyZz4pi2DI88L58/dBF3Pp+HK89wkQEAYDabwfHxcQguUx1A+ZTqpnM/zy8Xc2q1GmxtbUG/318pp4wNaDQaYeNSLLiOdlPrG8q7h6QxKoKLeDnSZ/p/bGwtfmO8INGrnqmu92BaXqflO8T48uANizx+lVX+Ou2LpCeqsHN0Xs7nc3j+/PnKkyxIGNj18EnxjjZeqTyirmk0GlCr1aDdbkOz2YTNzU2Yz+dwdnbmuvaxKtsh4RWNLH9D8rVwoVpatOX43DtPq2q3JIfrwlleu5bqz2l1xerw6ExJJugG+zzP4b333oPT01PY2tqC09NT2N/fF6/yj8UcNB5wgx4uGEkyVNYHWjch/2hbqJ9Kn9ug7bD0vyQDWr9oeWPl8bJSyOO/Xee8KoMpvTEXybfwxg143ELjPWXuY1r+vBQtk5cXkw2OadaFES4uLmA6nV5ZkInZxBT/T/oskebTxMYg5l8W8QGk/J60GsXiESn2VoqdeO1Qqt/otdFFfFEPVeVb8znvxWAWDzdBMTmR5Czmk8TmiKeuWJqUeIxVbkoc6bpxCm9rig9Ytq5Y+VXL8Mpi7Lvvvhv+xh1vvDLJKdEmobQLDgMrMSrqxMby0wCFlzRnjZZ3nbTOCREzcOsiHnDjhnE+n8N4PDYDTLy8dZPkZFKiC8ecH2sH4TooRXF4QExZB7LIvNHmoDcvAIQFNR6ooulip7Ot0ysWj3ii8vz8HAAAdnd3Qx9MJhMYDocrJ3NpXTHDLhlbTfaqCJCWJQ/oSC1H+w53tOF8pIuqPHj9xhtvhHcMu90uZNnliQ/8LtYG7zyzHFhanpckPcTbivJOT3QCXL2+kKaXnGKvDad0HU7wukmbg3meXzldJAUfubzweWqR9OabxIvGdwykx2xZlq1eD5vqwKSShkPKlLsuexZbhPdSrG30lNB0OoX5fA7D4RCGwyE0m82A1/HWhb29PbEcnL8x3ZNlL0/R3blzB3q9nsljSh/iAg49SafxgmXG7LInOBejon6E9kYo1ZVFbn3BE3jSeEm6lF7HGXs6hfJplSsFXST99arq9bIUkxEAvZ85lsR00+kUPvrooytjTzdWxfocZaDRaECWZeLCbhHCMrvdLrTb7fD5tddeg/l8DgcHB9G3qaukKuQO7RvqVxyLyWQCs9lMzFMEB2FdZcZB029SYLgqSu3jdesCHCMkb8B9Pp/DfD4PtvLb3/42bG9vw8bGBsznc/jMZz4DJycn4eYHCRd59DDSYrEIC5YAst9Px+269KjHx0fCDRe48Ytv5Nvc3Cx8W5Ikr1XIr9WP1vdYd2xec3/Iw7M2Nz1jXpVcWHEX2g7qL3tkJdZftE4JD2m4i89zqQ3It4SvOO9V+BExyvM8xCrR9lpEeczzvPBcwrK0+eSJlVD5l+JjGt9a+RpZfmPK/K9SX2JZHFtZPgFPuy65kuooqier9K25LfD6ON4Y2avgU1j4wMu/NJaeuVBGFtbVv+vAn+sgTe69OjSGL1Lj7tG7daS3D63CLaOnBYBSBYKDn9jgawFmjQcPKKbBGM+EiA0M7zeNL40Xz3cp/Fj1xUgDQFrZ+LA9BWAAV69b5GNngcoYxQBe0fKo3FtXq0iktS11HCynMTYXUpS7JsPe8jz56W9e5cYDhfg/gmNO/PoYqWw+z/l4S7xjMAyvg8R/GGAFeLmLcrlcht3HmnOHPKBOtmRW4pu3LcVB8ebxjBE3dl5ZpzzwuYL9QhdW+fVF+H273Q5vLGL6vb09uH//vnglf57nYZHcsodeR15qjzetls8KaODV2nzDAJ0bVD6lOpFijmKsTR4786oA8DzPV67AtoIyVr949XsV4FmrS5vXmp2MzdmyDqNWXpVktSHFiSq6GMv7nC62AsCKnsd6JGd3sVjAJ598Aqenp+G6wE8//RQ2Nzdhf38fjo+PkxdHcIyRF7yCsF6vw2w2cy308e9o38xms2BzpSs0cRHKQ1RmOYa07Iwkx5IjZtlP+o9jDe00HR13Pp+KyrknX4ojSW1CrEwJG9BxkPCSl+dY3fR/bg9T5rDVHzGfEf/nV8PGdKBkvxGjzmYzeOedd0L/HR8fR9vhqY+PRcoJVky/XC5hPp9Dp9OBLMvCExy9Xs/ER7E6UnVnyvii7sqyDDY2NqDT6cDp6SlMp9Ngw3HBjGJJxH5U76bKbdH0uMhd1c0LKXg/hdaJ16SbsHjd3rgLTYsbgKS8y+VyZeO35E9avOT5y6s8O50O5Hke3mpHOaLj6PGFqsZ9lt/K2wTwchyazebKhuE8z8P155jeklHut2objSQePKT5MFI8QPrf8r15PdLf0ndlbTrHNxI+0cbTU7cm23SsONbBMbOu44z5QmX9ZG6XKX5GPnEDfFV+iJeQLzwZz0/40iugtTEqyrM2BikyyTEcfpfKU0w/c968+ojzKKWx+tdTz7rGB/MW0QuethUtMzUd1Q2oD7xxySr5KktaX0r+DNUvnjL531hGrG3WvNEwTYyfoji0at0p9XdMntfFC5bJ/Vjer6lzxLLDWlnRxVjJYdMUIlfWGgDkZVmTQEqv/cbLkIChF0xrYBn/pjvPPe2M8Rprh8Uz/d8DylLBpsWjpKClfFYb8co6JPrWFc3P+7sM8PSQ1PcpSlKrLwVwePJ4x84qN+YYxnjwEJ+HsTal9hOduzQNnSN0gQ4BBAaXaPrY+HnmB+6Ins1mwRnn8xUdf+kqSU+7PTKf6khqabXfLd3iAf2p9VrgmJ6yQuDEHTZ895WO+c7ODrz22mthjGiAgDp1nnfEPfNEc3y1dJYdiNVXr9dX3m/j9k1zjjlIkfjWqGrdcV3ktbfYnut4nyilHI+Txuc/x2/afObyIpVxXbSuOouUqb3HV9QBou8QYzmabUOd9/jxYxgMBmFzz7Nnz2B7extee+01OD09TVqMleb7dDqFPM/DQpF3sUlrPz9tRrG3xwZrPPO8/DpXCVdQPyFFT0l2gvJi+UMWVizieKYEZ7RggGST+G9cNnhZHK9rfcHLLdpWXrdWj1YGbxP/jrZRG2dp4wDPQ+v16Nf5fA7vv/9+WJBLfffXmpO0j6jce7Eg8oJ5x+MxLBYL6Pf7SbwVwa6x72NlZVkGvV4Ptre3w2Y8PP2PPijvH/w/pc6YX+wto+pAuKSDrtt2S8RxLu13zqeGQzhZ/juPLdB/+GZss9mERqMh4iKrTtR99Xoder0eLJdLGI1GYS5bOCvV/1sXcX7oYix+RsLFWO5r8bLwb24bYu1J8SFT8FcR+fESx9Vl+JDkXsMwKeVK+SjPOOZ0AwESHUeNX02GJX8z1aeQ2so3XyM247cWafZe0rHeMdTy8BOmFN9aupl+rnK+p+oxpHq9ri5qp85frYyyuC0VT0j1WTx42q6NmTUnUuat1v5UbFCUJN+BbsDDgya3AVNUSXTeaP6AlAfT889VjBf3xbjNsfJ5cKCGn2LlcyprRyXeLIrxaPnevBzLhsX0tzY/tTJXFmNbrVYAowDxQKMEmPE3adKmXL9QRli5kGLdWZatOLXUSFoOOX0nQ+MP+4orolQDY5EGnKqmdSh2y+GnRl5S9DhmFiAoy1vq95ZilcAmEt8FyueJB7h4KJaPt8FD6zAiRfNJ/WTxxq9cj819/D42lyVDi4uwfDckOgz7+/vQbDah2WzCZDKB0WgUFgdRZriupBsUeJnrkJGyxlbS/x5KbQ8GQvnJZoDV65CyLAsn8CX+z8/P4eTkBO7duwfz+Rz++3//7/D8+XNYLBbiaWqpHuTfoliwwttnHAhq8jKfz4Pc0M0HUlnSKSaNX8/CjnS18XU5DUWprE29SSfECiRoJG0o08ZdmtM3NZ5lwb23/NS5qTlpmu3CvsbgLb4HqdkznL84bu+88w40Gg2YTCZX0n7ve9+DP/7jP4bT01MYDocwGo2g0+mouJ4HjDjNZrOgEyVZKBIc4OnoSYJY0KoIfpFIeruZppeuJCzilNIysHxNzvjtMNzGWL5IVddm0/ok/q06uCxIc6FqXRnDgFYe6YQPHR9tvBHrLZdL8TrbIjxJRP1KDH7RcimWRTzUarWg3W5Dp9MJV5vT0/VV6W769AcAhFM/FMtK/WDZmSoJxxEXXvEkLG7KG41GYl/QU3ucf3oKq0pcw+WtaNnU38iybOUGj9tMnrHnciP5YN66Wq0WzOdz+NM//dPwhMxsNgsyrcUbUL41+UW8PZlMIMsy2N7ehsVisbLxlpd9k9iR9yHvS7xuuV6vh6dcBoMBTKdTODk5WTk9XmXMK5U0XUPrTelnT/oYFqqKPH1WJB5g5aH+IvYFv8FLi6XEeLH6yCtDVE5xwzt+9lyx66WyMSt6klyLjWhpy1JK3J2OGY9FFYltp9RrxYhjvq3WT0VjK6n9rmEbTS9I7YzVmWrfqiatXrzGHgkxlnQz3atE6+JdO/RQZGMLT2utS2A9qTGQslRlP5bxuy2yMEMsZlsVrUSZ0YmSgkkSU9rAWoF4qzPLgDirw2hwRwpEaTxh+7TgBv2bO55lFkk4X7HvJN410sbLyl+0Hd58PNCEATksA4OPMVBRxlgVBWce+bcCZzytZazL8KwFgzW+rHKk9hTpv1hQzyozFdRI8kMdCG2uxYIiHEDTAC62kQaWa7Ua9Pv9lY0v6JjzU53ecfICZE0OYzrFKt/SnV6AbDmCPJ1WrnY9Cg98SzLQaDRgsVjAZDIJp1B+/vOfw9HRkcpPik7k/VgFIOek2Wa6mYVeLxazzxr/NDDJ+4ODQcsR8dZ90+SZJ5rM3TRZzm3R8pBieug2URW8pszLLMtEh0srB/US2gntqk8+vwAADg4OIM9z6Pf7K7h9uVzCp59+Cj/60Y9C/m63GxZu0S5heg+2uri4gPPz8xU8rRGVPf63lp5fWYzOfAwTpQZPNAyjpaX/F5lLEn+8XZyoHxErW/s+ldeYjNK/vf5bGV0f63NPIM6qR7JfUnkxOcfgdKyOVOJ9TjFlLD22p9FoQKvVWslbRJatMUDe6BzX+tIz16R8vL4ihFgIsXy9Xg8nFa3bvzjf2D7a7hil9DUfxzI23NrUcl2UGvzTxrisP6zp2YuLC/j444/D77joCKC/BU4/S/MJ7dh8PodGowGbm5swnU7DpimUOY6X14WrvPOQY0bKE36/sbEBd+/ehXq9DqPRCE5PT8WYl+WveXktMt+9su7VhUViHDyPx4/gv0vj4MFcnrhJjG/tOwu/aT6oVk5snDzxB0r8mQCvbo6VW5Qsvr1xGumzhcVi8QSvfsF0/H3fIr5ubJy57KzTTmk4r2idXvnlsm/5MVo+qQ0SD2V8FY0sf4W+iY6+Jz0hW0R/3gQVsTVFsZ81Z605qvmSKXrOa189WL2MjEl2RZMVS6+l+JgpepinsfziKubaymIs3z1pBWi0YFHZCVelAqGCxk8DWbs2Yu2QFmY8b8p4QZiHqtoBuC4F6RlH6igCQHjsPmWsUkgDgGXKvkkntyhVwa/llErk7eMyjo/1u/XQPL8i2Jr/vC4tCMfr47p0uVzC8fFxOHm5WCxW5F66cge/p+Vy8sgj7Q/ppCimof97y035nfa3pMukunme2WwGrVYLXnvtNWg2m2GHXp7n8OLFCxiPxyE9no6mff3lL38Z3n77bdja2lqpG99Zxfqm02lye6X0VetbT3m4UxFJu14fy+MnQjTi80rjBzfXrMNJ8FCV/X7bdL1l/3F86BvVMZKAPn7HF/JTToRbtI55QUmz+amBMq2v+dtaUj5sI30PVuLJs8hJiV4bmOeXi6rD4RDeeecdODk5UcvhbaL6ldaBJ4Ssa45jTg/VIzRI5g3k4P/Yz9apfCnQopGHB3rNHLVT2E9oP6ntpr/z/k0hrJfzGbOT+L90whr5ssYA0/CgCj359KoEWK6LOMaTbGNqWbhQyDenSoRjgr9j3tlsBs1mc+WNulTi8oPtHI1GK28/P3ny5Ep6b51eP2pd8pZlWbjNBk8R43Xs9BQj1s/fJ5Sukb4pvAPwcuNdlmXRm10A1m+DqyaqV7nNkvCJVU6WZbC5uQmLxQJGo5Grfu5DcruAdhmvO/7c5z4HWXZ5eu/Zs2fw6NGjK3zHbPF1Efc76VXpuJjcbrfh7t27oT30yRd6chJAf/8ddaQn6FuUpLL51bGYTrKTmn/jjX9c57wq2o9am2K4Liaf0hzxUmpQntpJ1Mno8+K723QspRvI1hV7jhHXARSbWWOSElNLwcWc+Bwocg2tFMPR+JHGPGZLNX4kDG75ausgrd2ar1hV7DM2f8sQvYmu1+vBvXv3YDwew/HxcbjefzabrdiFZrO5Mo63LZayDpLGXpvT9KYMbY6lxCcsWxUrK1bmdVOV/ua6cHnZcldQuhSU0hqvBfcspeilIgLAB0tqC1fGFgjRgihWcEWqJ5ZG+11rn5XGU05qGamCpRmYGB+WA58iO2X6RjOERSZZaj9YfMXyrNuoWXXE+ox/luaPNZc0Sg3cUGeZfyc59Cn1xHjGOvCaXHQc8FpivjhWdu5qfY/OZaxN3jGS8sS+q4ooaKnX6ytX8uH7rtwBoFc/IpDsdDqws7MTAnH8XdgU4G4BLol3C5B6dI7HVvDvvDxac6GInrrJYF8Rp7WK+tYZXPaUTeXL0zYv33w+rEtvalS1LGF7UoJpGi6Ufot9b5FUv/QZxxp12OnpKUwmkys4XeMzxhs/tcp5S5EdGpylMlqr1cKGGWwTvVY1poer1i9WEIjyLI0R1ZWp84n/JtXP6+H80u8sfKOV5w2SSX9L9UvfX4c9KOtLUPm2xohvMtD0bgp2sxYxpLK4TkY+KMbUdJ2Ezy0ZyLJs5ZRpnudhwxo90W7pVqnsdfsyABCwN19gpePoGYdUfKhRatDNkxbHHf/HdKlxhyKkxWAkv6Ko7deemPGWR3nE8vCZAOkUuVUGlkOJbroCuLyVol6vQ7fbhePj46jPeV1YWatHwnhUlritBljdlMZxAYAdZ+P8cFlJ7Q9v/ECzYXT8rfiE1qaqdRkv09IZ1hxP+c3Lv2WHNOLy7/GXPWVK/1vYzFtulfJnlZfiO2r5Y5jHihtoeJJif2nuaLxYvBW1ex5M5/W9Pf4ElxePrEp5PfoP88R48/5WlR2RdAPHinjTCKXFYrHy/JpmD9bB87pI6guPvUkZ0+vEACn2yoMfi8Y5pLKkdEV05Lr9irJ6G4AtxnpOTyBwbbfbV9LPZjPx3RxN6WqKqAxV2elUicSIXzHq2Y1K08d+48JuXYtV9SSuAlhK+VPeT6U727wT3xv4KAr4OXhJOUkuvVGVQl4nsSylBI/KUBH5il25SgkDL/Qk0WKxgNlsFpVND2jUdljmeR5OYu7u7kKv1wuLhVK9eCKTt7Eo1ev10GaAy53a0i5+zrNXj8TGTXNkYwaXE71mOs8v30LF93f56d7Dw8Nw6hjgchc3plksFjAYDEIdx8fH8PHHH8MXv/hF2NzchNPTUzg7OxP7yNtmD3F7UWS3aVGeYqeiLYoFJ/BvbBMFet6NAFXqlLJBzSrSeqls27ld5DJcxGmlWIMHUFKuAfOQt/1evZQ6nlowSiurKgfSCo54iKar1+uwXC7h5OQkXI+IaSg+1+qkpyH5zSWIa72BDpoP5Qi/Q3yMiyLz+Rw2Njbgc5/7HMzn87DLml6LnKI/+Ml+Hsjk16pyLOdpH/YXJ4pL+Ilayicthwbv1/G2Nh9vrX+onqb9jjzjuNLxxP7Gcmk+etsSLnZU0RYsk57c9VCKjqH/aL00QAkAK4s40+kUptPpFTwYwzwSn3SxsAp7w08mAKzekhHTZ7xN/CatInjiJujk5ARGo1EYT9QF6O+3Wq2QFvsBMbT09qoWHOZykiqjVAakejxlTqdTyLIsXFVd1p8oQrw/iug2mrfZbMLGxkbQQdPpVH0H3UN5noc5u7W1tfL+cyqvVD/GqNlsQrPZvHLrhMc/uo5ALeUjFgtDfIFXVmbZ5Ukoy65yjGrp8aqD9bwMbgtpOj6eFD9I9l/TqUWJz38pJkgpFhvSeOIbCGLk9eFj8RPsS23jkZTWkqnFYrFiuzXM4R0fSyaLymLV8uwhKbbK2x/Dnmgn8e8sy1Y2X2lEN8J7+dRwuTR3+W/eeccx3TrimbwOqX4pfxW8FI1tx8pC3T6bzWA8HsP7778PW1tb8ODBg5Ae2/bhhx/CcDiMlk033qbwdF3zB+vjdJ31W1QGX/FYx21pk0RV2tR1UNFxWFkx9AwAdTylAIJmZDiDMYemSuI8eTqLK0nqvFLjLjlnqRTr95QgKk/LA7Qp/HgBQxUKkdfJQVSRQBn/WzN62u9SX9K2WmNglauVn5rWcnJjZfN+iQFmi7cYpfZXSr9oeazyKD8xmShKtE1cd9DFWAxYUpAq6UpJjr1zjjqU3NBKfFati1P4leagBA6wLb1eLwC4fr8P29vbcHx8DPP5PPQ3vhWGp5L5dUXz+RwODw9hMplAlmUwHA5LBXdS2peaLlXP0nfgU8aXBycsgBYDb97gFKatisqUFcMG9P+Y86rZI63cIpSCIbj+swKIlkNclX7ytqGqssry5Q3gWHi4CB9S/VoZNKhC5z9/W5vjLc9CoDb2UtBQkjtNn9frdej1eiHYg5tm1mWXeFs0KopvYzLI9YiGybxBQ1q25F/FMLzVz6kygYuk3W43fMcXF73+BU+DZUgBL54ulbQ5aul87DtpAbYMlQmkYX/gTR9chuhYxfwszQ/S6pX+1tJr/VS0/6R8XMdhf/AnPzR9LeEfKuMSWViJ8pTSrpS0+GRHo9GAWq0WFvxSsFhRStUV+J30u5QX4OXTF3iiFWNQ/BS4hy+Kg2I220NSvZRfyp9kC1OwXFEqIoeYdjqdwmAwgCy7fPKl3W7DcrmE8Xi80pdSnamyV1Rey+QD0DGtlh7/5thKwtoxWtf89Pg0lu3XfAipHC+VkfUYnkml1DmR0lZJnqq2BR7cl2LLeR6qvyieS6FYfRJ/ErbjlNKfqdgiRZdYY0Cxr4fvKjDkugnbhZtqAV7eVoe/9Xq9sEnn4uJi5ekwgFX94sGfnIrkiZW1jn6PyShvv6ZbpTJSyrX4o3xSLFTFGBTBGkV9gCqoDPaTxi7Gl3p8UwOJrVbryu6F5XIpvrVhKU7puypBiFY3fQcQHSp+Gg1/4x14cXEB3W43nDYAADg9PRXfE6yS56poXY6YN5Ci1a29Ces9IejttzLKQSqj6pNBSKmAykspxi42d1OCZx6ifWnVTfm3TllgGbE00rsxKWCREwY88IQSl9s8z2EymQQgO5/P4ezszAwUVEn4LjM3tAikytZn9XdqkIMHLzg1Gg24e/duOGV17949+PznPw/n5+fw6aefhmAU2iZcCJf4+va3vw1HR0dBF+Hu2rJt4MQXO6S2xerwOh31ej28oQvw8p2P+Xyugj7J7mFZqY7zuoN+10Vl7PJ1O1OIaVLzUKc3hhM0/HYdgd6yxE9f8KCwRTywZqWTwLi3f3ha7sRpzjwn3ISCm30020/1rGfnukbcfmK53jnQaDRge3sbFosFdDodODs7C+VKb7d5356lgVAtUIpl0jyUpCsYi8o63cxKT6HS+vmiOSVLjngbuHxXrY/49bwU12xtbcFnP/vZsOHs4OAAzs7Ogg+p3UpShpeU+UyJ9jX/n1/xS/PgyTwMQF0HaXLKZRPnvoZllsvllYWhqvxw7mNrsuwlb2DSSkNx+Xw+D1g4lg9/p320WCyuXGeLc9mDlWJ1FQnEIo5fLBawu7sL+/v7sLu7C81mE7773e/CYDAIV8texwlZTb9iP0q+EU1D5zL+jYvpp6en0Ov1oNfrBZx/fn4Oi8UijCvVs/T5EY1wrsTIOkHI5QTTnZ+fQ7/fD0+iSHkkuk0BeeTz4OAAzs/Pw3d3796F5XIJH3zwgRi74DqK+z9en7sqW6bZb35bBk2r+Tb0VKAUn+DfSbZe4kX7rgyl+K4WxuffSTbIevfUSxqPMZ0t6Q3U/UhlcG4R4rxavoSF74rqAwtH0t8sbIsn+THecnp6uqIvaV9rOo2ekJXaLZGkbzX59Miali6GHbR6U9LyfsG/122P1+WX07YsFgs4OzuDbrcLvV4v1PmZz3wmpB0Oh/Dzn/8cAGDFDkpPiAG8OretrIPW5bN56CZuUEEq226vXlk3STrf6lf1zVjMzAtsNBpXwKRWgfZ9zKBbaVNIcgYkAKYBr1ardcUA4BUsCNy5UdEWDywF7QF/SNLJhdsifJyK8sWvJJWuM5YmrAZ4pN9ifci/iwFDmoeD7xTyBpOKggNP0IH+XRRQS8HPWH9K33n7QfqOB3EpTxSIehzBWH9zICrxTwPj2rVUlsKOtVUqr91uw87ODozHYxiNRlE9K80rHlzy3oLA+aLkkScMcDabzXCamN7CgO3s9Xqwt7cHu7u70O12YW9vD9544w0YjUbhOmPJlmVZBuPxGA4PD0Nafu2h1paYk261iQeaUsiaI5Zzmud5qJsvxkrp+XhaziPnL+bUrMsxiFFKwGdd9ayLUuq09LA0Ph47ymXkuik2B8oG7rAO+pliFE851vykOjVWHm8r/4zBMLQlWpn0/XLUm4hrcZMhBralxVAJQ0nfSTbUClQg//gGkXdBV7PnHp2j9SX3Hfj3XsdR4yHGG/aVtqDllWvJjkmYmvYh/o7BN3oFsTWG3B/iWLAsFdEzHkxSlKR5i3Jrzb8q67f0uNeP8fKo+WL4m/YES5kgS1HZScE5KN94ygN/429lc7+I/67VX0b+U/QMbi5HHcrxe9l5WKZNVH8UCfjhmNFTNjgO2GaP/fTybdkSzecDWL3C/OLiIvgYeKoUYHVBCNMVjZkUpZR5j2O3XC5hOp2u2Gdue+lnaf5gGvoZSZIviUcpxsD51fJWOReljWxS23gfeX3HIvhFyyfhMSmfxY9F0hhYTz5p/FjlU3zL65T6WKqbYxzO802SNGZIHvmx5IX3FSfap9jP9DeKg3FTnUePp/g1nBeNt3VgKg1LUf60ucbLkX7T/OWb9J1TScL3eX65QW04HAYMgrS5uRk2X9KFdYqxkCT/Kqbnr5NiPiylIrZcSkPlnf5v2b2yOKIK3Mrni1VOTF+VtUm8T7R+tn7nv3lkwLL/nPwPm/7/qd1ur7ypgpVwynP5GgME0vg3T5PiLKY62BwY1mq1EGigZSGop4vOVPizLIPJZALD4fBKvSlvxUrtoN9xpxYVXhlKBd+8/qqJKhf8TPsdT3KllplS97rJoxhTHMTrIKpw+MLhdREHjkXGiju49LqomBNnkTY3tJ1ceZ6HE/TS+9IUfJTdlUR10ObmJnz2s5+FJ0+ehCCARHT+8f5oNpuhXXn+8m0tuijKy0klaQxqtRq0Wi1ot9swnU4hz/Mr7ysBAGxtbcGv/dqvhbrffPNNyPMcvv/978NgMIB+v39lXBAwnpycwMnJyRW9ar0z4yHej/g3nkwAWNVtHuMvlW3xQ+V7uVxCo9EI/SCNHc2njSm/Tpv+Q6riXcB10W10vsuQF0BqDl/qSfZYX71KfVkkAEWdA+pYxvLxxVGpzKI2jhNiKHR4tRM8rVYLFosFTCYT2NzchC9/+ctBV/zgBz+A4XAY3hqUrtGX2uDBNrydmsw0Gg1ot9sruorm094YWwfRMZICedxBplTUkcT0VjBTqo/6OKkYnuIPGnRD/MLfwH0VgkfXRbQ/Wq0WNJvNgJXoczZV9pknGGDNzaJ1cVnXYgCch+smT938uSUcK75oKM3v2A0qFj6uuk+Q56reZvbWmSpXiEFTr7nEsWg2m9DpdGAymYQTmgAA29vb4SYcDy5OqRfzcb2nlYVpGo0GLJdL+Pjjj6HRaEC32w1+4Hw+h/l8Hp5a4TcF3EYslWVZ2FCMV9DT3yQ775ERzGv1LQ+C5vnLU+hFY1pF0/D0dGMb/026scGjk70xTwtzFMUeZYLfmE9aMEAdxdOmlMtvoZAOa0j14m/0/5S3mm8DxeSGxlMtm8yxG+I6vvjKPwO87DM8/Xh+fi7eckDzSIeWrPbxOvn4SjqlrD2tCichSXYf+51vMJX036tA9Mrq2WwGs9lsZayzLIM7d+5Ap9O5cooanxKj8UrsB9Sj0iZUbZyKYJF1k6W/U8vRsHzMTsR4KkpVz791koc3qle8OKGoXZVIXDmUjFmn0wlBeapg8X09uoCGDihnlO/QtILB3gZYaWLAloMnDFZLg4GGyeNMFQFzPB8fA8lxkeqPBU1TnZSyoMwibKNHBih5FE+R9nuATkp5WhlaOamgVOPPIyeUrIVJiay0UrC0iiBQipNKg4laPu2kD1WwUrDVIm3u4QYWdL75m6W0Dq19MXnmY9FqtWBvby8sRPZ6Pdjd3Q1p8V1Vfs2SVRcGq3AB0TqxRMvKMv20rzSX0bmlV+Lw3/FqssPDQ9jY2AAAgLOzMzg8PITz8/NwgwENpmEbKNGrzDxy5pVlzfbx+Y9XBcZOG3nr5DJLbS5eUyzJvkSWrdOCLNjfVJ5ii1XrBtDaHOG/3zZnPOZQYxquZzWQHNNrmqMulRn7vmhQkctUajk0vfQkhUSaPeMOdKwPpMBODI9RvlHv0cW01CAj51ni25JzvPYRrzfXxoKeCvbqLK4TOM1mMzg6OoLxeAxnZ2fiZsfU+SmdlKJ2nvaX5PfQenm/eeSGEt66gJuvtFOTnDeJijqLfD5ZMt1ut6Fer0O32w1vAgK8nFfSdax0YavRaEC/3w/4Zzwew8nJiZv/mOxbMubRndJvPD8dH82O4IIcnoRFPnAzGWImvkgu4Y0UnJk6N2h9WfZywwbd7CrhtZgOs/yOMva0quAa14l0gwl/W1vK4+FTCuJI/aFdS66Vq8lxjDA4ur+/D3t7e/D06VN48eIFHB8fmyd5PSThBe98pjLIT45bdj/P87BBPs8vn3q5f/8+vPnmm/Duu+/CkydPVtpOy8OFMqlcD7+SbeX9wbEuX8TAxSNciEW9kOcvYzteWbspjMrrxcD7wcFB4Et6N1t7gsjT/zyt1kca5o3VEysvZe7xtnM51Oq25ji3CR68jZ9jaTXZ9tohrW4sD/9Z18ym6jdMj36zZEdjfHow3HWRB0NKfRTDhpbektqqnV6ni2G4UQngUtY3NjYCxptOp3B8fLxSpjUu0lhoabzfW2liOpx+5rx5dY7nN/ye376WilWL0LpsB7VvAJd24fT0FLrd7oof2e12oVarwRe+8IWwkWo6ncJ0Og16gtp6XofUnliaouSRzxg/0u9VxsSlcmLlWrE4z9zQ6uM+E/3d05eW/ZY+W8TxvlWPVD7nV+oXLz8puCe6GIvU6XTCTjisYLlcwtnZGdRqNfFtOl4mnbBesKQ1IlVRSW1Co47UaDTEk62oKKRdQt66Oc90kDyOGV2MtSZTapDD0/dWXxcRfPp76gm0WB1esEqpyElECnhiYJDLsGVYPH0m5bPI6jNqBDGt1p5UcK4popiCjrXJ42RYbZYMhlR3Sh9YuqnT6UCv14Pj42OYzWZX8vG3alINNTfyeX4ZcHrjjTfCBpper7cS+MDFWG3+SQ4ZXhXMd7RZQJKeqKVlW4Rlt9tt1RHpdDpQq9Xg8PAQdnZ2IM9zODs7gw8//DDocel9EtT3FBRTnT+dTs1Fm1T9in3I3yXHcUgNjFkyDnDV4cW5nWUZTKfTK/InkWYr8beYvqM6xJpP63AMLJ48VES/esorWk6RgIilizyfY3NV0lNcrxchKtupsiHVTReLpE0IUj1F8IM2JxAzxtpC5xbFmXRTkUXcaZDyeDAIAEC/34ft7e2V22+ktPS7Im8UUxnCsubzORwdHcHZ2Rm8ePHiyubPIkQDSbRezgttk2b3LdvPT89xDETrwXcr+W0MFE9qfNC0lGfpd0+/SfKP/3ADbq/XW7GLPFhC+aRvrtfr9fBO4u7uLjx69OjKuFehX6U2eJx5LgcWptfsgoS9cB6jzV8ulzAYDMJivOeKRam+mC1JwdS4sDWfz2EymYTvm81m9FQl7x9rLIvo8nUSYuN2uw3D4TC6GOstk9tErS/wtgKOO62yi9BisYDZbAZ3796Fz33uc/DJJ59AvV6H4+NjWC6XQb/HsJxFXO9Z/NM6aIAfy7DsMOat1WrhZOlgMIAHDx7A3/7bfxtOT0/h6dOnIS3aesTb3mvuuQzTcbWeJJB8Z14fbrKazWZB/vBJAIpNYrGB2zKX8vzyZNNsNoPBYABZlq3c+sP1PD8tRf9P0WcxG83zWvxrFMM7Gmnvp0vlxOIMKfVq5MEPvA4JS8bKkojKqnSbBpcTqy7OH/WbNext9Ztkt8rikLJkYUuOC2N5LZvLxx0/cwxPn6bAtFRP1et12NjYCGsC5+fncHJy4pZrjcfYvJbawP8uOpa0L6RNnBq2l3iUdBHnlduU2LzgabX6tH5Yp+1AW5tlGcxmMxiNRlCv11cWYzudDnQ6Hdje3obz83N4+vQpnJychLQanzFcxdNeB1HskkIput6rw/D/KnSYZYu981XLp80n/ltsfnnaGesPDZ+nluMlj/+24g1IYA8nEO5IxMKm0yksFosVAIYOAL/SzAuGMb03nXdQUsqV+KCKYjqdwnA4vBLUjgWNPAEWrJf32XUC8KKTrgqi1yshmOU7tMvwIU3uosrdO568LAlYpCgGjVLTW0RBsxbg0YBJESXo+Y2ni42fxQeXg5ii5/Mw1q/oLCCfk8kE5vP5leArrTt1rkvpsM6Li4twqoUHTY+Pj8OONJ5XawO2A9NQna/xJO2GjRHlFU+V4GniPM9XnDosezwew2AwgOPjY5hOp9BsNuHx48dwcHAAJycnkGUZ9Pt9aDabwYZhvtPT0+B00A1EVV3xhn13cXEBm5ub0Ol0wtWgBwcHojxgPloGJ36NJM2L/OMuRLyWG2XBssc8SMZlp0odc92UElygDj/PX0V7+VjV63VxA1uM6NyUAlxFbWVKGzEtvVXk4uIiXCsupS/Cl+RsIsXK43qMnmCTyIsJPO3AOUUDw1y2NB5QP+A1sdpVwVbwhfa35eTy+a4R1R/c/mv1aN/TMvG06GAwgPl8HhYL8Hp1GujkVwFa5JlTyJel/1Mxg1YPLoJtb2/Dzs4OPH/+HA4ODsL8KbIRSJPHmw4wTqdTeP78OeR5HjZPdbvdYNO5DKWSdw5Y+blsUj1Bvy9yWr0q8tRn4W/ez3hScDwew+7uLnzta1+D8/NzGA6HcHx8DOPxOPn6T8qDdE12VUGNMoT144bCFHvL/SFKRTBBSoAxhZDH+XwO4/EYRqMRTCYTePDgAbRaLfj5z39e+qkjrV4k1HOpPnKsH7Xf3377beh2u/DTn/4UBoMBdDodALg8oYOn1rUr7VOxBOdFwiXUvtN4Rpa9fIKJ3x5nxQVuE8bm7cU2WTGjVCyq6WItjXSV5XURjVNp14PTccR/nqctLN1ZVOdwnjxUhX6SfBStfClOx8sCgLChDbFhTJ9rWJji89tgpzTyjDmdc570rVYrYG/EBFqcFL+XZLxer8PW1lYYg8lkApPJpPS8jPmQMVnRyLK9VKdoZVvXMkt+VpV0G+WT8oTYcTwew3Q6hfF4DK1WK8TA7t69G9LSK/oRl+R5HuIHfMGa+qlFDlFVTbdJX3jwZCwNtielXZK/xGOY122btTUCy45K8Qz8XTqpXfW4ryzGSgAa37ngDcJFV7pQiU4OZZgHfz0NKAqQNcKO1AKVkuOoKeLFYgGj0egKv7yNUpneN65osIumqQJAWWVowf0i9VgkgUwERLTN9BSbFWwowlcR54B+LuJgWA6L5zut7Vw+UpQyL8cTXKVlaMBI4l37HOPVQ0WCJNQ54uOpKW0tiCK1Eb/D4KNWP6/D64Tz9HQxFp0UXv5wOBSvCpTai2XxUz+NRkPkWzJs3uuJafn4d71eX1nElvQGXrM3Go3CBpmTkxN49OgRAFwCQ9yJjkEa5IuOOT2xoPV7Ef2L/+M7VxiMxneXaNu9ei3mmONNFahD+RXJ9B8vV7OBVQQDpLZUXRaSJZ9ee8r5i9nGIjYFF2NR/qzyeV56JZ6VpwhA9uI1TCctxlp5OP5KxYWp9iOGe6zvyjrYll2mtgdlAW0FBgRSFiF5X2oyzNuFPMRwDdfRUp0aWWOOC0STyQTy/PKtPfrOJt+kV4a47HNbRTf98P6JtdX6ndrPfr8Pr732GgyHQ3j27JnJb0wX87qLOL9UJ3rmvkd3LxaL8Gb7bDaDLLsM3I/HY1gsFuHmi1hdKW3wtlubz5ZtSOXR4yN45w6WJ+FozZ/ln6nNwWts2+02vPnmm3B0dARHR0cwGAxWMEORcdFkowo7XwVRWwsQHwNtHC17ZBHOZ1xAqLJfkE9cqBiPxzAej2FrawvyPA8bHHn6Kupd5/hqeK5Wq8H9+/eh1+vBhx9+CLPZLJzWms1mK1drSmUW4VvDk5aOxnoQ63kWxOn8rqpvq8TxEi7i2CM2r7y2TaufllM1xWwCxeH42bsYSxcPpfiNpDuLzlU+dzxxyFR9xsuQ5gjHmzStx1bS/qnVamEDq+X/SN9L8uL1J27ChsXq1Hi12ol58Dko/A5vQInNawC4Ehuit2PiBvqYjdSwuFa35XPEcDf/LpbP8ts0snRRqs+aklbC7VXEKbzEY0e4wIpPWeKG842NDdjb2ws8YGzu/Pw83NBiLXTz/zU7q/FokSaf0m+07pjP561f48GiVNuHc0HaDBTDMTGdoOEiqxzvHFuXjY+VK/nFHor1AU2DJN6TkwKovO/PaeUX6eAigI0Tdcba7XY4SUTT02sukXh76YkjShIo45OWL7ridzTvfD6/ckI0pZ1IXiFf93ho9WCQTZuUHrCWytd17KzhCgpJa0/M6Y+lp+XGQAiXv5TTQlUY+pTAmfWm5joodU4gbxKP2MdeMEf/9tSN40ivRcLTn1mWiU4LXkfnDZjVarWwo+3w8HDluhrtVgDunHraj9ff0E0+lPCU2Gg0gs3NTfid3/kd2NraglqtBk+fPoXvfOc7MBwOAQBge3sbOp3OynVwk8kEDg4OriyOI68avx79iQsKeZ6HxdatrS3o9XrB4cFdqFgfnjKWAJJ3kQ3TIg845ngKS9NBFmE7pIBBTG9d1xytktYZTNR0eqPRCG8x0pP0+HuM+CYzJOt0HU9jzVuPfazX69BoNKDX60Gj0YCTkxPXVdgAL/sF5TzFHqN+0ILqln0qu5jHy8P/PWNH20h39C+XS/jCF74Ar7/+Ovzf//t/YTQaheAGBjaQrLalvqOF5Q2HQ3j48CHMZjOYz+dhMR1PMHptF+XBwnJ8rOm1khaflPgpY8lmF9FFFIfyduA/btM571IAoSq8qY0/BvpxzKyTzp4gAS5moJ6SniV4FXX9dRDdDMevvdMCF3xMtJspNJ29DvLMfeSd4p918VMVZVkGGxsbkGUZnJ+fhyc48Df6P6ci8Qu0981mM1y1iyeHigQJPWnzPIdvfetb8N3vfhd++7d/G/b29uB3fud34OnTp/Ctb33LpXOxHE23ct3o4VWKGXnyZdnlZg4cp62tLXjzzTfh137t16DRaMDyb0i+AAEAAElEQVT3vve9cF2xlp/rROtdTym9Zdd4OpoG//dgD7rZVbrO/qYIF1+wDzS/j9/cY8m4xw5Jek8bA/osTlHbJMkDH0evX0bz4HzjODwW8+FB/5hPnap7Y23y4j+aXoorSOUU4RXjtbiAg6ffrWeTND5uq52qIr6G6S28gHi/0+mEZyUwD/qmtM/Qf7q4uIBPPvkEGo0GbG9vq/XTDaUx4ro1Jeatxdy8sstlltszCc+nxPMwPea3NmHx/n5VSFtEpTSbzeCTTz4JmwG3t7dhb28PDg8P4ezsDEajEeR5Dt1uF5bL5coNW7hZWaMiuLMMVrXyeWWuLFm2kaexYhSaHUmNGdK8dAO1tQHIW8e6/Iqic8zThym0shjLO5MrMwoquEMeA+NlGJWUrmbUPROEKzkElhq/NDDNlahnV5YFRDnfkkGKAXivg1AleetLmUCpxqesMrTyVlW25kBoyk8D/UX40QAK/Sy9WxAjnpbO/7JgWyLL0JQtD8Dn0FiA1huc9JTJSZNF6uhywit50QDiwiC/FivWr7iQh8HpTqezogs9sskdHw/A5tdeUWBKgxQAAJubm9BqteD8/BxOT0/h8PAw5EOnDeDl27BZloWreLj+TbFdHFxL+fM8D2/f4sILv37eGzCnfEhjz/mQ3tSRZMlyKqQ5LQG7ddqc2Bzx1u1pN8U8qXWmBOY4D5p99wRJPGTpLus3T3noIOE7zYhXpH6MOcf8txhu4vIsfeak6T+LOFbUeIqlkfjEv/Garzt37oQNGri4QW8G0LAeb7uly6S2440vZ2dn4XQu1SMa/945Q/NSnWLJg1anZRORKH/avONpeTmxOjT9oY0L/o4LADhn0N6l9gmvQ5oX2vzgMiRhN5zLeKWmZ0Mc73fMP51OVxa7yjwFwOfwdfk8WKcH42LbaTst3eTFUNrvFkm6AT8jLmo2m9BqtVY2+HBZ8vgIXj0Q4xfL4vqqqrHO81zdSJ1ShqY7AGTMgTe1pC6weXjk/FxcXMCLFy8gyy4XnPv9Puzt7YXbB1Kxk2ZjiuhvT/kaL5im2WxCv9+H119/Hfr9fvBPNN8Ey/du7I3ZNe+8lOaNhT+1W9ZieLAIeTATT0//9thiADu2kUqW3HE7avFkkQfjp/gBmgx4yDs/LPtu8Sbll3jwzBcvSbqR8sH54mnxJh6+8c+jjzn+1Hyg68AVHhygybsXQ1jzhG+2pnFw3k88H771iQu5tBxJz3rshQfLxNJqsqXNhZiekPRJrC1SGZpv4Jk3Hv/Aq1e1ueaxv16S+MONovSJEpSfTqcT/AzERovFYuWGLc3eaHaU/yb1P/6v9WnqnNJ+08ryjr1VbopN0fRhWR48eT38xcjCkVb9Vejy1PmVgqUAjMXYVqsF29vbwTnDE5q4W5oG1fF7zUlOGWwPSUA6z/Mrji/yQPmw3mrgVwXSgZ/P53B2dha9kkTjV1qE4EJKT3DRvDdBKc6aRRpQp99zh7jsCQKvc2hRilKLpeMGN6XsKg1krM4U54KDOCttrF6LrqPtXvLwwnVCioEvQ1hmq9WCt99+O7zRhuN0cnICh4eHMJ/Pw9upfBEIy0BA9Pbbb8P9+/fh+fPnMB6PodFohFNveNUi5qEnCyTyzGkMXtKTSQAQ2pHnL6/RwesO/9t/+28hLb8atd/vh12bjUYDXn/9dTg6OoKHDx8GEMjHIrZgLY2d9IYF7cvlcgn9fn8l2EnTSWPBSbOlUjARy8O08/l8xT5zHq2yeP0WLx7+Oa1zLli/U36w3bhoDrD6zmiMUkEhziEqryhbHnvJf0t96zjLXr5dxtvgdQ6xXizLcoypI59lLxejUk5+F5ET3DFvBehiPMdkQAo6aA4jTVOv18PO383NTdjc3IS9vT3Y2dmB+/fvQ7PZhKOjo7AI5iUPXtDeNgMA+Oijj+DHP/4xLBaLKzKChPah3W5Du90Oc2U8HpsbC7gcINHP8/l85W1rzBvrB8np5gEkWp4UZOIb06qkWq0GnU4HLi4u4Pj4GHZ3d+HevXsAANDpdOCTTz6Bk5OTcHVvlae3Y0SDHFTucQPX2dlZSBuTLdRFeM3006dPYTAYwMHBAYzHYwCAcOKb2qibIsmWcdnE3+gNJBphH2Lgib6DRevkMqgFEKsgWhfdlAZw+WbX/fv3YW9vD8bjcbiuuNVqQb1eDwt3VRMPCGq+h9UPqbflUFuAV/hSe4S3lqT4n5at4EGZ5XIZTnKt41Ym2ld8A+Zf/MVfwObmJty9exfOzs5C3+IGKi8/WCa+420FnqygcUqAjLZrMpmYN2/k+eW743jrDBKP20gHCgBWbxvh89PTRymxLmnOS5i83W6H+Nu6/GHcKIpzwYOXqCwArPYhn0carqWbRjlJOsLCyDRfVQFYjaT+oTdQAcj9wNtB08R0j6dNWZat4DvtVr1UOUrty9iTP5wHTSdY9fb7fej1etDtdiHLMnj27BnM53PxhCy36d6TmjEeqibeDxou4LilqF7w+HuIBfnCt4aDLi4uoNPpQKvVgvF4fOVmHy/R20SQD6sdMeLyxXV+TIdwPKLpIW1MrisWWJTK8iLFVajMDAaD8DdupELa3d0NN9nhwv7Z2Rl8+9vfDrfYIW7jmzA8eJwTzxOLjXnoumL1Ur2WbcRx0fSh9LkqnuiNfQC+OPBN6N0YWTgFSZvv3r69svrHASh1HBG004UY7ljSylMH2KO8YnljHcDLpG/jaI4DbbsnaKkpaUmRS5OC92tZRRHrxyJKRJvYkrHT2ujhzzKGnDQ+6G9FZCrGU2oZWh5PP0hgLJbP6jPP1RKc1qUsixqzonxYQFfjxXKI+JymZcTksQxQ47oCT6PQnWaxIAblB4HSxsYG9Ho92NnZgU6nE64gRSPLg9ue8Yul4faGBge4zsnzPASKOXDH7/BNlGazGRYP8D1ViWdrbmp88wU8euUsb89sNoPpdCrWKTmiVN5ic53n5Xms/B5ZK6L3PA6UpWdTAU3RQAwNjiDRt1yrcFSQcFG+1WqFjWwAtr3kv9O+44HFGC6h+alsxIJiFj6KgX2NH65zLb55Hs6HRKk8afVrc1NKE6uHtxkXSPDKd9RXqDNi+MlDXHbwCnP8HheGx+MxjEajEGzXysL2o2Ms6TDeJx5Zo2XzNFyXpVBqsIbXL82BVHmib/8i7mq1WtDv98MpaBwb7/vAEh8ee0bTxfBjqs3BslF3TqdTGA6HYUFhY2MDGo1GWKwcDoeFsZ/Fg0Sxvinqu/IyuP2nZXrGxEpfFndTnnB8+ElNae5ZvHrrLZo3pWyLuB6S+OL4netbOr7eOrE8XKTvdDqwtbUFs9kMFotFeF9NaldRn4jKHb4FvLm5Kb7nZ9kuzf7RMjSbJPUdrS+VKNaZzWahXa1WC770pS/BaDSC09NTmE6ncHp6Ko4hbau2kVLy4TgVxZj4t4VZ8Df0YXjcDctIIdoWXje3d/x32u+IU6yDDRYPtM6Y3PE83vmg2Wuvvyf9FosP4PymaSVe+ZNBGhay2sXbovkGKOPS5nmrzjI2hvubqdiLlyPZRHpohmJVCa9Y5Ujp6O9lbW0RsuZpFcRlU8KPuBkLMRy9nYfziJsQ6Lij3pI27FQtd975zPkvkobXldI2iargVypT061V4WyNJB2LeohviFosFitP4uBcbjabYbPy7u4ujEYjGAwGK22gdUlkzXkPHqd9GLNTRcc+lrfo2PP8Uvkcu0n5JbL63ENaXZ65pqWV2rYO8sydMnpbfDMW4KWTFmMO7/T27DTCgIP0ZoiHNPAn1e3pjEajEXZVUWeUvuuQ53kIIiD/Fs/aneY0vfbWBiVcTInRTTm1RUnilzuh3ICXUXYSXTfAonzztwE5P1pgQKKUAISn37W8nnqkOmL5YkrVU6enHoC0E6tegETTppxKq5roCYz5fA4/+9nPREMsgW5KuHB7//59+NKXvhT01Be+8AUAAPgf/+N/wNHREeR5vvJmIwXjMZn1tp8GabGePM9XTnXQ4ABec8IXnGu1Guzv70Or1QpXBr/22mswGAzg6OgoXBXJSXqvjQMzfjIQwaW06I1tOT09Dbv7tPki6YM8l0/PSnk44UIPBl2xLdxW0X7FBUgNqFqfU4Il6yasx3ojVcpTr9eh2+2GN3XKXGdIqdFowN7eHmxubsKDBw/g8PAwvNWJt454+KMnnLSnDOh40t36SFSuKXkCNjTIM5vNVja1ee0WOuvWyRw+16X3ZRFTavUWxQ9YntY/Ke+T8UXVWJ48z0OAvtPphDLoXObXoMYI62s0GtBqtWBnZwfG4zGcnp7CcDgMJ8WojtXKwf7HK6oBAM7Pz6+cYC3iKGlBZ47/pc2RKdhOsvdYDrefKNe4oOrVI1q62WwGJycnAHD5tjme4qK7yWO6V1owR92Ff6eeilkXPhmNRmFz2Je+9CW4c+cOzGYzOD8/hx/+8IewXC7Vk9hFiNtqjaTgosfhvg4fgp78lOrUdB1vB9U1qK/RXhwfH8OPfvSjoIuHw6HIy3W1OYWK8sPxnEW0LynWknwAr25bLBbw+c9/Hv7KX/kr8PTpUzg5OYHHjx/DaDRSb6spSohNB4MBzGYzePDgQTSP1C/Yfmp/cc7GdG+sDUVvJDg4OIAf//jH8NZbb8GdO3fgX//rfw2DwQD+8A//EN5991349//+38N8Pg8n8en77Ij7cY7h0yWIizEYzG0DlR1ue2ga3n6OHzXdzrE/bh7FMhAjFpELKw+2GQCu4DF6dSTA5Wn6fr8fTnlbJ70lHSSR9HtqkJhvpEQ/xoNnixCdJ1wHUH7oSWz8H/tb88mt224k/S7xhvVw/U/zrpOwvfymEyvuZOlS9HkuLi5W7BSewkTCG3GkK3djt6vwhXKA22H7Yrq1qI/DT7sCXOLKu3fvhr4aDAZwfHwM0+l0JSaN/YKbXrDv6NWzNG1MF3j8KKk8/n3qWEm+I+9PLV4Y02k8vZRGs7dSfRovWt2ecqsmTx2LxSIssFJ9cHFxAf1+PxwG+Rt/42/A06dP4c///M9FW8yJ+qaYTord0PxWWTydh7is0/814jJQZJz4/OG+LF9/s3Ce1h7Km/emECmv5dsWlVGvX+6hlLkWI2989Mo1xRiMoTu1EdTQwDutxOvEegBZlcSBrUTSxKFgN8/zcOUPpqd5rb85aOf10r+ltztTDJP0Ny3PS2Uc3NhvmjGiVGYSWIovdaJKAL5o38Tya7+nKH/vvMJ+SGmTxgcNUmrpYuObEhgsC4qlwBvlpez4St9r7Syr63g/UidD2uXNAwacaGB7Z2cH3n77bRgMBjAajaDVal25thXthKXjUtuIoAkdfB74oPVge7UTXFmWhZNeSCcnJzAcDl2BEYswPb8uBfU4PSmGJx/xHUh+nTOXPa+Twvnnv1PQJc0jTWYlm6nZ0bK23KPfJP1i9RW2zTOneTrEPRiMQqxj9ZdFlF++KxQXsbrdLmxtbcHp6SlMJhNTh2oOWow32n8osxhc0wB1kfHTxop+H7OB2m9SH3CdEMNZNB/+VsT2xnR5zIHH3/B06nK5hNFoFP7h9562SHzExq7VaoVr3lHmqP7yYoOYTdH49ugQa7ylz9o4l3XOPO3j8qQ5tDQtz1eWaLmxRTwpDyfJPtK+0GSb6jkqT3Suou7DDa63lSy/MEZU51vlS3ab/ibhA45jJVxrzQcug9L7pR7+rXZdBxXxZShJG2MBdNtVpA5KdIGPLgpi0JrewJFSj6XneBwDnyqRNhLFdJ2Gb+kCBs4RyX+OtcGThm7KPD09hZ/+9Kewv78PJycn8I1vfAO2trag2+2GBdgsy4KNpXKOY4A+jDQXtQ280pwti2Xp71TflPUTY+TFj/QkLPcpES/z04k8PsDLpP97sAbXfRIW8PonnI8i/ay1z+vTSQuVWKYVMOf1S+VS26thEguXe+TZi3M9mN/C8Vr/YRndbje8HT2bzcImAer703yaP0E/U7+vChypURHd6MFzKXic4jaMTSwWi5UNK6gD0I5ocw/LwY3pALCy2Z2esLXa5dFJ2rzzjpWFjTWqShY8vqokp9rnqniQ0qT0Z0rdeZ6HDZl4WII+ZYInZCU7TOcnv5mJy5EkF1z3WD6bxLs2Vla5KXNSKrvI77Hxs9pi8UnbFuu3GAbANBJvmM6Sd4/NT50vMb/Akg1P2bQ8pCtHgmq12spd3kiTyUQ8Kat1svR9le8gpQi217HkBgXg0ijj6V+LtNO5HoecGisJVKbQOoFDWYoZEmmHbBFjKRFXxFUbIi95QEbVxOXJsxiVaoAtPRCTZw1UWfWkyIW3zyVnrigQWacTjQAEnWN6ZTAABBBMHTKLEGBjnjfffBP+9t/+2/Duu+/CJ598AgBX32PFt4w87015+wJPZE0mkxVnlC4Eow3B9z2tYC5eYfbmm2/CYrGADz/88ErfUP4kPqUTeJiu3W6v1I/OCgZ4AF6eWt7e3l5ZYOEBC6ufJFASIzou9PQafpb0oTVOVcpzKjjEPF4HnwaJYnXS/u90OtBsNmE4HMLFxQWMRiMA0G+7iBHWiSfCkCjv+GbfbDaDw8PDIFNaII7vdOcOSUw+sHz+vqd2zZcGfmP4i+vpVEfZkx71QUw2taAPwOpJW6lOqS80nZrqjOJV1dPpFAaDATx//jwslPb7ffd1tZRimweyLIPNzU0AAHj06FE4XUsXyDRZ9bYR89DFK/p/zFZajo7kdHud0Zie9VAM01D9g2liT6GUJa4r6GlzihUoaU601Vf0d0+AwIs/XgWitl+6SUNK7/FFAGTdy/NSvBAjK3jhlT/+duRtJWwr3+Dm6SeKeak8080MRfjRvqebFyeTCZyenkKWZdDr9cKmvU6nc6U9VRHemoPYneLpWMALqdlsQrfbDfP66OgoXLsMcFUXefSFt5/xVHetVgvvbD98+BC+853vwO7uLvybf/Nv4Otf//pKnlqtBt1u98pV3HzTiEToV9G3d1N5ltJLviyf9zg2RTdEVEU4l9rtdrhOm/+O1153Op3gS3J5SsHktGxPOkzLD0ysS3dxfSHxgvZCw4lon5vNZjjxieS5lZCWRfng5aLvwm/ZS8XjZYjikHXQ/v4+7O/vw2c/+1mYzWbw7NkzOD4+hg8//DD0LY6JB7PQ08v4/W23g0hFfDOAlzecTafTsEDW6XRgY2MjpMHF2fPzc/VNYJyHk8kk2AXcGMP9tdR+9cY/eDoN69L/MV2qTuJtKBMH9OKWKsjL1zr4oX04mUxgMpnAzs4ObGxswMnJCZyfn0O/3w91cyyEBxrwuSd6owPqXVoXncu0XZI98uhF/pskS7E810GSH468cCwjtYn72nxeSdhb4wHTp/B902TNR89cTcUhK14lXodCgQAWJO2elYSQBiMwPx1MD2Mxg2l9lsqSFDEF2lJ5OKm9YJgOjvQ+A5YdC0ahovFc5Wx9V0XgycpfRLlIwun5O1a3R+itgF/Kbx7+aDkpgCO1T6X0sbo4T6lgSPpOC0pK5WvBPen31PI0Hj1lcz1l1c31XYzHFF48xHUa51daPOJ80gVcfg0Vjgu+FwsAMB6Pwy61Xq93ZWGR/i3p/xTCnZd0EVYrQ9LP+OYiBtXOzs6gXq+Hq2Cn06lo4yhpINurD3j7MRhkBXWwTiugR/+PEdov/IegNDbnPPqhqF2IOVSeuqWx8AIjmk8CpZTHGOBKketarQavv/46dLtd2NzchLt378Jf/at/FZ4/fw4///nP3eVgWfTKPUtnSYTzn88r+tk7vhcXF+EaZ77ozMuVrsSK9SHHjXzXf6zNKQ5uzJ56bDnvP+vKWU7Pnz+H2WwG4/E4BD1xnOncL4MTKAZttVrhFoKUsuj8wMArP+FB67X0De8vaU5qYy31a2wMpXGI6REvRrEoz/MwP/A62A8//DD8PplMVq6Rug6H1IMfpbbTceWYSes/PBVI27a5ubkyjilzlWOxGLaL/RbjH+Dlla88oCjxJsmrZF+09FWR1H66SWs6ncLjx4+DTZlMJuEqSAvTVM2jVa6E+S2M7rXZkhxrdWo8e38v4qt5yeKFbs7JspdPasR8CF4+tb+LxQI+85nPwJ07d+AHP/gBHB0dufgqgtsoUR54GxeLBTx//hzu3LkD3W4XNjY2Qpul0zUSr1l2dVMWn+8S3x4dyNuRoufQBjYaDfNK4BSS9DptN930x9PiaW68yvSTTz4JpxHRx/Doc+l3qZ+9+ElLV5Xe4uUUKVfCvmjz6Tzlp71issXL1fCS9lQcJ49d5HVb/UDlQdPVlk3F3+kiIM7LR48ewdnZGXzmM58JefE5ovF4DKPRKPQp3aSm6ScNV14HJouRF+dofenR+xcXF3B2dgbz+TzoHNpfdPzomNK4E6ZBnYAb7akuxvGU2mXxaMkb93WkNmvtxrSSTGKe1LiHV264n2tRqix6216WJJnT+pL/Nh6Pgx9ar9dhc3MTer0ebG9vQ7/fh1/5lV+B0WgEZ2dnIQ+1yzGZ5roDv+P6yNtGrR5ME5NNS94xLeezjP7hmEark6fl6WJ8U34tKtqesrbcGrPUvB79E7OJlFYWY7vdLiyXyyuPJWuVSkpSCvLxK/o4Q14nzEtceCShQ+NAJzRfxJCuKfTwqrWJLoDQvqPAaLlcXtnFpgEiD+j3UBkB9abzOKNWOR4DIo1TEeMWA9seA8PnR1VAzpqL1lwCWJU/TGuBbm+fS3x5ghke5Wb9TnmXHBfOY0q5klLVAK7V9+sC8ZYzRa8gk/jJsixcAQKg78Tt9/uwv78PeZ7DaDQKQHpra0u9wgv/LvoOVJ5fvQbHIho8wXFrt9vhhMHFxQWcnJxAlmXhCqPT01OzTG0OUx75Z2vs8zwP7zF6bkqwrgr16hWsFzf3zOdzaLVaV2TDcs4sJ0ZzVjV9kuoAeGyBR8don61+854mT6m7Xq/Dm2++GU4lfvazn4W//tf/Ovz4xz8WF2O18nHXe6PRCAEwfjLewx89WY/lxkhz3HFRGPGU1BZ+EsXSi1yG+Byn5Wg8ltG5UhkxOeb8UT45JtZ4e/z4MTx79mylDgyecR688qn1EZ4ums1m5mKsNE6YH8cdN3hI+J5jMo47OL/U9nIdxduC/cplVzvlzfniaTw6yoNRpPKoXavVajAYDOC9994Lb8fhtXDXfRKKjg8/TSu1Af/HNHS+azgUd6/z4ML29vaV4Byv0yJp7CkvtC7Pb5afhbgCF9LptZwaacENzU+pwt/l9Uu/4RjjtXA0wIUn8/m4VkFcluhnbo9ivoE2dtZ8tvS5hXs0bKf9Xqa/uGyUKYvKFs4/tCd4mjGVLzydev/+ffjKV74CH330kboYK5VRBSGu5bb1yZMnsLGxAf1+H3Z2dgLPnpsJJBvFv5fyxGy6xLtWl5YedU2tVhM3kVbRr9inWB59c5WXj6ejP//5z4e3Y4+Pj+Ho6AjyPL9yLTTtp5gvrVHMj/bMGw/+18oukxb5kWSJ+mmokym+4qeaNByEJJ3GpT4lypN02COlT8rga47bLLuLddF+Anh55ftisYCPPvoIWq0W7O/vQ7fbBYDLW47u378PBwcHcHZ2FjZna1fTSzxySu2jMqT51xZZskcJZUS6IQvgMh50enoKs9ksnIjXntGj/hy/ahsxL+bH23ewDP5kU6wvUv1+5E9KL+mfWPmSb8LLsPjR2mKNtRZHwzQazxZPVr4qicoEbyeVmzzPYTgcrsztdrsNm5ubsLm5CRsbG/D1r38dDg4Owk19eX55yILf1CD5xpKuQeK6M2aLvRQbLw++5eTBs5qsS79r/ovmt/D8qfrIsvkx/jEN70cPHx5K9SWkejnO4TzH+F1ZjB2NRqUb5nFcpA69SaLG3lKSGhVthySsVTp266KqwD8vs4iBs0CKZACqpKoU9zrJ22ZtPsYcG2ueVAHuy4KGlPZrnz1OvFSG9t26KbVObB9eT/z5z38+bES5uLiAb3/722H3KQCEIDwuBlEqM8ewrJgOzLLsyvta1JnFxeXd3V3odDrh2lfMKy1wIHGAgo6jFJRA0q71pICazxePfos5IVQusUzkX7pdATce8Xf8LB48QRCJx1gbvQ4xdfDwn+bAeW03lhMD39ICZ4pDLp0E7fV68Gu/9mvQarXg3XffhZOTE3jjjTfg4OAAAC5PHTSbTZhOp+pCAz3JnjLfKM6JUeo85mV6dt5rc0H6jn+WTqdpPGtOBZ8zGo8SUKflFl1AQyexVquFYJE3D/ISC2BJefGWA/o9LZeXoxEG5lGnWFghxSbRdtF2SKeMeR+UxXiWXvLgvdQrTmlgNLWfUMdrY0XtDpZddJPUbSUp0HAbfaYYebEj6itvUFkimgevrF0sFmu5GjfGA7bBgzUkoniDl10FcflKsTH89/l8HnDk0dERLJfLgE8xYM1v1bqOOAnFt1owE4n/9sYbb0Ce5/Ds2TNYLBbmRtB1UJ5fbnREP+XDDz+ELMvg4OBgZRFByoebFDnW9vQ3l1kL19O+SLmqFeWBvuvO5aMq2eAnMylRnNLpdGA4HMJsNoM333wzPGmGp5kWi0V4ZsYzb1JIsnOviq7X4glow/GaYipHks9YBO8DrPqxHv4A4ng6VncMl+F32kKJlBbLxrndarXCxpLBYBDdyI0LkPwqYq0Nt4li2DIlVqZhJhorWSwW8OLFC2i329DtdlWMgDpQu5Yb4KWcU3lEvwcXZS27g589viEnbdOmVEeMJP8vFqeReJRwS0xPeuYJr/M2ybDlp+OmTIw7Hh0dwfn5OZyfn6/c4Eep2+2GZ6Vi7fSMDcXWHkrp21QbmGrjaBs0Oa/aVqJ8vSo2uAjFYkuUPPjPopXF2Ng7BVUIEzUmkrL1BKlTefCAiligMmYAPWksMMWDbFqaWPuvS/mmGH5Mp+XRBNjqL/6bBCar4FuilDbfJHFFwo2zFgDSQLT0t2a4tDkupdH4pp81vj3AJzb/NaBGf+OyJsmf10nxkrd/LErRF/v7+/Dbv/3bYdcptundd9+Fd999FwAg7GxcLpcwHo+jc9mjH5G0xTEtQMDHD08Z4SJBs9mEXq93JT29AipWF3Xc8jwXgymcFxqg4acspXkRk1dLB2p1SwF+bl+0sfOCijJBVI+dzzL56iOLPPpGsyu8H3l/pIJOBPe0nFarBV/96ldhNBrBd77znfCeML6rg7uHcZFLkh3pBFHM5pUBzTEHVHMsNaLtoP1qyZE2/1NkQitDwqH8syUzsbGwbBTdRBKbQ1gXzmPp9KJVJ+afzWYh+Ed5TnX26aYA6UQs/+zRERyz8P6VnE3e7yn4LBYMoTqVfucp26Pj+PXxKYEAlB2+sE7LlzDgdZI07nTeeTBojKrG+7wP6fyvwjnn/EkyZqXXMJVVl4brUX5wg911ELet/DtOsX605n0Zu8fLj30XKwM3XuDp6uFwCJubm9DpdMIVeqkBY6tt3nZTH4frE/xdG7Pd3V1YLpfw/Pnz8I4b6iZPvTFerfHD/NPpFObzObz33nvw5MkTqNfrK+8aWuNHFwFi8YYYNrEwCf1e04n0N4qr8Z1cgOIbvyyifGuLU2ij6vU6TCYTGA6HYcMg5uv3+zCdTmE4HKrt9JLUh7w8TRdK9Xr0h5Y+1gaNV5pXww8U01FZ9dgN7XvuEwKsLsZ6sDn/XESHSnZTsq2xOjTcjvKIbRqNRuKpX14W2jsNf/C6LN6qJkvHeOQ6hne0+UJ/pzem4S2Zm5ubK8/iSPxqfZVlqxuoUZfhgizFspS0Nmj+FvfXaX0xvOklKstavEoao5R6NT0m9a9nnK+baP/H/BGqnwBeLtojPjo+Pg758cYLJLzdL3aI0JIrCd979IJFVfkjMewq4fmYbo/N/1QqahcwbxEcrc17Xr5EMSzpSevhj/s1HqzbEL91kGYEylCVCiSmpLizUIXTplGWXX3jjE/4PE+7nrMqvtaZ3ksxgFFkbKRTHlXSdY5TCnkUHJe9lP7hafk1D7weTxk0rfTmnETe/ve0jQN47kBIdd8k2ClLeX75hgdel6jpnY2NDWg2m9BqtSDLMtja2gr51hW48/Y5/Yw7LLnhe/r0KRwcHIR0uMBVlA/+HT3pAABX+pECO6te5B+Jy6NnHqF9wXde3njjDWi1WtDr9eDo6CicvOREAzEcKFsUC1xJQLEoNRqNlRMXMYfbOz+RT5Tp8XgcdvVXEfSigOzi4gIeP34cAgHI36NHj+BHP/pROMmN15TxcZFkwHr/SOIDF88Qa0inS6XgES8/pW/om0AeJwffRpMWByy7wdMUcVgpf6knWFAu6Xfe4JLGg0Xrwm441tIJHK0MXJDl7xdrQRuJH0+/I0/SojGVW83hLIrZqOzy+UFtEPabNneQN9Q3eCIu5c1ejTdaPtcf9ESxdK0w/SxdRxc7OY54ggfdaLvx9EqtVoMXL17AdDqFyWQSNgZc9/XMtA0Autxhn+V5Dm+88QZsbGzAYDCA6XQKp6enZkAO+5cG2XnwkQcKufzy+VjUlsbyoUwC2Bss1+VLWVcUa3V75nYMx3n0bWqbtWCsdKNB2f60cDElrjvp9+12G1qtVgiESu+SNhoN6Ha7MJlMwpvmi8UC7t+/D1tbW/DTn/4UJpOJeQKP48zUE3ESRkGdYtkm9HGwDAnjcD7pLTIAsOLzcH1u8R3DqbQdyBu/7hPLkfSzVGYZmdI2Oknpvv/978PGxga8/fbb0Ol0YDwew+HhIRwcHAQcJ93Qw8uJ4VcP8T7kbSjSL0XyFEkv4SWAVUwhxVZiOJLKK4+r8LxSv3H9mqpnU4nrB4kXSnRzS5Zl8PDhw8Bjr9eDe/fuhbTo79CrealdTcH7N0lUHwG8bIP2XASAvoiHuobaQEkWR6MRPH36dOU3XASXiMfS0PbF7B6XaelmqpittmSIf+e5kcY6OS3VI/WphWs0/q18KVh5HXjNSxKeBbB5sjDoZDKBFy9eXIkHlYlFVmV/NJLwSxVknZJPvZ2palqnn3CT8sxJ4yVlvlNyLcZqk8lrNIuSFSyLpY2VqznQVVEsyCHV7a0/JbBGy+e/ac6tVY8GHL18eMtIVWKWg20BXh4w9DiGkqGwHLQifZZC1rgVdfotgGLliQGFIjqDAxQ+tvxzal1SmVYZKXQTBjHGM+5IxGtBKJhB54YucKLuwrcqr8PQW3NI0l3SlYx4fRn/zXK8YnqR/oYBGwSGkhPiDfZRJ5FenaY5yRbArdfr0Ov1oN/vw97eHsxms5VF6Rh5xpbrFcpv1eDWYz+RUoNUWDbOhVigzqqL9gV3iAEAzs/PYTAYrAQARqMRfPLJJ+GtM6/MYP0pABX1M/4vyZVUr9e51fjzEE1Hr7wtg9Ok/FROY3zw7zUcQec6fk6lKvQpt1s04MLr0k4GaJjRwlCxUwZaUMKaP1Y59LPV1xzb8d+sPrcCWBIPEj7h80byCSQ9HsPFfG7E0kv2TOs3aWw0udbkgxPVU1mWhZ3suACEfcE3IMXmqpdSfRWuV3G+4OYmvIWD6nKrPG4XJDwR80Nin2kZRfwNlEVpg45VZ1XE6/T2izXHLbJ8Y/47/84Tg/DwQjfxFNX/MVzMSeovvO4TfQHtKkp8PgHT5PnlogfFZ576y8gRHwPaHrx2GBeUca5JmzClfqD/S4uSMSyeiinwN1qvhqvxd2rLvXJLv9f6gWMY/I7rL/r/4eEhnJ+fw9e//nXY3NyEZrMJ4/H4Sv4yJNkAbRzwf83epc6xVH/Ju6DH22LZdMmfitlGCYtIY6vxpsl4rP+kftfyxsaTt0NKS/s9yzI4Pz9f+Q11AeVFeteUz+112rlU0vqN37iEv3F7YM13mo6Wz9PgLWh4lSyvi+bTypf0jIZhiupTDUNQHmla3m/aRhQLa3GyMIDU11ZZPE8RHSbxJtnOdci+pKckufT6EYg7lstlOLzA9ZqXL0qSnFTRz9JnSd/QNDHeYnzGMGgK/rIwQ4wvD3l1vpa3iJ9TtW9j+SOWjZP6MPlk7LodsqrKt8rh9WggtKyCyjL92pdXmSxDlKJMihB9R5DWUWZnfRnFy+mmgFwM7FZRNoJZDXRrvFh8eurV+Jd2UWkAylOvtcOalo+BwypO51VJnjq73S60Wi3xSrTZbAZHR0ewsbEBGxsbV/JOJpOVK2zWTVJ7LCcUf8ff+ImjlN2vWA8u0NFyaeCyqlOUWCe9ugedSat8bNN8PodarQavv/56OMl89+5d+Jt/82/Cn/3Zn8H777+/sqOQk+RIWSQt8FjkCQRIddA5iYFA7SS39p0V7JIodpWXh2/pqr/BYAAnJydwcHAA7XYb7t27B48ePVpJNx6PV06RSbtsce6lXGmKGyno1bIobyllYb5UICw5WdguC5RLwRf+faxeng/7wdpURRfMKZ+pjgY90VLWycPyUnUO5QHlkI6fB6Pi+NF2oJyn9o1WPvKjBdvodzHSZAqxYoxfHqhLbUssYITpsA9T6qhCjlJI2j3O5y2/Zo7OGdRjePpyOBzC+fk5HB4ehrwAevBVoiKOOOWN/83biFec0k1Ai8UC5vN5uIpVCqrweqgNWy6XMBqNrti1VKJ+pXSqWpNtLahY5mR2UaJ9R3EHvUKyCtIwJP0/9dSxNwgWw1N5nofr+MqQNt5FdTIGPLnepYsbZfmtmvI8h48++mhFpprNZuCb2hJK8/kcAK6ePMXvcONFzFYAFPez+VXKnBcqb0X638OXFnCl2ID2R6fTgdlsBvP5HH784x/D1tYWvPXWW2LdqSd1UDd4+U6x0ZJtKWNLKFmnLD02m+pi3i4JO0vYlv4O8NIuo061/HbuW6f0h9X/XGa1Jy08Y0llkuM4Ot9HoxG8//77oT/xSmPeLiprVHdYvuJ1Yi8kHEeM3VDieosTH88UO4cb8pEHfBec3uaF/cZPmkr9hptksJxWq3WlXgn/W3x7YwsU/1PynNwvcnLamp88Hbe1kj2QytTIwidWuipJq9Pyuy1cXCUupGVRP4XG4GJxoLJ+mKRntTmBNnQ6na6kj23OkqgqX/0mKTbPAa5fT6foVylNqZOxKeQNnHnTesgyop5gjPS3Vb7FR6y8dQtOioDEePEamdRyNeLAiJfHjVfZvqzacK3b4MUMrxWQkMqjZVqBphSQWlXwDMtKkb8YcUBeRbk3YbC8c5wDy0ajAXt7e9Dv9+H4+DjskMcrySaTCQC8BFGaY12102LJKCdNxq0xpc5XbM5zR5cDZ0u+PXaIBn65rrPknbdhY2MDOp0OdDod2N3dXXmPVOKF8mM5+GXGMiUv70v6Tg0Gg1LL86Th/wCq0ys0cI7/ms1mePMEecC28kBokfZIgRnaVppOCsQh/1J+y5ZIgW1vP9KFvpjdKWpHuE6Q5N0TNOOkBW60dLSclPkm9Y3HuaJjqi0+eMaJliNhslg+jTR5jZVRRA7oGHv4lvB7bHFdsj1WOo0/ziPl+zoCKTEcyPmjJAXVcBMYXoWaZVm44rgIb2WwYGr/UTvrXWDg2DL1alapfq7HJP1cJuByHdi1iH2QcBSdh9x2WNipCttexfxDPCNtMvZQkXnJf8/zPATHG41GON1I+49jo9lsBsPhEJrN5srJU8+cKEsaZkGdgrfhaIF+j63heaS0XK68/o+Er6R5XGYOa+TB8zGdz3XPaDQKNybV63Xodrsrt2VUJRNeWef1eX0Yrb+5r6fVa/EW8xG18rV0Wh1WuR6cy2VyXWT1o9XfWh6AlwsW0sIFtwUSjpXKXHc/cLJkRBsvyc7FyqPt0vCnNo+0zzHifZ+iG1J0ttev8trwMrorBdt4x16SY6kcrYyYrijCv1WXp1wuj5oelmSoLHFcHUvLefHodW3uaP3C+4DrtiqvIpb4KzJPqiCP/Fm4xJu2KkrxPa15C8AWY72g5ToopcOLkvd9jKpIGog89915XiVv6wT4ZcrW8lpl8itW+SnJqtt6G+aGRJrCTAm8WqfdpOCiBGxTlJNEnvwW+MQyUmSRnkDj9XCerMWg6wbuRYgacJSNu3fvwj/5J/8EhsMh/MVf/AW0223o9Xrw4x//GD7++GMYjUYr+aWTiZps3ARh3Y1GI5yCi/HDwbDm6OE/fv1xKlG9VavVoNvthkVwfnU0nj6L2Yl6vQ6f+cxn4LXXXoOvfe1rYjAK09G2zmYztUzLsaFpvOA+RrTs+XweNgIAwMou3RhpjinfHZ1l2cpJVImPVEL5aLfb0Gw2od1uw8XFBZycnKh5cAzoNeH4WRuDmANO8/B34PiboLH20DGOOXw4f7LMt2Mb4FImNzY2YLFYwHA4rNTZkvjDOlPKx931eEKIB3GsK9w1h0yyoRrfsXZZ+Xm9Md6k9KiDcFw9dVXhMBZ9L7Oo7sH+4P2C8zrLMuh2uwBweVtElQGCFMeX94e0iQN5pp+5/0HnaVHeY5jsF43QbvJ36DxE/RTtlBBNi/VR+dJuqMH/bzsOpfJSVkdwbFaGqC/AdbxHB1Pbx9NLAbTrujlLw7S1Wg1msxmMRiN46623YHd3F0ajEcxmM+h0OgDw8vQopUePHsFkMoH9/f0VDDWbza5F9vi4LJfLcGoMx240GoVTnPRGFQ0zaXxb+pPzEvuej4Nkc3j6sqThthSfiPOq9cPm5iZ89atfhYODA/j444/Db3grgudkL5Zdxr/y4CFuB/F/Tx7eL5JNXTd52kjfikb/pwo9qdUj4Q9O2vyR5iCP52m3dND87XY7tBHnPU0b07887lMUf1ZBVkweT6dS304bV6+v0el0gg7F64mR6Olii7zyjxv+Y5TS79QG0/xavJPjY/obzZP6tnCZWFgqjvbYoxT/8LrJ6zfR+E3sNhc+z7kM8CcicMO/ZBOssotsoONEx/vi4gKm0yk0Go1w8pymQ0wGcNkHk8lEtZNFbj27SfrL4DviOEljIp6MLbIoplFVQVqNJJ5SwUAKUaUWU4KSIS0bqCmSRlNKHl4sWYg5FlL9sXq9QUEvaXk8BsBTX1XGrSiA52NLwUgRB0EaT/63VDcvo4icpwaJJYrNNUtf8L701mOVU4TKOHOxvPRUCj1xOBwOYTKZhN+n0ymMx+OwMCKBeYD1bewomzbmeMQWPSRQL6WN8WvNBXSmGo1GSCsFxfm8pv8oHwhWW60WbG5uwnw+h8PDQ8jzHO7evRuCbPw0JtbJnRNP8JH2VWrfWOVSoMzL9Do6MXucqiOLOkh4nfX29jZsbGzAwcEBtFotGI/HcHZ2FtLxoJ9WXkwv099i+tDjAKF88OtEPeTtYy7XWrAvxrtH7qw2a3rdAtFlSbPZVRIv27JVyI+kg3g6T7lVY3CtLCl4LOl/j8zHeO50OpBlGYzH41I+jsfOcN6ssr0BBfpbzBbyNJq+j9VF68MFTG7LvFQUa/H02glnLke1Wg2m0ykMh0Oo1WorV596eG00GtBqtWBjYyNcoyjxRGWhiP6TypHy3jaK+YwAVxeD8G96RbZ3TGh9mmxLGzQ1foqQJ38ZHCXVpdVBT6nv7u5Cu92G8Xi8gg8xANpoNGA6ncLZ2VnIh79JiyUe8uiiGIbnC0J4nWZsM2aKb2uRZi8luU6Jq0j8pPRTKnFfT+sflIvZbAbj8RiOj48hzy9PJNZqNdjZ2YHxeAzT6VTV8x4fowyek9KUHVuJrxjW5r6alLbMuFll8Lq4LdbKqQKjaXED/jv3Z6X0KTqC/h9bMNHiP1X6tKmUglfxqYsiN0fR8jke45uReFr6Oeana3V6fvfoTJ42NpZSXvqdJI+0Do8+9s4hTf6kuqX6iswTL5XVTTE9Y+XhFOPB0n2aL8P1kyTzXkrRmV57TtNLeJWXVaZ+S95TyDvWqXZbKltKW9bvScH1XpvA56uUJ/nN2KLMeMt6VSgmJFJQ3VIy62z7ugCExzhWWVfqO4Uxovmr2OFShooqDU1xlu0bdGSRUt+pu+7gT1WOA/1fS4P9rhn4qvhYR975fB4WW3FxZTgcwne/+13odrsrb8ViANHz3gzAzetvboustyk40SASOiI0PXdYMA8NSqRSs9mE3d3dUBY6VXgSQXNeMR2tl55urdVq0Ov14OnTp/CDH/wAAAB+4zd+A370ox/Bo0ePwtuxWA9+bjabMJ/PV66d0yi2cEjnUmrAhb5rKtWJi9eWPtIcKomXWNC1LA2HQ7i4uIBvfOMbsLm5Cd/97nfDDsinT5+upKXvIGkOnkQaDtP6X5Jr/hvygP3N5z+v04tvLL2J8p3iGEk6mdep4Qc+l5HorlI8YY9XTMcCDZQnj26wgmPIAy0zVpbEi1a2hyRHEOvxnnThvFQRgMRyJNm39Dz+XqRurGt3dxeyLIPDw8MgI/g7TcupigBJjD+U0dRTMFqgDckaa/o2G5Ikd3mehxPkdJOHl0/sfzo/PYst2u94mg5tHqaj/hueIDw+PobT09PwNp1nfuPVr71eD7a2tuDLX/4ynJ6ewscffwxnZ2dwdnYW6qU2SpLnsvP4tpLUfvqblB4JNxbSK/899dE+5HKI33kW8jhJc0e6RcE7husca253UJ6/8pWvwGKxgG9/+9swm82g1+vBxcUFjMfjcA3teDyG8XgMDx8+XLkpZz6fr7wnKNVJ/8e/vYFWayxQ7+GcxutyEed6rvYrqodpG7g8e+qwgqH8u5h/WgVRXCTpOexnAIDBYADn5+cwHo9DH29vb8OXvvQlePjwITx9+jS0j9okrR+4HiwyJkVwUiyfNS4SDo7hdw27eOrjZdDyrXpTNlRKabx2lvvSlk7n9XjmqORT4Ge6uRlPZKM/YREdD+6H3DRx3YJ/A1zqtXa7DfP5PNzaQ3m2MApvM5clensQf6MXqUz/WHMFf0O9juNKibcN5ZvGc7g8WSedtecCqD6k/Fm+ulQHl2ttbDx6j9sM+k8rl+NbqX+ukzx96CWpzbgRHuvS/ETedxbWjunAWBr+u7fdmq2wbGlR8rajTD2c75teg+Hk6QOv3ecktbXQm7He37zkNdQpACIFxFkBxSoFWgJSWtoi5VtptHq9eYrUnVqvlVZyViwnXgIXqVS1gquSvM5raj4A+aoZdLhj19lZc0mqP1XZx+ZUVaTVqbWvrKx5yqhCF9G21Go12N/fh1arBU+ePIFGo7Hyvujp6WkldV8XpQLLKgMzKXVKZIFRGiTkhI4X5j0+PoaNjY0VB+r09BSOj4/h/PwcAF46HDiX6cIuLvQiiPUGJzwBNWyn9h06vvV6Hfr9fnj7Fn87OjqC6XQq1u8lT4DDS1YQJcuyFccQv1ssFnBwcBD69/z83P0+rBWw499betY7TsiX5ISnBrMkHcrTatfYWWWm2miOGayTcdTG8OuivZiYjkeqvcBgEC8vRRdbgTpJ/1HnWMovlW3h9xjhAgp1mCnGsMaFk2TjtHS0LdrGG618/ncK0b6l7+p5y5R4wz7E0xG4MKrJSmrws4hel+rgNy5ImzusOmk/YZtrtVq41j9lnuBvdGNTnr88ZSnl5eOl8WnViXYX5RgDjd78SFpgSbLJHBfdNixH+ZOeDvL6CHRTlaTXsKzYPLf8dK4fOQ9aGfx3q/7rJMrDdDqF0WgEW1tbK88rUNvH2yhtYuLPPaRi8rLySXHrOmQ+Ja4k2UYNb3jqq6odKTxwzES/o39PJpOwqbPVasHOzg6cnp7CcDhcedpBqjuGW71xLC1dar958lD9WrQMmk6bY2XHnGNZqgdjssxxexGdFdO31m9andYCIJczqz+92IfbFc2HWSdRfUs3lkg4QPKltDgWLR83N9FF2JjdkuQJeS3iq2g6QsJf0njEdIvXTkt6T6PY9dmcH+s7S59IpPlq1ryTNohhWmt8i5KnD8viIS4//G+JrNiC9pn/nYrrPLgT/Th+6KLRaKz4LnhLj/SUREp/Wrg2hSxcoflOGmYvekjCwllFSJurmg0qKnOlT8bGSOsQS2lq5cS+8xpIDfgUIW+dUlu9Tqan/FeZirSRGmZpknvKqsLI3FYq0ibsC+lELDpTzWazsnvysf/LXA3BywTwgf4YIKNlIjCVdslXFVDx6Kyy5fMyGo0GfO5zn4Plcgk/+MEPrpxGTDltcN1k6X4cK4tSA0Ravfi71+nm6fFErJXfOpHMA9FPnz4Nb+YgvXjxAt57773wGQPQuNMUTzHg3Kfv7FqglLfLSuMhdAY7nQ689tprsLu7C/v7++G3733ve+JirAaUOU8a6FsH5XkeTqFT/TabzeCDDz6A+XwegDVe2RmTWQ34ewJYKXiHykGWZTCdTkMAgJal5fWQ5CziYlIKxUCv5LyjnkMeLJmhizS8nKJz3kvUzqboK56H9q/Em5RHC4hI6csQvTKd1iuVTZ3QonOZjzktJza+ZW0wdxJxQ4blH3mcOnTY6entVCqCwbz+F/YtP1WAdk068aAR9hXNo9l7bQwpn/gOWqPRWHlfTjpFz4OB9HRBEVoul8EOFMHUnqCDNseRbsL34fXzAG4RwnGVsDq1A7S9KXVxXcp1lZdHzHsbCZ9NeP3116HZbEKv14M8z6/Yf42yLFu5IeCm/Gq+MYMH9crGf2L6mpcv+Yzeeq3AZlH+tbIskhZ2+Aa18Xgc3rprt9tw584dGA6HMJ1O4cWLFzAajVZOTHt9cIu8uizF1/PIupc0LO6ViZRYZuy3Mlg0NT1vd2xsvO3gf0v5rNPcnC9v30lpr1O/Yd309D/nieMSKmfcR9baPZ/PIcsu36ZMiaNJsobj6r0dKPY71+sAVxdBNV8Yf5PsvzWOXO9ZN15qc5yXX1S3xPwiz1zj+b0+7Lpl3ZqHXpIWxGP+PbfZnvrKYnXtN0r0kAX1M1qt1koZnU4nbHYqQ5pMpMQAUuIhXFYlm4jjUubkvYf/ImUiecv29M2KF7zOiWl1On4fy2t95xlcLb+nQ71leduZ0gdl+rtqSuk3T8BMGjf+uzQptf5NMUSe9Led+HhosugtZ7lcriz+8CAEJy1gHDP4Ep9WelpHLG2ZecSdeCqffJG6SEAmpf51EI4RLrR88skn4f1YyoNn4eWmCIM+VL5xPHiAANN7KNVZ9eoayUkBgHBVLQ0G07GgABEDBPg3P2W0sbEBtVoNBoMBnJychDfpdnZ2wunSVqu1cm0TXs24WCygVqsFB0/SKd4+9DoEKXkGgwGMRiOYTCaBX62MFEp1SoqWjbL66NGjK/xTWaCfPTqRyxd3frWFHpSlmJzzU1wx3UvHkdpqT+AD4OXGgpht579LQRYNhLdaLej3+8HZmc1mK1cPW31SFHNI+WNXh5WVR2uRj9ahjQmVJQ+OSJlLVH8XmYNSHs6jpLNSbJkk21l2GaTCkz8AlxtZ6EK91+agLMSuWvfwiVfUo0zxxU1pfkhti23Akea0h3ePn3BTOGM2m5nBGoB03xTgpe5stVrQ6XTg9ddfh52dHbh79y60222YTqcwm83g8PBwxcfR5j7Hy9aubKTYHL8pKqPbUHfgBtG9vT3Y29uDyWQCs9kMTk9PYT6fhw1OHtmSxpkHU61yYnJiYel1YhAP0TaORiNYLBbw8OFDaDab6lMRNA8+cUHl11NfFTxrny37HUvjqVezK5Kc0Pksze/U/qiiDZbvXYRwQxXihdlsBmdnZ/Dpp5/CYDAQ88T64LbFZcryqPU76vHYtaL8My9L8zVjc8GDU1JjShoWT1nE4Po3FZNz0rCmpPM1+3qTtpTzSzfy4UY8jWi7eHk8DcDqJjO0tTS+gr9Zek2rJ4WK+FU0X8xOaPZYWvTleVJkQfLTpbkgzWFpnDT7wzepevxIza/39NV16OhYG/hY4/jR363nCTTfiH+X0v5U38cqEzfzU17xqQhMq12tzfNppNkP7lt72iTJjcd+WDzGYjoeXoq0IZZHa4u0KYDm0eRG1eBVKtdY0KcsWQ20yONkp/LnMQRl2+wJhEhKyluuxCsNGHjLi6XzjpukTD3OcQqfrwrFDJOmWHl+TVFp7zVSQt0gjZ9l9KS/JQVn8RhzRpE3K/DB81kBNY1vagg9ZIG7VN1VJA/NiwY9z3N49uyZOAb0xNJ1UKqhpadJqGPikT+LLPlJKVNzjulnDCjid4vFQt3hJulfCrY6nQ7U63V49uxZ2I2e5zlsbGyEq6fpNdR5/vJKIjydQ9/a4e1IkbeiaaV5mWWXQcLj4+PQV5KTnjonPLYjlTTwhgtPz549U3fjpoBDSca5o6fNA9pPXH9z3YqOjJZXIuv32LzyvP/IeeXOVAxTNBoN2NjYCKfS5vM5LJdLUfZTeECSxkjqY+uaKPo/r6+ovPP6OV+cZyTtGucyhPYly66erpH48pRnfRdzwr11ZFkG7XYbWq1WeDcUT/poV3lqZNmqGB+cqA2p1+vhZgQuY15/x9IREg+ewI31m7awWIXMxXhBeyu9cVmkfuw7vH2i2WxCp9OBO3fuwO7uLuzu7kKz2YTJZAIvXrwI+Ty+UJHfU/w/yv9tpSzLwgnwi4sL2NragjfffBNevHgBZ2dncHJyEjaXldEjFF/hZ04UK0p6mf/Pde91+6bW2GZZBpPJBCaTSehj7bQ5DTahHkd/AjeGYJnrphTdUxVpOlXzHTy4KWY7uAx5N0lJfFStV5EXxIqLxQLOz8/h+fPnaiyhaBwpJlNazIDLvtdGc6pKpqVx8PiT/HNKf0i/pcpjqvzE4jU0HdejGp/Ig4axLR4kXqiNlDCZVLfG2zpI8g1QNy+XS2g2m1duCqGk9ZHVd9gujANJT0p4ZVhKE8OQmMar36Vx0GQpRlQWrfH28peq4zj/1neavpP4pek038PrL1RJMVtg9TlvP38vmT5BUqT+2ByRyqFyw3WUFRPg3/H2ZNnlM1eNRiMcsMDvpVuvtLe6Y3ZQwrUeipXP+8VLVF8UlcmivlyMNB2Q5/kVjBbrS3Uxdh0Gxpps11F/1eSZoB6qqv1V9pnlUJShsgFED2CKlVGUD17ebZZRLwjG373Kjp6io+VKO+e0uqTTtFp6zzWu9GoybIsV1PeOHX/PDgDCVXaobIuQxzm3SDLa/DNvOw3M0p2PuDhHjTk/KXtdVHQ+4QlTDICmGvsqeJCI88BBIZcfCrxi/GMb8drws7Mz6Ha78A//4T+Eu3fvQrPZhOfPn8P3v/99ePz4MQDAygIUB63L5TJcI4YLDo1GA2azWalrQrxEFxRQv2xvb8P9+/dhMBjA8fFxSMtPYqBsx+b1TTgalOjVTxJYBtCD8pg+RedYQDB1TCnf3Kng/RrrW7QBKU5qaiBNKgM3bUiEmzu0t1esdmm2k8qlRZrDjzxlWQbz+RzG43FInxL0wKtYrbenOeFuW7QLaPOqIGwflQFpFy+15anla7eo0L7T3myV2qnpZexXyV5ybKMFV/jc8lKZ67Jo/fiPn+CTcCFP59l9TdvHv8uyy6u38jx3XbWF+RqNRpjTPAhSVLdhGQBX353U9J1WHs4dDAbhiWpcRKTPfeDJFmoDb4quy6eRZIJ+1vio1WrQ7/dhPB4HfRgjbcy0wBC9WSI2x7Q5K+l0a8f8dVBqvdg39KYW+j+df54rjMvIdopu9Fw/WYS8PnLRtmrBTBrY825Ws+rwYOQidViL9xsbG+FKRYrDtLnjpdscg+Gk2V6rr73j4OkHT31a/WXjdqllWBtKvXVbMQx+IhnnGNbJ7T/l/zbIHI91UewQ81c8ZU+n0+A70BO4WZat3F4k+dRldb3kU9LfKHnqoXJPeeYyZsUspd+pDyPZ9xgmjsUjsFwvzk8Zc8qjdgr8puMllBf6v0X8im5rs68Hx8fScYzHY9vShj7rFgSPn7FcLuHs7AwajUa4oandboebxbT6sVwqe1obaZxHknve9ipIilF5/S2tjLLkkQGPDac4Thv/tb0ZGwN9mjMGEJ8s3slRJk2MrIBYTFhjSi418BgLzHnbW1XfeZwVTFekPA3kxRz8Kuk2ADIA/3hYMomyTK8w5WODSp4CGi2oaVGKcuXgUmoTBz9e8sw7yXnBhUpPAELjqSrZkeRdK5sDOwpIceyR8LTYOskC8t78CDTo4nHsjVtLRq2+w99TABptoyWjXFengGoM+OJC6ltvvQW7u7swn8/h/Pwcnj17Bufn56FsXITFgDCtd7FYhP5DuahCVj1lUIcPZbTZbMLGxsaVjR/S5gwKeLDOMoGEFIrJAvKGi8gAoC4McsdRKi/FiZBkUOKd9x/Pp/3G+9hj+y1wH3O8Y22X+EDeqYzleb4yHlTutH5PIQ++pbxJfNMFndT3DWn52Dbr2mrer5hHCljwoAb9PpW4rHN5lGwwbyPNp/2ukZZO0h1UN0vXtWllaHNQ6zNrLkl84cKktmnNGpuYk2lhIksf8LK5fqHlSfIdGz9qpxCPpWAHy2ewZC3FliBPuNhK28mfwND4T8W0qfrxumykRJL8SMR1Al3kxtPH7XYbut3uypWpFgZI0Q9F+8Yzj28LSXqO3lRBZVXzz6S4RUxPF+EvhjW0+cr1zzp40+ry2kdJ3qge8cpNTPak/rT418qybB/6ZRcXFyG2MBqNVuxnzF+TyvXwqqX1UKoNTUljURldLPnS0m/XwVeKnGjpMY/Vn9JctvwnrY/4XLjNC7GSH5bneXQRhubHNDQ9J3q7BO9byY9IkXsrrYQ5tXHkekwr14rTeeespS95X/I2xMr3/C7JnXcMtPl43XohRrFyvDJGfV1JD2Bd1tz2+Jsp/Z3yeyxfnucwnU7h4uJi5WYS6fS6VAaPOVj1WRg6xmcZudDmeKqNTeFFikF402h5YrqO0toWY9dltGIgskx5AL6JUoUS08qosn1lJz3lI8W4aGWkknWvvoeu2+Et47gXrS/2naY0AFYDQv1+H7761a8Gh280Gq0s4nzyyScwHA5D3mazGfLO53P1HUdq6Gh96KhpAT2PoaPBdFontkFaUIzN9yy7PC1KeaUOo2T0LLpumYgRgnT65ir97bpOZ5R1OIfDoRhIBbh6ApVT0eCqx7B7A4yYBueO1O/cCaKE1wqjjsSrKf/kT/4Ems0mTKdTmEwmK3lwkf1zn/scbG9vw/7+fliEf/78OXz3u99dSYsnaGmbJR7pHC8j6+12Gz7zmc/AdDqFDz74APr9PnzhC1+AXq8H+/v7cHh4eOU0rzbO2uL8dZzyxT5A/nCxoN1uq/2jLaRg+4qewk9xNulYYkACFxEAwLy+3lsHzk266xHbjldr04AKLR8DAQByf2hBNPpGcqvVgv39/RDQ//nPf66esNKCD1VjUIuyLINms1lolyi2cT6fw2QygVardWVBiNrh1LZ4ggRF+ofqUIoFJH3PZYWOWYyobFiYg/Y7vjF8eHgY+q8KKuLwzmYzqNfr8JWvfAU2Nzdhd3cXDg4O4P/9v/8H9Xo9nDjVeMQbCKy2W5TqF9AgJ537/K0rWj7Vf6hLm80mdLtd2NnZgfv378MHH3wAH3zwwUrZqQER7VTXdWA37IdYmtQxwnG9TfgTiQePvbRYLODk5ASazSa89tpr8KUvfQl+8zd/E7a3t6Fer8O//bf/Ft5//33Y2NgAAIDz8/NSeJb2oSTr1F6+qoRtQDvM7aHH7szn8xAULKpPipBm8yXS/IUydeO8jJVJ+zCWnm/0QR15G+exRFmWwXA4hOFw6D7Jmxro5fli+jFW/jr61grqWvV6ZOkmaB1zWrP3VCel1k3nWkz+LMwn+R+3jRAT4S0ORf1Ei1Cve5/ikPpK62dqN+mNFPRzigxYvkfMN7DGuMwCUxm5ofaFj23Z+ajFFqRyPbrsNlHMN/GMp9ZmK492ErUKor6ctIkJryvHuF273YaLi4uVpyOwHN43XBas8aY2V0sTI2lOa3XxeEtsDhehVH/RG9/laVBXS2sXrsXYMobI09kSpYBsrWxvGipU3uCCxZ8HTMWMhrdOjYoIpTZW3JGQyk8Fu0UCC1a9mrLV2qGVb/Eco3WCNU3eYvMrRlQJb2xshNNy6FSj0sRFG9yNLgXMOa+0v/FvyyH1zE/+vfSbJ6iqpeN8Svx55mdMZ64L3FgOROw3fnXtbSEOROlJWDwVFLve1wMqYuml31OC0dJ8oQsBHv0RA5XHx8eQZVnYSMGDFRcXF9DpdGBjYwN2d3fDqVoK7uiCmZc8ATvKM09LT+Lh27boAOLpF6++o7pfm7OSPfPgC8mOWXqB81tkvnvArwX6pXwefGVdVx6T/9R5gfXFAifcafA6VXSONZvN8O4nfRs7JWiojXURzBCrO3ZKPeY803GU5gHy7Z0Dkh0ugp88GKAMvtHaY82fGM8oo/i2Yuq1kd65IOXT8Mvm5ibs7e3BgwcPAODlJrUydsXDr1V2yjyI4S3pu1qtBu12G7a2tsxNLhal2BL62dufVDbwiYDJZBI2OuICFq2HziVL10g4WvOxyvjvUnmcXy2N9LtGUnBIkwm8wQPxwWw2gzt37sDe3h7s7e3B06dPwwYWT70xuyjx4pV7rx+QShq2T/FBOB/4j25y8/hM/HuPT5ZqL1L7URuHov4NtZFa3XwOx2TLKpP+zuvS7LC3DVWShh3ocz6U6CZg75zyktWXvHxtXCS/IEYpslkEJ0lpvTYoli6mv6XvUSfE9KbGS4rcxsa0bH5Lt5epdx1kYVSv/2Lp5JhP6MUj+H/qfI5hLQsraVgxhuuL4LvUfub8W2nodykL62Vl9bbKfFGiuCVVT1XNh1Qux1eWLGj2A30MWheNFWA+6VasMv5SGczKKVXuJGxVVHZT4gOx/JY/xHUQ6uor2MhTaYqhlSg1qOulFIVf1En8y0brUsbSO6EWSUKdqkxSJ/irQKkgR2oXLnrgVQcAcGX3DNLm5iZ0u1348MMPIcsy6Pf7Idi3XC7D6TstoMYJ00mnSiS5iF0xQhUdBmekt8fodQ5I6DBiWbRdNHjdaDRguVyGk1seukn9wg22JN+8jdapt9tA2A56hXKr1YL79+/DZDKBp0+fhjbR03waxYJp+L+0003jT0rHd7TzxS0cG3r1tfaeEq1jNpuFk1F8jsznczg4OIAsu1x4yvMcut0uzGazK/UPBgP40z/9UxiPx5Dnl1e3ttvtMIf4VUWUbwxueec+7xvapl6vB3mew0cffQSf/exn4R/8g38Q3sPgFLPl2I+YtkrdXq/Xw8aUPL9clMlz+V0XDoxT3gTm7fAQd0w9ASIr+DIYDMK8433qIcuJkAiDd9optVg9KTLYaDSg0+mE0+WLxWKlnFTHo0gQQnME6FuFRewIfYMS5dPiG+ewVCd1HFIwGC1PGk/+7EFRR09zYrUgTRH8JOnho6MjALiKa5FiQaRUonnQvqHN6PV6cOfOHfjmN78J29vb8P3vfx8GgwGcnZ2F3dJaUAr1POeXzkPu3FvX1P0i+lUpzj495T+ZTGBrawsuLi7g+PgYBoMBPH36FI6OjuCDDz6Ai4sL6PV6AVtiXdYck+YmpevwY67LV6K2h9NisYCzszP41re+BX/2Z38G//Jf/kv49V//dfhrf+2vwcbGBnzwwQcrN/lwojKN2Bc3oErvIHuuJZf4p//z78vMFa+v5SVLZ2rpaR0aXq6KqtIr/z/23qzXkuS4D486+7l793TPxhlxZiguokGRhkABpiHBhO0/bMCAPoHf/WbA38bwowE/+dG2LFiSLVuwKFEmRYriPpyN0z293+XsW/0fLqI6TtyIyMisrHNvj+YHNPqeqqzMyMzI2HJL9fVjdXqoHEmmeOwrzXcOIdU+8fICz5OeykF9DtRZ6GvH3g3KaeJl4/uQnSLp59zIZYen0JdbRmObSvJP+i2V77mHPdRXVkCfl4P/YnfrU9+d6gNpB+Gu7R0rJhBaGEjbxdsWtM44ZjGOEJJBnvaxTqZBn4xeoQUg+2eh+khyNkWG8skv7ufQNFh/Ktet9tDqINVxlzbYiwLOE5S3UmIENE8JqbaEllcMHavVClarVeU3AFyebsljZkVxeSIb9TEwP6lMT7yTynGepk57aPEQ6VpAGlPLWV4TkNqaxt8RVyZjUxRM7krlNrw9Cjwmz+uCx7gLDQbJmA2l5+m0AJj1vZaXlZ6XyQ1sLb8YgaC15U0NKml0WX3CjV0UcChUj4+P4datW7C/v18FknB3GgaV6OQMD0CG2ooaxprhFRqjUt9rwlv6ngtzeh8SPQZKClqigdWEEx9jaKXypMYb12nkxQL75uDgoJpoxR2TNKCMQQCcmNfu5aT/a4hx4DA9p1d7rz3jv0PjnfJmWV4eL46LDHAXO+ffXq8Hw+EQjo6OAACq8d3r9aDVasFisYCyLF33OfGxLdHpDRyWZbl15Pl8PofJZAKnp6dwdna28wUDvD+p7ON3qWngssoT8Kw7BiX5FfMt56069zADbNscmqxJ1dnaWJbkOMDzo9j5IoJU3g3pICu9Vn+ui/BoXC9Qvw+HQ7h9+3b1fDwew3K53DrZQqIv1C68LK7bPcE5Kpe1dtZkoSQzeX08/C+lCclfrAsd/x45L9HreafZRZJt0+v1qqOovYECLM/SdVLQif7P7Uv6LlQ/gKv3Z/MgFqUDZdF0OoXlclmlwUVYMbzL5RK3kUPf4ndSYBCfrVYrWCwW1YkVZVnC2dkZTKfTSj9r7dIEPLxZ530OGiRIfivK8sViAU+ePKkWoOFiMuQPPraxf5BfaLBXksmpNqBUhxcBliyWxpcly2L7OqaNPHEQaUxL8kGyI1Jp57wq/bbyl+RP6rjz6oGc31NZxq+M0ewOKQ/pmxy2sYeW2Ho35TfnkBnSWNDS8L+t/HhetI8sfzAE6VvtmUWjZLvhO82uCv3tLT9ETx19H/JZrN/0e+tbasdRn4DaZSnyXaIjVI+Q/V7H3q4zviife3RgikyJsUljacZ88bmEXOVeJ2L6PtZv8toLMWNOSk/5AMcg+vkIXLxAY/uesuvYPByp/OJpH+m3FyFbNYedRMtJwZXJ2NwOg5XfdTgnXmNQ+i4mrbdTduWES+WGntFBH7sCgSvuOkCFJq1Kor81Bf6iOMFNgQccaHC33+/DN77xDbhz5w689dZbMJlM4P79+7C/vw97e3vwwx/+EN5///0rq2EwX+QPS8jh0ccA27tRAeID8lgXL1/R408Rm81m6z5N666Nsrw8Fi3mntibiJBBwg3r6xozlJd4AKjVasEXv/hFODk5AYDLXT0PHz6svu31erC3t1f9pju/KTx1S518l+qh5YdtzuVkyIiiQL5crVaw2WxgMplU7zBPDAjjs5deeglef/11+NKXvgRPnz6t7he8desWTCYTePLkCQyHQxgOhzCfz03eD+nTFD6aTCbwwQcfwGw2g/F4DPfv34enT59e6UvpbmBveZJDoqXBwC3ey4tBYLy/EOD5/bAh5wzTeuEx8qQTBni9QmOb1pXeQYQLG2g6TCtNSIf4gcv7GIdey1t7Jj1fLpdwfn4OvV6vuldQAuq7VJlI20mjl9cdf+NuRlxQgjuUvcBVsG+//TZ885vfrOTAH//xH8PHH38Mt27dquyBxWJx5W5pCtpHkvxKdeQsW47nF2tD0vwku4WnpeXtSgfGBMk83zYF1E14YsJms6nuOKc7qnFii97PHALKEFyxTY/TonZbUTzfvTgYDGCz2cD9+/dhb29v6zQUlFWxMoXytxZotOQaHQeU/qIoYDKZwGQygY8++mjLBtjlHZCSPZWC3Hzn0Ulef/2HP/whbDabyk44PT2F6XRa2YMYqMIFepvNppKzuJuA2k5/n4GLOehOHx6Qt3hB0hc30QfXAp5e8GA5gH59Aj99IhaxMu06IMkX7b5buqCHtgutpyavYgOf1xVjo+UjNFnc1KSHVA6nSaIzlB+i6XgxjwGEJuYoJBuT8xbNn/Mp/o02RR3UlTWhfGl9Qv4XtUEsuYK2WafT2Yrh4WlbfDLIMxml2b3atxh/02IkIUjt0cSkC5ZDy8K2STk9DPOkNmkuGaH5bVrcaZf+RhPILVtz6BNN/nI+4b8xLjAYDGC5XG6d/jKbzbZ8eTw1j+8sx7Iob1l0huoa4p9cuIlX6HnhaRPzmOIUppOElTQY6nScJ7gSG+jT6AyVbQWR8G8rYJWipHMbRB7HKgaaMEHHjqehNEjtpZ13rrWDJ9B1E51DCVrglhvxVlCRfsOft1otuHXrFhwfH29dKo336mGwiwMnfygtXkiGTCroOJf4BOtA76rBADQ1wCXj3GtApfBSXePAy/uSc8HTpYzxXYH3AQaGO50OdDodODk5EY/NCDlt1riK6c86QXVaXsiBiqGD5kkdzLt378Lx8XE1wdNqtWBvbw/efPNNuLi4qHbV4pixaKb/czq0ukjvqJPMeXI6ncKTJ09gPp9fCdjkAgYdAeRjqBDr9braMcydWamO3vEVYxvQ5yHHl+oFmp7yvZb/wcEBDAaD6jgqPJ7dsyJaq4/F33ynXSjfkLPI3+NEOY4F5H88xlcKFmrygZYp6Q0LUh088kMLSkrf4fG19IgvvmAKA6R0AYFUZsj+l9osdWxaPkIO55fmx/Pm73ibaH1kved5xtAWakMMgqGcvn//fmWn9ft9eO211wAA4PT0tOIJz9Hf3vFqyaUUaP1L2zhGpjaBOnUD2N79S/UdtVklvSrpE03/SuOH82iusaQB5WsOm8b6Dtuy3W7DcDiE09NT+PWvfw2vv/463L17F/7yL/8SZrNZdUSbdH8lpdlLjyaLQ7LgpoPypOZr0ueSHW3Bq8OaApcdCMuWTS3HoxskWkJpJB9Hk9m75kfJvuS0cH0eYzvVsSvo/970MfZcCm2SPotBaDzVscUsaHpa+h1rE/PnUvtY/BUqm38TE4fS6uj9Pie8sT18zr+JtQHQ3kS9TuOEmh2t6Q/NnvP4Q9JpRjTWobW/p189Pq3lM0jl8/gAp99TtkQLbUdKS4h+Dw9INqXWN9ely0OQxrnGbxJo2hi/LOS3h+RPiDbOb7iJAoFjlPczXSAq6VyPvE71ZWm+KTrJU27M2MkNy3fj6ULlm5OxIWcqlHmI+VMax/uNJuBydYjV6E2UlwMptNQ1MLhTbuUnBQz4UaOSoxMSrLGG+E2FxluSoejdfdVut+GVV16pdhsiBoMBHB0dQb/fv/IN3c0QMo45/SEHxCt8uVJBgxGBAefBYAC9Xg8Gg0GV93Q6hfPzc2i1WtUqPylYSVcUhQy+XSLF6ORIMQR3BTqupfFbFEV1pC4erW3lg99oaXg6y7Hx8AAvS5tkigkUeMcK5VlcGYfp3nnnHfjN3/xN+OCDD+CTTz6Boijg6OgIvv71r8OHH34If/mXf3lld3GovJg0mg1QFJcBXC6zRqMR3Lt3D7rdLnS73S1D06NHvLTSnTKag7VcLrfu3BgMBtBut4PHx3ocfomnvHrL+x134jRaAC4n7V999VV4+vQpjMdjePjwISwWi+ApGZKut8YgvsM2rBOw1copy7I6xrzb7VaTkI8ePYLJZFId583z4RPPFm2hwI+EGCfPC5SLnFc5cAfhYrGojqHmNNDJjlCZWvvU1VNcR4XaPsbW4+XQwI6HPtouOfWnFfxAWnG84AK6n/70p3B+fg7L5RIODw/hq1/9KpRlCR988EF1lL81GeUNUnyGvJDuDy+Kq/co8v9DQUD6jr7H/1N3avC8LdDxRJ/R/1OBbbPZbGA4HML+/j48evQI5vM5/PN//s/h5OQE/vN//s8wHo9hOBzCcrmE6XTqypu2mSbXy9J3hcNNRSh2g3d0cfsU7SS0KaneRNsth/zQeNoTc4pF7jy578JtWq+Nw8eN5APF+Pk54NWNMXEZbl9p+cXGD+vKt11A88Hr0k3tGU/A32Oroo+WEyH/V+IPGhOIGbuanySdKsTLou+47tXyvy7QPuc7SbUTlELgEzz9fl/Ufx6ZZtkumn3Ar8eg32k8FPK76dizvrV4k9fL8kVoHNvrQ1rtqemEJviwqXxzw9IT9B3tG+mO1JAPxtOmIkafSvVqt9uwv79f/Z7NZpVPT/NFG4GPo9T4u0VnKI+bKDMRTfN5SF+Zk7EWtEa1go05jSNNgGrGnaREY4PqHhpyM7gX3rpITr6Vp+RUa/lLdzzRbyUFGRJ2OKFAv7GgTdzG9uVNh9TeCCoUcWdMq9WqLv1er9fQarXga1/7Gty9excAoNohBABwdHQEjx8/hp/85Cfw4MEDALgMZKfcb0XHI+7Eoc95nej/HPwuPV4OdUx7vd4Vo3Gz2cBoNIL5fL61I1bjKX6PWSxieEobk3z8WPJVy8fiEyl902PBIyORv/FYxN/+7d+Gz3/+83Dnzh3o9Xrw5MkTGI1G8P7778Pp6WnFk5TPY5xHyltYfijQL8l//j3PIyTvMJ8QeNl0EhZ3D2OwBtvh4uICHj9+DF/4whfg+PgYhsOheJwktiG/y48jh+HCnaJutwvz+Rzee+89uLi4UNPXhSTDUD7xOzVp8BeB99Fhu8e2k2W4avKNvufpJVhyg4976W5hnlen04Gy3D6CVHJwNLoxnUf2YlrNZrBsEjrZUJbl1oIEKS9aD41uC5KswDxi+ZUGTXBHsucb6X+UA8fHxzAYDMSFVRy8T0JHlNdBKGDIy7H0hhSgsaAdX1xXz1+Xs4llob4M6T6NNmtsUVlXls+Pj8PvcEELlS3UBwjJIS5L6D+cTKZ0zedzePr06ZWJtpBckeov9ZvXd+D5cL+H+jE8QMptN639c/MS9R+8cpDWhx4pTd/HBGRy1Gm9XsN0Ot0KSg2HQ/j2t78NH330Efzt3/7tFX1F2329XsNkMgnGDOrQe9N8S66fPDKYjj1cwEN5iPp2vBwpL40m+tubX4huq1wpf4+NrpWj6QKNl2L96BAdoTw4PPoqdbxy2R5rU4Xee9vDop/3g+aH54LHJgzxkpRWSq/V1/JxJT6jdrRHt3J6PONdqo/13rL/pTIk3Rprn4f8fYnOWKT4DLw83u4SjVb6EF38aHHqI0h5eeoU8rdp3nxSlvMClTd08ZBWv9QYh6SzrHfWYmar3WLkQR1bw6PDdunTxCLkz1k2Ps9H0gu8/tKiRs84DJUvXWnA5e58Pt868VGS2fidtiPbQ4tULwoPv6XIxtA3KXwoyWvNxmySz7U2c0/GSgK1SYKl8izGp8805R9q6BQj3POtlEZTUCnKOKYfLGOqzqCU7gbR+ooHH2ha+g3ND9Pxy6k1UKeb09ME36YaUZ58OTRDVBIsvV6vSrtcLqtdQu12G772ta/B5z73Obi4uIDZbFZNXB4cHMAvfvEL+O53v1vlhbvTAOT79Gj9+d/4z7pfwmtca0eJciOn0+ls7YYFuOSds7OzykDDukj5FUX8StCQgSSNvdBvqZ218mIcSUqLREMTvByiB+Cq8YfB5S996UvwrW99CwAu+Rh59uc//3kVbEMewiNlY+SYxFsh49cyxjUlryHG6JXyQqMMA+S4k5QG5nEy9lvf+ha8+eabAABXJmMx7/V6XcmKEGKcbfoNdaZoPebzOXz44Yfm97HOvGVMUievLMtqAQt/R4F6qN/vQ1EU1RHGsaBBDl6vGKPVksVWm1BZbjnARXE5GavdpWrZV1Jay0HWbD+A546/tjOJyjT8Rkprjc9QUIKnx9+xY55/x/kwZScClyOdTgeOj4/h5ORkazLWO04se7oOpH7yfmfJ3RQatN+xoGPlOnQowGUd+GQsDVhRe4zSHMoTdQqC7ihHPY0+AOcZLDt0VDKlicsJnhfA88lYfudxqB89/BzS/ZodxoMeXAbRRS/0GzqxiWk9NocELx9rx5ZpwLJpP0tpvHxPZR/vewpLriKvo14oyxL6/T78/u//PvziF7+Av/zLv4T5fL516gXyFfYD8g+VjzF6ONXWazJ+grDkkLefLNvJe/dxTJ130S5WuRat3r6OHadWeiq3NTqssrVvOY976pZL10rvpXiNx07x2GJa2hBCsiiUZw5etnwd3odeWix9J+3g84wJLY3UH7H+Lf/W6/+F/KPYsiR+4NeAUN82FinjKzRGpLqGZIlWH/wfT0/Ak4ZCtPDy+XM+/iUbictBD5+FYI1nqxytHpq8oDawtDMRFzpqfVGWeU7jkOiTZAhvg1z8nFO3p/iOnKaQbW+ls9JL33j0Pfa1Vd5ms4HFYlFd1Ubz4zxIYzx0MxWAvkknBpotQZ95ZAL3ST3jMpVeSd5oaSzE+Dk8fwnuydi6gYW6RtB1BDY0aELX6rxYh+06kRLM0L5BAcB3efD0m81m615PKX9UZHRlrgYa0AnRmANN9KdkTEn1ApB3cYZomk6nMJlMtia3MZin7YiRjOpQ30urpnNAqnO/34e9vb1q4mB/f7/a1StN0DXt+HuVvfRdyFnW8q+DmyCXLKMTefOll16qjk7tdDowHA4rmeAxaCTgdykGfawTgvRZ95SG8qCgk2Q4CYsTqjhOnjx5AtPpFD7++GNotVrw8OFDmEwmMJvNknfApY4fzJPvYlwul1AU24H/WEdA63t0IhEvv/wy3Llzp7pT7te//nUVmMU2fPnll6tjP9EIXi6X8NOf/nRr5y533EI0I33Y/7GB8VhwQ5bfVdjpdGC5XEJZlnD79m1455134ODgAM7Pz+HJkydXJua5TsKgrHb6AToD0pFT3rvHi+LyWO2iKKrdTB5QGmazGTx69KiyIzwGdyhYEfpOSuuxsejYoA5ELHBh0jvvvAObzQbu3bsHy+Wy2unsCbRhnSQ0oTMkOf4i2dBNgsvOsrzcrf7++++7eLppmjQ+1Z5RvYXggTjkBdwh2+12YTabwQcffADj8bjSF55jO6ns0mSuZUPzb3Ic+5sKa+ziBLk2biQfzDu55oW3XVNlG+L09BTm8zn8+Z//Ofzyl7+E09NT+OSTT6pTgHq9XjVpS4OblP9CoH2cGhjaNY/kKi+kB7Sd0lJgNxc9dXSiBznoprzFg8DaggZaZg5+C10v4YHV/6ntI/lNKcF1KbDaNE9404ZkS13ekvKTyrT0WYi36Le8Tt5YUyq4/PC0lyUTeF287W/ZvjSv67C9NDShx9EGQ3+uSUjXpwD47DYK7kdpedFn9F1sbEcqH7G/vw/9fh/Oz8+3rpLhVwNIqMtbFr97eaUJXZ6KHPwtyYqQ7Ag989JW16/tdDpwcHBQ/R4MBrDZbODs7OxKvIbHvmL6OyUemmIjWLzVtK2n0ZODz710Jx1TfJ3OvoY6AjOHQ5WzTTSmTBm0uxSekjFMV8pTGqS/0XGQgM6EN4DapCO4a3BnQxJ0Fm9wwwUnsPBuOZp2vV7DbDbbEubeYC0H0kzvK6srlLU6IXBiDvmk2+1Cv9+HsizN46415eEx3qxvvAJdosdyQryGpbc8nk9OxCpRenwex3q9hvV6DXt7e9Xdpq1Wq9rVYAUerT6mgVWeT4xDLfWJZvDzPrQMO06/pBvomMB2ogbYZDKB+XwO5+fncHZ2Vk0+4sSjVrZlWGlt43HSKb10xxA9/lfLKzQGpXpg/linvb09uHPnTuVgPnjwAGazWZV2tVrBYDCAt956q8pnPB7DdDqtjlHWaIqRc/S3pN/qjEfNVrGCpnt7e3D79u3qKGbqFEs08wC+FKih98ylBgaLoqhOO5hOp0FHXar3crmsjuS3dqB58vTINYsWz7c4Njx08vJQDhTF5WT7Sy+9BOfn5/Dhhx9uHe3ptTctGngenrEaqodHR+W073L5Cbuytak8W61W8PDhw60j5nMDeTakCy3elp5rOlriAbrKe7VawbNnz7bGiFeuWL4BH0NSWsn+1OpRR357fB0rHaXT0uNSOqldYmzbkM2SkoeWZjqdwmKxgF/+8pfw9OlTWK1WcHp6usUvkt5DPWAtZuV1iOlPjx10k+Cx1yT+0Oxcnqf1PqaNUr6R6KF0STqsab3SRBma/EktS/Nr6btUaL6EJausvFLbWhrzli/pBR8XIf8kB0Jl8XShNGX5PHZCfVEqT3PaYTRPznPoH4X6htLolRGavgv5v/RvrdwmbUKr7ZvQO6gr6WSs1B8hf0LSGVrbxuQrwdOXKYht3263C/v7+zCZTKrFz1Z+obaJ6Xtt3HrbJWWM30T7R5JZHn9lF7wi6Qqt3VutVnXiC00zHo+vxO8l29dDi7f+qX6/V394fE8LKbblLmU4QMJk7C4CDViOZnCnGEMp5Wr5UTS9El0LSqUIN74LKQSp7fi3RVFUOw/5lnkpPcDVOuGOGfodX/UxGo3EOwQ1mmMH3674OoQYAYZ/WwZ+u92G5XJZ7YAFAPjGN74Bb775JpRlCY8ePYKTk5NqJ+m9e/fgr//6r2E0GgHA5d2reOQpHmmqlckd2phdCto7yQHkgRN+nxgvd7PZwOPHj6ujHYqiUI9gjVVYFlIVkzfPOtACKk1AkiEIyRjt9XqwXC63JlxWqxXM5/PKiOU8ELrf16tDJB7j33O9lEN+hILIsX2Dsr7X612ZlKWYzWbwi1/8AqbTKfR6vepZaKdsbnmJ9A4Gg+qZJdskcLlI+wd3wSyXS7h16xZ8/vOfryb2Dg8Pod1uV4Yt7qKhx1/iEe8//vGP4de//jWcn59DURQwHA4BAMRjiiX7RTM6sa4p7Up1uleGYPv0ej0oy8tgNufB4+Nj6Ha7lV7HiVRrRwfmz8tB0AVV+D+/jsAbTMKdTth3mHeqbUThuaceacX2D7VLCNypisVms4HlclmN3cePH8OPfvQjOD4+hldeeUWtg3VPsMdhlfKU0ofswhA839wUO65plGVZLRwZDAawXC7hD//wDwHgUlcul0sYDAZQlpe7Zum4sNqR23D4Py7Y0fTjZ7gE3RmMvlGr1arGJV30pI0nyzbhcpIfp2/5zXXAg5lIIz9iP0ZOIFB20rJ4wFD6nwLb4Yc//GFFEy5KoAu7MC3m0+l04Itf/CIAANy/f786+ULzIZGu2F1BNJi068Ckp0xaX2tsU1sD9S/tl1A5fAct9ddjbJgmoLVTjK6iMjOkz7kfRE8NCcloBOVlqy6S7Aj1VdO8inY5He+0HTCNFpzmtGpptL+b4rPY2JOHFildav9ofgr9LfknIXuuCdQ5dYLSrC3wlmwd/i5UBp6+QBd44vco7/h1QLvSA7nKkXgCY2ihWAqF1Z8hv0+qC+oqbROP5HNofJxbHlDeQ9k2Go1gNpvB3t4eHB8fV3XA+AIu8OaLH5C+3Dzj1QUc3njaiwIP/ZaNyuGJ+UhpQ7qO5jGdTuHBgwewv78PR0dH1fPhcLh17HVZXi5CH4/HwTpq9EnxGYkmLY21wcaLXDxm8XusPs6J6MnYlCBKCkJGsScYiH97G1gaCHUaPeXbGCEXYzh489Ho0ZwJNEJoUIAHX0N9JhkxGGBFp88LyWEPGfE5+bmOwox1+KxvuINLJ1cODw/hpZdegsePH1fHR+O/6XQKDx8+rOqBfYt3JGplWsaVRp/1rZZWypMHg+j9Zfh+sVhUu4BjaQ3BIy9i8/e2nUYHf245XLsODvGyuRxDWYJ3cuIRxIvFAlarFaxWKxiPxzAej6/IFj6eY+vo1W+WY0qfeZx/z3i2ytfGhBToArjc3XlxcQGTyQQmkwmcn59XuyBRVniM9LpyU+JTukM2p1ymZfV6PTg5OdlylinfcF1G78oej8fw5MmTSmdpRynxciV+4ROHIbnqkZlWf3FdjnoWJ+s7nQ70+/2qvjip47WbpLGj1U+zXbTxhwu+kDb8H/lWsj14OZwuLa1lM2pBMYA8Docl2z0yjI4bvFPz7OwMzs/Pq53xmFeKnIsBLcdrj+WgJzSOvPZLKI1HPubSrVJeOBGCCyoePHhQ1a3T6VTP+fFUGl3Wc8wn5EvlsqetAFSM3+MBtolHP1t58PRU9uM/7Uj2UNAtJNdi/PJQXpZs9qSpEyPw6Ajtd1EUcHZ2Jh7HxvsX07fbbbh79y60Wi2YTCYwHo+v3EGcC1we8rGUm6+byktrU3wv8RPnixx6Jfab2LzryjGPnpX4wZLRWh6hdyG/mZYr1SFUviVDPHTmhtWPofrSdJYsvu46evoFQJ7ADY1Dyz6g+YZo8NjP9LelY3LYFan5hOiW0qN/2RSfeOSU1b+x7cDtJEtfWfxlycWQDZZCs1Y+fW/xcsjGp+kkmYrpyvL5ArHDw8Nq4TldfOO9x9PTDhYt3vx2Kc9i4PXzLVixCppGep5qb4dsPEtWc+Aplrh5AMHvhqV/Sz5GTB/H+A43CVJshyL0LNbmTInjJB1TvEvUuWQ4tyDJceGxhZSAUM68Q6CKuNVqwd7e3hUngpc3n8+37pGTdlx1u91qV1ZRPD+KEOByl9azZ8+2jsbwGqFNIDQod+1waDTs7e2p/Hp6egoPHjyoVvRRtNvtakcFliEF5K0VaXWcWUtYeoza5XIJo9EITk5OYH9/H8ry6s4QXlbOACLmGVK0sbCEO77nbXRTDSkAvxP4jW98A7797W9Xd53eunULAAD+63/9r/Dw4cNqtzPA5eQR7lCMkRGWoa/xTE55mjN4LQGP6p7P57BareBP//RPt+4I5fRYi1+aNra045JDCNFFJ6nweJfhcAiDwQC+//3vw8cffwzT6RQAYOvYwv39fXjrrbeqdvnJT34CAAC3bt2qjj+n+s0TnAjt4qaINQBj+4fe0/75z38efud3fgcODg5guVzCd77zHfjggw9gMpls0Ys7h6jRz3e7UCBf8XHDf3P7AhdgrNdrePvtt+HWrVtVcAOP3P3Vr35ltkdRPD/ajO4WD4EeDYwnL9BFIlpZWI8ckOwpL9rtNsznc3jy5An8n//zf+AHP/gBvPfee3B2dgZlWVYnZuwClqzHd1qb3mTktkNTA0J1QBe/aHYX8jzKAU1nabailCeml2jh8kIKKtDfnvHGy/QEESRbiso6uuAPQD6+b7VaiScSUbkk1TM3NHuUtp9kE6G/hTqRyozY+2XpeEc/UJKbXJfwnXIx5eH1FXyCFWXg3t4e/O7v/i4cHR3Bw4cP4b333oP/9t/+WzDvmxp08iJkI3PeR37lwWXPDmEp6Km1H13QpI3VpvVCbOANQJ/0l97zWEZqWU2gaTmklRkTXI/lB49fZ9GWA6F2zW07WuD8zQPz1CbwQLJTc/m1mJelL0LfSr4HT1MXmD9e+zMcDq+0S9N9uwsek+wWCXzSh6fj8UO6e9RCyF4JfUu/85ap+SmcFuRRfhIHt++08rrdLty+fRtms1l1MiEvXxq7tE4e8Lgn7Yub7nNdBzR9Y7WVtAM8JS7M/TLJj6G7XtHmLYpi67QzLs/pAvyQHYj/pFN4JJq0evA6aNiVLrTGTmw/eWHVfUtqxBjoqfAoi9C3Xuc7xkiLrZtFi9W5Wpl0gOfsdF6GRq9WptVGtI2l/1EA0JU/NA+6u4jeKdfpdLYccAzQe4SgVf8c2IUjSMvi5XnrZfH/er2uBDiOeewD6R5Ea/LAMux3Aak8GkgCgK1gPH2fWp40bvnfEj110JRyCJXRBHifUeOYB3dw0ozfYzwajbYMEH6ftMYTXsUb8z6UFmWfJGdjdFoqUBYgbdhuKHNxl6HkmITa0ypzF8FlrQxLV+CKQjx5YTabwXg8hk6nc2WxDwYC+v1+dWQ7AFSBeJzg1qD1e2x9PAi1BU3DeQLgcsfwwcFBFVQYjUYwGo0q/YCnI0gy3+MU8qBPDHBBAcBz/YWLiSTbQqo/rTMN0mgI0RoKSGj5pb73AGnCXc77+/uwWq3g7OwMJpPJ1lH9dccn5yXO61p9YmRJKOCSarffRKT2P/Iyncy0Fo56x6AWQLP6N6V9aX6a/tG+i9WfOfley5+nTQ0e7hqaDgrJuJiAoNTXHh9a6zeaB+d7LuulOpVlCc+ePQMAgJOTEzg8PKzedzqdSudhemvxqYQYnyDGZrXK8nyXImu08W7xdeg9zx//5fDVvJB4Q/JRvLYc5snlbExdQuNDKysFTcWbUr7PRdMufFmvvMtlH2IaL//xfHksL8Zms/JNQaweDrVjU3LC8oklUPmF6bgO8eblBe3fFPuG931MjITzkZVGKk+LBcXKWKn8mLy0dvPyOLdDqC1C2xXTLZdLmM/n1dVING1o05dUV94WEv1NxBZ29T1AnD1Txw/xlBnjA0lpLVvbG4NDrNdrWCwWVQwfT4bkvke329064bIOOE2xspx+q30fy7upNkgoTmH5pzntjK3J2OtQdiFwIZObjtgBmIMWzankzOdJ1xS4QgjV1VIiGr14BCn9jTsz8Rs8WtY7GDVD4iYGP5oE3a0lCd/NZgM/+9nP4NmzZ9XEAt8RS7/jx4ZaPJhybx/nfVo234GAwJVofMWOBDxyE9OEjpSMkYWc9/nYTVlhar2LlT2WwbALWeIpsygud8Tzvry4uICPP/74Sn3xyFJsd9z9zPOk5cbQ6el/j1OGkIwjgOe80UQ/hOjs9XpQFMWWrNDy4bt+YowjLc8m62zJhPF4DB999BHcvXt36y7Ew8PDyjlC2YI7st9880147bXXqqOFcEJwNBptrdqWaJHe0eeSkZ5ab29aTaYCXI658XgM8/kcAJ7zyWg0ctkBNJiKz2KNba0dcLfsL3/5S1itVtVRrHzBlgR6DDdNG7IPrHGEfLxLOWphtVpBp9OBvb09eOONN+CLX/wifPLJJ/D06dPqBBJtJ7fkfEjQxi62o+e4Zi7/PNCOfPPKEkn+piBWdoWCJ3WB8mtvbw8Antt+3I6iwIUodX2qXfkjVvmfFoTaEfmfX/0iybGYCYBcfmyIl+h7uoiG50VPIPDoUDpxh74jthP6j9T+ovlMp1P4T//pP8Hdu3fh3/ybfwPHx8dQFJcTsfv7+zCdTreuN8HFWKgbLbpSgKdt4Ckd3tO4kL5cQVOvTsN25gteY3UipseAIgYNpZO0vMghm7h+xDxD7WztNtK+57aEpy+lOlpxEPod/f+m2C8WeLuF6mjZl5LdlmPsUB5JydfDW6l+LQfXIbw9uc+am1di+ZzalinyLtVnxXiWJIt521D5zW0v3HjS9FgLtQt974k/WH5AKA0itLjGGo91J480eSid7mfZzDStdToSXZyNOg1tBzwp5fT0FFqtFrz66qvQ6/VgMBhUi8SlMqUTWDg8PqxE84tsQ+/S/wjpfm6LW+8tWDu2pWfz+RwWiwXs7+/DYDCobFPKh51OB27dugXT6RQuLi6CNHDwmA4+k+yjVNxkWySXzrXgOqY4hYAcRFvBTc83dWiQDNw6eTZpYIUUqRYItQQ0QgqSosNklcdXYEh3ANLBjPniro31eg3T6bRySjUnRVK0HqFwkxRQaNJESgsg9xM9+ggnGjabTXXMWFmWcHZ2BkVxeYwBHlfAFb6XX2n6kBC1lFioHO+kFTWIJpNJZVyhU+/heQseWmP6M6Z8j4zQ8rEc2abHgiZ/+DukcblcVrtgR6MR3L9/v3KG6L2xoTJy0InPPbrI6kMpGGD9zmmQoDzGICOtz3XJwbr1o3R7nRBab7rLk6fB3YPvvPMOvPrqq2IQF4/P5XLJMqC9Du8u+4TWfz6fw9nZGSyXyyu7zIvi8vgbPKpSq6/mhOC7mGAazwP1GABUAWD6PsZexDpJzhP/O2QP5RirmjxMAY73i4sLuHfvHjx79gwuLi7cR4B75FhIj3qD1jmRUl5MG1syJzaYldK3oaAYDXhZzjzneQ8tWt09No80fjif0LRacFijy2MT8vag5YTyxbR4Yg9OdtPFgFp7o46gE1Yh3avJG1qGJEtTA1Mh/wkDiUVRwGKxcNn5qYEVa/JRG3OxPgLPZz6fw3w+h9lsBgcHB/CP//E/hkePHsHHH39cazKwDrxjQJMtUh+k2JghXvX6rBbfU3lF09JxJd0DvEt4dYtnbFs2YmyZkt2i2UE5bAueZ4wfEZIJoZhUTPtb5dPf3Ab0xI0s+kM0SGXwNuRpUmWpRp9HNkjfcVjyJMaelfQPL8eyF1Lpp+95vpqM0sA3D7zyyiuw2Wzg0aNH6n2OVtvEjCfpmdUumo1elvKJKjxPr97wjCX+jUQbzcvLV145kGo3eccEPqPlSDtmAS75Bo+YBbi8WmE+n1/Rn7F+Tkimch7g7z3Yha+XSw42VaZnfMT4zzG0lGV55dohzwlYnsVzsTR5+SDkC9G8PXKe6/OQ/6t9x6HpHolW7dsQ7QDGZGyqY5cL12Vwe597laWnMywFmAOWorecLMlIxB2Uof7hxzdKTi03hLvdbnXe/mKxgPv37yevtH3RUNdRwvbBXUwAUN3zhUcW4iTXRx99BB999NGV8vmdQJyuUPmhZ5bAld7hBDE1XC3jEv9utVrVRD5ORmvlphoRnHc1pI7jXLz+oowZbE+cRMB2e/ToEfzgBz/Ykg3r9XrrHkuAekaBlU/dAADmwfOVVpml6BTre2xTDATjUa8YFLYmZ0J18t63EqK7Djxl8wlXbUcoBvzKsoTz83O4e/cufPvb31bvF8U7Xai8tWjUHN3rxmq1qnTzaDSCDz/8EA4ODqodwIh2uw2Hh4ewWq3g9PS0eh4yjq3nMTyBC2pwZ5JWDs0P+1NazSzJb+oU4/tQYI3LGytAZeXD6+H9lgLrWpYlzOdz+Oijj+C9996r3vd6vdo8mGKPhZydOmgqABArr67bX5KccS0d/o+2UkzQzNIxWrCABnz43zRPbsfF6GANlL7lclldhSAF+aS64bFfZVlCv9+vdhSv1+tKB9DjoTnoHboem9ryNdFGR+TUJ5Yca7VaMBwOYT6fV3aXxeupp31gX/HyJZuOynXpmxCoTEK78/T0FF5//XX4d//u38Ef/uEfwr//9/++2s1002DpnhzjRiqPlsXLteS7pe/xHV9YRRd8p+6QTZXHnE5PPlgPXAwdu5vLYydqYyKGPpqe9+OL4isiOL1W/I62L2+LmPGdg6c8vt519FGML6fB2yf8fahNuN+cyz7g+Vt5WSe+4aYGtBN++7d/G9brNfzZn/3Z1g5MymtoG9TxESioLObP6f9cb3I7yPpWshktOy5UD64/0N7i39DvuL1Jn1s6SLOtUObGjK1Y3pPK4WXiiUYAAC+99BJ88sknMJ1Oq+9wco3atJ5yKb2e+lA+uck6Ydc6KxTnidXDCM9JUp58p9NpZZ+3Wi24detWtXgU03A6MTao3R3L7Qxp3Esyv25dUhEbl6TlecZIrK8Rw6PqZGyMQJUIiEFIgUv51R2EWoOG8s1piEhpYh11DVw5SfXlg0Yy8L2BQsyf/tPQ6XSqyZWieD4Ji0JJumPBo2hDPJvTOW0aFi9ZfcF3LdGjXBE8wKDdCavxRswzzanQvufPNV7S+Fniea29Qo6A1eYSpCBFCCEBT9vKGluhvuIG83WD1gvHPt4DWZZlZZjiPZH4zWQyueLEaHwgtZfEeyHZptEtfZPazt70Xp6U5D59Jp1UYOVTV99eh1Ev1Q/vPp1MJvDo0SMYj8cwm82uGKPL5RKePHkCt27dgldffbW6T3swGMCdO3eqHaQA9RcA1PkOUceOwDE4m83g3r170O/3odPpwHQ6rYKioZMw+N+xTqr2Dv8/Pz+H9XoNg8Fga/xbfBwbsMFgAKbHvKkzI+kOzcaSghxe27nuuEPdj+0lnQxh2XscUl1ogIGnpe/r1EOiIzbQLdUzRFNueeVxylJkwHXrc97HNJAD8Ny2DN3pjsAxKMnUkI3D86Hfd7td2Nvbg/V6DavVKmgXUJ8CZQHWC3UI5sGPDcZ8YoM3qfwRkvVan1j2r+U38vchSDJVai+en9SGXMfw96vVamsCXaOzLC9PwKBppXI7nQ70er2KZ+jOFbyqQJKBXtC8iqKA4XAInU4HDg8PYT6fw/n5eTUmQm3N28PSSyF6qO3Mg/dSPpzvY/1tOsYwn5TAmoYUekLjM9bGkfhZql+KL0C/C8VKYvOl33rbICXeYsl5Lo+9elyiW2rvXH6OBo+st9oWafTYEZiXp/3r2qshGqxvQz40pyvUb6lygvMYp80ao9RnAHg+Kfv+++9Dt9uFL3zhC9U7PPnv8ePHcHZ2diWvGFolWjTaLB+JTwRpd9vycjx8Ecs7VGdL1+QhbVJ9Y/Svlgf+r9U9Rvbx95K9U5aX8azZbAZlebkAaW9vr7I5KDR7Jta/5WlDNmooDc8/pz+i2aTab+ndrvyjOnpD0nuYZ6gNpHcor6bTqSjT9/b2qhMG6Tfa2Od6x+Nv5OYFqY6hNB69wZ9r+fD3sbakB66dsU0ZKDRvy1jlaT0ICZKQY2vVPcYI1+Dp6JiAQ4gGypTSAOX5eh0R+lxarSR9j/fxIPr9fqV8yrKsduvQoIzUlppBbrW75fg0yeceWryweJLfV4A7ieg33W53a4cR3VFhGecefrRo4wJaChLwPCxnXBOyVhm0LOm3JXClttDqG+NQWwazx1GXlEgduZUbIT2CCwbG43E1adDtduH4+BgAtukej8dbR5dL49fiIa5vJCNZgubQh/hGU/ypxopEp8bfaGBx8MA4z4+XE3JCME1I7sbKV69M99KCYw13NeHOprIsxcnYhw8fQr/fh1u3bgEAwNnZGQwGA3j55ZdhOp1uyU38lgYQQzR7ZKoFq01jxn+r1YJerwfT6RTOz8+r551Op5qMtcrh48gjr+k3/D5iCaenpzAej7fuNQd4fuKGJM9xxxpNE3K6+YIwfhctHxe0D7nDzGHJliZkc6/Xg/39/S2Hn9MXa+NLcpU6cTS/2N3/Hlsvpp08zruWrybvLUjfSO3rlYU3yR7V6kHHblE8v2sb5SDVQ1wuavKPypTQ2PC2Ubfbre5MQjtDOqaeynFKB06W4VFy9Hspn1h4fT7pGw28z6TxwGUX98O1enn81bIsqwC0dKy8RKvmf0u2vQR+2oeUL/6Nd2tZeXa7XRgOhzAej2G1WkG/36/0ymKxqO6TtRAa7ygri+Ly3ufhcAjD4RDOzs7g6dOnW4tnQ/XH/uJB9hj+ojzh/RbrKC2k8PI0He90XN0USOPHM+5pGnpXsmds0XJC6TiNu7Y3aJmx9n7IZpTkgZZGy9PS9VK6nJDaI7Zcrwz05mfRaPmUMWWH6ui1sbjNQNvC4+tY5XCdx/ML3SHKNzYsl0v4xS9+AScnJ/B7v/d7V2Jw6/V6azKW1y8ETqckJ1EHcF3O8+HvUX/iKWQckm6R0kh0SnYWBbaztIGE2pqS3Uj9Ni1/Cs7L3C4Npbfy5XxJ8+X3D2MMYr1eV3bScDjcmoylOrzO/blS+4fGnObDeOz2phDiI06T9F1qmR5ZY9Eg8VFIj2v5a7oW25+fHoi+y3A4rHwa/o0Ug+GyVzqlRKJRGsOhukh5Sm0fGo/SAlCeN5cjXjvCQoxO52mTdsbGEBPzzU0yvGONyZsGDxNIdfQwIg1Co7ONwJVhdEW81q94/BAeH4bf466jVF4KCcybxmcUllEYyoPmhQEDbFucgOXGI0eqIEoxsrni1pSBlw4skwZkuPGiGZIeR4inleoY015UWfEghhbYTzEGbjLK8jKohX8jVqvV1sQQAmWPxVOeoBHNw2o/zxgMOSXWatM6sAwSbkBZDhR/Z+XLj2ryGPU03XXAkqdeR+fjjz+GDz74AH75y1/C48ePoSzLysmmd5lK5TaFHPlbdaYGerfbhcPDQ1gsFjAej8XJfMmYTdEf3DHGiR6NRk9wRvsW4LINer0etNvt6hhvXPAR+hbg6tE43gARhcfZ99QN09BjHq0yc0MKanCbpq6+8gSu6h79VJeHpTxi7bpUePiEBrZeVPvhJvtnXN9bi59CetcKZnr0bkz/anILr/ugRzKH+JvKItzxeXp6CvP5PHonqSTbJTkTi6Ioqp2v3/nOd+Dtt9+Gl156CbrdLnzlK1+BZ8+ewdnZWWVDXVxcVEcGeuvg9S1ibETqK+Fu4F6vt7WAyPo2JojJf3uCVruScTH6PnYsIJ/TncHc1pCg7ejNEVPjba/JBE43TYvvpYDkTYFkW4bGmxbj4fWjC4W0fGJ5K4TUfHLrZ6/ekBDjJ0v6IMaX9th4Gg115VCMfETdSI8nx/LX63V1+gI/nng+n1d+FeaTej8551XqL9Ex7pnI8xzZTWMAKXZyCPR6GVoOX5AkxZapjODvLJ5K4TcOHhfh7c1jDUVRXImd0w0JrVYLjo+Pq12MnkXLOWCNZStd08jRRzcBdWzyUEyY2ijSeF+tVjCdTqvFpfitdZUfL0NL10R8M/ReG+M56NF8MfQFJBsvBpw+dTI2JbMcCt478DWjwuvMptInwauQYpyGXO815uRHAnnpKoqrKyM6nc6WAWJNhtHycDKWfrNarWAymVwpI2ZgoSLnzkeTsHgshv80A9YTqKV54G5L2o4p9x+hURETJAjtaObppTTad56AtmZ0UuXjkRvS81TjU5NpXJEirF1WknIO9ZE1Bq7buJGCR/xeWFzgEbr30OvwWXwQK2us8mN423ISYkGdMHrMrOWQeYOGOYMUofIsw5W/02iSAk6efsHdPMvlEh4/fgw/+9nP4PHjx9UiATyuUoNFz3UgxF9aG6HTiHfFdzodWK1WatA3FKTlwfwQXXwy1jNmvTxKA5cYHNlsNjCbzVzf5oA38Bdjp0lHB1u2iTdf/jcPnvH09F8KYmWNFSS6Tmfe48w2XRZtS3rk2y7sYwu8X3L3D82f2sZexPCvFiyR7ATa7iFd4UmrfetJx+nh32OAlB7RjOB2AQ1U4O9+vw+DwQAuLi5cNFntSNvTo/8l/UOBO1J++ctfAgDA06dPoSgK+NznPledKjAYDKDdbsNsNoOiKODw8LC2bKO0afl48sc8ut2uqZcxLZfdXj2J/9M+0OxobxnS9yl+shcx/ptUT8xDozfF5gvRYdnAVn6ct3jded+EfJkYePz/mBiBJAvoO0uHSfXy1O26/WJv+8TmZ8VBPHlY30hjRaLBGu8hXRfyHaTnlr8XKsMqh/oPkk2M8U2Mu6FuXK/X0O12tyYYuV6l5YbsYNoe6O/zXaIp/oVH1nl5KWa8bzabKz4MjWFQm0UrI8V2stJJ+Un0Wfnyv6lvu9lsqtM68PlwOKzSzufzygaTaMsRV7LGjaZPPLZYiv6y3od4KUbPN4065Wt+rCX3kBe0U/Fw84tnMaFVlmRXh9o91XeJ4dcY3SaNd8suojLPI1c8tiGi1mTsLhDjKHi+9aT1NGwsYoNKTcOrlCzgYKY7ZbUgBxoIuGNjsVhAr9erzsgHgK37IDWavH0T69xdFzx858mDHu1RliXM53N1tYvluMSmS6WXH5VK+QMArhyhoOVjGU3SszrHfOQcv7hbmdJFFydobW/JNO04UZoXVyBNy6QYpxcdCbr7Aidh0XGJ5cldyVyPocQRG2Sx8uF0SODHKXqNMfr/rnVY7kCVZETxo3jxGJef/OQn8Ktf/Qq+973vwWQygYuLi0oucTmCKw09NN8k8LsQB4NB9U6aaMY0s9kMZrNZJbc9TiwHl0OW4bpcLmG1WlUOKabRgizUYaS6LMTz6ASjrMFyPCshJd7KNcY9QLpxMnk+n8NkMqn6iO5uq1NGv9+Hg4ODahHdZDKBxWLhyjd3W2i8RY/NRT3yGZ4jxr7zBAH5EbTSGMXxgGMQ+YWe3oJAXvXIBou2srzcudLr9eC1116D2WwGk8kEHjx4AGdnZ9UOR6RZWtR2eHgIvV4PZrMZjEYj6Ha7UJaXJyNoR3ahDOLtS8fILuUCwFWdhQFPKuso7fgtLoyTfCwtKBmys60TaqTgnoVQcIqn4fevou09m83gpz/9KfyH//Af4PDwEE5OTsxy2+027O/vw2q1gsViUdueLsvLU2I6nQ4Mh0NYLpfQ7/evBNZCOgjrJ+3MiZH9deyZVN8Rx99yudyZPZWqoy3/WgLvk5T6WTzG86GTMTch9pQiwymk6xB4vk2U+2kAr7dkz9aVXXXykPQAQL14jbdcTS56yuaTH+hL8pjoYrGA1157Dd566y1YLpfQbrfh3r171dUrlBbM1yovpm4x8PZjk2MK6cY7LXnfoI6j8tPa9CPlLU0m8jQA/hgJ9xUBYMuuounoM6rnaDoJdBe1BIk3rP73xhc9eb5IMY8XGTFjLeb0mRi7kNuXFk2aXG8SGl9L4zyWHq8dngLXZGzMAM9hQPNGkvKMCSJ4hY5GSywkBuTlhepkCdYQg3vbRsvHI8ClYCe+5/Wgyo9OthXF82MacAfSarUylY3126I31Ca5hEQocBUyYjxBBfxN86NBFT7Ryb/VjBeOGN6nY9YjH/j//I6u0Pf4t3eM03R1HYcUSIJfW03JBX7K+JbS87GZooxSINEvyXjKE2W5HUBH2RE6go3LIyxPokODJ7hH6+H93hM0oPIyBSHDyMs7McGO3PDUP0bWhEAdKACoVhWfnp4CAMCDBw+qNPT4V02+estsEp425PTzdkA9widccaJLci4Rmn2RYovRMujkMbcttHpLupPmzeUQ1lcK/Fl1SK2fN40GHgigshMnovhdxtY9wCHQ45zX67U6QR4T0AnBq9/p77p90iR2pXtDNKTao/RdyObnuh3/5wFh6Y4h/l0MkA4M4g+Hw+oZnTDkPML7ptvtwmAwqO4Jp5MClGYpH/q/V5bwNvDAGnOS/ON2sNa+mAYDo167wOKNOn1qIcTLEn2UxuVyCYvFAs7OzuD111+Hg4ODK/em0m/QJpV8rRQURbG1kwr/4YJET51QNi8Wi6QFYnzMpcrOuvEfKc6QG5rNUFcvNWkva3TG1oEe1euRQ6mw8k5t5+vWm7lB/T6AuPrF+EGSHx7blqE4T4zPpeVRFzH8nOqr8/JoXtS2WSwWWzb37du34eWXX4Znz57Bs2fPYDqdqvEZTZdb9HK7i9sgPH0dGz3VhvX2vUQ75eWisI9e1uqOzyT/IVZW0T7z+ChUJ9PvpWf0qj+Aq/fiSvR5bLRQn1K6tXbxjA+P/e6NHYTo9OTbFJqUZVI5u04fI+dD+iGWBi+f8Tz4eLDGbyoPSb6eJ71WnjgZm6qkc6JucCqlU63vJeQyClMYLidyBIZQeXA6pdUZ9F4buoJsNptlXQnHjZubgFyCezgcwvHxMUyn0+roLIDLNsTdIEVRVLsvtaACfWYpcQ+PoOCjdz5Y9NNL6uv0vbYSHGmisBxYCdr7OvJFAj9axkOHVmePod1UgMMDpFu7C5K2Ae74xmCZBZ4XTiZJ7zg9obzqgveJ9jtUdgpdmmyOzYP+H7PqLla/7IovqaG2Wq2q4/Ynk4l41zQeZ4iB6ZuMOk42vsdxeHh4CMPh8Mqx99a39D47i0aqm6x7PpF/O53OlnHN70Xz0EbTY35audJzLP86ZWgd0OAQ/vZ+s1qttvhif38f5vM5jMfjSod5ZG4svVrg/EXFp6EOu0LqRMmLPD4B7EUkCG+ggX8rBf9yAPVGURSVvpxOp9UR97gLCP0UXBRi3fUmoSi2J0K5/YT14yfsePnh/PwcfvWrX1X3xXK9T6/QCPk6HqCfdnFx4bbV0M/COwv39vbg+PgY7ty5A++99x589NFH5n3rCO4bxizUqasHeXCd26o3afzG8A8Pwnsn07Ec+lsb49JzSx5gG7fbbeh0Olv+N55usStIdOdGqt7YJfgkmgTP5MR146aM09TYNV9sVKc+RVFUixV/9KMfVcfPdrtd+MY3vgG/9Vu/BW+//Tbs7+/DBx98AO+++241Kct1IQJta+26IbS7N5tNNbbn8/mVa+M4tHtIvfy2C75Ee0Ly9bDeKXR4rurj7WzJZDqxqtlb/Dv8TWX+crmEs7OzahEWvu/3+5X81mJ/qGewrTR+qetHcZ89No4Vwosg864LWt9xm4Omz1Emz5e+o7ajdTKOND60OQktLuONbWljMMSjofbiOiIXn4qTsVqn8mfe4FUqYgPo9LumjQMPQ9VFrEL0BPEtxzvUplJ6HDRavlyo0nRUoYQmDGKD+buaiE2ZZPDU0RJEnU4Hut0udDqdaqcWVbr8eCKr73nf0L/rOsQhB4MeO0vpl4IrngkzKcDkEdwhxcbT8zR0DPB0Eo2SwY307sJJpXTsAlY/8J0l/B3SaS0m8PSVhdSAZi6EjBHP9yGd7UGMAZwamMqZb6g8T15YZ8lJog6q5CBb8uc6UbcNuY6mR2/h6RUhR1ZzVmn6UPCJGu5WWl4G/57LVeo48DpL+sdbrlbvXQJ3Mu/v70On04FOpwOLxQJWq5V6l7uXZtqmaIPQo/YlxDg7Fk0pTr7FZ3VtG6mcFFwHr3h1qMbjFNT2BLAnvzyyGP/32nxelGW5tUjQSxemR3ubLiSlabTfTfvIEmL1kjYWqF2Ovz3tz/PjY9fKk+viOv6g9S3alLR8ulMbj1/HCWNeruSj5ACeEDWdTrcmx6Q+4j4D3nk+HA6rE6dofWkeoYWvMfxpydIcNmJOWW2VnWNMSrYkLYOmk55rtFnvY+mmNhX9F+Jn75jz2GqSzOQyWfOLvHakVX6Ttnqq/c15J0Svp72kfD3fhPLTvuF0aTad12fX6LbGbOo4TpEzmm2JOmM6nVbXqzx58gR+/etfw/7+PvT7fdjf34fDw0PY29uDsixhNptVeXKfR/OBJFuDnmiEz6k+1Rbw17GtJBmi9SXnE6u/PH5YyF7wyMg6cQ+PrxJ6xvPCEzJCp+RpNNK0IbnggWT38P6U/OZY/Zbil2pI4Wntm5sS2wGwZadXJ2jfx5Rn6WirX5ui05tOk6PePq5rJ2p6pvadsU05lanMv4tBo3VmrraoqxTrlOWpA9/14i0T707odDpbd9PFIKfjxPPcJWIEEFXIg8EA7t69e4VmdMBHo5FqmHh4FA0BSqcHNLjhTQ8AVaAY7+7iu9IsRWCt+qJ/N8EzGjy09/v9K5M7q9WqMsatbzkkx+emGA7UKJRowhXaCFxRhatUO50OrNfrrfu4NMcMJ/br3g0o7dCo46hoCPFkqDy66xfA3s1AnR+Pc4N0eWRFU+2S4xvLeZV4Et8NBgNotVrVSlSASzlFx+dNhqcNOS9wucXzWK/X8PTpU1gsFjAej7faUVsJie9oAACfYfkemYzjGxEKEuHqYH7Mk5SejnEaEIkBXSXsrVOOsUNlK70r9tatW/DlL38Zbt26BXfv3oW/+qu/gp/+9KdwcHAAnU5H3Pmt5c/HS1leTs4fHBxs7azx5EX/156l6moecKQ7Ca5rp1UT8jEVWnvyCXopWCZ9j23a7/eh3+9Dr9eDsizh6dOn1U4G/KctAsAy8Bku+uh0OtV1JXg0PE6kpmK1WsFoNKp8D5Qn0okkSCvWcTAYwK1bt2Cz2cBkMqnqSK9Y4TKT02othPAGpptAWW7vCgrJMMnGt8astPPVA6of6JimdKMNJLW/5YsgTy2XyyqforjczUTzvri4qCbicwRgvLJgsVjA+++/v7WbUhqXHn+LjkPav1KauqenpCDULlLfhvLR/t4F0AehMk1KQ+0hT/1oH+FvDy0AzxdoIXDCf71eQ6/X27qru66eTAnue/OyJi94+/A03gB2DtTJL4Ye7dQ5LUBOYZUR4y/GIAdv0b6U4lvWtzHPU4HtL/nj3/ve9+BHP/oR/KN/9I/gq1/9KgAA3Lp1C770pS/BxcUF/PSnP92yKwCu+uFUF1I5QoGn5eFd9/T75XK5daoDpfu6YucauBxHu5Ke9oD2G9qL1k5WKf9coGNF2m3s9XMpnZIP7okvUhp4/hzIq3WBfBqKI9D00jsuc+rIoJyxJMRN8ukkcPqa5Hsef6c2Ob3OC9PweBO1Rzmdudo4Nb4ak2dqzIJDnYxNZeS6BEmMJCkj67tQWk/5XsUuBZTq5p8TvDzNoJXeeYMEsQLKc9xhrsHinXyIQcw3VoDGyof3FwYLBoNBFRxAodftdmG1WlX3WQFs71iwgtcpxpGXL6Sx3G63Kwew2+1WF9iHeNAS1qE+1ng/pLTwGymdZxxrzgf/zVfo83Q8KG7lxfPhQepdGBKSfNDkDm9bHlCzJg0430jjnuevBYP5u1j5nCITOM1SP9XtL4/8kQJ9njFF2+6mgbcr/Z/+rY07aijSo1k/TdCCXdTRBYAtR5eOSc9xhppNyINoMeNNSi/1d4ohHrJtNDnh0SVeGiSaNMdVS4tHlfX7/WqhE8ob5G1ehxh66C5Diw+8MpXLE4snNJnmrQftszo+Qkq665KXKWPMm64oiuoY2tPTU9fiBy5/i6Ko7Fl05Kl+x/9TJiNwsvX8/By63S70er2tHY9SntheVO7hJB7yvzTRQsv2+KSegJRVN+sdrQMdU5Id77ExY8Yat7kXi0UVNLUCiiF5K5VBf2snrWBa5DF8b8lt2lZ14eVX/Id3DWoBWFp3rPNkMoH9/X0AuDx+fzgciosYUm3VHLDyo3aH5BNZPozWj7n9+5Ct7GmnmAUmdfUTlWE8OLrZbCobYbFYVJO0lvzWyvHSY+VnfePpe8nPD/lRHn5sUmd7ZL1kc1r18tq9Ht5KsZGkvtLGsqccq+80PyDUXxqNFn0xwDFHv1+tVtUuWfQnW60WDIfDakEUfifpZxzD3C6S2o3bLaH0WpvwtkgZy6H8vTQhD1kLdDSeiI1veOrhyc87xrTn3J5J9VmQlpw+ieWDW88A7PHE2zS3DVIHVvvdJDopLLkb8602bjWelPRnSF57/Zq6kHg+ld9y2Qe1dsbmYD7J4ZZAHRVevoVcA0NyYCldqXnuEp628wj7uoFpnDhE8KPONLq8uGnCMBXUmOt0OnDnzp3KeVqtVrBYLKDX60Gv14MHDx7AaDQCgMu2oscHajwaY8gjeABKctysvhwMBnD79u3qNz/WLkQf5h/iB/7esxPIk49FV2w+AHBlcgNhGTohg9ha5diUUxmCJbtRrlL5GlqwwXnMuxLQ4/SFxkAKL8XoKo8jSdOGeFRqe248flpkZip/a9+tVisYj8db6a5rDO0SVIdMJpPKCUbQHUOx44EHBurIU423AXynFFiwAiD4fheoy284MYsnk6AOT90JtV6vYTqdVouq8LoEgO1J1VjnyTMRk9oW0o4wL+/VCYBIeVloMvCbE3QstFotODk5gU6nAw8fPlSPKuaTAtim9KQdnCzFBQQI7RQUC5i20+nAfD6HDz/8EAaDAQwGA1gsFtDtdtX8UN7hmJnNZlCWV3cR3BS96QmyoQzDE42oLY8LjuhEeN26Uflyfn5e7TRFhNoyhgZtgoIuQsH+pHyHE8RNgPO+Na7p8fhFUWxNxoYmrfD47EePHlV3Fe7v78OdO3fg6dOnMJ1OXXbLTZA7mv7OGYhLBQ880uC4ZkNLk1C9Xg8Gg0HwnlY+EREDWibKYxoTQLl2eHgIh4eH1Ukwp6enrrtjc/UDrVuoj6Wg8i70adM8l9K/dSeTYr7PoQu0CYGYtrX83Jw+bAx9Gh+iTqF3d0q+UlEUsL+/vyVb0EanO9apLUPtJ7RTeKykKIpqYQU94YnT4NH1VC9dt46gE7GSH8bbuQl72opjUX6wJo219qbf8HuCEdjXUgxI0p0ckt6SbFvrW9q+lA5qb10H3+Ts7xj/8CYh5DN7+dHbb5wntDIxTYot4/1G0zNNI0dZ6mRsTPDfE5yyDCyLWWjnhRQGzydnZ3A6PQxS19CIgWfAad+kBLw4f0j8IgW/tDaz+E0KgnoMiJyI7Z/U/uTGJT3yggY9KbR2jaGBKk2p/6Rxao1Lnkco0ILHJsUYBlrZtD4e8HFt5Su1j0c+UR6mx/hZ4wjztGhJGbvXYTxwg5mv1gSAK7smJGh95e1vqa8s48Sj3DUnkabngTkrPwuUH3CcWPX2OKnUgE+hrQmHR4Jm9IVoteiT5Bq2w2w2+1TuiI3FfD6v5BadnJR4i0+0xBwRy8cLfybZAZ58JJmhfYeBSJRFfCI2hF06AADPgyk4kfX222/D5z73OfjmN78JFxcX8OjRoyoYn4KQ7W+923VbcBpy2/91aEmxRXJAs82QJhyvqY4yzbOpoIvHv/R+n8oX3m/opD/v97p60uOT04V4kh/lsRclGxT/D9lAkgyX0qYGWGi+vJ7cNqfPJf+Gg7evZ9Gnl+5YX8x6p/kIMfTGtD+mD9Hm+d6CR1fz8RTyUVNolOrIYw6UhzW/TcsLQXfae2DZNdJzKx5m6QVqX1u7/1NglUvThHxe3hdNy/Um4LVjtZgMynraRyH71gOJt2L0hMfP5eM8h78ZEw9IKdNaPBTS9bjbvygKuH//PgAAjMdj2Gw28Nprr4n04XUN2mkgtA6aj1WWlyc74eRur9eD/f19WC6XW4suvDIj5mSSphATh/F+a+UX0sd0fGp85ZG99G9t/IW+5c+kCTKL9z3lxMpMyW711IOn9fRvTr6UYn8pNGh2uxQTbAqW7xCyYTT9Q/OS5B9fjCC1oVa2lL9UF6k+9HmoXZvgdy94vuJkbKhxLMMnVtiFGtLa8SQZcTmdJ83QTxUKmjKtK0A8hpMnjZW/t89D+cYytlYXafDHIsZx9QqwnKC7JsuyrHahSEKvLh3ccOSCkwaltYCABk+Ahk58hIwbT35e2lIDJjFlINCYp0fU1B0vtD80+YTteV33gvCxggsLeB/jbgANoUADN4yl73PC0l2e8jWjwvpecnAtg0hKJxn+sTLkOpwxvCtG00WSPUDfSeklYxHbYj6fb6WzcJ3OaZPAdqBtaR1/jzKN7vTh762ypN9SIIRCswdS+BnrKt1PJOkiWiYNVOwqyIf0zWYzGA6H8A/+wT+AL33pS/D//X//H3znO9+BH/zgB9WJGbGg9YitE5dVnjEk5REDzgdIw676wqLrJoD3J//n+Z7iutv1JoLbyKnOfsjHkfxGyuupPMePNaTlSvlrfrEVP4j1PSmkNrBsQp4PleccKPPpYsHruEeVQ9IxFNSuDi1i5W0m2Ygp+iuW32JtNenUIM2+rQut/p6xpdVL+gbveee7ny25wOnR+kuLLWGbaYtekd+p/ZMTWttyu16qD5cv2jcxffAiA/156kvjM2tsecZ3bJtpvBaDOnLW0j1SPESK34XaReM/Xi7nS/wOZdivfvUrePfddwHgcrf6rVu3rshtXKih7XrFvOmR7hrwmpnBYACdTgf6/T6MRqNqMpa2B5ezoZgFb5cQco3BEH/SHZp14bVrpDTcDtR2D6be26rFNSRIY9TzXQy0Ng+V/WmGpot5HK4pO1Maw1LZEg2Sve+hE/nAG+NuSi54xi6m89LRVF+Jk7FahSzhFiP4LAESE/S0yktpLMlo0crXgo2cRv4sZCjEwttunIbYwJqUl8ULHnj5QEsnOWV1ypbeWenqDkgrKEDvzLlz5w4MBoPKOMPjRzabDYzHY5hOp5VhxQ1zL0J8zIMemuPD+Rz/73Q6cHh4CO12G+bz+ZbTF9M2XkdVokEDN55DeWqODqVPo5f+ppPPljNtKQkrIKGVvWt4xzQGCbQ21PRRjB7w9LHE0zH8WEf3SBNdUn15Gfyoa42uorg8fpbubozd/dk0H1F+5Tu36PvQ9x7E2Bt10rxoKMuyClzzYxw1uWLZBHQxjzSOJcQEd3ha7oxrMpLnMRgMqvR4FYC2g0WzvZpyqrxAOXp4eAhvv/02nJ2dwSeffALD4bA6stWj7ySZhkdiXlxcwGazgfl8Xu2c5t/E5AuwLWc1+yIEavugzLDy8vJeHdykQITVntj++D507FSr1YLlcgllWcJkMoFer1ftwMBrSCz/RBqT6/W6OiUF00gThCFodZzP55X9rNmHVNegvXp6egrL5fLKEb8azyLowjutLA2hdzGBEQqUjYvFAvb39+Gll16CxWIBy+USzs/PYT6fby18ksDvoPRCOqaRPg/J0lh5INkMeD/fTRmTFJwu6bc1Ls/OzuDnP/85zGazanFjt9u9cnS45I9of3uQIuNieJ/HXTQakI5ccRUNmt9lyVa0Kfb39+Ho6Kjy88/Ozqo7W7WyaB4WTfRvS/bis8ViAaPRqJqw2d/fh16vB5PJROSRugjZcNTf5e3B2zuUl6brX3SbXhqnCJTbNIYEoE9O5bRNaLwi5pvYtJb9LskxXscYvqkbO+InVWD/YPxuvV7D+++/Xy2kwatfULdSHwz7k48L/G69Xm/Jefqbt12v14PDw8NqzE0mE1iv11t2Vu7xr+WTyn8x/qCWxiNPrZia57lWjqRnJXuS/82PAuY00LpJfnCIVz00cLstJ67bf7YQo0MoNP9H4i1eVhMI2Sk8LecN6XvpuWbHhXQz59PYcRoqj5fhtRmpPsndP8E7Yy3Fh7AGuOd7SwBYeUkGp9dYtWjzwBPM8hoAdZEjSOH5rg4DaoPXcjw9+XFFUxcSDTHGSGpwBd+j4EMjqt1uw61bt6og8Xq93jpeZDabwfn5efU7FETJCc3wkN7jZOxqtap2wXrv9EPjVQr+hOqp8V0ojUdZeca/JQNCzjenV6I7JhjHaWna4fTIfgrarlTpo1GpGTRS3l7+9+gdi/4c/Of5hr6z+DVk9JVlWe1Mxt/aHX8WDZYRmQtFsX1UIAaMNBq9feEdBx55/WmCpPe89wfy8aql4ZMSoW8kukI8KsnLkJxAGdPr9SoaZ7NZ8IjfXTpQHlAnfX9/H1577TX42c9+tnVU2Ww2UydFLGAwabPZwGQyqe6dWywWYtDLQyv9Xyov1YamO0Sacp68eJHkBA2yhPylVqtV2XF4ikC73YZ2ux28d5D2Bx2LdLGhlh7TprQr5s13EUryCOXVYrGA9XpdBURxHHDaJP7ii6Q4NJ7kQYJQX8TYIdhvq9UKOp0O3L59u1pUMZlMYDqdqvRy+zd2vGvBw5T+pHxj2ZSa3c2vy5C+9Zavfe+hkb+nbRx7R/FoNIKLi4uKv9HW0yYxcWeVRiPnvRQ5GtuvUt09dsIufBpKX8x79GFR9gyHw+rddDp1XdESQxvXx1qgcrlcwmQyqdq63+9Dt9uF6XSaNV5G8+B6X4oBWWPKuwjkputdTRZK6aQ4p/QN3dFPge2Ku7B31TYhu1vyI2PkizbWuF3v/Ta3jUhtCer/0HcPHjyodBHKanrXLOpr/IYuXMI8pTtp6TdcfuIpe/h+NptV/rUEvgNXkzOpbaQhJlaixW1jy9TSSmPQQwc+s/wc3p68fElG8v6V6o/5aZPyvByMD/G68PpJdiClw2PXau/qQLNhUvJvWk5640u79ls1HqQ0Se9i3of4w5vGKjPGVo2RQVzmpdjDEm8FJ2NzwhIYHHRnoJVfHYQMGkzjwU03/OoiNShW5xutTdHYDA2gmDJvav+hoaQFLtGAo+lj8racNTRk+XjQDGCrDdfrtejg4U4FekQY57XU4E9deJ0l+t5q/9B9G7yuqfC00a7bUTNQrXbDMczvHuBp6P8x0PQOpceSQSlBGSmNxPda2TydRh+9f1lLg7uaQkf6xIyD3CjLciuA7gnKUXjoxTaiK493bQDfFND2wpXVyJ+hY865IR3SCdTGkwJIKXR7xmRRFFs7+LCem80G+v1+VLl1jPKUMjiwzTqdDiwWC/jrv/5r2Gw28M/+2T8z80vd2RYDjwPnaTPJ8Q9924ScymF/7NqGkRArQz9Ds8B+wPHoWShhBUt4ej7WOp1OlrFv2bH43mu7h3SFhxZNLoRsNf5drt0eHjtNeh9qK22ClvIRlfGWDYu6ndo9sb5zXUi+ZchuwLq1Wi0YDofQ6/VgPp9Xiwx2AY1Wy6/odrswHo/hgw8+gJdeegkODg5gb28PWq0WPHv2DNbrNfR6PQCArUWSIRo8NjzuCMfxXxSXO+7Oz8+rNkTaMSCv7ejPqce0duR8zn29WNuBlyf9vm7dnAJPTNVaFGTpDm/5yE/oJ3DeleSKFeSuK3+a6MfQSSEA8kISDmyrbrcLAM/HGq0zLnSkvhH6wjzmp4G242q1gtPTU2i329Dr9aDb7UK3273i66K/x+uTamtf93jKqcukeKlk32hth+2ag57UCaCYvK14G/07lE5qh6aQM29vXp8Wv7AJaNeMeo4R9x41rrVdbJtqMWgJEn/HQMp3S6JrgyXGmAkR4DEcOC08yEe/9cCij+dH/3nzCgnhXUJyRK+LFgke5pae5xLkluMUMrAQUtA5B7Q+Wq1WW/e4cuS8b0BKExI8UhtK41Rykler1dbz0MSvx1j38nyMQPU6CSHZ6aEhpo1DAZ/rGPexipH3c8x4ih17ocCJ18HPDa+hjoYMwNUxRtsxtLMI05Tl1ZXDPIgqlUX/bwK8LrizzyuzrN9WeZLM2UV9byJ4cNQav5ocswJomD9Nk+JkWr8lOpHn2+321nFu+B7/efVqioyNsRtCdQJ4vnL9wYMH8PTp062dNlaANlZn8H72OEseW1qSwzE2OP2GBvVC38QgZFdY72NkyC7ljNTOmvyzvpECsLE0cN9L8/skmrR0scgZvJPy20VASoIly1HWcf1KadfaxeMbpPiknrysvuJ0aTweksO5+CHWT4zx2zUavfI5lI9GW27EtDXVe91uF/r9fiV/pB1euWmObSdK73K5hOl0CoeHhwBwuTii1+tBWT5feCr5m15+53RKsQOUAbgQrdfrVRPcWLa0MzlUngYP/3v6TJNPEjx25U2Ji4VQV29Q/qPPYmIpVrwB+QXzp1cweU7Z0Hheq4eH3qbHfEhvUPCFrEVRbJ3OgWOflkXrQH3hsiy3rknQeIPbHfP5vFqIod0FjeXmXKgZo8skemLGfB3E5B0b4/J+p8nYkO2lpeFpJR7mzzTf6UWPfzTpM8RA4hOPLNmlrrJsyhBNMf5jiLdSbELpWxoXiIVEI9czMflqckJcXuMJ/uDfTTBIU4PGAiogjxJq4pz0WOxaMFLDNvaeTwqpfesEqDTjy6O86mDXRvxms4Hz8/OtAGudABiALlC9x+dq+eHfOKb29/e3jHJ6ZEas8dMk38cKVIB69NAdn5aTHSpDWv3OjXt8dl0GFe5spKuvEXhfEg/Ehla4hwyGOqB3lebkPcmBldJo8ssywHGMUUiLGzAfPP6I7rzndW1Kx2vACTJ65+Cu9S0NDLyI8Aa+vPXLyQPSxIQESy6mBLVD5aH86fV6MBwO4fj4GE5PT+H09DRY/xRnKSdvId24mn48HsO7774L5+fnW3fRoU6IobPb7VY2H22H9XoN4/EYRqORqx8RXF5JbVeH1/BbOhHxogRcm4DHyZeCgPQ97z8pePPo0aPgSmbsb54f7sbAO2cleyaXDuDHE1O68D21nfBvqjP5CSfUd+RjLHTXrScw0ST/4i6b4XAI3W4Xnj59Cufn51t3DyJCASSJd2JgraKXgvUe21gLDGE+deiN0aGxOqvb7Vb1Xi6XMJvNrlwZ4Kk72lEaP96EWEYIdEzhWNN2hmFaOkZjFlWl8kHKGEX/3ZocQWA9+H2BWrn0OU72npycwHK5hHv37kFRXO6QRXlI78NGpEzIaG34otjSWnA1hv5d+w64W1LiIR4fk+wtOlmvTQbFAK/74HeY5moXS/55y6gblOfxFU1nc1lLTyvgNi8uIpH0GrVLUK5Tm8WzU5YCx3u/39+SA9qpHKE2195JqGvfxE5+aPJIszdCtGEa7Ef0jTw0YN+mtLOWJx27oe80m0ma1/HI/06nI8YaJTp3jeuO4bzoulBCrjaNiUN4YjjSuMlBqxSX4H6xFquKlWtBCS4R4ylEawSp0SShYtGhlRNqjBhB5zFycwbncwSgYt950nocXkwn/U3zlYI72jex8AZdY43q0N+efL19rAXCcGcY3e1CHU4PDRZCxk1dIUONT1pHzeFJkQOeNKnjPtR/oWAb/1vjVWqISwEnqb28/eYdx6ngjopFBz7jPOEdwxQenolBKNgnKfsUoyJkEHtkpBaY8wYrNceA560hJiho9a3WFt1utzqyDWD7WNu6/azRxml6EQ3nOnoAEdJ3kvOmjY1YemKcGK8DKkG6MxCDWniUF58IoHnGyuMmQHUG0odXAtCJWBznsYu3eN5YJpZDg0seOUDz5eXEwup7r66uax/XRao9yu2C1IAYbUPLNpNood/hpE+323XZ37QcSjuOP+k+11B9vLpBO2XG4iVuu/LvNIfcst+8oGM8lA/XW5rsxjzxjl7cMUPlodYesWOO14PzjpUnr1NIDmsymX6XS043aRvQOwRjZDblQ1p3KR3/zeXLdegy/luSE5Q+1Gmr1erKKReYzovrsPUk/R2Cp2+oXU95Ce1qOiYsHyAW12kvS32uyRuP35zDjs4Nzd8LxS00e5rnZ/nuHto8/Bzyfb1lWXrIsvO0tkqJ/XjosdLSRV8ajZI+lmScxOe8bvgd6hRcHI931S4WC5FeqXwvPOPJI8+s31ZeEi96/AMtDY+vaH6uNeZi4itaXhI9FkI2ljT2tfbgMrZO2U3Ba2N65FEOXRjjc9wE1BmvWlqv78D5y1u+JPeaauOU+AMF/9a9nKaOktZWWEjPtQvmvYLJA0679wz+m4DUoJX3Wy3gAxC3moEjZpVlKCgSSufNz4NdOqToVOJ9duhEjUYjAGjmLiPv+5ATo/EJOsxa/yOP5V6xXaffcsoaCaG7Y2PKjXHidwEua/iuG358Ef2GQ+ILmldRPN8Rhvef5oA3OEKPGIoZHzn7ixvR9Jgoaox6xhPdDUyf8UB07PhIre+rr74KX/ziFwHgko/+9m//Fp4+fQqDwQCKosh2N5gW8HuRETJCYwIHofc0CMP5JIUGHjyXQGWox75BWYL5t9vt6n5Y3BnC69put2Fvb68K9HKZcBPkrodnO50ODAYDWC6XVT3r2kR4dQIGeAG2JwLo7ybRpLPVJHLQje27qzsSY0D1Px17VtqyLKHX68Hx8XG1GxCf0/+tfOrKb+7jYJ7S0ac3ATRQGwoM4P/IL+12G6bTKbz//vtwdHQER0dHsFgsgrt5Y+nDHTfUDqH3v1P6U9uY9psUvAbYngy+yUAa2+027O/vw2azgclkEvyG74yjutlj/2F7aXfSNgVKJ90NTH0FKT6DJ6jgLjHO503fiR4L2g+x9zaj78THpjb5gv/j8/V6DU+ePIFutwtvvfUWXFxcwL1796419pUyuSPFgPiY5rpVaiP6m8tOiZamYwJ1QXkLZW6r1VL1VsxkkNQ2vE1Rz2Osh8oi6pNi39QJYtO0uX3pEB9wvvK2oXRqCLfb0JbGu525PyXli2noSVIa3Ug72lUAl5OxvV4PDg8PYb1ew+npaUUXyhxJn2p9aI0xC9oYbRLIl/wIaYsu3u7ayQY01qXlS2NgWnn0mQSPrxyCp+25XexdgEvz/wxh8L68if7tddvPlO+uI2ZHbVVOlzRuvfRdscIkB0b62/omBE3paUonpBQleOiOgZVHTKM3NbBCwlsy0EN18gZSPUGSupCMcKn8WH6Joc0y+K18tfbhz+kkEP1HnVWp7+q2r0SHJx0HF0btdrsyUtBZoP/T+lgCNrZ+HiM6pl70m1hZYhlzGg0eR1LK4yZCcl64DAo5D7ye0thApBgvOeSX5ARZ4yhW7khtYTlqUjp+R00of824SEGojalj1O124fDwEI6Pj6HX68F4PIbpdFo5iVxWhGjzOoQWPI7nTUJKXa128gZmQjaih/dTx0YI2hil/IQLorRAnSWPr4sf0PFHB2E6ncK7774Ls9kMRqMRjMfjKl0qjVhvujtdS0N/pwRhPN945B7P1yq/KeSwO3PQoNlUls3FA0/Se66nNX3s5Ts+Hr3fNAGvDS/Z5aFvJd0aCqxJPq01DjV/gfcrTnxJC6E1urRyNdvDK3s02i0e5PC0If+ujo0Q4wt786HPPJPj0ni2IMkCSTc2rdM8sQj0GWlbhOzgoii27kBO8QssSPZnTFsVxeUimsViUelvfC4t1rX8P0t3Il10B/ytW7dcC+ub6ntJR6fYAallSuXF8IcmK5Avcy+at2xNmkabVNJ4M8Szmi7Q0kq0h9rUakst7xBSbE7+ntstHvq8/j9Na/lT2jeeunj7CWWQVL6kf+u2rfaNVxZ52jT0nMcPNNkQqktIVll6VSo7ti/pOw8tFv+E8tee83w9duKLgF3RHbJfvbGHFxEx+o1/o33H85D8LM+3Xmh2oKcc/m5rMtbDgCmKkTMX3YGD+Wnn79c5PiU3017nIIgRDh6jQHLOaXopaJ+Dtth8Yts8ReHElpXTYeB5dbtdNW2d+2FpGbxcT9qUcT8cDqvJWH4ECh677EEdRzpGpsU4UTn7vakycueTUi4tm68kqrPTHsfJfD5PJ5Aghcd3GayQnAZ6lx2+s3iYHvub467pnHzV7XZhs9nAeDyGk5MT+If/8B8CwGU9P/zwQ/joo4+q+tIFHinIHZiz8m6yrF1BM5bLstwKFFv94Q1WcpmRithgTrvd3tqBFBtQkyYKdoXNZgPz+RyKooDBYAAPHjyA//gf/2NFT+wuHArkXzzGDFfg4x1W+F4LTGIeIbssJZht2bDeIMWLDI/Osups6RlpB5bkIGNa5K+cJ1RcFzzBJGwr1MP4Pz1mGdssFKiOmRiwAnU5dY1mc6DMp+MfIbUbvRczhTZsV/ob86ftmyp/vUHm6wSVv3VplWQy9fevAx55gTyEx2oChGXbYDDY0o03rY/H4zEsFouqTviPnzoh3VFNYQXa6TicTCawt7cH77zzDnS7Xfj5z39+Ja001mjZu0RItkjjnqcNTYTwOtfhk263C51OB2az2c7vYi5LeZee5TOG8tP0PdVTXGdROcLL8dh4sXag9H1OxPoRGrTJBSkNynprxybmVbe+4/EYxuOxeI8tp02yF5EOShN/XxeetotByoSM9Y2WD7/nV6Jfq5Pm33j4J6YMC9zWorJSkw/47qbp2s9wMxDSKU2Wuyue5LJCqp9UX3UytglHn0MLmHiDN6H8Q6BCBjvLUkZa2Vb+IeRQ8DG0aAEsK+Aq5RMqx5vGE4Dw5mfloQWeLCXnUbyhoImVr8bjPNCjpaXpY9vdk9ZrtGjOETUmPc6Jx7ny5KHRZ6UJOX4WLbz9pYBHiKbY91o6zluewEUdeGRQiMbQd9RxRtB737z5WTR5+pnTEJKfXki8F+KhkDzQ3gFs3zcdcvh4nho/pThh6LwXxeWxdHRyvtVqwXA4hOFwCL/61a9gs9lAp9PZ2u0Qi1hZH8pHgoePrhOarqDPY3QxTct5j9tX2njVxlqKbAnRSidLVqsVLJfLKviJvLhareD8/Bxms9kVGqksatqBSEVZPj/qTDoeDWHZSvgPg2t4X70VeJFkg9eOl+zvptrX4xyljNsm+UEaV01Dcio12urUnfIYPUobj7eV+I7KFG08SvarZddimfQd3ZGnXb8xGAyg3+/D3t4ezGYzmM1m1f2VWKbWhk30Y8xY32w2sFqtYDweV8e+oszwBP68PNLpdKqFYGVZVjsCY3wMzUf3+OwW7fjsJulq5Ht6rHNonNGJFo0H+AQfwit3JVve24cecNtgMBhc2eHKcXBwAIPBAF5++WXodrvw9OlTmM/nMBqNai9gDvFFSt3xG6QNbY9erwftdrsaG9wfjuVRze9qtVpwfHwMX/nKV+Dp06fw9OnTaiIRTwW5qbYNRUhn03Fu+ejUbknxYxAoS7E/sR0pD6b69V7wsS35lrG+juX7STYbpQEXOUryxbI/Pf6t1P88VsB5gKfX6hyCN3ZhvbNiMxYvajZEqpyQytDojtHXPJ3V/nV9cg0aj2i/JVixGPwebUFLBkn00HdSeSFIfW/lY8nEkK+ojTspvcaDMe1g5Z+CUF/E8GDK+IqJGcS0z01DiH+leJHWNpau0OJOlszh+kFL57EDqJ7jslzSmSG7Sr0sogmDLEZZpDBjqIGl9NI9eTF5NIWmBp7F8BSeID1HXZo9jk8dI0gqL+bbnLzgCSCEJjAtY25XoDTgMWcIzSmQvpW+4e9ywmrnJmST5NRoyDGOaD675A/LwUJ4Vw1bedHgVN1x6WknzRiwjFeAsMyIcfyswIFEp5Y3TnzyPL10hZyoGKOz0+lAURQwGo2u8MXx8TG8/vrr8JOf/AQAAPr9fnW/VZ0+lwy0FyH4lANWX1NeiG0Pie/4OMV3vL1T5BNdjBHKA9+hwzwcDgEAYLFYwHw+h9VqBYPBYGtS6OHDh+I9hNSYv+k8g3fP06C+t61xwhrbGQPE1j0p2Da4MyMmEM6DA1bAzYuQDLvp/UfBHVcrcJKzTIDtID7CE5CheVhlYJrFYgHtdht6vV61y4cfnRvSe6ntIY1zHP84GUT1fVleBtnb7TYcHh7C7du34Y033oBPPvkEHj58CBcXF7BcLquxUJe+mHp4bDCafrFYwHQ6hbIsodvtXpl4lr7x2rKIwWAAe3t7VRs+fvy4krvYlpgflyeSfRZro0vt30Sf5JIrq9UK2u121S44qaHZztgn2F6cV/EZ6gM84UDLS6ub51nMe5qG2wZFUcDR0RH0+/1q8dTZ2dkV+m7fvg0vv/wy/O7v/i4cHR3BD37wA3j48CH84Ac/qLUr20t/an54NDjqzL29vapv6JjIVR7F3bt34ZVXXoG/+Zu/gYcPH0K/34dut1uVqwUxm0RTsjFkJ0oyJoUWPOkLbUlckKP1oyYr6rSzl29i6hfaTctlDYJei4N8TmW7ZUt65ShP7/Xhb4LMD7VpSOZLyF0v7md5yq8zlnLqZJqH5Fsg/8XWUcqP65miyHdceQjIR1pMx6qbZFt7bT+pLImuz/D3G5bdmCLzpXxidUUsvVp+krzT8gmNLXUyNoZQaeBLzpC2csQb+NXKp8/RibbAjX/8u67gyCV4QspMai/NqJPqan3HvwnRGHrGywo5elzQc7qsARvjoHuDSdo7r6LxCpdYQzGG10LjUwtyaGNZy1vqG+rc0fwsIcbzblqhe4J7miDH39qx3qGgssTjHucRv7VkXZPtFisbEKnHf6JjxwOjsfA4a1qfa7or1F/Su5C88chKnl7iTap3ceW2FPSi/1tyUpIVVp1DfUR3PQyHQ/jiF78IR0dHsLe3V028IhaLBaxWq2p3R4oTVQe7LCsEq1/4cyvgI+2QwXf0uDOpPI8ul+S+ty4eoxnp4AGjkOGNd8Ni/aWjAfEfzYsHnnLyRA4bFOvT7/dN21mSIfQdPVorVg7xa0hibaBQuZxe+m2Mc2aV4XXcbhpCciEkz73t59VzKWlS7ftY5Az8pZQjySrNH7P8Ivo/TYO6P1dQEOWidDqFpX/owoG7d+9Cr9eDs7Mz8ZoSy5aiMpfni+nr9mkOXtDsPMvnovXyyL/QuA59y9tOopO2Z90xHfrG0+5lWVYLHIbDIZTl5UKCt956C77yla/A0dGRmD9OMl43NL5AO0SyyTnQzompD027XC7h0aNHcPv2bXj99dfhnXfegaIo4OOPP4Znz55Bp9OBbrd75R7JXSMUX/LYBlIeMXYzt/VC32C62WxW2ZJF8Xw3unYnd4hGC9K4pzZYCiybSJNbPB1OCNMYBZU7MeV6bXqaj+W7p/J0yBaOzbeOjYn8GWtja9BshBj7UYOWh9VH3ryl/Kx0UptLvFGHRxCod/AfLszQTqXQ6q/pZi0N/vb2leV3chsAxy8/WU2SN5YsiuH5ujLSi5tgI1i46fRxhMYz5S2A8OYtLX/Kv/xvCdrYsMYA/z6Ub4reuTIZG9MIMSjLUgzuac5KKjwGLU8f05G5UcfoDKWxhG8MPdbzFLpCShjTeJRJbH/lcrZTjN06ZddxdFPpqNtW+D1dqRlybGINMg8vh+oR006aEKdlWYERKzCnjQP+rq7BWAcpZVrGnpUvNWRxzNH7D2NoqcNXFv0h/pMCW7T/LKcgFESV+EySS/iMr7LF7617P6X6pcgiDXRyfTgcwm/91m9Vxxl2u92tsnA3B223FCfYg5x1zIVcQQSvA03vEbKONbTKknhY4rGYoK9Vntf2oztQAKAKlOECAHSauT2ptQelJxWp33KHptVqbe1ySYE36CsFg6jOsuSu5WRrARutbGvXplZGLOrYIrlBdWNMevqbguseqndD+ebyDbztW1c2U77O5XNivpYd580jlIY/CwXmPMihR7UxSu21W7duweHhIfziF7+A6XQaRQe3XSQZTHdiSQjZcjn0vmXzUVj2fmxf8PEbqgedjKWyQYuf5Bp7FkJtVZZltWO41+tVE4ZvvvkmfO1rX4Pz83MYj8db4xB9BmuHYm76Y9KijsbFYZ586tgey+USnjx5Ant7e3B4eAi/8Ru/AcfHx3B+fg7379+Hw8PDyia/Dv9SgzSWvLafxU/ePtPGhOSzYT/u7e1VC4jr8p8nFkbTSbHMWPvFwwNWjITvAkKZw9tBoy9HLJbK05jxyWnyxGRTxj+lUaJbA/fzNf7wjAWrPil9IPlLVplSjMvTlpY9G/MtlhereyWfmsZUcDEGwPNTEGLs9tjxF+orSW7Sbzztb9kNvL+b1B+e8Wh9Q3+n0JlqK15HmTcFvM70fnNuz8eO/xifKzRmPLFinrc2nrx6G0DZGSsJi5xOiidN00z3IjN1LGKYMgVSYDw2UMQDijz/WEXN87d+W8hhEFr0eIylOoh1qrwCnxtq0g4i7z2xUkAX80lFarvGGtTaEVi8j1OMKm/6TyOQH/CoTBrQ22w2sFgsRP7SnBANNFhIy9UWEFBe9TplmrMVolNaRRwTqJGcKe4cW+BtkxvYhrxOw+EQXnrpJej1etDr9eD27dvw2muvVXeB0e/rlv9ptAPq1gnHG8p0bZxpEw8e2iR5l5qXBMrvdByt12uYz+fqJDHylzWJvAvZW9fZQ8ef33OpOd8a6PGhqcEZCk6DtLAmpZ3rjOVPuy71gLc51XPaMYWWrc/TWsdk077DY8OpjqVXptSdJNDykejibcCDhhhIODs7gzt37sDnPve5KsAwn89hMplUi8donWLs45zQxi+1ryS5TnnCWrgVY3PhLka8l9sbCOTg/oMlB7z2WhOIDfIWRQHL5RIuLi6u3B+r2Y7c/5bst+l0Wh2Ju1qtRHuK9i/neY3WnMAjXgEuj3w9PDyEz33uczCdTrfopWi32/B7v/d7cHBwAF//+tfho48+gm63Cw8fPoQPP/xwa1Ls0yzvJT6jxw7PZjN49913YTQaQVmW8NJLL8GdO3fgtddeg9FoBGdnZzCbzW60XcxlhTfWxHWbJONC/EzLQllIj5um6Siv8lNX6sIz7nLwObfNvfFZWk8eI4mxIamujA1uU1pSJ2JwcSP/Nlc8SQvaa7TF9kNdNBGPlGIolp0ZC6vdKHDM1hlHlLdWqxUURbG16YwDT3ijC4FDqGvzeqGNLT5+Wq0WDAaD6tlms9mSdZLtn6NfNZqbinHfNLyINMcAr7SiqKMvY/2AVL7QZLHlb0jvtiZjpSCIZPiEiLLehwimFYtpmJBjLT2/qcxtGQq5DCxrIiP0TMsT4TWOJXAe5IEC+s5LS+w3oXdeA9CiR8rPw8MpkBwWKzDraSs6PrmDi0EAbnBpCAXzJLnTRGAl9C2lQwpacbpi+1MyLG6qjIoFDepobaR9Q1dP4T967ymH5kDSZ/S3J9DEaU41EGLlYmz/S3X1yEBp/En9FVN+CHyMY2Cj3W7D8fFxtZq83+/DwcEBnJ+fq8G4GMTKOk+66wY3CDW+tXQZzaPdblcTCNK3NNAbw6M5bLPYvuBtoN2Xp43rphxJCzkCElLg2WOD8zwkemibaLwWgxi9kFpGrjw0p82jR0J57BqajsPfdPxrNGs2LbcP6TOuk/D9er2ujiKliyhi+DYVks2pBT9pkBgnL46OjmA8HsNkMqkCC1bwkdZL0rPSmPMGnySZJY1XTMcXpGn01NGHVLYOBoOtu2o9i75CYyjWvuF5pugVzicazd68aZ4Y5JT8N5rWKouPQ9R93W4XAODKcbQ0jxA/as9iYMnSorg84nUwGMCdO3dgMplAv9/fWpyBaLVa8NZbb8Err7wCBwcHcPv2bfj+978PRVHAhx9+WKXhY7Ap+r1I+TaGp7jcWa1W8PTpUyiKAg4ODmBvbw/29vbg4OAAjo6O4PT0FBaLBfR6PZfOiq2/Z6x4UFcX5LIv6diiOovKdLxaRbuLW5PTfBzTfpTkTmzsgY95KY86tq/md4booemonK7jh9LvrfGjtWGKXy3pGEzvbRNPfhp9Fm1Svlba2PaX8gvpqlSk5oH9EHOnuNUOND+pjwGe6yC64Ih+nwN1bBr+vYZut1vF5dbrNSwWi+AY0eSaBa9+8coUKW0qL3ry1pAynj6NoDJZarvYO7MpYvReiMaYtBYNFq+Jk7EWUo1Hq2FiBqeFXa80lpBqnIe+SREYIeVaF5pRUFfIaEZQjvw0aAGRFKPpJsA6w3/XsHZFNI1QfaXjXjxGJF0kAADV0UShMUfzkuQVf2atsrtpwKAedRw1GcF3UuP/kuPiletSP2nvJZqk3zHfcCOY0k2PCg45gSF4v/eO9+sYn4PBoDpKdbPZwNHREfR6Pfjggw9gs9nAb/zGb8D7778PP/7xj6sAkRSEy4FdysQcAcCUMnngwKKh3W5XRyzhLnSen6dMjtz1rtNv0kkOWp5FUVSTKzfZgUp1Wmk70N0eZVlG6R+pDW9ye6Uilo9zT2JwOWiN6euQN58hDTzYiv1K7+WS7nKmfYy7/6SdlDQfHOM5QXdCIXASYrFYwGw2g8lkAsPhEPb29mC9XsOTJ0/E3UcSQhM51O6k9hb9Pies4LgEaZxK49g7ZqVTBWJOMul0OnBwcADT6RSm0+mW7V5nEiYGmr3f7/eh0+mo+ofS1+/3YX9/HwCe7wJ96aWX4F//638NP/3pT6HVasG9e/fg/fffh263C51OJxvvv0iyFW26VqsFk8kEfvKTn8DJyQl8+ctf3koXIyNy6EILmt2qxWswrdcWovxu+ZkSn3KcnJzA/v4+lGUJvV4PvvKVr8BsNoP//b//d3DiLhVcF+TOGyA8+ReCtkPWWz5F6uRs6HSP0LcAz2UrvTezzkQgwhtHlSa0YnySXcYy65QVO1lSB5Y9QWnh76Td0tzWmM/n0G63odvtVryPC8xRt/EdsnXmQjQ/o67fSscaloH2wnA4hHa7DQcHB9WkLIKPD+nES0/Zdd7vEin99Wn0j73Aq6DoQiWOoiiqayZyze+lXHPHaZK+98g8q0zxmGJtNldDqFKSw+FNH0LKhKP1vO7gyCFAU5VrDB25hFjKJHFMnb3GV8jI8n7rMdZi+TmUJmZMpPBnriByjCErOR/cSQoZPE0jpgxJJlL6JUEcEs5eQ0lrn+tQ5BoPSI6OlpbXWXIypO+9dbYcda0fpQmrUD280IJ2XmM0JButibaYYDxPW4e/QjyLx8bhIgYMFI1GIxiNRjCbzeDs7AwePHgAi8Viy2nJyfe7HkMpcq0ujSnf47jIKYe5E0uPz+PQ5ICm12Mcu9igd1O6qI5Ot+DRy3XrVGcCMKXPciDULimBmVD+sb5MarDam6aJOqZACn7ftOAEpYcGvSV9joEoeppADLR80S6R/CBJz3OZHdLDUr2kdN46SGVhoGW5XG4t8qATbbwszTaW2kKjnf5v6ZncOk4LrqYi1d6U7EJ8h5MTeD9oDC1aW+esKx7rijvlMSi3t7dX2YMoP8bjMTx9+hQuLi5gOBxCq9WCvb09ePvtt2E+n8Obb74J4/F4a1KlyeOKdzXpIY3bUJwDx+N6vYbpdArj8Rim0+mVa1l2iVAcQBpPMbJKy5/LES4XY+lEn6bdbsNwOIS7d+/CdDqtTgFAWRWyf7RYgtYOktzUaA9Bkh0e20ii2ypDaudcMcum4m1a/CqUr+azaM9C9eS8mgu7an+aVw7ZyPvK03ccMW2p8YAUR6L1RJtXi09Z8i+lnaSxqfGsp+9pvajvjrq5LOVrZ64TMe0mtVds/Cy27LqxxdzIbQ97ypPsfIQ2VjSE0lLZoOkuTz/WjQlIeYqTsbkgOYYhgykFORg4R3CqCSbe5cCoA6tvveD3HdbdFajRJAUtOPixXXXhGeAhw9cDvmLLu5okNRAorZyts4Il1C91EMrb48Sg08XvzuJBMquskBGGZaDx5qGd0nEdQJq1MecJUFnjjN69lhJI8bZLKJhalvL9yLF0xBhqdCWuRZc3v1D6JvUY/o9BNpyExWd4hNrf/u3fwsOHD2GxWMDp6elWMK0umnJmbwp2qdc8tCDvdrtdGAwGcHBwAP1+Hz755BOYzWbufAB8gQ0OTxp+LyX99ibwiUe2xwR0QrAC+rnaQws6arQ0iZQycuvbJuop2Sb4XNJhnsC3RDf+s3ZSWYEHlEsYzKb6Tgu2pYC3Bw0eUXsW7ZlOp1PZHPhcarfz83P4xS9+AfP5HObz+VY+PC1tD36PJZYLcHVXZ8rY88gMvOsM20PjB+176VmsTYR9zu9epGXwnb38vda+NF8pQNtEUFvy5VL5lgesvH0D8Hx3Ck669no9ALicwMRdOzE7AneJzWYDH3/8Mezv78Pv/M7vwMnJCXzrW9+C999/H/7iL/6iGmP/5b/8F/izP/szGI1G8PWvfx2++c1vwv7+fuWn/ct/+S+hKAr4/ve/X9WZTz6+KHEWjlh/luPjjz+Gv/iLv4DRaLRlG87nc2i1WhW/hHbIeiY7crYxPx0CZZbHR9BkMaWV/m8FYwGe66yzszM4PT2FV199FYbDIQBc7tr+whe+AE+fPoVf//rX1Tjmi1GaQuyJAzT4bV1lhv83ff8tvgvJPK/dwvvWAo/j4DeoS6S25fEDyW6WbGtNT2j+Du0nKX+ah2ZHNQVJp/L60fshQzEjjTe88QyanssIqWwtpuO1g3kcW8ub96GVL9JK6Y6Rpzn8folWjN/kPmXlpujkJn2ym5YXgK++uctcrVawXq+rHeQIjHuu1+vKlsPdtLtGiu8p6QFLHwcnY2MFXh3EBJtSvq+TdwgeQS2V5zH4eNqUQHqqIg4xYa6gvpZP0waEh0atHySkBoy4UWD1Y1NtsWsFmDPwKhmzMcFpb1puqFn9ZjkDTeA6jBfunFnQjElP3+A/elyFt77WWKI0eBw9iX5ehuQUxQblOJ/VCepJMilmjGiOVUr703J5vhg4XC6XMJ/Pq92wUmA+Fry/vOMwZbzmlGupCPWvl9dpPtpY4WXge8kRxQDfcDiEXq9X7ZbyHlVZV/+FxlGqzRLbv5yO3LatFdyQHHMp6BQKZlk0xQS96Dep9lOTCNmmTZcda0fETtpIfGwF0ySEaJSCkZKcoL81GeKph/ZNyLbzlsnLwp2x0m7/OjatFdjVaKVjWTvaX/JHQ76jBS1ozMf0eDyGTqcDk8lk60g7yY6W6h4rT0J9WUfexI7NlLKp7WvlFaKTf6flK31bhy88tEm6EG2+1WoFs9kMHj58CMfHx3B4eAjHx8dw586d6hQV3Nn59OlTePbsWWVLdDqd6ghjnFSUaM8RgNR0OJd1N0G/IQ3tdhum0yk8fPiwsgkGg0F1D3bMWEvRD570Hhq4vojV19K4lHxV/F/TX8izuCBnMBgAAECv14N+v1/t6l4sFlf8Owtc7nvT8vpp8lTKV4pzSM8lve6xTbwI+SOSTozN04LXV+f5arIe/w7pghhflfJhrH6UaM0BSX/X9bdiywyl0/jVGkP8b54vz68stxeY0WsmAEBceBfK06LByoNCq3NM/hirwYVedIEJtS9C8qAOX+zaN7PqYo15mibWn+PpYm2X3GiiTC7HeR1j7VZPOdJvzzf87xSZK6HRnbGhwgHqd2xqp2jfxjipu4R3xd8uwMtJoS0k1HLXxeMs0DR1V/qE+EYyjC3atG95OsvIyIFUIaRBM/JzQTJuNRpCkFay0pWQMfc1aeA7NW46iqK4snNTa2uuSEOBHn4nb1EU5tGmVtlSOs/KZMnZ9hr8WIdYRS/9pnnS7zRodyFL+VKes/ouRJ8ELR0G2trtdsU/GtrtNvR6vVpHyzVpnMcGRq/bgNbakI9PepxfbBDIkoXD4RCOjo7g/PwcAABOT09hs9lsOXJWPYrCtwOCg9LEjfsY1NWv121P0sAAfRZ7L67GyzG2DSJ2bMcGnl5UxNjNHNfpu2h8JAWiENIRbp7AQ+oYpt9x3cp3aFJdfh0rsykdVn1pUAyPxqTfUXutqaAOtQNxoU1RXB5l9+6770JZltDv96s02KbURuF8EAJ+S+89pXZmE6jTZryuUp6e8Sv5ezwPj3/Jj4wGuKofmoBm567X68rWn0wm8Ed/9Efw6quvwh/8wR/A5z//ebh79y788Ic/hP/3//5fNdH1+PFj+PDDD+H8/Bx6vR4cHByY5Wr3lHnp9H5Hy8q9gygWZXm5Ex7v+zs7O4PHjx/D66+/DicnJ/Dqq6/CcrmE999//8p9hruiL+QL5Yod8fFiyRvPWOx0LsOpT548gcViAa+99hq0Wi34m7/5Gzg4OIAvfOEL8OjRI7h37151pHETdo8kV7R0Vt0kv8wKlAPYscCQfynRTeU6BddnAFBdecPLSxm7Hj6U4JUp3hiCR3bTtqOxGB7fuG57WeIdyefgY4L+bcWL6P+W7pd4QuLzUJm4W09Kh3Var9cwmUyupMUdpRjXmM/n2eLATYLHws7Pz6Hb7cLx8fFWnAbrtFwuk6/u+AzPUUeWvQiQbGDkGW6bFkUh8lTT/q4UQ42NBVn2+NZkbI4JCy2vmAC6p6w6gzvW+KmL2MCRR6GEvvW8zyEgraCA9sxjTHvT0jRcgVuKWHKCtTItGmLecePfayh4ypP6lbeBZWBYZUrvJCciJX9pbMT0vYQYwajlG8PX/HmszIhxHm+iMrbGGr6nQTcJWrvT56HAkiXbLCdQSi99E6qn9XcogGrRTx1PiXaaRpoEk9rOks9aGTGI5VMM2m42G7i4uICPP/4YRqMRTCaTLSd7l0FBjlQHnQaWU+mPka0eGcXzRt7Bf1RXIU9Rx98LLBPzRCM6Vz9y/WGNIQ6Pfgzp6ro2VMz3Me0WCrRxUB618uNpNJtGS0P/9tIVQlOOfsgviXXEmkYqP8bUUxtfvI9z+mfXyQMW6BGwi8UCHj58WE0i4Y4BDFppdi4N0vEJSZqOg+sTT/BQQ4ys4wvuLPtdogt1PN+x6+m/XPKCp885jiWfyLq+g9PC8wjJY/w71r6l41XaPe2x55vQXbwN6ETLbDaDR48eQbfbhaIoto4Cp3KH1q3T6cDBwQEcHh7C4eEhFIUcyMsJWs/Yo7V3DaRtOp1WtOBCFHqU6C7h4T0JoXFs2S38f2vMamOF3r+MdA4GA3jnnXeqO47LsoR79+6JNHvkg8emlfKW3vPvLD9Cy4OfshKS6Vq757BbaJ955aOUn5cWKgepHon1GTzt5qWHliPZHbuUN1ZZtM5W3T1xEF5eyE6VdH6K7UxtNcle4+VSuqjO5e/od3SBIi9boofSYOmYUH1j9FNZlrBYLKDdbm9dO4X6g1/zweuj0eHlH4t+b35a2lgbJ1Re6ti+bjuhKXBbiYNfm0JtKa29Y3yiHP0s5S/RFiqj8Z2xn6EerHsbYhASXjFMGTLuLKPOAg66ujsMQ4attSOuKefDG2ywgjChiSwtbc46YV45dwc0qWhieY/+DtUxVxt4DR6aNmRINSEjLLos0DEdWhkuGehYToyTxPPT0mnjRDIW6wRQtNWeWn3xG3znKZOvvuSOaQr9ocBGjrGLxvx6vYbZbAYXFxfwySefVPl3Op0s94fXpTX1e8n5y4VcsrMsLycV8Gg1CmmXdUz5NBC5WCyS5Kan/7R2thYo8LSYjwdYHj96qil4A0pSQCplzNP/6d855EfoxAAPYnY2vcjw8j7+7w1EWEEaGmTSgkYU0p3LTdnS1w1sI7Rler0ejEYjePr0aZWm2+1Cp9PZGjtSALDVakG3262ODOUnf2AaaSw2KW+47YFjDZ/T8UvpofyCaevKRqm+ockDD3igJ3XXIqfFChTlQqxs5/TgogFc6OaRL3yyIyW46QXSi2NosVjAdDqFX/ziF7C/vw/Hx8cwnU6D+QwGA3j55ZfhlVdegVdeeQVOT09hNBpF67BY+jEQPZ/PKxv2JqLT6UCn04Hz83N48uQJAFz2Vb/fr+4Tvg453uQEEpeh3LegeixUf25ndjodmM1m1bPDw0P4/d///WqBznq9hh/+8IdbZRVF3J2Lqe2BOkvzJyV5GoqDSDpA+q094+VoddMmpSikHbISH3ntaO37OtAm3eh7T6yDT+bx/LE9Y0832IUfA7C9SAXAnqyo0wfcdpXysMq2gOMJd7kj+ElxEjzx2VC9Q3yktZU0JmNB89hsNjCZTKDX61V6DnUeykNqT+a4K3sXPPoZbOSOM6NNyn1Ovvu83W67746VdEYOe0aKL9XN13VnrLeQ1EEeW4lUwWl1ShODOyYoYTG2RmddZ4jT5w3iaGkt+rRVa6FyLFh0h2iSytMmL6yyvc+lNFJa70XrddqrCV7PodS1dzF5e74J5adNXuHv0GIB+h3n91CQxjOuYvg9BnWcPC1QxscebcuYIFIuGSq1o9bfFriSt77htEvOk8d4pgYtdy40ntQMdYCrAdU6ejVFh282G1gul+I4ofSlOksUoT7V+j5FJ+awfUL8pOnzGD7kwKOjOU9oAQSLX6Wy+v0+DIdDWK1WVVB0Mpm4J9SoYY72BA1ixfZxqG+1/ozR8Rr/5uDpVKTIO09+Wv6hMri+5O+sAN+nBd7gCU+fqy1CchzldazPIfUnz0fSZ1TnSXW19JqHLsyLyg9ut0gBPK6naHo++RpDkwcxckda7MDrLPl/WhvnmJShdoo0eS+l58cYSvRp9aT8J/UZ5ls3OKjpYm9/URo0vo4Z7xrfSrR67HD8ttfrbe1yiUHI79F0MpaFgV0JnU4Her0ePHv2DO7fvw8PHjyojuG1FjAXhe/I8Rz6EY/8xftsc1xpkwouWwEu5UWv10s6mtjry+WAZZ+lBF2pPuLySLNFQrwMADCfz+F//a//BXfu3IG33noL9vb24OTkpHqPi24GgwG02233Hb0e/xb/1nhb019a/lqc0PJ/JZ4I8UjID5ag2ZixsSOPrSrRxp/RiTguXzztEVP/UN0t2X9dNrTGe9z24mmt76V30nsJVh68LK9vjWnpySiok9H24jrAe3oGp9tKb8UJcrQtTUPvd8d6dDodaLVaMBgMqklZOjao3aXRk5NPU/iDI0aufJr9VYA8ceZQn5RluRWTQr8GT6Hgk7Jav9B+8+hwK+bjsTOseJlGY/CY4hgDIdaIyx1IsN7T/5umx6LBU34OOj2CJxTciIGl6HlwJQQpACfl6+lXLDvGwOE0xg5Eqe2lQIeWzksnp8kSIBqsQEjouxSeoQpKcwC8is6ikeYvGVgSHTSNZFx5Ajv8mZQf/9aDVBkbAw+NmlyxDD/adtJ9ZVp5McYp/SZmvEtleZxP/B2qh2dMSrKB54X0ae2v8TFC2t3Ix4h313Jd0DKXy6Wapii2dxSkypwY1DWyU+nL4UhKAb6iKK6s3NNoxMlxGjC3aJRosegeDAZwcnICs9kMJpMJnJ+fw3w+r77zyDiaju4iC9k3nnpwGmg6PoFh5S/RoAViQvxSxyGto1+90GS0FXSR0lEbqQ59Xt3Cy+ffNdlmFm0h+lMCNl5o+VLdQ/WG1p6hccd5I+TMhvRjim1F73/lZUj+SsjOw+Aa3Y1SJxij1cnqe/RdMFDB/yGk3VFan4RsWC+wPOlOV54Oy0ux43g+WBbvRywjBRqPc58ixpagtPJ3/FlIvmkTAJ6xKT0vy8vAarfbFW02r+3CZb30jeZnWZOx3W63moztdrtw//596HQ68Oqrr6ptkXOhXwi8zehVEBJfxuad+i21nzBwLu048cQCcsBr/1FI4yUWfJeedeKGZNdImM1m8Kd/+qdw69Yt+Pa3vw2vvPLKlcnY9XoN+/v70O12t3bTpkCyXaiM1U634fohZBtb/Kr5DbkQ0lExPkAIGp9Z7YP/x9hpvN1T5JGlD4piN7uuvZD6itdXWmhL06G9ZcVlpO8sOih/W7qQ5y/1H68Hjge8M7wsy0qXSnWWxmIOW1LKNzTuQ/YmxWq12qIfZepgMIDNZlOdfoYLkrj+1frJqrPXj/bWzeun57AjbyLq2BOp5SGkNsXxg+/wlDz8p50QIJVj+TzWsxDNKf6nBNfZKTeJ2XJVPCdCDMwVc4jeXA7wdYIyfkz/hNoxNi+uOGMc/JBy8ASF6HPLcaAro738ARCeEPA6yjHI4QCllEVRx3kNvfMEvDQaaGBPy89zNEsM3TcNtF7YRvz4vdR8ER4DO4QYYzcn7aH8kIdCgbeQfK0TzNTgkU2pZeJuBjrGXmTQ4DN9FhNs8kAKSmi2Q4ivLMQspKJBIHRCtaAAvwMO64D/WwZvHafIcqo938XYdFIeMWU1CRxv0upsKosoPalOcO7gt6RnU/g7ZHfuCiF7jqbh/9OV+PhcCszSPOl7SV+k2NzS7+tsw10HGCzw/uCnXeA4ROAznHDCoy61oCEPYmo78IqiqIIZ3mCt5j95xrTGwzEykC8qwnIlGYCr6XMciafRo0HzC6leTrHNKB9Leo8GqDUgv9EdxzF2c7vdhn6/X/3GawekvsmN+XwOH374IbTbbej1elCWJbz22mswm83gyZMn8Morr1z5pizL6tjSTqcDx8fHsLe3B8+ePYP5fF5N8KYeUU1B7b2UMZFaZk50Op2tBSrXgZAOrGuD4LdW/EbTnZYuwckIPLaU8lSv14Nbt27Bt771LXjjjTfgpz/9Kfz617+Gi4sLWCwW0fRrddLqMhgMrkwyL5fLrSN9Y8vAcnLxYEw+VlxoOBxWv1erlbrgl3/H7SNODz2in6ax/FWLhzyxhhxty+3667SFaHugnNFO8bBiJjF14XLCOvJak9sWn1u0aHzqPWaVl8/pCMlAjTZJVki8GhsPo+n5qTOh45vr+PKfIQ+uUzbw2BT+TX0Y7bo3hCTHNXkrpeV55myPkE1Y6yKLFGOoTuViykkZzKmdEBuA0BxT+j62TXdZXy09VxKxZ2l7hHFMXnwAagpYU74aYtKHjH5OF+/7FIddgycAUDcoGTMWLGPLW56Hhpi0HqNGEtpSeosnYg2PJgKKueUpGlz0t9dZCZUXw5eetrIUOi8zl2FIgzRe3rFos+7ypOk8dMWMPStPT3la3xZFUa0YxePwPGPNixie4t+kyEVJ/9AxIeXDdUEMQnnz/62xF+NY8vSSUY2BKnxH2xUD5hgY8hwDLwWlOY11dJ2UVnJaeT4pOjI3vMFgDikIG2uLUhpC70L5amNPC0jE0nHT4OFdzb5CfcAXinHHlpdDf1vfSGVK416jPdVHkejkf0t5W/zh4TutbnUhBQY5jVK70wkoaYxiepwYozv5vfqJv5O+s3ZYWXlwmc/9ndAYD5XB2w93aODR0Va+uaD5Bpper0OHJUM9Poz0vadt8F5MxGKxCMoT/Ftqm5ixuVwuYTweV2leeukluHv3LkwmExiPx5XNiHfhLpfLasKpKC4naXq9HqzXazg9PYXVaiUuBKsDyS4H2B43N1kn0Z3rORDjk0h8keLbWbB0F/qv9DnVqZLtTNPyexHxN90N99Zbb8EXvvAFaLVasFqtYLFYVPcK16mPVj+kudvtirKbXhMj5Rcqj+fnhWXD1eE99CFpfnQyVpKBFHxxlESXZEtp+krz9y1fTUoXSoPlSaC2wU2SPbRdtEVTWhtKfWDpRN7WVruG/HOtLjFyU4qHYV0t31biS68Olez8UNtZvBUqh0+cSTvnU33opmDZytr7mzSmPg3Q5CWAflc2gM1D3rSxvGfFKKTn2jOAmpOxn3Z4DT8rXezqFw1eOuoitc4hx5kbOXXKxrSxeVgKBY8X24Ui4Iagpfw1R/664DF8LFgBoCYhBYM8Qt2TbwjXVefrQNP8WddRiy3LExDUvk0tF0GPUsR8NENdKldDu93eWsHf6XTMnYtWeVL53NBJaffrlnNIB/3bUw+6610y0GLrFmv8UxlHV6J6yi1L+X4OrfzYPhqNRlfsIdyhI0HaqUmPlIsNHNFjRKX+4Y6/Zi94eYHrdRqozXFSgFUuPWnD6ntKk3YsdVP6S2ofXjb+nUN2p+C65BDyN8pmz+6OOkA5wQM19Nhb615LnpcU9KaLM+k4orpIy48Hu2J9BS6zcLKOjw8pyIqQfBoqZ2k6Xh/eDlw2Nw3afnS8428tcMb7yhv4C4HzhEQrP2LWun9PQrvdhqOjo6qM8XgMFxcX1ZGsiFwTcV7wewUlncMDryG7j4LyrjYJyHmXTjhx3xT5YzweV8fDee48lfJK5Rccr/v7+9XddLysx48fw3q9hv/5P/8nHB0dwR//8R/D4eEhvPbaa/Dmm2/Cv/23/xb+5E/+BL73ve8l0eClE2UmYjgcVhNwm80Gnjx5Ag8ePKiO3LsJp8Dw3faSjSfJ3Fx6Ngap7RXymax64BiUfDEt/f7+Pmw2G/i///f/wve+9z34kz/5E/jWt74F/+Jf/Iuq3NFoBOfn59Ux4Fg/j0yyyqcyfrPZwGg0gk6nA3t7e1v1LsvnC1e89xjTPudHPGNbxt6BqSE2FrPZbGA+n0O73a4mZelYRLvbigUi3dpmEsl/CNGpnTqj2bxN4Drvqbag2UGeY6+1seuJv/CxTP9J9ITiGnTnNNXX9MSa0O5QL3LGSKherqOjeb1Wq1V1SgDA9qkLlu8n/ebl/H2Jp/59B+onBOUngKt6mT7zjBFu51j+Xw5YfKtOxlrExAwEr7KRHOYUpHyr1cdbz5CR51EMPJ23HK/w9BicnvdSuhijJLaPvXRr5XvbO0a5edKltLNV19DYiaUvhp46sILAMYjhG0nRh+7B8Rh1+DtEuyYzNRnHg951Za6HplQ5EArQ0zpqfVZHBnqhBQ9jytLkrfXeC24Aa2msdFbghIOmxWAw/e0ZpyGekNLEBm9yOO9NO7UhmyZn0For1yODYu00aq+k8HboGwyi4uQOLzeUVw4HzJNHDl1ojWk6weGlyYIkky3+k+RxSF+GyqbfNoE646fOWMwtT2LGFu1LyjdWH1vyKLYenCe4jIjJRwtsptgGsXJKG898HHJ6tPHJ24HTQYN6Gp1SHpw+HlDAiTAMUFAbxxPk1Z5LeVg2Rc4xoeXFafH6uLwfut1uNXk4n8+DfV5XfnlsJOu9pRc9cswaI9L39J5MTS/h/3hyBQbDYuSYt/70b8qDWA+60xl3iw+Hw2pX7Gw2g48//hiePHkCnU4H7t69C/v7+/DSSy/Byy+/DPv7++pCqBjZbKXleXc6HTg5OakmY3FRmjZ+Y1HHjgjZslpa7Zl3nMamyW1nhNpckt1e/qC8ipPvyMO/8Ru/AdPptBpLuDuW3vNNTzZIrRvSgaDHEeP70P3dofxpfTWbMtRmGk9ZPoGk6+g7bDucjPXaHhxef5rT4qFbK6Mp39XLt960OVGW8tVfHh+XptPaTrN78Fup3t4YhdWnki4P+b3S9yEaPLDagJZVl/+kaze4X1p3UUDsGEuBZfvzNJ827FIOaP3GbT9Km6UbKDSfiuefI94TA61dzZ2xuQmKVcrXheuiJaa9+XGgljPeJKQgBBe2OYKN3gFI6dB+Y551gcZsjOHsXVEMYNdP+0b7nWvsxdC0a0hGN98FwEEDEB5nsw6sABy+4+VpOwfq0pED/I46/o47ZDnGXGpgjr+T/vZ8izRowUsPcHXXZrOpnGTeVilOcgg82MaPc8oZZE1BWZaN7wCz4NERNJABYO+q4XIlNMEl6Skrb+tZKB9POfR+OfxGC7xoQQm6+0rTfRLd2hhEWmLv3OH0pn5Xd0zyMRhKG0srTe/dES3d1dsUND1ngfPHrmVWzjJCegXHCE4cYVC33+9XR29SO7ssy62jQvlxtjQdQN6Jp8+QB6vVSrRB8e/VagW9Xg9u375dnWDx8ccfw3w+h36/v7Wz1TrGy4IncC59Q/8P2c8huysGEj/jb/psvV5Dp9OBwWAA4/G4VpkhekL2phb0tfQ+70spHd9BxANZqH8lurB9cOJos9nAcrk079UDuJQznU4HptOpSK9GKy0b/08Nzt69exe+9rWvVVcgjMdjmM1m8NFHH0Gn04F33nmnSvvee+/Bd7/7Xfi7v/s7ePLkSXUPc2i3dYpfKOkovGd3Pp8n1dVCE3L8RQ80e+gP2ZoA23Y+9XUtnqVlt9ttODw8hOVyCZPJBD788EP40z/9U3j48GEl9wEAZrMZtFqt6r7TXJMLuHiB+pm4axSPHJ9Op7BYLLb4NqZcj5+dCk1mWvnjc/Sz8XQRLUaq6RKNBitmYPESb1+v3vS8q6O/bwIk2rl/Z+22DtU9VFcphp6KOrteQ7FfmiYlb+rLhGSeJ15h0USPaeffNRGPzwnPOLrOeFnMWI+VCzfZL0QblQJ9ZACbj3g8i+dBQeNMTYHT2rFeelGn827qIPQYGKnB/rqQaPSWE0s/TxNyGiWDjreHRWtsAIHTwAWPJIik/ok1PqWytfy0Nox1GELPQ/l5HWUvbTwvzUik6WJ4tk4gmhscWt1TguuaMeihy8ozJVDtyTcWnokc72RPDrlUtz28zhumDY25unS0Wq0qEERXLKfC42hYkAwcil0bZ3V1ptfJjqHHIzs940Kj0TueYt5T2Se1QSi4kIMuKZCBxzVZ9Eg0S7ouVLeieL7LM1QnKUCD6SXZHNJ3Ur4xiP2Gt4lUd2/eHkezrr+g2VGpgVRNh8Tqa6u8JsDpRpsE/0l3ffE2pLLOao+YMVCnDiGExpM2piXZoNFs8QMvN8Xv0OxeTXZosO4kpL/p7ineflKbcFpC9eHlWfC0mdWfll/WxFiTdLNUXioNXl1gpdfS1JFVIT6g9fXYLyiP6P9SuVIZmMbiBY+tCnAZLFutVjAej+Hg4AAODg6qhQrj8RharRaMRiN4+vQpfPTRR3B2dgaPHj2q7oq16KU05eBFzAcnvXu9XlXGro8p/7QgxHeczyxZrY3dmBiJlHa9XleTgQAAvV4PNpsNnJ+fVwuoBoMB7O3twWw2S4pFeMD5GP/GSVlpgYDHh7J0ap24gyWrPDKG50kn8ShfxOrGkOySnnntWy32k2KbaP6KRM91Qmojqx+t9/jOanfLp4xtZ4sGie6YbyVbPcZXD6WVZIFUttf31/x1Th/9LiRPUuHl91h9qPXNdSGG9ib0/k2yJ7j/60kvIUZWeuse42Nc2Rmbi8ma6qwmmSBnvjEz6paC53e+WAzTpDObCmwH71n5dfmPMz13qqS29qxkyuWYpSJkhHoMGm+eHoQCUlJZTbYfz1u7U9DaUS6lAfCtdNOMC3QGisJ/9GMIuQzHWGCZ6FxSaEFV6XgkmpdVjpdnJMcb252WK7W/N/gT+50GdICPj49huVzCYrEIToZ6Vypa4E4H5oVHu9VxImJwk3RTCDEBZ16vnGOd5x8r35sKblNoDhneR4UrDTmv464uDs2x9rQrPQa5LMvqCMOyLKvdAClBHes9TScFfnYBGlDHYHUOe6pukC2Up/S+TjCP//0iYRf8EgpIa4EsKz3fMUTTSAFGmpY+5zYZtZ+kvKz6Wf6QdW2FFmTn7SKdGMDtcc1fo2NVuq8d27TJ+ySRXn7vH6UTIY1ZLeAbU772DO1llNkcdWQS7yN+ykWuY/Skoxdj85DGmsafVh5UJ+E7zrPa9xSbzQYWiwWs1+vgcaq5ZBnlzeVyCa1WCw4ODuDXv/41vPfee/Ctb30LvvCFLwDAZR8+fvwYFosFzOdzWC6XcHFxAd1uF/r9vns85fCNOY6OjuD111+H8XgMP//5z2G1WsFqtap2KTYp+19UfVgHKXUuy+07VLU8pB3VfJzOZjPodrtwcnICe3t7cHx8DIeHh1vfvfXWW7BYLODHP/5xNSnKx3dokiNUT5Sh1I/Eo5EHg0E1TlAW1JV/1oQXImaiR4rjWeXRNK1WC3q9HqxWq0rXajTlhGdiivONx8e47kmY64aH11OQyg8ar4fy8pys5SnzJsb8ObgM85wu0DRucnu9CNh1+6Hs1+xVaVML6jz+jWQDcv+HPtf8lNxtEDymODXA0ZTQjA2ixeblNRI0GnIFqzxlarseYmE5Yyl97lVIXjpSvqcGjjWIc/CNNdHsMR5pWi89MZOvXofdKoPyQszEjcbLlrHqaTONBsmw1QIYHqM3lT+o8+ANHDUh4HmZlMc8dZTamU40eAOXsUjlWXzvDd56x5zUlxTWmKD92uv1oNPpwGKxqAwIlB30Dp860PpEMzi8eisXb3rbcFcTWTxAXlePS9/SvL0Ipff2R0rZFCk6ictA/iwVPJBuQTqml4+1WGjj2qI1FVIgPtX+lQL6WsBf+kYrj46XOrazB5J+aUqHe8D5O6Uc3m7Im7dv34ZOpwPdbhcWiwWMRiMA2F4IhfbmcDisZHtZllccUw9v7Er2ptoc0t+Y1sNXnN8tmm5KwJMHEKRJAmschGwS7TuOGPveoiGkgyyfJnaMYXq89gCvhaDXZ1wnYuqh8a4WxOeymZcr+WRF8fyoN3pVhDb2qMzX7mSMAZWlEo3U5wB4vohrsVhUtvT+/n71HZ46s1gsYDKZbB3nzRc55OAFSY4DPOe7p0+fwnK5rMbwb/7mb8LDhw/h/Pzcned1wmPrNO27htJ4xkgoXykv7jNbY4rbA5SvW60WTCYTuHfvHkwmk2ryFRcL0rwsXRVqE6tuuJjB8gli7H3L57f6g3/jsUGoLR/iNX7qFJ8AwkkwyQamclSLX0mw9C2Hlq+Hd7V8YnS5Rw/XHc8emZDiQ6XY2ylyJGeeCK8vbI2LWFqa8lFj+T1ki8Tk59U3uW09TV7eFD39IkPqq1yxIo+ckcZ/rHxNoQ9hTsb+fWKwXHVNWclsOUjWN02unI5tD+qUpeSTI3BJy8OgFqUpdD8Mhze4iCvkF4uFmMZjPGiONYW00jpVCedC7jJS85OM2LIsr9wVwsvi40wLSscGgXjQTKNV+lajIwdSDAc6trAtqPKSUOf4LS3oY7VljNMkjR8tvcchskANgna7DQcHB1AUBTx+/HjLAaeB1tzBIeyzdrstymjsq5DOuS7Ejr1U8ACFtGOI0uQNgFs8VIdmzDt0xDQf8x69Jo3BUAALYPtEAingE2qDUF/H2Dt4lxwP8q9Wq2qiC9+HeJ++T9nxRHkKvw3VNUamecBtCyloeNPRpHMUixztRW3IoihgOp1Ct9uFL3/5y3B0dAS3b9+Gjz76CP78z/8c+v0+DIdDWC6X1a6qoijg5Zdfhn6/D71eD0ajEXz00UfVUfh07IZsxSbaM3aMUH0ZylcLXMcGsl4ErNdrmM1mMBgMtnb2c7lCIdlOXB/soo28QdmUPLlNikA7ajQaQafTgeVyCcvlsjoqtMkdxyG6Oe34HACidQzX6ymyvCiK6q7pdrsN0+m0ki0htNvtKhZB66jRKIHXXbPzy7LcmkhCLBYLmE6n8Oabb8Jms4Ferwez2UzMAydv0RYOyUUvuF7CiSC0MX72s59Vab7xjW/AH/zBH8D/+B//A374wx+68rxuxPDhTULI9vSAx41CNre16+3evXvwd3/3dyLPUT8DJ/G1ybkUnt1sNtUR3mgbSHUJtVlMm3r9Dm6jW3XAvCT/gqabTCbV73a7XZ1KBXB5R68UD9QmjDQ5a9UF5ZWGuotYuF6n/OLRAU3rfs9409Jo7ZvT5vb473XK1PQgzc97Cl8oTmWVlwqrnVLy4rZN3fxuCm4SLS8qvG0oxWmsWFwM72K8j8t6SUfG2tee51nujI1B07PLHmhBriYHVSjQF/M8VxvGBgOlZ96gibRLRSsjBG4MWkaRx2DS6Ea0Wq2tI8kQ3AGltHBn2wP+vUZfyNCygrhW/4UM4lyTRKH8YgwOAP1IYi1PyWDl73l/xtBD+44a7qFgKKfDchCkenmMHV5OqA+oIorlZw0xfORJK/G7h07eL95vpLIlmaTl12q1YG9vr1q1bx1VQ3nQ4wRrdZHSr9frnd1ZlYpYXskRNLL0sSY/6+pKTT7R9962kHZOeejR9A/Pg/7znM4RExTIYYvheDo4OIB2uw39fh+WyyU8fvwYAKAKxFpBKOm3RX8oDw9/5EBsID41T6/+sOwvrU087c7HCB2b0viJkfE3BbE2ZFEUFb/T7wG2F0d5ZSBtx5BM0uyonAEdica6abz0SfJQs9VDtjO32Txts1gsqrsGu92uetd8Cn9b8ouni9FDqZBkAw2KWzJHkyshO53+rgukgQdaJR8xNl8KOr41Prb0Tqyupb5MjN0o1VfqRymdJN/X63V1VDKnj7YDLnDc29vb0vepp2KkgC7ow7pMJhN48uQJAAAcHh7CfD6vjn3eFV5EfVgXsXKL+4aU/+nY0XQe/sYjgLvdLvR6PTg4OIDZbLa1A50ulPX4pV5Zx+10ngbpKooClsululCFxzQ4nZL95UWMTuHle/1gKg+k8qVvNFp5GSF6pW95nlZ8SOtjXn/ejlLZls93k+DhpRTaPflqdh0+q2PThvzxWNs8pT5S2RJ9Unk54LU7Ps06qkm/6EWGd9zTNNI3dWxsPimbElPxpOd1NHfGxmT8oiIm2EERozhzIqS069Yl1WCw3gGEz8aXFJMHISVkTUx5HFd8jgYr/Y7eRcfz0PpCci5D9EmGOTWAeeAsBdr3mvHhcQI85cXQpkFyrrW+1QS2FkCz6qHxPP2OL0LwBLu0OnjbQQuUUH6x8qOBJO54hhAKRGqQHDz+TvpG67uQ0xQKKHmeh/hGqwPeeTWZTODs7Ewsx1MHiz7tKENKGwYJQmWHyvIgxvj3lBcjXzQnRAs6YPvQicZQAM+SmxpN1vtUp6gont/PGtLJnBbNgOV0890plm6XdnqH6pkKpAeDXEdHR3BwcAC3bt2C0WgET548qXQ5Bp0sGYL0pdp0u3S0NPmZSvsugjSeAIL23DPepLyarNNN8JPa7Tbs7e3Ber0WjyuWZGGoTfC9tijLa8vyNFy/1bUp60IbM5o8lCZaOK9JtgC3O6WxRvNrtVrVvX6DwQC63e5WIJ9+U6eNtHEi+TQa3bx+dWnxnLbE6x07xmN8spg86T3ptL1iyqDfWf5qyK+g/9O0MROTkr6n97NbdZDy4vWS2kayZ9frdTVxZJW5Wq2q02hWq1V1LCz2i0ZbXUi6mPLWaDSCe/fuAQDAyckJPHr0qFpksWsdskv52hRy+Sp8PPFxQvPhNjDva5oPyupOpwO9Xg96vR48e/ZsS4bjvcH4jXbSgRZf0vSHp22QpslksnVkMi9Tyk+KoVi6gae1nmnvLTnIgWnpyVP8u1AdLZqs5zF2OPe/OC/x77GPqA/D4zYU0u/rHu9S20h9wu2SEO97yqwDq+0smzoka6V61aGXt6/WpjE05gDlaU/9PPadRavXz9klQjLsJtF6U8BtaM7X+Jvb2wB+n47mR9NiXt5d3Sny1TUZ+xnCCA0er+DRlK9UXpOOhFSeBn4HRV3hmYJcBjnmZaWlqweLorhyFKKlVENKnNMqBXd4GZqRaqFO8KIucpanBfD4+LCMD08wJpdC1wJ3nCZerkYT/yfl45EpdcZPXT4MtQMGJD0ODU8n8QJ97qXR84wDlXdZlnDnzh0YDofV/X7SMWoA9tFFMTIzZHwAQCW3rssxq+NEWTTHjlFclS4FCHmeXh3uHRMhuRKSSSF5ovG/h37+DQZeQwHykNNHjWaaRpNjdYD3b/b7fTg+Pq6OKeT10PgLrzqw7oV/0cD71mtz8jzwf+/Ofk+elqyVnK0moV1x0RQo/w+HQzg5OYGvfvWr0G634a//+q+h0+lAp9OpAovYBvv7+3D79m348pe/DI8ePYK/+Iu/aJzWGFiBKUtXe2Vt7mCcx3+5buDxsFKbxY4LyksIrc9i8rYCHKH0dcY2rwcuSqB+W84jalMhtTmvt+faCsnPCfmbFOv1GubzeSVf8ChPj9+K0MahRJtkm2p9b5Xb7Xah2+3C06dPYbPZwGw2q2yUfr8vlkP1+C77ni7KffjwIUyn052V/Rl88PgUmpyVZCe9JgvHWLvdrsbYcDh02zJ15DvSQnUF3re82Wyg2+1uLVDwQou90P+tb3ka+gzpDE0uhmIDXMZLsTlerpY2Fp44oqcMSy9yvvDYQzfNnrF0TKg+WOfc9rnFT7E2J80vFAfgaVLKshAjP5rmk1i7/TpiVJ/hZkGSFZL9yO17yj91TiCxdJ70PIZng5OxHkURQ2AMQgIsVSDWgRXwzAXPXQIxThLPy0urh5l44LnJQIonP5537IDwGJhozFLjBwOSkrEnGZ2hMiUBI91xoU0eWOXETBaE3mnlNSUXQs6SxIsxhrqnfM3w845FKxCkOQVSXvxfqFwvfbx86bdGW0z/hspLke+S7AwdR+ql0XqmvUNne39/H46OjqpndfL1OLp0HGj9z++Yod+nGr+5DeYmHQKsZ6vVgk6nU5WnlSndG6EFVKlcDsl/Ds/Y5/+H5HeKDJfKk3SHJuc9vNC0w9dqteDw8BBarRbs7+9DWZYwnU6vHAunAWVKq9Uy7x8P5SOl8ejsXLBsjtgyY/kvBIlX6DiqY2PWRaiOuYIEtI5Fcbl7++DgAN5880149uxZdZ8jDzwWxeXEw9HREXz5y1+G4XAIf/VXfxU8iQZpl/720Ir/W3ZWyFaTnnsCiZo+C9mbmhyODQqlvMuRnoIG+i07MqfPa9l6njT4PqW9vbxEdTLVv4vFokqPYyi23ZoMCGp2mJdHNZkoyU0Oel1FURTQ6XSgLC939Hl8U16Oh2Yq37Vnkm1F0el0YDAYwGg0gslkAq1WC3q9XnUnpgRNnjfRt7ztN5sNrNdrOD09hdPTU7h16xbs7+9nLbMOrLHk/b6OPyghVodI36T4kVJ5Hr+Llkd5GSc/e71eteih3+9v7USt01ahMYe0oA2L4x2Px46djNV8Hw4uD7w+AZVnsXEkPq5D45zqC/p9qjzQ+sIqW6I99K30TYxvKcng60bqGJDaMNa/ipVzli1j+dGeb0JjRZI1OfyhFJvYgxz2aJP213Wjrp38aYOHD7U0ODb5grsYm0FL7/GBYvKjqL0z9kUdHLsKejWBXQbxQggZqdIK1Lq0eg06XAkdOkpJM4aKooBerycGfbTVFViuFxJdvV4Put0uDAaDykjGO+92uTOnTj/l5EdNMWEfaJMkAFcVOP+b93fMinlPGr76UWoXrAcPbmrQDGh+B2iuPrB2heUwnq28sE9C49fj+ITg+aZum85ms61d9QBQBY80Pg0ZER4jnhou/OjsF02H13GScUcRgK6bkN+sybeY+50wHZUB3jpoE/ecZjQ+aXnS36F8PI5iu92G9Xqttg9tX0nu1eU3L996ZCm+j5XBvHzvNzFIkWGUp3PbCjnrxwMmqGP4MXl1y8gt2yx7YpcoigIGgwEURQHvv/8+LBYL6Pf78Oqrr8I3v/lNuH//Prz33nvVOKXBIy6LQmNesqVeNJ3RFLg+5e0jLQTTFodJjj6ddC2KAhaLxZUjWpvoC0m2aeNyF0EjjxwP8SatB44H1PPWd4gYnQ0A1QIK1M2TySQqH6l8K/jjnaCQbMuYnaKtVgv29vag1+vBdDqF1WoFq9Wq4ldeHi0L09C+wvtcQwtIuI5dr9cwnU6h3+9Dr9e7kh7zpDqG276I65Bn0+m0og8XA1rw6LPcOs/K66bowqZhTZDxCS1pjC4Wi8q2mc/nMJvNqvS4wAp378f4/7HxB21MLhYLWK1W1U5ZL7wyx+Mb8fyo7UHlSiy4b8RjJFJa7tPR99rvGP3E4Z2Mp20jxaliY4+ImzLxw9vIn4xxswABAABJREFUw1tc53Oes7BrecV9zV3g0yaTbwKfflrQhH/cZL4WLNufy0nv/BH9H78LxVbp97Ft0MgxxV6nACBeWEgVT0VM2THlSU61N601WWQFTUJGc5PwGBoAce3NjTH63BoQdKIDJ2M99w7RtuZGj8VzktEWy+PcWMa7RQaDAXQ6HfM4k9S+rcMTmvCh76xytLQpskDiD0nwSsGa0NiT8rSMPcmRCNVNMyattLxMyvsS78XIo5iyJRrqwkO/Nw9vPWOCcFremkyivIPBIe4w0YCrVn6uuiAdFv3YnzHOqBeWfmsKoXEvpa8r06VveeBGS6c9t2SIJItzOKScL/hxzhqtvM4epKYLySbafjzgI8loKz8vz3oDKxZS2yM1KGPBy8MaQkEWbNecx0fGOF2hPud/N+1w4qQbwGXAtt/vX7F1cKHexcUFXFxcVOmOj4/h9PQU2u22OYEW4mXJ7sHnli1aR2dr5ae2dQ4do9VLk3U0HV94hek8p2NIcovuYIzVQVreUhrNxvcerdgEco85Xneaf92y8HvcdebZqS59T2mVbJIQjd40+D9fzMnbBf/HxcKLxWLrugsN6I9Lz7VxJdEo5Ud3+eFiHuRTyrOekzAs5OI/pAuPrkW7SiuTfufJe1fwjJWmbPzc/mZKfMXTN9jPm82mWrBQlpeT79ImgZx2YYhOfI4Ltui4SUHdvrbiJx556KGN+wM8jVSulZanl36H4OUxLFfzXyx66fcpNO4akt3JbVbLVrHy9frgoXxT42havjFlS+k89vxNhEZzSozF48fddN7PDY0vmuKHXfCZVR/6P55olqMMyc7xyAhKj8V7L9ydsTkM4iaYJUeenhUzniBfCi25vmkiEBhCp9OB4+NjmM/n8OzZs+o5Hj/JAyPelUlSW9O6LZfL4NGFmuKnz9rtNgwGg+r3cDiEfr9freR9+PAhzOfzKm2KAS+Vm0sp5QhOpyBVyCL4UW8hh9JbHg1gWOPKs0jAA2tlJQ1CSGm5AtPyz9l/UvtogV8eDJLy4mlDZWtBIet3CBqNuOJ9sVjAZDJRA00e2iVQY8DjZNLgcMhhuy40oUP4bgwaqKN3gpbl85XsEmLazSsXY+samrynecc6Z6kOi8SHFl1SGR6+i7VvyrKE+XwOm80Gbt26BWVZVjYC5YNQHlKQ2oMm9G0seAAgV9AspvzQOysQx9PnCvCmBPOaAgZDcfHdd7/7XXj69Cn803/6T+G1116Df/JP/gn87Gc/gx/96EcwGAyg3+9v3YGJePToEfzRH/1RtomDELQApjTxoQXTLNBdoQDb9wVr8oP/j3abFpS2nGUaxJVkP5dlTbd7zIQSpZ0/R2j047+QbemlxUNr7GSIlg9+x/uT2sK0XfC0DNxB7vEJcgLLpDTltoE8Y240GsF4PK58zF6vVx2vGlOOpG88cpvShuPcmqSkMmG1WsH9+/ehLEs4Pz+H9XoNnU5na/EY/z5GDsWk04C0cHvzRQkS72o8XAd4P3AZSXkl1AYeW2G1Wm3FEzw+tqa/UviGb5KQ4gCevo6xizAdH9NavULlcZ8j5BNZNgP9zfWmtx14XaznFKh/tJONKPipDnxHfaze0NrupsoijwzKLU8lvonVHR5odmZMfTT79NMqtz/D309w20mLZUljB/WudDQ/93s4+Glvodi0pF+0caxOxuYWMjGwAuMpQetYAyMWOYx5KyAQk1+IltjgrFeYhwIk2jNL0WgBAGo4oEHS6XRguVxGB3h5+bS+PPAhKeRQe3qDDHSyoNPpbN15s1wuYbVaXTmu1QpYWr+1b2P6OkRD6F0s6gZDebtJBg8GIfC4Hul43FwOfOxzDV4esMAVGld0XjpSZWvdvuX51KGDQpM/Ev/TbzHQgn/jb35EEgb/aD6SY+qRaZKDynncCqjGIFbG8m+bcBhCOl5qC62NQoERS6d5eMjz3tvG3u8txDh7mi6k763gSgxdoQkATjcNdgJcBrxwwRQAVLsRpPzob0n+1eH5OsGBGHkmjSPN/vDaBBK8Np30PiRTvTZkzPscqNP/MWVg/UejEYxGIyiKy/tjj46OoNfrVbtruG1ZliXMZjMYjUbVHbP8PkJMj/xtBaDpNzHBUk8dvbAcbYte/D/VpwqlzWmLcuTS0U3SaIHLIIunLHvNq4ty2Xq5xzPWjfoROLlJJ2HomERQHcvrKKW1bAOJD7Q8kS60Wbl8obID07Xb7UqnarxrtS0Pbnl1B9fN1LamOxBDejyEOjwm0c/lNqcpp89cF16d59XPHlu4Cb1ax/7C7zWfT9OfHj5O7XfKR1oeMfI/xcaMLUMqz6trPc+0cug3mvyIyc+SRdp48eh0zQ8J0SH5Vyn9kjvek+rTe8aEVUduU4T8Y68dkMrrlm0T0tu5yklBjMzUfHxrjHjql8JDls7KaQ/vQk/X1Vs0j9z8sSt4xrFko0p5WPnwdrL6O+S7aPTRsiQ61MnYVMNoFx2cGjTaRdAmBpZBYDFN3cBgjsASOpp18wmVwfMfDAbVRGVRFNUOUt6W+JvSyFd/0YHHA/CYL4I70B5YypbuqOXp+v1+FUhbr9fQ7XarO0UQuBqYOsO7xq6Fed0AE4A8SYU4OjqCfr8P9+7dg9VqBf1+P1uwJ0RP6HnI8PU4ujSdpaTpN/RbS6nlCFjQu2ljg7Z8Bw1AvjsT+U5EPNaJAtuo0+nAcDiE5XIJy+US9vf3YW9vr6rbs2fPrhxXJcl+bshq7es5Bp72303RgVL/em2OWNuE8gfAc9npoSlEBx1PfOIdn0tBmBhnBPPRwPncy/exQRikJ3QaBM075n6cGHqkMYMnYeBq8SdPnsBkMoEvfelLqn2Fu2dwNzSXQdc9XqzgANotHJz/PLD6k/I4XYnPd2YiTTFOZKxzLukdTebX6TspoIC/6+r22HwkFMXzxWNFUcB8Podf/vKXcP/+/SvlIF/jNwCX9xVKziv9LflP1z0eXhRo9lFIRwNs736NaW+qf3Z9OlEsaHukjIWQbkzxE3LpKswH74Y8ODiAbrcLr732GkwmE3j8+HFFN98laYG3FT8CG8cnzYcf0Uu/kWzM0BjfbDawXC6h1WpV/tFisYDpdLp1JZCUB12kSG38xWJRXc1j8S6nDf9GW1vy16guTznhJzbY5uFl1Jvou1N/4EVCrC4M4bp1i3QEOx8nlr3C3/HxRW0nehJGbL2lbzUd7kHo2hoKzYeJqQOVSUhrDh/Vw4+euIcmZ1LK83yDbYq2Gdr10klsVH5yuc/p5/djW/otxg73pMthe4fSUN7hG3S8/kwMUuKPqXa+dL1FCq5bpn7asOuYwE20CW5CXISD++tcHtBYicfO5zJVivfyNuD50ms0PDplazKWKnZPY8cEXTRQwegxfL2gjokUVIilj/72KqIUA1QLUmvfaMaFVba3nbmTEULIoAsZQFJedNICA6d05S4OgPl8Dsvl0mVsaeXSelvOETdyrHx5/tyYxXrRv/H3dDqtjlik31O+rhPEkH7zd00JXUswxfByKA/r23a7XTlIRVHAer2G2WymTjZ45U8MD2pppOd15K0WyOZppO8sOrW86sJqQ94OdFwgrGC6lJdFA/+ej0HMk47dXq9XLRrBI8bLstw6nkqjLcR7sQEQ6VspwBDK2+PgADw/mjl0rHedMYaow3eS/NTK94xpq/+agFaO1rex+Xralqe1ZNQu26UsS+h2u9DpdOD8/BwALschTsLzQAZ3tGNtH/wm1Vn3tjWlNxWpY4yW3Wq1qvv56Ls64PZX6vfa75T8LL7Q0nvSau/ohMV6vYbz8/PqeHupPpjPZrOB6XQaPFI0xbay6MV3oXwkmeLxQ2IDiPgN8qglI732Ged/iy/qtpMHsfawV29L9cpBi/UtbV/aJ5rvLiHG1+O+XarMssaRZrNK1wtQexKvpcHnki7V7Dc+rrzjUaKzLMtqslD7juuCUFk0vXUcJ5dzHrlB5WVRFNWxn1YZUj4piIlxcBqwnSUaY/Oj+Tb1TZ2xrvlSu0Qd+Wt9G+Mz8XystvfKY83m1uSQJfNjeId/w8eut120Onr7SxqDli3o1dXWbylf613I7uI0UX1g9WuKzZxqE0m8I9FUBxZtMTxq+aF1YLUBpy02TqO989bXM/6bgBQD4HJFG+/c/muKtpj0HrnQlD7L3RZNjFGP35ab9zxxJS4XNf1ngfsg9JlHp0jvvOWLO2ObFqy7zLMppvAiZTCkGCA5EWNc8u9y9zk6LJ1OB/b29qrn3W63cgKXyyU8ffp0a7WYlpfk+Gtlaliv17BcLtX3lnNKjatWqwVHR0dV8Ghvbw9OTk6qtA8ePIDz8/MqPd3N1Wq1to4yroO6xkBqgC+2HKksb3qJpn6/v9X+n3zyCVxcXFwpx+NkNDUec+Rb987XkCOa2ichwyMmX77aliKXTMLVqpIB2W63YW9vr3q+v78Ph4eHcP/+fXj06BEAXNan2+2K9GnOqAUrkJXSL7mApwpMJhNVju46ECOVjTspAeTdpNLqOp4HR8qubu7ceQxOycmRvqnTzjFBOhpw1dJwNOWE4THzr776KnS7XXj33XcrGqfTqUuf0UCI1A5NOjaWI0GD36F2o7LQ28ZaenpsZbfbhX6/D9PpFFar1Va/p7YL16/XJbvqoA7N2Ocoj+bzOcznc/jVr35V7aSy+nCz2cBkMoHZbJbdkbd4iAdgeH14oLYsyy1e0vKl+RfF1ZNrQvTiEaplWQYX12nBXHyOk7p01x+XC0inZCtqdd0Vj3tlOP7Pg2lN0RySqVwOpOz2DemwOgFMrc+xTGvyFYF8jbvc0a9EOri/6KWP87C3D3G88DyoT+ylg7ZNWT4/BcaySyTf22NfAEDVdoPBAAAg6q7b60BosSLAc1lG2zGUPhYvoq7NjZD9Qsd6CDH6l/K7x8a06IzZYU/p1PSgF6l+hqQnsT34DnvN9qD2sHZKDP/GS5MGapPgN5od7/XHeR5F8fwUE0tOxPS3Z7dlKIa6a3h5S/PRvGMiBl45EIO6MdibCqmtbnJ9bipddbHLet2ENvT4rta3vA7aiUMWL2snsWpQjym2CLQybSrAFoLXOdhF2aGghZUHd+qkv6W8QgGN0HuNfq0MKY03WBLKmwZBW60W9Hq9rSNe0HlFY4U6rJ4AAi+XpueBIkzD73rUIAWnuFNsBR7pb3p3LB6tKbVhnYBCHWhBLE/a2PcpoG2ORub+/n7Vx/SIa412/FbaAXRd7a7BKxc0OnM7mhosvpHGg0aDFdCxYO2Y0egNOTDtdht6vR602+1KZvEyPePFS1dMX1nOdmx/Sv3k0T1cPqcgJhDp+U6SybytJF6kjjgaXJ7dIdLfnA78bekvKy/6PJaXtPbg5dMjfK0gSYw8pGVTnvHYmpRmPnGFea1Wq2pnLI7Vfr+/VRfpugPe1jnHkFQP6bdUR/xNj3qjNNYJrHnpiU3j+QbrwvtWo4nWNYZvYsdGakAoBZjHeDyGv/mbv4GyvFxE8OTJE+h0OrDZbGCxWGzVd7FYwIcffgjj8biylXHnMqUL9RKdtN2Fr7ZrfzAFlj7LbdtJY5T7It588FuA7aCBpfdTaaa00v9zw5IN9G+tzyQd6fVB+ORXnfZD3YMnCaDvyhcXeP1pS99q9dGeae3ikZ94NDHVR1paTjOmx8WLZVlCr9eD4XAI4/F46yQATgu3E2ImKq8bIb9R62/JPrspqCNjrG+armMdGSvllRIDs+x6yQ7SximXid66pfCTRJcnj5DNxWmX/DBPGR5aaNo60Pw0D594aUIZZ50moPUJjWtZfozFkxqNnPdy2xq0PKs9LRrp36E8Ynwcj93hyS+2Xh5o/ZpKS6rO8Y4Fr1/F8961LvT0aw6a6tZHsw8l+m+iPVEHIb8tJEtSx46UXopfhOS/ezI2t5BtOt9PCzQDvel28zgAMUo8ply6A7Tb7cLBwcGVMtvt9tZEpRQ4pbRJQqgoiiv3nuFkCgUGv0KwyqF0UQNGSoMrqgeDQTXxi0fohoSthF0El64THqWyWq2g0+nA0dFRNYkvrVynwL7SJt930YbesY5GO//2uuEx7rlxy3d+aYFLDsmZs4JXXqeNB/614NJwOIRutyvuWOe8FgrM8HepvBYrF3LC4wjuCla5mkyWwO854hN4Upvyeyzptxyagy/RZAXqvH1rORm8TZDe0GKksiyvHHEo8btWNtbL69jSoCw9OpdivV7DxcVFdaLEcDiE/f19GI1G1cQWn9iUyuHYpYwtimLrmHMAqO7Jix1jHrlj8V4s3XVg9UcuGmPK1ZCbhrOzM/jjP/5jAIBqp2e324XNZlMdfY90zmYz+PGPfwwAlzZzWZZVGsofg8GgOrUA756juAk2w6cdkj1jBTbpbhWuT7mthBN9NG0TQRdOh1Sn3JDazKIptQxNl0rleeqMOzYXiwWs12vodDpX5HhKUJLT64XlD3rtB/RFU05nwsWL1BcbDodweHgIjx49gsViIS48Rjq5X4C0W3fZ04DYiybjcKegxweycF22dwq8/lkKcstBgHjd7wnqx9pwseWn6gbJ5/HYaKEyNN+AtkeoLP4tz1ezGSV7OESvFA/Q6optzesi0Y/p0UfkV4Lw9xptHJKPkENf5hxPnkkLCaFxKNGZOnZz0ZQ7ZvuiyHYE7+cmZb5V7qcdTfH5i9SOKfrO226hdvDqc/dkrEaE9ixmUMUYHd7Ob4pJchpd9L3XSQgFfmPSxzpgkgMeKtPKywuatt/vQ6fTqYIOZ2dnsFwuodvtVscHexWZlI47dFq/SPlZ9cZ8ceDu7e1t3S95eHhY7azD4+bQicfAWVEUWxOJofI9yt4yCL3jMpaHtfxD9HMnQFuRTenBgCMPYGFQvtfrwbNnz+Ds7KwKXuKEPM/f2+e7UFKhMevpi9gJD162FAiS+EniD80Is3hCUqRcHll1jtUzRSEfe4y/rYCRVb4mk0Pf0aObpGMbNb7jQStetpdXQ/yER8dr/eAJhkk0efU/dTClOpfl9o4hybnV6JFOTKD8iMe14nGDdfgwlD7FxvKAtluKXPEESTRj2AruxPJpp9OBsizh/PwciqKodC/frc7Lp/zp2bl0U8HlFtbNClZr4Pdv4s5itMHwKFhNrku0eevQtGOuBX6sgFnTwAka3AGLCxNTgjNeUN7Hib9Y2w+/kWwmavda/CFNOvLJRiqPtXLo9zFON88PQe1Bacepp60kWzW3HEnJj44Bye/hbdqE7LN0gZUuBpa/pPGUBxLP8SM2PceMa/AEeXJA0sv8WEva/zHyAX1W/KbX60FRFHBxcQGdTmdrsTX68HiFBD0ymdIk0Y3/+DHLnN5Yub4Lfy5UNi7GQV7istKDJusQa6N50JT+1dotdvzXrXOqLSTRH0NDrF2m+VPS91xPS2Owjj6RxjvmI91xbdHF00m6LtQuGo28blJfafaP9B3KAOvaH6p/JD9O8yM99eN10uqWQw7wb70nmXE7RrNNU2zCUEwjBI+sltpbo0fKN1YfeBCrJzld9O+c7VRHJ9fhTY/MzdEPMbovtY9oWbH50O92idh24Rsh+N916mzJvRTd7JqM9QpxrvBi8sTvtMqm5Od5VydfDoveWAczJHyt9LEOk1UefRdKE6JN4iOv8KWOXL/fB4BLx+38/BzW6zUMh0MACN8TE1Jy1GnWgjkeo5SXx53Evb29ynjsdrtwcnJSpZ1Op3B6elrRMJvNqp2d3CiONYS4MRsDi1djjZIUoEFKyw0pF7r7g7YdHgE9HA7h4cOH8OzZs+p7bGceCLD+zlVHC7yuVn94jT6v0tAcBI+8Tg1Chejx1lHKM0ST5nzy+nrvMQs5MZ7vPfIz5ACG6NMg0cplfqfTqY7I9PSNZgPwd7E6WPuWOqz42xvU4rKHl4VHEdLAY6wO90CTtXUdsBjnhvOVFHyQ0oeCA1L+KU4X9tPFxcVWoGY4HG7pYUqDxCcWPPKD55sD3vyovMDgTEhWSXyF+WAgGCd0kdfp3boAeYMxdXhaCxxpZWnPY5y/HEDexEUdOBkr0RnSkVpwSsvHy9NSGbytY8Y8TWP5gBJvSqD1tuxDni9vJ/wfFx3g4kgtH60NqZ1g2RMaPOXE5kP7SZLfms+XoidCPBqTVyotnA7pb8k+lIIsIf6U0sTERiQaY+AZ75wWiS5tMjZVH2NeuHN/NBpBr9eD/f396t1ms4HlcgmDwSB4nLNGNy5cprTztFzm8LQUdXV4yK60vqH1oO2Ycn/yi4gctkBsfly+avorNH7wuUcHp0KSgZp+02D5lVZ6HgeQZJwWK5DK8tpaXLfj/2gzcRpj66fRb73naXidPD4N+qLoQ8b47/i95h/y9o+VqZqdoEGyv1PHsMVfUrnatxb9krz1+qEevk3xYzldqXnwvDA/ipg+8qQN2U1anvR3U22aCxp9OWhqwufUdNAu/dsciOFVr9716gNNhubA1mRsDuauQ+B1DqzrhubUpUJzBmO/x29zMF4oD7pzA4OnaJj0er3qiDV0RDabDfR6PfHYRFTCUqBIShuiDXeAWKBHNtEADM8Hj4mjwR4KviOCBvlvGq5jzErGrYVWqwV3796Ffr8PvV4Put0u7O3tXZlcwd0+Hn7PpXC9hm1MwCCnkqLpedDKS7sHUiDMSms5G16DUnKUJKfFkoFFUcDR0RF0u91qd2Sv14OLiwt49uwZzGYzsfyYna08DecHS355jeHQtxIdGCDidVkul1u7Qbz6zMPjUl01+gCu7n6VZHKMbsPdvxcXF7BcLitau92u6eRpkAw9DEo2hdigByImqEjHVh3nPSTvKI38Ht9QeRj8wB04dW2cGFmXWtatW7fg+PgYptMpzOfz6phlXEBEd8Ret7OaA1oduLynOqkpWzU2IFUXrVYL9vb2qklwSS6UZVktTrQmblEWU57Hb2gAMAZUrqfsKvy0oA6/WbqL21mhACceX03HAR4Jm2tcUHAfURsT/F2uOIOlm3KOT6nd+fsQVqsVnJ+fb41BKqtj9X2dYKqWB8KTx3K5rE5JQEgyhNaXl4f1x8nXN998szqKfTQabR3FLtFHJx9S+/smBSLrTlr8fUQOWULHYGhMeCZypLy15yl9LZXHdUZd/4HaOvg7Vs9zvWD51vic3gFt5Yv50d+IXJMNdWIkGvDIcQn4LcYzpfw87c93zlvlYRmeU+AkXxXzzxUj9sCirUnbPOSPavXnYyl32Z40N12nSGOtCZv1M3w64gKxsPx57/eazZ0LW5OxfCDkQCif1HKaFLhWWalGlKbILAEek57Ca4zETHpI9FgMmmpkUqFMjxVst9vQ6/W27njFQINUHzT8pOPMaFoPH2mBPl4eX7kqtQG9AwK/4/dB0DrSSQ8Kj7Ea8y7WyciJ2ACH11in+e/v78NgMACA5/cN83JxB0To+NldyUZEqL48YOfNk38r0SXxe0z9Y8cZ/UaTgda3dWE5jFr6wWBQHSuJaefzOZyfn6s0pshxhHbkYU6nNKa/ONbrtXjcO35j5U3HmDfAKjnn0niQ+CoEyRnGY3DpzhFciIN0h/gmttxc8Mow6qgjYutC24L3p+VoSWVj+R4blQZopWAtPqdBcW0yVqI7VF/rPdKXiuFwCLdu3aoWDo1GI1iv19UiL2qr1C3Lg9x86tEXOXSBN5AnvduFI4uBT6pXOC3I2yiP8FQYKfiG45BPBKU45p8FSLbhacNQEC8kN6wAPP2NwV6cbNfyqRsYpLTEBkI1Ga75VlLZoW9SA5deHRWLzWYDs9ms8v8Atu/79fj7+DffaeqFJltDOl7iT5wwoKcHedpTKhf119HREYxGIxiPxzCfz8XJWJqfNbFR13eN0Quf4fpQp180/yjVfgqlbSqeQu1rKVaVawzwZ7FtZPl2VB7XlbsenyVHH6T6kSE9adHsaRuPPrZ0DLdzNT6QYiVSGqlMLd8YaPSh7SyVE8OzGp/yvLTf/Dtv/1nQbK9QX4XySaEhR9rQWPDYJjzddSOlf6V28PJqCk+l+H0vOqS4oBSbQoT8m5C9G8qPo9adsTcNLwqDeZ13q2Ol1ab8d+rqOG/Qm6ePaXuvIluv19XOD5xMAwAYjUbVDqyyvJz8sFY2xsI6Dpc61Jz2siy37ofF9zRYimi323B4eAjdbhcePXoEy+USFotFdRzaYrG4cszuTUWTATps75gAy2q1qvqBr9jGACYCd12XZbk1ESuV5+2DXLJI2gkTQ4dEV0zQKiZfDSEFpk2WhMrRAkA8b35nFQ1M1wGVAa1WC/b392Gz2cB4PIblcikeK07pijVq+X112r15XngcNSlvGsyn6XG80V1YvA4xgQ4eYAghZszRcSDJFlpXbdcrTcuPKW5SHoaA7ZXC37TeloGKaaVAEIDP9kgJeHlsDcwPJ8gpjaGyQvK/SeAONrrYDJ/jaRmeo4ZRX9IdlfweQwCfo4xtR+9tWq/Xlb0l7YyPQb/fh6IoYLFYuPrn04Zd+ixlWcJ4PK4WH3B7WdIpFFZwivMsv+sVn6UGuumdxSF9wPWPhz8p3VymcZuD1xG/0RZJ4eI/3LmKdefBuVx2GZ3El04NsuCxsWnaJuxhj7+TGvCSAs84Dvi7OvDYr9o7HkyW0nnbMkYfc/BrWqzgk/QO+Q99X/o8RM9isYDpdFrdL8tPWZHK5OOQjmEP6gbJm5TjUlwhJY+bHkNomj6rDEuepegsWib/m4+pFBtYGnuSLskNbxtaelfSrzTf2B24AJfyCm1fyTfBcnPA47t60mnfpn4nfct9AAn4DvuMxzctHt4VtDa1xq3U95JdF1vmriDZhzdZhnvA+4HiunXAdeE66KnbDjexHVMQinOlpqXfeNpJ3RnrJYQ/j3US6qbxpPcKMY/AldLUNdC056H6SIZdXSPAKkdLmzogNUOMB3joKn50tlar1dZRvtL9njxfrS5a3bTvJMOGBsA1h0kyojHQv1gsYLFYwHw+36qndnyIJ/8Q33sVfQ5DpK7QtgJXvAxsP25AlmVZ7X7Fvloul5XxSYPddY33HEoqFLjx8LU2pq00UlpLocQ6gLwfQ7vXrXw85Ws8rfF8jD6jYx7T0nsVeR/VkZuh+knOrZRO+h1r6Et5oczi5daRHzEBXwu0frGBD1o+TrjiqQ0p9d6VEavVNcYRjWkrT71y6BevnUMDDNR+wO+oruY6g4/THEEub5tr7Y76azgcVvYOnRDSZItmj0hpQ3QhQhNcHnlSFNsLZULt00RA5LqdSat8yY6x0kn58TFJF/fF2MIhhPyZFHvK0lf8t1T/WNmF/9MArscWoLJFojEUCI2l1fNdrN7U5HKKDpAm4unvGJ4KjY+649eS63Xp96JuQCw1D0uHemxH6zs6JkLtiCep4EIovCrGOylv6T2P/+NByPbOFauyyueyiLej11/KiZy2bEh3NVFG7DchPedJj/WqK5+l8vm4rNOG3jJ5elo/ixbP+xCkGE+oHh4fJUX2a74Dp9MDy6YIfWPp7JB8jEWKPPV8Y7W3ZYdJeWh8F7JtQn2X0n6SnNDkuNeW1fg7Vj/kSivJhZh24rIsVg5INIae5UBufRXTf6lyxiMvQ2XmRKy8w29i8o9FDjngKfdTtTP20wzrTP9YYRdTprWCVSpXEswhYwidsE6ns7UDYzabwXA4hLt371YO/mw2q3aP8tX4EnIJSI8Bh0FS3OXB33PnVHI2y7LcmmjOcRdXTBt40+46iKkFi0Jot9vQ6XSqI8JeeeWValfs6ekpfPTRR1t3dFAD7qbe08sRo2BSg6vad1IwyxPAvA4gXXzlrJVWalsMaOPO1+l0GtyxY+XH4TUymghW1DV+Aa5O1KQ4ot4yLWMyREOM3sTg4HA4hMPDQzg+PgaAy3um5/M5vP/++65di7l0UVHo9/x4jHZvkJ3S7AlESadThJxnzWHyOu3edLh7udVqVXfe0YBwyI7A/739mKqztPLX6zXcvXsXvv71r8N8PofZbAZnZ2cwnU6rHaZ4qkYsXXVoa0rGa864Nr5vkq7JAeRZq18wDYBuK6YEfz20fYbm4LUXNB8Cd8Pgjlwul732XQy9uFMer5PBY7O938eWZ9kDtL6pgSqer6XHvHljX9BTNGge3nxoWlpPaRIkFlIQsCzl3bqSv4/8Z4Hy5tnZGezv78OjR49gvV5Xp0V5QY9e99TrRUBoQgXrGrvzPTea1Lmpeee0BSTbI2QHe4Oz1sRkDPjkBac3Bp6YnvZMsuepDEGdJJ1UFtN2/BuEZsNrbavVIaUf+AI3XsdQzCFk49XhZ832k/qLHj8fkqnSCSGUZvpPW6AVQmrdJb0kIcYPrqs/Uuui+ftNIkd9PWVw5LZLd4kXidabik9zG4bs+6TJWBQqOQx+gJvXATkC0k0jFKDSnHlvoNQqN2R0aflrBgHPD3kLHVfq3NHjZ/GfdMyUVU/LkNTqLP3mR3VKdyXy8vDvbrcL7XYbFotF1Qa4M9MTFA69k2gItQFPWyeIkRqsltJwYz1mEqHb7VaTr9QopEdCIw/F0pYCSbZozyzUNc5z5JNq4NaZnIttJ05Tjn6lQS8uqwCeyyhedp3yAMIBSP63hRTnL+TUxgQTpfws49zbb7nGEaeN0oELPIqigIODA5hOp1U66/5RzKfO+KgTwLHaUOrzOsGwVOTUOTFjhdoTND8qNyS9rPGnV9fScqTgN/IbPbIYd2UDPA+AaAGX1LFJv0f5Rnk3doellK4sS1gul1XbhmyW2Px34VfkDPxq+efMw1osIY09q36c9z200vy8sp3abdpdYFo5mgzgdqVlH1D+p6ABRlonPvbLsoRutwtlWVa2AdcRlizn9rgHkmwLyX+kg38v0UbzjO1PCaH687SYPrZMy7bh6ay8NX1J5a1mt3r9F6nesXabRYeWR0z+Gm8AXI4POqlK2waBdjM9Upsfaeyhm9NkwWOD5YTFW1Ka0Hijz24a6siAXMgVe+BpLRmZoy/q8mSsLSLJqzr2jKfvKe+H6qr5hhKdlg7mabRype9DaT358u/q8orH3rJsNqt/NPp4mSG/J9XXSKXZeubxvzz0WPaxNw8PQrxrxSz4b88Y24WfH+snW32aUq6W53Uhpt1j6hsb//KUd5PaDWB3dk+MLePxhUN0J03G5u6cpgMasbguWqTOkiaJQkFT7x1esfXE411TvrVA7+/kWC6XMBqNqt98ogNXX1v3NsXAUqxF8fw+tqIooN/vV7TjCl9tpSo1QlutFpycnEBZlvD06dPqWQ5ch4OWu0zaTnSFIZ3w8gQNut0uHB4eQr/f33q/XC7h2bNnMJlMoCiKrZ3IANt8nhueQBCAXr/UFYaeMjVw3pSCCbuGd2U4pTN0H570jVY2503EcrmEs7OzLeXMA7+0PMtYpLI21OYxDkdT45UeGy+VHyvjYunMYYhK+Uj6FO8B/NznPgfj8Rh++MMfQlk+P2KPT8aH6PIGkKw7aes4wvhdjCzi70IOaRO2g4VcfE6d4NiAgWdc4uQ+X3i2v78fLe9pepofPXHEC6wvDZR3Oh0oyxJGo1ElA2PzRVmG+SDdeNdlyI7jPOeRj03hJvktGiiNuNM2dLx1bMCDXykSSk//5zpSGkv4vtfrbfG2VUZsEEObyJJ23KD9DwDVbnQu84vicqd6u92Gg4ODanJqOp3C2dkZAGwvpqBtkhPYFtJEvJRWgjZBtNlsKns5ZiesB6EArDRJYukg/Efv1KbBVCnAr9GhPaPtJO3Y5LZBqG5afT18wseZRncI1sSD1A+I4XAIJycnMJ1OYTabVbIH03viFLhYeTgcVt+EaEUbibbzTQ3KhoDtRXdUX6e++/uCmEBsTsRM1uXSGVROSHIwt26iekiSURqNnCYquymd2vc8BudBqP+pzKfyTNMlWn1ywVOm1Z/cnpfGAX+P/SnxjEafNVmh+VEvktxuApp947FTUsZuij+L34V4KKbMTyP+vtTzRcV16H/XZGyMg5aCJirscdB4WglNOcmeNg0FbZsMsGvlhQKuoTy0d1x4o1OFxgE1eKhDpjmGnrIlWixjBR1rmo63j7RyX3IE6d2wtM5SuR66re9i2wAR4/CnlBXKizuc0m9eLhei9CjKsiyrI2UnkwnM5/Mr/XhTlaTE1zFjLqZeltxJCXLyvK1nOYMM0jiVArkaz1NHS+JzHliaz+dbx0qGZHmMg1a3/zzvYsvR8o0NYlrjmP9tfSOV5XHyQ7Qiz6zXa+j1enBwcAD9fh9arRbcu3cPLi4uGj9CiMuooihcR9Sl6F78H68NQB08n8+vfC/pbV6u1FeazmoywEjHKn/uGRchnqRlhGiQxjovA38vFgvo9Xrw+c9/Hu7cuQP9fh/u3bsHn3zyCUyn02pigU/E0nrSYFTIhgvxDOURHoDytAEvk9pVHjolmjmNFmLkgie/FwlWsNAjK1JRV6+gP4C8TmWRJl84P+aULZofJvkFnK5YW44GUbktoulTmo6P2dS+CLUjToLRBbJUPsTIRi89vD6SfpFkKg0g17FnvbTz9xoNlh0s6Vfer3X6FyepMU9tstR6hhPzm80Ger0eHB8fw3q9htlsppbbbrdhNpvB/fv3q3ZZLBYV/2jg8ovSAPB8MrZJGyNG56XyWYpevW7kprkJGa6Vo40hTaanxkCko9SvG1yOpLa7ZF/w99a3AOHYgaePtHI0f95KF5KvIXlVF1w3ePkulrc8ukzTTWVZbi0w8/IN/T6URnpO6Zbe8b9j2oS3h6R7vflqfh/PR6OB5sPfS/6jRbe3LK1MizZv32sxg1B5KXrgRdSjdZFDb9axKXOjaf1vlelpS4nHJD9Mwo25M/YmdfiuYClTr7KVBFhqoFBK7zUWcwwSmker1YLBYHClbFo/VPxa2XyVfkjZhYJRVpqiKKrdLQCwtZtEyuf8/HzrmVQ//t1Nwy4Eo7SKMqbs+Xxe7VzodDpwdnZW7YxFaLscc4HKthQ5F+LN2LwoXbkgBQpD5Wu0xBqLWpti8JZis9m471UMOaP02Wq1qo68xu/ROcP7V3K1fWo+3nYNyUErLwymATwPisXw73UYWwiLRrwLfG9vD+7evQsHBwewXC7hv//3/17tcsJTEjz1jZEDRXH1niUe6A7l7xl39FlZltWOzf39fQAAePLkSTDYkBLESXWuYoFtRk9B4AFcDdTZTdXPvF08dV6v1zAej+Hk5AR+53d+B1577TXY39+Hd999F773ve9V9aLHnpZlKco4WqZmN8boGTrW64LuiLUCCvQZPr9OJ3sXfosW+Pr7ALrjtt1uQ7/fh9VqVU3uWHYV12e7kDE5bTWAqz6RZyFZWZZXJqKa5peiKKq7YieTyZb/RhdENlEu/xv1JZeD6A/iQhW8aiCVL+oGd/mOIo8faI39FP+IpudXutDrFzwoisvTiNbrNSyXS9jb24OXX34ZZrPZlr9LgeP64uKiOiUKALYWYofKpJMT1Fby2Pkx2LXc3aXcQvx90i0aND2Cf+eIz6TKjl1A44EYWYlppW/q6KQU/pRkKW9/D01an9G/vSfQ1O1zz7VaoZiDpz81GUS/xf/pzn2q46y25/nRfHOdFqiVWRe8DVJjHCm8wL+hsW6rffnfoXylOEKsDLDyk3BTdFDTdNyUer5I2FWsCMHHjMf2luwHrl+kOgQnY62K52gUTwDYgxQDyUN/Sv21QJcFrtClFcWhtgoZHTxQGoKULsaQ8qQJtQtOniDd0k4M/NviAU8Q1TLC6dG1nU6nchYBLleCU7r4/Wq03zgd3gBtrnFYR5HSd3URykNrl5Aw5sEN/Le3t1cFXwDgSvBaGrO5YPFYqDzNoK4b9EsJ1mjBIQmeOofeaWk5D6QGXbENtfFIYU1i8DIlOZACTkuoTUMywhMA8LShFDTkY7TueKrjsMfWQSobg3pUhnC0Wi04PDyEsny+a5QexedxQiVaJPqlow6t8ag55x56pO/KsgzuOAl9X5b1jsrMCYlXpX7w8hJPF2vXSv2Gx6NKtGp9j20sPef5c3tE4nMeVKF8Z/GY1B70ePdXX30V+v0+3L9/H+bzOcxmsyqNVAcLdFewB03p9l0htkxJ7lvtFZJTkk6T+F2Sf9a3+DfnxxzBK0qPxJtIFz82WKoL1oP6BDg+yvL5zhA6HheLRbW4hX6nyXjMU6MBITn6mLZp+xDbC/XBG2+8AZvNBn71q1+p6euWmQPcr5B8CyqLOH2SHWr51pQvaL4ef0+S0XhiBdoafNFvHb9N4stYu5rjzTffhDfeeAN+8pOfwNOnT6HX6221AT0Cn5/oQK9l4LZ2bHyhrqwO2YzecrxjS0or+Rs5cR367CZAk/f8udc+SfFFpW93IRNDMRVKE4B//MX4qJZNYKW35LcES65p9mzIj+O6NlTvVPvNajuPr+L1ZTQ7yUsrXWRk2YMh+rR+CfErb+tYP9nLo3XkeGw+MflrtrjHftfy96Sl76UxSWmhaSUZi+kk+2tXaFoXxsYGYr+Tvkltwxibq2l45Jzk30o6u65+liDFWzy+2ZXJWC9xuxwYUuW9glALRMUipb4xHU07TVJkVqAMy+LH0tVFqkMf803I0MEdSUVRbK2U9QrqlHaQ2pkOblyhj/kvl8utADX+zftVcsBDRlTsu1QejzE0Ut7FBAJC6UPGpHQP2v7+/taqb88Rn00iNLYkIZ6rvJgx4TWmJYMhxsDzlB+ipw59+D50550VbKN/W8E5CzwYSPvMu+rWMt4433kcr5DjwnWPtsswRQ9bzpLH4fbmKcGzW/Lo6AgAAM7Pz2G9Xm/tuvTAUz9uD/B70/l3HliBHk3XIP9pE8ESUO95bbHrcLiobtfkTUjnWLo4VCfJHsAxpU3IaPoa+0YLVkllhmRVUTxfBIf0hJx0qc54J2y324W3334bjo6OYLlcwunpKYzHYyiKy51VUr01ULm7S0cxprymaIulAaHxq2VjAsDWBIpFR4gmjd/p/7nbi+tkzVnG99LdywgMNtLFOnxxHy93sVhAt9utJqK0IBSWyxdycfnprbMGS+9IPor0PdKL/tnrr78O6/UaPvjgAzPwIckuL//wdLH6ImQ/cj7gfS/xDeUtqQz6PfYv5xfpbnCNVpzQx3y81xWk6LaYdBreeOMNuHv3Lty7dw8eP368tZAZd9EWxeUk82q12tIxtB84YuWqx9blqFt3/NYrE0PlWfZ5E8itu3atp73wxlCo/qB9VrcPLHksPc/FwyGbTWoXzfbU0qXGpzw+KX+mfSP1kWUXe8ehJvdD8PjCVO7F2GmhcrQxqPWj1gZamXSHrFW21y/y2oMpY9DTD9w2pQiNhVDZkt0Ta7fx/PjCbZ5v6hhMlTkxuo/74pptk0Mvv6jQxqkHXl1glVcHu9D/lI94HMRqO289Lb2m+RQePZF0TPF1DwBv+ddNp4cGSXhKR1HlYOAUYyEFOQbcer2G6XSqGiExxokVxKAOn4ay3J680/LSVtVL5eVEXWfgJjpHKZDatiwvJ8sfPXpUOfy7moi1xoFXCXgMVm//xSgbKyhaxwClkFbAeduCj2kpkCgpRq9jR50JbWJAu5PRQ38IMQZvbN5aeR6jmcoarc5NG1xe457+HTI0y7IUJ+JxMRDKjPPzc3j48CHcunWrujc2F7x97hmTUt7SmA6V2Wq1YH9/H4qigIuLC1N2xjqWPK33fjgK3tdWO6zX62ohFbbDdDqF5XK5dWoCp58H3mi5MbI3JSiF9uF0OoX333+/qsNgMIA33ngDHjx4APP5HLrdrlgm/63xTqxDx9sntl4S8GhT3PFFeZbuwKN6I0cglJZPy0wNitRJa0EL3ljpcvpA2qk0sZDsh1DQEyfoqb1OecTDg5RvcXch5hsb+AshZAukgtcdf0uLNnbl71GcnJzAv/pX/wo++eQT+O53vwvtdhv29va2Fqxy5PRtsR44UY72/nw+V2V4CiRblB87HJsf/c678A5A9v9i6oi0Y7lHR0dQFAU8ePBgSxZ7gEdS7+3twXw+hw8//LDy5b/85S/DW2+9Bd///vdhNBpt6WGsA14tgjSF7CukC09coFfO4LHZ/LjiXQQEKV5k/7qJWMVNBx/bsXe7Un4O2RFUvwH4jmbdVRtS2jzj0BProPlq8MTjPHR4ZZ9EI6fHW34oD6q3Pem1BXCYhtvCGurY6NwvxhN7vHXg5fP3/B23w3k5Mf5rTjtMouOmx12pHALw+4S7AqeH21CSr+eRH03Y3p+hPnbBa1SXcpsa4KrO9UDSE1694B1jW5OxWmZa4KUppCriEHIHwzliGY0aePg333VC33GB6p1YiKUxxYjxGqn025BRRXcZSQrY4lftqAMpP48DLTnf/Dl3LPm30jsNTQTTPOUhpADXLmlKMRIofTTAX5YljEYjAICtoHXTiiHXWLO+5QarxHdeWihCYyKVF7i8wECiV5HRcUffaflwQ1TKT+I1zfkMGbZ1oMkNniYWUv003ZHi6MTqnJDu0GSnBzE2iiTDJecAg3lFUcByuYTpdAqdTgcGg4GpZ2Lb0gvLOZXSxvCpVAcaNLXKibHbNB7QZJaUv9XeWvlFcbn7End10SC9lBc9ftSSp5yHNH2qBRhCwazFYgFPnz6Fw8NDODk5gV6vBycnJ/D48WPTDvLaGpY8jwmkWGVQ4C5Zukuq1WpV+hl3f4faJSQvvfRYfNg0vLItxN+SPM1ZH87DMfnSvrL8AKmOZfl8gar2PkQ3zbsoiorvcFcePtdseF6XUPlIM/0do5u8/hSlvY49UieARWVlv9+Hr371qzAcDuE73/kOtNvtare7dxFkrM6XgPI9NY8U/8ObL4DO5xRo01rpQjRKNojlKxRFAcPhsBofGHgPgfJAu92GXq8Hq9UKnj17VtlJX/jCF2Bvbw/+7u/+bitPSg/2m+f0DapL+T8AqCbi6YRyXb9FoqFpeOTNTUXucXQd+tmy2zhd9O8YmeqZ3AqVqyHFPpTiXaEFIthGkr7lPjinn36TWifL37LsWo9/HGNLS99yWa61lZQfp4nzWqy/y78JyTZ6YgcAmHpc6ntPfCDGl/Pk6+FrTzmSzkht/xA8+Xhs0lAaT983YftosNpY8tOkKxw5PGPrRUFI56Xo2Jj0N7X9rHbh+pT6dCljNiQ7Ldtay4O3a/TO2JzC59ME3rCeOyUkZ5EbI17DROqT67pHKzf4zuHUAFxddLtdGAwGsF6vYTKZbPVNq9WC5XK5ZeBRo6VOYIAjl3MWS09TAYpYGjxpsO2Xy6UayLPqE1tXb3qqDKSx7zVcUdmEzsav019SsNSiS/qey7LQ0a8emkJGFgaSaDsBXF3oQvPEb7hRi4EcXr7lDHoDqZifBh5AstJJf8fSEou6Rg3+ThkHqeB5Y5BBkg30OODj42O4ffs2fPWrX4U33ngDDg8PYb1ew97eHkwmE3j48CFsNhvodrtRQXeLTk6Phw+8gVpun2C7WI5cv9+Hsry8H1eTPXz1oZRnHSeJBn3/f/be7cey4zoP//a5n9P3mZ4rSQ1JUyRFXUhHtmRLSuzYiR9sCIgDw0De8pLkT8hb8pTXvCVAgBgBHCSAX/zgBE4ix7EdSbCt2KJESiIl3obDufZMT9/P/fJ76N+qWWf1qqpVe+/T3aT0AY3u3rt21aqqVetWN6vTGRpr7XYb9Xodg8HABZI53doxYbIcDZb+4nTRjld6PpvN5uyJEIhXebCsrDEkHWVLsEyrO9lOR0dHGAwGePXVV/HpT38aS0tLuH37Nh4+fJiLPqLHZxMtyl4J6fFQ+kXBmje1VWjHBfBELnLQTlLNqbSUL4/dP6+gRQHT6dQtCJ1Op273PC3goKO1adJK+ikA3DdHR0duR/toNFLvwqzX627ykvI/TV9H2i8xPUaysdFooFqt4s6dO6hWq3jppZfmJrmL0sSPbvbRSvSm5s3HJfG2dmRwCnienD5+/K5Vrmu6k2ySkA70QbvPj3i4LPk0mUzQ7/dRq9VQq9Vw9+5d3Lt3D5/+9Kdx/fp1fOUrX8H9+/fx+uuvYzweo9VqqTtYgXAfSHr5jq0sO94VrbXfWfuwPpxXusrGee6DFFhljzWYLv29kJxItT+KQtr7tMDi6OjoxKlxVrs3pWyrnOO2jSUGmyI/y27vlLxCMT8+0cDtMc3HA+YnKizlc72o8XxMX/KyfP4UvdPsTuuJE3n0dWp85bzLLckDEh8H+9sa94rhvPfVz7BYSJ0l5SGPRccWflvL439r14aG8o9OxmoKK6QYJCxEWIVhquIsglQDgP+2OhBcYFoEvi+oKb89TUGboqgsdEn6pWEaCxhreWhpfLRpfcLfUeBlMpmccGrlMW6+/grV3fetL6222s7yne//2FjLE/AI/R/7TgajYuX7glc+48TXZiE+SUnvQ1mGQswh5E5bHhpS+CDU1zL4k8JHckIgBu6c8G987aPRR/Dd2eiTUfKZlWb+HS8j1laWMSHzLxMpgcUUeooaRaEgnJVmLs9pt8fy8jLW1tYwHo8xGAzmdnJI5NXDMdkjZdyiHCy+axF4Mpmi8b5mg1jldZ6+5nn7xh0HN45Jj9MuzCzL1B2yqWNLo1HSFaqrxqM8DzpukyY0+Y5tWZ5Ggw8p7S/ps/gHwJNjJGkyYW1tDZcvX8bFixdxcHDgAmjSprLQmeKPaGny8F9efa+1lcVHIljaOoWmmCyUfKvpeCuPkaz0TSLF+kSTKSG9Iu+e5Ho1thOJ+FHyJZeBtACCt40mH7PsyZ2ydCemNr4pfbVaDdJXFu9qNpIcexb5TcfD9vt9DIdDLC8vY2VlBUtLS66t89Ia+06OH+l/xRbBpvgE/L383tcnef2YEHib5v2e0yd9WHnnX6xuPF9Kyxcn0FUAwPHip4sXL2I4HLp6kF6w0i35U445WthUhq0b4wXeRkV8W8s7K02p+Z02Un3rRcDar5b3PnucpyvbDrbYkzEU8U/IN9D0OR+TedpR+07TqzG7JWab+nSeBouNlqc9pfwK2bI+XWLhAfmtJa7j43FL32jl87qGygnVKY8889kIHBovxPzsRcmqPHW02IQ+W8dKUx7+Dsn6kO1OaSzj0mofFsVp6icNFj8/D31nXa+iiLWL1Mc+/WKBbGeffvHFRnx0AjnvjM2DIg1A31vyPG0UDYZw5HGwtHaJ7Yj1BQL4+9iOOx8tvvaw3Ikh3/n63BI8SgGvV8h5H41GJ1arh2jVwI2NFOXoa9uQIZcXeYI9ZSo9bkinjAkZ9Mmy7MRdekWCGDxvH1KdPJ/BK/mQ6I7terWOGW0chhwB+U2sb6QC1HbEyiPQQu2Wer6/lj5F4abc2ZUyXiyGdl6DKpTPaQRjNJmWEsziv/OCB8v5j5VeH/b29nB0dIRr165haWkJt27dwuHhIQaDgZqvdOSskPTIu0y1extDAQeJEC18sgSAC6hPJpPgLk3eh7y9LQEo/rc1IOtLG6s3/+7ixYu4evUqbt26hcePH0fLtYB4XZOtdCRvo9FwJ2tYg1X1eh3j8RiPHj3C9vY23nzzTVcG32Xn+57/JjqLQI6bFFkZQqVSQbPZdIH0Xq+H4XDoyrPueEgF0Z5nR1xRm+s8+DAhZFmGRqMBACdOiUhFvV5HvV5Hv98/ISdi+pAmM/v9/txkpkzHbQ1aIMOfj8djjEYjx1d0dyyng35owQaVeZ7A28wajNVkgSWoTeWl4PLly/iN3/gNvPPOO3jzzTfRbrextLSEfr9vuju2CJ/RLku6SgDAHE+k6H0fuA8n9V1K3qFgJX8fag8uv/jdyr6dTL48+v0+BoMBlpaW3G7ner1+YtGPFXn6MHQSRagczVcqC1Y9fVo4z/qiCIr61tY0lrJ8eZP80E6W4HIgzwSBps9oYc5pTCiEAszT6RTD4dDZsQT+Nz9JQitP2uCh+IU2KSbbLaa7Yvaiz1YvArkAzIdQEJ//DsUJiR8J5L/RO4s967PBtHahvqRJeLIH+ZjgdZF3DftkNOkpvrCZn1Ikvw35oZZx4vPPU2WLjOOeRozlrKHZ6mXoI8mz2r2f9JuP65/p3eL4pNaLTrbj11IRpF6Qsoc/p/T0m+SHxSYk3WmBdzI2j0MRC0BqFbAorFgQ0Jqfjwb+rVWgSoeW52+hN4+xRvlbgtsxBZFHaVlpCCElOK85uqFv+P/SaEuhIaSoQzvl5I9WZmyM+MD79bSFp2VclGWISMPdml7SYglCL6IdY3yVd6KE+kDyT5E6SGOyLMi218pIKTOV96idQmWmyBMrHSn5aXlphn3RPg7RlFpGTG8W6ecURwpIn4gk2mK6wfcdBXhHoxEmkwn29vawu7uLSqXiAvuawRayBYqO3RjdoXQhg5Le0er38XjsfuSRUVabpkhdikLLv1arodFouB/eX1rdCFI/aTylpacAho8nLDKOgl2TycQFy1OcAks5vrL5OODtEwtk+PiDAoztdhvtdvuErpATCVbeKoOXUttqUTLaCk32anJR05O+/GTevvKsMlv+5KGDxoBF5of6ULPZtTScByngKI+apcmvkC7l72R6ykv6PXxhDJUdahsrNP/Q14++Ppb/8/t3h8Ohm7xbXl5Go9FQA2u87BAsclHzE6V8tvKqhlSbg9crj00j3/nsW83OjfnWdNUABfG5/CbepFMi6JhfmhCSdbOA097r9XBwcDB3dYxW75hOsZYZ8sHPQl5b/Y8ycVrl+FBmOxfxUVLhG4uhd5pMtthFPj5dBGL0hOpG+ovkKT85R5sYKUO+S5otdk0RWGS79lz7NkWOkb1h0Xc+3R/yN1PytKTz6VSLXUHpQjaT73mof3xlavo4RFuoLaTdtkjk1Rcp8imWh8WOCcnKVPjaV/vbMvbPWv8tAkV8+U8ytHaROsuijzlC/q9FPsXy5ljIzthFKseiCAXa8pQp8wmtwiLII3S01U2++w1jzlbsGTFnCqSythhYloBJyvvY6sAU4a+lDd1nRYYnQdaP9xU5uvQNT1tkJY8WbIspyLIdodMQ/lSOb/V8al6EMvIrijwyx2JAybEZWhEaUkgyT18QTctT+5vDtzM29E0K5HHdWqCKQyppQpl3O58mLONzEfWy5snpi/FSmXKG+MJyV7HkF/qfdjPygOTdu3dx//59t/NeO8JXwjr2JE30bSyN1fnndBDNoXu1aQfw0dHRiRXLFsRkUojGReuc1dVVVKtV7O/vo9/vO9uMAtAxvUFt5qOVjudtNpsAgMPDQ28bpDjAhNOSVdqER+r3vJ3oSNMbN2649i5DRxcN5OfBWeuLFBlM0E6k8N0Ha93toZV31m1TBuhIerormxYP9Pt9ACd9Pt/doNPpFL1ez/1PNkqz2XQ7EEm+ZlmGVquF4XCI4XB4YmX3abQr93v4PaVSFrTbbdRqNTx8+BDtdhuPHj2aq2co/7KQNxDNv/flV3Zb55WfBNqRRHxCk6axNqjVarh69Somkwm2t7fd5Lm8juDx48eo1Wq4fPky2u02AGA4HKLX650Y01ZdNZvN8OGHH2I0GmEwGKDX681N8Fh1HS8v5v9SO/HTPs5CP/hgtYl/2lF2LKMMyFMXeIC2SJ9y+Vqm/kxpQ82WpW/pZImNjQ0nG8bjsTvphesF365TbWJMK5f8BoK0WXztHDqFT7uPVMujKDTaOK/44joxn0fKytACT56njyZ6HktD7+j4eeqbmF8q6aWTnur1uncnNa8rADX2GhobVr8xj3/5cZHXmhxK8St9oHYv84RBORY43SEZQnwheeiTivOoB604S9ppIwFfwA7oJ3ppslHTZdb6pIw102SsRmDewkOC9DQme2KwKCWZlqe35K0FfDksbajREKOXvg0xYFED0Ee7lmeMBywGhvbMykfWepIR4qNX9ocMdpcJax1DBnWMrlR+tOSh0Z3Cu3nb0UJ7Cp+lKJW8CkgLOPj4zFeW1rY+erT687QhnovxuXbMiLY7xAdtoinWpqkBY82pIBpD34V4uQjy6sEyaOBBBd87WV4qny9Cv9CkF3cWLIE+jc99+WdZhsePH6NaraLb7TrHVC7kKdP5kbRyviwqlzUZwfueJgHkTpaY/SLz9/EMf5Zi86Tqd+KH6XSKZrOJy5cvY2VlxR25lqefQvqV27j0wydw+J3zofy0MmmHbSgYFdOjXKZa7TL53Np/sbFH9aF8uHyXkww+2U/lxxyr04JFHsb6Tuo97e8QD6TQ6LMJUn2L0Hvej/K5dpwerxf/li989PGd5s+Q7KzX62i322i1WqjX69jd3XVyjrdHrVbDZDLBcDjE5uYmbty44cbt9vY2hsPhibYiOVMUVt7Jm6+Fx0L2oyyfTougBUuz2Qz1eh2XL1/GrVu3AMzr5xRaUyD5gp8kwPmI33dI9KfENCyyWsLq/+T1V6Qs4H2dZdncqRa1Wg2dTgeDwWBukp3TNJ1O0e/353haymcLnZQ/X9zkkwOp+ld+J3VbaLFnqq6IxTWK+nqWss9KnxVBGf7yeal3HvvC4iNKvpXpU+SNTzaktqFMz/tmNpu5xRS1Ws3pVFo4FMrHamuH/KnQ9z4ZGMs7FTE9GbKfZFtKWNuoUqmgVqu5tPwUDZ9tqLWh9izUNrHvYpC6SX5Hz2ihc8wWToEsT46t0Bj3xUR4XYr4+jG/TaMhZv/KtLE+tdITg0VWxtqLeFqOY8k3Rdv944JUf+w84TRp9Y1Z4qdQ2izLTtyDzn2fReLU7ozlCAUBOMoYYKEgjkZTrFxffhYn3HcPpLx3QdshUJQZfMEQjca8SAlGxAyE1HItkIZdijHNV9/IlcSSFr76IkRDEZStgE5D2IRg4bs8NPomEfIiJY9QWp9RxY+n42nkqlDiPz6uYytRrfRwWiwGYiiNvPMSeLJSKfatRlsRWmR6akdt1RMdtRfLw+pUUr6WdKFnobys4yNGc8jgt/CDBUWdYIlareZWagNwwUd5z2HIGAuBAsnvvPMO3n777VyBw6Kgo5JTwfV+LCDO9eLh4aHb4RSa1C6qh6wB6Lw6lR+ltrq6ildeecWlj+3yzRMQo/R8BfmFCxdQrVbdPah0FCS1Nw/iyLLp7yzL3P0nw+EQ4/HYbMdIB1YGOFLkpwyA0+/UgLpGIwXtK5UKWq0WWq0Wjo6O3N24mmwq224pO6hioZHzAf9Og6/vzgNkXTVn2Be4406vNg7oCFUAcxP4PJ1ms5BfMhwOsbq6iitXruDatWtYWVnBt7/9bXS7XbTbbbdSulKpoNFo4PDwELu7u/ilX/olfPnLX0a328Xh4SH++I//GI8ePSqjuU4VGp9osmA2m5lPkgCAg4MDAPOnz6yuruJzn/sc7t69CwDuvuzQjlkexM4zBvn44XcMU59SfnREfb1eR5Zl2N/fL3WnR9F8fOPC8q3cPU3jgfdNrVbDxsaGW1BGkyh0fzLVZWdnx+kcef+fhRYar3QXuPX7PG0pJ0BoYYBPP1qCxRKhEwIWJYM/7kHmFF14nvRYCDEbrYgdpPnyclyfxZ3IEjs7O6hWq3jqqafcfeDdbhd7e3sATt61Fysf0MdVKLYR8ku5XUo2pe+kMElDyLeWOspHi5RHWpn0t+U0RQ2VSgXLy8tOZh8dHeHw8ND971tEE7Ib6R1faKylIRvBRz/vN34ygawf7xtOZ7VaxfLyMoDj4+21uHhZE4h5fLuzQBFdIL8N3XlN8NWzTJ2kjXcO6nNul3xcT6/7Gc4ONMa5HOIxdEpDczvD4fDE2OB6aBH8NzcZGyvAGhywQCoGSzkWhIJLPuWjKVWLwcjr4HOiNNr4e2sQTL6XkzMxei0GoqSFT/TEJhJS2ovAGTwk+H3lx/rWl97X7lqgTwYeubMXMmZC/J0CrU/ot+S5soPiZdXBkkfMIQgF8Hz5+8oss14aUpybGM9JSKNaSxsKlmtl+miJvfM5QNIxsQYurP2h1deSv4R0nKXTZw2AWcvm7+QRGT5H1DImYmVLmWGlVysj9b2EJTCmpdfkHD/6ltfRKgusOoMcTr6jmybxtaMjY3InRpfvfVnyigKsAFyw2nf8MG9fLdCUOtZiafjfId3sg2VMZNnxDtV+v4+HDx9iZ2fHrei32Ek+pBroWoAklI4mI2mnsg957HHL+ODyI0XHAcf2Eqd7d3cX29vbWFpacryolW3RVaE05y1wkhr4obyK2izc1g6NXy7baEKDB8FibVq0vTX9JPtayom8OihFdvEfWkzG79/k9paVHn4lDf1UKhW3yCKFRiusfBSSIVRH/huAm2z9xje+gfX1dVy7dg1bW1tz5eaB3LUp7dsiMlvmx5+lINbvKbLI5yfzYCTp5Vicg++GzbIMu7u76HQ6uHr1KpaXl7G2toatrS08ePBALbsszGbHVzvs7u66hRFEF6cxNGmSZU8mpfKcDhLrI83H5s9brRYAnNj9l1I+z1dDGTZeHpm4KGjyuoz8Fl3HVH9B2qop8ShfLIfn4+NNCyQfh2iP0cpPZZE2er1ex4ULFzAYDNyxxZZ7UDUaOM007mezmZMR2sScNnFo6TOfzxCydUO+u6Uftby1dDHI9l9aWnILNS1xVS3uoNWDyuLPQjLYx6dygYyU6TxP6lO6JojraWlzaTSHxrDs+5QxwPOPxVPK9ME0mac9i/keKTagrGMeO1eW5WszTQ6G6KK/+cTyedF7P8P5gGYLc/tBk+O+8ZTHJ0vx2807Y0MC11pYSn6LgNaovPGtgzmmxGPlE6xH5GnM4WMin/AM1YPnwb9JEW4hBeBL47unLkSDZjxo/4fugggZIBLajkS+6pYbpxYDXgYSLJB9kzf4lFomlScRcjZCijaGmBER+84qj/I4BykIfWsxNLTgE8+b85vG5yl3vFn7xeqcWnkzb/tajcmY88SfS74J8XZRHcX7RK4I1VC0PKtM0sZtTKbnkWMp6TS+88kjei6PwObjJUXuc1pIn/BdqbRDMbZK3SoPY/2fMgZjyLLMTSQcHh7OtZXvbufQuLMGNVLHj9WOCcH3Xa/Xw/b2Nu7du4fHjx+bv/PRl4dWzlsh/iQ7g46MlrujT8MBzeuEEygAT7z0+PFjbG1t4YUXXkCz2TyRb0gOS5qILv67TKTKubJRVO9ogQpfnWazJ8e4kiyVO7DlhIjMk9P9ScNsNnPBzqWlJUynUxwdHQHwB/p8qNVqqNVqbrc8ADfGQycYLJLHJeSEH8krTbbXajUcHR3hD//wD3HlyhV86Utfcjtj85RPfC9PkJJ8XFT+aUeSlQWel9wtFtP5Pl1Av/lpTXx8cv+A5CgdZ7m9vY3JZIKXXnoJzWYTzWYTk8nETcYuCrPZ8Z2x/OjgVqvlbCg6cpNONNHqTUddU50sd4zzttROHLLSTic10GKJPLsTTzNQHPJ/UvPI62ctAlbZd9o62yrzQ2Oaf8/lXpHT6lKhxQC5XOGnzEi66vU6Ll26hN3dXbdDk77TbIOQzUyyi189Q+XLa1MIml2i2Ygh3qCxzmW1r0+1fEL+qk+3yO95Oov/SDTW63U0Gg3s7e25xS4abTJeGYtXhcq02Oj8O1pwRnzEaaQFabwsmoyl6wboHY+dxPrT1wbym6I2tkZDUfkYs6klv/jyCMW8LGX7/Ks8babFZmTevjgPpdN2ffMNUqepayWN58nv8cU9fxrBdcps5r960vct561UO8SCwscU5w2unSW0xkxx6ooYtr53pGBiefucAM148n2jBf1Cipt+x454jNEu25gcpCIK0dePWjv4gp3WIBIN4KKBYd9gXoQgL5Kfr56LpDE0ie77LmXcFqX9tJStvIeSEOJNa9tpxluK0uYGYFnGbAiLCpDJADPJuDICfJR/XtrKgDUvK52pxkhofJZhxGugoGOv18sdNJNlzmZP7kaSE5NF8y4ToeA9Oa+NRsPtkuHtyZ+RLKFJmFgwjoIkFCAu6xg1Pg5l4IevoI71BS2eAoBut4vbt2+j1+u5+1uBJwvjKEgQum/Oqndms+NdrLSTLssyNBoNzGbHx2f68tfy4XLJuttA5qGBbDCrzAvtWirKz5PJxN1FRmOOJqt42XmD6iHw+pedt7V8IH1Cr0yQDizLvpG0092ilgCTpMvne2h2DMkEbcU8Pb9+/Tqefvpp3L9/H+12G1tbWxgOh+44Ve045WvXruHSpUtu8QAFCc8D8urTRfPXpz/9abz88st47733cPv27blFrMD80cb8SMOUQIkEz18LShPa7Taq1Sr29vZME3uUN4cct0Vtg1hQlfInXUW6gdfZNyZioCC5tHFSeZzXn/TCZDJxO+7p6ojhcIhqtep2u8krJbS65EEoFpAn3tDpdNzxzqcxhlJwXmJseVCmb100vhLSv9JOlvKlzAke7tPL42dlWq38opB1kf8fHR25qwMajQZWV1fnbGgKfseOGQ6BB86ljeLLg7edpZyQLOB2RKhvZR9YZa51QS+3/YnvuJ6ktmm326jX6+j1ephMJs4n5nlxXcEXV0mbKaZbLDRL8L7h4Pohy44X6zQaDQDAYDBwPpPMi5enQfZdyE+W+YbSnCfE+E22geZDlh1nKwJJC/9bytzzQjNg9+dPi49C8eLzyssWFKHftwGG85G83oP40XcaTRmITsZaB2hqgPY0YZlcsATWykConWIrzWN0agaZ/IYrVg6piCxKTpZjgaTFpwDztncscKyltxpRWvuHvvUZIhb6YgGqlLbKOy5TlXNMwGnlxYIbVnpTnZFYQNBabl74nDz+N28jrX5SXshjGBYBHqAsowyL0Zu3rBRZQHIxdgRoLB8q19cHMSclL1/moZPKtMqHRfG+rw1DtPjypV1d3W63lEA50VGtVt1kbOzumlgfLxIaX3Pnmq9K5mn4ineikRx9iyzmR5um6JuYHKQ0Ft3ia1t+/NVgMMCjR49cgIffSUM/9E7SYmkHSQPxIAVF6vW6GnTW8pJ1k7oxZgvG2qtsHZHC29QncjU83/VL90xqO8rKsFdCtPE8F4FQvpLnitjCKXKb33FsyTuVFn4UryantHxT2p/bJvStzJfqt7GxgaeffhpXr17FYDDA1tbWHG2aLt7Y2HA7+ADMBTlTaJR9wnf8WXbkWKHxTlF+tga2geNxdOXKFbzwwgvY39/HBx984OrPdzHxvqnVahiNRlG7JGQ30g/xHOUrQQuT5D1QoTGX6pekwKrPeFlZ9mSHLNfzVl9MyhrS4Ry+uETIvuX/853NFOCivpnNZnOTsal2ZoxHfHIlNLEVK4+OzeQLzyz+uGZLlGkPLkqfl9Ufi/yWwyc7FqHLrfZrjDZf3nIsh2Jm8tmibBdeTr/fn9NZ5H/R/7QII9XHk+m4buSwxOtkm2s2Af8/Fv+UciPEA6G+9+kbXyyL0km7htKT/9JqtVzfhO6jpYlgbaGbtKVS5VTMbpU2NreBSP/QTl9KL+ufyueaPvD5y2UjJc9QLDMWF4mVQ20QsgtjcYsy5UqsTzT+43yw6HjKIrBoufxxoaEIUn0DyVOkq3z8o12BxvNeRPsV2hlrFYjnqeNTnXtremuADHiyAsin6FNW/vNyfY5MKLiiKXXN4EtpC54v/15zNkO7bUMKQP5vWQUXc5g0mkOwOL5lBFVknhacpzEXgs9ADSFP3Rbh/EqkjhEOKQ94QCuV5tgqRss40ORCCh31en0uD6qHZWd5isyV+kcG4ywguvgOOit4n1t2mNG9U7TbyyezZZvz+pUJS9CC11HjCwtixnyqruW8FHNQFoE8d5ZxpIyBvA5xqNxareYmH+g518dau+Xd8erT/xKW1fPaznWfDWrhKZoglTu1Uu3E1G/kt3khx5WUe1KW89/c4Vg0nTRWKfjz4x//GLu7u7h16xYODg5OHL0cA9nJMhiVV19+XOwlDTHfK8ueTEbRbi4OajPyS5rNJqrV6onJBsnnH8dASNnQ2oVg9Y9/8Rd/EdevX8ft27ext7eHmzdvujtpp1P9Lu/TRCjwxWUKjeFms4lut4vvfve7AIAXXnjBmzdvFzrKnHiQjiaUci0WLExBlh3fny7vq0u1IS2w7IDylRfy61P5YzweY2dnB6urq+h0OoVknzX4CzypP+0sJ7mTIvtTZY/00fkJGFmWqfJQlkX5HBwcoFqtYmVlxUzvJx1FfN5FlVMmPb4xeVoTAZrdzHfEA3a7vMy+ItkzGo2QZZmbNCP6Op3OXLm+PKR+DG1IiR1Ly2MOk8lkTq7wbyy+aGjHs9SHoXa1+CRUTko/Uh273S5qtRoajQY2NjZw6dIlAMdt1e12MRwOMRqN5haRaTSG7BTytX0xqhAs40TmSXxx//59NJtNXL58GY1GA5ubm27SdmtrC4PBwBvb5vrbF8OK2c1aWhkL8cWrzwqW9k6VAxpvxPjFmm+Mn0K2njzG/Wd+yc+QArkgROM/uUCE0mooql/npPMijapQ3mUOnpTJHIuSkGlSAm8+IUYKR6MhNLEXg085hPLT2iLVuPCliSkqre5FAuuhMihvS71kgMXS/lpw+DwgNu6KjPmy5IXkR80BKRLoTvk2NaAvjbMYLbGyLeMrNuZ8E2YWg5/n4zNiLZAyjgfi8+RnKS8EXyDZ11Y831AbpIwvCgKFvvf1kcyrrPaT7WAdK2X2X968fBOHsf9T4NP/KUHTUH7ac58MSGkni20jd4HJwKU1L0oj80j5ntPF8/OVk5oX/54WXci7COW30g5IKVNCLvaI1TNWRsxOsth+lrxC3/rSaG3A78Wt1WrY39936ehoYvk96QyNp3jdyrBjQsFAer9oZ79IvlJ+87wogJVlTyYfQvYuHR3K5YMsR6N7EfZgatqQv0ZBPn5cMi3G0PKlb/mRpFl2HHjmE3j0XMpOK1+urq7iypUr6Pf7yLLMlVev19U8LPJV2nH8mfwm1N68biHwMUp3fz569Ag7Ozs4PDx0gfGQbU+ymYLL1qODJR2xehENFGDmu3I0my1WntbWMdpCfqiVjli5UpYSptMpBoNBrp2oRUA00JUIpA/z9LMvf22scP4nOcDvovS1kwQtTpH5pU6i0Lf8dyitD0X92jJQ1La2+MynwaMhWmJjVUvr8ze1d1b6eBkpdpvMp2hbSvuMyyz6nxYS0fj2bbqQOknWS9aR61uZhsccgPnj1aV9GRvzPvlrkeGhb7S8eXqLrcXT0GKl2ex4MR0dvT+bzdBoNObuZpX118rUyvb5dSGktJNW9mw2Q6/Xc/xTq9XQbDZRq9XciTm1Wm2OLjmuuHyWPOUbp7x8X/9rPoFWb0vbyHr70qbKegt/p+bLv9XGrZY/p0l7H+KTkG7U+shXdl6UISs/jvi41ds65qw8qulaS0y2aJvl3hlb1r1gZ43QEQ0xpCgmi5NmOfaqzICHRQn7jhVLpS80EPLUKXakMzcQrceuldG2Md4p4kClwmos+lCWUlsUrLtgivRJ0Tb0fRNz4kN1404PNwh949QSMAoFMULQxo1mAFuQ1znl36fwtLXfQ23GHWMeVNICCbHAA8/rtMdeyEG0BKpC+RalgdMiUavVsLS0hNnsyR1k9GOR+1YaZCDutBFaxReiiU86xtpDBjMs+dM3dP9q3nsnreM2ZDDH8m40GhgMBvjoo49cHjHbxmLEa5O50vbY3t6eW2VZhm5P1X2cD6xtpuWj8V9obGRZ5o51vHr1KtbX1+cmwCqVCtrtNkajEbrdLhqNBjqdDvr9Pg4ODjAYDDCdTk/c603tWK1WTxy3ZmlfLcCySIQCejJYKGlbFD1c5xRFrA1lGVzWaIu0eF58YZfWjrz9pB6eTCZoNBpYX1/HYDDAe++9h8997nO4ceMGnn76abTbbbz99ttOf0ynU+zv72M8HqNSqeCjjz5ClmW4fv06rl27hi984QtYW1vDD3/4QwyHw+R2kvjLv/xLfOc738Hzzz+vTgxLlCVbQ7xVJFjH8cYbb+C9997DcDh0d2fTWKbdOtRH0+kUo9EIm5ubuHz5Mj766CPs7++foEk7gYR4WPPnSWZkWeauGuj1etja2jLd2ReDtK/Lku2pMkkbD1KOxOIQcvFLUblQlmzRQDwk77gF9GCvjz6yYTj/xHQj8dJoNHK7uT9OAcwULEo3LsK3zouyy9J0uEXO+HTbbDZziyd8x/6eBfjd3LPZDA8fPkSz2cT169exu7uL/f39uasouI9hsT99k2VyrM9mT45MbrVa7je9J/3jy5/XR9MtPD3lU1S2hXSs5B3fEc3cXqHfTz/9NNbX13Ht2jWsr68DOL6e5c6dOwCg2hhaDIfTCDzxJfl1Lj76LaDv5b20ZBPQu8ePH6PVamFtbc2Vd+nSJWxsbODOnTs4PDx0efgW1vL2k7pBq7uvX2U+3F63xPVOCxZ/2pcmNd6zSFnEjzzX7BerXM2D8yJjTxuf1Ho3Gg1kmX4aii9+G4rtWOK6KTBPxi7SqC4DIYUm4TPUY+l9+WsdG6PTVzYXOFqbWw1YK00y+BP7xlI3La2si0X5WwO0KQgZECn9WISe1AmHUBkx55q3axlBgiLvfektAcdQADP2nJ6FZMSinM0iY9laBv3WHJTQNyF6yqRVGlKp4yokV2K0pfCVJT+ZzsI/POBDToxFn8acnVj/Fg3oh4LeFljT5nXqZCAtNQ9NJsRkiPY7D+0+WB27VD3P24rSaXmn2Hmc/2kFMz0L6ZuQIauNbWt7h/qO08mPL6OV1j46Lc/ke41euoua+jTWf3l1aR66fbYZPZc2qfwuj3yh4NjR0ZE7Ro3ahgdi+FG5BHmvb2q9ZBpCzJYqw4by0bEoUFkUwOX6R6aJ9aPkgby6IORzSJp8z2PyWZPrtVoN/X4f/X7f8VWz2US73T4RZKPJwSzLMBgMcHR05O6/63Q6aLfbLsgsg+Op8vPw8BDj8RgvvfQSlpeXT9zd65MJsXLy+uwxeyrFbun1ejg8PHS7ieX3mh6gnS/NZhPNZtN7h6zGxzE/l/9Pkxv8XjptUYnPdi9iO4baQBsrvvprCMk9etfv99Hr9dDtdl07kE1gtdPz2uFyN52WVmvfvLpGQ8h2l3zi0xuWdDH9E2vDRekKCy2LpiGGmL7No4cWhVA/xuRwTK/GeD6vnM+DkHydTCYYDAYndmNyn0COB6sMtfhpXH5xH8qXpwUWm0/aM5a+8On0FJ+Jp6XTDgA4fdlqteZ8yGazOWfXaLagRuOi4bPbiD9osQv5ULTol05Y4PnIfrfYrD5+8/k9oTrI/zXd7uN7S1/k4eMUvixLpsboTNWVMdsulu9Z6bDTouGnoY5Fofmd9L/P7rXK8pidYskneWesLzjoc4BPE6FG8TkyqU60L4hgamwW+POlJ2VDR4WRYvXREtvtwoW/FFpcUdCl791ud65t8t5XFBOQ8p217ywOAxllEpYdQnmVUIiuouMghSYpaLS/yxKaZQpfzeEIGSZlOeRWaMGc1Lr70ssdIlrdfCv+ZRo+nohGy53R2nNrG4cCEZQPX5UaysdCX8xgLIs/QjSl0kVH7LRarblj4igQxvsoFExbNIiWs9gFmsJvwPyq7GazieXl5aS2sqa1pLOksdSPdvSS3h0MBnPfxXSXj45Go+GOrcqy49WBtMo5RhfnR2s9+UrlvPysObIW8MkRChKFaE0JKmvgu2m4QR+z20LHZ6VCyv288Mk27Q6tFNBxsHt7e9jb23MT4nfu3HG7myygHQ8UVNLsWv67DBAP0f2d1H8W2zWUZxEard/TGFxeXnY7ueieN5mO9DQP1tHOC87XZR0r+kkA7eqWd9T5wHmGeJl2fn/2s5/F5uYm/t//+38YDodYWlrCaDRyQdZQXilISc/lvjUwwe+oK8Ivly9fxvr6Om7evIl+vz93J6DPl021WyqVCtbW1pBlmZNLw+FQDdpY9CSHJpd88soK7suTTa0dJ+4DxRTef/99LC8vY2dnBwcHB2i32xiPx042LFI2yXFiiRuRTKK+4TvYQvWW+oC+pWPYyb6iPGq12olJeWoPOnElVO+fJmj9HPMFLfloQdOidBVFLM+YfUT8o8WmYrSSDPXd2amdDLJI+HwBusOU5AiN83q9jlqt5nwOjpjdKtu0yKSU5TvuW/K+isVRivCc5VsezyHQ32RHjMdj7O/v4+joCMvLy2i1WqjX6zg8PESz2cSNGzdwcHCAO3fuOD+T6hTTmyH9EtJ7VnCfkdcXgFs8R7ES4DieQvYsp0Pa5aG7fzXa+fMsy5zt4osdUxnSR/f5Bhova2WH3mv5LgKh/EPjMCV2GMpfswt8uiWE04yfpdJQVj+eZh19NJ+Hdg6BbMdms+nGcaVSQaPRcIsTJUI6lWRUnvi61obeO2O5821BSKiFiCjTgLUI2dB3MjAWQ0rb8B/+reZUho680eoYa0/tGVfEWZZ5HZCUvgoZ4r66yPS+4LAMdObBIoRFLM8iiikmqH1BZAtNlrJ9z1ICnhb6UwLIVoMw9M7i/KfmYf1O1lmOL+v4teRPv62y2VpmLJjEjeCikwOp9PvGmy94VwRaoMdHLy2u4Tu9pCwPBZesBn0ZjpFWdhEZVuR9CNSP1GZ0XJ107CxlWR1iC/LUSdoIWpun6mNJEw/o+PiQ/o/xFTB/tOjq6irq9fpcMKZMWOWItLH4d1R3CopR+iKI9Qe95878aQdtqU1CjgWXYaFggK++IRnBxxbZmTSRQBM3PD/avSx3xWp2tK8OVsR0mXzuCxKkIqZ7y7DhZPoUGylPGbHytb9D4zqmd0LfanYQ56fDw0M8evQIw+FwbsGrPKa1Wq2i3+9jZ2cHDx48QLPZdEHlVBki6yPbpFarod1u4/nnn8fu7q5bsJWKvHZdCNaAl2x3krUkf6TO1oLAXH/zhTU+W7OoH8L97Zgu9MnEMsaKRRaFYIljUD/QsfG020ijJW+dUmWJ1b7UxpvkNyvNVGeafKVxFvO1SI7wPEL08W8pTUxXyvR5kMcPyKNTrHkU8c9TcZpxHt9zOX5k/6eUq8lHWbZPNoZojJXL89DgkzMkXyxxghDd8jtt3MfsVeBJrDNFT2v0xHyQmJ4IoQy9TPQdHBygVqthdXXV3bVK6cjW4To2FqeJyds8usIS5+K8L3168iPotA3yN/l1JqH888qIFD0VK8enByw+/qLtjVj7hdKGdFyKXvPJUAtN5w2+MVKWripir6UiVY7G7NFUFO1zrjOITyuVytzx7VrsoUxe0+od3BlbliFofbcIFDFqUwWvVjY5lJbdmFmWzU2SannlEZqas1Wv1x3zzWYzHB0dnVgFJssLGTsy8OlDqP9D53Nb8/M5ljTgtHcWxPhoUXxtcQ4teeQ1hq3IW/88O/BSjKqi72NKLo8S9O0UsBr9BF+5KUECHw2h9Jb8TmtnpTTWuHNh+aZo2SEnncsMvjMs1P+WCZPY+7w6z+KQWe7UyoOiAdXxeIxer4fRaDR3P1GqfD9tUJvXarXkO+O1/tIcmCw7nnzlR2rSbiyZN3fMeV9repZPuH7mM5/BtWvX8KMf/cjxeCjgmBqAI3nis4183/Djk2k3DO3YssgoLdhj5VX+LQVwT/u+L2nLybs5LcEsLU9KT31ZxM4GMLfLi3anUV5nseOjSCAzlL+1rUJ6pUhQicaDRdbEEKKRQ9Zbo4m+0+SCJuNSgqLE9/1+38ms27dvo1KpYH19fW4hKt9xTQuotre38eDBA/zt3/4tHjx4gN3d3TnZl8LzMZ3U6XTw9a9/HVtbW/if//N/ot/ve+uY0vdnpd/I7qHFFbTbejabv3uPy/XxeOxWsReFHMdlj2sfX+f1afLacFKuhE4NsNKS8s2iUXa/0Q7gZrMJAC7+EbMJZrPj08OIZ7VFfzEsQreUhdMM6p5mWR9n+Gx+frXDWcFyYhcwTzefBMxz17KM50l9wkH2fr1ed4suYvaIrAu3mX32G7eFy4SUxdJG1SY67ty5g/v37+Nzn/scNjY2sLGx4dqK2oiuWKBdyz749CavqxZfLRKDkDpQ/s2xsrKC6XTqbDJa3ElXD3D6Qvn4aJDPeeyGn2Al+cTnq2r1OcsJxRSeTeXtlPiLDxb6Pg46ZNE0fhza4KwQkiPT6RTD4RC1Wg0rKyvu+cHBAYbDYTS/GFLG15wU1gQ7/ztloi1GQFkCKDZhEEojg4+p0NrFp+SlcvK1KacnFhi30s2VAk32yqP8+DEn1onYPMI59p2vbtb2CNGoBWli9FrGQRmC0MLHKd9Z0mjjNc84yFN/attUQ4CMHl8fWPi0zCBWaKxb8tYMFqsRoxl82nc+A9eXPlSeBumgpPCsNr7yyBWLvLLkI2HtB60emnNCfUtBX1rJaaXHV75FtsZAeqFerztnLaaLYtB43OfM+hzdEDh9VjslFacZNCK+4MeoZFk2F2gIyYeYPKIVf/xuJd93PnBbgZz9yWSCra2tuRXKwJNACXdirQ5xCmSQgPRELDAk7b8yHEhJk6/8MgI4ReQ5z0PSIseSJXil0SPpyrKTixNjRwFJ0OI/CobLFawpNFrGUZZl6HQ6c0f20u5Ia1Av9NyqL0P6kfpOpmk2m+4KEm0Bhibf6chdbUInj45O8QtD35cR2OF/+xZu+r6NHQVp8Xmlz8l17N7eHnZ2drC6uopWq4XDw0MMBgM0Gg2nF7SyLP6UBaGx65MLWh4xmZZqH1N5MX2VZU+Or7VOUMxmMzfhLdtY0ptlWe4jl6WtHuJlqcusNqhVl/MJ8V6v5ybJ+ZGVZUDyewiWmAnPl9OYkrecWKHJWF96zfaVY4DrhRRZVbZducg4BEdZdJ+WTX1W0HRlaCxYYxpFr4yw2BFWaDRy+8G3uIHKsV6Vwr/RbHbeHnScLd/cQfeQE32a7R2zC0Pf5PVXUmCRc1zHPHr0CP1+H9euXZu7osYXcwqVkRIbKcNe0/warnvJBm+1WifiLNIO1uIMMTtWji/iUb5IVKYLxUl848oXC/G1QxGE+qWoXS+fh9rflzYPYry2qLb8GeKwynSg3L6hXa60AUHmT7FNbkPyq3myLEOj0ZjbZEhpZBxO1kO+479j7XFiSUyIqS0OxGmiSFBPNlJZdZNptW8tzo4MmFocfR89XFnV6/UTuzO0gEzIIZH0pDhbKW0phbhGn6QjpGg1Gq2BNIuSle2gDdaiyieGIsGu04bWh75giMZvIePG+n9RFMmPnAXfvRZ5+STEhyEHLGa4+MaPNcgUgmYwx9LxtPzI9TKQ0v5agDtkqAKYOxrR166+fHzpi/APOa90YgLlxR1XH40xaPwRctApb186CW1Cuwi9Mm1Rnkopl3YQAcfttry8jNnMdueyhU7tvrYY30iHk09KXLlyBS+99BJ+8pOf4O7du+4bkmk0sW/ZceJ7FrPPJCiwHAqo8LryOvuMaolY4MZir1nL8iEkI1IhZX/M5rPSR3nTD927V6vVkGUZer1eLjkFPJno12xkjY+LtNXy8jKWl5fd7nsKNsYCEjHdWwY4D8vy2u02VldXcXBwgH6/bxqHlkAq5f8zHINsEOtEVpZlzrmndn706BGWlpZw5coVtNttd8LAyspK8O7Y00AooCaRR1b48rEsVKPyeLkpk7FHR0cAMLdryldWCu0Ebt9z2ZpHHmk2eko+RAPx6sHBwYkF2qn6NlRW2ZB6OoVOqpc8OSXkR8pytH6l60d4vqHd/pKm0/DZrX7EIsr+aQXnmTLjPj6bpwwUsfEI0+nU6SottsiD21mWuZNrrOVJv0De0Um7I/lkLJ08RN/6JmQ5fHRrtqa8tqCs2I0PlIZf8SH15d27d1Gv192d6L77rvl3pAO1974rBQgpiwR8/j3/XvoP3HclW7ZarboFNUQnl+taORaZS9+STmw0GnM7q1MXRPh0DKdlkXFhrdzTKkPzs4vSI/3v06jTz5CGWDw5L2J9Tde99Pt9dfEk+VxcnlAMkU4KaDabaDabcye80b3VC6M7lkHIMM/TwGUNGE2AhZQqQSokrmBCwTGZd0q7cAdAg9yJSgaKjwZrUNN3F06WZVhaWkK9Xnerp0ig+Y5UDrVF6EjCEH2cNql4LZAC2Rok0pztUEBVU96pQSqfk3saTlJZAYYywY0lS59L3g/RH6vraRs/VJY0/rV607PYQgyfg+drH5+RS0hZDa/JFFlH7b0vryK7TWT5cvdK3j720eTTO1Q2L3cymaDVaqHRaJxw2Og76/3gPF/exj55ktKfs9lsbuWwvC/BRws9L0NehZw8H3jbyQk/X8AihV6LPeF7J8e4T1+Qzp3Njneukd5vNpvuyFZyBmX+0uFJrYcG6w7Wp556Cp/5zGfw6quv4rOf/Sy++c1v4t1338Vbb72FXq/n6C8C3pch/ov1k7SvYvKB58cXeaQcvS75L9ZPqfqYBwQsaXhwIY989NmRIfvFWidfEEvTl2XoCqutwcvMI+N8NnPoWg9rIC5W15DcyQur7NQCTHzs8R14If/N6uf47CP6TTYBydJWq4VHjx7h6OjI7Rqm3ZHc7iIdTj7RO++8gzt37uDo6AjD4dB7pcyikKprNd6y2tt5YZHTGl38GPrDw0NMJhNcvHgRrVZLzS82BmRbabLSF5yOgZcd8iXyxkc0uyW1v2I+j8UHOmsfkVCUDh+vzGYzJxP4ffJ8B4TFxykSs8iLUEzivPTbz3AMOabljhtCzE6MyTu+APE0YxtUfllpffXQZC5/T34U6RK6soaP8dBpGNbx47PtZX6xPDjy+qg+2un/8XiMDz/8EK1WC8vLywCAl19+Gdvb29ja2koqU/KtL73mt/n8X63NpY+rfU/92ev1MBgM3OJ2Te9JPvGVJWmXtl2lUkGr1cJkMsFgMMBsdrxImiZsif/4DmS6FkRrH2uMJWbr5oE1tpHir/rGZaw83zjiaTSbSOYd08VWmsqGxV/7OJWTB9KvJ/js0hgs8oo2lVBampyl8Vmr1ZxvSNecDQYDVCoVdxIWl3mVSgXtdtvlzzdOWHzXGJ97jyn2NYD1fV5jwMpQPuFuoZEHBnyBFotCtiKkDLgjwPPVlErImdX+9wkvAGi322i1Wnjw4IE7G5sYVCIkAK2BqlDfUBtQOt/A1ZxgLZ0FPJ+YY2pxXEOwjqs8QRLLWMk7nrR8FmEY+Mq3yJOU8X7ajoo2LrmRpxmj5EzwldUSvnEdaiMLn/u+pW+0MSPptvJ6HlpixpSVBks5efLQ5Fa9XncBRc0RpICghb99cjEES7CQ+rZWq2EymXhXx+ZBjE+tjqemH3neoWPiTjswIRGqLzlxw+FwLmhQr9dRqVTQ7/eRZcc73LhjZzVeU/pNs1N8QYJLly7hy1/+Mr74xS/i1Vdfxe7uLsbjMd5++20MBgOsrKyYjx/z1Yec2dS6cDkfcuJCZfP/U3lf0s3pkG3is4ti/ZvHTqD+K2qnazKc8i0iz2O2L5VjdbaLQLPJpB5NQaw/Q89TZDHvh6K60MKnnJ6YzPXZQ76y84w77X9qD7ort16vY2dn50QwkgdruX9DTvnt27fnnG95RF5R8D5L8YNTZTxHyLfTeDbGT5o9S/+H6ORX5HS7XRwdHWF5efnEMbKhoI5sC83ul/0VokmzfTWdktJfIYRiBCnfx/RWXll0XhDiQR//+fqHdtHxOIw89UB+Jyf2NTnG5bbVVtMQst+L2uhFYyjy2/Mir84SIZlpGZc+fe+rI/+fH9FeZAxLX18rV0LWV+pen26WZfCFk9ze076XY5t+SIfSccVA+LScUP197yUNZcnMkBzR3sdonU6nePDgAWq1GtbX13HhwgU8//zzmM1mzv5JGTdWfkgdi6n2JfUlbSQi8AVWeXwSSRMvP8uOF0WPx+O502PIh5e+O/DkSFRJgzYRq7VBaLxz2hYFn01SJB/fu5iMs4y7PP1dVh19iMn7RZdznlG2/OSgE7ionF6vh8lkMmfvAXBxNb5ogh/rTmnoLmr+jPxBy7iM8WV0Z+xpY1EM5duBZAkG+AxAOYgttMfSEGOkMGkoqEHodDrY2NhwdO7t7eH+/ftuRTjPq6w+sApGvsKcjEkOeQSIZujKozC1culoPGncWFcoES2+tJoiPQ8OghUWWhc1Pi2BAW6ca0gJ/qfQouXp40MJi4yw7ujL68z7jokto60ojzImQReNvG0ood2pHcNwOHRGvDz1gMugPAEV/mP9hsqVfVapVFCr1RydRfqU5Do3iKTRo9XF4uidJa+lGlrS0QqlfeWVV7C5uYk333wTh4eHzvhLOR7FqsNTeI1WBY/HY3dfZgi0k7fb7SbvKJX8HLrHj77hz4jPUsB5j5dtaSNNvob4mIx6vrLSuktLkxUxW9WKGH/mDfbywBrRzu/uS8Fs9uTuU8vuf62N8uDChQt46qmn0Ov10O/3cXBwgNFoNHcPWajss8B0OnW08vtis+zk0YC8r3gfycUQcmf1xzEAUCZ40JeOK7WeSkFHmxJvvvHGG7h58ya63S6GwyE2NjbQ7XZxcHCg6nepUxbVF3nGKJ1UQceSy/cWWnd2dpz+0BYJc9q0k6SstMp7zmU+RdtW6rM8+aX0gdXWkJMdMf8qtezzAF/sxmLD+2IOMaTYX+fdZ4pB81VDOE+8cdrgk6QWf8GSH4BSFwRR+UXB+cJ3F7WUiVwWEeQuWcvxsPz6Cl/dKI3PT7DY8ZyWssaxbIMiMR9qO/Ll9/f33ULrvb09p1O1a354XkSXpMVCY6xdrG3nk+O+/uNjTd4jr21+0r6XmyIollGtVtHpdDAajZwvPJvN5iZvCGQfEvhEEOfR86Y3Y4jNTyxKt2m+vqRB88dTTorzoWx/LjZuPk78UBRl1nc0GuHo6AiNRsP55xx8kY6vLw8PD9Htdufoq9Vq6HQ67hlN2PIT7YrAOxlbdGKmjMEYUqaxbzTFITsgJX9LoCpGm0VpacG2VCEgjSDgmHGWl5ddv2xtbWF/f99Mn0xjUbJanqF+0RBzDmNKgZdDilDbtULQFLWPXzTapXFpQZ5xkldwnScBLycq+f+acA61aRnB6CLQ6E9ByFGh/33lhsrTvgsFXbQ2jyEP/1rpLdOgK6sNfTJLBvD4D903IC+Ozxv8In7jgb5QPXx8IOvD9YbFIdXylvlK45gbLpr85uWFxrO2e0ELROaVCRaHg6fjz2WbxfiaHLnLly/j2rVr+OEPf4jxeOyOReG7lS26Lo/t5EtP9aGJGGpjHtDkd85RWrJlijpCKXTzuqeMK8lH/LeWj+yLFLnF2yxGo+Z8hhyXGL08ja+dQnwraapUKid2a0t65DspG7X8tfYkuvlYSLGJY2X4MJvN0Gq1sLq66u7UJpnGV8D7ygrlm0pLKsbjsZuI1ewTzc6gcavJtTJoDQX2UqHxV0peXIZZ5KpsA2ory+SOfCfb+OHDh9jf38f169fd4hcK+PFV3lp+0vYIlW2VOSnQ/J7ZbHbCluBlxGRYv993xw+GJhyK2oih47K1MZAKjdc1O2XR8OkoHnMouwz5/LTqGoNml9Iz+glNzstnMh96H5K5KbI0ZoNLGrTvLWXE8smTbwwp9JZh1y4Kckxrss/iR4VkjmbfSj7S+C7Gq4sA16uafLX2sVbnmM+p5SPpkr5oqB6+vELPU9rWpx9jekIrQ9ozZC8Ph0NkWYbd3V1nU3A7XPoFKbaMVg+r/8zThr4J+QQaDXJMaGl9/iL9TfwxHo/dZh7ydfmCUjneZf9rY9UyTlPstkXrWJ9cylNuUbuK97FsU5lvjE98zzTfyPdd2TgLeV02fL5/CBbZE8qf/h+NRicWgXIZIL+hE5MIdPS5zJd/S3YinSybtx6OhtDLmOL7uIKUsFW4yW+lkZ4SfOFpSbjTO+14yFRkWYaNjY25vAGcuHuH051lmbqqJwZpyKR+T8d/0Xd8lbg1T+mk876Rq7K1QSgNMl9/puzCsOCTNqbKhGYcaf/z+/wWSUcKygpqaPeRxRw5n3FhdeQtBrYlYGl5Xha/55FbRSEN9ZBDRneL0OpU3xHAlvbQDMUU/SNBjsXy8rJzMKRelEauhb+J5+jOBvmO3vN6l7W6exGBxRQjWNsFpIHopDuNXnjhBTz33HNYX1/3pregbD2SZZmbEN7b23M83263cfXqVWxubmJtbQ3Xr1/Hzs7OiWMlrWVkWfjuaHmySR5nLmX1onSs5U5C6/fy2FHa6Zy6kjIUWIqB71KjcUnBGS1wEAIPYjWbTbTbbTdpwncF5pVJXDbINiwi63xlabRS2bVaDcPh0LVTWYgFWFJl2Hlz0EPBKC3g5wvqyABWKFAVgnTC+W70p556Cu12290Ddu/ePQDHi1cpPfFfu91GlmWOz8tYDX1aoHr4bI2UoF8K6CgvbcJT+mM07uRCh1RI/5HXnZej+YOxfOmOYb7TvAxovg4FeFNs+E+qH2kJhOaVg9PpFIPBAM1mE2tra66c/f19HB0dnSgjJSirpU3Nw4rYuP4ZFg+uu7n/w/WFdSxbQbJNxkPyBIQXCS7LgPmdpQRt96IEb2Ofj0YxTdI7tCg0Fi8I6Ue5eENbrBGLZWo6LbQ712fzhPiH6CJflPtktKCrXq+7XV10apeWL9c9PjvNVz5Pa0GuCYxabW6ShPOPz68hX47ah9sIBNnXg8EAWZZhfX3dvdvb20Ov15vrc/Lna7UaNjY2HI+PRqO5E33K3s1+FjiryUGNT8hWOg1YTuFcBM6LHF8UytZX0rdcWVnBeDzGwcHBCdv9tddew9e+9jUAxwsv/uiP/gi3bt2aSzMej7G7u+vybLfbueJdPkSPKdYa5jxNfiyqLIviKRIMl99qK9FjThgPVnBGrtVqc9uz6Rx7CiSQc8zp9h215yvT917Sq+XF21YK1DwC3meQyeOPpeD0CdJYGklzkckQWd5pw+pQpkzIFaFBGwOSDh8vUXrJcylOc5nQAo6SRgDOachztKbluQxuWvNN5UvrWMgzkeJDGf0W4rnY/yH5wScu+KSMhtQ298lQ/t7K97VaTV3Y4OtPqyzgzicPascQk8lW2mJprUgJ+lvAd9PRncJra2u4cOECOp1O1LGwBCRTxm6sfWgF9Xg8RrVaxcWLF7GxsYFGo4F6vY5arYZmszl3hyLtLEkZ60QH32FLd/PkqZu0J+hvPjZi+t0XDEkFp4X/xGy7suxvnwPL20G7TzHGa3xBnWXc+p758peyVtIfy7eIbSaDhBTMkwsdQ/IwJfCa148IgQcifZNHkjc0+4G/Sxl/Mf0Q+tuiLy3lc7uRB92yLEOz2XRHzsnytGAPyUIAc/fHWnxBH39KP48CfLSAK6+PGaKhbJ8jNPZSr7DIG1QL+QY+XgvJF5l3Edp4Plof+GRdKI0VFt7R8i5qN5UFK/38t9XOlLKGxjnFUPgxlFb9WIavHNL/5xll8Uyq/XqewMcuyR6+09rXtyF9FyqL8pIyI6+8yAs59nxyLi9C7eaLAVIbcFq097IeeWIUvnI120DSa/XV6RsLeNkcsaOZZV20/08DMb6x2JZW/yqm+7gdTfqhXq+7yZjZbOZ8VUpLfhHtuKNYkDZRH6qDtR4pfBEqKxVFfDzLN6G+tOjJsuoWkxuh9D/NsI5FnraM/GkckgykuJJ2nczKygqeeuopAMd+3eXLl9Hr9VCv1zEej/Ho0aMTMXo+lrl9KO14a728k7FWQVHWQExBilIKrbCS+cVQ1kpYHvyO0RASnMQEPNAiDbpqtYqlpSXUajXUajU8evQI9+/fVxXybHYccKWggw+kSPjKP3n8prznVXNiY4E2Otvb6gDL3YShNpUDi4KKGv0+UFvL4NzHacU8cHaTlSk0kLDzHXvG0y0yiMCDe0Ud5ul0ikajgbW1NXS73RPHhluhOXExeWJpbwktTx7cTM2vLJCRG4K1j8qgk2QCv+xdIsbHZdIjYdGfPDiVZeFdi7GyaIcZ7RL2lReD5uRrQTIqV+Z7WsZxKKiSZZm7e3U0GuH69et47bXX0Gq10Gg08PTTT6PdbrvdqD69WaQ/ZF4hmmUg4VOf+hT+2T/7Z1haWgqW0Ww2T9gAIdAYbjQa6HQ6qNfraDQa2NnZwcHBQdQG4DI/Rf9KPk+Z+NDSWhzoarWKer1+YoFGWWNdOoqkN8le046t9dW5SECPJpLkEa6h8ZGiu0M2WtnjfjAY4PDwEBcvXsTS0tLcMdw+SBm0CPkTChZUq1WMRiN33BIP2PJ7rlLoP83g7scJpOdisoe3pZQVdDLF66+/PhdIaDabpdibeZDHltYCz0WCcym2QR5wPxp4EjOgscHfaad9+PLkO5S4z6CdHkBtJuXJafZ5meN7UT4Y97+KgMYp9Wer1cJ0OsW9e/ewvLyMCxcuYG1tDevr67h//z6Ojo7cYjNLbEDuTvPVBTh/k4kW+Pr3pyEArdWd25H0/2AwcMfNVyoVNJtNZ/eX3U6SJosduihIu4jKl3Eyyf/aPZq+/LX21+63l6AAOu0QpZ2V/F5PjTb+t6Xv+D2lRK/0M3haYP4EmFD9Zb19NEn9Axzfp9jr9U7UVeqfULzW5ydxf9xn4y8yNgdgbrerLI/Xkfslmg0v60qnJ9y6dQsrKyu4du0aVldXsbKy4tLfuXNn7p5JoqfT6aDRaKDVauHBgwd4/Pixl/5Qf1rH9GmOfd+ViqnI469JXgrxrnZHdCzGKeUQ8U1Ip/+0oeh4LpM/Zd/1+30MBgMsLS25WGy1WsXa2prb5aqVX61W8fWvfx3Acbzr/v37+Df/5t/g8PBwLl2v10O/33d8QXq+3+/nqldwZ6xFKZzGwE/pbE3Zy3qEAqU8jfzfR4/MLyZItcCUte1k3twxoF0qlIb+55O/dGyUPJaSC9VYe0tlHKt/KMibt97yGafHJ1C5UI0J/xBdkjes31nTlh1IXEReIYSUXJ7+1gS+hcdiZZXVHhqPhcqkI8OHw6G7f04ajNr48NGbKndD49XqYPvGQEw5l2GM+2RUzLiKwdKOki9D9ZGOpUVPpJSvlZcHXP7H8vC1cdGAaSiYEMpDkwvnKbilyT3Ov41GA6urq+7Ik52dHWxtbWEwGJzI56yDKsBx8GJtbQ0rKytYXl5GtVrFwcEBarWa+5/oTXGqgCdHZ5GjHFtIF+IFSyDnNNpT0p96RyWQFpTi32rtw4NCmuNv4TPiC3JuarUaptOp20WkHeMUq6u1L6RDLelPySsFvM6xI7PLKi+Ut8X2tvaltD2s36fwHi8v9K1MZwXna/rbNwbonuPZbOYWRjQaDXWHN6fXoiPz2ja87fmx2Pyu2FTbWdocVn/N+s6Xp88H98kcmR9PY6HVaoP67Avf95IPSN4RD9EiaOuYsdI5m80vMDstvy0VMb6J9XVMf4X6KMZ3VpC+ookyfv8XxUh8fpi20zEllmOBbMNUO7AMf0vDeeTJRdVVwloG6RM6UUZeS1ZGGRKLskWkTonJYW0syKPii8QJUuwIX2xILojmNFnyL8JrqXZdEWh14f2o6UVpF/J8Qm2jfa/pPd93WhqLLom9k9B8IH5fOG0ukvKWrpqio4j5xFy73cZsNnMTNIPBwO2gJdqazSaWlpYwHA6TrvkL8UUZMi9Fj2q6ODZefePKNzZTYgcaf2i2A/d/Q/mlIGZH+tIuGudBF+aRYWW3GcULSAfzeS+OnZ0dvPvuu7h06RLW1tbQ6XRQrVbRarWwurqKz33ucycWsdy5cwePHj2ao5XkCC/f2g7RY4qpECvKNgZiOyp9kI1CSN01kVJmiBbtb8pXuwDYl4/8ngdL19fX3Y6aLMuwurrqXcXRarVQr9dxeHjoVotlWeYcf06fhHbXrVY3es+f01FvsbtcgfCRULJNQ2n5PYgymJcnuOajt4x74IoqpzxIdfDKQEp51p3RRXeuW2jypbHupK5UKrh+/Tqq1Sp2dnZOfKMdg2hFTDGGFEOK8SPzLIvGFEj5UUaZMRlAsmI2ix+5Ox6P5+4IOi2kBIrlylCrPLKUTbrK4rDllT0+uWB13spGbIxpqNfrWFtbw6VLl7CxsYH//J//M15//fW5O0o53+UN9uVpB34nsvz+0qVL+MIXvoDt7W2899576HQ6eP7550/cTR8D2Q+VSgVra2vnMshHSAnU+IIJ0vaxlufLzwKSV1qeMdvJl99kMpnb9VGv19Hr9TCZTHKvHJbBHl8aspfL4hUt8LQIcHkX678y76M8LVgnpbT0ZZRL5fEgmgz+ytNVms0mVlZWcOHCBRweHuKdd97x3p9GO4w/rpATh2cBX7ClLP/D5ytpk5vEEyljjeQd3ZFNE+cp7Sp1ufSPJZ0+nFbA7SzAF5DPZrPo2MvbDmRnra2tuT6N7WYl2SLjCMRLoYA56WKNH09LXn5SoU0EnSUtnU4H0+kUBwcHbmMEh6SziAzUbMSyIPOK5e0bC3LDhzbO5Lc+21TrY2nbphyPz/3VohMCmp8m78ct2lcpelOe+NBoNNx1dZxmnq+8h5iD2jZ0/65vt6/Mh95ZfCmut612RMgOHY1GzncBjn0zOpVqd3cX/X7f+93BwQHa7TY6nY4r+9KlSxiPx7h58yYGgwEePnyIdruNS5cuuRNq6NSFO3fu5D4JT6u39X1KjDMPXy7SjvP15VnJe+5jyDY77Xi6xFnrvyIguVDkShBef7oXe3l52ZvnG2+8gR/84Af47d/+bXzpS18CcGwb3rlzB81mE//yX/7LE9/+3u/9Hv7oj/7oRLk8BiYX+IVgmozlBQHlM1psgiBPuVwZhozjGB15lCb/ht/FpxnyskzrZAk/FpjubpOrOLmSGw6H6PV6GI/HaDQaQUUaUmxZls1NFskJB26IcEXr6wPNcNGcVEubAE9WuoaOAZVBI1lfXx+kPk+hu0j6FGWUQmuqEZ63XJ9hJfsplNZSr0UpqFBwlfP+8vIyms2mc8qy7HjVLCkLehaik+cXa1NtTGr5ad+ed6QaYHmM0lDZKbIglraIM2alIQTelqRXZIAy5NTI5xRIkxMPvj4r0o/a+6LOdN6ygbD+pnaRO+Hpd6VSQafTwcrKCg4ODjCZTNxRZ1o5qWM3lt4XGOJ/j8dj7OzsoNvtzjnc3//+9/Hhhx9iNBphdXU1yC8+Gmaz451qjUYDk8kER0dH7qqClLYvouN8efjK586Y5HfgSSCk1Wq5/qfgsrwPUtN3McTkoFXG8Pf8fjP+juzWarWK1dVV1090HJBcjBYa74vWMbzeReQsodvtYnd3F51Ox9m/dNc7laeNn7L0Th57mNve0h4PBcdiu/JkAMJHQ1G5a/GFiupxagvLdTaW/Kx2qMYXRE+j0XBjzXqdQZkoy8+38muqLSWDsnn8RK1snm+Ij3k633HlMR61+rghxGypPPnLce2TY6G+s/irMcgJBCtdFvp86ekbOuWBdjXRD/UzjUntOE6SJT79yelflD+qwWLPSDpTbH5fXnm+LYrTbFetTE2mkC1P12MRn+QtS+ujPHZOGbaRD9q4pTKljC0S15HpLXEjGsuxfvOVw78payzLttLqlDLutDpTGs5/cqJY5iPpo3xCE7YyH4uut/p41j6WdMv0Gp2EZrOJLMvc3ZKj0cjlMZlM3HHEdKoCHXct24J2yFL+dALL0tISKpWK2wzlq6uVD33P+HOLXPflZ4k1LlKWSJpCfCR5hH/DN1MUkTGUFz2TuyH5BjD+3JfnTwu0sZhqY6S0Ge+z8Xg8pytbrRYmk4k70Ws6neL9999HlmV47rnn3BHk0+kUR0dHaDabWF5ednk+/fTT+PznPw/gWCbcu3fPnXbJ+YKur9EW73EkTcamIq8zoP1N+aWUnXIMQMxYlUrH53iHhD4FYiVTxCA7jpQDgQK4ofz6/T62trZc+jygbd58MpYUFvW1xnQhuiRCAQ2Lk0dlhwwEcqC1PLUdJD5I4XxWsIyx0xD6FqFqNbjO0lFN/TbEr1mWOUF/4cIFN05pVSKdXW+lycJzqUaA1egK0fPTAnnPI0eqfgo5PGXD2k8UNEgFp5kcDoI2uVsEZxGgLoose3KnBKCfopBlGS5evIhnnnkG7777LrrdLrrdrluxK9OWAYsDxdt5MBjgzp07uHLlytz7//bf/hv+z//5P3j66adx6dKlE3fIW0B3xq6srGB3dxc7OzsAwveucfpksEFzQmV9ZFoZRI21ixYk5mObnLKNjQ23Ans8HqPb7bq7q7Rj6nlelrpr9qqsqwV88aDWbsPhEKurq7h69SpGoxEGgwH29/dP3JXE6eML5IrKTQ2humqBpjzY29vDZDJBvV5Hu912x9tqd41xfiwStM6TTqan3xRUooVgoROHfBNLvD6nbaP5cJY0SLupjJNZsixzx93RHeuL1nOpfWn1N/LKIMs3PKCcJ7Dmyy9EjxYjqNfrTtdJ/cPp0Wzy1ODlom3zlDYs2t6xvCiOQHd9ke5IPX0qD8bjMXq9HjqdjtspNRqNMBwOMR6PXbCNjufnOkAGZ319cJq2axFZvSh/5JMGPuY1HuUTOABO7JItWrY2SXUasJTpkxWh+K60x1PsJKmXtfIpX99uZW6Tkw1flo0doz10h6kPmu+jLY7k6fg1dVrdLPHWkM6TNqhWF983oTrKby3Q/BlAt4PJBmu32zg6OsJoNHIxDJL3tFgagFtArPUbjXsqk3bNXbhwAdPpFDdv3vTGyxc5llPleix9qi1TFCF65EIu+R2Xl7G85LcA5hZJEmhuBJj3BX6mO+PwtT/XaWXw1XA4nFtIt7q6OrcRCgD+9m//Ft/73vfwu7/7u3juuecAPIl5ra2tYXl52aV9+eWXsbS0BOB4fu0P/uAPsLe3Nzc/VqlU0Gg0MBgM5ubstJiW1yJIMSJ9DqMW8I+lC5VtgYX5U9NoCj7mJMtv+NFZMqghvwuVTUGVkGKi1ftUrlYOHcnDy9DanX9HR+wRjUQLpfMFYDU+4OlC7cG/kUEhGQQlA0MKSr4aRuaZouCLrGSM4TQCLlb4jKhY+pTAUaz9tWCGZvDF+C1UD86L8ggdq1Eo68yFLK2C5XdCkqFPyiDLMmxvb7uz7ENHr2rlaXTFxrHM0/c+BWcRFJVywGJUWfRPnrESexYrT3NQYnlZg6I+8PtRgJOTplp7as4Xf0fOpHRoU1CkPxYJacRr72OYzWbuhAoAODw8xK1bt9DpdHD58uUT45/ulM7TBlY+4rRpfBj6djQauR2s9D05q7SaOHU8yHcar6UGaYB8Ky1jgQUfuI1WqVTQ7/fdLl+6w2Q2myWPEe5MpoKv1tVkf0rduO1HkHducoeEPw/ZXCH7mK/kl9+mtofc1ST5lAf+tbtEJd38Ox898lj4UD4pSA3c5G2zPPC1m0/Gp/idWj0ssoZPlPB7IbltVgRWX9cyjlNluDUvjb4i+Vva3SdzUmWrr2xtDGtlSVpCwSBKRwt4Dw8PXfCV0tApB5Iea518Pg6g+65a3cuAVQ/E3mt+eYjXpf3O0w2Hw7kxm0p7yMehduU2MAXLNVrlLmhNlsfoKwN55Lelb2Wa82J3fxzAZQW1W7VaxcrKCn7xF38R29vb+N73vjfXxnwyjJAn5kL/y3EXSisXy+ZFzI70yWbgyRHhoaOIQ+CTLho9Mp1GX+go45Cvq8WnUn0di88fagNpK8tFyjG/UfroPj3s4yvfs1DMTqtnqH80hGxsCR8v8ryIByj+MRqN0G633eLZLMvczle+8Ibam3a80w7Zy5cvo9/vY3d3F7PZ8aI6un6s1+thOp1ieXnZLeicTCYnjuGXulD2Tars99miMf7S7KQYf4bkWUxu+fLh32p0hL73+WJ8/KT41Jxvib+Jh8iXqNfrzk9OaeNPEny8aok9xNpM+yYGfvT9bDZz9zbTCV++hX7T6RT9fh/Ly8vodDruzujNzU3U63U8ePAA4/EYP//zP49er4dGo4G9vT388Ic/dLxA83F8YYfE3GRsauVigt6CULpUwZPHqLFA7oi1GC+agRE6FoMjpJh9d6dwBUyKhHe6VHi00pNfWh5rbz4ZS0f58PItq1alAtbqIOutvdcMANq1y99zR1BOAMdolPSkCIxQPULlWL5bBEJOrC9tilGk5eGrt8Vh1MrNG0TgxgopVAukkUMOFn9Phtfm5qZ7TmlWVlbmHBJaUaMpaD5uFu0khwJaobSLRsjR4mnytk9KHfMaxzH+TkFRPiA+5HfkaffcWo1lekZ8X/TuyBSZJA3qsvmyaICSMJ1O0e12Hd8eHR3h9u3beOaZZ05cHZBlmdsZ4nOoYjQVCaz5eFUGS2kyluo3mUzmVg5byvC1n/Ze9nNszIfeW3WNzybzgd+VlGUZhsMhRqORo6WMo+pSIXWH5hhb89Hs0NBKZIIMIPn6VZPrWrAoNSghvw+lpUApPypTy88C3teLuA920TZBEcjxZ5Hjvneh71MCOwR+hzPZb75FC3lRxC8t2q+xYJjl2zLHmO++VIuusergFB6QssQnE4k+Op5/c3NzLgiXsmBKSycXg2p0ntYYl3aD5mtbZWgR8OA3LWTl+fr4JSV2QPYK6WM6uk4LjtNOWHlnecqYjqUN0V/EltPy89GzKNnw0wJqk1qthvX1dfy9v/f38O677+KNN96YW+BFiwCK6AfeD1qfaKcIaXanLzam6Y9Yn2vyUKsX7TCTtPhiDlIm8XSW2I7Mn+S37ztKo9ltZYwRX/24/I3Fe6Rck30f6688ekvmSeVaJ9VDPMV9plAePpp9p2bx/LiuJTuf9MBoNEKv13NH1FM6iqdLnp7NZu6alnq9jkajgc3NTfT7fRwdHWE4HLqjS2u1GrrdLnq9npu4pclYfrqkVkcZ3/C1pQZL22nt7fPRQvnIb8q2o306N9Xup7HhW0QXiyfItNyf146m9dkfZcepJKy22iIR6itr/CX0PuQPyvQkp8iOoxgbTczKtIR+v4/JZIJWq+ViORcuXMDGxgYODg7Q7Xbx6quvuvQ3b97Ed7/7XbfggvxMmpPT6rbQY4rLhFUYlwnNYMnrcOUZEFL4SsOh1WpheXkZs9kMR0dHjua1tTUXYBiNRtjd3XXbsflxC6FAIC+X7piVq6joHhVffWUgNRZkicEyOFOOGbQgVfifZyxKMPt4IAWynTV+WlSbxwJCHJY2lDuHGo3G3NHgdE/snTt30Ov1ooqfl50SyLUqs48TZKDImtaKMng4NY8yjLPUMn2GZxl14CCjRzuhQQskWOj2GfwxpzVv25ahR4DjiUsy8lqtFq5evep2YhDIKfQhZoNQ+4ScOs1x1vJstVqoVquu/8iZ/O53v4tms4nPf/7z2Nvb89KR0ma0+jDLMvT7fUynU7dikdeHLxYIOYk+p15COrlF+loL/KR8m1fHhejNU58ybQSus7ieDQXI6Ecb59bAgjUIoPEQfU883+l0cOnSJayuruLx48fo9XpuhTun2UdDiNZFQQtuyUllolELMNHfvrqFkGVP7tLktHzSoAVkYidLaP6E9PFosmdR7VZGvtagHKX12TihcarxZlHQuJ7Nniy6JF4lm533kfw/BVpAUuomS555bbJFIq+eojYNBVZDZVrKtfBUqEx+2sfjx49dwI7f8e7j+ZBes9B+1oHTnyE/pM4FgP39ffzpn/4pOp0Ofvd3fxePHz/GgwcP8OjRI+zu7qpHXaeUZ4lF8LT8mhTS03xB0mw2M59o4wO3N4gGn53GaSPZIN9rNhqnj3QvTSymyFatntJforbRTlMhmnx6XualXZuh+SvWtvfRpLUDpbPo1FD5Vt+K0xPKtyz/GtA3PMm8LdccEf+2221MJhPnm9IOWZq45by9urp6Ih++QWgwGKBWq7n/syzD+vo6hsMhHj9+7MYkyQNffIOfPHYaCMmCvD7raSBEd8oxwpodJ/ORz4Hjvuc7ZDldReRrCj7O9kRR2n12oHaignz/l3/5l/jxj3+Mr33ta+5qwd3dXfzt3/4tNjc38dRTT7kyXnnlFXS7XfzoRz86cV3TeDx2c3O8bA3Rydg8RqRmlKYomZgiSP3Wpxit31H6FKHjG2whJ5W/5wrDF9SgQFG323WXhNPsO303Go1weHiI8XjsVmr4jvjz1Y9m92UavqpKC9j4jCLtm5hwsra/dJ5ln8cUcOh/SX8IeQwVC4oIqLIEs9UR5WVaeE1Lk4dmzYixyh1LoFH7m39PxhqVz1fZ0bvJZILHjx+fcMIkv1rHqEZPUZRtZMUCeNY8ZB8U0TUWhGjVHJPUAAwhprt8sjbGEzEatPazfBMLEnIdFOLrkJyNjbdQ+VpaX/qQs2FZbWsBlwn1et0tmiKdTccd+mSpVQf66uqzy3y8RY4jrRqk++7v3LmD+/fvY3d3d+5OHV5GHgebjn+hVcJyJSGn1Xc0mWbjxejg9Q+dEBKyVyxjiOsHHx15ZIbPvvX1ga+NYkGakP2sQdbHYtf7dnIAfkcmlr+UIVo/ajqDFiw2Gg20220sLy/j7t272NnZOTGhIL9N1d2WesTy0nhStr/kF+1v+b8WjLD4YRRYOg3wfrTSRn/Lk4HouUXv8//lLqdQ+fw7mScPxOWBpf4+vzPmB1vz095LngrZNL48LTrfYpfQbzqmmgdV+biRv3keoXpbbF1LUFjmWaZNbrEtfUgZb6GyfbYzvQsd459ars/+4XnROKaTwwBgfX0dzWYzaJdZwOVh2b5aXqTYwj9DHNKe6Pf7+MlPfoIXXngBv/Irv4I7d+6gWq2i3+/j4ODgxC49zW7wIWWs8m9msyfHc5MM5LKI7wovIm+sMRfeZpqtoeUn7TT6xmpvyvJlemnrSL0Vy1OrQ6x/U+wrH70ptraWj++Zpu9i9m1KP1gWB1sRG0PWuEGWZW5Xm4yv83g65UPPqJ24XUlp+bUD0+kUrVYLtVoNBwcHrg1CR9tKHZSqt32Q+VjHjvzeSpfP79Dy0mjV7EUfHan5++jWxqfsC9k//NQdS9nWdB9nWGzjsm2QkM8lMZvN8OGHH+Lhw4d47bXX0Gw2UalUcHh4iMPDQ9TrdTz33HMuz6tXr2I4HOLmzZvOZqRd8rSLVtKhxWbUY4pjTkwIKUEaWe5pgYShLJ9+pxwnZnFUqUzrN5I+YF5AZ9mTI3P4cYCbm5vodDpoNBoYj8e4d++eY4YQ08cGhxQw3HGdTCYYDAZqn8aMDhkk0tKE6AL8F7Dz59YgyVmgDLpSDPjThoU22V/8Oc8nb/mzmX70MO1C8/G8pFsLDND3NKlCx2n1+/0TtNOkBV+J6gNfUGFFzABN4ZPzOl4WjbICXjxQZXVgyh7HmnPLQXqDgr9Fy+Z3HtMOnzL5KKQviuYXgtaPRdHtdvHuu+/ixo0beO2113D37l2899572NnZKa0MDh4IsNosNDlMgZuVlZUTcuuHP/wh/uZv/ga3bt3CbDbDwcGBc1itdFkcEH4yB989nBK4kv1odXw0xytWNp0mQrbX6uqqs9kGgwF6vV7wjnAgvOo2D+SRSXllz2g0wsHBwRyddMR+WbTyHQSxALoVVpuU0tBRU3QMES1GWDTy6IHzav8RZAAjNeCcMuHhS08Bskaj4YJrV69exac+9Sm0Wi08evTI+VmdTmduQuaTgNPmEc23pH4h2UfP+Gp17odrvnAeOsoC0dfv9+cmMfgpUan+ps9vLiPAmpoHjRHyyWYz/yIDmb9vsoGeW3byUJn1eh31eh1PPfUUqtUqPvjgA3UshoKtFjuH9Bad8EG+3IULF3B0dDTnx9F70gGNRsNsF/JAbZn8eJ59/48LymzDLMuwsrIyd0fc/v4+9vf359Jcv34dFy9exNtvv43d3V20221kWTZ3KkLZ/UpjmSaVJpMJhsMhWq2WOjZT7F2tHJIjfNctT6P9T/JPxj80GalNjvjyt0LLq4w4cOgbywRSLB++oIjnq7WBvCpAo0nbwUvvJd2+iSuffrD68T7aeB/JxbMptgJvB2pDokku9m23267MwWDg/AG+iIF2vNORxNeuXUO/38fW1tbcpCzF5mu1Gq5fv37Cp5bXwPiO8rZedVNWHDWU72khr00j/5Y2lsZrFr9TPqOjb3mfSp7U7F5LP54GTtue8MmORYPbccCT6z35ccX9fh9//Md/jKWlJXeNGHB8ZcZrr702l1+9XsfXvvY1R/vt27dRrVbx4x//GH/91389V660EQjqzthYA/kaK9VhtpRVNnx5a0pHU1Y+4yClTE1Jad/4HFnuKNE9ZCQAaFs8nX3P7wP01TsUwPA5VhykFHj6Mh3KECyKxmKYpRiai0QRo+60YZEJ8r02zorAwp8Wuqzl+OilCVZuHNJ45EEl7nBY6lAmv1mCE3ne+QIiviBJKsrIJ/RNGW2cEjS2pPHpH0s+IV7V5CUPluXlEc7XnK68x2qHHLWYzC9LHvoM0zJk1nQ6xdHREabTKZaWlrC9vY27d+/OHWmT14kiuvM49fxv6SyQ3UH33Ozu7mJra8sdtw7AHfVo1Qe8LHqufU/lEw2W+2jzwmKP+dJzPUcBr+l06hx0fj8Q76dYOVqAJSZzQk5j6BtLvvz+W0vbcH7U5ISPbk5TTPbwevryt8hpKcvomLLpdOpWycYQqp9GT4yGvLDqZgs0XpXvY9+nlmf5NlUHcF5qNptot9toNptucgXAibtjU2Bt31D7aTx9GkGKEMoM1MhxKmVhij9m9S1CsQZNVtJzyYekvzlkYFcelxiDlI++8lOQp3z+v/X7kA6LtaUvv2q1ilqt5oJWIXvYZydZ2o5kuQx+12o1F3zjVzuRfRLipRh87ZBnfKfyRqrMzitzUsdxWcgzXsqmkXbbA08WpdLkJF1ZVKvVnC1Bix25vi+jXyw2OC1s5BOmPn6M0eX7LtVu5rInVAfNNpL2pi+dlrc1ZmHxS0PvY347pyVFNoTsM4v9lGonhsa4j45U+Rwr16enfP2o2QSyrbVFSHxybTweq7GSwWAA4HiRDt0JKxepkj9Ii7mGw6HzC0mvcBuCaI/xb6gtNd8x1i4WWH1IbfxZ5EisnFRY84n53yFoV9f4xqF2B3XML02hWfumbB/tPMBi/2tpZL/IMT2dTvHgwQN3KhZNnj5+/BiPHz92MR0a6xcuXHALOgDgpZdewng8xu3bt9HtdtHv992VX9oCi+AxxSEDOC9SjIxYuXmMWM2J0gZ/kUCKzKtIGnpHx5xSufx/chwODg5weHgI4OTdc6RcUpws2modEvLExDLQRu8tsDpNlsvmqZ5yB0MqTdru6JhgO+tgyVkhZlzGFL7FyU6hheelCT2elsrxBQl844WMJ+Jd2gnFceXKFdy4cQPT6RTdbtcdecJBDhrBN5FxGrxVJEgbe1aWc24xWs4SFEgC7JOLWh4SqfWVKzt9DumioRmlMQcv1lbnnQc0UOADOL6LlU6UkHj8+LG7Y0LuvLA48ZTON5a1Poi1N92p9+jRI6ytreG5557Do0eP8B//4388sXMkBVp96I57GQANgWwQ38pwiwMi9X3IsKf2ih2bmxdlOp+W8SS/oXbntFAetVqtlBW8qYGfEL0c3E6czWZu4julDSzw+R68beTRp9bgWF5aNPByiWe5nT6bPdmxJmnU7svMo0fOSvcUBY0FC+9Q2/H+5m1mmZyjcshvo6B+s9l0R7jzcsoaQ1acZqCG60spb0LBxRTwkwL4OCB+TZ1Q5bRrdPL8Q8fhx5B6vHHZ0OSYVmeeRpN/KTppOBxiOByqvGDh+xivSJ1xdHSEyWSCer2Ofr+PwWAwt1svJnP5GPbVVT4/bzLyvNFjQRkyqqgcpV1zy8vL7lmtVsPa2hpWVlbw7LPP4kc/+hFu3rw5912WZWg2m3P3hpcJilPIsUBjC3iyQwiA6p8ULR+w+YH8blvp//j8HX5aDvfDU+Rs6EQWrT7WGLUsX9oHljwsZfHYQ6idY/f5Spq1ukqfSdNLkgZZF6t9JfP1QcbX5Dex/wmHh4c4OjpyentjY8PtPm40Gtjc3ES328XBwYGbdOW8OhqNcO/evRP14z7jdDrF7du3nc1HcX2SHYPBwOkdfvoQ+ePUdzQ5HDttr6i95MtTYlGxP63svHla2iGFJ0NjVMbAfGXLk7BO0972oUyfwppXaJ6gTPA+oTHGxyAAVQ+//vrr7uqBZ555Bq+99houX76Mo6MjVKtVLC0tYXNzE7/1W7+Ff/gP/yH+xb/4F/jTP/1TfPOb38QPf/hDbG1tYW9v70Q9o3fGcvgaI0UhyWdaoDGUn6YUfJ0XKoPeyyCbRoM1CGpBjCaZL08fCojwYKQWyAwFgkL1CwkZ3/2zZQwmn+MW6qOQoJOCwNoGMWj9E8NpOTl5lGDMydSe5alP0fYuCmmEhoLvwLxTTcbTbDZzu2G580BCvVqtotFouOM+adx2u11n6IXGWOpziTxBUMv4yaugiyjiRZQl4ZP5Wl6pYytv4LQsnRvLp0xdxgNWFkfPWlZIZ35cQOOdnKfBYICtrS3s7u66u9+1nbFaPj55nEqPZktwWUf58l2ek8kEh4eHGI1G7vh1S5DYYkvJ43R5GrJztO8WAYv9FALpBupvOs4y1dnyBXLyfA+EdUPIJvc5lZax7tOxFp7lafiiPF+5lgCXFpjx+Sr8CLNYOXn0rgZruxQZA3nlvrV+efhikfRQmaelQyx6KxSUlXJYfkP5WuWJz39aNHibU5sQLaRvQj6c1VbSZErIbtXkmAVykW6IZmu8gufH05YdzJT55ZWhlFdKfWJpSFfSYvJ2u41Wq4XV1VVUq1V0u91k+iRC/ULPZP/KiViLzPHZZ5L/fWk+qfC1f14bq2z4/L2U+A6PwQHHE7Q3b97ExsYGLl68iI2NDXS7XbcQezweu9O1Qv5mURDvaZOcAOaC0vKY+Ly+rkRInmky3Oc7azapfF8mH8XksMW38dnxKbawBVabSGunFDvC1wepNlne70MyI29bcn1Of5OPS23Fx6m0begZnbYg25b/L49KjfGYzCu1jUJpLLZGqm+v2alWmuQ3Fjq0/FP5IDQuLfRb+kXGVmSeZcsDAq+HtS5aHkXihZY0sow87eCz92U5Wptw3wQAer0eGo0GGo0G+v0++v0+lpeXUa1W3VUawPFikKOjIzSbTayvr7t8Lly4gHa7jdXVVe9CK/XO2LJgNZYtzkbIobJATr7IVSRW4ZMaRIvRZAUvU+56pSAfYTAYBHeHaogJWe6EZNnxSu9er5dbWFgEwWw2i674Ce1cTQF3Bk/DETiNQMii6xELaqXw1GmCHwUK+BcS8L+r1SparZb7fzKZuGABHV9A98sR304mE7cjlpyu0WiEd955B91u101ghIJQnJbUoE6ZSDXWgXKd65Tvi5aVEmShvg7Rwnm9DBotBjvnKx9Sjnr17Z6SdPkW6JSBVAcvL3xORZHyqU8I1WoVnU4H9+/fx0cffeTalU65yGvjxGiwgO5ro7qG7snc3d3Fo0ePMJlMnIzL44Rb9ECWHa/sp2OeAP/JJvSuTFhtVU5vu912u9uazSY2Nzexv7+PBw8e5KbBAp9dpDlhqTp4Npup+rMMuctpkqv3OZ38XeqdkjwP6Rdo/kWWHe9YqVar7hju84BQsP/jgrJoteZDtt956cMyYK27PArzNBa1aLYt/58mIBqNBobDIXq9XjItIbm8qHrxo+bpSN0itonPDyA5x0+fSgkMakjhF2D+FCAJote608oH4kc6Nnxvbw+DwQA3btzApUuXMJvNsLW1he9973u5dyxrkLv/Y7YX10v8zr6Yrc1B6fiklyzjZzhfyNMndJIBALz77rv4t//23+LXf/3X8Tu/8zv47Gc/i89//vP4/ve/jzt37qDb7aJarc7tpl0UptOpd9frbDZztCwtLbkYRpG4mDbZEEpr8Uv5eKPxw21SykcbX1bIgD2VF8o3JeYhZacvTV5YfRTtJK8UOrRThbidoelnSyzEch+spQ1TIW3o6XSK3d1dZFnmfONOp+PeUyyQX0nGaeJ1IHuH72qV4BupeFoJefpZDNTXoba05nVaOCtaLPE6adPydLyNpaygNBQ3JltS5m3tD5n/on2bMvvEF1PTyig6OZsHNK92584dLC8v46mnnnLvbt26hTt37mA8HuPy5ctzNF67dg2/9mu/dmLu6oUXXsDP/dzPqWV5J2O5EC3SCNJhSFHMGl2+wFtKHta8YpMjvmcpNKW0g2w7mqgkATsej51ikAMypAS1SR6+WlmjW+Yl32mg/Hz9KcuSyjgmoGICM1SerJPGp5b8iyDWdkWREqgrW9j5+tGXLvYspUzLOy0t5z/ugGvjC3hSt3q9jqWlJbTbbcxmMwwGA1ff0WjkgoHyCGXJayHetdSRv7fIsrL63GdYaEH/szb8ynJ2NLkh9WeM58vg81g/++R5iMZQn+V14KwoEmjMWz7n1bL4U44B3t4yiKB9mwqtz0L8R84j7fTnz0le0QTtgwcP3L30tKhE0moJSvie87FjkYG8XWVgVLNpQyBbKiW4SmVMp1O3MI6O8+V9ze0qoifkOKUEdniaFN0aKjPlXYwmyfMhPskz5qRNDDxxSok/Uuwf/p2PphT7PdXWT4XVDgD8fg7xps++SUVeH0/7n+cZSxtrC05Xr9dDt9vF8vIy2u026vW6s9FCQeHYOOH8pvkW8u8sy9yVMLTIVV4zs2hY5YOUZ8QrRXjGp2ulfNBkSB771SJ/QpNkMhCn2X2cPqlPUvwwLjv470UHxfizWBvH2j5Ud+1bsjU+/PBDHBwcYH19HfV6Hd1uF3t7e7h//76T9bG4QOi5j1apm0N2h0yTZceLd7Isw3A4VP06yT+yfUNjIYXf89gCpyFrYrD05yLo5OWW4UsAcCfJDAYDbG9v44MPPsAzzzyDixcv4gtf+AJarRbeeOMNDAaD4ORLKnw8lWXH103QpM/q6io6nc5cfWnCVh7lzvPxwcfbvrS+2IC1DEKKzZCnLvK5z46S5WqyT7aRRCzWY/lGK8MSE0uRGXl0b0zPa2li/BHrixgtofbk+pwm4mmhBdc/kkbNL5Z1CJ3yk2WZ6sto+cTepcKnrzW5a7GFTwtl6oRQe6bEy3g6yScpOjzUD9Iuj9kKIflzFv1VxH8tmr/PJuPfzWbHV2Xs7+/P2YaVSgW9Xu+ErzgajZw+B46vLPziF7+IDz74ADs7Oyod3mOKqUDpTFrv8PLlaUEZzJAqzCXOyvlNcWpqtdrcCp1er+fuVfE5CRbweyx9hhI54jGjQiIkMKTzw1cVyN2M2gpWool/E1MUBO3y5k8aFiFkLU6RFKR5HMQUemJ5Sd71KVtauQQ8CcyMRiP0ej33XAZiAGBpaQnPPvusS3NwcOCO16Id61k2f+9z3mDNaSKvYUVGLAVPitQtr+5ZBHxyUQbjUvLjSJGnIZo4XSmBwRSdWfbK1NDuB6JdLmSw2h1Wp46P/zJAdbLkK/WqRY/lsW+4vKQdnDIdLSZZXV3FZDLBj370IwDH7U/35fhoTwX1fWoeWhAt5jRq7UU7nPjOAYujQHTTkYrcYA/RrK2yL9v2TBnHWtlSv6XCNwEtA3x5ZTeXacST5KvwhVC8DkX1RJ5g8KICyLEyOXz9O5sd78qnaxX4zr88WFQ9y9Tvs9kMu7u7WF5exrPPPovxeIxOp+OOi085OULLm49rPmEp5RMtyut0OqhWqxgOh64P6Ki7Wq02Zy+eJahudIoDLdbh7VV2PwGYC0xK+yUPv8mdPPQ3MH90cl5fUJ4QkldPk1zLG3C2ItaOvB6yTilBxdDdgoROp4PZbIZvfetb6HQ6+Kf/9J9ieXkZzz33HH784x/j7t27aDQaaLfbc1c7FKkfQfKy1F/8bkqZP435CxcuoFar4eHDh258yHaTbXfauuHjjkXqU2mT5dUFdAcrLVy8e/cuvvWtb+FXf/VXcenSJfz2b/829vb28K/+1b/C3bt33cTtImMB1WoV7XYbw+EQg8EATz31lDtqkcrqdrv40Y9+5PQP8X2K/26pA/f1YndecvC+1/xBwB/DC01i8Oc+fyGPzJN5yDS+OGsq8k5alIm8caIYQqdzaf5yLEZtoZH6hHiJy3IAaDab6sK92ezkrley83i5kme5jeDbeV32/IjFrghNBPJvyrb7zjoOGqLBatctIrYr7QiyEYlftTifhCYfz7q9rShT92vxImobrpMGgwHu3r0755dVKhV88YtfPJHneDzG4eGh+/5zn/scvvjFL+L3f//37ZOxkmm0TvdVJvQs1HhWZk/5NjVNTMFaJnnyKGdfORbaJpPJ3MRQ7PgeqfCtdeblhb7hzqtvokJL71OuXMH5diLScwrA0XMZ6NPKl3ktWhB9HJyuEG0WPvEZn9pY1oIg8u8UxPo7pBQl3WRwhSYQeZ2Gw6Hj19FoNHdBN62O7vV6biKWhLRFdqa+XxSKBMs1ULtajyUKlR8yhEL/W9+F3pfRH9opAFbIscP5PyavU/KnPtDGuG9882ex8ix9E0sTcxok3Ra6rPmlYDY7vlMmyzJ0Oh23G40fR2ihh+fneyef+epQr9exvLzsnMadnR30+/0TdgXnA9LBvv7RZLCPJo3vaacu/eaBFy2oEqtjjBd9fZx3jFPb0N13RGej0YjuvtPo5v9zWmM2NDB/TCkA9U6jslEkb+5UEng/89MqrLA41/R7Op3OLTbIM/ZTZWBR8ACUHE/n2e48K/js0fMGshn5kWYpfi2HvHfbUrYvL196zZbhgSI+Sa0FKVMhF7MsgtdDOiX16NyQXarp9dMeuzyYzI82LGIjhwKS9P9kMsFwOJyTwXniKnl4yacbJP/6Auih8rkuy7Is9wT/z3AMbgeUMTa08UiyKcsyd0WRdeEJjR95zRaV8+GHH2I4HOLll19Gq9XCz/3cz6HVauHo6Aiz2QydTgej0cjtwCtqR3Ga6Fh1n69Efw8Gg7md3UX9pFg/ycUrllirL+bD+cPid6b4jb7vUhEqJ1a+1T/Mm3/oG2usRYtDWNtL6xNJg7QttDEcsgV4Gb64hlYvjT7gpK6SpzRxmcLz1/LWfB5fWkmvBbGYjlZGqh2olVf2N3ntkaLgulwrM9UvT7VZLeNJ62NrfERbMHcW8MUVi8pe61iXel6z/d566y1sbW0BANrtNj7/+c+j2+3inXfewfr6Oq5cueJs6RdffBGdTgcPHjw4cVWAd4uG5lAtomNCQUPf80UxSMiR8Cl77dtFOPRaUGU0Gs1dBiyPPeXpfbRqdPsCSPyuJZ8zSXySEkzW7u0CcGKFIK8L/SaDlzvz8h4xS5A29s76TUxppvJJSprTDEDEaInRrQm2sseNZkSE6qMdS0VBsBCd5LjQ98Ph0N0xATyZUKAdF41Gw3tPh9YuZaAsp5UQGuNWfiRHNW/AxVeulrZI3WOGS16+5TzGAwsWXavV1TemfLLH985KtwxS5TUoF5U+hpRgTsjpywPatddqteYCL3IHhY9uTr9voVJIn2t1oOPVm80marUatre33WIvn50WOsrPZzP52k/bcULH/tLCDeIx33HEob6RPKrtNgohhV94nbLs+O5YOrYegNuBnLrjIu+YpW9p5+hs9iTY7ms7S/4xfV9ENsrdadrJKWWMRTmegPkJFj5xXoaeitFh/V4bb/wH0G1oDWftdJ93nHX78PFQNB/OHxw+eyZv3TV7Q1sQUnQylufLj9WM0ZQXWh40yZFiu4fiDb73RW1OK108cNxsNgvdzc1/h3RMpVJxx7mGrknS6PU9swYr+XcajbPZzPlscuLft/icl8NjFpr9kof+MpA3qGkdR2UFTRfdDlq5RHuWHU/Gkg9PVxXxtBp9cuE1T//+++/jww8/xPXr13H9+nV8+tOfRqfTwQ9+8ANMp1N0Oh30+323YK4s8JNYtAUsRO90Oo2WH+qb2FiX38n2juUvv9FoCsmdUF20WGSKTE6JMebxJ0O6W7ZHTP5p19nJeoRotsT5tDys0L7X+ts3Bq1HzWsxDF+Zsmz+P39Gfpa0SXxXCGr5pNgx0r+2yEzNR/flbcmXt2dZNrOWTxk6ReZlodk3tnw2hCbLuK1Lv60ny0h+l3ZSaPzzMrUjtDnyTBAXQcz3kG2dyl957EGy7Qja/NpsNsMPfvAD9//Fixfx0ksv4ejoCG+//TZu3LiBK1euuNOOXn75Zbzwwgv4/ve/j/39/bm8TOfwpayk9QmtIp26aMcjVmZsYJwFtDaVDkHI+NGQZdncpdJamVY6FgEqqyg/acKyqNEg8w/1w8cFMUMnD2LB27OA7J96vX7iwvXxeDx3dB1NEJAS5YEYvuuVzpSnFab1ev1E3Ysch3dWsPbfZDLBysoKXn75ZTx+/BjvvfeeO3KvrEnn88JL2r0esbFfNAjpQ1n6NsXZKlPOhfIKBb58ecSMPQsNZdgxZAhXKhUsLy8jyzK3q17uMI0ZjrE28OUh60AyzCeHWq2Wm/jKsmxuUjHUJmRP8ECu1YjmTgoFtSqVilv0ouXBTzOwgOfRbDadDKf7cC22oUbDeDxGs9lEo9HAwcGBa9fxeIytrS10u130er05eREL6FrrQ3nIla0pfKsFaeh5UYQCHClBBF/e9EOT3d1uNymgcV5Rhg3Gxx7nt9nseGK+3W67cUCn7qTu+DttpLYLTU5Xq1VUq1W8//77ePz4sbtW4umnn8b29jY++ugjF5jOI/elnetb+JFlT+7ordfrqNfraDQaqNfraLVaGAwG2NvbSyp7UaB24HXjAYqiAThaKEL6Qgb1tKOeU3kzFNSVvqUMnMVA+scXzPUFfUO0+safxedOHRta4DAEGRdKCWRq8NE7mUywtbWF6XSKzc1NrK6uLsRmJuS5soh4hY6w297eRq1Ww/LyMqbTKQ4PD6N6qMwYRNkoMwbwcQD1J10rJMdyvV4/EUDXMJsdL9TOsgxLS0sYDoe4ffs2NjY2sLq6Opd2Op1ib2/P7Zg5rd3T9+7dw/7+Pp5//nlcvHgRX/7yl7G3t4fXX3/dTcaSPqLj8wkxH4XzjS/AH9MbMVlnec99rxA0nzGUdxlI0WW+NLwNZV199eAbAmL+dqhdqDy+sF7TffzbRbSjtE00/53TFMuLp5MTXnyRo4+n5OLiVB8spC9icxJF5ixS6OW85rN7Pu6w8KyvzeRYIN7h4490jUyXV+da7EoZa5CLi7Trk87baR5lzbHwdpb5cJ1FsR1Kr5V5eHiIP/mTP3FXyjz11FP4yU9+gi984Qv4zGc+E6RjbjI2RSCH0sm8rEotpGh8eUpFlodGnzJPCUpzpCicmGGREkjKE8yT6fkEU6wPfcLXsuNR4ydNYUsjg+gK0aO1Q8yYCNUzhbdiwc+ylFPZSi7GZ1bFEEtTNOCcBxblxHmnVqudmIydzWZzu9BpxxZNDnC+58GpSqXi7ovhO2J9ZS+qbU7LseB5k5HWbrdx48YNZFmGd955Z84QKVoGR16FXFbwI0/A9rT6PDVQGqJJGnNFnblYOSm00XvfaQvy21BgVBppRfmEt1mWZe6+meFwGN0dLvVgyq7OkLFJ9aIJAY1eklv0vl6vu+94oEprY3lnoqxLCJSOO/j8dA6tnqlODNFRr9fdQjRyRPh7K6gt6f7do6MjR/N4PHZHP8sdBz4doDm2vkADD37lpd8y3srIU3uXamuEaKK+jNmCljylnA5973PUisr4su1GXjcaY2T7kHzp9XpefkrVJ4tCHj6ZTCbuvtOHDx9if38fh4eHaLfbuHDhAobD4dxxjlKPWPSP/K35nLztgWNZSXIoyzKsrKygVqvh8PDQe+JRnjYoC3xcWGiI+bbEf/z4dNLlMr3WD9JflGlDeooHXLh+oWPKrfo/pMc1OaLJd01fa+0b6/88fMHbW2tf+bdPDsRoSpEd0+kU+/v76HQ6WF5eRrvdNpVVBJyXQm2vpZ9MJjg6OkKtVsPGxgZmsxmOjo5OtG2IHxeN1DIX1caclhBS6M1jP2i0UX/RD5fBMfuby5zxeIxarebs/Z2dHbRaLSwvL2M8Hjsbmk7LoZiCPOK4bBD9u7u72N/fxzPPPINms4mXX34Zu7u77sSe2WyGRqPhdshz21WTWRw+f4uXnyoTYrG/EHy2dawMS/4xvvPJDEs6X9kh2zZko1HZtKAm5Cv79KdGHy1g4N9xWjQ/J6UfYs8lXbHvNbvMl4bnp006+8qw+uoWPZriI+XRK74+9+UreVPStyidljLe88RJ+DOfz+Oru0YnB48Xc5uQp7WeFugrIwY5/rTy+Yk1IX6w0FeUD0JjwyeXeBqZj2bLhnx2Pu7pnVbeYDDAj370I/f//fv3sbe3h/X1dbzwwgsAoE50A56dsZwIbWIu9g2vQJkOO+UnBWaRHVYWxRdSeKmwGgOW8qQznMfRkXRZj0XhQQTtXWjwceEjBR3932q1cP369bkdh7PZDHfv3sXu7q7Lq9FonFi9YTVINLot98F80vHTWGcC8WCWZd7dm1mWuQC75LVGo4HpdIqjo6M5g03yKf+Gfsccm48LqtUqXnzxRSwvL6PVaqHX6+Gb3/wmut3uXDq5Yw74+PCeL6BWVr5F4TNMNH2nGZg+WqxOUKqe8/V/0bal/rHYCCFjOq8RCsR3P8eOUpLgTm+K0R7ThbPZcSCx2WxiZWUFS0tL6PV6bjU8TXBZVpdb7UFpA6RAOn6pDrome3q9XnBiWqaPYTQaodfr4ebNm8iyzC3o4TsrLE5rnjElQd80Gg0AUHcZp/bBIvQU2ZbynmAtjc9RtsIX6OL2Le2inM1mODg4cFdjnLWO5vIFeHIsIi0mI5o/jidvnFecdp9fvnwZr776Kj766CO89957ADAXQE2hh/vPi7CzaMxo955zmbuINuQTF9yX9NGRCi0vKksi7+QCz3+RgcwYZODdEv+x6HDZLjGbyMqntIDBsqgtVF6WZd4TKqx2Cp2YRPfeLi8vuwn9o6MjbG1teSf489pB5wXnxW8tm4bZbIb9/X1kWXZCl1rHKU3Q1+t1NJtN3LlzB3fv3kW9Xsfm5iZ2dnYwmUzw5S9/Gdvb2/jBD37gFvSFFiBKOq200KkXtVpNtQ+uXbuGf/2v/zW2t7fx7rvv4sMPP8Tbb7+NZrOJer2OXq/n7A0q2+dn+Xy6s+AV6q+8esjSxnlt0VRokzjA/KknfDKF9zM/RUjbIZvSNimn+vjsbQ0+WkI+Of9G0hSKV9NvX5sWgdysEYLmi+X19bR4oi8G5ItnWdvCcqytNZ502nokxXaJQbal7wqp2WyG0Wjk4swA5naWE79Iu1P2E49hFJFLciORL42vTmeNssarb8xp/E1p+TzBbDabuwt2Z2cHP/zhDwEAH3zwAYDjBZ6/8iu/gueee26ujOgxxaEBFhtcRYI8Wp4hWlI6wyfMpdOmBaa1b311k4NcDlQL3bH38g6eWLA1JnB8DkIKUoUaPeOCgALC/OhA2nFCIEOC777h9PsES+okg6WP8vC3jxdigtVnnKQgZRz5AhBlC8A836QaDjLQEKKDB1xl3/iUEr0bjUZzx8/RREaoLhynYZCU0X8yDzpmb2NjA2tra1heXsbDhw+xtbV1wunjhkfZzktRGRZCbPyl1KeMPl5EHnnz9AWytL+18hbJB2XVMQ98Y1yjz6KfrO2VIkdIplWrVTQaDbd7jIIuFpslNp4tNoj2jXRKtDSh55otp6WNBb58NoWvfLJbDg8PkWVPTgSQk4zc9grRSumsMkZL51twJssNBTsoTZFxq9mbWjk8vUwj2yImX7Q8tInVkB0Zo62oDMvTpjR2OV/JgJRFVpTpX51H+HQR3Y1NdwOXBWuAUgZXCO12G9evX8fe3l5pR5mX4S9wmSzz5WMyRCt/X8aY0QKwspzQ9yQLaKJM7oaLoSx7+qz8ASoHSNczHEX7VJPlg8EA/X7fLSCi49Spz3i5edtJ6sE8NjzpeOJDOnq83W7PTRbn5VOt3LLkbUx3pqbLS0NqPmW0gy8PPtGv2eA+v15rM4pfTadTdLtdd2Rxt9t1pyJcuHDB2dsUkLdeE5di5/MjVMn+GY1G6Pf7ODo6Qrvdxhe+8AU8fPgQ4/EYvV4Pt27dwmAwwHA4VO/Po7w1W0hrXz4ONL0c0x2UJmQ/WvUvfWORAWXqrRT4fFmtDbhdG/OZfDZiSlyDt4mvPzXaU+DjkRQ5nce+le0UShvjC19f+cpNiVlo/iT/xuejSB6R/G3l9RRfI+Qv+eqcd6zJ7335xdrb174+umOQNnSI5lAelu+0sanxgNaHPrlD7yy2tRUptoWFH6x6wDKmZTp6Tj4DgDkfnHTq7u4ubt265TY0tNttfOUrXzlx6sWcJSEL1e4NTUEeQ15COsZS6Fs7OmUHgC8II9NwRyCGMh0pafDnzcPCoFZmjuUXc5QqlQqefvpptFotAHBHhFH6hw8f4t69e27nbrPZNO04srSPJlBS+PY0nOSzKOunAdzJ4UfEzWbzxxJzB0ka78QrdL/MZDIx7TC3rDg/7+D35mRZhpdeegmXL1/GxYsX1ftx6Rt5D88ioBk6ZcvhWPkx8OC5tiMvFSltWkb7h+i15F9Eh/nyK4qUXW+0qhGI20xycQcdA3pWIHqtwQ+Sh1bDlf7nu/RknrE8aAzTKtIQv/l4yWKr8WNJ5Ti08APVk46aa7VaueV7XufT51zl3S1UFLy9pSyWd9qWBRp/tHtVTk5Kesou/+Omz8n2pbs6+/2+cxLpHunUCSltrJThC6aA6kSBZ1k2H+Oj0Qh//ud/jnq9jvF4jG63O7cIVAsgp9BBdY8dYXt0dOQmbBZ5PGUqfOOEFq4U1bnT6dRNhgNPdv765HlZ9gL1JW/rtbU1fPrTn8bh4SEeP36Mo6Mj9Ho9NwZ898CFZDa9o0CNlf4se3I3pRa7OAtZI30gC2QwO8XXrtfrmEwm+Mu//EtsbGy4HXm//Mu/jFu3buGDDz5Ap9OZs8PyQN4NJid4Y+BH2ab0r6Yjz7OPv2ieK2Oipgjo+qHhcIjBYIDPfOYzuHjxIr73ve9hf39/Li0PwgL+oyV57Gs0GmE4HKoLk4fDIXZ3d0/cL0yLIkejUem7krLs+Dj8RqOBd955Bzdv3kSlUsGNGzfwm7/5my7dc889h6tXr+Lb3/423nzzTayurqLRaMydFOKzqVJlRUpclfL3TdT5oNmfKePPOtkUmsCRssJij/r0TUgn0LPQPcfcP5N0cBq1ST7+N+lTfrw3h2x3bSLQR7+kLRZTluC2mA+c/7i/6bNDKL8Yz6fQSHTQ7xR9aZ3jCEHqpNCOYt+Rqxw+XtXoPG0fYdHl0bjyje3ZbIZ+vz+Xnk5X5HIw5sOHxk2ovUmnNBoNL7/QUfra6Y7nxVax7MxOQV4bO8sytFotVKtVtNtt9Ho9HBwc4N69e3j06BGef/551Go1/OEf/iHq9Tp+/dd/3X17YjKWC4EYoRryKGJtMPoGiqYANBpiAkyjM6SIfYrKqrytnRsSECntHvvO0j6+PLW20xRjrK9I0NPRJ61Wy03G0jcUUJtMJnNCiysAX9+cN4Ta3EJ3GYLP2qd5aDhNwZzadhy+sSgNQ35XlW+ca/Igr0F/nh1xbSxLemezGZrNJpaWltBqtZyjyoNdmkGcalxa26iIU6ihrL6RQanYJJOv7JCeixliKWPGp+8seVidVu3/FBp9PGkpk575HERL2Rbdw2kk3ZcnyCp5JxaI0Bx2/jcFlZrNptO/tJikWq2Wskgg1qYaH/iccC0N1SnWhiH7yhLECYG+045YlPT5bKYyYBkDMo0WcMmrw2R+Ennkt9ZvKfaplibk60g7QAuc+fI+bRAt/L7X1DbmMixVxltRpK3y2EZWf2k2Oz5+mo4PDd0ZXaQOvm+p7fmx5QDcbqzl5WWsrq66yajBYJCso4Dy7UvJK1JuaG0odSzXhSky0WcnaLouBlkmHd+5vLzsFlhajgqNyRECBY4qlcqJCW1NJkvbJFT2acgji27h6ULtovlL3B6mutMCifv376PVajkfg+6vL2M3u2ZPWOMgPh1Di8jk8yLXs5x2jOO8xlQ0WVIUXAaRPJ5MJlhaWkKlUsHy8jJGoxG2trZU3pW8r/U9LXDKsuPrjvr9vgt0c1ubJrPyyPoUkP1Psu727dvu7u5qtYq1tTU0m00XpyP6afEigFI37ljqKtvc59PlgcZHZdkBmowJ0eHz8zhNPjveF9+SeaX6CkWhjZE8Y9dXh5id5fOZQ99o6VLbUeaRh99T9YQlnhKqgyU+YbV7tG8s9MXKtyJUtxBdVoRiDr403Nah9/x0MkLqwv0YT1Mabn/TO/4j6eLfLVovcVjGWYocKYOHuFzgepr74LS4C4A7YYIWMAV3xhLOaiU9lR2DxSGhH2sgURPS/B1nRt+3VljpSYVFGMQCU5ay5cDQDE++gsLnjNAuwqeffhobGxvq6pp6vY6lpSU0m80gTUWNQUnfaaHMYM+iwfv6vNDNebcoDeTQ89Wus9n8DtmQc06QR/j4Vo357sM7z8iybG7H63A4PDH2sizD6uqqm9jpdrtOMXED4zSxCP4sotD5rv+8+Uh9VwZtlJ9WVooTaaUhhU5LgDakp2N55b17noJusTT0O2VXuKZrydAL3WOh5eOTXc1mE1evXsXGxgYuX76Mo6Mj7O7uIsuOV/lZ75EP0a5B0prizEpH3hJAofS0WtU6wVxUv3D65L27FrvFF2iKBYt9tNBOQeKhsnZbhHiMwAOdMchV/Hy3EullPibK1KXEJ3ynsyazT9Mh1WgE4I4/XF9fB/BktfMn4eQNwnm2i8tElmXunsC7d+/i6tWrePXVV3Hx4kVcunQJ3/nOd/CTn/wES0tLqNVq6Pf7SbpkEbtu+VjwXZsjA0A0lso6EprykRMkKfxfrVZxdHSEN954A1evXsVzzz3nJiAePXqE4XDobN+8OoFsv1qthnq9joODgxO7ba15pgaCzzOkTUkTUcSrdE/ld77zHTcmVlZW8NRTT2F7exuHh4eF7/G22iucZ0PyfzqdYnd3F41GA81m0+VPk/vNZtNNgn1S5PQiUPZkUApot+hrr72Ga9eu4Zd/+Zdx//59/Lt/9+/c0dl0opa1D8mubjab2NnZwcHBAZ5++ukTMa7xeOzumS2y8zvUfpx/V1dXMZ1O8eabb2J3dxcHBwe4cOECvvrVr+LmzZvu7jv+LS1Y2dnZSao/0cWf0Wl/8l1RhHgnNMGUdwLMUibpYlr4o73nEx6SBm4/87bj32qxMdI/vh2yPE9en9jElS+GLPMhuvP62j7EZERe+eFrf/leg+++UGu5RRCbC+B1or7T+oR4i+CbG7LIaO77+dotZUKtDGhxszLbXotx+I5354t/Ll++jCtXrgA4bq9bt26h2+1G6ffRo9noHDzGQ3eVS/A0JEdOCxa5Wjbf+OJH8h3NY/HdxfyO+M3NTffNgwcPcOfOHbzyyitYWVmZy3uuNTUhbiEyrwItwvS+gcyRGqiSoIFpycc3AKXQsShp+SxUBqfRl2eoXE2B+vJIzdtXbxkoolV2JCj43+PxGFtbWzg6OnL5pATdfW1mqV9ZyJO/1dnPYyhaEePbou1WxEACTho7PkXqey4Vo1Zfy/iI0anBErAu2zDQ8o8hNBHAsbS0hKWlJXfEBgXabt++jQcPHjgZSu+0Xe0W2kM0psqvPGWUlS4FPp6W//t41mLg+oxS33dlyNCUb1LGdYinUvK2IDWQZrUnKPgyGAycoyQDFj7E2oXTwlfoj8djjEYjDAYDdLtd8xGUku94vjJInpoX/605Nlq9fDT5vgee9GOKzSj7UuZHR47KccRpkX/H6mOli/LR6m0duxYdFeJnX5/FbDieJgXcLqAdSUXs/yJ2W5E8LOB9zO3oWOA1BFogyXmW/y4TUl+VmT+1CS10CPEA2SG0QGY0GrkrKWJ0Lwqcj2ezmZu4o91TmrxJoauoX1wmNB87Zgvyce3zjzX45AHtfOeLL2j3F19Ymdf+9/n1Vt1KR2Zz+1lC2mtFfSueb0gvpvgSMt/QM7IhpC07mUzQ6/Vw//59DAaDhR13H4LFLib7h7dbrVbDysqKu3cz1d7ISyunq6y0qeVb08ZsnxB/x+ycFNC4I1uCFhIvLS1hc3MTr776KnZ3d/Hw4UN39LC1jbMsc7qWsLu7644jPjg4mKuDhUdCcjDUB2T786tEyBfgPnun08G1a9ewtLQEAG6BerPZnJNzciE7cHLiMJXGIiiD/zRoccVUujQfRyvH4odJOSnHCT3jtjW3M6QPEqJH1iNUR18+vjx931j6hfzkWBkW2ix6lNtcqfETSUfsfRH5bbUJpK2j5SP1ssa71jpptIbqYc3fijz6wsoPWr4+f0er73A4xOHhIdrtNmq1GpaWllCtVt3EH98glGIDyzT8GGRCtVrF8vKyy5f0QbfbdROyZ+U/5I2NFLWL+bc+30NbqECLTkkWkI7d39/HYDCYT8v/oczKvpegCFIajwvi2MqfUDn8b+3ceytdJLhSy5eKNWSMhhwzy523KXT53sfqKB1PHijhqNfrqFar7kgYALhz5w6+//3vO1rJMQXmj5G11iOmJE9LyKSUs+jgj6X8vDSUHdAjfiOHJk/fE6wrqYsEdYsYlxrPngde0HD9+nXcuHHDOXez2QxHR0f4xje+gYODA1ff4XCIWq1W+srIRYLzf6jfUoOheQ11Hy+lOD0WWOgsmx9jBrI14Ch1dt7AdQiz2czddRe6cyMVWZah0+kgyzJ3PA0FaiyrEVPooBX9BwcHqFQqaDQa7t4qC7SgI3DcHrPZzB2pmTreZX7W8SJlZshO4qDJuzx9qC0w6ff7bpWr1SmnHz7BH5IBoTylzqC/U237kPOTp63kqRHkkEi9XGSXOukeTVZY7d6fRpCjDzyRs4vS05I3y8oTOB7Ls9mTndO+u+vJOQaAfr/v7u2TQWWtDAtOk9dS6JJHwFrz53ZGWX1GMokmwCVNmo1fJLAiT5OYzZ4ccdtut91kfJlyMg+t1MbVatXp/X6/r076pARC80DGUWQZPECbx8bUQOOSxjKV02g0sL+/j7/927/FxsYGLly4kFReDKHAJv3PJ8blt9QGZK9xtNttPP3009je3sbW1lZpu8LLxKLl1aJ92KL5U7/SuKPFkBxXr17FP//n/xzvvfce/uzP/gy3b9/G7du352JTPtBYoTtpl5eXAQAffPDB3MLF08RgMMBgMEC73T6xAGI8HmNvbw+rq6v40pe+hG9+85sA4PyFzc1NV2cK4hModjoYDNTTs846lqEhdNpQSr/4+FCzSUOTrURLqL24Dgv5x7TAiNtDFCfnkwYy7zz1tELz72MoEo+zgtqdZHgeHtDsGS2NLNeSry8tlZkSGyfwO0GJp+TJopJH5IJHa/8B+s7hs44LFuFln4+hgY8b7VSn3d1d7O3t4ZlnnsHGxgauXLmC6XSKg4MD9Pt9PHr0KNcYkPKE/Byu55rNJq5fv37i7uCbN29iZ2cnWN/TQMjezTNO80Ab19oiXulHLi8vYzab4aOPPjpx4tyJydg8yFNxHtDhyk9TJlqD+4xm/o2cnI3VIdV58ilbSaOsY6x+Gm38tyxLPg8dERzKX4Msg6flk1laf1Awh+fBAz6rq6tYWVlxqz54QDLkFOU1jmL19T3PO8BDxlOe/PIij8FUJOBaZj7amCSHydp+su8lf8m/LUF0TkuobvK9JSjve3aenBd+lxbwRN6urKyg1WrN3YXTaDRc0N3K+yGFK/tQG9tlja08ba4FpUK6hdLH+JSe56HHhxjvWuCT/anlyXzy5EHvaez6nNg8MjEUBI2liznbhEajEd39qsm/1AC1TM95kPKnoHQKH9D3XC74ypPfas95vr6xQLLHar+FeMtHgxV8FxMPnPOFjvyYaQ6rrZZ3PFvylvZrasBY6kzu/EkaY4EYnpeWZ6hcLX/rO8lv4/HY7XLmNm3MTl00ePnVahWXLl1yzt/jx49x7949N5HDd37Tt5zmIkGhIvQvCim6Q/bhWdhZWZY5HuNyYTKZoNvtotFo4Nq1a+h0OgDgjq6kSWTKI0+5eUHyTI5t37iQfrAvzxS6pHwNBWdS6lqv17G6uopqtYqVlRUcHh6i2+26hYR8kjAETdZRf9HYpNXysTz4/YzaiQupsLbJoseEtEHkGNDomc2OFzzt7e1hNBoVWrxDNEh9I+M3Prrl3zzvfr+P0WiEfr/v0vT7fZUWS8xjEfC1QVl5x9opb3xFQ9F2ms1mzvfPssydUHP//n0cHR1hPB7j8uXL+Dt/5++cOJJd2qG+HaH8GxrLmp2dZU9OwpHvY35UyF7Wnsm0e3t7+B//439gfX0dly5dwo0bN/CZz3wGv/ALvwAA+Na3voV79+7N1ZX4nY5hJ8iFFbLNiA7+zsqHMd5J0Sd5dYUlT185hFS950MoFiLzlpMtvP3z6OwQZJ5F8gohVobkN0t+FvmU4s+GaEqBlAeSf7W2CNn/dAIATcxrOlXebyrpSZE9sToVQUxfa7DaQr60IRlkiUHx65M0Xy3LMncSAU3qUb9ZTmYI+cjcBh2Px3j48CE6nQ5WVlZc+Wtra6jX62i1WphOp3j48OHc/ec8P6uussI3RoqMGZ5vSp4W+cX1O23YAJ7E99rt9omrB04cU1wUMSUqDVzeecRcvjO16Vt+pAYwv0OS5yG33FvqJxWUpD1mBNFvbdcdH2hUViyYE6M5JnRCeaYKSGlcWujnbTaZTOa2Zl+4cAHPPPNMtNw8A4aXb0mf972F36396nNaQsLcSm/K2JbGcqoBYy1Dg3QMNcNdC4SkKn9tLNPYJ8WmTYrI73wGr0ZfHgOhCMp26LnMnk6nalDhwoULWF1dxc7ODnq9HjqdzoljNTT68vCYj8djC29iMkumDY1xy7iUfKyll7owBh8fSrqkcybHkg9WeRgaCyn5S4PO52jEaJDfWPtPpsmrD/I8l0fENJvN4F2e8ph/Xx9rxrxPXmk0DYdDd/9kDDwoAzzZacp3zmrl8G81Pcf7L8TLsfG1CB3GaSTQ7mJqOyqLAnz8XnJNx/kg7eQQHby9LDJf9g9vc2temu0iaY7d6yrLkPKc25GcTl89ioB4dzabObuVVrLK1fKc1tME33lVr9fx9NNPu7vo3nnnHXz44YfumCuqR8xO+aQixL/WccLTc1gCLT7wsUbHl8r7JQ8ODtBut/Hss89idXUVwHF/N5tN9QSD0+pbTU/zOlGaPD6Epf14PiQT+KJejU5rPzebTayvr7udl7du3cL29rbbPWK561vSSP9zWukI6tjkbpZl7m5KukIgpT6+PK3Q+tnyLpaP5FVua8QmWLvdLnq93twCKAstIT8splslL4XqO51O0e12T9h4vgVOmp0TQhnjPFX2nUf46pCnfWh8Ek/RiTc3b97EZDLB9773Pbzwwgv4whe+cOJbfsWWrx/pnTweX0tLRyP7TucLIdQesr7a88ePH+P3f//3sbm5iddeew1f/epX8ZnPfAa/+qu/ir/7d/8u7t696yZjs+zJZHG320Wr1XKTsVxuDYdDtwtTo4MvVORtFauj1s/82zw2cKi8onGckB/G8w75gNb8tQUB9Df/n1+JwOmoVqsnruKx+Mo+P44jJHtCbR3zIbTyQ2WG+j7m+3AfyZeftIVCOiYWTwnlofnEVsxmx4uH6USALJu/K5bS8B8N2i7vFDms2dZl2bMab1h9uKKyRf7P+5Z8zUqlcmInsqS71WqhXq/PpTk4ODgRX/Xxua+evK/H4zHu3LmDixcvuntNsyzDxYsXsbm5ifX1dYzHYzx69MhNxmp1k/RrbVEGQno25dtU2qSe0mzy8Xg856PRAk867p+j9Bt4JZPF0vG/Y8YzZ1opEGgnBzeINGhnZMfoi3VS7D1f+RYT+jEQ/bG2TXGKNGgBtZT8UpUBML8rqNvt4ubNm+7+jFDf5x3gUkn6kCKkU74tAitNqQgZUdzoluWlGqMafI66/KYob/tokbtHQmlleTzAEqIpNSiUF4vgO22Byfr6Oq5evYparYatrS2sra1hNpvhvffew/7+/lzQisawVVGGEHJieHn8twYLLTIAU8b48umfPHlrOtdnEMV2HVhpsbRtnnx95RTJI9Uok/2tpaV2pKO5t7e33W5xST8/vsznxNJOp2az6SbqALh7qzQafLIqZGPI98TPo9EI+/v7GI1G0d2QJJutfa/pyCyL77qkMrjOzzv2rI6/rz1ns5kq/zj4jifqN9rtRkF8i50RosfKy5Je3l+p975o8iUlsKKBVvhyfivqeBMNWrCL/o6Nl0Xr5Y8jPg5tQvJkNpthbW3NTaaNRiPcvn3bax9Q8IhkND9y3CpvJO9z3uM7GBflC6QgDx2L6H+6kqbVarndv9r9rNQX9KysNtQCylogLAT5vS+YmmIzyu8ppgHA7aL17aw8LaTKev4dgdpE6hNup2qB3VS7ryjvWvqO20OW4yHljsqfoTjK6GsOvtOey6nBYIBms4lnn30WGxsbqFQq+L//9//io48+crtcfcfih0A8Ua/X5/wL4IkMXMT1cTymQzKYdj7xHT39ft8dUTmZTOaOWKxWq07XHh0dATiO5dEpeNpx3rFYijZGfLawZSxxPQLox9/T8xh8MimPP8Sfad+X6V8TX8ndbFQO5wWiJ0ZrqCxp9/h86Vh8hn7H6CrS/r6yLb5Bqo8mY6oWaLaPz88pAmnTSNuL7GJaROKbT/H1z3mxga2xf9/3HEW/D+Hx48fodrvY2NhwOyllW5MvfXR0NLfZTYs3WGOitVoNg8EA9+7dw+rq6tzx88CxfH/xxRedLDk4OMC9e/ei9SlbT4fKWQQ0HpbyLVQ/OilFQ+mTsUBacENzWHwNSYYRpeECigQEBcI0WgD7ZKwsN/QuJqRJCYbSyDxDbVA0YGWFVZn6vtUC0Pw9vaM60Qo64Jhpb926NReo03YtxxRzasBRy8NXP+07n6FmUdCp9FneaeliRp9PgPtQVLj62j4UPC8qbLkDTfmFVqDG6sgD8T4UpdmnyBah4LT8tOMolpeX8cwzz+Dhw4fY2dnB4eEharUa7t69i729vbn8SH6HHKwQNP6VxqOsQ97xGEKR8UDvfBNsMm1Ijml19wWGfXn48rSklY6S9TsLNMMmxudlBOp8AV/5jO6VunLlCrIsw8HBwZwhTLST3vIF9+n/Wq3mJmL5qR9y4lz2Z2p7++o2Ho9dMIV21/kg5WbePg8Ztrwc+jtUhxCk3ODfa+1bxK7iATwKbIzHY7RarejRi0SjpFOj3yrvNb1u3dVlyTOlvXi6er1+Qp8UsW1l+0nfwGKnlalDT8PhlAjZd9bvfO1QxOfQystDY8geBJ5M4CwtLWFlZQXPPPMMut2um4zVxgIPMgHzd/xofqyv/iF9EqtX7D0PHBdpf6Ix5jv5INuMP0sBycd6ve5OETg6OvLW0WfDpZbJ/9b0jmUHWkiHh77JAyqLLxgguamhrDG1CFmotZnkRc5f1A/a6Vtl2Zg+WrW/rfEBS8wk5tv6ypOQ8qks2Xxa0PjMOtbz2kDW+hH/kT6gHarD4RCNRgNXrlzBxYsX0Ww28f777zt7bzweu6PMreB+MZ2K4NuNuIj+ofLozrv19XXMZrO5o7WHwyH29vbc7i1+lHOlUsHS0hL6/T4ODg5cfTi9JMNCvE+00G+NN0L1D73nC30o/1Q5LstK/UYixcfOC6mzaTIWmD/hhdqOL5DlfaDZQvR3aIyG4g/auJTlcf8vy55MFstyfXLbirL0nbVP5TgItVPMf0nlwVhd5djjixS5HJpOp+7UndD3RektYu9Z9Eco/1Q9nEpfLI+DgwMcHh66+7yBk7HDRqNx4soS4MldtLKs0LwMoVqtYjQa4fHjx6jVaid2clarVTz11FMu7/v37+PevXsqHy/aljxt+GiwxC+0EyIJ6mRsXmeZE1UmSJHKfOWqen4BtaQpZhyVdXE0DwwQ5OCJDQYSdpL+WLta2z3GzJZyUvp4Njs+govaYX19HdevXwdwvPJjc3MTnU5HncgiYw/wH7mRF2UM6hSHwBIUPGtwQ4H3cxmrMn2Of0zeaHeT5jW46NihkHMTkgX8zmOO0G78spRHzIE/LdAK4Eqlgm63izt37pxQMr1ez62Snc1m6tFEMeQ14KwOX15a5LOU/ELjKGZoWCZwU9/n+SZV/odgOemBl8v/tjjmFqM89F6mpcVeN27cQLPZxNbW1omjfCkYwVcZz2ZPVpP68qYxVa1W3S5Vrc/zHFtGdFFZFoNcymb67fuWpw3JaN4mvjIsDiOvhyw/9i2VIY+WSRkveYJjFMjS7v0L0S6DKkXGoGZfhspMhW9sFqFbBrgl79A70s2pwdAYtF3vZ+0U8l1Y4/EYOzs7TjZtb29jZWUF0+kUg8HA2U3a2CNoQa5FwGcHWvg/9bvTQhk0kJ/LfaXd3V28/vrr2NzcxOXLl9HtdgHApVlE/VPy5PpTCzKG5OpsNnOrxDc2NjAYDNDr9U4sXrLK9KJykaPb7eLBgwdYX19392ZRsJqXkzJWuB87GAzcuM2yJzviyEaIjQXtyPfUekv72qp7OVLsp9C3KT4dTUrL3bN5ZVfK5ALwpB+1hVx80kB+k8deSKW/jLxOS68Vpfs0ZD/FGJeWlrwLrb/yla/gxo0b+O///b/jzTffxMrKCur1OnZ3d6Onv1hAvoHF10vVoVrc9vDwENVqFWtra25H1K1bt3BwcIBXXnkFzzzzDF544QUXTxkOh3jrrbdOLEal0yZWV1fRaDTw4YcfotvtOpnH21PaJ2X1K+VDO3T5MfZlnbiQR+5Ke96XrszYEZUlT4CLxUqsfoKWzvfOEivLo4dSvrH4fBY/NBU0njkPamny+kkcFj+fg64fo+uSCHRalzw5S/O3Qn2dytOLlPFF7Seeh4VPYvETesdPVtBiRmQvUqyI7oyVoAUzFHuVtpIP8l2328X29vbcu1arNXef7HQ6ndvxSTSHNiedV4Tizlp/lyWj1Qh5kcGj5aHBJ7h9ZUkGJqXCV1DGdsT6HIcUYz5WL4uS1cqKpZUK3FduTMml1C9kJKQEPbkBADy5j+fg4MBN2NAWfHJI5fGmZxH4SilTtoe1b7VvUxDKO7XN5LjXxpzMvyjtWt6yv/lqPgDBY4B8wpPy5UeGyrsXeTrfWCNDSiI0GSvzlvktIphW5H2IRqo/KXZ5Jv54PHb3JcoxrOVnpUlL65NVKYoyxcH1yaEUvREL9KS0S0gPxL615BWDVqdUWe3TJXnlvcWZs7Rx6FsKVLTbbTx69Aj9ft/JMh5Y5G1B70InZBCv0Z108jiTMh1zCz9qbcnrpem4mB1CgUrrsUY++ORmijO/SJuCt0foNBcrTSHdmypLYzTEYNFZnL+kTLDqu5AjJMcW/ZZpQnTJZzK91Hl8bGv0LTowLMuQ448m6DqdDtrtNhqNBvr9vrunzeKIa3mnwhqg4Mjbdlqf8fvP6E5OX1BD2rwES/3Ltt2It8ivpT59+PAhqtUqOp2O0wn8riZLUDEFMVtNIua7aun4mKLA33Q6xdHRkdOBXCf68oyVH6KX+zcyKDoej3F0dDQXcAJOLgj2yWWuIyWfkT9MATQpz3je8llMruVF2T6orz6+9CljqVKpoFarndjFZYVFd/l4j6eR4y7mK/j4RaMtT39Y4kOWdipTnixaJy7Cf+bgC174OCX/djKZ4OrVq7h27Rr+6q/+CsCT+7xpQWbKJgLNLpFywIei7UAykO6vppN6JpMJHj9+jO3tbVy8eBEbGxvY2NjA008/jdFo5O4sHA6HJ+y+SqXi7JFWq+ViexbbSbMjYrwZiwv57Oa88iMl5uOrsyYXYzGHIuB+iEUm+fLgdMq/U/JLKc8CjbY8/kfe9PybmD+XV37l5YmQj0OguJ2cvKP7g+UuWSB8gpdGQ2p/+sZDTA6klMXLyWNThvpRa3efnuY71kl/8JgrpSE7iC/ipz7iddDqlFK/0WiEbrfr5DmdmLC6uur6vVqtolaruUXmIeTxDznK9nfKyj9vXIOQ+5jiVGWYB1mWOWOAVgRz+HaNDIdD54hLyMmX0M6cPHWRNPEBxOEbGKcRIPQhZBCF0sj3XDBTMIjn0+/38ejRI7X/BoMBfvCDH8wNfouB6nNSF22sp6CIQVBWPVIURihdKj0UfImVxScgpFCk43/ICWo2m3MTq6m7xfhOBFqpTs8lfbQzxjeG+MSjXBgSwiJ4s2wDnmik+msT2OScvvXWW6hWq26RRVGE6hEKOqTmJ3mtLAPZJ/tD5WjBuzIgg5ykH6Xx9tOAMsfddDpFt9udW71uPa7cOlZp3GljLwQtaBjDYDDAcDj08jMdVUb32aXoDYJlnMlxogWofd/F8lsUJpPJ3OT82toaKpUKDg8P3Y4ASZPPNiwii3wyh+thGTjzLSgK5VUEVKa0DXg55GguwvbxBUR4+9C4k3btz1AcZdvmpM/29vYwm83w/PPPYzY7Pm7x4cOH7jhJmpjmfUoL/MiODO1oknLovPgXVmgyNZY+pY7S5+Xfkv3B7yekY9D4ziVKK2lOheYjUkDx+vXraLfbODw8xGg08t7llAriK98uV85nfHGopJPLnkajgaWlJbRaLRwcHBS+N3aRfrHW77xcK3xBdbKBaBcJ2UWp0IKveWwznk6751YrNxRXOU8xixh89stZ0X8aZe/v7+Ov/uqvUK/XMRqNsLq6irW1tbk0lUoFFy5cwHA4xKNHjxy/An6+ms1m6PV6qFaraDQaXruoLPCYBgXXa7UaHj9+7NJ0u13cvHkTvV4Ph4eHeOutt7C0tITf+Z3fwT/4B/8A3/72t3FwcADg2Odpt9vO/282m2g0Gq49bty4gX6/j/fffx/D4dDZw5pdJWOivE99E0rat/I5tymB+dNFUvKywicDiR+4T+6TYdZYAOXn20XN5bIv3hGaIJL3yVJ6S0zYx+8+GkNptVMhUhCz24rKD+vEJNfvfMEu0eDTRZJ+3p/a/INGUwyTyQS9Xg+1Wg2NRmNuZzldqTSZTHBwcHDCR5J2paSB3ltlm+Q57T1Hkf4ryleWskNXMMj8uE/T7XZx4cKFE/NadL0j9cmdO3fU+TKpf3z08n4EnpxM2Wq1UK/XsbOzg+FwiM997nNot9sAgNXVVbTbbXz00Uf48MMPXV7cvg3JOF7n82Q7+OQiT+vzV7QNB6G6eSdjQ8I5xLBlNyRVShu4pOhpJRel04J48rmP5pSJjJhwkMJUS2PJP9SmcmDlCRBYGDAl4Mq/54ZBlmVzxx2QAJnNZm6V8GAwwOHhoTtaTdJBsLRfSAlKmlMQMgwttGj9GlM2KTSGhGzMsJO0LSp47aNRGuEA3MIKyeepPC7rT881uRDjOVIy5MyUGZjLo5Dk+JewyDVrEEHWlQcw6e4vi9ItQkvou1jfpbSvHA9lBZiK0JJapvze97tIn6TQEwre+HT0omHRdZzfW60WlpeX0el05pwS7V4iX8BKy9dCn6QpT3uFxoNPnvl4X5OpPhvC4oBbna4YtLFmsV199oFlnEojnJxXeqfp4Bh/pCLUfkVkVehdjH6uZ3kATNPJqeVLe0CzIcpELP+yfKBUvUCLKPgEDi2q4G1t4QM5VstsR984KNJuvG40OdNut5FlGTqdjgtu87TyWx8vxvReWXqRf0O6hHaL7u3todVqYTAYuGCkJZhladO8/k9sfIbylUclkj2t9YH0p61+NecJmWY2m6Fer6PVarm7tmhBJi026na7ODg4mNt9oI0dn/6K8be0p+kbrV1pgSff4Z4CWX5RGRXzV8sog6Dxm2/Ss0jcI2YbpI7l1G9S7AxLPhwp8ZIibSifnaZ/Q3kU1SU8HwLp1Nls5iYUV1ZWsLq6CuD4tLd2u41Op4Nmszm3uMeXP3DSluB+fFFfKNQGGu/TxAvpTYqv9vt9dLtdHB4e4vDwEJVKBTs7O7h8+TJ6vZ5bfEj5kg6mydZ+v49KpYJGo+F2DFtiDZxWad/l7V+uQ0J+hxwLi/JJpUwO2ZMhH1CDz96R73keVpmVKis0ezJEUxntXlafhfR9TGZZ2pOP89Q8NB7OEyuQ7U1jWNsMJe8alot7+Xj1tZ3PX7PC0qacxpRvi6AM3cNB9JO9TFdXcTuV4uO0YMJ3fQLlR8802nmZ/DnFd6lPR6MRBoMB6vU6lpaWsLS0hM3NTezv76PT6bjFNjLPmM9SZtvlRaoM8tlA8vtY3XLvjC0bssLEWL1ez+ucPP3006jX63j//fcdc0jQ5caHh4fm1ZMxI8Zy/4cUUHmhGS4aU3N6yljBrzFi0bo0m01cunTJCfONjQ1cuHABOzs72N/fBwAXTNLoIeFjoSmk7BcZQPMhppRDDozFcC3L0c6ybG7lDT8KnMo6bVy8eBHXrl3DrVu3sLOz4wx6grzLTUOr1VJXoRNSlej6+jo6nQ62trac3MmyzB23nQpNYabgtJVYpVJxd0ocHBy4QBqN3xQ+KYunLG1gCdZROp8TE8rTB8udP3nyDZVHhrNciCSPrKRgY9Hgbl6jmueZuhK8aP9YAh58RWi/38doNMJnPvMZPPPMM+h0Orh//z52d3fdJK00xLgtQDpM0kXHu7TbbWdY06kgPvpozNF7yWOarOPBEl8anpZ+E59EDcr///QCqp/F5ioaVJVHyVmgyYFQMITnLe8NTHUqSU/II314P54VqF6pMpxDc855202nU4zH41z3iGuTF/J3mQ4xnZ4hx1bZEw55kWUZms0msizDhx9+iOl0ihdffBG1Wg3PPPOMu+tN7tT3+VSyryitVc6mtkdo3J6XNi4C7Ug3H4i3qd3b7TZ6vR6++93vOj4E4I57HI1GSTKvCHg/0cQgn/gv2y6Q3xedmIiBTrfIsgztdht7e3t4/fXXsbKygk6ng6OjI3dMND8iOgTa9S+v6+Df0qRF6OoVHzhPxcZeUR7RxmKZfcLtpBC4rs27IzYVVKa86sp36lkIfCFFKFD9SYJVjpelt7Xge5F8Z7OZu4pnOp3i/v37+L3f+z187nOfwz/+x/8YGxsbeO655/DZz34We3t7zl54+PChiVZpz1Dck/OWRX9YQX4h/eb3QNZqNbz00kvuTkK6O5tjOp3iv/7X/+oWs5A9N51OcXh4iEajgVarhaOjI7czuFar4fnnn3d3YxNoHBepq+Sv0Pe+Y+ZDJ7SEypPj33f9isUGkDRofGvhY9IvsfvHufwm+oiGFLlqiafy+lv6NhTjLUvvhGLEeWQx1U/uBNVsBcknVn88Jktj7RyyszVMJhM36ab5a5pP5KMp9f5arayQ78d1M39+XiDpJB7gk9v8vcR0OsX29jZms5lbZJtlGS5evIgrV66o31BaOkVEe689o1PP+A+d/ra2toZ+v49vf/vbuHjxIr72ta+h0+ngmWeeQaPRwOrqKt555x08ePDAlU0+KuehPKdZLhqpvCPtYf6Mj2VL/HdudFmMpVTCYml9lee7XAm0sorS03GlMgBJwUy+2jZGb+hZDLKuKcaBLw+NJilsUmiLCeaUNuL5aYqS+k0LYHFFT0dDkUPa7/dPHI8Y4imLIxQylKx5+PLj8PVJyKhILcOabx5lJw3LGM+mBOhkOTwwqAWj6X4syr9araLb7Z5YaePLPxRo5N/Sap/ZbH5Hm+S56XSKer2OlZUVFwSr1+vqQokUg4O3YSyYVVYwRUNqIC3khKQayr78Q/Iqb/6p40LjNdkX1oBK3rLzGq6xtirCT6dp5IaMozzyR76LjQvqb9JbV65ccceS0TFcZOSSwcvlio8OyeOcFkufS90d0o0WW8xnj1lsBOnQy/rIdFr+1kBdWQEpCYv9Y+EV+psmHdvtNtrtNur1OobDIR4/fqwu1PP1vWxTa3tpNFt40NLGMrAU4ouY8+9zBvmRpZZxYaHHB41PrTqxDN1cBNx24fexkeObSttp6AWLTNHehfhpNps5n498iuFwiHq97u7PpTy1Y+4oD58+L4pUm4XGGL9bFIC7x4+nK1KW9k2KT6XlY6GJ0kwmE7eQmiYtqR9SFxVb/CDJe75gCl13RDuRaeLNZzNoMs3iW1Janr8Gy+KYkCwqKqfy8Jkmj0N15Hzva09LuUUQaycfj2m+QSjf06iLFXn1phVlxj1C8NUjb7tLW5b34Wg0ws7ODn7yk59gc3MTtVoNzz77LA4PD3Hr1i3s7e2h3+87+QE8mYiP+WQyzSL7hQLtvDyKvZJfQycGkA4FgF6vN3eVGB0XTpOy5APJOw9JT5Ntwq9e0cY+h9a/vnYK+ezat5bnsu18z612qqWcMuIgso2070NtK30OK92+71J8l5R+yytTU/3KPLpUtquvzFDdtHJj8ZFYH8fKJl+MFkwAmDslhI97LQ+t3vx5qE4yj1Q/zZfGYicWQSiG4ksfspH43yQr+QK/wWDgroWbzWbutNFerxc8mSFmH0vZyXXfdDp1Jx7cu3cPy8vLboPSxYsXsb297a79yLLjUxbolJ+Y/y/p8GHR/RiDlKshXrPEJ9Sl6XkqmddgoLz5ZMlsNpu7w5Fw4cIFtwJgOp3igw8+ONG59Xr9xP0NGiyOnu8uA43B5bMyDCgtD9/gijkCPqTU0RKooG+Hw6G6+odWGFLZNGBnsxkePnzo+l0KJ3mPk+QXCzT6YwZgqK4fF/iCDgTr/aYyTyt4edVq1S2oAPSd0K1WCz/3cz/n6Lp//z7eeeedE3SH7o7gBi/vZw66mJyv/tHyGY1GuHjxIl555RXs7u5iZ2fnRL2A4zahyRjLbt3TclLLBjlg9He1WnVHJGqLX1KcHs14K8tJJ8TuqLHml1fuLBpcpvkWoJSJPPU7bzytgfPeaDRCv9/Hb/3Wb+HLX/7ynO4iVCoVtNtt9Pv94J1uJLfynmDBx58VsQABv7fI6kTw4LQc96GV1Sm0cwewyLhLCcjJgAX/ofe+OnB+GQ6H2NzcxLVr19DpdNDtdvEnf/InGI1GczrQB9mmIR3uA6fbJ2/zyqeUQIk1Lx64a7VabndgWfc5Eo2aQ2ixb88LeB1+Wu6yDfk3s9nM3WlEtsjBwQGWlpZw+fJl53dQ4JgmbClPkld8l70s97T1+KJhCY6m1j3WRzJdv993O01pp2+ekw5SaKPfNHlfpAxNfvJdZpa8ZXCN2gCAmwj2nRiVQudZIWXcUJ/LXainRX8suM3TEFLuvrPaVmeF80rXeUG1WkW9Xsf6+joePnyI//Sf/hNarRa+9rWv4dd+7dfw1a9+Ff/+3/977OzsuHjW0tKSa1daMBWCJVBeBmiskQwkufPo0SM0Gg1cvXrVTTq3221cuHABwDEf7+7uukVClUoFq6urGI1G2N/fdzETTV6Rj8SPQKY7Z1PrKnXKIhGiJ1U+cb+J01+GHeeb3Ir5m3KBqI//pF+0aPAJIW1iY9EoYvtZdIlMmzK5GoI2qcbzsNq3FBPgsaQsy9zphLRBZXd316UNxVI5H2q+faxOMl3ou9O0G1LKl89oIV7o1Ea5i5aDrnWkvK9evYpGo4H3339fPS2W0xFrP96f9Xod9Xod3W7XyfZut4tvfetbePbZZ/FLv/RLWF9fx9raGqrVKq5evTqX39HREd5+++1TOc2kbPjGiGbT+cZwLH5zYjJWG8QpAsCSVgoH/ps6/+LFiycEf6fTmdt5JgMSfJcK0UK7Z+XxFLKu9L/2jAtKrT18k3xWyDuAOH2xfLiy0uqkQabNE1RLqWOWZXP3ftbrdXevxmx2vIJjMBioq399bRFy+imtbwCltK/2Hc+zjIkIX9CY/1+G8RMan7LN+NGmRcrNsid3j0wmE6dM+OrJyWSClZUVVKtVTCYTp+jl/YsUPCHnIbZa3DcuqY7abllZ90ajgc3NTayvr88d49dqtdxxbQDcbvzzhjKMSS1PUtS8H8uAHAtyjNL41sZMTNnJOvjy89EUao/Qs/MUxJV6l/ROnuNCtAmNFPicRu39WU2UyHL4saXT6RQbGxtuhaDlex/IdplMJi5AzfV6ipzzvY/JQ06vfMedOOnYcfAd8iFY28XqpGn/+74N6Vv5jAdOYtCOwecBL3pH9xMC87slQmVodYoFq6XtaoEvCGN5nmIr8LtvisJi+5YpL7R6l12GD5p+nE6naDabeO6559But/HOO+/g8PAQjx8/xmAwmDv+Tusji54968CGDz6dEdIlvnw4Unwb+b3mQ6f6g2TfApjbkcTvhsqTf6o96Bv7pAf5UdbWYLKkQYsHpNKY932lUsHm5iZ6vR52dnbm2pOub6CJUN91Lb424rEJLuNTZJ5mI2VZ5myQsnCa45vbEhodPJ32Lq8vk7d+PKYA+O+rtZQV8zeK+GsWxHyds4TWbin27yL4N+Rnkg/85ptv4g/+4A/w7LPPuo0gdO8qyQ/aDarBN8bpx1o/yachaEdsczm3vr6Ol156Cffv38dbb72F8XiMbreLRqOBWq02d6y61m9cH8j45NLSklvcSrTwb0J97rNV+HufLJYxHk0OhexsLZ2Wf9ExbJEPGg2SlhgdKXLIZ+dY6rgIeaOVXWY5efVFqE98aX22qsbjFvvI13f0LCZTrPEw/nej0Zi7NsBaNy2WkNKGZSDPeE3RoyH5EfLnffYRyUn6ezqdYjQazR0nzBfKkN/HJ1ZT6dc2wtHc2tHREXZ3d+eO5a/X67h48SIODg7c4iP6hi9Gslz56aPJZyvwNHnh8ylT4JPVPhvQe0xxngayQlaUO3F0fwrdB0vpY6vJKpUKVlZWTjDxYDDAYDCYe+4b7L4jjanhZJukBDZ8yLIn5/Tz/GK0kKHH87bu9rUomZiiTnH+q9WqM06z7HhVzfr6ukuzt7c3t2PWl0+sfrGACEELmMb66JMO6if6W06w5XWAq9UqlpaWMJsdr5Yk3qXjyWhcr62tod1uA9DvSQYwt9gCsB3dJcEnTGkyVeZBdALA8vIyXn755RPjZnl5Ge12G7dv30aWZe6uyI8jrIYnT0cyeRE6gstAgqbMOLhszxO0iQXUYt/GvvHlb3GuLPDpCs3YkX8X2XVWtP/P65jx1YsmYWky6fr163MTtBwWnUVotVpYXl7G3t7eidWMFt5MdQwIsWscJP0xJy22KMMSUKJ03O6KIWbb8fylfCk6Bsk54kehhkB3gtVqNTSbTXXXbygPS7/HvrfKrFg5/H3K5ADZ5GXrD+KbsiZ6tfyBxQUGLKCyyU4aj8dot9v48pe/jIcPH+LP/uzP5myj2J3g0mfhY0TqUzlWzrIdzpqGkNwkaLaI1oZcfpFNOhqNUK1W0Wq1XHp+dDfpoUX3i2Z7yfuFebqyyuZ8GPPP8ta5Wq3i+vXr6PV6eO+991yAKcsytzhKs4/kbgZN/0tdxndf0/MUcL3FYwaEsu3HVFj9iFCQiuej9Wle3tL0XUqdScfHvueBNp9NHqOR67BFYBHjtAz+OU1fIMW2ieEv/uIv8Bd/8Rf4R//oH+HVV191i8vJ9+r3++qdiyGfME9bWL/hAX3+TbfbdXpndXUVX/3qV/GTn/wE/+t//S8Mh0MMh0Osrq6iVquh1WrNyTNtITrXZVQn2kVLR8BrdmNoUbsWx5U2s4+/ZfyCyxtfTFDa2la7PPYuJNvKGJ+8zaVPZvExtLZNiWtY802Bhe4yUUb8SOZTxFbh3wPh06esyKOzOWjstlot0+kdIR6S7eKL8521z0Gw0JIy1iynq/ITUyjeQr5drVZDpVJxu5QBuIWbFK/lpyBoddDolXF2vrlqMpng4OAAjx49ws2bN913zz77LK5evYoPPvjAxfhpYRL9X6vV3CR+ap+ehgwIxZnz8KBsa5n3iclYrhzzBKIlQgpHEyyXL19Gq9Wa20FHjbK5uYnNzU386Ec/wr179+bu0pH08PtIfYE67txY7paVTGsxpHg6WlVGgVyCZEaiWd4/ydP4HDpJK/9Gc6BDdfEh1Oe8Lll2vCtSCoButzsXcOZHOuZx7jXHhX+r1Zm/DwWpOPIOQImUfCzBiFCZUuhqhoHPOU6FDOLROOZCiFaI0tiUgah6ve52o+7u7uKDDz6Ym6iP8QTRwAOR/M4nrY58XGhGAYGOTtzY2MDu7i7u3buHXq93grbTdCol8vCsld6YQZGiqCSv8Oe+fH358DxiAYwUJyMGTbFqhk2MllgaTmMsKGl5R0acxZgsSzbwsrUyfJMnVuPbyueyPlJ3SJlIMokC3xyDwQDf+c53sLW15QLnRIsMUIT6L8syDIdDHB4enlh05qu/zE+zs0KOkW/Bi8UG4jpeBih9efj0r6TZAktevjytY0R+GzKiOSh4v7a2huXlZdRqNQwGA1y6dAm1Wg0XLlzA/v6+ejRbKl15g6CavNXKSMlbCzLEZHeINnIuaZHTeDzG/v6+u6+oqJ3Cd4ak2P3nAbL/KpUKer0e/uZv/ga9Xs/kp1A+/EeTJSG+D+V7miDa6X5VkunvvPMO1tbWsLm5ubBygZNjRdq09Ey+13wT7o+QjCbdwvWJtgtB0hOSfVa9ugjwehMdNBGQJzCTUi7g94M1kB8ux5HcwSXHjjVv+h2Lk2ggGkI2b0iO59UfPqTqC+1ZHn83D0Iy31qPkA/K62KVm1wnaXI71I+h9yk0aN+U4cek4jR1r+wrCmDzmAF/T3ffjcdj786eer3urjV69913TWXzZxwx30HCZx9q+U6nUzQaDVQqFXciD8dTTz2Ff/JP/gmOjo5wcHCAe/fuYXt7ey4/OumFfB5Nrs1mx9eQkS9FVzlp/o6vrhqkX0LyWqbh99VqsModq8zUfEutPEvecnzLOvMy5QJ2Los0W87S3txe5gtYU3V1yF6KQYvXxPohD22xb3n9tXFb1IfVbAktDadFpvXZ7D65YJEr8voOit/yk0hpcTHxPo/v8jK0eAuny9e/eXVCLD/5f8oiKGufSxosckaLWctxwOtAMSo+31KpVNyJpIB+tZ/P/qS85cmt4/EYWTZ/Jd/R0RFu3ryJ9fV1bGxsYGdnB71ez91bm2WZO73p4OAA9+/fn9vRW6vV5uRJih3tQ1k+jtZ3Mm+NXp8N76NrbjI2ryEcYzDfYOfChJTKxYsXsbS0BODJLhTCxYsX8cILL+AHP/jB3JZojYbxeDx3jralDr5G4qtefY4uz0MTrMDxZCxdrsxXlUkm5D8Eq7MWEsqhfrKu1g0ZC/Q31Y12i8hJ5cFgMDeJRRNmPP+iBn7MmQ3xuKVs3/cxhykEzXCWyjm1XUL9zoMSWpq8So/QbDbdalAu2OmIGy2YVK/X3f0kh4eHuH//frAMjQaehh8P5FtkQg6Y7x3Pu9lsotFo4M6dO462RTijIVj4oEigJSTfKG/tXYph4nNGZFkheigfiyEt+1GrS8hxDeUdQ1GDQLZtLD/fWObGZui+ZV9+Rfg8pL+4oXca0IxwTh+3S/gdgxLD4RB/8zd/g0ePHgHAid0qWp19/DYcDoM7lEP9r40DXpa2O9fnyPnGAC9bBgB8NITq4vtepvPRlgpOm4+fY06sBZPJBIPBAMvLy3jmmWcAHDuu7XYbrVYLa2trmE6nboGRtU5yTKc4gLF6ae2Ql64Q/6T032w2c/fLV6tVdx+ZbxdGSr4a/ZZvrPQX0b0xaG2aZRkGgwHeeOMN12Y8TczWtfoPFtry2IxltBXZk+T4T6dT3Lx5ExsbG9jY2JhrqzJo05xxbSz4bCbpR8qgCtmkFOwAcGIylq90j8EX1NFoi9Vd5hvy+7l/4Rt7s9nMLciV/oilTlp+IfgmY0PPpM7ji8V5fS3Q2tanu31yn2iQtpPMO9SOVtlXxI/gNKem9Roj6boAAOnXSURBVI3ZmH2fF2XKh1i7hfyZvPrNV6aUTWfhrwJ6APm8gGijwDA/9UnqwdnsePEIMH8MJB+39XodL7zwAh4/foz3339/7vsYHUVh0Uv8PS2A5/e8kly5fPkyvv71r+Px48e4f/8+vv3tb2N7e3vO3ufym8d7JB10DDzprXa7HT3x0Fc/TV5qdy9abVufjArFHmT+VrmrIcXW4nzp86slrOM/JkN4+4ZOn0nVO0VjJIvMT/artNVSIXmH2lSLHfh0n7ST+FxJzLbwIWa/8zFPC1FqtZqjg1/FI+UhL1vGJjR/PDTmFo1QOxSVzzHbxfdes4/4WOQyULaptinAQoOMmVC7EJ81Gg3nn/R6Pdy5cwdZlmFjYwN7e3vY29tztFSrVTQaDTzzzDN4+PAhHjx44HiWfPxFnGaVYoPmzZsjZOvwNtTomZuMTV0RkBfU8Hxn6+XLl7G8vDwXSFhZWcFzzz3nGG5lZUXNj3Zf8vwsW/iJmTmzawb5eDxW73PlDaqt1qeVIgQ6nk62szyPm9/HANidD62TNWFuYUyfwxjLzydEaTcwVxq0I1kGhlMuspflp3zro7dspDijRdOkgBtXXGjxPiraPlmWubuBK5UKhsMhtre33cTDhQsXsLS0hM3NTXQ6Haytrc1N4HMQD8nJfQvq9br7jt/L6EOr1cLP//zPY2VlBevr6xgMBupuJn6/LTkamjIrE6fFKzHnWcqDPLzC5agvGKI5xZoxl4KifB0yakIKN4XW1OCQNb/TCobkMYQsDm0e+lODbGQ8jsdj7O3tnZAVfGdStVp1uyBj+cbey7Fg1dWELDt5LBV/x523VF6QxrLF4U7pe00OpPJAKFCRkg/RYLGJQ7Lo+vXrWF1dRavVmluAxssoEsTR6OY0lY0y5Afn0ZQgVAyW8WVJl4qUsXpWkHyhBXP4+6LlFE2fYjvJOlC99vb2MBqN8NZbb2E0GuHGjRs4ODjA/v6+d1ehXHRLf5NO4LpdLiaktBzyfiZL+5INeZq6muCri3zOA9+LOhKc86pv8Vje9qHJgX6/j5WVFdRqNbzyyis4OjrCw4cPMRqNMBgMTvinVpp54JJf/8KfW0H88OjRI+zu7mIymbgJIwnOs2X5AGWgqI9+HmRrKg2WPpB6I+Q7xGCxlWL0aJMAZeq2UPmL8pfzgHx6ioVIm5pPntAC7e9///t4//338Qu/8Au4fPmy20HKv0mdvDkN22IwGGA0Grl67O/v49GjR/gP/+E/4MUXX8TXv/51l7bX62F3d9fJfzqOmXQpTdJIee2rAx3DL3ci++xYjUf4ohTpQ8nvNb8nNm4sNPggJ0tCkLRLfuG6w1K+r8xYPnIShp4R+Mkd2jU2cqyUNaZPUzZY21fanLE8NfnK/7feoRniwVjMTpafR7bQWOMnXNL1CVrZvrgY33GrjcmQzVdEJlpiF4RYOSlxmlB8Mw+0+CnnS0DfDWu1pUNzO2R/8jkuGQPzyXSeFy0CorvIZfllHMedB2XIG6qrxeZVd8b64BMgPoHvy4MYhjfy0tISNjY25gJa7XYb165dc84M7XaVq1RpZyXfYWoxekjh+epF9fAdxxBT6BTQJfR6vTkHijpK5s1XMvhW3uYd1KmGfqiOoYEqn9OEduhYDSstvnI1hRiqax7nKhV527pM4zvEu7LNNKM2NX+eJwUjKL9+vz8XlKYJ2KWlJbTbbaysrKBarbpdDtwg1QJloTpy8KCKXAjC86B86vU6nnnmGbdLHwAODw/nzugHjpUPKSCpBM/SsSzCPzE5UxY0uRsyMLX/Q/JjUbSH+F1zQGPGmiWIIstPaSueX2og7CwQCgQV6VOrsU+go1MoKEuLpPiiIuoLOk7V6rj7nDItkOCzryxtIWW7DA7EgmPy/1S5Yg3+yW+s/exrW9l2MedLG9Nl6ODl5WWsr6+7QJU87cUaKA0FtorKOc4HRXjNAp9DxmWl7ztr+1j63AqZbyofnSZS5QEhL82naRvE0nJ+Ip+Ojk58+PAhms0m1tbWXOC5Xq87uxQIL97lspIf2SVtkJAsS+ENnjf5t5yOEJ3asyL9JG0NosEahMzDWz5/3CcjYm3rkwe9Xs8tzGy327h06RKazSZ2d3edrE7pN5k2pFNS2oX4gWIH7Xb7xPUvMVr4cws02mN5FelraffIfrbEPhYhj2I+uUUPa2l4va3tWKZes8BiIy+ivKIoo524zNbkN28b2nRx//593L59G5///OfdfdN0pCPPM49taxmPWjr+zPcNLSxtNpsuTkLXHkwmE/zmb/6m00Pk//AFQ/KaJ81mCvlG5GdZoMX7KG8et5I6I6U9+LvQWAz5bjIfjf5Y/eh7H/2xfKxlheSp1Ln8G42ftRivRYemyBotbepYL0KTpsM1OykG2f70vW9xm0/++PL2pSnDXyTw+YxarTZ3R7QGS4xE0l2GDZn3O6tNHbLtpBxPscFiNp7vO423uM0eqpfGN1p6so/5BGyWzR9fzk+c5HnwY4kpJsJPSOU0n9VkrIRs0xS+tKQNb+UoCF8H8t1jHJVKBS+88AKWlpbQaDTmdrMBwPe//328/vrr2NnZCZbJj8nl5XKQYcEhFctoNDIJbKmMarUalpaWXPmj0QjD4dDlReeq7+/vz9Gq0WSBVfFamNqnoLkDTpBChh+vRfn47vXVVtCkGKqawxYzUGOO1Vmg7EAGQVuxRpB3+FrKjSkR/s3a2trcfbGho2hWVlZw8eLFOYF+eHiIt99+G91uFxsbG+j3+3P3ChOkUOT8ScE2Opee8z5XSvy+aLpcXFvI0Wg0cOHCBbz77rt49913T9BjNb5Oy5FeNIrWIyXIFULI6ORlAbaj2C3OA733rQKUq9KItrz1lYGqMhEz+PIENmJprXJYOtRljR3SP/J+8xCef/55vPLKK+h0Orh16xZWV1dPpBmPx+h2u8Fdp74go2+FqAbipdCucFpxTu8Hg8FcAEUDyUMCLTwJHZvH9XAR22XR+thXb/mMn57A2yMvfbu7u+j3+7h79y729/dx+/ZtDAaDXIY8b2eaFCo6Los4vFr+eeWF7ySMbreLTqeDRqOBlZUVDAaDuSNNy6RdBhM5b2pBwPNiQwLHNNHCz/OyICyET5IttEiQrppOp+j3+3M8n7qwiutTyqNMhAKIvncp1yUA+kRtXr+ObP333nsPS0tLePbZZ71ppR4oupPcYoNSOVbdGttVkzre8shyC/jJWJbyU3AacrlocNs6/s6bjvmkgvcH2bw0sSARC2iPx2N84xvfQKPRcPEEkuHAE7tcxiQIvliVNhFTJijPSqWC9fV1jEYj7O3tOdv10qVL+NKXvoR6vY4XX3wR//t//2989NFHrk4bGxvuuEop87mPwE+K6PV6qNVqcxtWtDpb6huybXlMssgpDhZ9K+nW7q+1xoq0kzckJI/G/DtKkweWmCtdTWfZpeyj0TchptVN842syOuv0rd8Rzjnb0qnxRGtelzOKWiQ8Sx51KvVxpb9mbJ7n7cHyc56ve52OdIVM7zv5bwMbyt5xO6irq8qIlt831rpTfF9pK2UZwxLOVLUZuW26Ww2c/e+VqtV7Ozs4PDw0J1i+fzzz2N5eXnOjl1dXcXnP/95bG1t4c6dOy5/WijL41Z5cd78S8kzmi6JTsbmNeB9z6WQarVaaLVabmfc8vIylpeX0Wq1HMGDwQDdbhdbW1u4e/fuHG2cwfiPxdkJBecon1RhQJM7cmKV6i+FtU9IWRBydMtiRJ53aBDLdg8NfF/7h4wImY/POA0ZrVZjQCJP4HRRRkGKQNXS8mCuhAxEptDI612v193RBdzBod8AnLKmo3H4EReTycQtVKD7GmPjWaOXH6Gm7W7nBhXw5N6FTqeDpaUl9x2NaTq2lB9XHGozjc6PIyQfxcZVrJ4pQQZLoC3VuLA4LFa6Ynx5mpD9E2uXIk5ZXoScLXrPf8vnRWlIyYeP7U6ng0uXLqFSqWA0GuHw8NBNqpHMopXwWjmx8i3BBy3IId+TTKtWq957sK0IBXY15OV3TT/lydfC76FAQsqzECgoTovwsux44R0FtyhA55ODoQCGZmNZsAhZpMnRspwobj9TMI0fzWlxtooE80N6PY+NdxqIHeXqaw/Ji6n6PARfP1l0VNH2pe/p6MThcOgWWRTNNxT4yztGQ+C+qDXvEC+chjyw8hGnif8dko3atzH7VOoZsu+Pjo4wnU7R7XbdbuqQH6nRQvmF6IiBj4mQjZy6Y1fSexZyyyKDtPd57I88bROCxS4rQ+/xMix+T1Gk2g+LosNaPkfMbioCi90r42I8Tvjo0SP3d5ZlbvNF2eOvLFuL/z+bzdykDgC3CGg2m6HRaODq1auYTqf4zne+M3edGh0vyY929tEr79nV6IrJCR98sYrQd1q/lMHrPt/OmrdVrvjsq6J1sI4B6VNxG9pCU4zWkG0q6fHFPPMgZL9IXZNi61h0oNUWkOk53dwm8dGlydUivCN5XV7TIcvNsvwTrprNxfOW/8f6yOL7Sz608FZZcj9kQ1n6LNVO0fjRly+VPRwOMRwO3WRsr9ebu6aDYlMrKys4OjqaW5hE9rhmR6fyo5UHQgj5E6H4je/bWDsuZGesj0Bth9yrr76KV1991W1RlmdGA8B7772Hb3zjG3PnkwNwx2rQgO73+yfysBhWmmNtZQCef6VSccescvBVdrPZDAcHB45ZLfnGyl8kLIqG3yEQgu/+nRBj+5jXsqK66AD+uCEWBPIJA+pj33Hclu99x2kDx/zf7/fx8OFDl+6pp57Cpz71KWfQr6+vu0nZUJ9bFiyQPKB7aSWtMi1HvV7HV77yFWxsbDgl0W63vWXRJHOs7Xj5Hxc+k3JxUbJGrvri5Uuk7GZMeZ9HWUuQE8vvSSgCaYxI/WmRl/xuN9mXi1p1qNFn6QtNDxflOXnsSYgWGWDhi0cIKysraDab+PM//3PcuXPHHWF8eHjorW9MpvoCElpwMWSIj8dj1Go1rK2tAXhyHHtoJyaVIxel+FbtyzayOqEWEA18FXsKUgIAPvDxYqWBtz/dH3x0dISPPvoIS0tLc3eqAMdyot1uYzabqSeH8Prkac8y+6Rsma85s5zvxuMxWq0WVlZWsLS05BZlpgSwQs+4rVmWjP646HMfaFHcYDBw/FhWvU6zbWRZdHXNgwcPXL9XKhU0m00n42L0cZlCtker1Zr7PxZI5Dy+aH8tBbHAYEhnhE67yUMHP4pZ7jixnGhihRa4pJN3vvvd77pgUZ76SX3Nj+/Uyo7lRW3AA5qkM0hPnhXovkDNRgqBt1HRUycWBdnewHzfafaJZrtqsAQ2Y7GoT4LO0XDW9QrtLKc+167ZGo1GbvdXvV5XT/6bTqduoYd1tzvRwmVSkbESa19+8oIc01tbW3j8+DE+9alP4ctf/jL+6q/+Cnt7e96xH6OTX/vCTwcM6VPuG/AfkiPye20c8e9TYd3Rz5FyxCaX+T7wq7boG5kHxcno5AfNH4hNJlhAfEzx9lg8Qk6yhNL56mahKYYUGZPS53xXPfAkHh6zX8r0RWJ+vqUcyRt5eYTb3IDeN5qcBDB3kkDID8/DI1rZRfxs/m2ormVC8ycs41njNf7MGlsFTo4J2rhEMmE2m+HmzZsnaNzY2MCLL76IS5cuYWNjAzdv3sSDBw9cGrlLmo78Py/HFQP5x2woNjw3GZviKBBBnLgULC0tYX19HZubm1hZWXlC0P8/KcuPgByPx9jf358rnyteGqxc2ISEvqYg5LM8AogYh0+8ksPP24wHO6XA8tGttbUlGF8ElnYIDV7JsEUDi6EgozX4LRFzjM4ClnJ9wpj/1r4pu76cR+j+VDIo5VjUJtJowpP+39/fx8HBgRsn4/F4zgmR9fYZmin1orKIX+v1Our1ulv8MZsdX1S/v7+Po6OjE+XkkReLcDwXkWeRIKKvHxYtt3yyyJrWB4v8CY2xlLK0tFbnyTImfGlDNMi0eXlCGn8+g7qIE2AxtLnTweULObP8Wb/fx/b2trtvcGdnB/v7+3MryGW+VloJWuAvBTI4wU8FIHuKDFyfYcvbw9cPRZ14mac2dnjbL0JuhBb98LxT6kltT/qPAnSz2ZO70ssKhFghbYKYHVm2/tAQqjfxHY1BHrAfj8cn7OYiMiIlrRwTMp/T6s8YNNmnjSXtO58+8+E81DcEGodc1tGJLDJd6H8Oa/CD+5UWOcNt5uXl5bnj0mmCPKbD84zdGE9o9QlBoyUUIJd0SB4swmPWb4m+0WiEarWKZrN5Qk6m+pcp9hvlb9VvlE4G/MoYj1a7yfc8T0xIKzOPTiprEaSEZpdpYyFkt0oZnGofWtqjiBzQytSel8VjvvHhe3YWuialPTl9NBlD/Mhjk5ostNaxzPbn5fLnUrb0+33cunULa2truHDhArIsQ6vVmotzUpyGxzpDfK6VG5L7IXr590X53jfGpA2VN++Qraj5wxadGbLZuF2h1ctHSxFofF5G/nnlQOrY9ZUVkr/kr/Dd3lq/xOgPxVesdpd8ltq/kg8t9Mr2ms1mbhEZcPKqLtk20sfPM97KGJdafjF7JlVHxMa2j899NpKPd610hPK38G1MlmubDnu9Hvb29lw6GYviixcWYc+dJkKxM1m3UnbGakwRw3PPPYe///f//tzqzizLsLKycsJZlncKNBoNVKtVDAaDuVVV2t0DHFk2f9kwPZPw3ecQQ5ZlaLfbrozRaIRer3cinWwruXPCgkUbp74+DQkAKVRjSHVwrSjbwFgEQg5VEdrlaml5f6W2U8wKTfDyFeSrq6tYXV3FeDzGaDQ6cSE3x+HhIR4+fOjo2tzcxGw2wxtvvIFer+dWku7v77v2iK1OI6Mo5qxK0NEKlMfh4eEJOXH//n389V//tZMLdC9CKjRFd9YIOSEp3+ZBTOGSYUd/U3kpbW89di4FvB9DfFmWHOLlpNxFIndn5Ck3D0L1TuWxFOS5R4/LF75im95Xq1Xcv39/7nhyuhdDy4+3d0yeU5m+3aha3imgfBuNhrOPaExZgj/SmY8hJdAoy9F2H2j5c4RWHfuC23yiz3qigZUeDdPpFPfu3cPu7u7cYqUiwXSfU2fpU05XLE0KQnaXdLpTQPxKR4NzO38Rth7lyXdJ812QPgf6LBGyeTR5VPTOy5+hPNAuQzrS68UXX0S73UalUsGjR4/w1ltvubv1aIV4mTwXGkMWea75cTyopk1AlAVLIDUPUnR4HhTNk/teRGco6J4HtVptTlYsCtrklFWu836iwB8tPCs7mEd9pgWZYz7Mz/AE50FfcoQC7nxRTAjEr1mWYWlpCbVaDYPBwN2jKk/sS5lk8MnPPDI19A1/R/b43bt38V/+y3/BL/7iL+I3fuM3TnxD8SY6GYhfLyFtXBnHiflFPhlJ9NFORDkeZV+FbLZUGZMXWvmxCY5QmRY/l+wKfmcnbXTiNOTxHXzvq9Wqu1oMOBl74eXmLacoQj5TLC7LYzDcl+Tp+Lu8NPHneXhV2vd8TBJtqTH6EA28HNpA02w23fUy0g7kdatWq3N+OD89IE+MddGQsinVB88DyX/8GS9bQ+p4KuLj8viNT37v7e3hzTffnPuGYzgcuhOMFtmmZ4GQrRjldO1jyYS+hiKjWJsdJ+NkNBrh/2vvT34kS5L7cNxexh6RkUtV1tLV23T3TPeoySGH0FASFx34BXTQRbrpqP9Bf5UOEnQQIUCASBEEKIrCcJkeDme6p5fptfaqXGJf3++QP/OysDRzN/f3XmRWd36AQkVG+HO3525um7ubT6dTl/6PnogdDAbw6aefwv3792F/f9+1g7uw6HFm3wXHPsOcfh8b2KHM1uv1vGlW8/x85y2mjqDt83K+9rQyMRPO976hv33Q6CtLuVoDrhYhVYXC1/grZHSl1h0qK40DN+a5sV80QCAFy/Eupjw/T+PT6XSg2WxCnufQ7/c3NjDgXYfSxe/U0KG0Ss48fxfJybKcjgIAZ1xIqctC89VSPze4qgiGx9aDtFAaKWJkkI//JeeSP0vHWRqzWIVdlnPG67AscIXqpTRKOsxHq2X8q1pYsxqDvjqLOr2WZ32BAHweg91oWKJzQ++rLDrWEixOOP5O5wTXd81m0zkyfMGYpn7EsYhxGqkDv40gZEg3cRp8c8Nnm2F/oOMYmkshpxQdkkePHrm7YiV5yuV+EUfIB8tc5nLN4niXNcY0AIhXjuD1HmVtdrG82zZRVv/56i3KOz5bPoV+3xzG+UnvndPaD/Eg/Y7fWUTngtWnoN/Tk06+PqB8HQO0f7WgWdExjRk3zZ+2wGIbh2w+axsxfaL5RVwXWuQlp9fSt/icJV1p6ljH6K5Q+/zdtPTRKbJMs2F530p+gnV8rM/R+c0zo/jkUKwvYfG5y5LfGiTe5e1JNkqRtooghQbNxrLAmkpYAj6HMQ2agl2LWXCa+W/aWEi85+Mr/oxP/+HmyMViAU+ePIEPP/wQdnd3odfrwb1792A8HsPnn3/uFmKpTOCn4ULQ/DH6ntpY+O7Qlvoz1tcP0a3RyO192r5lbFJpC8kOn48kfe8rk+fnm4J4PG1nZwfq9fqGz8zlXsy7SbI4xoYJvVNsnVhWy8YQku8heulzXB/SMrS9GLpD9Uh+qVZe+41uigjJL9yoQmO+VJ5QWzrW5wuVl2REGbZMEYT8CixTlX0QshGt74p2FP6PPCHFIWnWNi5XkIaifVyGHUG/T61PepfgYmxI0PiAi5Pz+VwNAo/HYxgMBnB4eLiRrhjg/J6C//Jf/gt0u1145ZVX3Pf379+H8Xjs6KMnWTidCC0Qp91XaAW+18HBgbtLSMNkMhFPyiJCxgRtL9VIREj9QScL/u2blDGBjLKEhmTwcKNHcuAuE3zibZMu7txyWE5kWUEXLBDL5RKePn3q2uh0OnD37l33+507d+Do6AgAznfEtNttR6t0RyYf2xRDn+9S1YCyAS8kl+Bb3PKNMzfOLc9cBqrcFe9zXvh3OO542pqfCvDB4lzE0GyRnbGQ6OBpvaX0itRIDcGqt/kzRXnSEgwpalhanw85xBh8oI5ADA1Fob2Hr26+Ma3X6znjd7FYbFzxgBvZuJ6PuX8u1ijWAi2W53wLMlqdkvGM81Z7HlPhSymqre9Ky+HmnV/96lewXC432veBy5YizkdsYCeWf0NBn1B79N3o/VPr9RrOzs4cTZ1OJ8rWtLRddK5eJfvyMpHiIGvlMYDXaDSczcXLSgEuyY6iug43p2TZi7TFfD5y3egLOvF0jFQPc/qovVBmsKYopMBWKLjrK5MCastTeuhGIWlsNfpiaJPGp6w7WH2BK2yHnhrzlY/N9EHbKYPfpPm3Wq2cP0TTlWK70nNSvSHfCQNzvjp8Y56iR7XgurU/uc0RsiF9Ps+3Ub9cpt6MaRfnJz/5xuHjCdxMBrCZbh6fQ3vTZ9uEaK6iP7Hter3u+uHLL7+Ep0+fQr1eh263C7/9278N77zzDvzn//yfYTgcuucwgE5PtGnZZyxzSjtkQ9+Zbg7Jss37x6VnQyjSn9p4lDWnLfUgb6XqM6utTa/owZNsCNxQBrAZxyvzrvmywPkjZnFOGg/8LjZtvq+sRY9Y/WQsz2m26lJejwZ6rQzWocU6W60W1Ot1GAwGG++qPR+ri7XfJHvdCmnMLfZqTP2a/4P1Y6yCZ8CktkeKLqH6qQhwUyn69bhuJ6HRaMDOzo7buL5YLDZOyOI7XSU/KhXSO5R6BpwKYAAQg5q9Xg/eeOMNODo6grOzM3cvI8ALZpnNZvDJJ5/Ao0eP4PDw0AWhx+OxO2UHsJmC0SdQJVAjCP/HIKVP8HFmkBZV1us1zOdzMV0G76+QQeILEsQKT/4s7TOeTkQL3Gu0SIqA94vP6bSAC3PJ2AotOKQI26KC39pukQC3bw5IvxVVFnQeNBoNd48IDabg4qz0XpgaeD6fw3K5hOfPn8NkMoHVauXuiJ7NZhv3L1v6OCYIgff64Tw9ODiAbrcL8/kchsMh9Pv9C23SIF6Rhcqr7Ghb+1rrZ6nPUhQoD8hJdfvowzr4d1xn0PYsdfJnND6w9g9/hssxmi2Cfi+9g4+OokZMyvOx41VmvSHnRjN0KfD6gyzLXDBFGnPOo1qaLR9PWDeGYR1YHgMgBwcHG6lduA7Gf5h2FQA20opp7Wh6NkRfCD6nIWYuxui3o6Mj+P73vw8PHjyA+/fvb9iBqfODpwL3BWS0uWjlf835t75DyEbw0WhBjKyPeecsyzZODNLfUtpJkTeSTVsUqbqxrHbRPkPfhy40XiZS278sukPtUn0g9S/lq1qtBu12G27cuHEhJXHIB6qKflouJbBeBZ9rdGi/WWEN+Pja5+UkX1iybS19W8Y7asiyFwugvgA0jXXk+YtNkpIPHsObRXTwwcEBZFkGp6enF06vW9qlek86GWnRO1z3a/o2BEkfbwN83MqQp7H+igU+eVKWTOT1hQLjCIxpxNSN2KY9oPE5/T3LMreonOc5fPzxxzCbzeBHP/oR9Pt9uHv3LqzXa7fhXgre8wUDukgVMz9o2fV6Dc1mE+r1Okwmk2B/aza5NqdDMlbrL/q/9G5lzueQD0E3EqxWKzHW7ouBcBmPv/viIJj5ka4FcL+xrPe3zhWrrA6V0XxMqw9C2/LFDnmMR6pfG3v6veYXWuu0QIsJSH3F34v+jxs26PVveZ7DdDpV27SgyNj7oPnfPvp8fa4946tL4z9fnbG+A7Zj4bcQ7VmWbVwxxA8FYByLb+6TbLmiMsQn9zRosRf6XRG6LizG+ozoUMfXajW3OybPc/FetX6/D++//z7UarWNExu0/tlsBr/4xS9gPB7DzZs33ffj8RiePn3qymu71iyBLr4rGgDcQpAEqoz4IisfCLzvUqMHIaVgkyaWxUDGCaMJX8kxoWVS7i/zCbQsK/cuRVqfpNCrdFAttMUqZg00YBMqy+vU+kcaC02AW8DnQLPZ3DjVTjc0aPNpNpu5O+AWiwU8fvzY7bBcLpfw7NkzAPDfDSrxgE9xcCyXy415enh4CIeHh7BYLGA0GkGv1xMNXL7zMgQ+L8tyEnkbEiQZ7uNVC32ajElBiO6QHNHq8NWrnWz1KVtfuzEOmw+0PnpqQlqMTal7m7Ixhr4Uw0iDFPiRDCZpvKV2MTBO75Wm40Ofp//HBFVwPLVnNPooL2dZBjdu3HALx5r+52k6+WIs532fg8X1VKyBjnytBWl8cjz2Ph589tatW/Cv/tW/gr/927+FBw8eJGdG4bTEOogSn1qe459DMigFmkNvhTR2ZdCJ9w/Rdni72EaoHYsjysta7qO3OuJV2ABWIM+hv0PtoCx7kWmoKp5KeTZljpRRXxmgspd/T/9HoM555ZVX3E5yTV+V9R5SXRbbR6Kfg/umITp836fQGCubearNGPj8UirrNV6w1KmV98nDGMTcPYubBfBUg2Uhm/OCL7hlAc6tw8NDd7qGZqPwxShom5xGWi6Wd/nc1mwpjS5fn1QpB6T6rP4QR9k6hNJSlS+j1U/9rlDb9ARslm0GoDk0nqH8Yn3XWJ+DPyuVoXMbAOCjjz6CTz75BO7evQv7+/vwyiuvQJ7n8Itf/GJjMVbyhfg/utE+5j3xtG6z2YRer+euf5Pg413tnXlZnw+E30k+kfQ+fPE7xQ7V/DsOXBDFdMHIl7ysFjfUbHiNVhr3azab4sncWP706bkYW883r2m9mi7w8UqIrjzPL6xV+HwUKmus7yr57ZKtJM0H3pblnfC3kKzS7DXsE/wb9TVeVQnwYgOB1nbMWEk0UPqssQvpPa26N1WPcoT0EJWvUsxGosdHV6xvoAF1IdbFDyzi4my73d448IR6BfkNY0Yan1tQlo1T5BkO78lYqxDCS7t9zkun04Ef/vCH0O/3N8odHh7C/v4+tNttNzD8NN1kMoGTkxOYz+cbAj6UQgRAV1TU4UDlHjrpJqXbODg4gE6nAwAvmIuXmc1mMJ1OL+TW9zERZTbtvQD8k4sKWV+QKJaRYhzBqsAnD+/3ywh2UUFBESMwJKOuKqSMvQQpBQ8HpgbO8xxOTk7g6OgI3nnnHTg8PHRl1us1nJ6eXpjnHNQIiIXvJBjW3e/3XYp1vBdlMBio6dBD0IR+GYjlE05LrHNdBqxGgCS3+H1VPj6x8LfFQbPQWgaoo5plGXS7XciyTE2RjaiKZmu9ZQeC6P8pz2q/aYYm/57P8+l0qtoG3P7gu4F9sAT5YvQGpndBYzY0NhhoqdfrbhNdlmUwGAy81ylIwYAYoA1kySyAbYXsGP4M/X+xWECr1YJXX30Vbty44crlee4CORgkoWmKU+c5ncPNZtPpvaJz0BdI0OiQ6kltP9ROmfqhVqvBbDZzdh3e5VsU0jiEAmxVQWtjG21fBXDZyYO5eBonJoAnzRcaAOV+FXX6aRCj1Wq54AB+j34bBo6k9q8SQgEb6buYQGcZoO3wse50Ou7kU5ErIHx6sIr3LCoPqQ9Zlo+WQkO73Xa2wXQ6hePj440U0iFYYhMWOiR5LenCk5MTqNfrcHR0BKvVCk5OTsxjoQWp6bz3IcaPsOifGFxGrCOEq0iTFaGAfKgMr4um25cWMGhZbrtqbXIZEfMOGp2+9vL8PIsGvgtd/Ox0OvCTn/wEnj9/Dh999JHT3WhHa9nRQva/1BcU4/HY2fYYP16tVs538R3UscxPTcfj+GF6Xl98xzIOsfpCkp2S/MKsb41GAxqNBhwdHTn+m81moo9n8RmoP8af4aDXSlE7HvV5WQtUZcFnM1nHxxe3Qn6xZNej9mtsnMoSo+ffa75ILLjc0NZocA7Rk9SUZ/HKJVyQw5PXUiYqK72azI2JY8VsVqsCobG1xAV8vMDHT+ufGLmFPhON1+KmU64LuTxFP1DyAaqMa2wbG4uxFsdN6jTptBjv4EajAa+//jq0Wq0NR3h3dxdu3rzp8ovTeyex3Hw+h9PT0wtpkLUUc3wwaRn8TE9hWO7NRMFBgQHzfr8Ps9nM7TLn/bhYLGA6nbpAH30HX4DYYhT66qFlNeajJ7BilKEmELbB5Hw8tbHx/W1BrHFAjccYI6wsGnxlpfmReieipNAWi8WGPJCexXTjk8kEut0uvPbaaxuKdr1ew2g0cgpXMw5iHF3+rEYb5aNmswnNZhPW6zVMJhO4f/8+rFYrpxSuEsqcb5JCr2I+SwpfK8cdMmrAWQyvmGBkioFbNmi/Y8pZXCwK0UR1L/8tFlZZHtMGH/eUAGnMu0k8RnfZcb2B70wzVtD70SS6uS4KOaiabRILqf7lchl99ytupMMNZXmeexdi8bki44h2kBakkdqj/yxAWY9jXKvV4ODgAHq9nvu9VqvBdDp144vPxNpCGjD4gHMYabG+M6/L97f0fKwDn4qydAWV1zs7O7BYLGCxWEC73d5oJ0QH/TslOFYUKeMb+r4ItH6g/I78ovGZ5ENRmlN8BzqfUafzoLX2PiFw2U99Bf4e9N3xd5Sjkt61bASLpZfXT/si9uQ9hfSc1U/woeic52MhyapGowHNZlNMVcdpKXve0Dpj6o+ZP5qMpt+F/Fr+fZnyDRdid3d3Xd18flbR9xwWfy/PcxiPx1Cv191pPXr/XEwsBctbfAduf8fySUzfSbxEkcKvsTRY+Yzbw1WgKt0e0mex70RjbHTeSODyAb/ztY+LgiHw+mLeA/1t3LxIr5ja2dmB119/HRqNBvzqV7+6MPbaQReNDqkPJKB9ePPmTbd5arFYbNxL6JPHqTqM2gpcT2gIxTxi56yvPLaFcTVcEMXN3QDgYls+un1tWOMq6OthBgW8L73I5qoUpNinIV3u+43XQXlFimvRMtJzUntS7Mf3PtKzIdki8ayF3328Tr+nd3NTnsXFWJzXdCNIqs3h86GL6KkUesrUiz4+8I2ZNi6afrL63yGfg/o1luu8NN+U/l4mqrZnNRS6MzbLso07yhAY4JIE7mw2g+fPn8Pdu3fhrbfeglar5QJVy+US/v7v/x6Oj4/d4uZwOITpdLpxoi3FyPMpfv63pe5erwe9Xs/t4OcnbfGULP5LvUwdIeXf5+Df8fu1sEzoTlwAUCcJhRSUKQt0HOhuom3tSrEob75DJyXVM5YLKUUNNOgstWdJ4x0LNKrwPkXp7mYAcPPCd6L0ww8/hEePHm3MF1+7FsfcZ0DSUw04Xjdv3oTDw0M4Pj6Gp0+fwhdffCE6EmUGOspGbEC0yLtYlXIZdTUajY3U9xhgkWSbhjIMt9jfU4BOE97RwzckUNnMnXqNHusJRKyjCplq6auyykjPWJ9DB0DqAy57QgZwkfukfaBBAL54QTEej+Hx48cAALC7uwt5nsN8Pvc6eZPJBM7Ozi5shitib1lQlOdS+OLWrVvw/vvvw69//Wt48uQJtFqtpBOx1FGg76Et+PNnU+CzOfB3a8pIBOWrGGwj6JoCaV5INlYKX1+1d5Ug+QlUZ8znc+h0OvC9730P7ty5A++88w588skn8Pnnn8Px8bHbPBqjY6lseRn6qCi0uUf7gp641eYKylvs7y+++ALOzs7g4OAAlsslvPrqqzAYDOD09NTZCJcFLiP4WMfaoSFk2Yu02RiMkzZqhmz/ENA3oHVJ46Xxdui9sd/onMqyLEpGc2ipjsvs/9VqBcPhELIsg9dffx3Ozs7g+PgYDg4OYHd3F7rdLgAAfPHFFzCbzZyt7rN/JN1VRIcUHfsQNFvb52fSu7djdDCvly5gXAX/M/Z9th3kLhuhQHEqyrCncXO47+Rcqs+E/1O5RU/z/emf/in87//9v51s2Nvbg/F47GyL09NTaLfb0Gq1Lmwu0iDxljQnUIbyOjEedXBwAIvFwl17hb9ReckPoUib0kIxOXpii5dN0dG++3sl8NiA9Gye5zAajVz8GDfYcJ2GfUk3oWn+AB8Tyb7BeJ6Wrli6N7gq+OS1RZbj/5axCcksyVekv0k+fcxcpjT6fB/eLi+P4BspNJ/A5zvzsdbmMsZ+d3Z23AZcilqtBp1OZyMd9mWAvmvVtkcKOL/4+J4/IyFUNsYeoBkVQplt0Ya6TH9nm4hejJUMRQQyJ797tV6vQ71ed5MId+TgnYzr9Rqm0ylMJhN4/PgxHB8fA8CLnOG4+0qiI8XY8D2rMRovW6/XncCgqaxoH9BTNSkKltPFlV8Ilkko/R4jWEKTmNMdA24kYXs8GBBDEy/j62+L8UjvWyjaJi9nQVEHNmZMeGAPF440pU93PXHeXSwWLv3406dPg4trZRhCtH06h9BAnc/nGwY8wAsD/2VFmQ6tRclbaaL/a8AsAlLWBR8/SPX7DH+p3DYgGTl4UpHem0HLS8aJRR6m6gutzjJQliHrG7/Qb3R+8KwV1DnneozPBT7PNB5PfWepPm1cUL6ORiNotVrQ6XRgsVh4FwUxfRS9QzsWMUZ5WQa+BVg3bhBEZ29vb8/Jdhx7HuCx0IFjz3kAbVtt0cb3d4hvte98tpIEn8NuHROLjRcTxOX1oKMesvVibBreV1XJOCu25dTT963VatDv9+HWrVvw5ptvwsnJCTx69AhOT0+DgcEYvvm2gs45nyym/1sCguPxGJrNprsvq9PpwGQyKX1BxlqXNahHZaAv6OhrA2UmBQ3aFH1/H02xNlLKnKXP+GihC85cH1nGIBWS/4bZgrrdrovdNBoNlxUM34EucND6Yv3ZlHGgPIeLJI1Gw2UrC71rKm2+OjS5uA1dY5XJMfxSlLdiEatHfPPaEhcIfV+2XpP4IdY/LeKTW2WhJHPu37/vPtdqNZfZEDcB8mxOKXyjvRP/m8eZms2m6mNI8zcki0P8Y7V5LWMj+Zo++mkZ7nvgb3jYCbPX0QyNeZ57F15jwHVHnufezWOWvtmWvJF8eq2MRbb66oixQVJ0Bo91xegozksSX/Bxi21HklnUtqWZ7+i1jtQGtC7GWnSWNK6x8YhYO6cqpM6jVPpj9Y4UW6E8ZvU1itBwVVHoZCzA5iDO53N3bxmiVqvB9773Peh0OvDkyRO1jr/+67+Gzz//HMbjsZtoy+USJpOJOvljaNS+1wx1Cks6vfF4rAaMEDG002CRJBgs6YtS0tD6diEUSZeFSFGuPpr42FzmhCzLWYkRjBYhS1Hl+PHT8FI6N9yg8PHHH8Pnn38Oi8XCLbZJRrcvvU0MaN14ch3TYBwfH8Px8fFGOtIse7EjvyyD8DIUdhnt0bStMYaQDyE5ialTQ4a8ZgjT32Pk1jaDDbHQsitQHVFG+p+qeTTFQS0LIccewa9eCAXhqKyTgqgcPueEluHBW5QhGi+sVis4OztzJ9vW63VwgbXVasHdu3ehVqu5k7G4K1FDKDDgw3w+d6fbY20KqwzN8xenUzA18YcffgjNZhN2d3eDG2yK8hxuSOSB6ph6aWovK2i6Jw2Uj6qQd2UGdfI8h7OzMwDYvm13GbbkVXHqr3G1gXOY2kexQTca8Ao9X4ROze9F+UM3PGbZi1SYqe3R/7eBMuYsj5l0u11YrVbuvnq+sMHHHpFlmdv4ntoHaPfgqTfcqIV61Po+dCxS+0cKLGt2B8YCDg4OXHrlk5MT+PTTTy9stAu1yQPEFPy+P8u7WRfeQjTxOq5hw1XSq0U2K1TRFrUHNVqoPdtqtcTNnY1GA27cuAHT6dTJDokWSRdpix+hvlmv13BycgK1Wg1u3LjhZJeG1Ow3Enz10NhtbHshGjT5RzfQcZpXqxUMBgPY3993m1CbzSYMBoONtM7UZ7FC6lP8G1NZN5tNyLLzE7Oc7pjFQ44yF3GlZ1Jo4rxL/Szqm21LHnEfUtNrPNZgWWTmGwAs/SQt/vPPw+EQ6vU63LhxA7LsfIPFYrGA2Wzm4ga+67skun2y1nIqXaOX1r+NU5yxOsPHj6ntlwHp1LXUVqov4MNVsgcQquYKCSHLImGr1YJms+n+X61WUK/XYX9/H3Z2dtwJ2PV6DcfHx3B6erpRDx+s2IXYkDAJLQhI5ehpQLp4Q4/O48SUBJd1xwVXULSsdTKkGDm+iZqyEE7bjC3ja0/rY3xO+uz720JjkWelcmU7VVqAP2TIpdbPHWQpaACwmaYCy85msw3FqsGyIBDiSS0QhMDFB/qblAq2KHy8nDKvQnNV+y6W10OBECv4woRUPxqOdKEGeUsKMNFFBZ9Mk95dexdpHlWtuCnPYSYJmv4+ZCRa6bPqn6KICTrFBJFTadHeW9KHNNgW2t0dmhOh33xzkjtxWl1Sqh9ui0g04bzgqbF9+lN63gdNJ+FirFRO+jsEaYzx3XDnPl6fIS0A4w7cohtNqDzi71GUz2Pl/TYQE4iW+sUnj5B3kadpFo6ybakUG6IoqnoXC3DTCG4i7XQ60Ov1YHd31wU0qf4N+Q0xkOQezlUA+Y45zZ6V6o6hg9Yf8iWkd+D8ym1GtH2tthPye0gObYNHaFtFxp0/L/E91yX4DD3BU9R3SfVfrfVL/j7+RmkIAd+b0sxlp9RXvI6U/uI6Gu0KaofiPF2tVtDtdqHRaLgsZ1q7MfLDKos1uVmv1931JriQjP8ojVq/+eiI8aFS5k1KXIa256sjFdZ6i8qJGGhxsZj2U+VJyGYJ6SrNh7XUmzKP6DM+X8AHKt9obITGQ9F3xSxnKEOq9uFoZsIsy9zC3+7urrvblkLrx5i4SIp/ItUj0WORQRYZS8eLjgVm32q1Wi7zJKYVxue0mIkGzRaishe/z/N8YwE3VW74bDNLOfpbyPaT/DnLsxp/SbYilpfaikFIVvDftHYkGkPv75NhPno5qM1B/QJ+sCcV2vxPnd8UVp6S6Imp3wdNXvrkHZdBRfjPSqf0HKW16BzQEPIhrbSXafOYT8ZyBSHdFcvLv/rqq7C3t7ex2HJ4eAi///u/D19++SX8xV/8BQCcvxA9NZvnuTthG1JMVlAHgrYjgaZWWK/X7q4aAIBOpwOHh4fufjVKG52E8/kcsizuVIMPqLQsd7Gk1h9bp0/w4m+WFH1a3Y1GQ62/SN74ogIXjVCtHsupZUQZQj8WRY1jOv/z/EVKbt4G/qM7W6xtWw2q2D5AOnFziHRqDN9tW/f0FBXmZdPIc/kjfZYMAbGgcwmNLQzsUIxGowtZEng9VsQYiNvY6YapmBuNhtsN2Gw24YsvvnBp4ST6fO+BeidUrkpYjDIfbUUdNKov+feSIYrf4cmSwWCglsP6ipxAKQpsF4MPk8nE3auiAWUaTQEe2k3O2+Ofrc8A2BfmU2QvtxfxPnMLsB+orZfadio/IK9SnrUGpnm5lBMAUr38u9j6tCCjJBuK2q+pTuB3Ccinu7u7sFqt4Ne//jXcu3cP3nzzTZhOp5BlmcsUgunyMV1u2XTQOYNB1NVqBePxeMO+5mlqabBAO3FuCSbyQCEPUvGgMn2O0kK/w3bxOd+ubomuPM9hMplAp9O5NL0SC0tAIjbAsVqtXHaURqPhrhDJ83xjXK4icPyRTrpYECPbaX2YQp/yO+W9MoNCPuDC62q1gslkAm+//Tbcvn0bZrMZPH36FO7fv3/B/0X6pKumYu0I+s74vOW9abrler1u8mWkU+dWPqd2DK/L0t5VgC/ILuGy9W5s+1XIEIs9Q3VOiK8kHeVrMxaxcgNlM8ZI2+22esUUPz3LD9ZIQLnoi+357qCt1+tw8+ZNZ/8+fvwYvvjiiwvl+L3jRWxHKsuRbp7VxnqoKGS3WGwafkcnbkihh4eazSY0Gg0nz589ewbT6dS8wOXjQ+mUIS6I8/gb+luY4vqyZQhC8qcA4rIhSHWG4h0+Pc/H3sez/Dd+appvcNPmAqeJ63KJr60yVeJlH38jv+LvNINXqE1NrsT47EX9+20iRl9bY6pVvzePV9A7uWkZn67U4iExiHm2THl1IQrnq5wGzulA4okMLshpahgsN51O4eHDh3BycgKLxcKlJELjWFpk8wkbH7Tgoc9xp+0hLdxZx3SskoNAHaNUunl5a0COf05pT6s3VEYKWltgEaLW+kO8G3qe97XFYLIgReDHIFSvxEMpfEGdX18faH2LdXCH2uJghMbfJ4RDTmXofaqC1REqSzlY5owlSK4pvZCRaA2Y4veSrgnRxr8P9UcVDnkMcAG6VqtBq9WCdru9sRmIB4KxXygsTr9vDCVYeS62DyXjP0aOWGnmhp21fl4XD6r56sCxinFGyuI9dJrQ3uIBAu4oYVASy9RqNWg2m9DpdFwa97I2klF6siyDO3fuQK/Xg4cPH8J0Ot2wEWNhGWd6bxzaoDs7OxunAMtAbGBLkn2SnvM5S9I8suhTXoek/zSZUYRnpfexBCm0Z7U2XnbEBsLpc5oelmww9GPo5oxUh9Zn58YGMqwBghi6pL/L0oMxz1n6Yj6fw6NHj2A6ncJkMnH3vdHnqK9ZBqr2UxBc3vnGmtvm1sBdLHx+ZhmBLV4nPsPfH4OMuEm0Xq9vZLy4DPCYDH1XlBmYVQPTmUo2h4Qi84vqI9qXuGlzvV5Do9GAmzdvwmQy2UjHKdWFCAX8Qu+ilYnhLc1XSuV1zQ+wPFeGzL3GC0g+UMyzlOcBwn1t5UvJrw7ZXJQvce7z6zm0mIyml7mdKdmd3JahWTzm8znU63VoNptOLkmHJ1LsFS3uRP+W6Axtjoy1ca2ygPfzfD6H4+NjaLfb0Ol0XN/hAYTRaOQWuGJjYhJNKIc5r4Z4qoicpWW0cqH3kuZXzJzz8Qm33/B3rW46x8qwrTW/0Ve3jz76XiEfUmrTV99sNnMHFbh8woVZ3CyqyRkfUv0sjUdTeI2WKepbW/k6xZbwPRNrX3BaJb0W6stvm42xEYmyBHH4hdyogKfTqbchdDKePn0Kz549cx09Ho9hNBq5cpiasexdMtJuTYAXu66lXYk8TSQ9MYPgCitmJ6QVIWeVl40JLmgM7xNSlvrLuFfSihCf8LGwBHq4UHjZhUBZAUqLgRYykuhdjFoZfsdB6ASaxvecD6V5ydPibuu0W5lBtKJBTloX/SyNt4/uGIOQnojloPeI4d/4v7XfQmVDBnvVQAe20WhAs9mEvb096Pf7ALCZZpae1sNFM4Q2H7clf1P6MDXgaQU6gFZjOQS62zmUVh0X/awBEqyfjyOnk5/M4jt0syyDdru9UQfuLOT1Z9n5yTiUsZhqrNvtws2bN2G5XMJwOBRPIFFjXnsvyRGlffbjH/8Y3nvvPfhv/+2/wZdffulOsEqnyEKyJrTbfr1ew3g8duXm8zmcnp5CrVaDO3fuQLvdVusvCzEOoQQpmIH9aZH9PhkeGs8U+BzVUECB0ovjK+kJa1DkuwbsM1xAwcWSsmXsNarFeDyGDz74wNkIeHIEQF5wv2qw2AX4bkWxzROFMQHHEKR7YLE/5vM5tFot2N/f30ghGaIthR5NNqAMppuZfMCNTlhWi6vE0GENUlIb7fnz5y7teq/Xg/feew/u378Pn3/++YXnLDEvC62hgLlvUUprs4pY0ncVL7vu88XkpDmSIgNSFzQAwG3gPDs7c/4E6q2Qz2SlT3pnjBXRLAS42IgnZHmGvSI00PkqLbBq8VU8XYgLnVJ5LIuyQuszarNb/Hxqd49GI/jss8/gzp078Nprr7kye3t7LisJj3nHgvoTWBeOD/0ebXtJZqYsFpUNaYEoZl7he2mb5+kJWN7PtF0al+SIiTNYyml9znW5xndFTg5zevI8h9PTU2i1WnB4eHihTK/Xg/V6DU+fPr2QwliC5pOW6f9SObptnWNtr4gvGBvv09ZRNDtPqt9qA77sCEpaSbnwQDEXEhgA4IIdg4W0U1erlUthwDu/KmYOBRJpKj8E3V1FlZs26TRlkqJkNIXv6yfrRLF+b3VALQudPmB/0sAD/u8L5mlthCa0pS7az5qx5Qsyam2WKVysArZIm2j40r7kKTWk/pBS3mqf+TtYT5qlyAp8H75zsiiKBj5jlGroGa7cKD9Kz9B+KMpPPueRziX8jIsy1PCbz+cuwEONLd9c9JWRsG1l71ssRNmHKaBQP1Jeleqj/8fQ4futjPnA+S+kc2LHK/TOdBGftkXnAfYrDYZaeUmS7z6+5PWEFq2scxADoVheC95i+5PJBFqtFty7dw+azSacnZ1tPK/BYgcgr67Xa1gul9Dr9eD27dvuTspbt25FBWdSAks8mLG7uwvvvvsu3L17V9xsU9bpI9+Yad9zWyeUGcZie0n2k1TW17dlyEPujCFCfZEKra9CgcayfY2QTKDf44mysmRuGcA5jGmKOVJ5g/pP+K7L5RKazaZLnYz3vM3nc5GPffyk8btka/p8KpQF3Eah8t63yZP7KlTuW/uO29Nl2iloY+T5+WJbUftX8rOsvi4GzDFV/Hq9htlsBovFAmaz2YZ9zvtAm98pfjavz/c7/8zL0H94F7mvf/E3Gpyu1WrQ7XbdBvjJZOLGyicny+AP3g8YqEc7HDOaDQYD2Nvbg9deew16vR4MBgMYDodwcnJirpvTzudizPvkeQ4nJycu40a9XodWq3WhTKqtbJkjNAVqbExAemepT7S6QyhD3xWloQhSdORV0akA/pgbfzc6VqG5EvObjzYar5V0KI/vYAYduuBJ/ahQbMXHS5IfpcUm8jx3GW8Azm3oTqcD9Xod7ty5A8PhcOPQj68d6Tdf3FCKsXDw+Sy1G/IludzSZItEH9pzOMaY9h/j9+gD7+3twWw2g+FwuOFDWdrW3pnafL53k55NgUVv8DGw8GEo3uRDyPfx+Xw8xTD1E0P2pcRr2kKq73leR6iPY/WMr3/QHkSgrcjLYj+FfHCLbecDbyPEBxa/9zL0KCJGT9B31vSD1i+pepjWa5U7V0nnWxG97YXu0NXuXMSTPsPhEIbDofvu9u3bF5wImpIHYHMxINSpsUzOHWsKPqlx1w49gcADupJQ0+5P4IxkZVRu1FPaixil1PjzTTDf7ixaJ9ZD88rH0ol10FRpPKhBF/9iBH2o/0N04f98QV5aiOTvoxnSWjv0s5VPfEECqyFpAV+M5fnceQCJP8PpoEEIzi/a3SBaP0v1h9rkQZ4ycFUVQciopPxN+yXG8LY4I5wfsL1Op7ORZhUAYDqdwsnJiQvUhYLWkkzTYAkqVKXYfQs/2D/dbhfyPHd3pUk7fFMCSyHEGJo+hOqw8pZWr2VXMA8ESO1hmj28g0STzdIdYpQe/Bw7Z/h3XK9Y+A8XY0P8jnWNx2PIsgzu3r0Ly+USHj58aKLZOheQh9frNXS7XXjrrbfg7t278Oqrr17QG1aExlEKiuB3+/v78Md//MfqCVy8JqOMuWStA8vRk59UjuI7pJwuokF9bqvFvqMU2CkqFzQbvAxZK/UX1X3bdnwlSPZzEf6r4p3wzljJdvaNk9VnQyyXS2i1Wu50BqbSWywWboMWtys1HsLfaXm+qVaaD5Sv8/x8kzHNlsJ9Qfxf8p34HA71ybaB74N3ZC+XS2dfFbWDUvgQ0yRimnwMBs9mM2cHxcr+MmAJAGkyjPKL9UQzldsYIN/d3XUL0vP53J0Aqfq0JKcPF16RbwaDgcsycXBwAG+99RbcuXMHnj9/Dk+ePIHT01P3TrH2n8RrXD7y+YpYr9fw/PlzaLVa0Ov1oNVquQV+rLsIf/ie9dHNUcS+xjpj69DmcEw91nlWld9UlP4QOH/5ymj0WOr3tZtSn2SX8THQ5gwtH5J5tD5c1EOZQOtB+VXkGhCpT6hO5/Yy+jQAL2yKbrcL9+7dg/v378NoNBJjR7ReDVKfcPvcJ9uxbyndvo3v3Daxwidr6N2fKLvx91arBbVaDQ4ODmA+n7uFaxorK5IxTltspPVr9EvP0c8pYxfbRqhcSBbS8lJZ2j9oO9BYep7nG3qfH4LB53ibtG0ff0rvJNHOyxX1W7j9LPnweD89ls+yTDwFy+ngMpHzHC8fM9e0fuLfpczdq+QrcMTweej7FFjquMr954NZU/qcX+p80HvL8Ld+vw9ZlsHjx483Uq9kWaamN6ZGgeZw03JaHVKdFDxYK9UlKQpJqfP+kQRgjOAqYvSF6rPUKfV/lmViWkWpHTQ4Qm0gpEW7PN9c9I5VqpzOshz1suvSUHbwsGhd3PGVfkcjgqcm4eW4QUqBxgjeP6IZMtQYln7nZbV32sZYVoEynV7el1g/vzvbRwv9n9bLy1kDe1mWXUiN74Omp3ggjAfINHleNdDYHI1GsLe3B/V6HUajEcznczU1nIXHywhQWJ6lYxkrq8qac1Ze4uWRXlwYbDQaoj0Q4xjH8EwKf8U8w09ohOgfj8dwenrq7larQibmeQ6//OUv4auvvnLXVWCwOZS+XqoLEeqX8XgMv/zlL10bZ2dncHZ2Bo8ePUp8k+qhbWJClCWjqrCPYuu02Ilcvkgy7rIdsW3bEqjL8jx3i2q7u7tOl4/HY5hOp26DI9LXbDZdX81mM3j+/Dm022148803odfrbY3+a1wEjstisQCATTtI4q+rxP9XAWXYPvR5X5+WaX/HQIpF0MUBzhNly6R2uw2NRgM++ugjePDgAfz+7/8+NJtNuHXr1kaa4kaj4Ta5SdBsdUne+0DlIF8c8oHbd9brPbY95mUENC+D5pdZHlno36au575d0brKop1uBMWND9rVQ1hegi++qpWVFlso5vM5DAYDWC6X0Gg0Nq78obDYq1wmafWEFqgs4xhaBAstfGjf4We8Z7PdbkOr1boQH8H/F4uFi+v74vCXAdqPIbmN8cRYlCF3tbUM+ncM74faCdHAv7fWzWM9FEXlCd1wSbOIoMygfIjXNmCsBjPqDAaDDRro5snQaeCi0GyYGB3oi3FfRWzD/37ZbYgYqBarFJDUdq/gb3jRMi2DJ57W6zXcv3/fnL4C6/ApyZDiCUEL3EvlAODCTiwK7V248tboC9GtKWULfEYDL6MpXO604GJbUWXsC3yH3kGqg39vXaiLQYrRWKT92AUAy7xIXTTgPCy1hfNEW0TjdfhOsoTuz5CekxSvj7euElIXllLq0cryv3Ex1vesZuzF0kTrwbH3ndiQ6pdklcS3mtNk1QtlAPkV7yev1WownU7VlEqIkMPoK1MWfE6pVrYqaLqX06Dpt/V67U7IcqSeQonh2ZhFHAtfch723aGL30+nUzg+Pr7wewgxZbIsg6+++gp+/vOfu+8w9SK3Hemz3Am0ZsegwYevv/7abRZ89OjRlVyIpe/jsym53QSg23lW29Iiw6uCz4aR3tVShw9lBFm0Oi8Lq9UK6vU6tNtt54th4ALlGtJIdepisYDBYOAWU3haz6uKlDGMGaMYeVzW2NN3oQtY9LQEpy81GEKzn/A5RvVCKAAcQqxNG1unzxZKDebE6mItqFq0r6z+peSTpdjm1vduNBrQaDTgm2++gQcPHsD3v/99ODg4gP39fRgMBs5nq9VqwSwYRWIb/Lkse3Gdh2T3a89oKCMwGtO3vviQte2iAUxtnlc1l6rys6x2MoC/32Pq0xAr3+gYSPavT+aFIMnOovYQbhxCO0PK7MP/lxDD//w9uIzL89xtBKGZDnl2LYnP+bhz/SjpYS5vtfeR4hTaO/Py0ve8D3i7Eg14DzimcUcfmJbP8xcblfnBCuwjX7w2ZZytkHghJKulMjF8XySuovWVNl6+WAV/1tq+1p6vfKgeitT+1eQR5TfKhzinUc/j+tJoNNq4XkSyabV2i0AbJy6T+Gf6vj4UkfVVYhtxRqve+zZAXIzlTCwFI1Gh+XYgYlod3I1EF1awDUxlsVgsok5fxUJjXDrYy+XyQhpcrnglGkJK1QrLpCtTgFgcWvq7VkYzTCRjKaSgNWFucaw4yhRWPH02pSVGyKc6JkUcrCICTOM9nM8oB6ghZzkRy0H7d71eb9w3bUUKj7zsKOp4a4gNMNJdrz4HxAdMDdhsNje+R/7SxtbXB7HvsQ1gwCgETNVIrwbQ6iuTB8rmJ0v/x7RpTWlE27cs3mFaRC09Oq+T1mdxnjjdPlpSFoAlJ06TiRisfPLkiZO3NKASupcuBsvlEobDIdRqNbh58ya8/vrrMBgM4MGDB+7uWut1CBZgXXj9Bc/WQkHvnynjzthUZNn5Dt9arQanp6cbGSFSA2Voa1PbO0UeUvkSus82FdhGlmUueJZlm1dWVIGq9CeFlG1CoqOqYMFVguZ3YOCP2o8+xIybJBc1nYkLnnhaH2mhm4dpwIcuOF2m/LAAZeBsNoN+vw/vvvuue9fHjx/D48ePodlsujtBEVXOEdzQiyerUF7hKab1eg3tdlvVrSG6Yngk5R0l/4gGsWl8Ad/Vyid44izlRE+ZwDmBaUB5kNRqJ2jyzZdpy2fz03p4nGaxWMCDBw82TudKfLRarYL2ONJQVWrokNzfho6SwBcQXjZ9VEbMZNvvrMW/fGVj+cX3O9WVKe+Oc7nRaFwIoBfx0S20UDkyn89dtg+a6QMPCNCU7xIsi17UdvEdKNDqlRBrn/MFn1A93K/Dz+hv4IZY6TqHVLpj9LQ1VpAyP7V4/jYQ4iEL+PoJvQMY68Lf+cJ6bFsWWiionRMbo7MA+RFjhHTeop/f6XRgtVq5dRzc5I3/qooPS+/Ms5MA2PrgqsUqLaDvX5Wt9DLaH7HYWEmVHAvNcabphinoJMUJQR07FBYI6uRalF4R+IwBrJ/Sb1VCvK+0RcWyJppFcaUE3SQFF6ojZmxijEReL+0/67j46LWAjisPSFqNx1gjU3suxLtF4WtPaoMujvG0NHyOS/XzuukzKDd87acYukXmn7TIUUbfF62nTAUVEwwJQXovSafQv3H3qtQ2n/+0/jIdbsl4rcIIoMYhNbBp+/P5HObzuZdGhFVml+H0hp6vwqDUbBMteMF/s9CEQVJrsDTksGsyNURXjMFO54LPGZbawCA4ylu+yJAKrBvbxQ15WZa54Mje3h48efLEOZVFUitq8oTugKd9T+8+QseuyH1IGqw2EdKMp4343ZQUKXovBj49LfGzVV5oDjrWw+ssEhC0BNLKRMgOj/m+LLvCl1oO2+Hzk+sgn+4v2sc+Pg5lTKLlfeX4b7y873dJRmhZdmJS4Fl0hibPioLbWQcHBy7AdXp6emETMtdTVcwl2t90QRuDpuhfcFlQVkygDGg+Gw9MxfYf3ezK25LaqwKUF6hdxHlksVi4qzUsG9mK6A2JRl4OF7LRvsCsJ1ymxehoSnvKfKjKNk5BjG9TtT7ltKTKmpS4kCVmYI3llIHUvtb8IK2elPe28go/uMChzYMy+pfaNNPpFHZ2dqDdbju6fDFGS73a96H4lqUuqRztK58/YOFrXpbaAwi0ZWh8QoMvbhKyvXg9ZYw9lx/SHLDqEwm++qz1x/B9iP6Q7au1VaVP5OsHyf6OHXfOm2hrZNmLjbv84AbnU41GyTcI0Rfy0SW5XBa/x8jlMqH5UVwG0MMHRf05X8zvZYT0ruY7Y6lTwDsDUxQvl0t3ByydKLxsq9XacMIwf32soEgxvhBSoIIHIS0K1hI40JSahanKCIry+riw0ARGCL4AhNSuj04fYicf3/2F73jVJ7GlH4oK3tT5RU8FaHOb0hn6HgNcmjGJbUoONP0d69XKxDj9MYG9ssZq24pUA09jCACmwIoPkuEova90V+disYDRaHSh/VgH1cc3EqoeD4mefr8PR0dH0Gw2YTQaXdiIQO/3kwzIbS44xPJ0mU4WD4jH0EGB8gv7rgyekkCdf3QStDp99Go0cPnnAw2epjiMFmDgM89zmEwm5gUK1APafU4SpAC9ZSwHgwE8efIEAM7vvQMA9W7mqpHnuTux0+v1ou6543IxdhOhFchjMaf+NH4uokcsjjMF9oclA8G2QIMG9Lsy6wc416fdbhf29vZgMBjAycnJRvt5nm+k9Hr27Bn87Gc/g8PDQ9jb23N3Ri+XywsBj2vIQN+R2yo+u4f3qfQsrUM6jVC2TzObzWA+n7tU17gZzIIqeCTPczg9PXX9G1t/DE2pdqYGLpOl8QrZBhLoM5LvTu9TKxMa/cvlEv7u7/4Out0uHB0dwenpabAuLdBM51EMb0vzT4K0cRjAZgPQAwjc1qhCjl8FeXsZtGwjDnKVEOIja3ys7D7h2YSkfpdsPFqOygz0WTCt6GQyMdMSK8exrdFoBMPhEPb29mB/fx9Go9GGTsMTodROxL/pok6obas/yWPMWhnaZ74FH8vikm9BaDweb1yJhDG3o6Mjd7rYirLtkdB7aWWrlg2XLXv4opcEyodowxeBxU6x9AuNh0jg2cP4/MQYNN201263L/h5mBFDs7ukd0tZg6J1aN9L88/3zFWH711Dn1Pq/TZCelf1ZKzEQBpT0cUQGrTB3zudDgCcn/TBgCq2RRd5NUWvCR8ucEJltOd8EzCkCDQa6N+872KZMyaoRRVtqF7fIpYluGspZ4U2jpS+UL9pAsCa/tpq9PLPRcuGxjekwKxtSrxq4RNaJ/8nlbXMJckopfVKxrxWdxk8WEXgwgeN32KNgRS6NZnG5b9kxGmGcJEx4AFHNLYwGMznPzWcfLTFBnT4s1UZB5QudBrx3ha6IEWdu9Q+tsrpGNkqyZkifWV5NhT8sjpsmjzxycWUuYzt+OR2Wc5ryB6Q/sb0vPQqCW2BMwTp3VFuoKM0mUzcyRlMRU5PDPE57XNgQoEKrR9msxnMZjOYTqfuTs0Y+6IqoLNJeVGzhSmK8I7lnS12Z5mOqwbf3JZkQpkBoW2gLBlAxxQ3yEoZFwA2FyWWyyWMRiNot9vQbrc3gpBXqS998jLG3q4KXIbF6NTYdgAuvnNsfdS263Q6cHBwAKPRyGWy8tkdEg1F5CfGDvBaBgqe8jdmfKuyS2h/+/xnn80iyXnu/6A9eNlzMWR74cbJfr/v+EeimevxkJ6jcyrWFuG2c6htX53Wvo+NI1hjNSH6eL1FbJqY97XMSeu8TRnj2HrKtPW4nxajm0LxnDJtUaut56O/bHmPNq+1vtQ4B2b9oXfHStfOhXgvhm+KzGefbuc0cJq1MhqN6KfR/uDxeJqtLuTL0vas/jinPaZ/Nf8kNFYSr6fIhVS7iJexyEfJ/w3B1+epctAq50II9Z2m92lsAcvyv3lMhz4rzREfQj6w1B63e8rWp1cRlviE1JeXFXO5ivBuxbfspsDAOb9jxjVQr8MPf/hD2NnZgc8++6zQvToWh8Q3WQA2T8Tmee7S5/mcDQmaYtKEfOg7Tmvqidiiga6ykfIe0h20VUPrN7rjRhL8ljp42ZBBY/3e0lZZ5aQUntgfuAsphUY+jzD4gIFyn7ywBCm2KfC/DcollX5tHPj8wT6S2sHFVwzISeMbctgsMjn0fdXI89y9K8ALeTefz12WCADYWLCKCcbFGH9FENtGWXTxdHk+w16jAx1Nn34KOaAAcX3A02RZwB0U6aRiLH/v7OzAnTt3AADg/v37G+l8+X3NRdDpdODtt9+G4XAIH3/8Mdy6dQveeecd6PV68Prrr8Pnn3+u0i3ZUdY5wAOvOzs7sFgs4Msvv3wpnBzcnc6ze0j3HlttVVq2SB+EZHHqHOcp6qX2tDZTsC0Z6QOOaZFd6y+7vWGFZbx4ejI8gXzZd25uCzH8TFNTAwB8//vfhx/96Efw//7f/4Mvv/yyKhI3QHUr2j6np6el3ldeFZDP6D1uReQJXzCs1WqwXC5dKn/UYRTaHbTS4mOZCNlEiPV67U6hYfpLq/1DN1BrgVkN+BxucMR/eN8cZnGLsad5ENjXbp7nF074SGVpELdMXVTVuHNsM3AcYzdvUyfyOIbVPsVnOKxzK2VRJdSHKeMpte+z0/P8PGtOrVaDbre7kU0x5UR8CDs7O9BsNmE4HMLZ2ZlLZYq/SXOa28laH0tZFHnZWN9UogXliZUvQv4glkGbu16vbyzCUr3TbDZdfJ/f1RnivRjepHyvHQCgsjw21iO1tQ27kNJZFl/zfuVpewEuZgSS4nCxbfIYBMCLseI0+XzUGL7QNpPSujCTDwA4uYL2LQLbwn6QMmHgWMWOlyRXJb9V6wde7ruC79K7WnBhMbZowCbLMuh2u9BqtQDghVPBBSgKDl9wR1OKtCz9TmNuyagPPZsS5JIQ049ckBUR4r4dIKExLtpuClL4LmTMlu0kWGiMaZvSL42RpNBCyi7GGYgtJykYGjjxGUf0WWpYauMlBRR8/YXPX6aAT1lkqbodCzT+sfC5z+iyLmJxg67ovKWyL4ammDJFoBmX8/kcJpNJ1OJfTHBKoyUFRewDSY/HLjBZYdVxoTZDDqevjKUey3OxwShJfmM9uOhPU/6UkdoQ22w2m1Cr1WA8HkO9Xoc333wT9vf3XfCaborD7/g7xOpQbSxxwUva2LONQKLUpmT/0vSHPhvQp5e1sQ/ZJTTQgeUpv2DaNnpKrQzZodURotcyH7Xnyw5+a3TE9s82bRfkvVqtBvP5HJ48eeIWwyaTCdTr9eh7UGPkE+U3DCZhUBbpS+mPouO6Xq+hXq9Dr9fbyM6xWq0uzMuyeYjbLanvH3oO5/KzZ8+g0+m4FOk03VtKwK4oUE7H+quXDUtf4bhwOR6y9XiZbcmIkB7Bz/g3zhUKnDfawrqmuzW/nvcH+p6+zFfWOJEG+nxM38eWl+xiySbCustAkfqtZcvyya11SHGTVL+cy53QXJXGrGqZxedjrK/nk7WhfuP9Is0xX39g/AhtDW6D+uiOBdrb6/Xa+R5ajI1/luiXeCzWX5H+9rVrnXMWWnwxEoAX9heOS9mLwfzvFNkWsu19cYZtzsvLgNY3/DefvpXq4WPF5wGWD21GovVZfDyLrQTwIrOe5LtIdMfaVz7+4fyWwmOpz1TlK6RAqzck1630bGsOW1BmH4onY32MbMG9e/fg3r17AHC+A+HTTz+9cD+AZLxT0MnFISkGn9BASLvQqZAu635E33chaEEun3DV/vYZ96F3TWF4jW5LwK0MIYRBQ/p7kd1PkjOciljhHBpbCVZjMNTfll3paEhr9Glt1Gq1jVO0tB4pkKo5ORpNIVSlgKy47PZ94PPFYkjR/+kzOGa+98Wyy+XSu6BfVn9dhdMWvncZj8fw9OlTd4euBaHg1VWBb1x9fRIKzGnlNceeIuaezSoCLZqdJele66lBTQdjWdwZ/vjx40L2jgQafO33+7BareDzzz+HH/7wh/Dv/t2/U98B74XxBXck8L6i74l6Jc/zjdPmtN3LOjGX5/mFXbuYujn2XmQOa1oxjS7JZsyyDBqNhlu453aWFVU4UUiftrGTnybehu7lPEi/T7V1y0Se5zCfz939baenp/C3f/u3rm9arRa02+0LKfOLtkmBYwYALgvKs2fP3HiuVit3srVof0mnFjXbZbVaQb/fh3fffReOj4/h4cOHLsU68j3KKh6wlKAFe7VyVevtLMvc2P7iF7+Au3fvwg9/+MML5fgGucsCjgniqtrOmrylfCLN/Rh/gOoGOj6XYevhu1Idy+mgix/8TkbNZwi1R0/XNhoNaDabMJ1OL5wa9j1LdYK134roUmuAN/RdLJCGon7PVZ1zHNJcKlNvabEI2s90c7ovvXpZMSWt3iLyIDUWZ1nk4ajVatDpdFxmBGmDYio4PRJ4f/loDr2Tbx7HyPkYmaQ9w/0pqU56opLKSFonnojFjEmaDuP0aO9UlizhdPArbyy+ndYvZcfoyn73quu1gvs3q9Vq4ypKWo7SKK3BWHjeN4dxzNfrNYxGI7fJQ+sbuumQZ+Gg9Vrap79RO57yIeWpIrK5zBhUVXyTWu/LYmdQlEmzN02x1jAy8M7ODuzu7rrfm80mtNtt2N3d3RCOKDipU6UFQrXUbFJZWi4ErQx+HwqS8EkamhSxk4RPYksdPmFsERxS+7RMjPBJQazSs5YtwznVAr2UXyT4+ECjP6UPY/gtJRBJ+1AL0vL6Y/uclsfdTNiWFlwN9T9/B8t320SKY74NcN6WxlyC5PzGBjikgKgvmBEKdPDfU53VKo2Ver3u+Hw2m8Hz58/dhiXJsbXSfBmwOKg4zlpQnIM6iBKf0HL0f61O2n5It2H5VqvldlpadJVkkIfKWiHJYis92m9lB4ekdvHzzs4OnJ2dwfPnz2EwGMB4PPYGUEOwBkdxrknfS5+3CTyNFkoNjU6vJbiE5fGdpIWiVDli6SeNxlSbzBcwiaWrauezLPlsdbh5wK3RaECWZe40OqYIbTabGz4bh8W23cYcseqGorDKDauMqRIhfRVj29CUurTusumtEpcdgERIdmVR/zQmmB0KTFp1RWz9WpsA55sqnz9/DtPp9IL9ZqnTapv5nqf0aHTi5zJ4NdW3oM9b+SaGBzRZKn1v+U6joWxo9Vt0YhGaYvon9AyCLnZpNpjm01h4VesDzSfapv/o8+vQFuHltPcpg3Y8wCMdIPCNTYze1cDHI8Z3keS4Rb7F8DGWp3RRX9naBv6ekm66DN60yN/Y+IOljph2uM1Oy8bQb+E5PqaaPPC9qyZ36TP0f/S16VoP9zmk+IivX3ygtix/J8neleqnf+Nmck5jrD0llavSB30Zcd0fmzAtxkodtlqtoFarwcHBgWP2/f19ODw8FOvI89x7EhbB09fRZywnYun3oUmdGhzyBYVT6vUFb60GN33WsoCt0YBtWgJ4VgHuQ5kGYpkT27cpoMygUcj40Z6x8ltZQSWkjc9B63ykv0upyBaLxcYuIuvd0qGghJWu7zo4fxfpL6tzQmU9/Y3riVj5RXfPX0Vln2Xnd7HgvRaTyeRC5giE5FgXbfsy5gJ10mJPJHInmsPyPrgT0noaFO8emc/nMBqNTDxt4bXU8cR+iwmGWdsI9W9ZePToEfzyl78EAHCbEKyQgnNWudBsNi+U1dIWl4nQXGu1Wqq9TMGDevxuTK1tmgnGx3dF5b1WL7ZdJm+lOsLfRtAARJZl7o7EwWDgTr1m2flJyNlsVjm/X6NcIA9bT3mEUMV8/C7D5wdZYY1NoO8VoqUIHUVt5eVyCQ8ePNhYaKF2Vwwt+HwROR5jKyFi2kxNpY5Ioc+Kovyg4bsUQKW6NbS44styo12PIcVT6O+0He15To+GlHFL5c+Qbc5T/vsQSndqna/WTC6xi5ixiO1T6zxOWdyVaKPxQi0OZ6UldjF223LFsj7wMsg6zacDkMcKx5fGE2LelfqU9NAdZgVYLBYbMTzcJErbtyBUTttYge+1XC7NmaaoHNdkE4/Ra3LbR7f0e+w8oW2/DPxZFS4rllkVNhZjNYOZ7xzIsgz29vZcOsVmswm7u7vQarUgyzJ4++234fbt2/CXf/mX8M0338BkMlEXYrX7I5fL5QV6LAusnF4NZQxikTR/mnCiDGah37roRPtEEyg+w0+qj7ZtUfIp4HRLtPJgMk9HlIIqJ7kUWI5BTJCdP2dZuAUAMeArjXXM2FLFiIobZUrsfA5tDrheiL2IkGywQFrUiHUMOejiaagea2pXTVFLc6Bqg4bLaq09Ksc4r0vBOQTfzRczT1LeI6Yu/k5lLfpIDgXtW032+Rwv7ENfmmh61yKWj9E1Gl9S3rDYAL739OlxPI2KTrYvlU8RzOdzJ9cHgwH8+te/hmfPnkGe53B2dgbj8RjW6/UFRw3fCcfDt7FCsw189xtRZ60IQg4VD9aFsF6vYTgcbiwSp9hNXH9T2lKcPjxNiRtntF3G9DnNNvX1CZ1DZaSP5rJQShdcFfD9LIHUKukom8d9ddIx1eaGNkckXuB9xK8xoL/xuS/RjP80udloNGC9XsN8Podmswl37tyBw8NDuHPnDnzyySfw9ddfO/6nz+KGYcud1FXboVa/AuVys9mE+XwO33zzDYxGI9jb24PFYuE2ilUxD32gp5ckWRHbfyH+leRUjG9lLVvGuNNA4GUH4LSYg8UWtPiTvnfEOjAOhSm3F4vFRn1UBsf0F22b3peo0cufDdXJ34P+bqWziB+XMp+K+HapsPJU0fpD0HR5SL/js1qd0mcfraE5wdvW6pH8ZF99IcS+CwLTidbrdWi1WrC7uwuHh4fODnz27JnL7EHr9vnBPlje11KXVI+FV2P0hS8OYmmD2+AhGjV7HMB/7Qk/Act5NGV++HxqXx9q9l1Z8QZOR6iMVk/ZvFI2tPHTfCbsc8wihlcOUfAYDbehfXNKAvVNpZhPzDtwG7BWqzn7AqFt5JDGVJq7Ph6itso14vFt6ruNxViLkYkTYHd319392Gg0YH9/3zHYq6++Cu+++y782Z/9GTx8+NBbd5ZlF+4GyvPzXQ0pnRwbBLPWxyEpC197FkfFWhd9hgoAn6DXgheaI+rrP9quRr/2HG8n9Ju1Tyk9ZQQSYgynIs/zsrF8GxqjGLp8fRh7Mo3zIio6Wl+tVtu4bD1lvoYMwG+LoI5FWe/tc0JRloQ28YS+981XKw9zGXgVgYEdrV/oBgUpaKjVqZWrsi/4nNPGRNJPGnxyhH7mDqG2m5G3HWofZZR0kpLSgPeg0fr5yfLYgAY6KTHl6d8AF+/H5HQDwIZdhbaXbw5bIPHdfD53dY5GI/j888/dhrzhcAgnJyfQarXEFMJIW8hx0p7z/V70XaX6yqgjz3MYj8cuAFU0mBBjm/rK8FRP/J4pXz0+Wafp6ZjTmxoNqcFEiZ6YuqTnuNONn7kjfxVhDY7g776+ssp+nw/KfRVeVpr3kt8jBW/q9boLGjUaDbh586azV589e+YWY3nAhfqqEo3aO0l8UTa0ulE2YCrrR48euTv7lsul+57qOUtbMTRI4Ite9Pmy+knzdav2G1LlSdl1WNvQENKtsXEO7Tvf87jxIcvON85xHpX0k09ucNql99DiJKl8Itk3RXV+Cnw6VLK/NBottJc5x8qK71nbouCyg//G9YCvrhBiY0Gh+n02Nf5v7VvNz/DVQX2V6XQKrVYLWq0WdDod2N/fd3UMBoMNW7hq/96nv0Lfx8g8bhNIcgZB7xqnv/G5psmlkA+lPUtBF2OlrHhZtnnyW5IRvC0OPl/ws9VP43NO4r+QXJLGM5YnLHTS+iU6sJxGkw8hX4aWC70bHw/NL8PyjUYDlsuleOiOzlvpsIHPZqe/a3Y15xvfu2qHOejzNCaNNGuyTvrbN6dDZbW6tfpifLSriDJs2suwm6qAN00xCkScYFmWwf7+PjSbzY2FlTt37sC/+Tf/xk20n//85/Bnf/Zn8MUXX2zUJ01UHoDEdKW8Y61HzUNIGTAtkJIKq2ANTcgqnTKERSj5UIbz6auzipRb2xBwKUI4pV5r/5fFS5agG03vhKcKaDCWCujQKacyab9slP0e1v4pK7gQG1RBWWqZ577fkKcsuEoKe2dn58JiVIwT7HP6L/M9y5L51Oj2LTTSsinyTuqr9XrtUkc3m01YrVYwm80u9Ld2qt8aPLY6xZxm33f8d0wdFMpAUBQ+fqSo1+tuwdu3YBFqBz9bnkUeuqx5wZ3cWq3meKxerwfTqOE4cv1I/7dCc+aKoihdIZThdMXyGW+bBnsAimXHKQJJBi0WC6dTJpOJW2TD0/BSWi/MqoApjQFeLDBeY7ugPEbloqSrXiab9yrZXEVB536M3cnrQFB/CGV8bIwBeUTaKFN13/PAOdKB91Snwmo/AQB0u11otVqwWq1gtVrB2dkZrNdrdaOX1h6ATcdI121YfSyuU6y2i6UNK6ztatBOJH2b5rkFfEz5xjU8rIJlitrfvgUUbtOVNRb0fQBs9g4+o5XFDaAAL2wSzJ64u7sLzWZzw0cA2I4ci5mL9LlYcBkt1SUtOGkyUZMtGs0SpDiqxFN0UU6jJcYno/Xw+RMDbDP0bIxeqRLWOE9Rvtf4NcRrAJtp+KVT0Ag85V6r1aDdbrvMKpPJxK3noL5AHgqNM48D+eI+/PoNSiu/SoBuLqB1+GKgSC/66D4bjc7tbfNZmXL/GtvHBWtVmpB0MrXbbWi32243Yr1eh4ODA3j77bcdk/7lX/4l/N3f/R3UajWo1+tu57DFcZFOScU4o75AUwyjUsb2KR1rXZbvtDJSO9wpDCE16FmkTa0+qQ5en3WBRgpghGgILfJw+sowwKTnrH3JnesiQj7UZsq4UllhAVWUXC6E7ju28oXUZll9mIpt0KAZCJa2YuUjfYYbH766pDnG528V8zr03TbHA4FpUQA20zVbIRl9KYE8S7mY3/jiBS0XS68UbMDvJR1SdBwxuIiLG81mE5bLJaxWq41TGDGOp9SGhtDcsdSBv2s6m6aDiqFNg9b31AHDHafo2IT6rkyZRduqUvZbg7LoFCKPoaOnBVTwGWsAOEUear/5xqkI/6SORxG+jW2T9iOdT0UC0Sm2OAWnndpR1OfiG90k2YHP0CskMIAitWWBVVekykBr+1IwUWtD0iWW4F5Z8AXJNB6LsSVDZfC0YZlZAyh4/2t8UIZs5n2Yokc0W9YaZAv5jD5+9Mm3IvMiFE+wgstEDnr6hcqRWNotdiFeddBoNNxddZK+8vmNXB7jGMfaJviMb5763kWLM/meCdGk1S+9n2anS/PWqkexnar97RjfGn+XysXqc98cposDdFGgDH9WareqPua+uJUHfHqLy1dMNY6LOdwmDi0Ca/I01SYM6d7YNkJt8/Z97cT64lb45g/6xBZo42D1/1P6VLMtfO1QpI5hEfvfEgcJ1R+yDflvfJ5oeo7TKOkGKgfwmgD0P/A739UdnC9CSBlXTrPVP+ffoS+gzRGfHkiBr+7Qc0X9yiIyJBVFbJnYdqq2RVIhLsbytAMAAPv7+9DtdqHRaEC9Xocf/OAHcPPmTfid3/kd6Pf7ovB+7733oNfrwc9+9jMYjUabDf//7wrAXVDYFr0nAKCak49WlD1oVsM1pR6rgUfrCNHD+15zQPjOOb4bxYpYI1UymCxGW9k0VQHN4Y1VJjTopoHfp0Yd6DKDI3ihupQGNDRukhPgg0+4X5YwDtFQlqIog2etdGj3P8RA2q0mGaqXNRdTIdGrpdRF+Pq9Cr611ikFrUJ10PtAkbfLOEmGC3mz2WyDLzT9BPAi/SnXaRIt7XbbLcYuFgsYjUYXnL3ZbObKAshZP7T6LeD8rukDqWwIOzs78Morr0CWZe4aiUajUer8ms/nkGXnm/dmsxl89NFHjk4L71O5EpO6FuCFHJFSIlUNbg/FnIbg/RNzskeqB+nx0crtfa2++Xx+IdCI7RTtX+qU893xsQ57qB3fPNoWrMHMEKo+6V42+HuH5icP/GBABH/jc43amXmeu40zWJbej815DReuAQBmsxk8evQIbty4Abdu3drwT69if1v4R7M3cZPMkydP4MmTJxfm+GUAZb/VVrDqFOm3kE7yoQz/COvgPhcuRKBslhYwrPVfBUiBvlj5h+XwOo/xeAzT6RQODg6g2+2q5fFkS1GE7Ey8did2bLi+tgRFQ5uWJbqRz1PkhS9IbV0wqBKaby3N7SriepbYXr1ed/KWy7iyaUTZbbWdNRmY5+dZMnDO4cYtet0Jf5betew7IYv0jcdjx0v9fv9C+zwm5eMzHuOU3qdMxI6Tj36uA6h+4mXK0s20HfodR0xMVZMVWt28HN2wCwAX1iN8cgzvLKVXHnB6LO96VfQmhTXu4kPsJktfX/h89CzL4NatWy47wHK5hIcPH5oz7vhO4mr6RrItOCwbCjhv+VIba+1rNJTNVz65fdk8zG2DsugpUo/l2Rhay3wvMdojMRHN6d9qteDWrVtw+/ZtePXVV92Ew3tnsiyDXq8H/X4fdnd33cRC4O4JTM+WkppHgtYpZSrgqmgs8ryPJosS9QV9eRnL+29LCPgcvCLYVsAl1kjAMj6DThIOsUohxmnT6ve1Jzmh0vzXyhWl57IU1VVQkBZYAwK0LDWSQ0ajZlhZZVtM8EZzGGPrKhshw03qQ9xxSAN0vmcuG9RY56lqAOxzmQd9JLlQBd0YfKDpxjDAP51OzamTQ6Dv5ZOHfH5Z52ie587WwiAJfuYbIIr2p8S3mOIZwa+5oGWlvy26ylKuTFjtKqk/+BjjBjZf0JTOAx+k+WWxK0LgfOJziCV+LopYW0SSjZIuSOmPmHfife+TfbG08PnL66LBXkv9MXI5FSl1h+wmy1jyACevn/LHer2G+XzuguZa4NNCl9U389WVOh7W8QYAd4qh0WiId7da2rLIJt4u/VvyO61tp6IMf7yK8cF6JZ0oteeTw1q7ReeiNdCm+X78NyuobMOMJaEgq08vlIEY28NHA+1Ln48f0z5/NiRnfH6YVaaVHYSN4ZdYuzuWBkud3FZL9T236beGxorapTG6LdQmbmBAewb9FbzH3WLDlDGPY8fX8p30rKUtX2wzRobF9ovvHWJjOyntSv6tVG9INnJeDulNSUfxMfD5cikI8bSl/qL9HfotpK85jbQcxk5wk1Kz2QSAi4vrse+vPWPtKyq/rPxsmfeab8H5WOJrn86XaOJ18I2tZdrEZdi3RXWt5fkYu9ZiH1tQph7eWIz1OUGvv/46vPXWWwBwfhrkD/7gD2B3d3dj9/4XX3wBv/jFL6DRaMC/+Bf/wl3qTNFsNmF/f/+CwBuNRhd231sQG6QpA9sOMNHympIvyzCy0IaMTAOqvsBQFaDpIikNGixOAf29ynRdVQLrp2NjVWpVpaaTgGn0aACMInSHHqLq/rQ6KN8GxMhSzQDgdWjzyNpvksFUpM8va6xCPBQKwjQaDTg6OoLJZALHx8eV0ekD1dkWWVHW3ECHnJ60leiSvgvd6Rq6B73f78PNmzc30njmeQ6ffvrphWwfKeB2UOwcpOWlRQMMVt67dw8ODw/dad8HDx7AfD6H9Xpd2i5rtAGy7PxEbJ7nMJlMooJjNNDKs6RI7eH/3PC39iOOK9VFljZpWxLwBIQE1Mfr9Rpms5lL8eSzOfCkttYufefLlI0+Z53SWMTWwOe00x/SggF+XwQ0WIg78NvtNmRZFn16u0xIfNNsNqHb7cLp6SkMh8MLdzTz57dpu8fiqtlX0sYJBNcp1P9NfY+iAZZt2agxwcmYwElRWN4fy1h94BhYA0mxfjraABLt+HuqLxf7nJRxRNOVRcc8yzJoNBpO5mKGFEt2D95XFlpQNtKYQ5ZlG4tFZSCmnpi+5GVjroqQ6rHEm/D3y8xsVyUs8gRtBB8wzqGdHk0JYhfRF5JPUa/XYbFYwHw+d5kMcWMwt5slvow5pbtarWC5XMLBwQHs7e3BcDiE+XzuYsPSpt6rCMtCW1XtpfCR1S631EPlSpExwjmh1cHtfM3PR0gZ2Ky4CrzG55aPx7SYnO89pLmb5xfveKV9jX2J8mAymUCj0YBms+kyV+zt7UG9XodXX30VZrMZPH782MV/ffGX2DUNqT9CelKz9yS+8fV3zFoEvrN1UTrUlvb7VeDZbaLMPoytrwxsLMZKBgGecO33+9BqtQDg3NFvtVrQarWgVqvBdDqF58+fw/HxMUwmE8iyDFqtFpydncFoNLqwIMuPt+PORkugS5poUlk+ySwCnddThtMgtUd/1wQgfT5FWFlok9q0lCnK8KF2Y+uz1GMRYCEhFjMxq5rEMcF6+j7aWFqCECEDz2L80fa4kcVp4HOw6Hj45ngIVsWXUpck7H0KwCcfy+BZ+ow2RzWZHDKENVidet6e729fvSE9USZ8dMbKKzyhYzX6tmlI+N7LwhdFZbe1vM+ewOAaprKksgh3d+7s7MB0OnWLmEUR0u8h+rV+o84DLkbv7Oy4E74og/EOXFq+SCBHohX5MDYoV9S2ia3LF6CtYh7R/vHx0lUMOmmyRZOlMXraB85TIVicUloXBvpwBzedD/z01WWOCbaNm1Mw+DWfz92p99AmkzLtGiu931bwwFeqrckhzX2LzrDYR2XBN8e4D1JVO9ZnQ7DWzYPAVT3rG2vJhortmxg7KaaeWDpifB7aHs41Hvjnc1CrU9P3tJ0YncTb9tkRWDd9hxBSYiWx9GM/ajxH+77qOW3VUSE6th1URdCFQ2kuV01XkfHh2QyxPvQbirYhxZ0AzrMrjsdjF1tGvxc3XywWC2fbXBXbOGbuSrIpJnYSq8tCctAiJ332jCbj6LNcNvto0/jCAi1uVWSOWekIxZVCPohUl+RPpeiqWL9Joo3LfS1WgDEH3EidZRns7+87X4Uu7FY5jyUbOKTvLbFGX1sS7xbxwTS6YuKdFsT4gldF3oZieViuCLZtM2wsxtKd94i33noLfud3fkcMptVqNej1evDkyRP4y7/8ywtK+le/+hU8evTIG2yaTqduATfm5cvqqNBkiQ0cp7SDiLlPL/XuAN7PVkOClqOnodFA4wHXmH4qOmlQAaRim5NuW45B6G5KXlZDkXv3pLZx84WksDSHRavb2o+X4YhZUDZdZStKPu9j6I1ZrNKckW0p/stw1vkdplL79HS4lAkA9ZM01y+L532Gos8p0PQs6pXQSfmQPAjpySzLYG9vb2PBktKMePTokbtbrwwnwrdo4gvsScBTrlQ/Yyo/re1utwt5nou2X1nY2dlxd+sCXFzYqgrWu162gSLtSvM+9nk+58qwuaQAS2r9oXvqeQA+tR1OI61rtVpBvV6Hvb29jV30q9UKzs7OYDqdqqfztwUMaKzXa7h58yZ0Oh24ceMGrNfrDV/LmllkG7gqQdNvA3z8Hzs3qrZ7YgJZLwv4AgvydsxdoSHfjI5LjH8v3bedar9rKFpHql7Ati39wReSYmwobvfhnZdWZNmLu2MtZWPpk2gNgfehRkee5+7ubMykINXFeV+7v7bKWFksqpR12oICLjygPU5T3kunrVPbRmiLCbEL/UivxMOYWYeWpW1Q3gB44ZOE6Ma5fXx8DCcnJ/Dqq686n6FWq8H+/j5MJhOYTqfuuyI+WJn84KtLsotD9rzme9K/tfhvbNxEit36aNDqkGihdGMZTff5Fpws8oTXFxP/tCBVplEZX4YNXKQeyT70LUD62uGpw6m/MZ1OnYyo1WrwxhtvwO7uLpydnW20Qa9/kvSIlRYrKB9S/U77gX72XU/C6ePtWMaJ118kJlK2nXeV8W19P/HOWACA3d1duHPnDhwdHUGtVoPFYgF5nsObb74JBwcH0Ov1NgITNO//8fGxOxVLmb/VarkJKKUgCHVyyIGhddDJkKqsfX8XBRUyfKdJiBZah2YI+N7dJ+AkYR0qt63Jge8q9Z2vPH6m0BY2pLKhuouiyoXrIkHY0PtZ5m6o/2OViNWQ/TahLEPEWpfViKBBD998KgNVGBvbXPDV2pTmJ/19Z2dnQ2/iYlsoPVpVwYfUAC/Sy2mW6tPawMAFBsgswUwAm4yg383n8wsLmPV6HVqtluN5eqK0CvD5o+knn+7DwBrA+dUSe3t7btfq119/XckCLNfN9A5CH73W33lb+C82NRa1P4vILmkux75jWXOV1hPSk7FAPkqVl5bgDrftYoMpIdtQCgBq9WCZxWIBs9nMyYOYsYoJaKWCBtLw/Xd2dtw8L2uOF9Xnmq8ijZn0Oz5L5zmvq9PpQKPRgMFgsJE+kT6L9S0Wiw0dgvIgyzKYz+cbadyHw6GT+3QeWHhZW5Qp6pOG2o5tg+pWHkyS3rUK3qZzlgbLyr7XHOvBNiU6Ytuh5YsGbrV6L8O30Wgq8ryvLH9HGizV4hC44QwXhhA8palVduM8D8WSuD6hz1B5ked5pbaiRJfPLuTzyxc/KoOelGdDfFe2fxmip6znsux8cTZm80ZRhGItnA6+kIW2j0S3xUbD8r5rzbgdjRkVa7Waiz9b4lhW2Rurt0K2Y9n+tmbH+8pLMtJCF5UJqbqL1kNpkuqyyEOfrRM797lelp6nZax9QPvWQo+lrKVfNPp9/U3b5zRZaJf0G12Qla6Zw3jP8+fPYTabQafTgU6nAzdv3oTZbAaDwUCkl9ImvbMmV6V35r9bZRV+lniHl9f60DIePt/HQqOPJitibHlLLK0KbMOXvmyoi7G3bt2CP/zDP3R/T6dTWC6X8N5778Hrr7/urfTLL7+E3/zmNxvf1Wo16Pf7G7s2MViYwgRWxDD5tlBkR0RIOEhlrfVyw8rad+h4oGMUixjlyp2HUIq/WFjp1+ou2ygrE1qwS0JsINRSp1bmqs3Pbysk48DHr9q48FM3IePIynNVQQs2bJPvkAbfjnmeGQGdFnpSCxdnZ7OZ23ldNGBmhaXPfLykndDk5TTU63VzUEsLvmnOIjobq9UKxuPxBT3QarVgf3/fpTDF1MVlweJg8HL4WeqT1WoFk8nE/d3v9+H27duws7MDs9kMPvzwwzLIVulF3ux0Oq5/Qydi0RbkgRof8LQB3lmDgdmQ8Y5jjeVw0Tg2EwR1EJHffHzhC5L66I0BLqqUJeNw7Gj9ReqSZBbn4dQ2cJMELrbRXfs8MB+iE+cQBg00YH/z3eK0LiuK2o84F6bTKZycnCTXkwof/dj3dPwxOE3lA93Ayxea6b2QvK39/X3o9/uwXq9hPB67uyTxeQzsYqCI8jTKgnq9DuPxGH71q1/BwcEBPH78GJ4/f+4WgS2n+pFuny5Mne9VBCWwX62ytyofh2/Yws1P3D+sYiEmJoBpAbe1i9rAlkBkjM66qj4qB857KTUqzmnMttRqtS7EBjR9bJH/tH3Oc3meX1hcwmsf6DO+zRg+2yTW/6b0hsaX2ru1Wm0jk4pWbywdMfD5pVeVTyX5YJFLqH9ww2eZfmhIDlj7Em13TA08m82g0WhAq9W6sMGL6zmpbWpjY9n1eu1SmdJyOOYnJydQq9Xgtddeg52dnQ3f8SrGdMsEXzT08RXnw9R+4b5kSqZBrqNDi4YUfLGNPifJb8tc87XFY9VSXKAq+BbvLH4D92NibBUtZhCyK/Afznf0lfGQHp2ftVoNms0mzOdzWK1W8NVXX0Gr1YLf/d3fhX6/DwcHB3B8fBz0q1IR6jcAUMdeqwffPaY9qX3aNs2KEBObt6BK+fgy2Y8vE1QrbLlcwmg0cn9/73vfg6OjI9jf33cDMZ/P4cmTJzAajeCVV15xZT/55JONurrdrnOAkUmWy+WF3ckaLAuPHLEKW1NmZTA1N9jKqj9WAXMF6XPwJIROuOD48pRzsYs9Vviet9TNHTdLuZg6i9RTBFogwGcocx7l4+YL7nJFLdGAnyV+KGJIWg0RqwIpatRK7YbaKqNuTZFLhpvFQLb0F6/LZ2RyGmP62SqTfXJ2W3NPekfNIcD/LUHb9Xq9cUJLqmvb0NqV7iyk76KlrfLJJwo8seTjf41e32lu/g67u7vQbDa9tkSZd8f6rinQaJD4nPb90dER3L17F27evGleyC5qZ1UtZ4vwOw34xwSviyK1DkmGSEGPMtqxBDg0ecX1DAAEbXuNByQ5HmurpiLLzhcH6T2sAOcLQ81mc2PxH09NAvjTzWvtxHxPgX1cr9eh2+3CD3/4Q/f9dDqF6XS6sXmHyuPY4E0stqmLttGWZT5YyvnKSvyPZfm44T/rJuZvCzQbsmp5oPks/NQlf4bSqNXryxISG+Cj9jqlOWSPV8VDqTpJCgBbMZ1O3TtbYkaWoK0PyAO4QYTzSoh2y++x8SJ8xje2mk7Nsov3pVvsct88jOExX7+F7IhU39Jap1ZGmnO07Tx/sVCRZS82BGn1xdKtxW+4PJDa4XRLNhbe1wpw7nft7e1Bt9uFp0+fwmQygeVy6WyMPN/ctMfjQbjIa03NvF6v4eTkxD2Li8DYp3TzJO+PsqDFRayxNA0hn4n2mzUWg31L7W9L277fLLpMi/Xhbz77hctpiTYtG4nmh9A6tHY0SLSl2hwarb7xlO6ZpllbYnwm6d3o7753sdiqoZiIxg8A51ls7t2753zxs7MzGI/HXp3v04Wh+aT9bv2e1ynpew3a3EZ5SRe46fvH2k1V28K0Lf657La1ORJrT6TSVaVtrCG4GIsEvfnmm/Bbv/VbAPCi4zGd02q1gldeecV93+12XT1Zdn46AlNN0Pp9KbQoo1fdKdtiKKuh7hOEIUHrq1MSJryOkIPCT45wgUiDnHmeq7uaLDT7oNEfQqj/Qn1cJi+WxW9c0aX0C4U05/C7UHqdFP5M6YdYJzXkzJXRXgxfhwxbaz1SOU1mxoxBLH2xfehz3ml5Sx9o8zI2CFAEVgOSfm91DADODdzJZLI1gysEH+08XRxCcvxjkee5W4zV6vfRrN2nxlGr1dyJZF+5Ku4+jXH2pPeld5bdvHkT3n///WiHwQqrDNAclxQ5HkMr1438RGwqrDKe85llzkvlQnKXvp+VPitN1rI4NjQFdMhh9QW1aKDNEjgoA1l2HlzHU/jj8RgAztN893o9V6bf78NyuYSTkxPI8xxarZZYXyhAZwngUblG+7Ver0On04F3330XdnZ24MmTJ3B6erqR0o+ffLoq+gNR1AdAVOkjlm27hiAFO+iJUUl34fzYdgChLMTafdbgalng8w8/azKK/maxdfl3vmCURJelH6RgbBFYaCli5/ENUyEZOZvNvLRYwGNOoblPs3KgzWXhXWvANcVm9skBqqOxLOULzBCCfYl1hfSUjz6LjuN1aXXw95B+u0o6Ls8vZgQqK6OOFF+U+toa+5Ds1Z2dHWg2m7BYLGA+n0O/34e7d+/CcDiEyWTiMkXgO0npSpFWunDL6dXe7/T0FLLsfIMcvSpiW7rOJzOLyDZet2+OxMRy+LwIxQYtdXL7k9ZHZZM0D2ncmMpImrXA9868Xsu4F4kv8DakfivKdz5fQOIDyu+W8YuxBUI0+Wj0laHZqaRnMWUxrgMtFguYTqfiiWyJ9yw0aM8DgGibxcYitHLWvuR3LdM54quzKtkXq6cpLPKFtlOE/pj+jqHLWmdVuLAY2+124e2333aBB47VagXL5RIePXoEk8lkQ/n++te/hg8++AC++eabC8/E4mV1KhFWgRg74a1BfE6LJNx9ZSzgR/15mrayx1AKSJUNq+FqwbaDI2UYDNq4SUYRfUZKy4Z1lXlv1lVBqpDfJsrmPTScre8cazSlwOq8SGUuY376TidaHGjcIUx3S14mfO1To1JKC6MFlDWs12vnzPvkCg+oAYALmElyDP/G1GHT6dSdiG02m7C3t+d2h3c6Hdjb24PFYmFKu5wK6gyGdF2MDfHRRx/Bs2fP3MJ+im0WAx5AscBaljvz1AaJ1YV4YqGoPEJHFHVizAlcWofvTttYlBFAKut5BJ/r0m50KQgUC+k5HmjRAj8S2u02ZFkGT548cZtCUoIf/Lcy7U6tjcuwVaR342PK5TKVefx5GsCgp2UAwKVQrNfr0Gw2YTqdwnq9drKfB4hCung0GrlUa1TOhDbobBtlBDZQtxbdXBQbCMW+XC6X0Ol0oN/vu1Pojx8/htFoZD5JVYTeogFcKrsk2Z1av5aR6CrYfinwLTz43okG/TU/U5Nx25yruGmCLzhZAp1FeMX3DL1GylovTVGL9Vv9KgB5wUn6XQO1TfkJy9DiTVFwHrPaT9pvtN/X67Xz3+gzRQLg+JkufKbYnbQutF8pjfT3e/fuwdHRkXufhw8fOl3LNw5RaBssLLTWajVot9uu/qso/1JoSuEBiSe1uVYGDVSfafOPbjKgWRKpP+6ThVimzGxT/B3ob8jf9HocrS6LHy61p9Hh03OUJm77liHnpPnsq9OiW3x+Ftp3n332GfR6PXjjjTcubEg5PDyEbrcL9+/fh8lkIqbO5/KuiIyjhxxCY0GfkWJLqXF3LMuvYEi1YSR7qiio3VCWvI2xI75L2OD4Wq0GnU4H7t696yYDTXMFAO5OruPjY2eo4XcPHz6En//85xsNlCVcQ4gRUkWDJ7E0afX6JrGvnO9d+XOS4NAEp1RvaILzgAp9TrsHTHs3H7hxmFIHR+i5soKgqUKSByN9Y1S2sy7xjI9uyUjztX8VglllBEBT37GIE2aFZd7H1pdilFIaKF1l8UBqH6Y4LTHg8zfUFp9DKPNof6NhWzZ9oXKUJg4pAMONZU1vxNKb53kwGI5laOpQXGjji4N0XHCX93K5dM5CvV6HXq/nHMt6vQ7tdtsFVKypf32gxm6sXLAEtSidjx49gocPH7o2qg6+V3VymDvU+L3moEmBCko78ou0ycEagMP6VquVejrcUg/9LoYWSgP9OxVlykWfrNFkBP89VD/A5kYMnxMp8YFPr+FvzWYT6vW624yaYmdpgbQy7E1NP5eh/1Npwvbp3xSS76DxMJ2veFckAv+mp9VoPZgmkV6j4qN5Pp/DZDKBRqPhNuNY5qNVXlhRxbhJvkWRBQJeV4xfh3IbrwbY3d2FTqcDz58/39DFse/lo5OXL9LHIb+naP0cV8F3kpBCV6zM43I+pk1tnCx6R+IbKQbBbUo+L7T2QjwT8r2lZ/hvobro92hj0/vtpGe5vyLVR989xvejthi302gd1jqtOrZo3EaiDb/TUq4WBeW1Ij46rUuLK63Xa9jb2wOAFxmbHjx44Pwj/D6mLcvCSpZlbrGX+8A+vvTVh8+WIaOL2vuh333xCm5DVxXb0OiWYheUB6gvrs2rsmgNxeQk/8DHAxbZqckgaZ6H7E7J7wu1b0Vonmj8Y9FZPpt9vV7Ds2fPYDabwb1791wZfM9utwvtdhseP3688f5l+bISuH6y6nufvqX1WuxQzY5IRYx+1SDZL9a+L9vWtSBF9l9FbCzG/uQnP3H3JSHeffddeP/99+Hw8NBd1szxxRdfwJ//+Z/DycnJxvedTsel+8rz8/SCVsVXpEOLMqJFWPrgC/5Yng8Fpyh8F1Fjm6H7ULPs4sIpF0zcOKegARGpLgk+h2Dbk6ksI75s+BydIo6CBul0a2x7VIDzdAtlLFx8m1FGMJYidMdzbN2+MZeMUAlS4NXStlSnZNhb6tumsZC6gzfLMjg4OHDpmdDRRVlrlbOhNsoE1Tc06JCaFpa+Iy5whcBTv0inapAmbAMXWKRF3jw/X8B9/vw5PH36FKbTafR7SO+FwDuZcCGB61fr7s8sy6Ddbl/gifF4DI8ePYLbt29Dv993th2moysDIXvHilgeWa/XMBqNNhZfQsDUrr1eD3q9HpycnMB4PDYH/EOOewh8c0VR5wXrKiP1XRE7h/M0n2O8nSKgC92YdhrrrdVq0Gg0oN/vQ57n8OTJk1I2BOApyd/7vd+DV199Fd577z04Pj6G//N//g/MZjOYzWbQbDah0+mUemreOib1eh3u3LkDi8UCHjx4AFl2nkpZkimpdFwVXGVnG30k1F1UXnBwnxD7mD5PfS5fIDMWVffhZQRlsN0q66GLBwCbY1UFaDpH6VQZ7eeq70+MhaV9Pjf4wp21Dh5kD7XPF2Ji6QR4oXt8GTWkuzRDtBWFz49H8CAr1ROoQzm47xbi+bLmIvZdWel9ywLnO/q9D1JZHgCPnTsoG3CxGmWSdC+1ld/n87mzrfGZhw8fwvHxMbzxxhvQ7/c3nlmv1zCfzy+cYOX1UpnGY4rYp/gO2C5mm6mCB66yPUFhHTssQw9Q0d+Qv1JlkBZn9i0g4m/SmHNIdG8bml73nQQtCkn3baMPLOsNWozPZ9dK9U0mE/inf/onaLVasLu7C/1+Hw4ODlzWmtdffx1msxl8+eWX7rAfTW1OIW3EjoVEq2X9hy9UlrWR0QrezmWtUVyjPGxENw8PD2G9XsN0OoV2uw39fh9u3rzpdjLgjqT5fO7+AQAMBgP44osvLjATGgYovPiiXYgJQ45nrOGtoazFAevzUlnLYgZvl5Yp4pRbDXepDcsCCS+bOlbWBZ/YekNliwq5yw5KWIV9arCHOsExTolvPEMK0VfXZSmlsgJj1np8MqKqPuAyJ2a+poAagZqTWlRml4UyeJC+a71eh3q9DrPZTExb46ujyjnAAwf4mf8uyftY491Xv0ST9Dx1QKX2qZ2CC8f4GYNU8/kcBoNBaY6YJjO5oyz1ndY+BjBo0Ha5XMJsNnMLVdRRL4NHpDmZUq/FNsDfaT/QO4ik+iRdjqebe70ejMfjjbvmfLAGifl48vLWYFsouBzTzzGOdojPpAUBnw6TApax9OLf9GQM/Y2ON95zlioHMYhI20G50Ov14MaNG9BsNjcyBmHbtVpt4/S9tX2fvcN5Gd8R0/RiO+12G2q1mkuz3mq1LlwdUhTb0KPfFvj6PWQ3+XinDHlQFiTepN+n1BfjH8a2U4RvLX5wmWMQqtNqS5VBG9e7RevT6qb1W57j4PrSanta2vUtNljqj6071RfX6veVxb6iixA7OzsbOsTXflmySGojtOhbtU8n2echWmJiZhIsNqI0fvQEYtH4JLersiyD2WzmUvejnQUA0Gq1IM9zl8mAn14OyaMQvTxFq9VGLSseIsmRGD9Aq0NrJzauUqYsjiknvWOKnR8b70sta7GdNF+0iO0RE9ukPB9Tv/RuPj7z8a+Fx6z6lbazWq1gMBi4TRutVsvFWPI8h06nA41GY+MZi270wSKTtWe09orqHI2mMuzn2N8tNoMvfqbVd1k+oiarNZpS4wRFILV54ajJYDCAf/zHf4Sf/OQn8B//43+EVqu1UcE333wDp6en8Nlnn7kg1qNHj8QG8Q62WJRpyKUihQarc5QCulMMjeYQHSFDAY1uCqlenyGOAagQpHqtfVzmCT+Olz2oZFGIHOhohU6sIa/RMjy4R0+r+doO0RX7DtewAR2kKurdZiAM4TMgUZ6F5GPZ4MZzGY4f3teEC4IxfXdZ84e3y2WF5fQIX9wAOD/FmXJvXJ7nsFgsIMvOT7/ShRxpTgyHQ3cKOcsyeP78OeR5Djdv3nRlptPpRoaPVNBAF25qo3Tz3cwh5HnuFl3xLksfMJjybcpWgDIJnTvUTVbniwaz8CQSpja1zj+8exZgUz9Op1PIc9sJVgxm0RMJRQPpVQfQywIP2lEbhAdMcK7G6hXNsUbdMRgM3GZUtG9986ler8Pu7q56LUeIFpSNkr0l0YkZh549ewbj8dil0t02LsOJvcYmeED7ZQPyNGY2wI3gVx3cJ+UbzVNAFxIptOCwD5INzAO2ZQe6Y2HRSfS+U/5s1fweo/dRfiMf4Ek+LZuLb9HR4ltp93n6oMV28HQvbiTK8xwODw9dBhGM9wHE9QkF5ztfjIqeqKzX63Dz5k3I8/xC5r1UWlLo9oHPz9BiC44v7wteRxnvV9Ypw0aj4TYGL5dLaLVasLe3B7/927/taHz69KnjE2x7Z2fnwl3ti8Viw76ldjradBx4opLeEX8ZkBaFyliYscq3kNxLictUAT72lgxhsT5Kat/zZ1JOu6Ys7BXRVz67wNcmf5bLoKJ0+RYR8TstOwTA+XrTeDyGTqcDrVZrY72JwkIj9a2LxACttsVVmGcUfCxS1p587/4y+heIbbxXjE0qlduwFE9OTtzkyPMc+v2+E1TD4RAmkwkcHx/DYDCA2WwGk8kEzs7O4Pj42BFCBZsk4HwLltLLhVBkQhSdTNbBtQpNrSwaZqHFrlhlYpm0oXcpIrQs9FYpAK6aMPWBT/QUQcuN/tBCbOg3X6BYUspF+EBDGWNoXQiOmdchbEuxWd7NN6ctRmBKYCTUlz7+sQQgfWWs422Fxgcpi4f4Pw3M80Um3/MxbVocO993If2hBRw0WJ21kD7lhjgNnPLFGyxLT8HiYhjtbyyDgSLrO/mAz+OCH+3PUN/j31ym09R5eFIO06jOZjO3uCTVVxZSA6UhenidtVrN3ecLABuBnFD73W4Xbt++7RbWB4PBxmlIKmuKBB99Mteqa6R0b1VAsjFi313SJRbbVXoWv7PYDTzAi59pqj76vc8Pof0dorvRaIhyycrLPjp8eqVWq22cjI1BWfN+mzYMDyJJ/bdardwGYC5TaV3S3Oa6F3/nG1b4nJDmiOb3av5V6niU2f8ptgOloWhgj849DPTv7u7CZDJxm9FSfJ4QrHX5bMYY/z4FKTGUWF1aBl1WaHNGo0uTlUV5ln5npTVkg6LM8J0mtcY9eFtlxX98sghRq9VcBpHFYgH9fh9ms5n5mg5pbHx+Av4uxRbwnlBuH1tiZ1VAeo+QbR4TeymLvtRFJsmvkMplWeZ8jTt37kCWZfDgwQPnh/jsPo2ned9a7GTL+1lkhUW/SHqvLD/Qihhda9EdVrpi+sVCi6X9mNhKDA3WfvDFO3x0aXJfeidfDCtFToRkkUZXFfDF4RaLhfO18Joo3JSHG9XxwB+/ugPp1uouKl9j7NuQf6rxRFl9HqNrtedjy6TE87aln7U2q26/6HhuLMb+9Kc/vRDIRPzyl7+Ezz77zCn39XoNg8EA/uqv/sqd7Gg0Gs54q+I0FiJmQlw2itLF707wIaQk6O/aiZiyHfwyhGIViiKGLqpEy6bFWqdPYVue5Sn36Bznu3d9bdHdR1q5UGq8bQpIbGNbgcMYFDWStN8sd2vG9Im2u9bnaJUZhNICNDxoqukuTHsC8CLVfhk0Yp1l3g+o0bRardwmqbJkd5HAqZYqNMYxtjobdEHURxOWwYXVLMs2dlquVit3QhHpAAC3SImLcfRuVcRisYDRaFS6LFkulzAej6HZbG6c3rUusiA/cJr6/T68/fbbMBqN4NGjR9BsNmG5XMLOzo4Lclcpe7chc7vdLrz++uswHA7h2bNnG3dWhU78fv/734d//a//NXzwwQfw5ZdfwgcffODujsUgkwbK5z5dGQpEWRb81uu1m/caqpz3KQEBlIdaH1A5XdbJ7Hq97k6H4qnvLDs/EY/jieNWVoruWq0Gh4eHMBgM4OzsDGq1GjSbTS/vXOMFkD+kLADS/d0AL06cId/QE8Gj0Qgmk4nT73QhFeUR6gbKA1wf4P94TYD0mxRkovRKJyX5XKLz4yr4r5y2y6LplVdegffffx8AAPb29uDTTz+FyWTi5nIVCL0rlR1WUBlX1lhL9VSZ3eKq+k4URfozZaFTWwjM89yd9sOrRWj9Vvs4lU+orONp9rU2LAsMe3t78P7778M333wDv/nNb0T7vwiwX/B0LuoELkMxUA/wws5Pze5S1iKatuiCv4fkaNlzi8doUjZrUZryfDOzFtXVq9UKfvWrX0Gv14N//s//OTx9+hSOj4/h+PgYHj9+DK1WKzljB9KMftxVuy94G6hi8Yb63jEyKVQnpS80JxCh+WGhsQydyuunNNF7tMuE1B9SnFnrH+5bhRYEeVv8d80u1dq1XgtEn6NxydVqBcfHx9DtdqHf78NkMnGxmUajAffu3YPpdApffPGF22RJM0WFwGXGNjYz035LyZJXlS9wGbZ8lWsm31ZsRO1XqxXs7e3Bb/3Wb8Gbb74Jjx8/dr9hCj8s9+jRIzg7O9twemnqU18gqooFrbKRMjFi3iukXOjfFqFrpTe0OCY5HrGw0mB1TCTHx4oYQRRa8CyycFY2QkqWIqTYtTroO2ntaZ9DdBVxEGKfDwXFi9RRpF6f0WNFqI99hrElEEHLWdr3tWeBZBxqxij+HwqkIKSUlr66U1CGDKjX6+7kU56/uLvUOl5lIGV+FpWzWvuUj/FzqC0ebKcnFUJzgvb1eDyGJ0+ewHA4LK3/sa/m8/lG2i2JPi5fLboVFzJmsxns7OzA/v4+NBoN8XTBywCuf+l4ot3ps2voZoxms+lSImHqNX5SWJJB0t8WSDKnCl3CYbWxNGc8pm3t/Sx2U6heKWCjLdRlWebG1BegDQV/lsslzOdzGI/HsFgsXJotAHCyuNfrufvRKH1lzinN7qcbitbrNTx+/NhlLRqNRq485b2iwaoY284Cy/M+u00LZlE5L/kyVQS/se7YZ6S/NZkTM5fKDq6WXX8IGLijizNVIMX/9MmOKuZ+qk1VFj0W3yBlfKzzP5YXeSCb9mMRm1YbD5Q5+HvRoD1tR+O9GNlptRlpebqoi5vbqE7d2dm58J4WfrWMJd3AQNPb4rUeq9VqY3FQGlcfLUX0AQ8uF7GZJBqKxDjoM3Szkc8/tsoIOm4ok0ejERwfH0O/34d2uw31eh36/T6888478ODBAxiPx85O0RZCpLHTZK01BsFtA8ucCcVENdpDKNtfj3mXVNs9VD+F5S5nqa6Qripqp1meD+lxa/uxejZGJsXGVCS+5+1Y38vns0r1pMiqLMvcBnn8u9frQaPR8Pr1dIw0/0ai16fLNRmgPcPjMhKNFhSxJ2Psc5/uCj1vkY+aT+Prp6r8iNC4XlVcOEL16quvwn/6T/8JTk5O4Be/+IV7sdPTU1dmPp/Dz372MxiPx9Dtdt0l7svlMpjTv4zOsTLVywhuPPH+suy4oAIjJDSqYtwygj9l0bONCZnSRhXBIYR1t2jIMULHS0qVmBJsvSrzNdVILxOh+mMNQwQaEWWd0Ikx7MsYX6sRQgMH0u/0c56Xd3euz7kto85utwuNRgNGo9HGia5vC5CvYxxaCgtf00U2ALhwb5Gvvfl87sZjNpvBs2fPgs/FADetjcfjC7/xrAW+QL2ELDtfkFqtVvD06VO4desWvP766+rzVeqgMsHnOd5d5QPqr3a77Z7vdDpwcHCQdC9hSqANUzEBvLDHiizcFIFmU5UpszWZXEa9+D9uLMC+pTzc6/Xc2MbqPzx5M5lMXErGPM9dKmK8x3s2m8H3vvc96Ha7ld+5LM1/TMOLffDLX/4S2u22W5AFeLFgG3vfeIiGa5QLKbCE39NUj5Kt7QtkXwWEZF0qX5Xl+8fKYgTXzyjziqST532RkmKU17eNGMk2fCT6LpZrOvhc0QK2ZdAGsHlaPyXrQijWkWozaLpJ833pYhvKn+FwCM1mE/r9vitXq9WcjVnmiSOeshJpzfPzU7O7u7swn89hMBiY3kdC0XiXFnROBb4fvq+Fz33AzWLNZtONY1m8lefn6UPr9To8ffoUTk5O4L333nO/Hx4ewp/8yZ/Ahx9+CMPh0J2URZ7iddFNDKE5GrpzVHqPl8W3AdgurVY/MvQMl3USz3L+sy4+hRZyJb/AV38MrHM81jeXUGb83TdmMe2EFjYBLm52R1/Lyseoa5bLpZPnWZbB/v7+hXJlyC9uD/n4EFGEl2J1kfUZK6RxSLV3r2FHETm+sRj7k5/8BG7fvg3ffPONS2M3n8/dCY71eg1fffWVOxGLJw6sk69MaIKGtqUJ6BgH0aKUioIvHmgBsxhBF/ouVJflPbUTCiG6LIstZSvZMgWftvNEK1PF4o2vLSlwg+Vo2ZDj6DtxJDl6PiWXYgCmIFYJhow+bVx98od+F/tOUr2cRv5Z23zhqzv0fZEgc8xctS680r+tMhADJNhHdFHE127M3NXGJmXc8Rl6l8ZVMZ5CAZ7QcwAX+yrUzzh+OHaW4OT+/j50Oh23I3s6nQbTG2Pb1lMNqXPbx7vozKCTIi3IFrFzzs7OYDgcwng8dm1VvZAU208WZ0EKAPb7fdjd3YVvvvkGptOpC4rScrVaDTqdzoW0af1+H46Ojtz3KC/oQl7KHOS8TlO9h+wH5PdQun+t3VSakT8tMjlkQ0u8SuevxssWJ9ny22g0gvl8fiGjQIyzVLXs5XoJAFwqLj7/Q/pKko1XRXcApC0oSPrBVwdNTZ9lmVtMp6etJJuK21D4Oy5o0xTYeZ47nYInpuk/q32CiPFLqgzWboNXNF8iy15ssBgOhzAajWA0GkGr1YLDw0N4++23YTwewzfffOPuKJTqLfMdkK4YeYGLSGi/SbbPZc3JVJulDKS+t0Yr1oUnNumGJ4AXCzd8foeC1TG+k4+2lBSFUhu0jpDNEIpbAcCGLe3za9brNZyenjq5t7e3B/1+f+PKD6wPy2s6VpvzvnemQJnQbrfh6OgIAAAODg7g+Pj4wiZJ2q6V34oETwH0xSEA8NrZoTZT5kwolkNthFSZiToRMzd9/fXXMJlM4Ec/+pGTfzj3aBur1eqCbcNjmr7xC9mF3FawxGQsuraoLWytM4UHLfX46AvZlKG66D2e9HftvmCqAzX7S4OPlir0vwRLXEj73UKbZiNo/ePTQZb2+RhZNjpJ7VtoC+lP5Imzs7ONq6QODg7cBhyUIyEbm9qHkq6xjk3ZtpKFz308ZolZxvBljI7UaIopUwYtsYjxr8pAkfo3FmP/6I/+CAAAPv/8c/cSdCfaer2Gzz77DJ48eQK9Xs8ZZ6HATJngDB2jpMtGWe9mceCtBn6RQEDMZKcGFxXiZfS3b5KWYfikwtI/2wYPbkp3YfEAE35HnQTJmQottkvKoshOWU1wliW0Y3jH56ymGLf0eQv4uEo0cWc4dJeolX+LGFkWpChr/DtkDNDfeYo72k9FjQpajs+TIo5VlmWwWCxchonLkisUdB7i6TG6eFh2O1SWodOvnYLk4354eAh37tyBk5MTd3+glq2Dy0B6p4nm3BcZD99iL+5ox5RflhNtfD74yh8fH8OjR49c4DJ1IxVvqyz+tPKRdAfW/v4+3Lp1C8bjMTx69MjxDeUZPFnBZeT+/j7kee7uI+R3RCJiHBdcqKFAmYM0aboOnVLLZgyLDMNyFrtRsgc0xC7kU36xOkipej/PcxgMBm7RrKhs5nVbYdW7dKwbjcaFzRjfFmh8GBMMsdi2rVYLarUazGazjeCgZs9ogQy8l7DRaLiNx3meuxSMNL055etYH6zqAME2kWoPNhoNmM/nMBqNYDAYbCzAHB0dwXA4hPv374uLsVWBB0dD49RoNKDZbEKeb2bXoPXFAOcLD15LdaXwXtVI4QVL8BSBJzT5iWTsL8onvO8kPaTNRUu8CeG7CiLGD6Oy0hdIt+pIKVbjo+H4+Bh2dnag1+u5e/1oNhH6jvyEo9aHGq2cz/lzZ2dnsF6vHQ3dbheyLIOnT59emJ9SPETrG6SJ93OKfSKVQR+JX4OhLWpQ4GZCSc9ptPDYHP0NbQq6mJEyP/EUONb/5ZdfwmAwgNlsBq1Wy2VJpECew/Sj1MaV6MbfpPGw8rwmNzVw/o2x98uIiZQFjc8ppLiaVpcvzou8RBfgcbNsaAOCRaZq8xNhuYqkCK9rdSJidK30DlJ9nJ98vK5lz+Djq5Wx0m/Ri6HvfXOE0nl6eurobbVa8L3vfQ8mk8nGYqzvnnD6G/KjJEPp+3NZo+lWiy9u1d8SLPEeX3lJF4Z0V+y8sMyBlHmSSk9sXUXmcNW4kKYY4JzgxWIBk8kEvvzyS/j888/d97PZbCPtG37vuxuA112kA0LCTCsbwrYHBQWpj5nLDCKFECMwQvf4FBUqqfV+V5HaL1K6LV4vN4x95coen5cxUGXpA987SQ6lBGqISQ4s7buiQRGJRmvZqkDfW5Ohs9ksuFHEZ7Bq7UkbHorAZ9RetszD9/TJfOv8l3S3by7g2FntCh/oqanVahW8TgHrjAl2WcYKbaterwc/+MEP3J0pz58/h5OTE++zvsAwbxvrffjwIZycnMB4PDbbaFcdu7u78Md//MfQ7/dhf38fFosFzGYz7zPz+Rzu378Pb731FvzBH/wB3Lp1K+k+Qi3Qap2nRdNPaigi42OCulbw4KoUgEzR7RhQzPN8oy8x8DkcDk0prK3A+lHm/+Y3v4HhcOjSNt6+fRuyLIPj4+MLNOHz28BisYCvvvoKZrOZWzgs65qCa8RDsyt8AR4tYPey2cBlAVNtzufzje/LkqEhe49C0rdljkuKPUntLhp0Liv4bKWhrH5IjXfggkAZNFWVLSRWv/J3iAmc88+hBQnalrTwguj1enD37l0X8D4+PobZbGZKzUz1qOUd8jzfuI5AKkPjEtoGDSk4LfnLtExZwI2rdAHTugAWSw+3s6Sxx+tREGUF5IfDIfzP//k/4dVXX4U//MM/hIODA/jxj38M0+kUZrMZfPDBB/Dw4UNXnp7QLgtcFhbFNmXotmHtIyuv4iYN6oNJC+3S8/hb2f5H1eC8VoRfNL3H9Zq0Qdsai9PitrQOrkN98Ro+drjZg/o9MfNQonu5XMLDhw9d6vrQNRAoU/gmAZrBBmnWroLyIWbOxG52LwNSn4fGocw45jWKYWMxlgYw5vM5DIdDePToEXz22Wfue7xgGeDFAOIEsKAKw12q38pcmsEbqj8GXJBpOy/4M1xIp0yckBK00G2p0/eMFIjz1Z8iyC07NC4DV2ERnSpIzfHI81x0aHzBJAsdmuMTA8szRTYHhJ4vUm8qQgs/PNgtPRta2L1qitgql2hZ33stFosNvYRpkvA5rR1ts4FGg/R9kXm/7YCaBJ9TwBEbGI2RFTELChrNaKTv7Ow426WKk8ehMaP2UrPZhDfeeMPZWdPp1C3GWoznkD2wXq9hPp+7RdhGo7Fx8jfmnYrCMq9jxqHT6cCPf/xj2N3dhTw/P8Vx//59tXyWnZ9IPT09hR/84Afw/vvvm9rkzjZ/h1j5WeW8DumBIvVQpNIvBRF8p1Z89hy/gxd/wztdedpKCz2+cjSI/PjxY7dTu9PpwP7+vrvShdKu9ZP0Xj5fQLLTJBrn8zk8e/YM8vx8RzkNXHxXF/MuA5aAO5cb3F6InWPbthNiF8okhPQknjzmGQ5Qbmj302l1W+SaVM5ny0m/ldE3VnC/jl7JUZQnygrYV9U+l5GhE5BYTvJlpfgMLePzf7lsttpuVr/dZ+eF5hD+bjlJrtkKtB5MG47fHR8fO9vS8k4xfjjGI3Z2drzZRGgKes1m8PU7votPbqf6cxiQx1PyVvs71jfln2kZeugjVmZaMZ1O4YMPPoDBYAC///u/D71eD9566y0AOLfVvvjiC7cYK8UurP2r2c9YV2g+aH3ns+nLirnG1uFDil1vgYX/JX5rNBqQ5+eb36XxtehlzWb2/W7thxh7ICRDtN/K8Is4f1vvH/eNDf6u+RdaGSkrk09Oog7m1/tY5o/222q1gtPT0424jebXUVlCs6dY/XWrzR6imZbFsZTarSr2ynmI0yDRWYQGS19WJa9CiLVJLttP3rAO/vt//+/uM94NMBqNxAdpuriYwEaZwb2ikCZq1bAoDt/7lbmrLLYfuXLQJmIMg8c4JRp8gbsqUBYfl4mQM+HjK58joz1jvX8zFZfVv1d9XH0GWhkyIeb9Y5xry+8WxcmNc/67dBKWn2RdLpculWkMsE0etKnCoCpDLlYB1Ps0+BeCxRiT3jnm3Q4ODuDOnTvQbrchyzJ44403oFarwf/9v/8X5vM5dDodyPMcJpNJKSdtU4Ku8/kcWq0W/N7v/R40m00YDAYXaMFUhwCwkb40dO9tkb5LQVVyX0Oz2YSdnZ2NU1LT6RQePXp04eRUs9mEZrPpHMNWq+VOJyCGwyGcnZ1deBZhnX/Sd3yx0CdntE0OeZ67DQMxfZ1KtxVc5pXlaEn3THE5W8ZJT+vJJ9QTVQDHc71eu/mOm1wfP34M0+nUpfTDd8dFKUwDl2WZC4J//PHHLghR1smuq2jjXuPlB/IUlZG4cQjnw6effgoPHz6E3/3d34W7d++W0m5VASFqt9TrdZdCdT6fw2QyiZZZWJclRX3ohLDkh0s2sy9QZ6W5jH7V9BzXqQCb/VOv16FWq124woDeTYn9xekN9TEtZ9Wtsfo1pe+o/vUFyAFe9AMubvoWtPB3TLc9GAxgb28PAM5t7E6nA48fP97I4qItYGl0U17kCzdIL7cDVqsVPH/+HPb29qDb7cLdu3eh3+/D559/Dk+ePBE3bmwTsfawb/GJ9k/M1RHWdnk7KUB7Gu+JpbZHrVaDTqcDi8Viw77GeZo6RmjjILj/qc3p74It43tHa5witOgoPY8LZvV6HXq9nrvHG68aoM9TWrT5EhMPkiD5J7Fj79OJmn5KnZucXuoH8Wu18IQnnpClJ0Cl+orwPa03dBpV+pzSHsAL/wzfEXX/YrFwPg+W9y3MhjbpYF+WdTqf87ekC7cVL/kuyLsQXsY+2FiM/eqrr7yFqeFkcRb4RL0qC7GcDp8hy4NO9DdfmVDbZbyHZdEzpR3Loh1vO8QLUv0hZcy/s/adj54UY3Tbge4Y2vBduVLmCAXzJRr4Z0mxVCn0isyVVEMu9C6aMWapO5YO7mj76NPmWApSgzMxCwGSExUDKXCPOonLF0xHSoMzqYsb1v5PqRu/i5n7VYPLXulurlRYgmLWIEen04Hbt287Huj3+85wx0CBZYHF4sjH9jtdTMqyDG7cuAE7Oztwenrq7oqlzgMGzWKDO9r3V9kotQYIsF/ou2Aq5vl87u4HxXK0D+kdnOjEYmrj6XTqTjZKJ4u0oJmPfv48hyTPpXp898/5aPHZVam61BL0sj4fqiNFN9B3D9l+IViDy3l+vmDOF/rxGXxvXz/hvYfdbhdarRY8fvwYVquVu8OY638KtPfOzs5Kd/Svgsyw2vH873q9DvV6HVqtFuzs7MBkMrlQX6zu4kFya1n6XeidiuJlCkDwPqB30A8GAzg9PYW33noL9vf3YT6fb5yO475nlX0aAqcFeS/PX1yTkXJC3WJ3+nxZS2wghiaLLIyFphd8Phb3Qal9gDzET+dwxOqvmPK+MtZ4B7eLNbkj+eAWXkBfiMcE6HN4+ny5XDo7CRfZkL+tSPFNJTt8Npu5Kwjw7thHjx5tvJdV75aB0JzA79EPwWdi5qMWY/TpIpwXVtvaAl6WyjS0r9frNUwmE3cCWIs5SWNjtRH559jYIC0TGoei/LNNnVTWu/hkiVYPLrjX63W3uXA2m234a3xjTMj+l/jDR3NZsMzPorG1WLuTPptlL64fKRrD8sVfqJ7gdjOvx9K2VebRdunzmCnFKuPz/OKd1BotZel3XsZn2/jGhMPnS2jPcD6OHbcisIy5hiJxCqmeGFhs7iphzltHU4ZIuctD8BmLRfGyOKCxQCeDvh/faVukP6UJK9WFd4TwxVju9Gxzwl81FOXrmGAPB1U4Ur2huSrtRJWe42N+1ZDihJUhtLXvfM+HjJPQYkwZp/toeyF6ypjPVSg7zrcAcCEAtre3B1mWwcnJyYV+owEdS5CVPu/b/IBjGNq05HufVBRxsjlwcavX60Ge5+4ECz3tJznEVufJ0jeWOf3qq6/Cn/zJn8Djx4/h+fPn0Gg0gvfC0rGn9IdoscLCUycnJ/DVV1+Z7rBFnqII9Qs6xxY9YIXPASqbf7Vg02q1gl6vB9///vfhgw8+gL/4i7+AWq3mFro1TCYTePToEbRaLTg6OoL/8T/+B/zTP/0TAADs7e1dSLUktV0GrKfKfZAc9TLok+ooeuJSSi2MbeW57S65EFA+bQuz2Qw++eQTODs7c/JwPp+7zQBIEwLfe7VaQaPRgE6nsxU7OWVeVuGnxYDOfylohLKQ6iHMevDmm2/C4eEhrNdrODk5gb/9278FgHNZSDe/4OYNX9AC+ZMHg7T5JgUwATb9NurXlTVny4TVL6wKOH/+8R//ET766CPY39+HPM/dyUd+B2OZfajxQgq63S6sViu3WQIXKcrWw1Xdc0rh8y+L1CnJxxCvZdn5ovdyuYTFYgG7u7suG8Z6vRYzjvD6ebA31J5k26YEcX0LDRLvxcw7Hui1+DMIX9knT57An//5n8P+/j7cvHkTZrOZGAOUTmrzeummwxSMx2P4/PPP4datW3D37t0LWUfoPa0atHFL4WXJVqX932634dVXX4XhcAhffvnlBZ0l9XvROBLKysVi4TYkIZ14D28ojqPpMfo7//7Jkyfwp3/6p+67H/7wh/DOO++438fjMezs7ECv19uwsyX9wtOOS/OnCp+G0lHW3eRVIkY3F9XhWbZ5N6g0j3B9oNPpQK/Xc78/ffrU2eaSfPDxmxQ3KjPeFosy7I2YGEhInvv8NT7PY+c0ta/4groE372zGq1SXXTDD24Kkp7j8kBq2xqzKwPavEBa+d26KfVzWPUZn2s+3XWN7UNcjJVSY3CDlP6P4IEWyaHzCcWQ0PQxStnOYkhYcoFsNeqt4M4mtpHSjm+SWoLRnA5f3bQe3wRPNXx98PWv5vgVac/Xdiw/+voeaQkpMs3IqUrA+vhMazPGkInl9VQjKSVQWVa9kgMnPa8Fnnx8kyovOS3S3I/tZ6vByelLkXetVmvjzggM0tDy2wqEam3EtlukP1LKUuMR00tpeiOmzRgZHpKJCExv2O/3YTgcun+j0cg5I9o9cxb6y3C86JxqtVoumHhycgKTyQR2dnY27jROaQPr532YsinA2h5vW0JZupC3v7Oz4xaaz87OXFCWpncGgAufF4sFNJtNqNfrMB6P4fnz53BwcOACVb6TTKn6yyfnt4Gyx16zKyyBD8mXwO8twPHhPK3pEMkPiQF9BgMDp6enAHC+AIh3wuHv6D/5eAXnJW5y1YIEFhuabtzSeDYWRfqobFj8Eto/rVYLut0uAMDG4rzP/9TGSrK3rO8pBT8QqXxI69Xa056NpdtSbwq0IBqdr3l+fqXAdDp1p8S18vhZW4BDWUXrKFNXYf2r1crxGz0VxGVlqA1f8Nn67DZs27LbiZ0TNEAsbaqIiYMgpPeJjRX44h8p+i7UHq2vDFuV0oW249nZmUtFyhdiue0Zoi1WBqNuxLvgcUMN+ifafYISP2jxktDfkl9C5VFIR9XrdXdVio9OH2Jsbm0MrDwSOw8BznXt06dPnT0zHA5hOp1Cq9WCfr8P4/F4w7ami51SHNI3D8uQOZpO4N9J+lt6f4lOjpQ56rMBY3R6aruWOvP8xfVPeMcnvW4H/6d97LNVfX2eMvbSGFvqCumkkM9RhE8t/MljC0Xa8v0t1W+dn7H2DoKnX/bJYPxOeg+NrqrsI0l2WJ7R5oTPh+TP+96J0iLpLksdRRDLp2XI+yLzMMUOLIILi7G1Ws05sgDnO12sOf5DRkkIVb9sLCwDaDVsYt4NDRVJ+IUYBJ/1PRMDrI/WqRnjVlQ52UOG0FWBJARToQlwyfAH0HcHbWOHNUCxhUINKX0oKffLQkhp0IUabVGJn1zXglMho8pX1oqY51IWitCwl+5jfO211+DevXsAcC6r7t+/7+4+z7LM3ceH/RV7Ek4yDLcR+NomsH+63a67m5DuZKbBEA3YJ5Yd8xQh3sH7QwHA3WvP0yf/wz/8A3z55ZewWCycc8hT7qS0nVJ+sVi4vms0GvDaa69Bt9t1NP/qV7+CTqfj7pujiL0jHuUgjh+OVRWogueL6kKAFwtk2AdWGzbP842AEUWs/VbGe3Da+N8+B47S4qsnhQ5pLvMAQdmgjuJ0Or3w+zb0d5ZlLk3iX/3VX0GWZYVP4na7Xdjd3YUsu7iYRAOWVN/xfsYTtvQuKY4y7U0Jl20/XXXQ+74sKNumuCrjg7KC90fV9JURsKSgchcD0aenpzAajeDmzZvQ7Xaj7owt4+4yfupQyq6T2g9VyIwYUN8npPPwdBbaraiv8LoK6Vl+BQIdD+smOWsfIf2WYKOk531ywXqaL8vOFwh5umJq2+MpxuVyCePxWK0L7/PDxReNrtirN5DORqMBeX5+uq7dbsONGzfc7/1+H46OjuD4+NjZBShfylyc8PGdJMfw/9lsBp9//jn0+3344Q9/CKenp/D06VNnR0h0xvhKVvh0P75XigyitC6XSzg+PoZ2uw39fh+Oj4/hiy++gFdeeQVu3rwJf/d3fweDwQAAzvmh3W7DcrksNZuJtkjjoz9UhtrzZdjPl4Uq4hTURj09PYVWqwW7u7sXyq1WK+eD4ZyOaQMgvu8sz1n6RJLBtO4UnRriUypveBs8JqDJptSxDr2PpF+k2LFVx1FIcSWqW0J9HBpPOpYA5d8dG2ozVZZbFwZD9V+2HWfFy0BjEUjjsLEYi5exS0IHK/Ch7A4suohYBb28b6w0SsJXEsQSTVpKHT42vpRbMX2J70V5warYKGLblJCy0Jsq9LZpKFH6LMbiNtrkAqKqoKqGmKBy7O++shZ+0QLNsTImpER9i3+h+eWbpz754oPVEE6Z675FWEl2+XgWnVpceKvX6+4+ST52Pqc6JpjiW8RGB91iiMU6kNsC5TvcjY5Gsi/FFD5bNi2UJgB5o1iz2YRerwfr9Rrm87k7ARk6Gau1F7PAJDkoNDD66quvwtHRETSbTZeKkaYz1YIwUtsxur0sOV40KJFik2Ef8rt1tWfp87R/Q8/giQvurMUEQsvg+aLOUmrAoggsgSwOi3NZlQws2scoW1KCywDg0pXO53OXLnsymcBsNoP9/X1oNpswnU435K0PVE5rOsRqbyKqdtp9utNi6/ns1Pl8DvP5HPb29qDdbm/IrVRaaWpcpMFKu9WGii37MkPrR/59lmUwnU6TdQ6vl+uv2HmhlaN30qOeQnu0KDitIR5B371Iexa/Zdv+srU91OE8oI2/0f8t7fFsB9Y4B7fRfLy2jXlP3z3E63xhv1arwXK5hOFw6OzpVqsFeX5xc5SvfuzXlAUMpGsymbhrPXCOYbAeF/boXNHem+uFUL9IssPir6Ofi/0GABubqvg1URLwPaWFEF5O+47SX7avKflnmHWm0+lsbIzQTrMjtD6VfrfYO7HgPIH1WX2fquZwmeNUVWwP/Si8zgjHHTcMTiYT7/Nl0eub52VD0i9a2xpvxbYHYDs8I/GrtS80OwD9Zak8p9H6vdY+f0Z7VrPvtHpiY91X0R6n72C1SfhzUtmYukL0herzjZtGU2rsKfVZqd3Q/An1qfT8xmIsPREbiyod96vSpmSI+wwy6TPCyhQ85R6vkxuHtK0iuz3Q+KPBYs3QuwxBVXWwqIq2YuuxBq6tgU2LAKlqLLc5XjEoOh4+/re8c5n94jOeeLkibfhgbSvLMndikDqpsXRioKTdbrvv0DF/9uwZDIfDjfqyTD/NGUO7T+7v7OzAYrFw6Suz7MVO0Kto1Fkwm81gvV5Ds9mE1WrldaoQNBjBEQpOSXXRzUHr9RrG4/GF/tzb24NWq+WC8Pv7++ouXOu8C+l3rUy9Xod6vQ6z2QxqtRr8f//f/we3b98W26UpDiXdbqWramxb3+NdcKenp+Yd9Gi3dDqd4GIWll0sFrBcLqPlsRSEirW7pEDxZepKyfGx6hYrtIBgTMD9KtoTFPwd8zx392/PZjM4PT2F9957D95//3348ssv4fj4GN555x2YTqfwj//4j24zSdU0+gK4Vbfta0+Sschz0sZT/DccDqHdbsMbb7wBeZ67IDZ/JuTP4e+4EQQXZAE2g+lF5sHLjtR5SPsMxw3HFfsVx+vk5OTCPXWxbeEpwNBJ3JSgD83AsFqt3H2NePVATF0+bIvPrjIv0z5AftGAaTPxZCtdCAII2/fIc/g/3fCZ5y9OQ1pPo1r5N8VfswT2+b3VWlyKvjui2WzCZDKBs7MzODo6gr29PTg8PITVagUPHjxwi6PcXsB+4ePEbZ6QXYk+1HK5hCdPnmycjgU4PyG7Xq/h6dOn7nQV9dOs2U5CY8R/l8aen3aV4jPoG+CmK+0QDNV5+J10Xy8HzfwkgfZH0VPE2B761mhzHx8fw8nJCbz55pvQ7/dd2fl8DrVaDVqtlrdOS2De93tZfkqKTvg2gttr3LZFW4nGBg4ODqDdbsPR0REsFgv46quv3PzU2qhC//jq5Pyi0SDJWOwHqT/oBp4UekM0U9/WJ+OoHLboCQq+4Efvcqbv67sLnPYRrdfXpoUPeJsaf/rq0vot9FwKisTXrTz6smLb/mYZdRWhWXp+YzGW/oiOiyWwxA2IIgTGIiVwJrVnUeDS875ArSZ8YgKsVgOfG2xcQcQEUbmywfo4L5TlYG7zOQ0x4+6DRelbaLC0GTIaaF1lzVGpDgtvxwT8rnLAwTqPQ2V8skQzmLhBReuSjK7Yd5RojZEZnG5NNmIgQ3qPULu+d+p0OtDr9eDevXvwyiuvwGQygfV6Dc+fP4fZbHahT2LSI/uMOQpNb0rjEfr7MoHyHu+MxXHDe5sQoXnNeVoqY3GutTIHBwfw3nvvwZtvvukW93n5PM9hNpttOIEhp8Sn1/nfMUFbHoSQFootczwEGkRMQRk6LxTUisXOzg68/vrrcPPmTRgOh25hK5QqezqduoXW8XgMX375JfR6Pej1ei59uY9+yfaJ1fPSPLDIO58MjYGPn2N0ha9tbY7H8G2oTl73tsDlBfINngBIBZ/Xz549g/F4bL4aRqIxtv1tILadlGAR/S6lzTLh49sYP4B+V3aQuQyk2pgpY0M3BtM6suzFSQ1q+5Y1/r4AWNE2MJBo1dUhHuDvLcndGJqrDvpp9iP2C19AlLBcLmE6nUK73XapdReLRXDDIPeJY3gHadR8Mq0tGpeR9CJv17oJQQp2x+h06bNG12Qy2ZgToWteQjaDFpvwjcdoNILHjx/DdDqFWq0W1MHUN9biW2WBnorP89zp8t3dXWf/n5ycuJS9PnqL0omHOeg1KVm2maI6ZJuGwMePL8hRW4b6/nzcQrYenWeajV1UVoX49WVHGXFOKr/4s+v1+sLdsZ1OBwDO9TfdtETlfNWwzB+fLOZxv5CO1dqS2vDRxOP3XG9IdITicL6YTcj2RGjXJ2nzR/M1tXfnMtRHvyXGJP2W0k9Su6k2YSgmFqLPJwtD/O6zZVPisj6EZHZMHT46QyhbrltihFJZzb68cGcsYr1eu91uPmiGVJWwtikxtIaQs8snCneeLBMyhhFCBj43YqVdcJZJFOuYcaWUAkmRXGMTRfuW/p3az0UdeV+dlzX2lnZjhHZKUFyTDaG6qPFDZRXdVcsNpG3LZV97+Lt2h6NmZNHffDK61+vBK6+8Au+88w68+eabcHx8DPP5HL7++usLdx5JhqQFof6ketPXH1dd9qHTXK/XodVqwXA4dOk5U2VTrCyhY6715a1bt+Df/tt/C7VaDWazmTq38C7Qqpy/UFANgcFC/J2e6KbgdfGd8ymy4mVHvV6Hf/bP/hkcHBzA6ekpZFkGr732mvf+ofV67XgXAODs7Aw++ugj6PV60O124fT0NNgulxWch0IyD+koE5INHDMvfbI2Fj7dRXk2tQ9CwQvaF1Z7P5UOHPvT09ONgAE9AYf8kmIbfPPNN3B2dgYAYEpRTJ+t8t6ja8RDGn9+soDruG878L1jeBtRr9edXSLZBHTOcT0Z27c4r7UrgnjZmHrpZ2q388CrpS6fr0d9rSL+5DaB/Y6Be4tcm8/nsFwuodlsQqPRgH6/D4vFQrxbnIOeXsLFKd+JQk6nhT6uo1P8X+szlI8sz6SM72g0urCJTbO7Q/OQf8/nM4CsBweDAXz99ddOJ/uCzgDg5rKUulp7JhX0xFae5+5Kg/39fTg4OIBXXnkFfv3rX4uLsXSxJUSLZezwnafTqVscw7mFG2uRZ8qynfhGCO7r85T/COsilw9lxJauY5NhaLZ2np9vPqCpzDHjJr17my7YhuqX2iiDbu136X9pwc+ypiDVzWmx8rnPtqHZGjT+tbRjiflyfyvF76T/a5nTuCzUkBqrLeJDl7moh/DdSx6io0x55eOTIrZk0bZfhvqLYGMxlqYaCeUER5TlRKascseWCwlhTbBITp9EQ5F+kNql3/G7+nx18Lq4gY60+hYK0CGhhlqZTFyWgH2ZUVV/aoZSCn9qTlYRVBUotbQb6g/JQZDmU1FY65QCA9J8DL0Lf3ct1REGIyz3T2t9KcmhkNFNF8qkU2ja+7VaLWg0GtBut+H27dvw/vvvw2QygZ/97GcbCy1ZlkGz2dyQa5xG6V0ppAWxkDGEZfC0LE0JZXG4QzQVhRQUBji/sqDT6ZSSJhMDIRrP00UODVmWuUBClmUX9CAPbCKWy+WFAEyqreHTq5QvcHGGvlOe53B6egrdbhf29vbg+fPn8Dd/8zdw//59b5uWlGQ+h1FCCi9JPL8N0LtckYZmswmvvPLKxqI2wPlYYzrtLMvcaVh85tatW26XtgYpcBoTEOO2c4p9TPta0usW2U/p8dUfg5ixT9HxXBb5HMIy271M4Dvv7e05GZdlGbTbbRc0la4qoYEKSV9+F+znq4iUvvf5Yd9W8FSFaP+V5VvwYB5+pvZXygJEKCCaZZnTQb1eL0gnAp+lJyG5jA/RGLLXU3BZCxM0NTCepgoB7xLF+wnp6T8A2W/R7H/N1qM6WNPNFFXIYnoi17LhTvN3LONK66cxKKpz6CILzoNQLE3rR14WwctNJhN49uwZ9Ho9l2mG+pK44Cel4I0NevMxtMgM/tvp6Sn8/Oc/h1u3bsG9e/dgd3cXbt26tZHimfYNBb5TTCwHfU7qg+B9uyGafeNi6TPsd5zDX3/9NTx9+tR0tY02r7S/Q3RYYZkXdNy/jfZVrC60lDs5OYHpdAo3btyAnZ0dODg4cPy+Wq1cxjJOhyRHqR4v0v/W5zU/RJqHtE7ptLfWpvZ9yBYK8avkI3LfKsXu5LJB2pAkzWGN9hhwHZbqx6Y84+OZWJ3qq9Ma69HalWxG6yZdHsuy+N8x/eibRzH1leEjVCW/rfRL5TYWYzHoVZYhXxQ+gRE7ASwBNa1OKUAXY8yl9iGdSNpChaUtaxCNG9RS8C9UT6pgkp4PleP1V9WexSEtyoMp2JaTHDMmvt9SAx5lw8c3ZSqDMuQDXzzE8hYlzmUYd8x8cl66h0H6WzOIJDlA/+dGrI8W7qRS/sDF2EajAYeHh/C9730Pfvazn8Enn3xyoY5Go1E44Bejj+i44eJhGffzFIHPoKR0dTod2Nvb23gmNG/4OEvf0We5oRjqF1yMlYD8TRfvADYXM2MMUx9CQTd6Uo4+MxqNYDgcQp7ncHJyAn/91399IYUX1hVyNGh7vKwWvEjlu9jnyuRvDCpRXqrX63Dnzh1oNBobwVa8dxffFxdj8zyHRqMBR0dH6p03Eu3cybTQGutcWerktmYV8ktqM1SPz5nXAnmaHcnlfxFH+6rCJ3u73S7UarWNxVjtHnWr02yl6TL1EaUDQF7ksj5L/7b6PCHEBlck+N6lalu3aqTwD5UBfMOSVp91EYDWIz1H7QdtY3PsnKJ6P8/PT8ItFgu3oUJ7htvnmn1CbfdQQLAsPUHb3jYoH6AdhQuAvjk2m81guVy6xTkpBbQWGJb0vqSDYuM/sbEDOjd88yA20JqqJ+jCJY4Ht4u4T4N0afYV7TvND+Xl6G8A56eh5/M5NBoNaLVaF/wMXIj0zT9aXoPmv3B6QnWNRiP49NNPIcsyuHfvHnS7XTg4OICnT5/CeDwO+lixekKys1A2IWj/SPwh8aCVn7FevONX66sYOy9GtmnzXAK+k2R3avQVtbteRqToxcFgAKPRCPr9PrTbbej3+07vTiYTl80qJPeK9j8fTwvfSTEdrc6QLR5jJ4XKSXRJ7fJyNNam9UOMTOP1Sm3H2G0S3dLf/Dlu68fKSO0ZyUaj7xWyxXjdWizG2nc+HpSekdq1tFOVLam1L9FQBSS+l2jZBh1Se2qa4hCsxmgRpDpl0jNWZR9ikNB7lxVEwkUYn7HEDdZY4RD6TkNZgY4i2KaTmBJs2NbcuEyhgu2lKNxvG2LnT+xzljnHF7YkR5SesuHGTKh+C2/5yuzu7sLt27edM//gwQM4Oztzu98laP2DJyl8Aa+bN29CrVaDjz/+eCNlmS+g4zOAkG7N0V0ul3BwcABvv/02nJ6ewvPnz2E0GpnSpV0GfAbzarXayJTBUwppi8ohXVuv1zcWKvkdtBJ4MHIwGGycekR6Wq0W/M3f/A188MEH8M0333jr3AZms5lLoedLpZtlmTvB22w2RX6WUuOWcZIoBlclDepkMoGf/vSnMJlM4NGjR+6EhAXD4RAeP37sNnAMBgPIskxNfUmBv1F5xQOTVpShD8vSqVzGaUG4VFgCW2ViG/aX1Cb9rJ1mBTiXgZYrYPL8/I7uKud4jC7cBqzt4iIBlZX4+auvvoLnz5/D3t4eLBYLuHnzJsxmM5hOpxuLLL5FAfyd/k/TUgNcvM8ypPsuq0+rRJXvg7IIxxV94lar5ewTbB/tE0smCQ7N5qPByxTax+PxRpYZLciF9lWoPo3esuXDZfKprz98sgppTrVRLGnlqY0gbZLVgO9jHSfKJ3jqlKaTxd8o+KYGXo/UhnUjpFS2Xq8nzTUp9XCeb94760sTvbOzs5Gth9ZDT96dnp6KQXp6YrNshOwcjiw7X5i9ceMGfPPNN7BYLDbeB3mNj30MPWg/SM/iplGkF30Q+g6xkE4F8tNzzWbzUvwXDZbFCPr3VYh/XnXQq6hwkzSm6l4sFjAYDKDZbMLh4aHbpOyLAwFsVy9xHoiJ6/sWv0KxdxqL03xRviDIr9CR7CCLXkxd1AzVR68CoP9b+tKXxYDqOa2/aNyK6xleD4dvrEJrLTF9J9Up1Z+6bsM3oH9XZddV9702FmNDzEBRdDE2ZdEyZRE09hnrO1kN8SII7YZFOigtvKzUHz7n0/es9P1VmNh0HK/ChKvaWfYZiZbyVlgNj6rBjeBY2RGzWByaR1UEPjgdmuERajsk+7AOKeVRSG5Y2gzJqVarBfv7+669Z8+eud8sc1hqC08TNRoNt2sbnW5c+OPGLv8cMqDo99rJBWyz3W7DzZs3Ic/zCwuxlvpDcziV/6zjS4NaaLjid9SottDM6cc6MOAQM3/p+8/nc1itVm7M6anjJ0+ewIcffggAempsWm+VwIBxvV6HZrPp5h7dDEHfiztQPl5IMfpTEJKLZYPPf97earWC6XQKx8fHcHZ2Br/5zW9gvV5fSElIgfXhs6enpxunl7ns0exBHojF72JlSuyYSW0Vtb8l+HSMJJdj7K2yaOX6v4z+TQH2v0RLyOn13ZVFwWWCJcBjGT/LuF0FO5pDek86Z3E8zs7OYDabuY0WnU4H1uu1uzde8nesPiANLqWA0snlRmyfXwXfqypQXqV2B8ptPsdCYxYqo/lUsfRSYKpU/N3CYxY7z/KbxNtFZLXEn9bApFRnyMaP6Svp2aJ9JI0b1ksXkfB36ptq/Z2is5Hnfe/kGxeLPxWKV0i8iz5CiHatTf5daLxoXXyxltrUuNBHx4U+Z6FHeo8ifhfnITzlnee5S7P84MGDoL0v/R7iJ2oTZ1nmssmgbLJuArHIE+l7Oo/oZiaepStUTyy0+Ux/056L9W2rRpm+Xox+Kdr/ND38arWC1Wp1IUZTq9U2NslJ40VpSrGTtgFOl9bPtJzP7wzVw+ukZS39o8lh6bsU26iIbWvxM7U4ia8PUQZZ39NKn9RuiGZel288NL/NR4dme/iuC/PRq9Fp4U8LtHq3hasg88XFWB8xVQWBQrAGXSSGKmpIxdCU0hZ10LW6pZNAoTqlu6Q4+Hf8Tp2rchrGghBfXlVFboWF9iKOw7ZQZBz4HKniXTWeL9MoDgHnIbal7TilTo2lP0IOugUxcg8XSujdPvw5ekoIjXSNPmnB5c6dO/BHf/RH0Gg0YDQawe7uLrz22mvws5/9DB49egSDwUBszxrM8yHLzheZu90uvPXWW7BYLODTTz+9cMdVq9VS7yu7CkCHCYF9jAufnP9idlCjE9Zut93zi8ViQ6fRAIoFvV4PfvKTn0C/34cvvvgCbt++DW+88Yb7vdPpuMCDdP1CWfDdrQxw/l4/+tGP4OjoCKbTKTx8+BCOjo5gNBpBr9eD6XTq0q3hPbM0uOdLzfeyImRfUiDvoRPxySefQK/Xg4ODg436JJmN33U6HcjzXJyXGpBn6R2zeMqZ1q+9Cw3c+uy6WNu3Kp1X1E6W6ooJDljq5XVdxrxAnmq3247vtiHLpfpjbPOq++1lt60vC1TWA1wMCpTVp9/W8UH9gKdqtEATQBrfY708VT6FZcFMAq0Pbfl2uw3r9RpGo5G5HktAryiq4h0taIl0o92M48xPtnB9SPuOpinmC1rS+6CfslwuL5wo1MbWGtjU3t06L+n94TE2gzWGk8IndFMl2jpWSCdh0c7jsTCt/jzP4ezsDE5PTze+p/Xw8gC6r0G/k+JxKXFRnNN4hcbp6Sn85je/cfxM7Uv+DpTmMrC/vw//8l/+S3jy5An8/d//PSyXS1itVmo2nqLg8QntVFrsHb4hlBWn+bbpzG2+D8ZxcC5+/vnn0Gg0YH9//8JJSQTOCV8WKYC4OVHUX6J95vP1sC20BQBk+9wnK2No1caR6zhffZwWTjddlwjR5bN/qJ6T5rl1cdPXNqWb1kvvns+yF2n2sU7tqgoNmh8V6mdevmpodi/lT4Crk+3suwbR/qR/WI28MgL5dEIUwWWuoGvwGXlSmdAE50KOB7lilZP2nWQES59932ltxNIXE7BNwVV3UmPak/htm4jtyxB92wq4WpWp5fnYOmL4XJKVobmnBThiAzZF5wnufqQLkWh07+zsQKPR2EjFGDLUsFy9XodareZS1R0eHsJisYDxeOwWSMfjMZycnFxIFVdW8BzrxPfY29uD4XAIk8nEBY7ond9SKjGOFJmu1WldNOeBKlputVq5RVMe1MLPXH/wIBPtJ/yNB15i53mtVoP9/X3odrviglds2kKLo8r1uEY3n6/tdht6vZ67xwqDIJQnuJEsBQKL8Ebqc2Xo4RSbCZ/j/TCZTFy6KyudyAeTycRELwXKrVDQ2AKf3WYJ9uEzRfSOVKcErR1OR0h3xOj6qw46fjxrTcwY0JPxi8UCJpOJC9b6grC+YNBl92PqHI8F3QSkyUP8Hm2BxWIhbsjRbI7L6k/erpWGsufZVeCnEK9we0LzkaU6Y37z+cshGn1BUclu4jaABTE2gWSzlYEiQWRfUBl/52Ptew5gM52wFkyW5EeWnS8gYJCWbzgsK2bAwcdDs/V88RmKmPGw0of18nZ4OV+sS/NNpTGS3l/qF3rKlJfT6PP1D/1N4o+UmBelZblcbmRL0k6FavXHzDPuW9XrdTg4OIDpdAqtVmujLt/dvbHgcxfBF+G4bU9p5+/CyxRByH6O0adVyQQrYmS5Zluk+DCx7z2bzdw96o1Gw8lZXhf3dVPaioHlfWLb98mQUJ1cxoTmoU82xdgpsbEP6fcQPfy3GBkT0kFa/AB/o+/IN2lJz/B2+W+Svg7pPem5KuGzI+jvVtuRP1slNF4us36tztBcKwqt/uQ7YylSjfsqgki07ioYhjoG0mm1GKDTQO/Q4wYMP5WkIUVhUGDQ0fdOVfXptnDZAYZYxAa4Xpb3szqUFEVlha9vrHxdliLiypk7L1mWubQuPno1uUAXPlFeLRYLmM/nXpq0YFDs+yJ9Ozs70O/3L9Q5mUxgOBxCu92GO3fuwOPHj2E2m11IKUxpo9jZ2YGjoyPI8xwePXoEu7u7MBwOYTwew/Hx8YU50ev1XJ/E7IQLOdi+HcXj8RgGg8GFvrtKO9FQb/sCgMg39GQIdaQANvkWYNOxr9Vq0Ol0LvQlLla3Wi21fZrSWEO/34d3333XlcO01ev12gXhLbDITjpXkVelQDC2jWP9/PlzqNVq8O6770Kv19vQ9/QZpDVEi+SwfpdBZWFsn3AHDeuLAT0tKwUBY2lBGmLGuExHgTvLZUEL0vnKXjX4sjaEgDw2m80gz3Not9vw7Nkz+NnPfuZkwmQygTzP3SYjPg5XtV9CKMNmyvPc2TB8gxcth3cK/sM//AMAvLizDP2t2J3hWnBfo5P7UUUQExguUkdMfUUh2eRS4MxHB27Gm8/nXruWt4v2C/rw3D4oY35RO4i+R2wAktLkC6rFoCq7wRrUKwIcL2zHmu4dQd+70Wg4v8jng1oDl8hX2snVmKAn/lutVhfuS+aQTiRdhl2I9FL5GsMTPppp8Bz9SgTqAb6hl99JG2ojlk5L3IL66Zo+oJk1UL/h5l6EltbXp2OazSbU63WYTCYb93cCnGcVolmEHj9+DGdnZ967elNBZTmeAkb9SDNi0bIWpMqbovLvsuyv2IUDDWXI/6J9kOe52+CNm72rwmX5ydSPSnmOn07VYFks5OV8dVgWXH2g+khboLTYxpqcpf3he1/JzsdsV/R5GovxyWmLDR7rN/P+KSu+TBGyC1L59GXHVYydmRdjQ4HpqsGFkjT5eHkNFqaX2tLaxHpCDC0ZzbxuSfj46uNlNFosAt1Xn4+W72JgeFtB0lSHu2hdRRc/tXpiAku+eRqzeKrNX+u85bTEyBoLJDmgQXMsQ3LFV19s/2rBIS0I0Ww2od/vQ7fbhW63C9Pp1BnhdNGKnl7V2kXHFO/ifO211+DWrVsA8MKYOj09heFw6HYgUwM3xhDk30k6aGdnB3q9Huzu7kK9XodGowHtdtvdg6K9RyysPGqt2ycj0KDGsUEDWhtf3rY05+v1utuNjXVzZ1yiDceOBwpWqxWcnZ1Bs9mEJ0+euN9Go1G0XvbRwIMrIXDjlgZjMMBy//59ePz48cYCt9QOpcEqF64yrE4fAucslVGLxcLd+zqbzWC5XJrnNAbhcTMBlTuULk4bPoMnF1EOpQQby7STQm1fJZuM9utVoisWnIdjnG/+HJ7Yns/nhWTVtwFc/mkyj/aTFPShsh8X6RqNRrIN6aMz5BNTmjTZR+WCZnfw52Lnz8s033y+JI43ZpXA++L5KXUfQj68RoNk/1nfx/J9ihzR8DKNtwRNr6IdqKWG5wFRX2yF2pUALzZUoW0gbbin4LLfYgtItiGlj9eP/2Ma7nq97mxJ38a9GD7yxdF89n6M7WGdN1QGWvxPWjaUwrksHyCmLsmOXK/XMJ1OoV6vb6TM5KDvJvFziAbkGyonEc1mE27cuAGz2Qym0+mFRQSaftryfj55zX9PiUFpsjiljtS4XVGZyudAjC4pU56XUZe1/zX5zH/f2dmBZrPpfDnO72UgJFc0uefzwSUdHsOrGm+WYWeUZafE0KPZqpZ+kurhtn1M+5q9xu/QtlwzZW031Z+gdIb8FEmWarYQfd7nW8TQLflZUntlQ+sDX/my7WCLHZBqKwCUtBj7bQffZaflgg+BG4tSbvzQnSBIi+8+WMtdsbys7266lyno97Ij1Vi8qrDyVKrBHtuuj4YqEDLG0FnyOf60PCoZaUc4n8PavRS0vjIWDLVAI2J3dxd+/OMfO9k1n8/h+fPncHJyAqPRyL0T7lKTUsuiEYVpaZ8+fQpHR0fwH/7Df4Ber7fxXr/+9a/hV7/61UZ/5HkO0+k0KaCJCznSYm69Xod33nnHLcjWajW4desWLBYLePbsmbmNbcI3trhoulwu4ezsTDSkObAvfYvd3W4XXnnlFfc3pue00IT3qWIbAOenyz7++GP46quv4OOPP3Y0PHr0SKyjyFzHOeybnzgntftwEMPhEP7X//pfMBqNHH82Go0L5WNOcF+l09YhxASdMfBO+2IwGMBgMIAHDx4AwIt+D51Y3NnZgU6nA61WC/r9vrtrjJ+8lvq91WpBr9dzpwyazaYog0NjX5WdVIYeq9qGqyLAsm3keR7cxR8TPLjGy41Qqmpua1HZR2UF7ta3ptR/WVAkAC3VhTp4uVxCq9VyJ6ABXtznXUbQXDpBzQN3seMU8oOWy6ULSsfQinVrQTrLs1cRkhzNsszZpvw0NB0vHD96TxzyDQf+hvW1Wi03H2naeA6LLpDAF3lDcwJt6k6n4666WK1WMB6PN9IxSxnNUoLYMbBmI5EWMrRy0sYKy7PSCVlLe7wta3uxcoBu6Hv8+DEcHh5Cv99X6+Yp2PGUtHWskJ8xKxFm4wA498e///3vw8OHD+Gbb75xz6A/0m633TNlAHkc+UXLdlS2LEqVcTyeEZs6XoK0SPddAM59lMcS2u02tNttGAwGMJ1OnVxFP0uq8yraSThXtTtYsQz9v0w+4PZlrE3gq7PIqfkyx0tb8AV48c4oa+hVUPg91em1Wg3a7fZGfbF6JwacP3g71jUkqz7lbXOUwR9XFS+jfA0uxpa1SMIHO3XQqXCXwJ1erUyITtoW/Z7Sb32HUBDXUs5yaoz+r7UjGZ5SX2qT17IwW9Tp9tVdFNsSNqm7ZELvGBq/bbwfH98Y54XWwRWftqskNfAh1VemDEstg+Bzmn7miluTN1RmaAaTxciI5aHQ2GCaJHpf6Gw2g9PTUxiNRsG2OI24M5y/IwZThsOhOy3LgxM+SPKKf5YWXfB0LqaUqtfrMBwOYT6fb/CyZaGIoor56+tjSldssNHCa7VaDbrdLrRaLciyDEajEYxGI3dqmZYPtUnTDlODG0+XTSYTt8BbpRwMzRV+X/BgMAAAgA8//NDdGSUZ1dKmhipSh20bKTYTgs4/ypvSqVapTV5XSMeiLGi32xsyxwp6ggWDaD69Y7WLY/rNYkP4dIBVJlv1aUoAwNfuNhDSlyk2kAUYVJZSEWrzh9vlKYEefJ+iNtJ3CbS/Ung8JaiCz74MCAWgL+M98LSYBXxsfTKc+hxUlmsBL1/8gtdDv5d+01A0wJYiC0K0WfqSPk/ve7bob9oO34zJ66bzFzfGD4dDd9UFbpJFu157FwtiZHLIvkR6d3Z2NrIqpNIW8s1D9Urv5ntfOhY00E/HVnve1waXqbG+TBm2V2ickcbJZALr9dr5Rf1+H1qtFpydnW3QRPtJsosku1FrezabwWeffQZHR0fwve99D2q1Guzt7bmF39FotLEZ0SpntPGXYptZpm86Cs0NiTfK0CEhPrlq+laiN8Xm89UXqjMmFkbrm81mzndHOYu/aXG7okiNH2r9wctZ2rCUtXwvyUNJBlhjKj46pXpCvjOvxzJXfXLcaoNI/UKvoqBxSJRBmCqdx8Akeevr9xAtljJSH2iIkcm0vZC+LEvOVW3nF5F1ZaKILSf1ycZirKZML1s4IiyGeErAT2vLd19dTDvoGPjaCtWHJ4O01I4AcSdksC1poSBES0gIVTlJQo6szyD8NoLfJ6Lt1k3tB6kPU4O9qe3HoCrauOzBOcLr4ounmkLPsuzCaT/6HAbzfYqS1y+dsKNlfO9t6TcrsizbuBsT6z47O4OPP/7YXA9tGxd3JVpmsxk8fPgQ2u22ux82BtwYo8C6aBlMMXV2dgbr9drdHfv48eMLMrjRaIgZEFKh8W+KzuN3leM9bBb4ZD3N7tBqtWB/fx9arRYAABwfH8NXX321QbeV9ul06oxnrrfG4zE8fvxYrDfk+MfIBLo4St+TPr9arTZ2lT99+hSePXsGn3zyCeR57hb4pJOUdO4D6LvIvwvAcZHu2LU+T+uxPlOr1aDf77tnYhZj6/W6uxsL4HwhHjdtpMKXtSQFRQI2HFUFqq6KwwUQlh+0XBF6McjebDY37HxqA1iCvZbArEZ3mfbTd8H+pigrOLxNXKbPlBowDMEXACkrPkDboYFDjhT/CYOGlGbrs0XAaQ0FXmPfKwVoR+GiFe2bEKgtrgUd8btWqwWr1QqePn0K/X4fjo6OoNVqQaPRgOl0CpPJ5EK7WgDVl7XIGsDDBQsNzWYTVquVu2PcumkvRnYDhG0f2pfWcZH86FAbtO9874DB9BjwuVuVDKRtDAYDODk5cfr+jTfegDzPXaYoBE2/zHnIwicUw+EQfvrTn8L7778PP/nJT+CNN95wJ2dXqxV8/fXXMB6PS3nPUBD6ZdKT0sLGVcZVtbvyPIfxeOwWwTqdDhweHroFMwpJD2n+nHVxKqZPeJ0+Hcx/S11A5L9ZZZLUF2XbDfQ0qcUukOyhFPtYq8fyHGZKWC6X0Gg03EZpGmOhm6xQFuN9xvR9YmkLrZH4fkOZHlqDQb2v0eJ79irKh287QmOkRrmsRjnAdgaX7p6rAiFBRxVGUYcOBZoU1EXwRbbQnX34OVY4UFicVd5GjNIp0mcWQ3wbzqFWbxnvZkGtVttIZUX5ogzlW4bhqckO5B1tESNES0qboXo1AWkdY/oeVoUoOc7UsQo57qF5SvmBntLzBSP45xSEeKfZbMLBwYEre3p6CgAgnnjVMJvN3Pssl0t49uwZNJtN6Ha77lQsAu+IxD7Vxi8UzMDv0ZjDk5iSEzwej+Hp06fuNCRtJwV8bvucFCvoc8izvr7R2uIBLrrrsFarweHhIbTbbW+6P6nPaRnUu8jLACCONX0f6/tLf0tOWJ7nLn0znsSV+ozSSO+D0mQJ7X/LWNL6ywwqa21J/eKjswp9y+vE1HztdnsjQMXp5NjZ2YF2u+0WdjE90WQygcViIW5kwfnOF8RxwxOmR8dTDnQBDe9EDqWbljIb0FMEl+U0aTqiKM9pevJlCs5pCI0Vvjc6+5jRYTabOZ9AOoGV2l4V9RQpq8lDn52DwN3tR0dHAHCehnG1WomL1vhZSvkqBbl8tPLAOOomjU7p7yIow7e2BvKkvy8DVDdSUN1TRh+jfUhldBmLBVLwmP8WW5cEn31B+TzGH6LPxPCN1raFVl/9WlBUigfxtLlWX9ZKE88cI9n/IVkW4ivJNvfZCFIbWE9McLYMlBF/8NHN7RA85c7lvubTULkSmjMWSPan9JmetpLsWby2B2Bz86VFL/p+Rz7BKzpWq5XLSETx1ltvQbfbhbOzM7cYm2Uv0nvHXoMSO8eLIGXMrHbaVUHIbgr58byuKu2J0HMUi8XCnQTH+EGv13OZo0JprRHW8YrxWa3+uCZLaB9x+kJ2cUxch/OAT/ZZoNGCkOSd7304PbG6WXqG1++rD/0q9LuwrNQfNK5H41nS2PH+ln7T+lzqD/7+VGdI7yfBxzchP4ePY4yOkb6X6LLW/W2Gz65OOnKgDbZm4PBnKEFWJgsFpiThU4bjQydDrFGivRs6gQD6PXt4lyTWs1gsLjgbFqMiRrBbnVxLu6koMxgQw2MW+PijaD2+7ykwqIyYz+diAE+6ryAFZRhvUp0UoeCWhG0Ejfj88Rk5aDBaHEm6u4wqNbobnv/NEbrjGZ/BxVirgyvVZYFFJzSbTdjf33dl8cQoptyiNGntzudzF4BdrVZwfHwMu7u7sLe3d4EOTPnoWxDRjBEJWN9sNlPv05lOpxv38PB2aJ+EDH3pM0JzzEKQDCNt7DjPS21yY5QGrG/evHnhVDAvo9FIHTC6AJplGXQ6neTTkhI0Gcd5qdPpwGQyUecTDbhY7oGm/Rarny3zuShS9WaVxjfKvVarBXmeu3mo8ShiZ2cHut2u62s89TKbzdzOWckhkhZ00KnDVMYAm3IJ4DzQIAW+KELz2iKT+DOh9rahNyVQm1Xj95fBSfP1oRSckd6J3m05Go02spnwzSs+xNr3GmL4IrVsSJ/x5wA2fUfchHHjxg0AOM+yQdPSA7zQz4hGo+F8J6mvtAAO/50vhvg2y1n52ho4KWO+hvxmzq+XJSMoDfR/gIt2ahmygtrs0ma9IjEEqz63BCFD9Wl8bIEvYBh6jgeWUmSRZCuE3pvakDzYC3DxLmdaryWWpMGyGOuDj28l+4X7nvhdltlOQ/rsypT3t/qKId9EmmeSzPfVLfknvudDSOkPLqd8cR1tzDD+d3x8bLrSJtRPUv0A53bFcrkU/dbXX38dXnnlFfjpT38KDx8+dN/jxmMrn2vyWgKlP1Q2NDcs/pNkm8WA+2qXqSN5f0jz0joX6XO+uSf1fVEsl0sYDoeuzn6/D+1228W6Q1fRUFh1ZRnQ+pbzP+e5GF61tm2hxQqJr32yGuDchiqrvy08a7WrAF5cEYbp/C0bo33ZNKx9HEOvxhN0bsfaDbHtSb65VbdZZBFHWXM19t2vCjR6vRHNKl8y1cnxQTLOUuqWAkYxBgmtjy6g8hOxFPV6HbrdLiyXywt5zCkwEECDDinvzemwvN/LECyj4ALtZQU6ga1Wyxkmq9UKlsvlhV3dWs77VBSRAWUFk2Lb5JAUnc9x8oH3rXaiMuQsZdmLBRscR7rhgpf1jaV096y1H6pAnudwdnYG3W4Xfvd3fxf6/f6GvHry5Ak8efJkY1ckgCyD8HRalr24a6bRaMBv/dZvwf7+/sai3FdffQUfffQRPHny5EI6WY1ODXinCS7GcLm+s7MD77//PhweHrpUKO12G5rNpgsWYWoUCouTKgUjLc9oTqJV/mE5DHxT8D7EYJTvlCtdnMK+9O1yleqRDODhcLjh7JycnHjT94egtWfpM76xQgu45Pl5qm2aRk0LOCEdNIBjleeXHSioCtgfmFZtsVgE+wP7AU++HhwcwGKxcAGAEHAuYJrC5XIJzWaz8Aany0KM7CmjrRRZdtXtNF8fXoatU8aYxdBdVdnvEui44b2BuBlkvV7D2dkZ5Hle6oYjHy3a31dZl+T5iw3K1N610IsLDFJ2Dakd+r+vHdTtsdcFod+2Xq9dOtx2u+1OavDyPn+Dy4SQH2KhL9ReleCbiqXAPA8iWvp/uVy6De9Zlrn5hwtQZ2dnsLe3t7GZEDfRlD0vLUHF8XgM8/kcdnd33eZVyxUWlBdirkoIBfuxvpQYGdZL5xZmPqD+BM/opPm0Pjtaa5silYclXwHnMv1Oqh8XCWhKTA30NHTMogDACz6n/vPp6Sn8/Oc/h3v37sFrr73mrpDBujBTR7fbBQD/1WgSLDJ1W/KDt3eV6rpKiBmzMiCdup5MJu4O7JBs29Y4cBknyZpYm8lis9N6rAtjEt2xawIhWjhNXC9LPh+1zzSaNHvFFwvyAeNvuJEfM1zRuEGn04E33ngDBoMB3L9//0IdrVZr4yq5lBiThWZpYVR6H03Xxc4DyzNoj15jexCtSj4BUgx5qxNgCX76FtW4oCxD+NBAaMrCLhVGyPhoaHKDGNuq1WruXhQagOXvJU1ciU7LYpDv5F3M+4Zw1QNsGspS9inCkj6H/EFPEGIwQnumrFPcPvh4DPlaMihSjfGQErE6KViPZERpdSDdXMaE5pEv2FWr1dyCFhoNVnAZTWkocj9hLHgfYh9Mp1NoNBpw69Yt6Ha7G4GS4XDo7vfkRhqX5xgw4WlrXnnlFdjb23P9tlwu4fj4GD799FMAuLiLPQZ0LtHTE5S+LMvg9u3bcOvWLXj+/LkL7qHxRjMbaPXHwDJPynQ4eX0xcwm/xwAL1XGUN6Vn6Zhpiw3osEm7GH2BQyu0wBP9h3M1NNdokBDTcUtpsyW9Ljk2/LOEbTiqlrlVpt7HscXgKD11GnpXHCtcyEXaQrQjjy0WCxiNRgDw4jRVKK055+nU8SgrqL4tSPquSppTeV2SL9vqWx/fWMv6yl11HrHC9x6absDnXpaAKdo4aNvT+wEvG0X6UBuDsngT7QtNb2o0UP/DyicxvrWPL0Nt4Ljz7EdS2xZowdzYejRbLBQcTuEf2gaXab60wDF0AbyImaBNiid8cA5Op1Po9XoAsLnZ1SdvLDGX0Hfas3jtQbvddgvHsTZBTHn6vtJz0lzj78F/840H961CdVGE0lNr7fF3iZmzlFY6v7R3lmSIJiuk+A/nP58/RunCf/QE23g8hm+++QZarRbcuHHDxZboffU4F3h7lJZUm7Sobpb6LMYfCcmrWP5JQUhGbJOWIkjhASq7qExfLpewXC5Nm6SwTSmGFwNtnmoxCUtd2nex9cS8j6bbU3nD+pz2fpIMo8+k8LfmR2t2GM1ig/KPbn5pNBpwdHQEtVoNHj165L6ncUa6GIvPWvSZ9Lv1XSUf2ldHiizWbGPans83tvCl5f1T+ogjhbariAvR4qv2IlJKT46URVMOzvC0viKOsS8VI6bN4+1T0BzmACAqKm6cVDGG21b4VoG3bVQd6OHjqPEPvy9LWujH7zUnsipIShOdaUpH7KKhr9+tQt23s1oCBn18dfK6tMABprXEtqSdVvwuJGnsfLTS32hq16rHH4MaeKcrxXw+h+PjYxgMBvDs2TO3sIEnR6UxoYaRtkg9Ho/hn/7pnyDPz9OOnpyciOX47kZaP+9vNN663e4FumazGUynU3dydDAYuMAI38mp8YBGW8jJ9iHFGaY8wVNES46IlYd4YKrRaDiHn5fDIEGoPp6yiPdryuYDqxzHjBX7+/twcHAA0+kUZrMZPHjwAKbT6YVT2xJddFFe44kUB6oMp+u7iuFwCMPh8IIMxvEcjUbuxBoC+fDg4ABarZaT5ZgyeblcQrfbhX6/75w3X4p4DVwmlG1vFAlaVIVU+7VI31CHPba/y7IDMQCKQH3HN3jRE4DSfYmXgSptYT4WOEZoM6DeOD4+3niO2l+Y/rlqObkN+8qHouNQxTj6At60r7bVb5J/gCfvyrjKBW1C6SRNiqxFG5lCW7yRng/FTIospEi2dCgmUQZoMLWMDach+lAWHx4eQr/fh8FgEK3T+UIhhWWM0MbQ+DSlj61jHwqkcxp8fpxVHmjg9gH3l4rIL98YFamP6nDtHTE7Fvc/JVr4aVrpNJpGA8VgMIAPP/wQhsMhnJ6ewu/93u/BG2+8Af/+3/97ePLkCfzX//pf4fT01JW3BNHLQNWxtbLwbQn+S6hSH/Px5dfAoD6OyUBA6yxzHDRe9LVBsziEFhBTFlktv1fBi2Xr8jIW4EJYLpdidjvpSr+DgwP4nd/5HVgsFjCfz+Hhw4fu/my8xxg3yC2XS/e9FLuqWoZVEc/H+q6CT/myInbcpfIb0k4KwlqQ+pylXs4g2s4Aa32h7630Wxz8UF38jiMJNKgv9YfWlmZwW97PtzC9rcma4rzE1KcZmNyR1fo1tr2UsiHhaF0ctJa11mUpJ5XlAc8yeCklCBD7TFmLI/S0pG8DicWJs7TP+1qTnTH87pN1Gq/l+XnqI7zfmJ4qDN2168NqtYLT01OXhkS7x5W+h8+xpL/RRWIaEKcBXkwpL903GQPqiMfC129FdUAZMgMdriLBM2ospura1PI4ZxuNhkvnReeTjy66eALgH19ax7fZIK7SWYmpd7VaifIC68B7ZClwvCkv4IYCajug7CjDBqgCRdsq06bQ6uafq4BWv2UelkUb14F0AxW2QwPPNAB72dBsPJ89kQo6Jthf2hUAfAGb01pVYGmbC7JSEDK1vy+Ll3y6fBuL5mUuCnM7wCJD+HjRcUQb+SrM81hUOSeK2EipeqvZbEK9XofJZLIxNkXakcpo/pclZaB17nNZEfKHYnyF2HkbyycpbcSA1l92/EmDFAeJiTtJfRiiD+/qPDs7g9PTU1gsFlCr1eDu3bvu5HXsO5SBkD1RVp0xzxUZ6zLr2BZS52Rs3fQ7aU5v05ayIjaGhH/z2JgUZ76qqErmISyLzamyGBdjaRxPqguzAsxmM5jNZk7+0fuy0e9A/ywlDhU7t/g7Wp4vMl5VxmYkv9A3j+hzLwNi7HytfJa/LG97jWtc4xrXuMY1rnGNa1zjGte4xjWucY1rXOMa17jGNa5xjWtc4xovEbZ3ueA1rnGNa1zjGte4xjWucY1rXOMa17jGNa5xjWtc4xrXuMY1rnGNa3yHcL0Ye41rXOMa17jGNa5xjWtc4xrXuMY1rnGNa1zjGte4xjWucY1rXOMaFeD/B1pzCcVDFr3SAAAAAElFTkSuQmCC" + }, + "metadata": {}, + "output_type": "display_data" }, { - "attachments": {}, - "cell_type": "markdown", - "id": "766de19f-200c-4dce-8678-b36cc3c3dc93", - "metadata": {}, - "source": [ - "## Next steps\n", - "\n", - "We've only explored the basics of ray tracing here, but you can add shadows,\n", - "reflections and so much more! Fortunately these are explained in [the C++\n", - "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing),\n", - "and we leave the corresponding Mojo implementations as an exercise for you." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Mojo", - "language": "mojo", - "name": "mojo-jupyter-kernel" - }, - "language_info": { - "codemirror_mode": { - "name": "mojo" - }, - "file_extension": ".mojo", - "mimetype": "text/x-mojo", - "name": "mojo" + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] } + ], + "source": [ + "fn cast_ray(\n", + " orig: Vec3f,\n", + " dir: Vec3f,\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + " bg: Image,\n", + ") -> Material:\n", + " var point = Vec3f.zero()\n", + " var material = Material(Vec3f.zero())\n", + " var N = Vec3f.zero()\n", + " if not scene_intersect(orig, dir, spheres, material, point, N):\n", + " # Background\n", + " # Given a direction vector `dir` we need to find a pixel in the image\n", + " var x = dir[0]\n", + " var y = dir[1]\n", + "\n", + " # Now map x from [-1,1] to [0,w-1] and do the same for y.\n", + " var w = bg.width\n", + " var h = bg.height\n", + " var col = int((1.0 + x) * 0.5 * (w - 1))\n", + " var row = int((1.0 + y) * 0.5 * (h - 1))\n", + " return Material(bg.pixels[bg._pos_to_index(row, col)])\n", + "\n", + " var diffuse_light_intensity: Float32 = 0\n", + " var specular_light_intensity: Float32 = 0\n", + " for i in range(lights.size):\n", + " var light_dir = (lights[i].position - point).normalize()\n", + " diffuse_light_intensity += lights[i].intensity * max(light_dir @ N, 0)\n", + " specular_light_intensity += (\n", + " pow(\n", + " max(-reflect(-light_dir, N) @ dir, 0.0),\n", + " material.specular_component,\n", + " )\n", + " * lights[i].intensity\n", + " )\n", + "\n", + " var result = material.color * diffuse_light_intensity * material.albedo.data[\n", + " 0\n", + " ] + Vec3f(\n", + " 1.0, 1.0, 1.0\n", + " ) * specular_light_intensity * material.albedo.data[\n", + " 1\n", + " ]\n", + " var result_max = max(result[0], max(result[1], result[2]))\n", + " # Cap the resulting vector\n", + " if result_max > 1:\n", + " return result * (1.0 / result_max)\n", + " return result\n", + "\n", + "\n", + "fn create_image_with_spheres_and_specular_lights(\n", + " spheres: List[Sphere],\n", + " lights: List[Light],\n", + " height: Int,\n", + " width: Int,\n", + " bg: Image,\n", + ") -> Image:\n", + " var image = Image(height, width)\n", + "\n", + " @parameter\n", + " fn _process_row(row: Int):\n", + " var y = -((Float32(2.0) * row + 1) / height - 1)\n", + " for col in range(width):\n", + " var x = ((Float32(2.0) * col + 1) / width - 1) * width / height\n", + " var dir = Vec3f(x, y, -1).normalize()\n", + " image.set(\n", + " row, col, cast_ray(Vec3f.zero(), dir, spheres, lights, bg).color\n", + " )\n", + "\n", + " parallelize[_process_row](height)\n", + "\n", + " return image\n", + "\n", + "\n", + "var bg = load_image(\"images/background.png\")\n", + "render(\n", + " create_image_with_spheres_and_specular_lights(spheres, lights, H, W, bg)\n", + ")\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "766de19f-200c-4dce-8678-b36cc3c3dc93", + "metadata": {}, + "source": [ + "## Next steps\n", + "\n", + "We've only explored the basics of ray tracing here, but you can add shadows,\n", + "reflections and so much more! Fortunately these are explained in [the C++\n", + "tutorial](https://github.com/ssloy/tinyraytracer/wiki/Part-1:-understandable-raytracing),\n", + "and we leave the corresponding Mojo implementations as an exercise for you." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Mojo", + "language": "mojo", + "name": "mojo-jupyter-kernel" }, - "nbformat": 4, - "nbformat_minor": 5 + "language_info": { + "codemirror_mode": { + "name": "mojo" + }, + "file_extension": ".mojo", + "mimetype": "text/x-mojo", + "name": "mojo" + } + }, + "nbformat": 4, + "nbformat_minor": 5 } From 4645771c62a6644a6947b4b8e9844664f43a69f7 Mon Sep 17 00:00:00 2001 From: modularbot Date: Sun, 8 Dec 2024 06:29:02 +0000 Subject: [PATCH 113/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024120805 --- examples/life/magic.lock | 829 ++++++++++++++++--------------- examples/magic.lock | 730 ++++++++++++++------------- examples/notebooks/magic.lock | 906 ++++++++++++++++++---------------- examples/operators/magic.lock | 730 ++++++++++++++------------- magic.lock | 730 ++++++++++++++------------- 5 files changed, 2032 insertions(+), 1893 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 3326e0e536..78ae0c08bf 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -25,11 +25,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -83,7 +83,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -99,10 +99,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-he8f35ee_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda @@ -146,7 +146,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -171,12 +171,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -237,7 +237,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.9-h0fd0ee4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.4.5-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.7-h3ed165c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.22.0-h08b1b5d_2.conda @@ -274,6 +274,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda @@ -306,11 +307,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -364,7 +365,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -380,10 +381,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.22.5-h87f4aca_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda @@ -427,7 +428,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -452,12 +453,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -518,7 +519,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.9-h636ded1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.4.5-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.7-h2a74887_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.22.0-h680d130_2.conda @@ -555,6 +556,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h57736b2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2024.1-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda @@ -584,11 +586,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -640,7 +642,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -653,10 +655,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda @@ -694,7 +696,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -715,12 +717,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda @@ -779,7 +781,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.4.5-py312he431725_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.7-hf9b8971_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.10-h994913f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.22.0-hda0f12e_2.conda @@ -1563,12 +1565,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a - md5: 1046cf15a47f06a0af07f674e477d807 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb + md5: 98609602eb077c7b5225d3aa1467f789 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1580,16 +1582,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117398 - timestamp: 1733299233564 + size: 117067 + timestamp: 1733565203669 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 - md5: 7d029b9aa9decf4c0fb8a9a8940c9906 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d + md5: a13702b87657cf2d0cdd338fe55f4ba1 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1602,16 +1604,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113660 - timestamp: 1733299194447 + size: 113877 + timestamp: 1733565162763 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 - md5: 02f78a084e101dee30c794f963549de4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 + md5: 1d33c89e2462b6b0056bfb883b76d2fb depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1622,8 +1624,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97136 - timestamp: 1733299356527 + size: 98296 + timestamp: 1733565277623 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1724,15 +1726,14 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h159bff8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 - md5: c498e6490834aacf7835c96403862881 + version: 0.29.7 + build: h6c346da_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 + md5: cf87fc73eee6dbfc12dec79444d5dfc0 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1740,23 +1741,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354822 - timestamp: 1733333950713 + size: 283237 + timestamp: 1733588714381 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h8474b10_2 - build_number: 2 + version: 0.29.7 + build: ha310de4_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba - md5: 54c898f166bcfbe06c2b7ac36360f371 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a + md5: 77769ed013cbf8824c1927407ea03c69 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1766,23 +1767,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 235829 - timestamp: 1733334077172 + size: 236862 + timestamp: 1733588815005 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: hffbb33f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 - md5: fb8be2af168b63e0b77076a1dc6baa85 + version: 0.29.7 + build: ha6b94fc_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca + md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1790,50 +1792,52 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 284031 - timestamp: 1733333955728 + size: 353873 + timestamp: 1733588735223 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h3b64406_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e - md5: 9a8d3ba158ff8ea08e17de366c238706 + build: h5e41cbe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 + md5: 1861b1fb86b336f1f53faaac5a76046c depends: - - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2853609 - timestamp: 1733389337912 + size: 2910575 + timestamp: 1733576378398 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h5558e3c_0 + build: hac138a2_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 - md5: b1919becd17fe224aacf708114231fda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f + md5: bbdd9589b1a32a80b0e3f98a2a482542 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1841,30 +1845,31 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3059100 - timestamp: 1733388777418 + size: 3071464 + timestamp: 1733576251149 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h7085e57_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 - md5: 005e0cc687a2421a4ad493e5b7058abe + build: he4d6490_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a + md5: 2941213b750689ace0862a6d695bb740 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2903434 - timestamp: 1733388870289 + size: 2847256 + timestamp: 1733576733615 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -3163,6 +3168,7 @@ packages: depends: - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 134726 timestamp: 1733493445080 - kind: conda @@ -3646,13 +3652,13 @@ packages: timestamp: 1733501478172 - kind: conda name: huggingface_hub - version: 0.26.3 + version: 0.26.5 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 - md5: 997fc223fbc616c262f2a32a22d433a4 + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 + md5: 37236111cd92068e5af2f98cbb476642 depends: - filelock - fsspec >=2023.5.0 @@ -3664,9 +3670,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274858 - timestamp: 1733170279930 + size: 274900 + timestamp: 1733637007500 - kind: conda name: hyperframe version: 6.0.1 @@ -4165,30 +4170,32 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h5affd47_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 - md5: 3dc73b42851e6096542458eaf2c074ca + build: h3b07799_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d + md5: 27675c7172667268440306533e4928de depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -4197,40 +4204,40 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 5487846 - timestamp: 1733450423101 + license_family: APACHE + size: 8793521 + timestamp: 1733607374384 - kind: conda name: libarrow version: 18.1.0 - build: hb63acf4_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 - md5: d98a11c3ba32554873aeb6a071baceaa + build: h86d57b8_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 + md5: 23431b3fdbb32858d1533da5bc8fcc86 depends: - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -4243,20 +4250,20 @@ packages: - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8048003 - timestamp: 1733452700958 + license_family: APACHE + size: 5482797 + timestamp: 1733605365656 - kind: conda name: libarrow version: 18.1.0 - build: hcf3f2e3_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e - md5: 196823c7752608cb6b5d5a7a33b17410 + build: ha2aff55_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 + md5: c4d60278cb00053df1a4f0600fd2ac2a depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -4282,180 +4289,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8796519 - timestamp: 1733453489520 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 - md5: 6d8f74ac97166e09cdf02109ed9905ce - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - size: 612773 - timestamp: 1733453636002 + license_family: APACHE + size: 8035987 + timestamp: 1733607600970 - kind: conda name: libarrow-acero version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 - md5: f3a050129b5012bd5fc381693f6eb2cd + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d + md5: e4ed6162593fbb01f4d742db4215f70c depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu - libcxx >=18 license: Apache-2.0 - size: 483753 - timestamp: 1733450627207 + license_family: APACHE + size: 483574 + timestamp: 1733605591770 - kind: conda name: libarrow-acero version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a - md5: fa54002b982019ecc0e93cb4b2c493e9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 + md5: d532c42abe13841806d97f4d9cd6dcf5 depends: - - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 578323 - timestamp: 1733452783322 + license_family: APACHE + size: 578174 + timestamp: 1733607685962 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 + build: h8bbc2ab_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 - md5: e9eac639d83b1c35f7743845b922d61a + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d + md5: 82bcbfe424868ce66b5ab986999f534d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - size: 585416 - timestamp: 1733454137952 + license_family: APACHE + size: 610772 + timestamp: 1733607505368 - kind: conda name: libarrow-dataset version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 - md5: 8c57e5a50f865a16cafd92f5a32c9faa + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb + md5: bb940b4c583e4c8e5a9f193fabdb5840 depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu - libcxx >=18 - - libparquet 18.1.0 h3a603ae_3_cpu + - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 - size: 489900 - timestamp: 1733452479126 + license_family: APACHE + size: 489457 + timestamp: 1733607417337 - kind: conda name: libarrow-dataset version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff - md5: 048f04da68a40e9e5e1e66ff9502b237 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f + md5: 1a6c409f45857d30f581a1a53abb2298 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu - libgcc >=13 - - libparquet 18.1.0 h553aec1_3_cpu + - libparquet 18.1.0 h34a048e_4_cpu - libstdcxx >=13 license: Apache-2.0 - size: 559844 - timestamp: 1733453065157 + license_family: APACHE + size: 561495 + timestamp: 1733607973097 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 + md5: fa31464c75b20c2f3ac8fc758e034887 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libgcc >=13 + - libparquet 18.1.0 hf4f6db6_4_cpu + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 585517 + timestamp: 1733607943984 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h4c1644f_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 - md5: 7ba2783c26a0008307e2a1e637c2930f + build: h3644d33_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c + md5: ce3062cd5caa0bdafa7976535862e648 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu - - libarrow-dataset 18.1.0 haafc02e_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - size: 451428 - timestamp: 1733453012619 + license_family: APACHE + size: 513745 + timestamp: 1733608111290 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h56a123c_3_cpu - build_number: 3 + build: had74209_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d - md5: 306bb541b83a83b66d5c1e6880302886 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 + md5: bf261e5fa25ce4acc11a80bdc73b88b2 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu - - libarrow-dataset 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 520740 - timestamp: 1733454379083 + license_family: APACHE + size: 519919 + timestamp: 1733608152065 - kind: conda name: libarrow-substrait version: 18.1.0 - build: hc52ba39_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 - md5: 7a8e305f1689687ed063bb4553c1a7a5 + build: hf3d3107_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 + md5: c093b05dc6d1b6057342d3dd6f3bd0d8 depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu - - libarrow-dataset 18.1.0 he2e0623_3_cpu - - libgcc >=13 + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - size: 515638 - timestamp: 1733453200561 + license_family: APACHE + size: 451982 + timestamp: 1733607898511 - kind: conda name: libasprintf version: 0.22.5 @@ -6529,58 +6546,61 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h3a603ae_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d - md5: 78d2f729e26788a3660cee9906f440e7 + build: h34a048e_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 + md5: 46db27c16b29f48a37a40e3b2c9dcfe3 depends: - - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 873697 - timestamp: 1733452286970 + license_family: APACHE + size: 1117278 + timestamp: 1733607904359 - kind: conda name: libparquet version: 18.1.0 - build: h553aec1_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b - md5: 46c6783e8b46449a9baabef57c69f30a + build: hf4cc9e7_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d + md5: b462d962b5254923c5f65ce1c68dfc17 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1116941 - timestamp: 1733452997475 + license_family: APACHE + size: 873584 + timestamp: 1733607239103 - kind: conda name: libparquet version: 18.1.0 - build: hbdb145b_3_cpu - build_number: 3 + build: hf4f6db6_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 - md5: cb249762e1e65941b559d436c60e520d + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 + md5: f18b10bf19bb384183f2aa546e9f6f0a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1204740 - timestamp: 1733454014411 + license_family: APACHE + size: 1204859 + timestamp: 1733607834047 - kind: conda name: libpng version: 1.6.44 @@ -7695,76 +7715,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 - md5: d880e434f1f61e9f7fe35eb5af426762 - depends: - - max-core ==24.6.0.dev2024120705 release - - max-python >=24.6.0.dev2024120705,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120705 release - - mblack ==24.6.0.dev2024120705 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d + md5: d41647f3009da6fe575321d46a741dfa + depends: + - max-core ==24.6.0.dev2024120805 release + - max-python >=24.6.0.dev2024120805,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120805 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733548613215 + size: 9916 + timestamp: 1733635043550 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae - md5: 210eb01e2dc1c01b03d2a817457b895d + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 + md5: 620d81f38c5da882ee0799e26d86b0ad depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247471356 - timestamp: 1733548812210 + size: 247607615 + timestamp: 1733634983707 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 - md5: c036e06aec88105f116ac9b6bfff8720 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 + md5: 6e7e581fe4e11d252e8729a6cc564b29 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251342975 - timestamp: 1733548613213 + size: 251457302 + timestamp: 1733635043548 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd - md5: 55c2f32ca83e4e21f8ddb5185c8cd263 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 + md5: 04d8f67fb1a7deb6147da14b60f668d3 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211936941 - timestamp: 1733548831297 + size: 212001315 + timestamp: 1733635167877 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b - md5: 9b5d9f4c3ce3cd860772c00f7d98e059 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f + md5: bf821eea63859972e28ce4635cff7dda depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -7786,18 +7806,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123682860 - timestamp: 1733548812221 + size: 123750844 + timestamp: 1733634983717 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e - md5: 54e13a8164032866ff1f243f931b4ab3 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 + md5: 5711b879e00dae9d692d6cf0bcad3717 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -7819,18 +7839,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127403239 - timestamp: 1733548613224 + size: 127399399 + timestamp: 1733635043558 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 - md5: a4867e539c3f8c25297d0d695b6848b8 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb + md5: 8737c1d7ff7f04e887c4d80139e2a273 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -7852,17 +7872,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112378959 - timestamp: 1733548831301 + size: 112431285 + timestamp: 1733635167881 - kind: conda name: mblack - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 - md5: b801385ef3cbed6f7415ddf938dc182e + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a + md5: 8a48ed658740aaf0063c754fd35e9cce depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7872,8 +7892,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130737 - timestamp: 1733548613220 + size: 130744 + timestamp: 1733635043555 - kind: conda name: mdurl version: 0.1.2 @@ -7892,21 +7912,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 - md5: ce9ee67733d1ab8c43031b67b475dba8 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd + md5: ad285352ec9e9061d8facbf62f708d9d depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11370 - timestamp: 1733548613220 + size: 11369 + timestamp: 1733635043556 - kind: conda name: mpg123 version: 1.32.9 @@ -10263,53 +10283,55 @@ packages: timestamp: 1725632294079 - kind: conda name: sdl2 - version: 2.30.7 - build: h2a74887_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.7-h2a74887_0.conda - sha256: 6c21954d98a915d7617c0944440167e5ac695117ca7410f37eea4af0a9f0821c - md5: 719245709dd47dbc3f93ce85fa544f43 + version: 2.30.10 + build: h63c27ac_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.10-h63c27ac_0.conda + sha256: 639325326d51cd70f56a55ffd3c1fa778e61751f16d66d0baea155375f1a139c + md5: 5cecf6d327e4f8c5dfafc71b4a8556e7 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - pulseaudio-client >=17.0,<17.1.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 license: Zlib - size: 1317383 - timestamp: 1725255076176 + size: 1352990 + timestamp: 1733624788165 - kind: conda name: sdl2 - version: 2.30.7 - build: h3ed165c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.30.7-h3ed165c_0.conda - sha256: 80691a3ce313f0f7908480c0af216520d655e9480e036feb489c2095ad37950a - md5: be75875082c99c7a9f9fe930a1bd2bb1 + version: 2.30.10 + build: h93e764a_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.30.10-h93e764a_0.conda + sha256: 8f03f2abcb4227e95d19b28124e0a5428f634b084b92ab91f3af7c825b626403 + md5: bcbf24da778bbdd20b09cf6ed52cefc2 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - pulseaudio-client >=17.0,<17.1.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 license: Zlib - size: 1391142 - timestamp: 1725255009793 + size: 1277076 + timestamp: 1733624829558 - kind: conda name: sdl2 - version: 2.30.7 - build: hf9b8971_0 + version: 2.30.10 + build: h994913f_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.7-hf9b8971_0.conda - sha256: d86b4f39c09efb6febd5e2e5a2c0894c82f7ac4b8b4aebb24e4fbd9acf797d60 - md5: 33f5451441cbc0ce083b3d37c181519e + url: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.30.10-h994913f_0.conda + sha256: 7ff3167b6482c5fe7389c6c1836343c280a0eeb160524888e661f0f991708bd8 + md5: 4001ae6f1b1886583e82ab0dac5b575b depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 license: Zlib - size: 1256184 - timestamp: 1725254933792 + size: 1251116 + timestamp: 1733624861414 - kind: conda name: sdl2_image version: 2.8.2 @@ -11505,6 +11527,37 @@ packages: license_family: MIT size: 50060 timestamp: 1727752228921 +- kind: conda + name: xorg-libxfixes + version: 6.0.1 + build: h57736b2_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda + sha256: f5c71e0555681a82a65c483374b91d91b2cb9a9903b3a22ddc00f36719fce549 + md5: 78f8715c002cc66991d7c11e3cf66039 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + license: MIT + license_family: MIT + size: 20289 + timestamp: 1727796500830 +- kind: conda + name: xorg-libxfixes + version: 6.0.1 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + sha256: 2fef37e660985794617716eb915865ce157004a4d567ed35ec16514960ae9271 + md5: 4bdb303603e9821baf5fe5fdff1dc8f8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + license: MIT + license_family: MIT + size: 19575 + timestamp: 1727794961233 - kind: conda name: xorg-libxrender version: 0.9.11 diff --git a/examples/magic.lock b/examples/magic.lock index 650f02f9b3..f1671e6345 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -22,11 +22,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py311h459d7ec_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -239,11 +239,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -281,7 +281,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -295,10 +295,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -327,7 +327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -349,12 +349,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py311hcd402e7_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -456,11 +456,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -498,7 +498,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -510,10 +510,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -539,7 +539,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -558,12 +558,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py311heffc1b2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -1288,12 +1288,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a - md5: 1046cf15a47f06a0af07f674e477d807 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb + md5: 98609602eb077c7b5225d3aa1467f789 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1305,16 +1305,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117398 - timestamp: 1733299233564 + size: 117067 + timestamp: 1733565203669 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 - md5: 7d029b9aa9decf4c0fb8a9a8940c9906 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d + md5: a13702b87657cf2d0cdd338fe55f4ba1 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1327,16 +1327,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113660 - timestamp: 1733299194447 + size: 113877 + timestamp: 1733565162763 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 - md5: 02f78a084e101dee30c794f963549de4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 + md5: 1d33c89e2462b6b0056bfb883b76d2fb depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1347,8 +1347,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97136 - timestamp: 1733299356527 + size: 98296 + timestamp: 1733565277623 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1449,15 +1449,14 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h159bff8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 - md5: c498e6490834aacf7835c96403862881 + version: 0.29.7 + build: h6c346da_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 + md5: cf87fc73eee6dbfc12dec79444d5dfc0 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1465,23 +1464,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354822 - timestamp: 1733333950713 + size: 283237 + timestamp: 1733588714381 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h8474b10_2 - build_number: 2 + version: 0.29.7 + build: ha310de4_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba - md5: 54c898f166bcfbe06c2b7ac36360f371 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a + md5: 77769ed013cbf8824c1927407ea03c69 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1491,23 +1490,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 235829 - timestamp: 1733334077172 + size: 236862 + timestamp: 1733588815005 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: hffbb33f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 - md5: fb8be2af168b63e0b77076a1dc6baa85 + version: 0.29.7 + build: ha6b94fc_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca + md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1515,50 +1515,52 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 284031 - timestamp: 1733333955728 + size: 353873 + timestamp: 1733588735223 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h3b64406_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e - md5: 9a8d3ba158ff8ea08e17de366c238706 + build: h5e41cbe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 + md5: 1861b1fb86b336f1f53faaac5a76046c depends: - - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2853609 - timestamp: 1733389337912 + size: 2910575 + timestamp: 1733576378398 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h5558e3c_0 + build: hac138a2_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 - md5: b1919becd17fe224aacf708114231fda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f + md5: bbdd9589b1a32a80b0e3f98a2a482542 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1566,30 +1568,31 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3059100 - timestamp: 1733388777418 + size: 3071464 + timestamp: 1733576251149 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h7085e57_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 - md5: 005e0cc687a2421a4ad493e5b7058abe + build: he4d6490_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a + md5: 2941213b750689ace0862a6d695bb740 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2903434 - timestamp: 1733388870289 + size: 2847256 + timestamp: 1733576733615 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2488,6 +2491,7 @@ packages: depends: - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 134726 timestamp: 1733493445080 - kind: conda @@ -2748,13 +2752,13 @@ packages: timestamp: 1733501478172 - kind: conda name: huggingface_hub - version: 0.26.3 + version: 0.26.5 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 - md5: 997fc223fbc616c262f2a32a22d433a4 + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 + md5: 37236111cd92068e5af2f98cbb476642 depends: - filelock - fsspec >=2023.5.0 @@ -2766,9 +2770,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274858 - timestamp: 1733170279930 + size: 274900 + timestamp: 1733637007500 - kind: conda name: hyperframe version: 6.0.1 @@ -3170,30 +3173,32 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h5affd47_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 - md5: 3dc73b42851e6096542458eaf2c074ca + build: h3b07799_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d + md5: 27675c7172667268440306533e4928de depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3202,40 +3207,40 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 5487846 - timestamp: 1733450423101 + license_family: APACHE + size: 8793521 + timestamp: 1733607374384 - kind: conda name: libarrow version: 18.1.0 - build: hb63acf4_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 - md5: d98a11c3ba32554873aeb6a071baceaa + build: h86d57b8_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 + md5: 23431b3fdbb32858d1533da5bc8fcc86 depends: - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3248,20 +3253,20 @@ packages: - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8048003 - timestamp: 1733452700958 + license_family: APACHE + size: 5482797 + timestamp: 1733605365656 - kind: conda name: libarrow version: 18.1.0 - build: hcf3f2e3_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e - md5: 196823c7752608cb6b5d5a7a33b17410 + build: ha2aff55_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 + md5: c4d60278cb00053df1a4f0600fd2ac2a depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3287,180 +3292,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8796519 - timestamp: 1733453489520 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 - md5: 6d8f74ac97166e09cdf02109ed9905ce - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - size: 612773 - timestamp: 1733453636002 + license_family: APACHE + size: 8035987 + timestamp: 1733607600970 - kind: conda name: libarrow-acero version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 - md5: f3a050129b5012bd5fc381693f6eb2cd + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d + md5: e4ed6162593fbb01f4d742db4215f70c depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu - libcxx >=18 license: Apache-2.0 - size: 483753 - timestamp: 1733450627207 + license_family: APACHE + size: 483574 + timestamp: 1733605591770 - kind: conda name: libarrow-acero version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a - md5: fa54002b982019ecc0e93cb4b2c493e9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 + md5: d532c42abe13841806d97f4d9cd6dcf5 depends: - - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 578323 - timestamp: 1733452783322 + license_family: APACHE + size: 578174 + timestamp: 1733607685962 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 + build: h8bbc2ab_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 - md5: e9eac639d83b1c35f7743845b922d61a + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d + md5: 82bcbfe424868ce66b5ab986999f534d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - size: 585416 - timestamp: 1733454137952 + license_family: APACHE + size: 610772 + timestamp: 1733607505368 - kind: conda name: libarrow-dataset version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 - md5: 8c57e5a50f865a16cafd92f5a32c9faa + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb + md5: bb940b4c583e4c8e5a9f193fabdb5840 depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu - libcxx >=18 - - libparquet 18.1.0 h3a603ae_3_cpu + - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 - size: 489900 - timestamp: 1733452479126 + license_family: APACHE + size: 489457 + timestamp: 1733607417337 - kind: conda name: libarrow-dataset version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff - md5: 048f04da68a40e9e5e1e66ff9502b237 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f + md5: 1a6c409f45857d30f581a1a53abb2298 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu - libgcc >=13 - - libparquet 18.1.0 h553aec1_3_cpu + - libparquet 18.1.0 h34a048e_4_cpu - libstdcxx >=13 license: Apache-2.0 - size: 559844 - timestamp: 1733453065157 + license_family: APACHE + size: 561495 + timestamp: 1733607973097 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 + md5: fa31464c75b20c2f3ac8fc758e034887 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libgcc >=13 + - libparquet 18.1.0 hf4f6db6_4_cpu + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 585517 + timestamp: 1733607943984 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h4c1644f_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 - md5: 7ba2783c26a0008307e2a1e637c2930f + build: h3644d33_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c + md5: ce3062cd5caa0bdafa7976535862e648 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu - - libarrow-dataset 18.1.0 haafc02e_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - size: 451428 - timestamp: 1733453012619 + license_family: APACHE + size: 513745 + timestamp: 1733608111290 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h56a123c_3_cpu - build_number: 3 + build: had74209_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d - md5: 306bb541b83a83b66d5c1e6880302886 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 + md5: bf261e5fa25ce4acc11a80bdc73b88b2 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu - - libarrow-dataset 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 520740 - timestamp: 1733454379083 + license_family: APACHE + size: 519919 + timestamp: 1733608152065 - kind: conda name: libarrow-substrait version: 18.1.0 - build: hc52ba39_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 - md5: 7a8e305f1689687ed063bb4553c1a7a5 + build: hf3d3107_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 + md5: c093b05dc6d1b6057342d3dd6f3bd0d8 depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu - - libarrow-dataset 18.1.0 he2e0623_3_cpu - - libgcc >=13 + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - size: 515638 - timestamp: 1733453200561 + license_family: APACHE + size: 451982 + timestamp: 1733607898511 - kind: conda name: libblas version: 3.9.0 @@ -4858,58 +4873,61 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h3a603ae_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d - md5: 78d2f729e26788a3660cee9906f440e7 + build: h34a048e_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 + md5: 46db27c16b29f48a37a40e3b2c9dcfe3 depends: - - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 873697 - timestamp: 1733452286970 + license_family: APACHE + size: 1117278 + timestamp: 1733607904359 - kind: conda name: libparquet version: 18.1.0 - build: h553aec1_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b - md5: 46c6783e8b46449a9baabef57c69f30a + build: hf4cc9e7_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d + md5: b462d962b5254923c5f65ce1c68dfc17 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1116941 - timestamp: 1733452997475 + license_family: APACHE + size: 873584 + timestamp: 1733607239103 - kind: conda name: libparquet version: 18.1.0 - build: hbdb145b_3_cpu - build_number: 3 + build: hf4f6db6_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 - md5: cb249762e1e65941b559d436c60e520d + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 + md5: f18b10bf19bb384183f2aa546e9f6f0a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1204740 - timestamp: 1733454014411 + license_family: APACHE + size: 1204859 + timestamp: 1733607834047 - kind: conda name: libpng version: 1.6.44 @@ -5876,76 +5894,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 - md5: d880e434f1f61e9f7fe35eb5af426762 - depends: - - max-core ==24.6.0.dev2024120705 release - - max-python >=24.6.0.dev2024120705,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120705 release - - mblack ==24.6.0.dev2024120705 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d + md5: d41647f3009da6fe575321d46a741dfa + depends: + - max-core ==24.6.0.dev2024120805 release + - max-python >=24.6.0.dev2024120805,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120805 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733548613215 + size: 9916 + timestamp: 1733635043550 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae - md5: 210eb01e2dc1c01b03d2a817457b895d + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 + md5: 620d81f38c5da882ee0799e26d86b0ad depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247471356 - timestamp: 1733548812210 + size: 247607615 + timestamp: 1733634983707 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 - md5: c036e06aec88105f116ac9b6bfff8720 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 + md5: 6e7e581fe4e11d252e8729a6cc564b29 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251342975 - timestamp: 1733548613213 + size: 251457302 + timestamp: 1733635043548 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd - md5: 55c2f32ca83e4e21f8ddb5185c8cd263 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 + md5: 04d8f67fb1a7deb6147da14b60f668d3 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211936941 - timestamp: 1733548831297 + size: 212001315 + timestamp: 1733635167877 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.11release.conda - sha256: 21048c18d9b0e6aaaaabdbfa125e20f9555be811ea88c1a614fc00a8825d5969 - md5: 698eb0317cf8b0bffdf28220d595358f + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.11release.conda + sha256: a2b71b73a181572fa5c954f5600f8718fa95c939374729ae835752f075b27a34 + md5: 5c5cc7463dcab80905f85cb8b3246055 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.11.* - pillow - fastapi @@ -5967,18 +5985,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123717970 - timestamp: 1733548812218 + size: 123756323 + timestamp: 1733634983714 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.11release.conda - sha256: 9e288a0e29839fbf4ad9c88e94828aab7a5002328dd4599c5883810977753a8b - md5: ead33ec6ccac667a98a9ef337cdd9c10 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.11release.conda + sha256: 46477a954b3fc2a03aa40af8eea834628b1e7d9f4267d41512248cea7c8cbfd6 + md5: d3607aaaa6f5188f221c71153d71fdaa depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.11.* - pillow - fastapi @@ -6000,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127368506 - timestamp: 1733548613221 + size: 127450091 + timestamp: 1733635043556 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.11release.conda - sha256: cf30ebcc9843242a9a2090366b219b1d8bf36c06623841bd1d83453f4beaf01a - md5: 371383929a69fe93ef3e336e144d3661 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.11release.conda + sha256: f58dd3d9dec6f7470e64cec203d725efbc2e425b7f9953968f9a0a83f012a606 + md5: 34e265181bb66843e853f6cef005419d depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.11.* - pillow - fastapi @@ -6033,17 +6051,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112384807 - timestamp: 1733548831300 + size: 112446830 + timestamp: 1733635167880 - kind: conda name: mblack - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 - md5: b801385ef3cbed6f7415ddf938dc182e + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a + md5: 8a48ed658740aaf0063c754fd35e9cce depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6053,8 +6071,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130737 - timestamp: 1733548613220 + size: 130744 + timestamp: 1733635043555 - kind: conda name: mdurl version: 0.1.2 @@ -6073,21 +6091,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 - md5: ce9ee67733d1ab8c43031b67b475dba8 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd + md5: ad285352ec9e9061d8facbf62f708d9d depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11370 - timestamp: 1733548613220 + size: 11369 + timestamp: 1733635043556 - kind: conda name: multidict version: 6.1.0 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 5192892142..2a552de926 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -15,9 +15,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda @@ -27,11 +27,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda @@ -81,7 +81,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -104,17 +104,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -143,7 +143,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -166,13 +166,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -212,7 +212,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda @@ -239,7 +239,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.3-py312h12e396e_0.conda @@ -253,7 +253,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -267,7 +267,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -303,9 +303,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda @@ -315,11 +315,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -352,7 +352,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda @@ -369,7 +369,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -393,17 +393,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -432,7 +432,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -455,13 +455,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -501,7 +501,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-18.1.0-py312h8025657_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-18.1.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda @@ -528,7 +528,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.3-py312ha4e36d7_0.conda @@ -542,7 +542,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -556,7 +556,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -592,9 +592,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-21.2.0-py312h024a12e_5.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda @@ -604,11 +604,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -641,7 +641,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda @@ -658,7 +658,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -682,15 +682,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -716,7 +716,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -736,13 +736,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -782,7 +782,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.0-py312h0bf5046_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-18.1.0-py312h1f38498_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-18.1.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda @@ -811,7 +811,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.3-py312hcd83bfe_0.conda @@ -824,7 +824,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -838,7 +838,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda @@ -1152,20 +1152,21 @@ packages: - kind: conda name: arrow version: 1.3.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_0.conda - sha256: ff49825c7f9e29e09afa6284300810e7a8640d621740efb47c4541f4dc4969db - md5: b77d8c2313158e6e461ca0efb1c2c508 + url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + sha256: c4b0bdb3d5dee50b60db92f99da3e4c524d5240aafc0a5fcc15e45ae2d1a3cd1 + md5: 46b53236fdd990271b03c3978d4218a9 depends: - - python >=3.8 + - python >=3.9 - python-dateutil >=2.7.0 - types-python-dateutil >=2.8.10 license: Apache-2.0 license_family: Apache - size: 100096 - timestamp: 1696129131844 + size: 99951 + timestamp: 1733584345583 - kind: conda name: asttokens version: 3.0.0 @@ -1187,19 +1188,20 @@ packages: - kind: conda name: async-lru version: 2.0.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_0.conda - sha256: 7ed83731979fe5b046c157730e50af0e24454468bbba1ed8fc1a3107db5d7518 - md5: 3d081de3a6ea9f894bbb585e8e3a4dcb + url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda + sha256: 344157f396dfdc929d1dff8fe010abe173cd168d22a56648583e616495f2929e + md5: 40c673c7d585623b8f1ee650c8734eb6 depends: - - python >=3.8 + - python >=3.9 - typing_extensions >=4.0.0 license: MIT license_family: MIT - size: 15342 - timestamp: 1690563152778 + size: 15318 + timestamp: 1733584388228 - kind: conda name: attrs version: 24.2.0 @@ -1648,12 +1650,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a - md5: 1046cf15a47f06a0af07f674e477d807 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb + md5: 98609602eb077c7b5225d3aa1467f789 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1665,16 +1667,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117398 - timestamp: 1733299233564 + size: 117067 + timestamp: 1733565203669 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 - md5: 7d029b9aa9decf4c0fb8a9a8940c9906 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d + md5: a13702b87657cf2d0cdd338fe55f4ba1 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1687,16 +1689,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113660 - timestamp: 1733299194447 + size: 113877 + timestamp: 1733565162763 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 - md5: 02f78a084e101dee30c794f963549de4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 + md5: 1d33c89e2462b6b0056bfb883b76d2fb depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1707,8 +1709,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97136 - timestamp: 1733299356527 + size: 98296 + timestamp: 1733565277623 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1809,15 +1811,14 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h159bff8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 - md5: c498e6490834aacf7835c96403862881 + version: 0.29.7 + build: h6c346da_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 + md5: cf87fc73eee6dbfc12dec79444d5dfc0 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1825,23 +1826,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354822 - timestamp: 1733333950713 + size: 283237 + timestamp: 1733588714381 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h8474b10_2 - build_number: 2 + version: 0.29.7 + build: ha310de4_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba - md5: 54c898f166bcfbe06c2b7ac36360f371 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a + md5: 77769ed013cbf8824c1927407ea03c69 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1851,23 +1852,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 235829 - timestamp: 1733334077172 + size: 236862 + timestamp: 1733588815005 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: hffbb33f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 - md5: fb8be2af168b63e0b77076a1dc6baa85 + version: 0.29.7 + build: ha6b94fc_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca + md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1875,50 +1877,52 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 284031 - timestamp: 1733333955728 + size: 353873 + timestamp: 1733588735223 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h3b64406_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e - md5: 9a8d3ba158ff8ea08e17de366c238706 + build: h5e41cbe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 + md5: 1861b1fb86b336f1f53faaac5a76046c depends: - - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2853609 - timestamp: 1733389337912 + size: 2910575 + timestamp: 1733576378398 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h5558e3c_0 + build: hac138a2_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 - md5: b1919becd17fe224aacf708114231fda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f + md5: bbdd9589b1a32a80b0e3f98a2a482542 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1926,30 +1930,31 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3059100 - timestamp: 1733388777418 + size: 3071464 + timestamp: 1733576251149 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h7085e57_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 - md5: 005e0cc687a2421a4ad493e5b7058abe + build: he4d6490_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a + md5: 2941213b750689ace0862a6d695bb740 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2903434 - timestamp: 1733388870289 + size: 2847256 + timestamp: 1733576733615 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2884,18 +2889,19 @@ packages: - kind: conda name: executing version: 2.1.0 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_0.conda - sha256: a52d7516e2e11d3eb10908e10d3eb3f8ef267fea99ed9b09d52d96c4db3441b8 - md5: d0441db20c827c11721889a241df1220 + url: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + sha256: 28d25ea375ebab4bf7479228f8430db20986187b04999136ff5c722ebd32eb60 + md5: ef8b5fca76806159fc25b4f48d8737eb depends: - - python >=2.7 + - python >=3.9 license: MIT license_family: MIT - size: 28337 - timestamp: 1725214501850 + size: 28348 + timestamp: 1733569440265 - kind: conda name: fastapi version: 0.115.6 @@ -3081,6 +3087,7 @@ packages: depends: - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 134726 timestamp: 1733493445080 - kind: conda @@ -3341,13 +3348,13 @@ packages: timestamp: 1733501478172 - kind: conda name: huggingface_hub - version: 0.26.3 + version: 0.26.5 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 - md5: 997fc223fbc616c262f2a32a22d433a4 + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 + md5: 37236111cd92068e5af2f98cbb476642 depends: - filelock - fsspec >=2023.5.0 @@ -3359,9 +3366,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274858 - timestamp: 1733170279930 + size: 274900 + timestamp: 1733637007500 - kind: conda name: hyperframe version: 6.0.1 @@ -3556,6 +3562,7 @@ packages: - arrow >=0.15.0 - python >=3.9 license: MIT + license_family: MIT size: 19832 timestamp: 1733493720346 - kind: conda @@ -3676,6 +3683,7 @@ packages: - referencing >=0.28.4 - rpds-py >=0.7.1 license: MIT + license_family: MIT size: 74256 timestamp: 1733472818764 - kind: conda @@ -3692,6 +3700,7 @@ packages: - python >=3.9 - referencing >=0.31.0 license: MIT + license_family: MIT size: 16170 timestamp: 1733493624968 - kind: conda @@ -3715,6 +3724,7 @@ packages: - uri-template - webcolors >=24.6.0 license: MIT + license_family: MIT size: 7135 timestamp: 1733472820035 - kind: conda @@ -3847,6 +3857,7 @@ packages: - python >=3.9 - terminado >=0.8.3 license: BSD-3-Clause + license_family: BSD size: 19711 timestamp: 1733428049134 - kind: conda @@ -3901,12 +3912,13 @@ packages: - kind: conda name: jupyterlab_server version: 2.27.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_0.conda - sha256: a23b26d1a35bccdb91b9232119e5f402624e1e1a252b0e64cc20c6eb5b87cefb - md5: af8239bf1ba7e8c69b689f780f653488 + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + sha256: d03d0b7e23fa56d322993bc9786b3a43b88ccc26e58b77c756619a921ab30e86 + md5: 9dc4b2b0f41f0de41d27f3293e319357 depends: - babel >=2.10 - importlib-metadata >=4.8.3 @@ -3915,14 +3927,14 @@ packages: - jsonschema >=4.18 - jupyter_server >=1.21,<3 - packaging >=21.3 - - python >=3.8 + - python >=3.9 - requests >=2.31 constrains: - openapi-core >=0.18.0,<0.19.0 license: BSD-3-Clause license_family: BSD - size: 49355 - timestamp: 1721163412436 + size: 49449 + timestamp: 1733599666357 - kind: conda name: keyutils version: 1.6.1 @@ -4189,30 +4201,32 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h5affd47_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 - md5: 3dc73b42851e6096542458eaf2c074ca + build: h3b07799_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d + md5: 27675c7172667268440306533e4928de depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -4221,40 +4235,40 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 5487846 - timestamp: 1733450423101 + license_family: APACHE + size: 8793521 + timestamp: 1733607374384 - kind: conda name: libarrow version: 18.1.0 - build: hb63acf4_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 - md5: d98a11c3ba32554873aeb6a071baceaa + build: h86d57b8_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 + md5: 23431b3fdbb32858d1533da5bc8fcc86 depends: - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -4267,20 +4281,20 @@ packages: - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8048003 - timestamp: 1733452700958 + license_family: APACHE + size: 5482797 + timestamp: 1733605365656 - kind: conda name: libarrow version: 18.1.0 - build: hcf3f2e3_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e - md5: 196823c7752608cb6b5d5a7a33b17410 + build: ha2aff55_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 + md5: c4d60278cb00053df1a4f0600fd2ac2a depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -4306,180 +4320,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8796519 - timestamp: 1733453489520 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 - md5: 6d8f74ac97166e09cdf02109ed9905ce - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - size: 612773 - timestamp: 1733453636002 + license_family: APACHE + size: 8035987 + timestamp: 1733607600970 - kind: conda name: libarrow-acero version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 - md5: f3a050129b5012bd5fc381693f6eb2cd + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d + md5: e4ed6162593fbb01f4d742db4215f70c depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu - libcxx >=18 license: Apache-2.0 - size: 483753 - timestamp: 1733450627207 + license_family: APACHE + size: 483574 + timestamp: 1733605591770 - kind: conda name: libarrow-acero version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a - md5: fa54002b982019ecc0e93cb4b2c493e9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 + md5: d532c42abe13841806d97f4d9cd6dcf5 depends: - - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 578323 - timestamp: 1733452783322 + license_family: APACHE + size: 578174 + timestamp: 1733607685962 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 + build: h8bbc2ab_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 - md5: e9eac639d83b1c35f7743845b922d61a + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d + md5: 82bcbfe424868ce66b5ab986999f534d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - size: 585416 - timestamp: 1733454137952 + license_family: APACHE + size: 610772 + timestamp: 1733607505368 - kind: conda name: libarrow-dataset version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 - md5: 8c57e5a50f865a16cafd92f5a32c9faa + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb + md5: bb940b4c583e4c8e5a9f193fabdb5840 depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu - libcxx >=18 - - libparquet 18.1.0 h3a603ae_3_cpu + - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 - size: 489900 - timestamp: 1733452479126 + license_family: APACHE + size: 489457 + timestamp: 1733607417337 - kind: conda name: libarrow-dataset version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff - md5: 048f04da68a40e9e5e1e66ff9502b237 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f + md5: 1a6c409f45857d30f581a1a53abb2298 + depends: + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libgcc >=13 + - libparquet 18.1.0 h34a048e_4_cpu + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 561495 + timestamp: 1733607973097 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 + md5: fa31464c75b20c2f3ac8fc758e034887 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - - libparquet 18.1.0 h553aec1_3_cpu + - libparquet 18.1.0 hf4f6db6_4_cpu - libstdcxx >=13 license: Apache-2.0 - size: 559844 - timestamp: 1733453065157 + license_family: APACHE + size: 585517 + timestamp: 1733607943984 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h4c1644f_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 - md5: 7ba2783c26a0008307e2a1e637c2930f + build: h3644d33_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c + md5: ce3062cd5caa0bdafa7976535862e648 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu - - libarrow-dataset 18.1.0 haafc02e_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - size: 451428 - timestamp: 1733453012619 + license_family: APACHE + size: 513745 + timestamp: 1733608111290 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h56a123c_3_cpu - build_number: 3 + build: had74209_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d - md5: 306bb541b83a83b66d5c1e6880302886 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 + md5: bf261e5fa25ce4acc11a80bdc73b88b2 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu - - libarrow-dataset 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 520740 - timestamp: 1733454379083 + license_family: APACHE + size: 519919 + timestamp: 1733608152065 - kind: conda name: libarrow-substrait version: 18.1.0 - build: hc52ba39_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 - md5: 7a8e305f1689687ed063bb4553c1a7a5 + build: hf3d3107_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 + md5: c093b05dc6d1b6057342d3dd6f3bd0d8 depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu - - libarrow-dataset 18.1.0 he2e0623_3_cpu - - libgcc >=13 + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - size: 515638 - timestamp: 1733453200561 + license_family: APACHE + size: 451982 + timestamp: 1733607898511 - kind: conda name: libblas version: 3.9.0 @@ -5877,58 +5901,61 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h3a603ae_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d - md5: 78d2f729e26788a3660cee9906f440e7 + build: h34a048e_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 + md5: 46db27c16b29f48a37a40e3b2c9dcfe3 depends: - - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 873697 - timestamp: 1733452286970 + license_family: APACHE + size: 1117278 + timestamp: 1733607904359 - kind: conda name: libparquet version: 18.1.0 - build: h553aec1_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b - md5: 46c6783e8b46449a9baabef57c69f30a + build: hf4cc9e7_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d + md5: b462d962b5254923c5f65ce1c68dfc17 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1116941 - timestamp: 1733452997475 + license_family: APACHE + size: 873584 + timestamp: 1733607239103 - kind: conda name: libparquet version: 18.1.0 - build: hbdb145b_3_cpu - build_number: 3 + build: hf4f6db6_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 - md5: cb249762e1e65941b559d436c60e520d + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 + md5: f18b10bf19bb384183f2aa546e9f6f0a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1204740 - timestamp: 1733454014411 + license_family: APACHE + size: 1204859 + timestamp: 1733607834047 - kind: conda name: libpng version: 1.6.44 @@ -6912,76 +6939,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 - md5: d880e434f1f61e9f7fe35eb5af426762 + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d + md5: d41647f3009da6fe575321d46a741dfa depends: - - max-core ==24.6.0.dev2024120705 release - - max-python >=24.6.0.dev2024120705,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120705 release - - mblack ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release + - max-python >=24.6.0.dev2024120805,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120805 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733548613215 + size: 9916 + timestamp: 1733635043550 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae - md5: 210eb01e2dc1c01b03d2a817457b895d + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 + md5: 620d81f38c5da882ee0799e26d86b0ad depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247471356 - timestamp: 1733548812210 + size: 247607615 + timestamp: 1733634983707 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 - md5: c036e06aec88105f116ac9b6bfff8720 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 + md5: 6e7e581fe4e11d252e8729a6cc564b29 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251342975 - timestamp: 1733548613213 + size: 251457302 + timestamp: 1733635043548 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd - md5: 55c2f32ca83e4e21f8ddb5185c8cd263 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 + md5: 04d8f67fb1a7deb6147da14b60f668d3 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211936941 - timestamp: 1733548831297 + size: 212001315 + timestamp: 1733635167877 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b - md5: 9b5d9f4c3ce3cd860772c00f7d98e059 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f + md5: bf821eea63859972e28ce4635cff7dda depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -7003,18 +7030,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123682860 - timestamp: 1733548812221 + size: 123750844 + timestamp: 1733634983717 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e - md5: 54e13a8164032866ff1f243f931b4ab3 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 + md5: 5711b879e00dae9d692d6cf0bcad3717 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -7036,18 +7063,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127403239 - timestamp: 1733548613224 + size: 127399399 + timestamp: 1733635043558 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 - md5: a4867e539c3f8c25297d0d695b6848b8 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb + md5: 8737c1d7ff7f04e887c4d80139e2a273 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -7069,17 +7096,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112378959 - timestamp: 1733548831301 + size: 112431285 + timestamp: 1733635167881 - kind: conda name: mblack - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 - md5: b801385ef3cbed6f7415ddf938dc182e + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a + md5: 8a48ed658740aaf0063c754fd35e9cce depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7089,8 +7116,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130737 - timestamp: 1733548613220 + size: 130744 + timestamp: 1733635043555 - kind: conda name: mdurl version: 0.1.2 @@ -7125,21 +7152,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 - md5: ce9ee67733d1ab8c43031b67b475dba8 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd + md5: ad285352ec9e9061d8facbf62f708d9d depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11370 - timestamp: 1733548613220 + size: 11369 + timestamp: 1733635043556 - kind: conda name: multidict version: 6.1.0 @@ -7316,6 +7343,7 @@ packages: - nbconvert =7.16.4=*_2 - pandoc >=2.9.2,<4.0.0 license: BSD-3-Clause + license_family: BSD size: 188505 timestamp: 1733405603619 - kind: conda @@ -7335,6 +7363,7 @@ packages: - python-fastjsonschema >=2.15 - traitlets >=5.1 license: BSD-3-Clause + license_family: BSD size: 100945 timestamp: 1733402844974 - kind: conda @@ -7410,6 +7439,7 @@ packages: - jupyter_server >=1.8,<3 - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 16817 timestamp: 1733408419340 - kind: conda @@ -8330,18 +8360,19 @@ packages: - kind: conda name: pure_eval version: 0.2.3 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_0.conda - sha256: dcfcb3cee1ae0a89729601582cc3edea20ba13c9493967a03a693c67567af0c8 - md5: 0f051f09d992e0d08941706ad519ee0e + url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + sha256: 71bd24600d14bb171a6321d523486f6a06f855e75e547fa0cb2a0953b02047f0 + md5: 3bfdfb8dbcdc4af1ae3f9a8eb3948f04 depends: - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 16551 - timestamp: 1721585805256 + size: 16668 + timestamp: 1733569518868 - kind: conda name: pyarrow version: 18.1.0 @@ -9313,19 +9344,20 @@ packages: - kind: conda name: rfc3339-validator version: 0.1.4 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - sha256: 7c7052b51de0b5c558f890bb11f8b5edbb9934a653d76be086b1182b9f54185d - md5: fed45fc5ea0813240707998abe49f520 + url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + sha256: 2e4372f600490a6e0b3bac60717278448e323cab1c0fecd5f43f7c56535a99c5 + md5: 36de09a8d3e5d5e6f4ee63af49e59706 depends: - - python >=3.5 + - python >=3.9 - six license: MIT license_family: MIT - size: 8064 - timestamp: 1638811838081 + size: 10209 + timestamp: 1733600040800 - kind: conda name: rfc3986-validator version: 0.1.1 @@ -9687,22 +9719,23 @@ packages: timestamp: 1722520112550 - kind: conda name: stack_data - version: 0.6.2 - build: pyhd8ed1ab_0 + version: 0.6.3 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda - sha256: a58433e75229bec39f3be50c02efbe9b7083e53a1f31d8ee247564f370191eec - md5: e7df0fdd404616638df5ece6e69ba7af + url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + sha256: 570da295d421661af487f1595045760526964f41471021056e993e73089e9c41 + md5: b1b505328da7a6b246787df4b5a49fbc depends: - asttokens - executing - pure_eval - - python >=3.5 + - python >=3.9 license: MIT license_family: MIT - size: 26205 - timestamp: 1669632203115 + size: 26988 + timestamp: 1733569565672 - kind: conda name: starlette version: 0.41.3 @@ -10063,19 +10096,18 @@ packages: timestamp: 1733408570063 - kind: conda name: types-python-dateutil - version: 2.9.0.20241003 - build: pyhd8ed1ab_1 - build_number: 1 + version: 2.9.0.20241206 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241003-pyhd8ed1ab_1.conda - sha256: 78538b566f1f1cd1e309bba8361875523c69db1a25db292a54977603c5ea1421 - md5: cb0e8ce6fe1198a058040619a09bc424 + url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + sha256: 8b98cd9464837174ab58aaa912fc95d5831879864676650a383994033533b8d1 + md5: 1dbc4a115e2ad9fb7f9d5b68397f66f9 depends: - python >=3.9 license: Apache-2.0 AND MIT - size: 21850 - timestamp: 1733279726734 + size: 22104 + timestamp: 1733612458611 - kind: conda name: typing-extensions version: 4.12.2 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 12a4ba1b83..255487d649 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -22,11 +22,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -239,11 +239,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -281,7 +281,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -295,10 +295,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -327,7 +327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -349,12 +349,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -456,11 +456,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -498,7 +498,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -510,10 +510,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -539,7 +539,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -558,12 +558,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -1288,12 +1288,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a - md5: 1046cf15a47f06a0af07f674e477d807 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb + md5: 98609602eb077c7b5225d3aa1467f789 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1305,16 +1305,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117398 - timestamp: 1733299233564 + size: 117067 + timestamp: 1733565203669 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 - md5: 7d029b9aa9decf4c0fb8a9a8940c9906 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d + md5: a13702b87657cf2d0cdd338fe55f4ba1 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1327,16 +1327,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113660 - timestamp: 1733299194447 + size: 113877 + timestamp: 1733565162763 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 - md5: 02f78a084e101dee30c794f963549de4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 + md5: 1d33c89e2462b6b0056bfb883b76d2fb depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1347,8 +1347,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97136 - timestamp: 1733299356527 + size: 98296 + timestamp: 1733565277623 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1449,15 +1449,14 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h159bff8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 - md5: c498e6490834aacf7835c96403862881 + version: 0.29.7 + build: h6c346da_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 + md5: cf87fc73eee6dbfc12dec79444d5dfc0 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1465,23 +1464,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354822 - timestamp: 1733333950713 + size: 283237 + timestamp: 1733588714381 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h8474b10_2 - build_number: 2 + version: 0.29.7 + build: ha310de4_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba - md5: 54c898f166bcfbe06c2b7ac36360f371 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a + md5: 77769ed013cbf8824c1927407ea03c69 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1491,23 +1490,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 235829 - timestamp: 1733334077172 + size: 236862 + timestamp: 1733588815005 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: hffbb33f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 - md5: fb8be2af168b63e0b77076a1dc6baa85 + version: 0.29.7 + build: ha6b94fc_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca + md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1515,50 +1515,52 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 284031 - timestamp: 1733333955728 + size: 353873 + timestamp: 1733588735223 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h3b64406_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e - md5: 9a8d3ba158ff8ea08e17de366c238706 + build: h5e41cbe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 + md5: 1861b1fb86b336f1f53faaac5a76046c depends: - - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2853609 - timestamp: 1733389337912 + size: 2910575 + timestamp: 1733576378398 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h5558e3c_0 + build: hac138a2_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 - md5: b1919becd17fe224aacf708114231fda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f + md5: bbdd9589b1a32a80b0e3f98a2a482542 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1566,30 +1568,31 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3059100 - timestamp: 1733388777418 + size: 3071464 + timestamp: 1733576251149 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h7085e57_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 - md5: 005e0cc687a2421a4ad493e5b7058abe + build: he4d6490_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a + md5: 2941213b750689ace0862a6d695bb740 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2903434 - timestamp: 1733388870289 + size: 2847256 + timestamp: 1733576733615 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2488,6 +2491,7 @@ packages: depends: - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 134726 timestamp: 1733493445080 - kind: conda @@ -2748,13 +2752,13 @@ packages: timestamp: 1733501478172 - kind: conda name: huggingface_hub - version: 0.26.3 + version: 0.26.5 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 - md5: 997fc223fbc616c262f2a32a22d433a4 + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 + md5: 37236111cd92068e5af2f98cbb476642 depends: - filelock - fsspec >=2023.5.0 @@ -2766,9 +2770,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274858 - timestamp: 1733170279930 + size: 274900 + timestamp: 1733637007500 - kind: conda name: hyperframe version: 6.0.1 @@ -3170,30 +3173,32 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h5affd47_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 - md5: 3dc73b42851e6096542458eaf2c074ca + build: h3b07799_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d + md5: 27675c7172667268440306533e4928de depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3202,40 +3207,40 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 5487846 - timestamp: 1733450423101 + license_family: APACHE + size: 8793521 + timestamp: 1733607374384 - kind: conda name: libarrow version: 18.1.0 - build: hb63acf4_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 - md5: d98a11c3ba32554873aeb6a071baceaa + build: h86d57b8_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 + md5: 23431b3fdbb32858d1533da5bc8fcc86 depends: - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3248,20 +3253,20 @@ packages: - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8048003 - timestamp: 1733452700958 + license_family: APACHE + size: 5482797 + timestamp: 1733605365656 - kind: conda name: libarrow version: 18.1.0 - build: hcf3f2e3_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e - md5: 196823c7752608cb6b5d5a7a33b17410 + build: ha2aff55_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 + md5: c4d60278cb00053df1a4f0600fd2ac2a depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3287,180 +3292,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8796519 - timestamp: 1733453489520 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 - md5: 6d8f74ac97166e09cdf02109ed9905ce - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - size: 612773 - timestamp: 1733453636002 + license_family: APACHE + size: 8035987 + timestamp: 1733607600970 - kind: conda name: libarrow-acero version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 - md5: f3a050129b5012bd5fc381693f6eb2cd + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d + md5: e4ed6162593fbb01f4d742db4215f70c depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu - libcxx >=18 license: Apache-2.0 - size: 483753 - timestamp: 1733450627207 + license_family: APACHE + size: 483574 + timestamp: 1733605591770 - kind: conda name: libarrow-acero version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a - md5: fa54002b982019ecc0e93cb4b2c493e9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 + md5: d532c42abe13841806d97f4d9cd6dcf5 depends: - - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 578323 - timestamp: 1733452783322 + license_family: APACHE + size: 578174 + timestamp: 1733607685962 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 + build: h8bbc2ab_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 - md5: e9eac639d83b1c35f7743845b922d61a + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d + md5: 82bcbfe424868ce66b5ab986999f534d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - size: 585416 - timestamp: 1733454137952 + license_family: APACHE + size: 610772 + timestamp: 1733607505368 - kind: conda name: libarrow-dataset version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 - md5: 8c57e5a50f865a16cafd92f5a32c9faa + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb + md5: bb940b4c583e4c8e5a9f193fabdb5840 depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu - libcxx >=18 - - libparquet 18.1.0 h3a603ae_3_cpu + - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 - size: 489900 - timestamp: 1733452479126 + license_family: APACHE + size: 489457 + timestamp: 1733607417337 - kind: conda name: libarrow-dataset version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff - md5: 048f04da68a40e9e5e1e66ff9502b237 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f + md5: 1a6c409f45857d30f581a1a53abb2298 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu - libgcc >=13 - - libparquet 18.1.0 h553aec1_3_cpu + - libparquet 18.1.0 h34a048e_4_cpu - libstdcxx >=13 license: Apache-2.0 - size: 559844 - timestamp: 1733453065157 + license_family: APACHE + size: 561495 + timestamp: 1733607973097 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 + md5: fa31464c75b20c2f3ac8fc758e034887 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libgcc >=13 + - libparquet 18.1.0 hf4f6db6_4_cpu + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 585517 + timestamp: 1733607943984 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h4c1644f_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 - md5: 7ba2783c26a0008307e2a1e637c2930f + build: h3644d33_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c + md5: ce3062cd5caa0bdafa7976535862e648 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu - - libarrow-dataset 18.1.0 haafc02e_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - size: 451428 - timestamp: 1733453012619 + license_family: APACHE + size: 513745 + timestamp: 1733608111290 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h56a123c_3_cpu - build_number: 3 + build: had74209_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d - md5: 306bb541b83a83b66d5c1e6880302886 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 + md5: bf261e5fa25ce4acc11a80bdc73b88b2 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu - - libarrow-dataset 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 520740 - timestamp: 1733454379083 + license_family: APACHE + size: 519919 + timestamp: 1733608152065 - kind: conda name: libarrow-substrait version: 18.1.0 - build: hc52ba39_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 - md5: 7a8e305f1689687ed063bb4553c1a7a5 + build: hf3d3107_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 + md5: c093b05dc6d1b6057342d3dd6f3bd0d8 depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu - - libarrow-dataset 18.1.0 he2e0623_3_cpu - - libgcc >=13 + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - size: 515638 - timestamp: 1733453200561 + license_family: APACHE + size: 451982 + timestamp: 1733607898511 - kind: conda name: libblas version: 3.9.0 @@ -4858,58 +4873,61 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h3a603ae_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d - md5: 78d2f729e26788a3660cee9906f440e7 + build: h34a048e_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 + md5: 46db27c16b29f48a37a40e3b2c9dcfe3 depends: - - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 873697 - timestamp: 1733452286970 + license_family: APACHE + size: 1117278 + timestamp: 1733607904359 - kind: conda name: libparquet version: 18.1.0 - build: h553aec1_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b - md5: 46c6783e8b46449a9baabef57c69f30a + build: hf4cc9e7_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d + md5: b462d962b5254923c5f65ce1c68dfc17 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1116941 - timestamp: 1733452997475 + license_family: APACHE + size: 873584 + timestamp: 1733607239103 - kind: conda name: libparquet version: 18.1.0 - build: hbdb145b_3_cpu - build_number: 3 + build: hf4f6db6_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 - md5: cb249762e1e65941b559d436c60e520d + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 + md5: f18b10bf19bb384183f2aa546e9f6f0a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1204740 - timestamp: 1733454014411 + license_family: APACHE + size: 1204859 + timestamp: 1733607834047 - kind: conda name: libpng version: 1.6.44 @@ -5876,76 +5894,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 - md5: d880e434f1f61e9f7fe35eb5af426762 - depends: - - max-core ==24.6.0.dev2024120705 release - - max-python >=24.6.0.dev2024120705,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120705 release - - mblack ==24.6.0.dev2024120705 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d + md5: d41647f3009da6fe575321d46a741dfa + depends: + - max-core ==24.6.0.dev2024120805 release + - max-python >=24.6.0.dev2024120805,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120805 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733548613215 + size: 9916 + timestamp: 1733635043550 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae - md5: 210eb01e2dc1c01b03d2a817457b895d + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 + md5: 620d81f38c5da882ee0799e26d86b0ad depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247471356 - timestamp: 1733548812210 + size: 247607615 + timestamp: 1733634983707 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 - md5: c036e06aec88105f116ac9b6bfff8720 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 + md5: 6e7e581fe4e11d252e8729a6cc564b29 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251342975 - timestamp: 1733548613213 + size: 251457302 + timestamp: 1733635043548 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd - md5: 55c2f32ca83e4e21f8ddb5185c8cd263 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 + md5: 04d8f67fb1a7deb6147da14b60f668d3 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211936941 - timestamp: 1733548831297 + size: 212001315 + timestamp: 1733635167877 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b - md5: 9b5d9f4c3ce3cd860772c00f7d98e059 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f + md5: bf821eea63859972e28ce4635cff7dda depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -5967,18 +5985,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123682860 - timestamp: 1733548812221 + size: 123750844 + timestamp: 1733634983717 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e - md5: 54e13a8164032866ff1f243f931b4ab3 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 + md5: 5711b879e00dae9d692d6cf0bcad3717 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -6000,18 +6018,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127403239 - timestamp: 1733548613224 + size: 127399399 + timestamp: 1733635043558 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 - md5: a4867e539c3f8c25297d0d695b6848b8 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb + md5: 8737c1d7ff7f04e887c4d80139e2a273 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -6033,17 +6051,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112378959 - timestamp: 1733548831301 + size: 112431285 + timestamp: 1733635167881 - kind: conda name: mblack - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 - md5: b801385ef3cbed6f7415ddf938dc182e + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a + md5: 8a48ed658740aaf0063c754fd35e9cce depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6053,8 +6071,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130737 - timestamp: 1733548613220 + size: 130744 + timestamp: 1733635043555 - kind: conda name: mdurl version: 0.1.2 @@ -6073,21 +6091,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 - md5: ce9ee67733d1ab8c43031b67b475dba8 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd + md5: ad285352ec9e9061d8facbf62f708d9d depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11370 - timestamp: 1733548613220 + size: 11369 + timestamp: 1733635043556 - kind: conda name: multidict version: 6.1.0 diff --git a/magic.lock b/magic.lock index 4cdf0f7c8e..1860c5f8d3 100644 --- a/magic.lock +++ b/magic.lock @@ -22,11 +22,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda @@ -64,7 +64,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.2-pyha770c72_0.conda @@ -77,10 +77,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda @@ -109,7 +109,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda @@ -132,12 +132,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -240,11 +240,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda @@ -282,7 +282,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -296,10 +296,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda @@ -328,7 +328,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda @@ -351,12 +351,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -458,11 +458,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda @@ -500,7 +500,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -512,10 +512,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda @@ -541,7 +541,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda @@ -561,12 +561,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -1291,12 +1291,12 @@ packages: timestamp: 1731734668760 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h29aef15_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.4-h29aef15_0.conda - sha256: 396517aca6bdbe2e3d8a6275b33865eeb0d09f0dd379c3cc55c36f6004b17f2a - md5: 1046cf15a47f06a0af07f674e477d807 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb + md5: 98609602eb077c7b5225d3aa1467f789 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 @@ -1308,16 +1308,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117398 - timestamp: 1733299233564 + size: 117067 + timestamp: 1733565203669 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h3a84f74_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.4-h3a84f74_0.conda - sha256: 91c6f7aa3dd230bcefe2654469b0704c2bdb2574e6d0d7c56cf9e9071f44cc26 - md5: 7d029b9aa9decf4c0fb8a9a8940c9906 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d + md5: a13702b87657cf2d0cdd338fe55f4ba1 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1330,16 +1330,16 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113660 - timestamp: 1733299194447 + size: 113877 + timestamp: 1733565162763 - kind: conda name: aws-c-s3 - version: 0.7.4 + version: 0.7.5 build: h840aca7_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.4-h840aca7_0.conda - sha256: 564bbb781c1aebfcdda43a0e82f447e34de1764c57ebc1733fe6437248f5b7c9 - md5: 02f78a084e101dee30c794f963549de4 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 + md5: 1d33c89e2462b6b0056bfb883b76d2fb depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1350,8 +1350,8 @@ packages: - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 97136 - timestamp: 1733299356527 + size: 98296 + timestamp: 1733565277623 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1452,15 +1452,14 @@ packages: timestamp: 1731687193373 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h159bff8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.6-h159bff8_2.conda - sha256: 04ca62caa764bb95f304af8486c1af7c4f76d4ad5204c494edcf86af653d2ad0 - md5: c498e6490834aacf7835c96403862881 + version: 0.29.7 + build: h6c346da_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 + md5: cf87fc73eee6dbfc12dec79444d5dfc0 depends: - - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1468,23 +1467,23 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 354822 - timestamp: 1733333950713 + size: 283237 + timestamp: 1733588714381 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: h8474b10_2 - build_number: 2 + version: 0.29.7 + build: ha310de4_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.6-h8474b10_2.conda - sha256: 5ca9df9516583076ea40129e71b103efaca21ca02f40b59d69485823613cbfba - md5: 54c898f166bcfbe06c2b7ac36360f371 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a + md5: 77769ed013cbf8824c1927407ea03c69 depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 @@ -1494,23 +1493,24 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 235829 - timestamp: 1733334077172 + size: 236862 + timestamp: 1733588815005 - kind: conda name: aws-crt-cpp - version: 0.29.6 - build: hffbb33f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.6-hffbb33f_2.conda - sha256: 5f9490edaddde550cf05861626175b648da73c84bcde61ac2a6a1bf1a8fd6982 - md5: fb8be2af168b63e0b77076a1dc6baa85 + version: 0.29.7 + build: ha6b94fc_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca + md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - aws-c-cal >=0.8.0,<0.8.1.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1518,50 +1518,52 @@ packages: - aws-c-http >=0.9.1,<0.9.2.0a0 - aws-c-io >=0.15.2,<0.15.3.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.4,<0.7.5.0a0 + - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 284031 - timestamp: 1733333955728 + size: 353873 + timestamp: 1733588735223 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h3b64406_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-h3b64406_0.conda - sha256: ded5412750f5c29bdf8ef6bc5ab26e443dc4943bd69c9098a791d8a2bf9b184e - md5: 9a8d3ba158ff8ea08e17de366c238706 + build: h5e41cbe_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda + sha256: b45305787a78f2bf7ecabc401b5bfe451509b434dd041a0a554572a70302d2f3 + md5: 1861b1fb86b336f1f53faaac5a76046c depends: - - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2853609 - timestamp: 1733389337912 + size: 2910575 + timestamp: 1733576378398 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h5558e3c_0 + build: hac138a2_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-h5558e3c_0.conda - sha256: 7eab747a5a3e1a46b9c85c591c30ca2d4e90c2cebeaec95c4fe016846efdfa14 - md5: b1919becd17fe224aacf708114231fda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda + sha256: fdb9c94d7524c52837643428b1aab4f35bed3ba2862a57e1b03e63038c7c146f + md5: bbdd9589b1a32a80b0e3f98a2a482542 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 @@ -1569,30 +1571,31 @@ packages: - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 3059100 - timestamp: 1733388777418 + size: 3071464 + timestamp: 1733576251149 - kind: conda name: aws-sdk-cpp version: 1.11.458 - build: h7085e57_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h7085e57_0.conda - sha256: 6d5327305721d18d650a3f8a377dc30e65600f59bd33fd4fcad106965b09b6b8 - md5: 005e0cc687a2421a4ad493e5b7058abe + build: he4d6490_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda + sha256: 61abc03dfbe372b258b8b6790bf3ad3a3265e02ce24b6b22bfe8f2fcab94954a + md5: 2941213b750689ace0862a6d695bb740 depends: + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 2903434 - timestamp: 1733388870289 + size: 2847256 + timestamp: 1733576733615 - kind: conda name: azure-core-cpp version: 1.14.0 @@ -2491,6 +2494,7 @@ packages: depends: - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 134726 timestamp: 1733493445080 - kind: conda @@ -2751,13 +2755,13 @@ packages: timestamp: 1733501478172 - kind: conda name: huggingface_hub - version: 0.26.3 + version: 0.26.5 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.3-pyhd8ed1ab_0.conda - sha256: 66ffed967463e4a25f1dc4ca699d85dd55d1d150fed214c6380f11a981e0acb7 - md5: 997fc223fbc616c262f2a32a22d433a4 + url: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda + sha256: bdbf614d87155c7f9b8fe9c3d039528298119832e9f52959b15c522a9841eef7 + md5: 37236111cd92068e5af2f98cbb476642 depends: - filelock - fsspec >=2023.5.0 @@ -2769,9 +2773,8 @@ packages: - typing-extensions >=3.7.4.3 - typing_extensions >=3.7.4.3 license: Apache-2.0 - license_family: APACHE - size: 274858 - timestamp: 1733170279930 + size: 274900 + timestamp: 1733637007500 - kind: conda name: hyperframe version: 6.0.1 @@ -3173,30 +3176,32 @@ packages: - kind: conda name: libarrow version: 18.1.0 - build: h5affd47_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h5affd47_3_cpu.conda - sha256: 9dac7f7b96972a3c18549d8669269233ae9e7b25da56161bd85a86b98ca61f76 - md5: 3dc73b42851e6096542458eaf2c074ca + build: h3b07799_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-h3b07799_4_cpu.conda + sha256: 8837dc6e60522eef63554654c45d18143006324c43391c6e8dc5d2b20997466d + md5: 27675c7172667268440306533e4928de depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 + - libgcc >=13 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 + - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3205,40 +3210,40 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 5487846 - timestamp: 1733450423101 + license_family: APACHE + size: 8793521 + timestamp: 1733607374384 - kind: conda name: libarrow version: 18.1.0 - build: hb63acf4_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-hb63acf4_3_cpu.conda - sha256: e972904b472008f902df9e584f59ff7716fc22efc1124d1dfc41c931852acc75 - md5: d98a11c3ba32554873aeb6a071baceaa + build: h86d57b8_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-18.1.0-h86d57b8_4_cpu.conda + sha256: fe6b5eb4d6e71418343b62a0d322ede7be69999b28d9e492164c12e613cf3fa0 + md5: 23431b3fdbb32858d1533da5bc8fcc86 depends: - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - __osx >=11.0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - bzip2 >=1.0.8,<2.0a0 - - gflags >=2.2.2,<2.3.0a0 - glog >=0.7.1,<0.8.0a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libbrotlidec >=1.1.0,<1.2.0a0 - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 + - libcxx >=18 - libgoogle-cloud >=2.31.0,<2.32.0a0 - libgoogle-cloud-storage >=2.31.0,<2.32.0a0 - libre2-11 >=2024.7.2 - - libstdcxx >=13 - libutf8proc >=2.9.0,<2.10.0a0 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 @@ -3251,20 +3256,20 @@ packages: - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8048003 - timestamp: 1733452700958 + license_family: APACHE + size: 5482797 + timestamp: 1733605365656 - kind: conda name: libarrow version: 18.1.0 - build: hcf3f2e3_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hcf3f2e3_3_cpu.conda - sha256: a82f66f0a37ed3132e6b9faff9285d7ccbe950ccfe84edd6378fdee70ef2743e - md5: 196823c7752608cb6b5d5a7a33b17410 + build: ha2aff55_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-18.1.0-ha2aff55_4_cpu.conda + sha256: 795950b73029fd4d3b7fee3427c39c7357287fd94244dd5a125ac0931d31aaa3 + md5: c4d60278cb00053df1a4f0600fd2ac2a depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.6,<0.29.7.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 - azure-core-cpp >=1.14.0,<1.14.1.0a0 - azure-identity-cpp >=1.10.0,<1.10.1.0a0 @@ -3290,180 +3295,190 @@ packages: - snappy >=1.2.1,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - - apache-arrow-proc =*=cpu - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu - arrow-cpp <0.0a0 license: Apache-2.0 - size: 8796519 - timestamp: 1733453489520 -- kind: conda - name: libarrow-acero - version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h36004a0_3_cpu.conda - sha256: 0733a303b2dd5998489099d6c258ee442d3f8243379d339f57700554d696fe41 - md5: 6d8f74ac97166e09cdf02109ed9905ce - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libgcc >=13 - - libstdcxx >=13 - license: Apache-2.0 - size: 612773 - timestamp: 1733453636002 + license_family: APACHE + size: 8035987 + timestamp: 1733607600970 - kind: conda name: libarrow-acero version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-haafc02e_3_cpu.conda - sha256: 214df0ac0f44dd792193d11c84dbf79a42ed0f663c7b1a06aa5ab755b93c1948 - md5: f3a050129b5012bd5fc381693f6eb2cd + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-18.1.0-h1dc2043_4_cpu.conda + sha256: fe8cb6feeed0858cb8e7cc8889ae20165527934778adb8f7b1f2f5d1f7ade16d + md5: e4ed6162593fbb01f4d742db4215f70c depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu - libcxx >=18 license: Apache-2.0 - size: 483753 - timestamp: 1733450627207 + license_family: APACHE + size: 483574 + timestamp: 1733605591770 - kind: conda name: libarrow-acero version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-he2e0623_3_cpu.conda - sha256: 1560efabce824155dd841219c299c71352594b5e237dce0879c2d8f50c16047a - md5: fa54002b982019ecc0e93cb4b2c493e9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-18.1.0-h512cd83_4_cpu.conda + sha256: 9e88f04409da9ca2fedc5f7bf0987ff28e96d08742e59672f744ec4624a4c991 + md5: d532c42abe13841806d97f4d9cd6dcf5 depends: - - libarrow 18.1.0 hb63acf4_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 - size: 578323 - timestamp: 1733452783322 + license_family: APACHE + size: 578174 + timestamp: 1733607685962 - kind: conda - name: libarrow-dataset + name: libarrow-acero version: 18.1.0 - build: h36004a0_3_cpu - build_number: 3 + build: h8bbc2ab_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h36004a0_3_cpu.conda - sha256: d5a0b4a2129a540548b0232df23e6940fe73d54e5ace5a31f5419d96a059f317 - md5: e9eac639d83b1c35f7743845b922d61a + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-h8bbc2ab_4_cpu.conda + sha256: b3b4ddb2718c96c93d9b50dbf8f66265af9198b55852b4d3424c13a79ec3f84d + md5: 82bcbfe424868ce66b5ab986999f534d depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - - libparquet 18.1.0 hbdb145b_3_cpu - libstdcxx >=13 license: Apache-2.0 - size: 585416 - timestamp: 1733454137952 + license_family: APACHE + size: 610772 + timestamp: 1733607505368 - kind: conda name: libarrow-dataset version: 18.1.0 - build: haafc02e_3_cpu - build_number: 3 + build: h1dc2043_4_cpu + build_number: 4 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-haafc02e_3_cpu.conda - sha256: 7b105d363d5f71db88454b304e44166c17b2970ddb0297b482f3d8b39fb39308 - md5: 8c57e5a50f865a16cafd92f5a32c9faa + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-18.1.0-h1dc2043_4_cpu.conda + sha256: 862fb21b871666495b4bb5e63f5fcb66b93c08893e92412b01e2717e081836eb + md5: bb940b4c583e4c8e5a9f193fabdb5840 depends: - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu - libcxx >=18 - - libparquet 18.1.0 h3a603ae_3_cpu + - libparquet 18.1.0 hf4cc9e7_4_cpu license: Apache-2.0 - size: 489900 - timestamp: 1733452479126 + license_family: APACHE + size: 489457 + timestamp: 1733607417337 - kind: conda name: libarrow-dataset version: 18.1.0 - build: he2e0623_3_cpu - build_number: 3 + build: h512cd83_4_cpu + build_number: 4 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-he2e0623_3_cpu.conda - sha256: b26a03f529a4b87dcf523b012f9ccdac124b65f41801da7eb489192916e447ff - md5: 048f04da68a40e9e5e1e66ff9502b237 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-18.1.0-h512cd83_4_cpu.conda + sha256: 4a9ffedc5570ce57a6864e46dcf36ec108557791b50fd43e82eb739f3717ff2f + md5: 1a6c409f45857d30f581a1a53abb2298 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu - libgcc >=13 - - libparquet 18.1.0 h553aec1_3_cpu + - libparquet 18.1.0 h34a048e_4_cpu - libstdcxx >=13 license: Apache-2.0 - size: 559844 - timestamp: 1733453065157 + license_family: APACHE + size: 561495 + timestamp: 1733607973097 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: h8bbc2ab_4_cpu + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-h8bbc2ab_4_cpu.conda + sha256: 9c898ab7377953b8c7218347fdb63376d4f977cabfb8fa6bd1b421a75b8cb335 + md5: fa31464c75b20c2f3ac8fc758e034887 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libgcc >=13 + - libparquet 18.1.0 hf4f6db6_4_cpu + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 585517 + timestamp: 1733607943984 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h4c1644f_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-h4c1644f_3_cpu.conda - sha256: 562c344d57b718aa838ccc01acae240d9ab33dd2da7db40dbe75d1db6b441e71 - md5: 7ba2783c26a0008307e2a1e637c2930f + build: h3644d33_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-h3644d33_4_cpu.conda + sha256: ac053b3efd1a2701e6f34195d90a0da21dca22d70916ae6b10a019c2be6cd44c + md5: ce3062cd5caa0bdafa7976535862e648 depends: - - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 h5affd47_3_cpu - - libarrow-acero 18.1.0 haafc02e_3_cpu - - libarrow-dataset 18.1.0 haafc02e_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libarrow-acero 18.1.0 h512cd83_4_cpu + - libarrow-dataset 18.1.0 h512cd83_4_cpu + - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 license: Apache-2.0 - size: 451428 - timestamp: 1733453012619 + license_family: APACHE + size: 513745 + timestamp: 1733608111290 - kind: conda name: libarrow-substrait version: 18.1.0 - build: h56a123c_3_cpu - build_number: 3 + build: had74209_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h56a123c_3_cpu.conda - sha256: 139104d80048382c48718a65721b24fa4d69abd6c2052ee1ab20f32b7d48228d - md5: 306bb541b83a83b66d5c1e6880302886 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-had74209_4_cpu.conda + sha256: 29e44d6070d64cd4b357e02afeae233d2e90d917a008a2724c9cd463015f0319 + md5: bf261e5fa25ce4acc11a80bdc73b88b2 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu - - libarrow-acero 18.1.0 h36004a0_3_cpu - - libarrow-dataset 18.1.0 h36004a0_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu + - libarrow-acero 18.1.0 h8bbc2ab_4_cpu + - libarrow-dataset 18.1.0 h8bbc2ab_4_cpu - libgcc >=13 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 license: Apache-2.0 - size: 520740 - timestamp: 1733454379083 + license_family: APACHE + size: 519919 + timestamp: 1733608152065 - kind: conda name: libarrow-substrait version: 18.1.0 - build: hc52ba39_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-18.1.0-hc52ba39_3_cpu.conda - sha256: 66f2c06ad10d8886e53661420c5b73de217a088ee4693186deec7df292f9c766 - md5: 7a8e305f1689687ed063bb4553c1a7a5 + build: hf3d3107_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-18.1.0-hf3d3107_4_cpu.conda + sha256: 9d9ebd042b9e8561b64f057d2adb24d331a772ccf1af3ed2d8b5b1566729f236 + md5: c093b05dc6d1b6057342d3dd6f3bd0d8 depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libarrow 18.1.0 hb63acf4_3_cpu - - libarrow-acero 18.1.0 he2e0623_3_cpu - - libarrow-dataset 18.1.0 he2e0623_3_cpu - - libgcc >=13 + - libarrow 18.1.0 h86d57b8_4_cpu + - libarrow-acero 18.1.0 h1dc2043_4_cpu + - libarrow-dataset 18.1.0 h1dc2043_4_cpu + - libcxx >=18 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 license: Apache-2.0 - size: 515638 - timestamp: 1733453200561 + license_family: APACHE + size: 451982 + timestamp: 1733607898511 - kind: conda name: libblas version: 3.9.0 @@ -4861,58 +4876,61 @@ packages: - kind: conda name: libparquet version: 18.1.0 - build: h3a603ae_3_cpu - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-h3a603ae_3_cpu.conda - sha256: 89f40f0f4e706392b082ee4910fedd2442b57abbf6cbbfb16a00b5aa89beb41d - md5: 78d2f729e26788a3660cee9906f440e7 + build: h34a048e_4_cpu + build_number: 4 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h34a048e_4_cpu.conda + sha256: 488d82356fc4e6dfd6c10a4100c36af17db1b7eb72cce0bd8973014220dc3066 + md5: 46db27c16b29f48a37a40e3b2c9dcfe3 depends: - - __osx >=11.0 - - libarrow 18.1.0 h5affd47_3_cpu - - libcxx >=18 + - libarrow 18.1.0 ha2aff55_4_cpu + - libgcc >=13 + - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 873697 - timestamp: 1733452286970 + license_family: APACHE + size: 1117278 + timestamp: 1733607904359 - kind: conda name: libparquet version: 18.1.0 - build: h553aec1_3_cpu - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-18.1.0-h553aec1_3_cpu.conda - sha256: 965940abe9e49ae7b3adee19bf458f866a0ef35a3cf29d627b2d52c77a96a96b - md5: 46c6783e8b46449a9baabef57c69f30a + build: hf4cc9e7_4_cpu + build_number: 4 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-18.1.0-hf4cc9e7_4_cpu.conda + sha256: ccadab6395090b3cbc54243fcf5c6e49eaee46aaaa4221ca8ca7803a34bdc25d + md5: b462d962b5254923c5f65ce1c68dfc17 depends: - - libarrow 18.1.0 hb63acf4_3_cpu - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libarrow 18.1.0 h86d57b8_4_cpu + - libcxx >=18 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1116941 - timestamp: 1733452997475 + license_family: APACHE + size: 873584 + timestamp: 1733607239103 - kind: conda name: libparquet version: 18.1.0 - build: hbdb145b_3_cpu - build_number: 3 + build: hf4f6db6_4_cpu + build_number: 4 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hbdb145b_3_cpu.conda - sha256: 034086f71824a3ea77a9bd21029fd4c4ef25b3a95fc77933704b8b49ff55c7f3 - md5: cb249762e1e65941b559d436c60e520d + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-hf4f6db6_4_cpu.conda + sha256: f957b6ea5c4023448891f63f7b184a663d85aa5b2717b0e0ebfbfcf97b542751 + md5: f18b10bf19bb384183f2aa546e9f6f0a depends: - __glibc >=2.17,<3.0.a0 - - libarrow 18.1.0 hcf3f2e3_3_cpu + - libarrow 18.1.0 h3b07799_4_cpu - libgcc >=13 - libstdcxx >=13 - libthrift >=0.21.0,<0.21.1.0a0 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 - size: 1204740 - timestamp: 1733454014411 + license_family: APACHE + size: 1204859 + timestamp: 1733607834047 - kind: conda name: libpng version: 1.6.44 @@ -5894,76 +5912,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120705-release.conda - sha256: b75fcf4dfbeea5eb4bf1a83b5a4dc1e890aaca5afb87aeea00204d9d43263ab6 - md5: d880e434f1f61e9f7fe35eb5af426762 - depends: - - max-core ==24.6.0.dev2024120705 release - - max-python >=24.6.0.dev2024120705,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120705 release - - mblack ==24.6.0.dev2024120705 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda + sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d + md5: d41647f3009da6fe575321d46a741dfa + depends: + - max-core ==24.6.0.dev2024120805 release + - max-python >=24.6.0.dev2024120805,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120805 release license: LicenseRef-Modular-Proprietary - size: 9922 - timestamp: 1733548613215 + size: 9916 + timestamp: 1733635043550 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120705-release.conda - sha256: 1e38d40637ac5faadb1465f7c3ae80077a02fa25773f832c4730bb3f5d285cae - md5: 210eb01e2dc1c01b03d2a817457b895d + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda + sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 + md5: 620d81f38c5da882ee0799e26d86b0ad depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247471356 - timestamp: 1733548812210 + size: 247607615 + timestamp: 1733634983707 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120705-release.conda - sha256: a2e530d128deb23e231c5baf2c89b28fc02879f4608b18415f2cc70604e5ea86 - md5: c036e06aec88105f116ac9b6bfff8720 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda + sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 + md5: 6e7e581fe4e11d252e8729a6cc564b29 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251342975 - timestamp: 1733548613213 + size: 251457302 + timestamp: 1733635043548 - kind: conda name: max-core - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120705-release.conda - sha256: dba294806285f1242d3274833451c21ceae2122441177ad870162f18465402cd - md5: 55c2f32ca83e4e21f8ddb5185c8cd263 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda + sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 + md5: 04d8f67fb1a7deb6147da14b60f668d3 depends: - - mblack ==24.6.0.dev2024120705 release + - mblack ==24.6.0.dev2024120805 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 211936941 - timestamp: 1733548831297 + size: 212001315 + timestamp: 1733635167877 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 9083a4c9e5e0362a688eeca82b4018fd88cb7a481b15c42e887a3a8bc60f684b - md5: 9b5d9f4c3ce3cd860772c00f7d98e059 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f + md5: bf821eea63859972e28ce4635cff7dda depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -5985,18 +6003,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123682860 - timestamp: 1733548812221 + size: 123750844 + timestamp: 1733634983717 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 2a30cd49b6468f6f6d76f789ac2ed47f0496e228e06694fdbee7ed757199c63e - md5: 54e13a8164032866ff1f243f931b4ab3 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 + md5: 5711b879e00dae9d692d6cf0bcad3717 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -6018,18 +6036,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127403239 - timestamp: 1733548613224 + size: 127399399 + timestamp: 1733635043558 - kind: conda name: max-python - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120705-3.12release.conda - sha256: 5afdef8316567435191dbb56db99f99a3f1b4d20a4b0132978c89c458916a961 - md5: a4867e539c3f8c25297d0d695b6848b8 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda + sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb + md5: 8737c1d7ff7f04e887c4d80139e2a273 depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python 3.12.* - pillow - fastapi @@ -6051,17 +6069,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112378959 - timestamp: 1733548831301 + size: 112431285 + timestamp: 1733635167881 - kind: conda name: mblack - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120705-release.conda - sha256: e0ecd940a6053ec0d44e3da2b9d99885efcb38f0ae32b92136155bb5aa252a75 - md5: b801385ef3cbed6f7415ddf938dc182e + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a + md5: 8a48ed658740aaf0063c754fd35e9cce depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6071,8 +6089,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130737 - timestamp: 1733548613220 + size: 130744 + timestamp: 1733635043555 - kind: conda name: mdurl version: 0.1.2 @@ -6091,21 +6109,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120705 + version: 24.6.0.dev2024120805 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120705-release.conda - sha256: ff854ead8fa7014dd8ed800998afb01ac9faeec55dfc84bcc2d6d21b38e5a8d1 - md5: ce9ee67733d1ab8c43031b67b475dba8 + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd + md5: ad285352ec9e9061d8facbf62f708d9d depends: - - max-core ==24.6.0.dev2024120705 release + - max-core ==24.6.0.dev2024120805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11370 - timestamp: 1733548613220 + size: 11369 + timestamp: 1733635043556 - kind: conda name: multidict version: 6.1.0 From 647133813e6d9c949422d1e7824735dd7153fad7 Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sat, 7 Dec 2024 21:26:47 -0800 Subject: [PATCH 114/119] [******][GPU] Add log log2_floor in the bit module MODULAR_ORIG_COMMIT_REV_ID: 78e0005db0bb77465e11d6ce856da56116c839dc --- stdlib/src/bit/__init__.mojo | 1 + stdlib/src/bit/bit.mojo | 22 +++++++++++++++++++++- stdlib/test/bit/test_bit.mojo | 27 +++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/stdlib/src/bit/__init__.mojo b/stdlib/src/bit/__init__.mojo index e41c3ca52c..75004d3618 100644 --- a/stdlib/src/bit/__init__.mojo +++ b/stdlib/src/bit/__init__.mojo @@ -21,6 +21,7 @@ from .bit import ( byte_swap, count_leading_zeros, count_trailing_zeros, + log2_floor, is_power_of_two, pop_count, rotate_bits_left, diff --git a/stdlib/src/bit/bit.mojo b/stdlib/src/bit/bit.mojo index 74a428d3df..fb4170f825 100644 --- a/stdlib/src/bit/bit.mojo +++ b/stdlib/src/bit/bit.mojo @@ -343,10 +343,30 @@ fn bit_width[ return bitwidth - leading_zero +# ===-----------------------------------------------------------------------===# +# log2_floor +# ===-----------------------------------------------------------------------===# + + +@always_inline +fn log2_floor(val: Int) -> Int: + """Returns the floor of the base-2 logarithm of an integer value. + + Args: + val: The input value. + + Returns: + The floor of the base-2 logarithm of the input value, which is equal to + the position of the highest set bit. Returns -1 if val is 0. + """ + if val <= 1: + return 0 + return bitwidthof[Int]() - count_leading_zeros(val) - 1 + + # ===-----------------------------------------------------------------------===# # is_power_of_two # ===-----------------------------------------------------------------------===# -# reference: https://en.cppreference.com/w/cpp/numeric/has_single_bit @always_inline diff --git a/stdlib/test/bit/test_bit.mojo b/stdlib/test/bit/test_bit.mojo index dee81507d1..1f1063eee0 100644 --- a/stdlib/test/bit/test_bit.mojo +++ b/stdlib/test/bit/test_bit.mojo @@ -25,7 +25,9 @@ from bit import ( pop_count, rotate_bits_left, rotate_bits_right, + log2_floor, ) +from math import log2, floor from testing import assert_equal @@ -497,6 +499,30 @@ def test_rotate_bits_simd(): assert_equal(rotate_bits_right[6](Scalar[type](96)), 129) +fn _log2_floor(n: Int) -> Int: + return int(floor(log2(float(n)))) + + +def test_log2_floor(): + assert_equal(log2_floor(0), 0) + for i in range(1, 100): + assert_equal( + log2_floor(i), + _log2_floor(i), + msg="mismatching value for the input value of " + str(i), + ) + + fn _check_alias[n: Int](expected: Int) raises: + alias res = log2_floor(n) + assert_equal(res, expected) + + _check_alias[0](0) + _check_alias[1](0) + _check_alias[2](1) + _check_alias[15](3) + _check_alias[32](5) + + def main(): test_rotate_bits_int() test_rotate_bits_simd() @@ -519,3 +545,4 @@ def main(): test_pop_count() test_pop_count_simd() test_bit_not_simd() + test_log2_floor() From f87dec5d493bf4cae2db1fab78e264ba80f1f3fe Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 7 Dec 2024 23:41:55 -0800 Subject: [PATCH 115/119] [mojo-lang] Add support for named results using `out` syntax. This adds support for spelling "named functions results" using the same `out` syntax used by initializers (in addition to `-> T as name`). Functions may have at most one named result or return type specified with the usual `->` syntax. `out` arguments may occur anywhere in the argument list, but are typically last (except for `__init__` methods, where they are typically first). ```mojo # This function has type "fn() -> String" fn example(out result: String): result = "foo" ``` The parser still accepts the old syntax as a synonym for this, but that will eventually be deprecated and removed. This was discussed extensively here: https://github.com/modularml/mojo/issues/3623 MODULAR_ORIG_COMMIT_REV_ID: 23b3a120227a42d9550ba76d8cafb63c3a03edcf --- docs/changelog.md | 18 ++++ stdlib/src/builtin/_pybind.mojo | 12 ++- stdlib/src/builtin/coroutine.mojo | 16 ++-- stdlib/src/builtin/int.mojo | 2 +- stdlib/src/builtin/simd.mojo | 2 +- stdlib/src/collections/deque.mojo | 4 +- stdlib/src/memory/unsafe_pointer.mojo | 15 ++-- stdlib/src/utils/index.mojo | 103 ++++++++++++++++------- stdlib/test/os/path/test_expandvars.mojo | 2 +- 9 files changed, 120 insertions(+), 54 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 3673d58fd7..0576359789 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -335,6 +335,24 @@ what we publish. release of Mojo, but will be removed in the future. Please migrate to the new syntax. +- Similarly, the spelling of "named functions results" has switched to use `out` + syntax instead of `-> T as name`. Functions may have at most one named result + or return type specified with the usual `->` syntax. `out` arguments may + occur anywhere in the argument list, but are typically last (except for + `__init__` methods, where they are typically first). + + ```mojo + # This function has type "fn() -> String" + fn example(out result: String): + result = "foo" + ``` + + The parser still accepts the old syntax as a synonym for this, but that will + eventually be deprecated and removed. + + This was [discussed extensively in a public + proposal](https://github.com/modularml/mojo/issues/3623). + - More things have been removed from the auto-exported set of entities in the `prelude` module from the Mojo standard library. - `UnsafePointer` has been removed. Please explicitly import it via diff --git a/stdlib/src/builtin/_pybind.mojo b/stdlib/src/builtin/_pybind.mojo index 24b0fdc619..5e1d8c874c 100644 --- a/stdlib/src/builtin/_pybind.mojo +++ b/stdlib/src/builtin/_pybind.mojo @@ -61,10 +61,13 @@ fn fail_initialization(owned err: Error) -> PythonObject: fn pointer_bitcast[ To: AnyType -](ptr: Pointer) -> Pointer[To, ptr.origin, ptr.address_space, *_, **_] as out: - return __type_of(out)( +]( + ptr: Pointer, + out result: Pointer[To, ptr.origin, ptr.address_space, *_, **_], +): + return __type_of(result)( _mlir_value=__mlir_op.`lit.ref.from_pointer`[ - _type = __type_of(out)._mlir_type + _type = __type_of(result)._mlir_type ]( UnsafePointer(__mlir_op.`lit.ref.to_pointer`(ptr._value)) .bitcast[To]() @@ -162,7 +165,8 @@ fn _try_convert_arg[ type_name_id: StringLiteral, py_args: TypedPythonObject["Tuple"], argidx: Int, -) raises -> T as result: + out result: T, +) raises: try: result = T.try_from_python(py_args[argidx]) except convert_err: diff --git a/stdlib/src/builtin/coroutine.mojo b/stdlib/src/builtin/coroutine.mojo index 04688695c8..c2c0ee1d81 100644 --- a/stdlib/src/builtin/coroutine.mojo +++ b/stdlib/src/builtin/coroutine.mojo @@ -137,7 +137,7 @@ struct Coroutine[type: AnyType, origins: OriginSet]: __disable_del self @always_inline - fn __await__(owned self) -> type as out: + fn __await__(owned self, out result: type): """Suspends the current coroutine until the coroutine is complete. Returns: @@ -150,9 +150,11 @@ struct Coroutine[type: AnyType, origins: OriginSet]: __disable_del self __mlir_op.`co.await`[_type=NoneType]( handle, - __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(out)), + __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(result)), + ) + __mlir_op.`lit.ownership.mark_initialized`( + __get_mvalue_as_litref(result) ) - __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(out)) # ===----------------------------------------------------------------------=== # @@ -220,7 +222,7 @@ struct RaisingCoroutine[type: AnyType, origins: OriginSet]: __disable_del self @always_inline - fn __await__(owned self) raises -> type as out: + fn __await__(owned self, out result: type) raises: """Suspends the current coroutine until the coroutine is complete. Returns: @@ -233,7 +235,7 @@ struct RaisingCoroutine[type: AnyType, origins: OriginSet]: __disable_del self if __mlir_op.`co.await`[_type = __mlir_type.i1]( handle, - __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(out)), + __mlir_op.`lit.ref.to_pointer`(__get_mvalue_as_litref(result)), __mlir_op.`lit.ref.to_pointer`( __get_mvalue_as_litref(__get_nearest_error_slot()) ), @@ -242,4 +244,6 @@ struct RaisingCoroutine[type: AnyType, origins: OriginSet]: __get_mvalue_as_litref(__get_nearest_error_slot()) ) __mlir_op.`lit.raise`() - __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(out)) + __mlir_op.`lit.ownership.mark_initialized`( + __get_mvalue_as_litref(result) + ) diff --git a/stdlib/src/builtin/int.mojo b/stdlib/src/builtin/int.mojo index 2c9a13234b..92cb98be75 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -1154,7 +1154,7 @@ struct Int( @doc_private @staticmethod - fn try_from_python(obj: PythonObject) raises -> Self as result: + fn try_from_python(obj: PythonObject, out result: Self) raises: """Construct an `Int` from a Python integer value. Raises: diff --git a/stdlib/src/builtin/simd.mojo b/stdlib/src/builtin/simd.mojo index 2471fbf58a..d93be3a050 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/stdlib/src/builtin/simd.mojo @@ -2329,7 +2329,7 @@ struct SIMD[type: DType, size: Int]( ](self, value, Int64(offset)) @always_inline("nodebug") - fn join(self, other: Self) -> SIMD[type, 2 * size] as result: + fn join(self, other: Self, out result: SIMD[type, 2 * size]): """Concatenates the two vectors together. Args: diff --git a/stdlib/src/collections/deque.mojo b/stdlib/src/collections/deque.mojo index a0bb3cd262..284fb630da 100644 --- a/stdlib/src/collections/deque.mojo +++ b/stdlib/src/collections/deque.mojo @@ -794,7 +794,7 @@ struct Deque[ElementType: CollectionElement]( return (self._data + self._head)[] - fn pop(mut self) raises -> ElementType as element: + fn pop(mut self, out element: ElementType) raises: """Removes and returns the element from the right side of the deque. Returns: @@ -818,7 +818,7 @@ struct Deque[ElementType: CollectionElement]( return - fn popleft(mut self) raises -> ElementType as element: + fn popleft(mut self, out element: ElementType) raises: """Removes and returns the element from the left side of the deque. Returns: diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/stdlib/src/memory/unsafe_pointer.mojo index f4971c68af..047bb61ac7 100644 --- a/stdlib/src/memory/unsafe_pointer.mojo +++ b/stdlib/src/memory/unsafe_pointer.mojo @@ -154,13 +154,14 @@ struct UnsafePointer[ @always_inline("nodebug") fn address_of( ref [address_space]arg: type, - ) -> UnsafePointer[ - type, - address_space=address_space, - alignment=1, - origin=MutableAnyOrigin - # TODO: Propagate origin of the argument. - ] as result: + out result: UnsafePointer[ + type, + address_space=address_space, + alignment=1, + origin=MutableAnyOrigin + # TODO: Propagate origin of the argument. + ], + ): """Gets the address of the argument. Args: diff --git a/stdlib/src/utils/index.mojo b/stdlib/src/utils/index.mojo index b526aa84ff..0ea7685fe4 100644 --- a/stdlib/src/utils/index.mojo +++ b/stdlib/src/utils/index.mojo @@ -454,9 +454,10 @@ struct IndexList[ @always_inline("nodebug") fn canonicalize( self, - ) -> IndexList[ - size, element_bitwidth = bitwidthof[Int](), unsigned=False - ] as result: + out result: IndexList[ + size, element_bitwidth = bitwidthof[Int](), unsigned=False + ], + ): """Canonicalizes the IndexList. Returns: @@ -772,11 +773,14 @@ struct IndexList[ @always_inline fn cast[ type: DType - ](self) -> IndexList[ - size, - element_bitwidth = bitwidthof[type](), - unsigned = _is_unsigned[type](), - ] as result: + ]( + self, + out result: IndexList[ + size, + element_bitwidth = bitwidthof[type](), + unsigned = _is_unsigned[type](), + ], + ): """Casts to the target DType. Parameters: @@ -803,9 +807,12 @@ struct IndexList[ *, element_bitwidth: Int = Self.element_bitwidth, unsigned: Bool = Self.unsigned, - ](self) -> IndexList[ - size, element_bitwidth=element_bitwidth, unsigned=unsigned - ] as result: + ]( + self, + out result: IndexList[ + size, element_bitwidth=element_bitwidth, unsigned=unsigned + ], + ): """Casts to the target DType. Parameters: @@ -837,9 +844,12 @@ fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False, -](x: T0) -> IndexList[ - 1, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: T0, + out result: IndexList[ + 1, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 1-D Index from the given value. Parameters: @@ -859,9 +869,12 @@ fn Index[ @always_inline fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False -](x: UInt) -> IndexList[ - 1, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: UInt, + out result: IndexList[ + 1, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 1-D Index from the given value. Parameters: @@ -884,9 +897,13 @@ fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False, -](x: T0, y: T1) -> IndexList[ - 2, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: T0, + y: T1, + out result: IndexList[ + 2, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 2-D Index from the given values. Parameters: @@ -908,9 +925,13 @@ fn Index[ @always_inline fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False -](x: UInt, y: UInt) -> IndexList[ - 2, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: UInt, + y: UInt, + out result: IndexList[ + 2, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 2-D Index from the given values. Parameters: @@ -935,9 +956,14 @@ fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False, -](x: T0, y: T1, z: T2) -> IndexList[ - 3, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: T0, + y: T1, + z: T2, + out result: IndexList[ + 3, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 3-D Index from the given values. Parameters: @@ -967,9 +993,15 @@ fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False, -](x: T0, y: T1, z: T2, w: T3) -> IndexList[ - 4, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: T0, + y: T1, + z: T2, + w: T3, + out result: IndexList[ + 4, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 4-D Index from the given values. Parameters: @@ -1002,9 +1034,16 @@ fn Index[ *, element_bitwidth: Int = bitwidthof[Int](), unsigned: Bool = False, -](x: T0, y: T1, z: T2, w: T3, v: T4) -> IndexList[ - 5, element_bitwidth=element_bitwidth, unsigned=unsigned -] as result: +]( + x: T0, + y: T1, + z: T2, + w: T3, + v: T4, + out result: IndexList[ + 5, element_bitwidth=element_bitwidth, unsigned=unsigned + ], +): """Constructs a 5-D Index from the given values. Parameters: diff --git a/stdlib/test/os/path/test_expandvars.mojo b/stdlib/test/os/path/test_expandvars.mojo index 4dccce1208..fead55656d 100644 --- a/stdlib/test/os/path/test_expandvars.mojo +++ b/stdlib/test/os/path/test_expandvars.mojo @@ -22,7 +22,7 @@ from testing import assert_equal struct EnvVar: var name: String - fn __init__(out self, name: String, value: String) -> None: + fn __init__(out self, name: String, value: String): self.name = name _ = os.setenv(name, value) From a0e2311ebdec34b6b13debb1ee56eb2a3cf1c39a Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Sun, 8 Dec 2024 09:04:39 -0800 Subject: [PATCH 116/119] [Docs] Implicit conversion updates. Updates for the new default explicit constructors & `@implicit` decorator. MODULAR_ORIG_COMMIT_REV_ID: ef4ab402b9e2c63747f26f7ab4e6e3208859a8d7 --- docs/manual/decorators/implicit.md | 40 +++++++++++++++ docs/manual/decorators/index.mdx | 1 + docs/manual/lifecycle/life.mdx | 82 +++++++++++++++--------------- docs/manual/parameters/index.mdx | 2 +- docs/manual/variables.mdx | 16 ++++-- 5 files changed, 94 insertions(+), 47 deletions(-) create mode 100644 docs/manual/decorators/implicit.md diff --git a/docs/manual/decorators/implicit.md b/docs/manual/decorators/implicit.md new file mode 100644 index 0000000000..1e9cd07e0b --- /dev/null +++ b/docs/manual/decorators/implicit.md @@ -0,0 +1,40 @@ +--- +title: '@implicit' +description: Marks a constructor as eligible for implicit conversion. +codeTitle: true + +--- + +You can add the `@implicit` decorator on any single-argument constructor to +identify it as eligible for implicit conversion. + +For example: + +```mojo +struct MyInt: + var value: Int + + @implicit + fn __init__(out self, value: Int): + self.value = value + + fn __init__(out self, value: Float64): + self.value = int(value) + + +``` + +This implicit conversion constructor allows you to pass an `Int` to a function +that takes a `MyInt` argument, or assign an `Int` to a variable of type `MyInt`. +However, the constructor that takes a `Float64` value is **not** an implicit +conversion constructor, so it must be invoked explicitly: + +```mojo +fn func(n: MyInt): + print("MyInt value: ", n.value) + +fn main(): + func(Int(42)) # Implicit conversion from Int: OK + func(MyInt(Float64(4.2))) # Explicit conversion from Float64: OK + func(Float64(4.2)) # Error: can't convert Float64 to MyInt +``` diff --git a/docs/manual/decorators/index.mdx b/docs/manual/decorators/index.mdx index 2a65a9f213..058580e41e 100644 --- a/docs/manual/decorators/index.mdx +++ b/docs/manual/decorators/index.mdx @@ -9,6 +9,7 @@ listing: contents: - always-inline.md - copy-capture.md + - implicit.md - nonmaterializable.md - parameter.md - register-passable.md diff --git a/docs/manual/lifecycle/life.mdx b/docs/manual/lifecycle/life.mdx index 91646caa5f..c852c4c700 100644 --- a/docs/manual/lifecycle/life.mdx +++ b/docs/manual/lifecycle/life.mdx @@ -153,12 +153,16 @@ struct MyPet: Mojo supports implicit conversion from one type to another. Implicit conversion can happen when one of the following occurs: -* You assign a value of one type to a variable with a different type. -* You pass a value of one type to a function that requires a different type. +- You assign a value of one type to a variable with a different type. +- You pass a value of one type to a function that requires a different type. In both cases, implicit conversion is supported when the target type -defines a constructor that takes a single required, non-keyword argument of the -source type. For example: +defines a constructor that meets the following criteria: + +- Is declared with the `@implicit` decorator. +- Has a single required, non-keyword argument of the source type. + +For example: ```mojo var a = Source() @@ -170,7 +174,9 @@ Mojo implicitly converts the `Source` value in `a` to a `Target` value if ```mojo struct Target: - fn __init__(out self, s: Source): ... + + @implicit + fn __init__(out self, s: Source): ... ``` With implicit conversion, the assignment above is essentially identical to: @@ -179,26 +185,22 @@ With implicit conversion, the assignment above is essentially identical to: var b = Target(a) ``` +In general, types should only support implicit conversions when the conversion +lossless, and ideally inexpensive. For example, converting an integer to a +floating-point number is usually lossless (except for very large positive and +negative integers, where the conversion may be approximate), but converting a +floating-point number to an integer is very likely to lose information. So +Mojo supports implicit conversion from `Int` to `Float64`, but not the reverse. + The constructor used for implicit conversion can take optional arguments, so the following constructor would also support implicit conversion from `Source` to `Target`: ```mojo struct Target: - fn __init__(out self, s: Source, reverse: Bool = False): ... -``` - -Implicit conversion also occurs if the type doesn't declare its own constructor, -but instead uses the [`@value` decorator](#value-decorator), *and* the type -has only one field. That's because Mojo automatically creates a member-wise -constructor for each field, and when there is only one field, that synthesized -constructor works exactly like a conversion constructor. For example, this -type also can convert a `Source` value to a `Target` value: -```mojo -@value -struct Target: - var s: Source + @implicit + fn __init__(out self, s: Source, reverse: Bool = False): ... ``` Implicit conversion can fail if Mojo can't unambiguously match the conversion to @@ -209,41 +211,39 @@ convert the values: ```mojo struct A: - fn __init__(out self, s: Source): ... + @implicit + fn __init__(out self, s: Source): ... struct B: - fn __init__(out self, s: Source): ... + @implicit + fn __init__(out self, s: Source): ... -struct Target: - fn __init__(out self, a: A): ... - fn __init__(out self, b: B): ... +struct OverloadedTarget: + @implicit + fn __init__(out self, a: A): ... + @implicit + fn __init__(out self, b: B): ... -# Fails -var t = Target(Source()) +var t = OverloadedTarget(Source()) # Error: ambiguous call to '__init__': each + # candidate requires 1 implicit conversion ``` -In this case, removing either one of the target type's constructors will fix the -problem. - -If you want to define a single-argument constructor, but you **don't** want -the types to implicitly convert, you can define the constructor with a -[keyword-only argument](/mojo/manual/functions#positional-only-and-keyword-only-arguments): +In this case, you can fix the issue by explicitly casting to one of the +intermediate types. For example: ```mojo -struct Target: - # does not support implicit conversion - fn __init__(out self, *, source: Source): ... - -# the constructor must be called with a keyword -var t = Target(source=a) +var t = OverloadedTarget(A(Source())) # OK ``` -:::note +Mojo applies at most one implicit conversion to a variable. For example: -In the future we intend to provide a more explicit method of declaring whether -a constructor should support implicit conversion. +```mojo +var t: OverloadedTarget = Source() # Error: can't implicitly convert Source + # to Target +``` -::: +Would fail because there's no direct conversion from `Source` to +`OverloadedTarget`. ## Copy constructor diff --git a/docs/manual/parameters/index.mdx b/docs/manual/parameters/index.mdx index 9b3ba3250f..fae5e5f72c 100644 --- a/docs/manual/parameters/index.mdx +++ b/docs/manual/parameters/index.mdx @@ -378,7 +378,7 @@ struct MyInt: """A type that is implicitly convertible to `Int`.""" var value: Int - @always_inline("nodebug") + @implicit fn __init__(out self, _a: Int): self.value = _a diff --git a/docs/manual/variables.mdx b/docs/manual/variables.mdx index 6b77b88f0f..9247ff5c9f 100644 --- a/docs/manual/variables.mdx +++ b/docs/manual/variables.mdx @@ -183,7 +183,7 @@ its own type. For example, if you assign an integer to a variable that has a floating-point type, it converts the value instead of giving a compiler error: ```mojo -var number: Float64 = 1 +var number: Float64 = Int(1) ``` ```output @@ -191,8 +191,13 @@ var number: Float64 = 1 ``` As shown above, value assignment can be converted into a constructor call if the -target type has a constructor that takes a single argument that matches the -value being assigned. So, this code uses the `Float64` constructor that takes an +target type has a constructor that meets the following criteria: + +- It's decorated with the `@implicit` decorator. + +- It takes a single required argument that matches the value being assigned. + +So, this code uses the `Float64` constructor that takes an integer: `__init__(out self, value: Int)`. In general, implicit conversions should only be supported where the conversion @@ -200,7 +205,7 @@ is lossless. Implicit conversion follows the logic of [overloaded functions](/mojo/manual/functions#overloaded-functions). If the destination -type has a single-argument constructor that takes an argument of the source +type has a viable implicit conversion constructor for the source type, it can be invoked for implicit conversion. So assigning an integer to a `Float64` variable is exactly the same as this: @@ -215,7 +220,8 @@ implicitly convert to the required type (using one of the type's overloaded constructors). For example, you can pass an `Int` to a function that expects a `Float64`, -because `Float64` includes a constructor that takes an `Int`: +because `Float64` includes an implicit conversion constructor that takes an +`Int`: ```mojo fn take_float(value: Float64): From df36841822bc04ba3e757b773ef5ac622219165d Mon Sep 17 00:00:00 2001 From: abdul dakkak Date: Sun, 8 Dec 2024 09:54:14 -0800 Subject: [PATCH 117/119] [******][GPU] Do not run gpu tests with assertions on MODULAR_ORIG_COMMIT_REV_ID: ae0b65162253dd2e39cf820d2be615f4678da830 --- stdlib/test/lit.cfg.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stdlib/test/lit.cfg.py b/stdlib/test/lit.cfg.py index 55976ecfe6..67d1f613b2 100644 --- a/stdlib/test/lit.cfg.py +++ b/stdlib/test/lit.cfg.py @@ -78,8 +78,9 @@ def has_not(): # with assertions enabled. config.substitutions.insert(1, ("%bare-mojo", "mojo")) - # NOTE: Right now this is the same as %mojo but we should start testing + # NOTE: Right now these are the same as %mojo but we should start testing # with debug info as well + config.substitutions.insert(0, ("%mojo-no-debug-no-assert", "mojo")) config.substitutions.insert(0, ("%mojo-no-debug", base_mojo_command)) # The `mojo` nightly compiler ships with its own `stdlib.mojopkg`. For the From 58fcc1a39ae19694ab77859486d7ea9159771283 Mon Sep 17 00:00:00 2001 From: Connor Gray Date: Sun, 8 Dec 2024 22:47:27 -0600 Subject: [PATCH 118/119] [stdlib] docs: Update changelog to reflect recent changes to `Origin` MODULAR_ORIG_COMMIT_REV_ID: 0d3fca509ce444c56e0cb65814e2696150e86b18 --- docs/changelog.md | 13 +++++++++++++ stdlib/src/builtin/type_aliases.mojo | 12 ++++++++++++ 2 files changed, 25 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 0576359789..a57e0db1b2 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -485,6 +485,19 @@ what we publish. for more information and rationale. As a consequence the `__lifetime_of()` operator is now named `__origin_of()`. +- `Origin` is now a complete wrapper around the MLIR origin type. + + - The `Origin.type` alias has been renamed to `_mlir_origin`. In parameter + lists, you can now write just `Origin[..]`, instead of `Origin[..].type`. + + - `ImmutableOrigin` and `MutableOrigin` are now, respectively, just aliases + for `Origin[False]` and `Origin[True]`. + + - `Origin` struct values are now supported in the brackets of a `ref [..]` + argument. + + - Added `Origin.cast_from` for casting the mutability of an origin value. + - You can now use the `+=` and `*` operators on a `StringLiteral` at compile time using the `alias` keyword: diff --git a/stdlib/src/builtin/type_aliases.mojo b/stdlib/src/builtin/type_aliases.mojo index b3358188b5..762746f8c2 100644 --- a/stdlib/src/builtin/type_aliases.mojo +++ b/stdlib/src/builtin/type_aliases.mojo @@ -67,6 +67,18 @@ struct Origin[is_mutable: Bool]: Safety: This is an UNSAFE operation if used to cast an immutable origin to a mutable origin. + + Examples: + + Cast a mutable origin to be immutable: + + ```mojo + struct Container[mut: Bool, //, origin: Origin[mut]]: + var data: Int + + fn imm_borrow(self) -> Container[ImmutableOrigin.cast_from[origin].result]: + # ... + ``` """ # ===-------------------------------------------------------------------===# From 30bf31e81eaf98d5bb6e12c5fd1576780839a1ed Mon Sep 17 00:00:00 2001 From: modularbot Date: Mon, 9 Dec 2024 17:09:00 +0000 Subject: [PATCH 119/119] Update lockfiles to point to latest nightly version: 24.6.0.dev2024120905 --- examples/life/magic.lock | 1085 ++++++++++++++++----------------- examples/magic.lock | 899 ++++++++++++++------------- examples/notebooks/magic.lock | 897 ++++++++++++++------------- examples/operators/magic.lock | 899 ++++++++++++++------------- magic.lock | 899 ++++++++++++++------------- 5 files changed, 2314 insertions(+), 2365 deletions(-) diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 78ae0c08bf..c3b6a5b2ae 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -17,18 +17,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -49,7 +49,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -82,7 +82,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda @@ -152,7 +152,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -171,12 +171,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda @@ -185,13 +185,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -199,7 +199,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda @@ -250,11 +250,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -275,8 +275,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_1.conda @@ -299,18 +298,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -331,7 +330,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -364,7 +363,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -434,7 +433,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -453,12 +452,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda @@ -467,13 +466,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -481,7 +480,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.43.4-h2f0025b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda @@ -532,11 +531,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -557,8 +556,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h57736b2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2024.1-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_1.conda @@ -578,18 +576,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -601,7 +599,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_1.conda @@ -609,7 +607,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -641,7 +639,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda @@ -702,7 +700,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda @@ -717,12 +715,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda @@ -731,13 +729,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -745,7 +743,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda @@ -794,11 +792,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -1136,107 +1134,104 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h9b725a8_10 - build_number: 10 + build: h35eccd0_12 + build_number: 12 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - sha256: 63cb8c25e0a26be4261d4271de525e7e33aefe9d9b001b8abfa5c9ac69c3dab3 - md5: 17c90d9eb8c6842fd739dc5445ce9962 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 + md5: 1109d5293b724ca16b61452accfdb442 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92355 - timestamp: 1731733738919 + size: 92279 + timestamp: 1733611476546 - kind: conda name: aws-c-auth version: 0.8.0 - build: hac900a4_10 - build_number: 10 + build: h89ba3c0_12 + build_number: 12 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - sha256: 85c8500ae0570f0d39e6661a120c653e43f0f5f984e2954c44fd358a87776892 - md5: 9ecaef75ebd666dda7caa79154183b02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 + md5: c0e2e6c3aa8c309af0ba09fc7d949407 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111853 - timestamp: 1731733547677 + size: 112242 + timestamp: 1733611425746 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb88c0a9_10 - build_number: 10 + build: ha4f867e_12 + build_number: 12 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - sha256: d2837a84e6bd7d993a83e79f9e240e1465e375f3d57149ea5b1927c6a4133bcc - md5: 409b7ee6d3473cc62bda7280f6ac20d0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc + md5: d889de56d3be691063b71eb826470e29 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107163 - timestamp: 1731733534767 + size: 107663 + timestamp: 1733611397256 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h35473ba_2 - build_number: 2 + version: 0.8.1 + build: h35473ba_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - sha256: 3327a9e65ec531b0c55d17bbcdc436b4e641af1f293d1c2f50e0f16aa79fde60 - md5: 48dc0b3576513622673d3f5f3d163b62 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 + md5: 97c0ccb4d43d880b38f237e746c29ead depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49714 - timestamp: 1731678553709 + size: 49808 + timestamp: 1732038238504 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h5d7ee29_2 - build_number: 2 + version: 0.8.1 + build: h5d7ee29_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - sha256: 2a8c09b33400cf2b7d658e63fd5a6f9b6e9626458f6213b904592fc15220bc92 - md5: 92734dad83d22314205ba73b679710d2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c + md5: fc51a61831a676fe6f922450f51ab6af depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39966 - timestamp: 1731678721786 + size: 40047 + timestamp: 1732038304022 - kind: conda name: aws-c-cal - version: 0.8.0 - build: hecf86a2_2 - build_number: 2 + version: 0.8.1 + build: hecf86a2_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - sha256: 220a37955c120bf2f565fbd5320a82fc4c8b550b2449294bc0509c296cfcb9fa - md5: c54459d686ad9d0502823cacff7e8423 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 + md5: 8350795be14a92d68847c0d4f3c1d59f depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1244,8 +1239,8 @@ packages: - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47477 - timestamp: 1731678510949 + size: 47569 + timestamp: 1732038156682 - kind: conda name: aws-c-common version: 0.10.3 @@ -1341,291 +1336,294 @@ packages: - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h13ead76_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - sha256: 386965fab5f0bed4a6109cdba32579f16bee1b0f76ce1db840ce6f7070188f9f - md5: 55a901b6d4fb9ce1bc8328925b229f0b + build: h873f81a_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 + md5: 32bdd50b43fcc435a8dc5a3c66aafef0 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47528 - timestamp: 1731714690911 + size: 54020 + timestamp: 1731839177415 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h1ffe551_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - sha256: 3b780d6483baa889e8df5aa66ab3c439a9c81331cf2a4799e373f4174768ddd9 - md5: 7cce4dfab184f4bbdfc160789251b3c5 + build: h8ec3972_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 + md5: ced9c97ddf61e4222d548e8bcc863b87 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 53500 - timestamp: 1731714597524 + size: 47491 + timestamp: 1731839300212 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9bacb8c_7 - build_number: 7 + build: hba6c15e_8 + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - sha256: 2b7bb475330942d94bc359171df19d0cf8b326f15c0c7903a59da54a8add621e - md5: 694020125b66632d6577456d2d9d3c74 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 + md5: 102f8b54630d79aff5e0c489f40f926e depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55054 - timestamp: 1731714599360 + size: 55354 + timestamp: 1731839242373 - kind: conda name: aws-c-http - version: 0.9.1 - build: hab05fe4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - sha256: 90a325b6f5371dd2203b643de646967fe57a4bcbbee8c91086abbf9dd733d59a - md5: fb409f7053fa3dbbdf6eb41045a87795 + version: 0.9.2 + build: h48c6dea_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 + md5: a28dd36a1da76042bfb5579005cc6728 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 - - libgcc >=13 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 196945 - timestamp: 1731714483279 + size: 152660 + timestamp: 1732110368931 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf483d09_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - sha256: fca9ed0f0895bab9bf737c8d8a3314556cb893d45c40f0656f21a93502db3089 - md5: d880c40b8fc7d07374c036f93f1359d2 + version: 0.9.2 + build: h697be72_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf + md5: a8b1a2c11a93e615f6e8f33175ff8ff0 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 153315 - timestamp: 1731714621306 + size: 190344 + timestamp: 1732110425530 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf4e072c_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - sha256: b9a262451fc91d2fd4ccfcb6dc11ac61d0152c0db765bfe8d089e3e1b70c2150 - md5: fddc197912c16cb95276077f6c7917c5 + version: 0.9.2 + build: ha5a3ca8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 + md5: b2e017f8a4781ad3af9166edf10b65a8 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190363 - timestamp: 1731714613945 + size: 197338 + timestamp: 1732110324356 - kind: conda name: aws-c-io - version: 0.15.2 - build: h10eb1bc_2 - build_number: 2 + version: 0.15.3 + build: h0155602_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - sha256: b8e4206ee1fa58453535c1c08c6aca5bdc92cde026bf7ec20d038786f813239b - md5: 7cdf478bb4feae1a93319f6e3381b8a9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c + md5: 431c201b11eee90fd120844557a62b02 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 162624 - timestamp: 1731702570075 + size: 161664 + timestamp: 1732097310449 - kind: conda name: aws-c-io - version: 0.15.2 - build: h39f8ad8_2 - build_number: 2 + version: 0.15.3 + build: h30cefa2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - sha256: b14e32f024f6be1610dccfdb6371e101cba204d24f37c2a63d9b6380ac74ac17 - md5: 3b49f1dd8f20bead8b222828cfdad585 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc + md5: 8b8dc361de09e5b6227165a876e55cb7 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 license: Apache-2.0 license_family: Apache - size: 137610 - timestamp: 1731702839896 + size: 136662 + timestamp: 1732097382517 - kind: conda name: aws-c-io - version: 0.15.2 - build: hdeadb07_2 - build_number: 2 + version: 0.15.3 + build: ha35c7d9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - sha256: 1636136a5d882b4aaa13ea8b7de8cf07038a6878872e3c434df9daf478cee594 - md5: 461a1eaa075fd391add91bcffc9de0c1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db + md5: 97960f380abe1ba3157fe63312e35b07 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 159368 - timestamp: 1731702542973 + size: 158012 + timestamp: 1732097264673 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h28a5e6a_8 - build_number: 8 + build: h2cca791_9 + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - sha256: aad8c9a5c24953cdebf17efa7ec06b5639e14072d4fa70c5c0607d7ad913ba88 - md5: 5250ce3b5154c0347b7576015a7c6cef + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 + md5: 090674d608454e979ce77bc8ee735868 depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169040 - timestamp: 1731734203264 + size: 169690 + timestamp: 1733688313938 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h68a0d7e_8 - build_number: 8 + build: h3aaadf4_9 + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - sha256: 837c24c105624e16ace94b4b566ffe45231ff275339c523571ebd45946926156 - md5: 9e3ac70d27e7591b1310a690768cfe27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 + md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 134573 - timestamp: 1731734281038 + size: 135051 + timestamp: 1733688394116 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h7bd072d_8 - build_number: 8 + build: h56e9cca_9 + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - sha256: 51d3d87a47c642096e2ce389a169aec2e26958042e9130857552a12d65a19045 - md5: 0e9d67838114c0dbd267a9311268b331 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 + md5: f75642fe24ae4131f554cbacd6df53e3 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194447 - timestamp: 1731734668760 + size: 194705 + timestamp: 1733688770217 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h29aef15_0 + build: h3c51cf6_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb - md5: 98609602eb077c7b5225d3aa1467f789 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 + md5: e326ddae95b3ec96a31aded04c834175 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117067 - timestamp: 1733565203669 + size: 117896 + timestamp: 1733694002769 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h3a84f74_0 + build: h6ad95d4_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d - md5: a13702b87657cf2d0cdd338fe55f4ba1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e + md5: 682c079ec089d47bb7142f12b3275e4f depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113877 - timestamp: 1733565162763 + size: 113741 + timestamp: 1733693956970 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h840aca7_0 + build: hca3a6f1_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 - md5: 1d33c89e2462b6b0056bfb883b76d2fb + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c + md5: 0b4e647cae3ce85ec991c6e3b8d12bda depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 98296 - timestamp: 1733565277623 + size: 97530 + timestamp: 1733694097526 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1727,19 +1725,20 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.7 - build: h6c346da_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda - sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 - md5: cf87fc73eee6dbfc12dec79444d5dfc0 + build: h318f0b1_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd + md5: 9748d0527695a64aa2eb45e891ea188d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 @@ -1747,59 +1746,58 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283237 - timestamp: 1733588714381 + size: 355045 + timestamp: 1733744656604 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha310de4_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda - sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a - md5: 77769ed013cbf8824c1927407ea03c69 + build: hacb6b83_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 + md5: 27ce3ed5b7e55370a9fea2dda2b3245a depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236862 - timestamp: 1733588815005 + size: 283993 + timestamp: 1733744571881 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha6b94fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda - sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca - md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d + build: hc2c2bbc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 + md5: 5450324f7b48dff1f6ed5484bf830972 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 353873 - timestamp: 1733588735223 + size: 236331 + timestamp: 1733744737078 - kind: conda name: aws-sdk-cpp version: 1.11.458 @@ -2348,30 +2346,6 @@ packages: license: ISC size: 158482 timestamp: 1725019034582 -- kind: conda - name: cairo - version: 1.18.0 - build: hb4a6bf7_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda - sha256: f7603b7f6ee7c6e07c23d77302420194f4ec1b8e8facfff2b6aab17c7988a102 - md5: 08bd0752f3de8a2d8a35fd012f09531f - depends: - - __osx >=11.0 - - fontconfig >=2.14.2,<3.0a0 - - fonts-conda-ecosystem - - freetype >=2.12.1,<3.0a0 - - icu >=75.1,<76.0a0 - - libcxx >=16 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.4,<1.0a0 - - zlib - license: LGPL-2.1-only or MPL-1.1 - size: 899126 - timestamp: 1721139203735 - kind: conda name: cairo version: 1.18.0 @@ -2433,6 +2407,30 @@ packages: license: LGPL-2.1-only or MPL-1.1 size: 983604 timestamp: 1721138900054 +- kind: conda + name: cairo + version: 1.18.2 + build: h6a3b0d2_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_0.conda + sha256: fe941b50a60edb664f22de5fe48251c8b9fd2e844f6e35d7535e28a5d4f4f894 + md5: 830793d58ec68f117c51e1d8d6e2133a + depends: + - __osx >=11.0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.43.4,<1.0a0 + - zlib + license: LGPL-2.1-only or MPL-1.1 + size: 894944 + timestamp: 1733698883301 - kind: conda name: certifi version: 2024.8.30 @@ -2658,19 +2656,20 @@ packages: - kind: conda name: deprecated version: 1.2.15 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee - md5: ca75e235b44ab995655fae392f99595e + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 depends: - - python >=2.7 + - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14182 - timestamp: 1731836933516 + size: 14297 + timestamp: 1733662697343 - kind: conda name: dill version: 0.3.7 @@ -3632,14 +3631,13 @@ packages: timestamp: 1732707871414 - kind: conda name: httpx - version: 0.28.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.28.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 - md5: 8a4a83ba566c6b5c718dd0531a362d01 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - anyio - certifi @@ -3648,8 +3646,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63203 - timestamp: 1733501478172 + size: 63082 + timestamp: 1733663449209 - kind: conda name: huggingface_hub version: 0.26.5 @@ -6866,50 +6864,47 @@ packages: timestamp: 1716828607917 - kind: conda name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + version: 3.47.2 + build: h3f77e49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 875349 - timestamp: 1730208050020 + size: 850553 + timestamp: 1733762057506 - kind: conda name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + version: 3.47.2 + build: h5eb1b54_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - - __osx >=11.0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 837683 - timestamp: 1730208293578 + size: 1042182 + timestamp: 1733761913736 - kind: conda name: libsqlite - version: 3.47.0 - build: hc4a20ef_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab - md5: a6b185aac10d08028340858f77231b23 + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 1041855 - timestamp: 1730208187962 + size: 873551 + timestamp: 1733761824646 - kind: conda name: libssh2 version: 1.11.1 @@ -7715,76 +7710,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d - md5: d41647f3009da6fe575321d46a741dfa - depends: - - max-core ==24.6.0.dev2024120805 release - - max-python >=24.6.0.dev2024120805,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120805 release - - mblack ==24.6.0.dev2024120805 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 + md5: b13d61319f43570ce681408a1b27d9d5 + depends: + - max-core ==24.6.0.dev2024120905 release + - max-python >=24.6.0.dev2024120905,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024120905 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1733635043550 + size: 9911 + timestamp: 1733721408716 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 - md5: 620d81f38c5da882ee0799e26d86b0ad + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d + md5: 00617be1a2fef13b5630d9cbe92f9d3c depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247607615 - timestamp: 1733634983707 + size: 247639885 + timestamp: 1733721408714 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 - md5: 6e7e581fe4e11d252e8729a6cc564b29 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 + md5: c7ff53814f0c254c75dc7ab8f0c66b38 depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251457302 - timestamp: 1733635043548 + size: 251498878 + timestamp: 1733721396377 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 - md5: 04d8f67fb1a7deb6147da14b60f668d3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 + md5: 71554a4c0e81a1034908bc1cb716b30b depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212001315 - timestamp: 1733635167877 + size: 212030191 + timestamp: 1733721567995 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f - md5: bf821eea63859972e28ce4635cff7dda + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff + md5: 9a6037de6672120d1d6d53673b699d5b depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -7806,18 +7801,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123750844 - timestamp: 1733634983717 + size: 123751303 + timestamp: 1733721408724 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 - md5: 5711b879e00dae9d692d6cf0bcad3717 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 + md5: bc9f6ce493d2beb1089e1e409bb373ba depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -7839,18 +7834,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127399399 - timestamp: 1733635043558 + size: 127400047 + timestamp: 1733721396388 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb - md5: 8737c1d7ff7f04e887c4d80139e2a273 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 + md5: c1b7eb7d1a43e28224bf41220ece9b58 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -7872,17 +7867,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112431285 - timestamp: 1733635167881 + size: 112450493 + timestamp: 1733721567998 - kind: conda name: mblack - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a - md5: 8a48ed658740aaf0063c754fd35e9cce + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 + md5: b34a59910660011ad1f42bfc1ae4ae54 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7892,8 +7887,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130744 - timestamp: 1733635043555 + size: 130740 + timestamp: 1733721408720 - kind: conda name: mdurl version: 0.1.2 @@ -7912,21 +7907,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd - md5: ad285352ec9e9061d8facbf62f708d9d + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 + md5: 4fc85c9cb1efe841b69d339d4da5b3a1 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11369 - timestamp: 1733635043556 + size: 11366 + timestamp: 1733721408720 - kind: conda name: mpg123 version: 1.32.9 @@ -8310,21 +8305,21 @@ packages: - kind: conda name: opentelemetry-api version: 1.28.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - sha256: e267ed59ea8f357c3471defef796ce4f4555eacd9ee0ed2d47d3dd539ee7ee2f - md5: f1307fb38a8fd2220def45ec1691a21c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 + md5: a06f1e9d97c98d26f06675236c9ea554 depends: - deprecated >=1.2.6 - importlib-metadata >=6.0.0,<7.1.0 - - python >=3.8 + - python >=3.9 - setuptools >=16.0 license: Apache-2.0 - license_family: APACHE - size: 44014 - timestamp: 1731985724169 + size: 44242 + timestamp: 1733734361129 - kind: conda name: opentelemetry-exporter-otlp-proto-common version: 1.28.2 @@ -8420,20 +8415,20 @@ packages: - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 - build: pyh10f6f8f_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - sha256: 5e3869ad66082b16d56bab8219fad0c8c09090ec93eb866327eed788fe5c9340 - md5: d95dd6e8a70417e394bb16dad5cff408 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 + md5: e0ada55d18e6bd5a8e61943b4b5d3a8f depends: - deprecated >=1.2.6 - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 81534 - timestamp: 1732067304518 + size: 81099 + timestamp: 1733749104727 - kind: conda name: opusfile version: '0.12' @@ -8783,48 +8778,47 @@ packages: timestamp: 1729065920347 - kind: conda name: pixman - version: 0.43.2 - build: h59595ed_0 + version: 0.44.2 + build: h29eaf8c_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda - sha256: 366d28e2a0a191d6c535e234741e0cd1d94d713f76073d8af4a5ccb2a266121e - md5: 71004cbf7924e19c02746ccde9fd7123 + url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + sha256: 747c58db800d5583fee78e76240bf89cbaeedf7ab1ef339c2990602332b9c4be + md5: 5e2a7acfa2c24188af39e7944e1b3604 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 license: MIT - license_family: MIT - size: 386826 - timestamp: 1706549500138 + size: 381072 + timestamp: 1733698987122 - kind: conda name: pixman - version: 0.43.4 - build: h2f0025b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.43.4-h2f0025b_0.conda - sha256: e145b0d89c800326a20d1afd86c74f9422b81549b17fe53add46c2fa43a4c93e - md5: 81b2ddea4b0eca188da9c5a7aa4b0cff + version: 0.44.2 + build: h2f9eb0b_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + sha256: 28855d4cb2d9fc9a6bd9196dadbaecd6868ec706394cec2f88824a61ba4b1bc0 + md5: fa8e429fdb9e5b757281f69b8cc4330b depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=11.0 + - libcxx >=18 license: MIT - license_family: MIT - size: 295064 - timestamp: 1709240909660 + size: 201076 + timestamp: 1733699127167 - kind: conda name: pixman - version: 0.43.4 - build: hebf3989_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda - sha256: df0ba2710ccdea5c909b63635529797f6eb3635b6fb77ae9cb2f183d08818409 - md5: 0308c68e711cd295aaa026a4f8c4b1e5 + version: 0.44.2 + build: h86a87f0_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda + sha256: 289c88d26530e427234adf7a8eb11e762d2beaf3c0a337c1c9887f60480e33e1 + md5: 95689fc369832398e82d17c56ff5df8a depends: - - libcxx >=16 + - libgcc >=13 + - libstdcxx >=13 license: MIT - license_family: MIT - size: 198755 - timestamp: 1709239846651 + size: 288697 + timestamp: 1733700860569 - kind: conda name: platformdirs version: 4.3.6 @@ -10761,12 +10755,12 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312h8360d73_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - sha256: 7b59759739b5426e17825b26d6ce9df487d1dc254d4e6a92b14a97107eb6daca - md5: 035c6de3c821559bf1af5ec072593bfd + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 @@ -10779,16 +10773,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2259332 - timestamp: 1732657962717 + size: 2258007 + timestamp: 1732734202127 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312ha0d6ea1_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - sha256: 6dbb7e5f3f152210817e8658bc454056e464dee16fd9757508f2417edd44d8b8 - md5: b135e3d9178b255993ea4d72741192f8 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 @@ -10801,16 +10795,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2330899 - timestamp: 1732658129796 + size: 2331194 + timestamp: 1732734303196 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312hf3e4074_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - sha256: fd86f8a5d41622e8f5092913dea48f41de86258583ee449045905a725672fdc2 - md5: 40e8bc575721b4da76712e90e4a9b7fa + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -10822,8 +10816,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1933005 - timestamp: 1732658406859 + size: 1931389 + timestamp: 1732734727624 - kind: conda name: tornado version: 6.4.2 @@ -10907,13 +10901,13 @@ packages: timestamp: 1733367480074 - kind: conda name: transformers - version: 4.46.3 + version: 4.47.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - sha256: 6ae73c0d1197812d8fd6a2c64309fe9abe822feb66b2d330cc61ce9fa60dee0c - md5: 457af723774f077a128515a6fdd536a2 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 + md5: 495745078b8e18fe2dcc3267f4baae0d depends: - datasets !=2.5.0 - filelock @@ -10925,12 +10919,12 @@ packages: - regex !=2019.12.17 - requests - safetensors >=0.4.1 - - tokenizers >=0.20,<0.21 + - tokenizers >=0.21,<0.22 - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3622494 - timestamp: 1731981383171 + size: 3721837 + timestamp: 1733708797762 - kind: conda name: typer version: 0.15.1 @@ -11561,69 +11555,36 @@ packages: - kind: conda name: xorg-libxrender version: 0.9.11 - build: h57736b2_1 - build_number: 1 + build: h86ecc28_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h57736b2_1.conda - sha256: 50c000a26e828313b668902c2ae5ff7956d9d34418b4fc6fc15f73cba31b45e0 - md5: 19fb476dc5cdd51b67719a6342fab237 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h86ecc28_2.conda + sha256: 7862c148e87eb8da9c09aafec22bd63bbd1ee222e1437e1df923f1ff838f60e4 + md5: eef57c0c07175e97d976c2cdfd235c43 depends: - libgcc >=13 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-xorgproto + - xorg-libx11 >=1.8.10,<2.0a0 license: MIT license_family: MIT - size: 38052 - timestamp: 1727530023529 + size: 38333 + timestamp: 1733755940446 - kind: conda name: xorg-libxrender version: 0.9.11 - build: hb9d3cd8_1 - build_number: 1 + build: hb9d3cd8_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - sha256: f1217e902c0b1d8bc5d3ce65e483ebf38b049c823c9117b7198cfb16bd2b9143 - md5: a7a49a8b85122b49214798321e2e96b4 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_2.conda + sha256: a2f533fe2374789413a9dfa1369322573910f4b010fd24386cdd1c5cd977a087 + md5: eef3132295d92678c17ffc8b114b8371 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - xorg-libx11 >=1.8.10,<2.0a0 - - xorg-xorgproto - license: MIT - license_family: MIT - size: 37780 - timestamp: 1727529943015 -- kind: conda - name: xorg-xorgproto - version: '2024.1' - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2024.1-h86ecc28_1.conda - sha256: 3dbbf4cdb5ad82d3479ab2aa68ae67de486a6d57d67f0402d8e55869f6f13aec - md5: 91cef7867bf2b47f614597b59705ff56 - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 566948 - timestamp: 1726847598167 -- kind: conda - name: xorg-xorgproto - version: '2024.1' - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - sha256: 1316680be6edddee0156b86ec1102fc8286f51c1a5440366ed1db596a2dc3731 - md5: 7c21106b851ec72c037b162c216d8f05 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 license: MIT license_family: MIT - size: 565425 - timestamp: 1726846388217 + size: 37638 + timestamp: 1733755897245 - kind: conda name: xxhash version: 0.8.2 diff --git a/examples/magic.lock b/examples/magic.lock index f1671e6345..b0d6852f57 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -14,18 +14,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -43,7 +43,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -63,7 +63,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py311h9ecbd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -114,7 +114,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py311h2dc5d0c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py311h459d7ec_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -144,13 +144,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py311h7db5c69_1.conda @@ -196,11 +196,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py311h182c674_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py311h182c674_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -231,18 +231,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -260,7 +260,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -280,7 +280,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py311ha879c10_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -332,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -349,12 +349,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py311ha09ea12_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py311h58d527c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py311hcd402e7_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -362,13 +362,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py311h848c333_1.conda @@ -414,11 +414,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py311h5e37e04_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py311h5e37e04_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -448,18 +448,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -477,7 +477,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -497,7 +497,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py311h917b07b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda @@ -544,7 +544,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda @@ -558,12 +558,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.11release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.11release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py311h30e7462_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py311heffc1b2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -571,13 +571,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py311h9cb3ce9_1.conda @@ -622,11 +622,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py311h82b0fb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py311h82b0fb8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -859,107 +859,104 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h9b725a8_10 - build_number: 10 + build: h35eccd0_12 + build_number: 12 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - sha256: 63cb8c25e0a26be4261d4271de525e7e33aefe9d9b001b8abfa5c9ac69c3dab3 - md5: 17c90d9eb8c6842fd739dc5445ce9962 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 + md5: 1109d5293b724ca16b61452accfdb442 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92355 - timestamp: 1731733738919 + size: 92279 + timestamp: 1733611476546 - kind: conda name: aws-c-auth version: 0.8.0 - build: hac900a4_10 - build_number: 10 + build: h89ba3c0_12 + build_number: 12 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - sha256: 85c8500ae0570f0d39e6661a120c653e43f0f5f984e2954c44fd358a87776892 - md5: 9ecaef75ebd666dda7caa79154183b02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 + md5: c0e2e6c3aa8c309af0ba09fc7d949407 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111853 - timestamp: 1731733547677 + size: 112242 + timestamp: 1733611425746 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb88c0a9_10 - build_number: 10 + build: ha4f867e_12 + build_number: 12 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - sha256: d2837a84e6bd7d993a83e79f9e240e1465e375f3d57149ea5b1927c6a4133bcc - md5: 409b7ee6d3473cc62bda7280f6ac20d0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc + md5: d889de56d3be691063b71eb826470e29 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107163 - timestamp: 1731733534767 + size: 107663 + timestamp: 1733611397256 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h35473ba_2 - build_number: 2 + version: 0.8.1 + build: h35473ba_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - sha256: 3327a9e65ec531b0c55d17bbcdc436b4e641af1f293d1c2f50e0f16aa79fde60 - md5: 48dc0b3576513622673d3f5f3d163b62 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 + md5: 97c0ccb4d43d880b38f237e746c29ead depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49714 - timestamp: 1731678553709 + size: 49808 + timestamp: 1732038238504 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h5d7ee29_2 - build_number: 2 + version: 0.8.1 + build: h5d7ee29_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - sha256: 2a8c09b33400cf2b7d658e63fd5a6f9b6e9626458f6213b904592fc15220bc92 - md5: 92734dad83d22314205ba73b679710d2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c + md5: fc51a61831a676fe6f922450f51ab6af depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39966 - timestamp: 1731678721786 + size: 40047 + timestamp: 1732038304022 - kind: conda name: aws-c-cal - version: 0.8.0 - build: hecf86a2_2 - build_number: 2 + version: 0.8.1 + build: hecf86a2_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - sha256: 220a37955c120bf2f565fbd5320a82fc4c8b550b2449294bc0509c296cfcb9fa - md5: c54459d686ad9d0502823cacff7e8423 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 + md5: 8350795be14a92d68847c0d4f3c1d59f depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -967,8 +964,8 @@ packages: - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47477 - timestamp: 1731678510949 + size: 47569 + timestamp: 1732038156682 - kind: conda name: aws-c-common version: 0.10.3 @@ -1064,291 +1061,294 @@ packages: - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h13ead76_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - sha256: 386965fab5f0bed4a6109cdba32579f16bee1b0f76ce1db840ce6f7070188f9f - md5: 55a901b6d4fb9ce1bc8328925b229f0b + build: h873f81a_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 + md5: 32bdd50b43fcc435a8dc5a3c66aafef0 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47528 - timestamp: 1731714690911 + size: 54020 + timestamp: 1731839177415 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h1ffe551_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - sha256: 3b780d6483baa889e8df5aa66ab3c439a9c81331cf2a4799e373f4174768ddd9 - md5: 7cce4dfab184f4bbdfc160789251b3c5 + build: h8ec3972_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 + md5: ced9c97ddf61e4222d548e8bcc863b87 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 53500 - timestamp: 1731714597524 + size: 47491 + timestamp: 1731839300212 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9bacb8c_7 - build_number: 7 + build: hba6c15e_8 + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - sha256: 2b7bb475330942d94bc359171df19d0cf8b326f15c0c7903a59da54a8add621e - md5: 694020125b66632d6577456d2d9d3c74 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 + md5: 102f8b54630d79aff5e0c489f40f926e depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55054 - timestamp: 1731714599360 + size: 55354 + timestamp: 1731839242373 - kind: conda name: aws-c-http - version: 0.9.1 - build: hab05fe4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - sha256: 90a325b6f5371dd2203b643de646967fe57a4bcbbee8c91086abbf9dd733d59a - md5: fb409f7053fa3dbbdf6eb41045a87795 + version: 0.9.2 + build: h48c6dea_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 + md5: a28dd36a1da76042bfb5579005cc6728 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 - - libgcc >=13 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 196945 - timestamp: 1731714483279 + size: 152660 + timestamp: 1732110368931 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf483d09_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - sha256: fca9ed0f0895bab9bf737c8d8a3314556cb893d45c40f0656f21a93502db3089 - md5: d880c40b8fc7d07374c036f93f1359d2 + version: 0.9.2 + build: h697be72_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf + md5: a8b1a2c11a93e615f6e8f33175ff8ff0 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 153315 - timestamp: 1731714621306 + size: 190344 + timestamp: 1732110425530 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf4e072c_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - sha256: b9a262451fc91d2fd4ccfcb6dc11ac61d0152c0db765bfe8d089e3e1b70c2150 - md5: fddc197912c16cb95276077f6c7917c5 + version: 0.9.2 + build: ha5a3ca8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 + md5: b2e017f8a4781ad3af9166edf10b65a8 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190363 - timestamp: 1731714613945 + size: 197338 + timestamp: 1732110324356 - kind: conda name: aws-c-io - version: 0.15.2 - build: h10eb1bc_2 - build_number: 2 + version: 0.15.3 + build: h0155602_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - sha256: b8e4206ee1fa58453535c1c08c6aca5bdc92cde026bf7ec20d038786f813239b - md5: 7cdf478bb4feae1a93319f6e3381b8a9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c + md5: 431c201b11eee90fd120844557a62b02 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 162624 - timestamp: 1731702570075 + size: 161664 + timestamp: 1732097310449 - kind: conda name: aws-c-io - version: 0.15.2 - build: h39f8ad8_2 - build_number: 2 + version: 0.15.3 + build: h30cefa2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - sha256: b14e32f024f6be1610dccfdb6371e101cba204d24f37c2a63d9b6380ac74ac17 - md5: 3b49f1dd8f20bead8b222828cfdad585 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc + md5: 8b8dc361de09e5b6227165a876e55cb7 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 license: Apache-2.0 license_family: Apache - size: 137610 - timestamp: 1731702839896 + size: 136662 + timestamp: 1732097382517 - kind: conda name: aws-c-io - version: 0.15.2 - build: hdeadb07_2 - build_number: 2 + version: 0.15.3 + build: ha35c7d9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - sha256: 1636136a5d882b4aaa13ea8b7de8cf07038a6878872e3c434df9daf478cee594 - md5: 461a1eaa075fd391add91bcffc9de0c1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db + md5: 97960f380abe1ba3157fe63312e35b07 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 159368 - timestamp: 1731702542973 + size: 158012 + timestamp: 1732097264673 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h28a5e6a_8 - build_number: 8 + build: h2cca791_9 + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - sha256: aad8c9a5c24953cdebf17efa7ec06b5639e14072d4fa70c5c0607d7ad913ba88 - md5: 5250ce3b5154c0347b7576015a7c6cef + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 + md5: 090674d608454e979ce77bc8ee735868 depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169040 - timestamp: 1731734203264 + size: 169690 + timestamp: 1733688313938 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h68a0d7e_8 - build_number: 8 + build: h3aaadf4_9 + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - sha256: 837c24c105624e16ace94b4b566ffe45231ff275339c523571ebd45946926156 - md5: 9e3ac70d27e7591b1310a690768cfe27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 + md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 134573 - timestamp: 1731734281038 + size: 135051 + timestamp: 1733688394116 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h7bd072d_8 - build_number: 8 + build: h56e9cca_9 + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - sha256: 51d3d87a47c642096e2ce389a169aec2e26958042e9130857552a12d65a19045 - md5: 0e9d67838114c0dbd267a9311268b331 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 + md5: f75642fe24ae4131f554cbacd6df53e3 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194447 - timestamp: 1731734668760 + size: 194705 + timestamp: 1733688770217 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h29aef15_0 + build: h3c51cf6_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb - md5: 98609602eb077c7b5225d3aa1467f789 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 + md5: e326ddae95b3ec96a31aded04c834175 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117067 - timestamp: 1733565203669 + size: 117896 + timestamp: 1733694002769 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h3a84f74_0 + build: h6ad95d4_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d - md5: a13702b87657cf2d0cdd338fe55f4ba1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e + md5: 682c079ec089d47bb7142f12b3275e4f depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113877 - timestamp: 1733565162763 + size: 113741 + timestamp: 1733693956970 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h840aca7_0 + build: hca3a6f1_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 - md5: 1d33c89e2462b6b0056bfb883b76d2fb + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c + md5: 0b4e647cae3ce85ec991c6e3b8d12bda depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 98296 - timestamp: 1733565277623 + size: 97530 + timestamp: 1733694097526 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1450,19 +1450,20 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.7 - build: h6c346da_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda - sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 - md5: cf87fc73eee6dbfc12dec79444d5dfc0 + build: h318f0b1_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd + md5: 9748d0527695a64aa2eb45e891ea188d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 @@ -1470,59 +1471,58 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283237 - timestamp: 1733588714381 + size: 355045 + timestamp: 1733744656604 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha310de4_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda - sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a - md5: 77769ed013cbf8824c1927407ea03c69 + build: hacb6b83_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 + md5: 27ce3ed5b7e55370a9fea2dda2b3245a depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236862 - timestamp: 1733588815005 + size: 283993 + timestamp: 1733744571881 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha6b94fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda - sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca - md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d + build: hc2c2bbc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 + md5: 5450324f7b48dff1f6ed5484bf830972 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 353873 - timestamp: 1733588735223 + size: 236331 + timestamp: 1733744737078 - kind: conda name: aws-sdk-cpp version: 1.11.458 @@ -2222,19 +2222,20 @@ packages: - kind: conda name: deprecated version: 1.2.15 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee - md5: ca75e235b44ab995655fae392f99595e + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 depends: - - python >=2.7 + - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14182 - timestamp: 1731836933516 + size: 14297 + timestamp: 1733662697343 - kind: conda name: dill version: 0.3.7 @@ -2732,14 +2733,13 @@ packages: timestamp: 1732707937311 - kind: conda name: httpx - version: 0.28.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.28.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 - md5: 8a4a83ba566c6b5c718dd0531a362d01 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - anyio - certifi @@ -2748,8 +2748,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63203 - timestamp: 1733501478172 + size: 63082 + timestamp: 1733663449209 - kind: conda name: huggingface_hub version: 0.26.5 @@ -5128,50 +5128,47 @@ packages: timestamp: 1716828607917 - kind: conda name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + version: 3.47.2 + build: h3f77e49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 875349 - timestamp: 1730208050020 + size: 850553 + timestamp: 1733762057506 - kind: conda name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + version: 3.47.2 + build: h5eb1b54_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - - __osx >=11.0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 837683 - timestamp: 1730208293578 + size: 1042182 + timestamp: 1733761913736 - kind: conda name: libsqlite - version: 3.47.0 - build: hc4a20ef_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab - md5: a6b185aac10d08028340858f77231b23 + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 1041855 - timestamp: 1730208187962 + size: 873551 + timestamp: 1733761824646 - kind: conda name: libssh2 version: 1.11.1 @@ -5894,76 +5891,76 @@ packages: timestamp: 1733220925299 - kind: conda name: max - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d - md5: d41647f3009da6fe575321d46a741dfa - depends: - - max-core ==24.6.0.dev2024120805 release - - max-python >=24.6.0.dev2024120805,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120805 release - - mblack ==24.6.0.dev2024120805 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 + md5: b13d61319f43570ce681408a1b27d9d5 + depends: + - max-core ==24.6.0.dev2024120905 release + - max-python >=24.6.0.dev2024120905,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024120905 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1733635043550 + size: 9911 + timestamp: 1733721408716 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 - md5: 620d81f38c5da882ee0799e26d86b0ad + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d + md5: 00617be1a2fef13b5630d9cbe92f9d3c depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247607615 - timestamp: 1733634983707 + size: 247639885 + timestamp: 1733721408714 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 - md5: 6e7e581fe4e11d252e8729a6cc564b29 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 + md5: c7ff53814f0c254c75dc7ab8f0c66b38 depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251457302 - timestamp: 1733635043548 + size: 251498878 + timestamp: 1733721396377 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 - md5: 04d8f67fb1a7deb6147da14b60f668d3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 + md5: 71554a4c0e81a1034908bc1cb716b30b depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212001315 - timestamp: 1733635167877 + size: 212030191 + timestamp: 1733721567995 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.11release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.11release.conda - sha256: a2b71b73a181572fa5c954f5600f8718fa95c939374729ae835752f075b27a34 - md5: 5c5cc7463dcab80905f85cb8b3246055 + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.11release.conda + sha256: 94d3d821551ee202ef270d4fbce8003f35f33d0cc98a92b17f1739caa5623812 + md5: 57061ee2198633af94d4713cdba1ebd7 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.11.* - pillow - fastapi @@ -5985,18 +5982,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123756323 - timestamp: 1733634983714 + size: 123763299 + timestamp: 1733721408721 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.11release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.11release.conda - sha256: 46477a954b3fc2a03aa40af8eea834628b1e7d9f4267d41512248cea7c8cbfd6 - md5: d3607aaaa6f5188f221c71153d71fdaa + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.11release.conda + sha256: 90b94a041502fd79e408c5ab5c9108e6411228fc761c11eab0a568d4a193ed0c + md5: 920b32c37e877ed3073f6ad94f614e8b depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.11.* - pillow - fastapi @@ -6018,18 +6015,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127450091 - timestamp: 1733635043556 + size: 127444260 + timestamp: 1733721396385 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.11release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.11release.conda - sha256: f58dd3d9dec6f7470e64cec203d725efbc2e425b7f9953968f9a0a83f012a606 - md5: 34e265181bb66843e853f6cef005419d + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.11release.conda + sha256: 10ee1c9e5cc1b176238d018234979c15ec95aa8a9795d2917235bc6eda4c730f + md5: 9fb0abe3fe34b82bf8937091140967f0 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.11.* - pillow - fastapi @@ -6051,17 +6048,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112446830 - timestamp: 1733635167880 + size: 112461801 + timestamp: 1733721567997 - kind: conda name: mblack - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a - md5: 8a48ed658740aaf0063c754fd35e9cce + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 + md5: b34a59910660011ad1f42bfc1ae4ae54 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6071,8 +6068,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130744 - timestamp: 1733635043555 + size: 130740 + timestamp: 1733721408720 - kind: conda name: mdurl version: 0.1.2 @@ -6091,21 +6088,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd - md5: ad285352ec9e9061d8facbf62f708d9d + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 + md5: 4fc85c9cb1efe841b69d339d4da5b3a1 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11369 - timestamp: 1733635043556 + size: 11366 + timestamp: 1733721408720 - kind: conda name: multidict version: 6.1.0 @@ -6443,21 +6440,21 @@ packages: - kind: conda name: opentelemetry-api version: 1.28.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - sha256: e267ed59ea8f357c3471defef796ce4f4555eacd9ee0ed2d47d3dd539ee7ee2f - md5: f1307fb38a8fd2220def45ec1691a21c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 + md5: a06f1e9d97c98d26f06675236c9ea554 depends: - deprecated >=1.2.6 - importlib-metadata >=6.0.0,<7.1.0 - - python >=3.8 + - python >=3.9 - setuptools >=16.0 license: Apache-2.0 - license_family: APACHE - size: 44014 - timestamp: 1731985724169 + size: 44242 + timestamp: 1733734361129 - kind: conda name: opentelemetry-exporter-otlp-proto-common version: 1.28.2 @@ -6553,20 +6550,20 @@ packages: - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 - build: pyh10f6f8f_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - sha256: 5e3869ad66082b16d56bab8219fad0c8c09090ec93eb866327eed788fe5c9340 - md5: d95dd6e8a70417e394bb16dad5cff408 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 + md5: e0ada55d18e6bd5a8e61943b4b5d3a8f depends: - deprecated >=1.2.6 - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 81534 - timestamp: 1732067304518 + size: 81099 + timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 @@ -8196,12 +8193,12 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py311h182c674_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py311h182c674_0.conda - sha256: 27006989d4aa4f7d3058ae9d089e0d8c6974ae55bc83d502c00ddee1332fa5ad - md5: c24051d78f982233e6f9fcc313e40a1c + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py311h182c674_0.conda + sha256: 231ecde88bb291437a8060e4eaee74d87318ee635b4ceac5d74fc82343f137d0 + md5: 7e9304388022ef7f7f21b94953a5181b depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 @@ -8214,16 +8211,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2260744 - timestamp: 1732658087592 + size: 2264312 + timestamp: 1732734291587 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py311h5e37e04_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py311h5e37e04_0.conda - sha256: 0c40f1b8ff2c5592ab5919ec1f0bb6f7bef8297d8da8b97a777310db7c7e0611 - md5: cb0eccdce4d155ef9050548c319a35c5 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py311h5e37e04_0.conda + sha256: 02fad918a39c9e10feedac2937e3bee619fa49707734ae478e0342a85784fb98 + md5: 833844038ba171a27678bf201c3f4c74 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 @@ -8236,16 +8233,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2330115 - timestamp: 1732658113825 + size: 2329972 + timestamp: 1732734458949 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py311h82b0fb8_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py311h82b0fb8_0.conda - sha256: 8edbc016a3d33a254b5a6ba67822491a529cfe1206ee304f32bae987b795a8e6 - md5: 70ca9ca07b29c8faac8c1ea0576d0a0c + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py311h82b0fb8_0.conda + sha256: 8f2a22323b67a75d57192d37bb031fb44a51f013d3232f18a0df3c453ea68ab9 + md5: d1543e49d59c7537c7c97f6d70544b00 depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -8257,8 +8254,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1935376 - timestamp: 1732658323422 + size: 1935264 + timestamp: 1732734431057 - kind: conda name: tornado version: 6.4.2 @@ -8342,13 +8339,13 @@ packages: timestamp: 1733367480074 - kind: conda name: transformers - version: 4.46.3 + version: 4.47.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - sha256: 6ae73c0d1197812d8fd6a2c64309fe9abe822feb66b2d330cc61ce9fa60dee0c - md5: 457af723774f077a128515a6fdd536a2 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 + md5: 495745078b8e18fe2dcc3267f4baae0d depends: - datasets !=2.5.0 - filelock @@ -8360,12 +8357,12 @@ packages: - regex !=2019.12.17 - requests - safetensors >=0.4.1 - - tokenizers >=0.20,<0.21 + - tokenizers >=0.21,<0.22 - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3622494 - timestamp: 1731981383171 + size: 3721837 + timestamp: 1733708797762 - kind: conda name: typer version: 0.15.1 diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index 2a552de926..9782182c18 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -19,18 +19,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -57,7 +57,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -80,7 +80,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -148,7 +148,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -166,13 +166,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -185,13 +185,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -258,12 +258,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -307,18 +307,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -345,7 +345,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -368,7 +368,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -437,7 +437,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -455,13 +455,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -474,13 +474,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -547,12 +547,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -596,18 +596,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -634,7 +634,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -657,7 +657,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda @@ -721,7 +721,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda @@ -736,13 +736,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.0.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -755,13 +755,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda @@ -829,12 +829,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -1221,107 +1221,104 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h9b725a8_10 - build_number: 10 + build: h35eccd0_12 + build_number: 12 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - sha256: 63cb8c25e0a26be4261d4271de525e7e33aefe9d9b001b8abfa5c9ac69c3dab3 - md5: 17c90d9eb8c6842fd739dc5445ce9962 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 + md5: 1109d5293b724ca16b61452accfdb442 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92355 - timestamp: 1731733738919 + size: 92279 + timestamp: 1733611476546 - kind: conda name: aws-c-auth version: 0.8.0 - build: hac900a4_10 - build_number: 10 + build: h89ba3c0_12 + build_number: 12 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - sha256: 85c8500ae0570f0d39e6661a120c653e43f0f5f984e2954c44fd358a87776892 - md5: 9ecaef75ebd666dda7caa79154183b02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 + md5: c0e2e6c3aa8c309af0ba09fc7d949407 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111853 - timestamp: 1731733547677 + size: 112242 + timestamp: 1733611425746 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb88c0a9_10 - build_number: 10 + build: ha4f867e_12 + build_number: 12 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - sha256: d2837a84e6bd7d993a83e79f9e240e1465e375f3d57149ea5b1927c6a4133bcc - md5: 409b7ee6d3473cc62bda7280f6ac20d0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc + md5: d889de56d3be691063b71eb826470e29 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107163 - timestamp: 1731733534767 + size: 107663 + timestamp: 1733611397256 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h35473ba_2 - build_number: 2 + version: 0.8.1 + build: h35473ba_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - sha256: 3327a9e65ec531b0c55d17bbcdc436b4e641af1f293d1c2f50e0f16aa79fde60 - md5: 48dc0b3576513622673d3f5f3d163b62 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 + md5: 97c0ccb4d43d880b38f237e746c29ead depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49714 - timestamp: 1731678553709 + size: 49808 + timestamp: 1732038238504 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h5d7ee29_2 - build_number: 2 + version: 0.8.1 + build: h5d7ee29_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - sha256: 2a8c09b33400cf2b7d658e63fd5a6f9b6e9626458f6213b904592fc15220bc92 - md5: 92734dad83d22314205ba73b679710d2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c + md5: fc51a61831a676fe6f922450f51ab6af depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39966 - timestamp: 1731678721786 + size: 40047 + timestamp: 1732038304022 - kind: conda name: aws-c-cal - version: 0.8.0 - build: hecf86a2_2 - build_number: 2 + version: 0.8.1 + build: hecf86a2_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - sha256: 220a37955c120bf2f565fbd5320a82fc4c8b550b2449294bc0509c296cfcb9fa - md5: c54459d686ad9d0502823cacff7e8423 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 + md5: 8350795be14a92d68847c0d4f3c1d59f depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -1329,8 +1326,8 @@ packages: - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47477 - timestamp: 1731678510949 + size: 47569 + timestamp: 1732038156682 - kind: conda name: aws-c-common version: 0.10.3 @@ -1426,291 +1423,294 @@ packages: - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h13ead76_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - sha256: 386965fab5f0bed4a6109cdba32579f16bee1b0f76ce1db840ce6f7070188f9f - md5: 55a901b6d4fb9ce1bc8328925b229f0b + build: h873f81a_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 + md5: 32bdd50b43fcc435a8dc5a3c66aafef0 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47528 - timestamp: 1731714690911 + size: 54020 + timestamp: 1731839177415 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h1ffe551_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - sha256: 3b780d6483baa889e8df5aa66ab3c439a9c81331cf2a4799e373f4174768ddd9 - md5: 7cce4dfab184f4bbdfc160789251b3c5 + build: h8ec3972_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 + md5: ced9c97ddf61e4222d548e8bcc863b87 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 53500 - timestamp: 1731714597524 + size: 47491 + timestamp: 1731839300212 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9bacb8c_7 - build_number: 7 + build: hba6c15e_8 + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - sha256: 2b7bb475330942d94bc359171df19d0cf8b326f15c0c7903a59da54a8add621e - md5: 694020125b66632d6577456d2d9d3c74 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 + md5: 102f8b54630d79aff5e0c489f40f926e depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55054 - timestamp: 1731714599360 + size: 55354 + timestamp: 1731839242373 - kind: conda name: aws-c-http - version: 0.9.1 - build: hab05fe4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - sha256: 90a325b6f5371dd2203b643de646967fe57a4bcbbee8c91086abbf9dd733d59a - md5: fb409f7053fa3dbbdf6eb41045a87795 + version: 0.9.2 + build: h48c6dea_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 + md5: a28dd36a1da76042bfb5579005cc6728 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 - - libgcc >=13 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 196945 - timestamp: 1731714483279 + size: 152660 + timestamp: 1732110368931 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf483d09_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - sha256: fca9ed0f0895bab9bf737c8d8a3314556cb893d45c40f0656f21a93502db3089 - md5: d880c40b8fc7d07374c036f93f1359d2 + version: 0.9.2 + build: h697be72_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf + md5: a8b1a2c11a93e615f6e8f33175ff8ff0 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 153315 - timestamp: 1731714621306 + size: 190344 + timestamp: 1732110425530 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf4e072c_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - sha256: b9a262451fc91d2fd4ccfcb6dc11ac61d0152c0db765bfe8d089e3e1b70c2150 - md5: fddc197912c16cb95276077f6c7917c5 + version: 0.9.2 + build: ha5a3ca8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 + md5: b2e017f8a4781ad3af9166edf10b65a8 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190363 - timestamp: 1731714613945 + size: 197338 + timestamp: 1732110324356 - kind: conda name: aws-c-io - version: 0.15.2 - build: h10eb1bc_2 - build_number: 2 + version: 0.15.3 + build: h0155602_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - sha256: b8e4206ee1fa58453535c1c08c6aca5bdc92cde026bf7ec20d038786f813239b - md5: 7cdf478bb4feae1a93319f6e3381b8a9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c + md5: 431c201b11eee90fd120844557a62b02 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 162624 - timestamp: 1731702570075 + size: 161664 + timestamp: 1732097310449 - kind: conda name: aws-c-io - version: 0.15.2 - build: h39f8ad8_2 - build_number: 2 + version: 0.15.3 + build: h30cefa2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - sha256: b14e32f024f6be1610dccfdb6371e101cba204d24f37c2a63d9b6380ac74ac17 - md5: 3b49f1dd8f20bead8b222828cfdad585 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc + md5: 8b8dc361de09e5b6227165a876e55cb7 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 license: Apache-2.0 license_family: Apache - size: 137610 - timestamp: 1731702839896 + size: 136662 + timestamp: 1732097382517 - kind: conda name: aws-c-io - version: 0.15.2 - build: hdeadb07_2 - build_number: 2 + version: 0.15.3 + build: ha35c7d9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - sha256: 1636136a5d882b4aaa13ea8b7de8cf07038a6878872e3c434df9daf478cee594 - md5: 461a1eaa075fd391add91bcffc9de0c1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db + md5: 97960f380abe1ba3157fe63312e35b07 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 159368 - timestamp: 1731702542973 + size: 158012 + timestamp: 1732097264673 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h28a5e6a_8 - build_number: 8 + build: h2cca791_9 + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - sha256: aad8c9a5c24953cdebf17efa7ec06b5639e14072d4fa70c5c0607d7ad913ba88 - md5: 5250ce3b5154c0347b7576015a7c6cef + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 + md5: 090674d608454e979ce77bc8ee735868 depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169040 - timestamp: 1731734203264 + size: 169690 + timestamp: 1733688313938 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h68a0d7e_8 - build_number: 8 + build: h3aaadf4_9 + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - sha256: 837c24c105624e16ace94b4b566ffe45231ff275339c523571ebd45946926156 - md5: 9e3ac70d27e7591b1310a690768cfe27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 + md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 134573 - timestamp: 1731734281038 + size: 135051 + timestamp: 1733688394116 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h7bd072d_8 - build_number: 8 + build: h56e9cca_9 + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - sha256: 51d3d87a47c642096e2ce389a169aec2e26958042e9130857552a12d65a19045 - md5: 0e9d67838114c0dbd267a9311268b331 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 + md5: f75642fe24ae4131f554cbacd6df53e3 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194447 - timestamp: 1731734668760 + size: 194705 + timestamp: 1733688770217 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h29aef15_0 + build: h3c51cf6_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb - md5: 98609602eb077c7b5225d3aa1467f789 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 + md5: e326ddae95b3ec96a31aded04c834175 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117067 - timestamp: 1733565203669 + size: 117896 + timestamp: 1733694002769 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h3a84f74_0 + build: h6ad95d4_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d - md5: a13702b87657cf2d0cdd338fe55f4ba1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e + md5: 682c079ec089d47bb7142f12b3275e4f depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113877 - timestamp: 1733565162763 + size: 113741 + timestamp: 1733693956970 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h840aca7_0 + build: hca3a6f1_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 - md5: 1d33c89e2462b6b0056bfb883b76d2fb + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c + md5: 0b4e647cae3ce85ec991c6e3b8d12bda depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 98296 - timestamp: 1733565277623 + size: 97530 + timestamp: 1733694097526 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1812,19 +1812,20 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.7 - build: h6c346da_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda - sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 - md5: cf87fc73eee6dbfc12dec79444d5dfc0 + build: h318f0b1_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd + md5: 9748d0527695a64aa2eb45e891ea188d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 @@ -1832,59 +1833,58 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283237 - timestamp: 1733588714381 + size: 355045 + timestamp: 1733744656604 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha310de4_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda - sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a - md5: 77769ed013cbf8824c1927407ea03c69 + build: hacb6b83_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 + md5: 27ce3ed5b7e55370a9fea2dda2b3245a depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236862 - timestamp: 1733588815005 + size: 283993 + timestamp: 1733744571881 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha6b94fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda - sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca - md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d + build: hc2c2bbc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 + md5: 5450324f7b48dff1f6ed5484bf830972 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 353873 - timestamp: 1733588735223 + size: 236331 + timestamp: 1733744737078 - kind: conda name: aws-sdk-cpp version: 1.11.458 @@ -2769,19 +2769,20 @@ packages: - kind: conda name: deprecated version: 1.2.15 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee - md5: ca75e235b44ab995655fae392f99595e + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 depends: - - python >=2.7 + - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14182 - timestamp: 1731836933516 + size: 14297 + timestamp: 1733662697343 - kind: conda name: dill version: 0.3.7 @@ -3328,14 +3329,13 @@ packages: timestamp: 1732707871414 - kind: conda name: httpx - version: 0.28.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.28.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 - md5: 8a4a83ba566c6b5c718dd0531a362d01 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - anyio - certifi @@ -3344,8 +3344,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63203 - timestamp: 1733501478172 + size: 63082 + timestamp: 1733663449209 - kind: conda name: huggingface_hub version: 0.26.5 @@ -6156,50 +6156,47 @@ packages: timestamp: 1716828607917 - kind: conda name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + version: 3.47.2 + build: h3f77e49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 875349 - timestamp: 1730208050020 + size: 850553 + timestamp: 1733762057506 - kind: conda name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + version: 3.47.2 + build: h5eb1b54_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - - __osx >=11.0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 837683 - timestamp: 1730208293578 + size: 1042182 + timestamp: 1733761913736 - kind: conda name: libsqlite - version: 3.47.0 - build: hc4a20ef_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab - md5: a6b185aac10d08028340858f77231b23 + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 1041855 - timestamp: 1730208187962 + size: 873551 + timestamp: 1733761824646 - kind: conda name: libssh2 version: 1.11.1 @@ -6939,76 +6936,76 @@ packages: timestamp: 1733417051523 - kind: conda name: max - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d - md5: d41647f3009da6fe575321d46a741dfa + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 + md5: b13d61319f43570ce681408a1b27d9d5 depends: - - max-core ==24.6.0.dev2024120805 release - - max-python >=24.6.0.dev2024120805,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120805 release - - mblack ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release + - max-python >=24.6.0.dev2024120905,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024120905 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1733635043550 + size: 9911 + timestamp: 1733721408716 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 - md5: 620d81f38c5da882ee0799e26d86b0ad + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d + md5: 00617be1a2fef13b5630d9cbe92f9d3c depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247607615 - timestamp: 1733634983707 + size: 247639885 + timestamp: 1733721408714 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 - md5: 6e7e581fe4e11d252e8729a6cc564b29 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 + md5: c7ff53814f0c254c75dc7ab8f0c66b38 depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251457302 - timestamp: 1733635043548 + size: 251498878 + timestamp: 1733721396377 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 - md5: 04d8f67fb1a7deb6147da14b60f668d3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 + md5: 71554a4c0e81a1034908bc1cb716b30b depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212001315 - timestamp: 1733635167877 + size: 212030191 + timestamp: 1733721567995 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f - md5: bf821eea63859972e28ce4635cff7dda + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff + md5: 9a6037de6672120d1d6d53673b699d5b depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -7030,18 +7027,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123750844 - timestamp: 1733634983717 + size: 123751303 + timestamp: 1733721408724 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 - md5: 5711b879e00dae9d692d6cf0bcad3717 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 + md5: bc9f6ce493d2beb1089e1e409bb373ba depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -7063,18 +7060,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127399399 - timestamp: 1733635043558 + size: 127400047 + timestamp: 1733721396388 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb - md5: 8737c1d7ff7f04e887c4d80139e2a273 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 + md5: c1b7eb7d1a43e28224bf41220ece9b58 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -7096,17 +7093,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112431285 - timestamp: 1733635167881 + size: 112450493 + timestamp: 1733721567998 - kind: conda name: mblack - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a - md5: 8a48ed658740aaf0063c754fd35e9cce + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 + md5: b34a59910660011ad1f42bfc1ae4ae54 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -7116,8 +7113,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130744 - timestamp: 1733635043555 + size: 130740 + timestamp: 1733721408720 - kind: conda name: mdurl version: 0.1.2 @@ -7152,21 +7149,21 @@ packages: timestamp: 1733258822603 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd - md5: ad285352ec9e9061d8facbf62f708d9d + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 + md5: 4fc85c9cb1efe841b69d339d4da5b3a1 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11369 - timestamp: 1733635043556 + size: 11366 + timestamp: 1733721408720 - kind: conda name: multidict version: 6.1.0 @@ -7611,21 +7608,21 @@ packages: - kind: conda name: opentelemetry-api version: 1.28.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - sha256: e267ed59ea8f357c3471defef796ce4f4555eacd9ee0ed2d47d3dd539ee7ee2f - md5: f1307fb38a8fd2220def45ec1691a21c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 + md5: a06f1e9d97c98d26f06675236c9ea554 depends: - deprecated >=1.2.6 - importlib-metadata >=6.0.0,<7.1.0 - - python >=3.8 + - python >=3.9 - setuptools >=16.0 license: Apache-2.0 - license_family: APACHE - size: 44014 - timestamp: 1731985724169 + size: 44242 + timestamp: 1733734361129 - kind: conda name: opentelemetry-exporter-otlp-proto-common version: 1.28.2 @@ -7721,20 +7718,20 @@ packages: - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 - build: pyh10f6f8f_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - sha256: 5e3869ad66082b16d56bab8219fad0c8c09090ec93eb866327eed788fe5c9340 - md5: d95dd6e8a70417e394bb16dad5cff408 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 + md5: e0ada55d18e6bd5a8e61943b4b5d3a8f depends: - deprecated >=1.2.6 - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 81534 - timestamp: 1732067304518 + size: 81099 + timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 @@ -9854,12 +9851,12 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312h8360d73_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - sha256: 7b59759739b5426e17825b26d6ce9df487d1dc254d4e6a92b14a97107eb6daca - md5: 035c6de3c821559bf1af5ec072593bfd + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 @@ -9872,16 +9869,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2259332 - timestamp: 1732657962717 + size: 2258007 + timestamp: 1732734202127 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312ha0d6ea1_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - sha256: 6dbb7e5f3f152210817e8658bc454056e464dee16fd9757508f2417edd44d8b8 - md5: b135e3d9178b255993ea4d72741192f8 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 @@ -9894,16 +9891,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2330899 - timestamp: 1732658129796 + size: 2331194 + timestamp: 1732734303196 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312hf3e4074_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - sha256: fd86f8a5d41622e8f5092913dea48f41de86258583ee449045905a725672fdc2 - md5: 40e8bc575721b4da76712e90e4a9b7fa + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -9915,8 +9912,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1933005 - timestamp: 1732658406859 + size: 1931389 + timestamp: 1732734727624 - kind: conda name: tomli version: 2.2.1 @@ -10016,13 +10013,13 @@ packages: timestamp: 1733367480074 - kind: conda name: transformers - version: 4.46.3 + version: 4.47.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - sha256: 6ae73c0d1197812d8fd6a2c64309fe9abe822feb66b2d330cc61ce9fa60dee0c - md5: 457af723774f077a128515a6fdd536a2 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 + md5: 495745078b8e18fe2dcc3267f4baae0d depends: - datasets !=2.5.0 - filelock @@ -10034,12 +10031,12 @@ packages: - regex !=2019.12.17 - requests - safetensors >=0.4.1 - - tokenizers >=0.20,<0.21 + - tokenizers >=0.21,<0.22 - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3622494 - timestamp: 1731981383171 + size: 3721837 + timestamp: 1733708797762 - kind: conda name: typer version: 0.15.1 diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 255487d649..8f6f1771af 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -14,18 +14,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -43,7 +43,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -63,7 +63,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -114,7 +114,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -131,12 +131,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -144,13 +144,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda @@ -196,11 +196,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -231,18 +231,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -260,7 +260,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -280,7 +280,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -332,7 +332,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -349,12 +349,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -362,13 +362,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda @@ -414,11 +414,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -448,18 +448,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -477,7 +477,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -497,7 +497,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda @@ -544,7 +544,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda @@ -558,12 +558,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -571,13 +571,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda @@ -622,11 +622,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -859,107 +859,104 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h9b725a8_10 - build_number: 10 + build: h35eccd0_12 + build_number: 12 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - sha256: 63cb8c25e0a26be4261d4271de525e7e33aefe9d9b001b8abfa5c9ac69c3dab3 - md5: 17c90d9eb8c6842fd739dc5445ce9962 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 + md5: 1109d5293b724ca16b61452accfdb442 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92355 - timestamp: 1731733738919 + size: 92279 + timestamp: 1733611476546 - kind: conda name: aws-c-auth version: 0.8.0 - build: hac900a4_10 - build_number: 10 + build: h89ba3c0_12 + build_number: 12 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - sha256: 85c8500ae0570f0d39e6661a120c653e43f0f5f984e2954c44fd358a87776892 - md5: 9ecaef75ebd666dda7caa79154183b02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 + md5: c0e2e6c3aa8c309af0ba09fc7d949407 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111853 - timestamp: 1731733547677 + size: 112242 + timestamp: 1733611425746 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb88c0a9_10 - build_number: 10 + build: ha4f867e_12 + build_number: 12 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - sha256: d2837a84e6bd7d993a83e79f9e240e1465e375f3d57149ea5b1927c6a4133bcc - md5: 409b7ee6d3473cc62bda7280f6ac20d0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc + md5: d889de56d3be691063b71eb826470e29 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107163 - timestamp: 1731733534767 + size: 107663 + timestamp: 1733611397256 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h35473ba_2 - build_number: 2 + version: 0.8.1 + build: h35473ba_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - sha256: 3327a9e65ec531b0c55d17bbcdc436b4e641af1f293d1c2f50e0f16aa79fde60 - md5: 48dc0b3576513622673d3f5f3d163b62 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 + md5: 97c0ccb4d43d880b38f237e746c29ead depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49714 - timestamp: 1731678553709 + size: 49808 + timestamp: 1732038238504 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h5d7ee29_2 - build_number: 2 + version: 0.8.1 + build: h5d7ee29_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - sha256: 2a8c09b33400cf2b7d658e63fd5a6f9b6e9626458f6213b904592fc15220bc92 - md5: 92734dad83d22314205ba73b679710d2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c + md5: fc51a61831a676fe6f922450f51ab6af depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39966 - timestamp: 1731678721786 + size: 40047 + timestamp: 1732038304022 - kind: conda name: aws-c-cal - version: 0.8.0 - build: hecf86a2_2 - build_number: 2 + version: 0.8.1 + build: hecf86a2_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - sha256: 220a37955c120bf2f565fbd5320a82fc4c8b550b2449294bc0509c296cfcb9fa - md5: c54459d686ad9d0502823cacff7e8423 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 + md5: 8350795be14a92d68847c0d4f3c1d59f depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -967,8 +964,8 @@ packages: - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47477 - timestamp: 1731678510949 + size: 47569 + timestamp: 1732038156682 - kind: conda name: aws-c-common version: 0.10.3 @@ -1064,291 +1061,294 @@ packages: - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h13ead76_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - sha256: 386965fab5f0bed4a6109cdba32579f16bee1b0f76ce1db840ce6f7070188f9f - md5: 55a901b6d4fb9ce1bc8328925b229f0b + build: h873f81a_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 + md5: 32bdd50b43fcc435a8dc5a3c66aafef0 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47528 - timestamp: 1731714690911 + size: 54020 + timestamp: 1731839177415 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h1ffe551_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - sha256: 3b780d6483baa889e8df5aa66ab3c439a9c81331cf2a4799e373f4174768ddd9 - md5: 7cce4dfab184f4bbdfc160789251b3c5 + build: h8ec3972_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 + md5: ced9c97ddf61e4222d548e8bcc863b87 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 53500 - timestamp: 1731714597524 + size: 47491 + timestamp: 1731839300212 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9bacb8c_7 - build_number: 7 + build: hba6c15e_8 + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - sha256: 2b7bb475330942d94bc359171df19d0cf8b326f15c0c7903a59da54a8add621e - md5: 694020125b66632d6577456d2d9d3c74 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 + md5: 102f8b54630d79aff5e0c489f40f926e depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55054 - timestamp: 1731714599360 + size: 55354 + timestamp: 1731839242373 - kind: conda name: aws-c-http - version: 0.9.1 - build: hab05fe4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - sha256: 90a325b6f5371dd2203b643de646967fe57a4bcbbee8c91086abbf9dd733d59a - md5: fb409f7053fa3dbbdf6eb41045a87795 + version: 0.9.2 + build: h48c6dea_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 + md5: a28dd36a1da76042bfb5579005cc6728 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 - - libgcc >=13 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 196945 - timestamp: 1731714483279 + size: 152660 + timestamp: 1732110368931 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf483d09_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - sha256: fca9ed0f0895bab9bf737c8d8a3314556cb893d45c40f0656f21a93502db3089 - md5: d880c40b8fc7d07374c036f93f1359d2 + version: 0.9.2 + build: h697be72_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf + md5: a8b1a2c11a93e615f6e8f33175ff8ff0 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 153315 - timestamp: 1731714621306 + size: 190344 + timestamp: 1732110425530 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf4e072c_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - sha256: b9a262451fc91d2fd4ccfcb6dc11ac61d0152c0db765bfe8d089e3e1b70c2150 - md5: fddc197912c16cb95276077f6c7917c5 + version: 0.9.2 + build: ha5a3ca8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 + md5: b2e017f8a4781ad3af9166edf10b65a8 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190363 - timestamp: 1731714613945 + size: 197338 + timestamp: 1732110324356 - kind: conda name: aws-c-io - version: 0.15.2 - build: h10eb1bc_2 - build_number: 2 + version: 0.15.3 + build: h0155602_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - sha256: b8e4206ee1fa58453535c1c08c6aca5bdc92cde026bf7ec20d038786f813239b - md5: 7cdf478bb4feae1a93319f6e3381b8a9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c + md5: 431c201b11eee90fd120844557a62b02 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 162624 - timestamp: 1731702570075 + size: 161664 + timestamp: 1732097310449 - kind: conda name: aws-c-io - version: 0.15.2 - build: h39f8ad8_2 - build_number: 2 + version: 0.15.3 + build: h30cefa2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - sha256: b14e32f024f6be1610dccfdb6371e101cba204d24f37c2a63d9b6380ac74ac17 - md5: 3b49f1dd8f20bead8b222828cfdad585 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc + md5: 8b8dc361de09e5b6227165a876e55cb7 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 license: Apache-2.0 license_family: Apache - size: 137610 - timestamp: 1731702839896 + size: 136662 + timestamp: 1732097382517 - kind: conda name: aws-c-io - version: 0.15.2 - build: hdeadb07_2 - build_number: 2 + version: 0.15.3 + build: ha35c7d9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - sha256: 1636136a5d882b4aaa13ea8b7de8cf07038a6878872e3c434df9daf478cee594 - md5: 461a1eaa075fd391add91bcffc9de0c1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db + md5: 97960f380abe1ba3157fe63312e35b07 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 159368 - timestamp: 1731702542973 + size: 158012 + timestamp: 1732097264673 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h28a5e6a_8 - build_number: 8 + build: h2cca791_9 + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - sha256: aad8c9a5c24953cdebf17efa7ec06b5639e14072d4fa70c5c0607d7ad913ba88 - md5: 5250ce3b5154c0347b7576015a7c6cef + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 + md5: 090674d608454e979ce77bc8ee735868 depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169040 - timestamp: 1731734203264 + size: 169690 + timestamp: 1733688313938 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h68a0d7e_8 - build_number: 8 + build: h3aaadf4_9 + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - sha256: 837c24c105624e16ace94b4b566ffe45231ff275339c523571ebd45946926156 - md5: 9e3ac70d27e7591b1310a690768cfe27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 + md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 134573 - timestamp: 1731734281038 + size: 135051 + timestamp: 1733688394116 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h7bd072d_8 - build_number: 8 + build: h56e9cca_9 + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - sha256: 51d3d87a47c642096e2ce389a169aec2e26958042e9130857552a12d65a19045 - md5: 0e9d67838114c0dbd267a9311268b331 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 + md5: f75642fe24ae4131f554cbacd6df53e3 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194447 - timestamp: 1731734668760 + size: 194705 + timestamp: 1733688770217 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h29aef15_0 + build: h3c51cf6_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb - md5: 98609602eb077c7b5225d3aa1467f789 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 + md5: e326ddae95b3ec96a31aded04c834175 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117067 - timestamp: 1733565203669 + size: 117896 + timestamp: 1733694002769 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h3a84f74_0 + build: h6ad95d4_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d - md5: a13702b87657cf2d0cdd338fe55f4ba1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e + md5: 682c079ec089d47bb7142f12b3275e4f depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113877 - timestamp: 1733565162763 + size: 113741 + timestamp: 1733693956970 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h840aca7_0 + build: hca3a6f1_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 - md5: 1d33c89e2462b6b0056bfb883b76d2fb + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c + md5: 0b4e647cae3ce85ec991c6e3b8d12bda depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 98296 - timestamp: 1733565277623 + size: 97530 + timestamp: 1733694097526 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1450,19 +1450,20 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.7 - build: h6c346da_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda - sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 - md5: cf87fc73eee6dbfc12dec79444d5dfc0 + build: h318f0b1_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd + md5: 9748d0527695a64aa2eb45e891ea188d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 @@ -1470,59 +1471,58 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283237 - timestamp: 1733588714381 + size: 355045 + timestamp: 1733744656604 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha310de4_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda - sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a - md5: 77769ed013cbf8824c1927407ea03c69 + build: hacb6b83_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 + md5: 27ce3ed5b7e55370a9fea2dda2b3245a depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236862 - timestamp: 1733588815005 + size: 283993 + timestamp: 1733744571881 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha6b94fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda - sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca - md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d + build: hc2c2bbc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 + md5: 5450324f7b48dff1f6ed5484bf830972 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 353873 - timestamp: 1733588735223 + size: 236331 + timestamp: 1733744737078 - kind: conda name: aws-sdk-cpp version: 1.11.458 @@ -2222,19 +2222,20 @@ packages: - kind: conda name: deprecated version: 1.2.15 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee - md5: ca75e235b44ab995655fae392f99595e + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 depends: - - python >=2.7 + - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14182 - timestamp: 1731836933516 + size: 14297 + timestamp: 1733662697343 - kind: conda name: dill version: 0.3.7 @@ -2732,14 +2733,13 @@ packages: timestamp: 1732707871414 - kind: conda name: httpx - version: 0.28.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.28.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 - md5: 8a4a83ba566c6b5c718dd0531a362d01 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - anyio - certifi @@ -2748,8 +2748,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63203 - timestamp: 1733501478172 + size: 63082 + timestamp: 1733663449209 - kind: conda name: huggingface_hub version: 0.26.5 @@ -5128,50 +5128,47 @@ packages: timestamp: 1716828607917 - kind: conda name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + version: 3.47.2 + build: h3f77e49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 875349 - timestamp: 1730208050020 + size: 850553 + timestamp: 1733762057506 - kind: conda name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + version: 3.47.2 + build: h5eb1b54_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - - __osx >=11.0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 837683 - timestamp: 1730208293578 + size: 1042182 + timestamp: 1733761913736 - kind: conda name: libsqlite - version: 3.47.0 - build: hc4a20ef_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab - md5: a6b185aac10d08028340858f77231b23 + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 1041855 - timestamp: 1730208187962 + size: 873551 + timestamp: 1733761824646 - kind: conda name: libssh2 version: 1.11.1 @@ -5894,76 +5891,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d - md5: d41647f3009da6fe575321d46a741dfa - depends: - - max-core ==24.6.0.dev2024120805 release - - max-python >=24.6.0.dev2024120805,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120805 release - - mblack ==24.6.0.dev2024120805 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 + md5: b13d61319f43570ce681408a1b27d9d5 + depends: + - max-core ==24.6.0.dev2024120905 release + - max-python >=24.6.0.dev2024120905,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024120905 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1733635043550 + size: 9911 + timestamp: 1733721408716 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 - md5: 620d81f38c5da882ee0799e26d86b0ad + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d + md5: 00617be1a2fef13b5630d9cbe92f9d3c depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247607615 - timestamp: 1733634983707 + size: 247639885 + timestamp: 1733721408714 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 - md5: 6e7e581fe4e11d252e8729a6cc564b29 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 + md5: c7ff53814f0c254c75dc7ab8f0c66b38 depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251457302 - timestamp: 1733635043548 + size: 251498878 + timestamp: 1733721396377 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 - md5: 04d8f67fb1a7deb6147da14b60f668d3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 + md5: 71554a4c0e81a1034908bc1cb716b30b depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212001315 - timestamp: 1733635167877 + size: 212030191 + timestamp: 1733721567995 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f - md5: bf821eea63859972e28ce4635cff7dda + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff + md5: 9a6037de6672120d1d6d53673b699d5b depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -5985,18 +5982,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123750844 - timestamp: 1733634983717 + size: 123751303 + timestamp: 1733721408724 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 - md5: 5711b879e00dae9d692d6cf0bcad3717 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 + md5: bc9f6ce493d2beb1089e1e409bb373ba depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -6018,18 +6015,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127399399 - timestamp: 1733635043558 + size: 127400047 + timestamp: 1733721396388 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb - md5: 8737c1d7ff7f04e887c4d80139e2a273 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 + md5: c1b7eb7d1a43e28224bf41220ece9b58 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -6051,17 +6048,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112431285 - timestamp: 1733635167881 + size: 112450493 + timestamp: 1733721567998 - kind: conda name: mblack - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a - md5: 8a48ed658740aaf0063c754fd35e9cce + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 + md5: b34a59910660011ad1f42bfc1ae4ae54 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6071,8 +6068,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130744 - timestamp: 1733635043555 + size: 130740 + timestamp: 1733721408720 - kind: conda name: mdurl version: 0.1.2 @@ -6091,21 +6088,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd - md5: ad285352ec9e9061d8facbf62f708d9d + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 + md5: 4fc85c9cb1efe841b69d339d4da5b3a1 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11369 - timestamp: 1733635043556 + size: 11366 + timestamp: 1733721408720 - kind: conda name: multidict version: 6.1.0 @@ -6443,21 +6440,21 @@ packages: - kind: conda name: opentelemetry-api version: 1.28.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - sha256: e267ed59ea8f357c3471defef796ce4f4555eacd9ee0ed2d47d3dd539ee7ee2f - md5: f1307fb38a8fd2220def45ec1691a21c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 + md5: a06f1e9d97c98d26f06675236c9ea554 depends: - deprecated >=1.2.6 - importlib-metadata >=6.0.0,<7.1.0 - - python >=3.8 + - python >=3.9 - setuptools >=16.0 license: Apache-2.0 - license_family: APACHE - size: 44014 - timestamp: 1731985724169 + size: 44242 + timestamp: 1733734361129 - kind: conda name: opentelemetry-exporter-otlp-proto-common version: 1.28.2 @@ -6553,20 +6550,20 @@ packages: - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 - build: pyh10f6f8f_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - sha256: 5e3869ad66082b16d56bab8219fad0c8c09090ec93eb866327eed788fe5c9340 - md5: d95dd6e8a70417e394bb16dad5cff408 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 + md5: e0ada55d18e6bd5a8e61943b4b5d3a8f depends: - deprecated >=1.2.6 - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 81534 - timestamp: 1732067304518 + size: 81099 + timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 @@ -8196,12 +8193,12 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312h8360d73_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - sha256: 7b59759739b5426e17825b26d6ce9df487d1dc254d4e6a92b14a97107eb6daca - md5: 035c6de3c821559bf1af5ec072593bfd + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 @@ -8214,16 +8211,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2259332 - timestamp: 1732657962717 + size: 2258007 + timestamp: 1732734202127 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312ha0d6ea1_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - sha256: 6dbb7e5f3f152210817e8658bc454056e464dee16fd9757508f2417edd44d8b8 - md5: b135e3d9178b255993ea4d72741192f8 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 @@ -8236,16 +8233,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2330899 - timestamp: 1732658129796 + size: 2331194 + timestamp: 1732734303196 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312hf3e4074_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - sha256: fd86f8a5d41622e8f5092913dea48f41de86258583ee449045905a725672fdc2 - md5: 40e8bc575721b4da76712e90e4a9b7fa + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -8257,8 +8254,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1933005 - timestamp: 1732658406859 + size: 1931389 + timestamp: 1732734727624 - kind: conda name: tornado version: 6.4.2 @@ -8342,13 +8339,13 @@ packages: timestamp: 1733367480074 - kind: conda name: transformers - version: 4.46.3 + version: 4.47.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - sha256: 6ae73c0d1197812d8fd6a2c64309fe9abe822feb66b2d330cc61ce9fa60dee0c - md5: 457af723774f077a128515a6fdd536a2 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 + md5: 495745078b8e18fe2dcc3267f4baae0d depends: - datasets !=2.5.0 - filelock @@ -8360,12 +8357,12 @@ packages: - regex !=2019.12.17 - requests - safetensors >=0.4.1 - - tokenizers >=0.20,<0.21 + - tokenizers >=0.21,<0.22 - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3622494 - timestamp: 1731981383171 + size: 3721837 + timestamp: 1733708797762 - kind: conda name: typer version: 0.15.1 diff --git a/magic.lock b/magic.lock index 1860c5f8d3..23716422b9 100644 --- a/magic.lock +++ b/magic.lock @@ -14,18 +14,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-hf42f96a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-hf42f96a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-hf42f96a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hac138a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda @@ -43,7 +43,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -63,7 +63,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda @@ -114,7 +114,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda @@ -132,12 +132,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -145,13 +145,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-he039a57_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda @@ -197,11 +197,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -232,18 +232,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h4c7db1d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.1-h4c7db1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h4c7db1d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.458-h5e41cbe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda @@ -261,7 +261,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -281,7 +281,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda @@ -333,7 +333,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda @@ -351,12 +351,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -364,13 +364,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-h90de224_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_1.conda @@ -416,11 +416,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -450,18 +450,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.3-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-h5d7ee29_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.1-h5d7ee29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-h5d7ee29_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.458-he4d6490_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda @@ -479,7 +479,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda @@ -499,7 +499,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.26.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda @@ -546,7 +546,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h2348fd5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-ha962b0a_2.conda @@ -561,12 +561,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda @@ -574,13 +574,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.28.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.28.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.28.2-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h121fd32_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda @@ -625,11 +625,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.41.3-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda @@ -862,107 +862,104 @@ packages: - kind: conda name: aws-c-auth version: 0.8.0 - build: h9b725a8_10 - build_number: 10 + build: h35eccd0_12 + build_number: 12 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h9b725a8_10.conda - sha256: 63cb8c25e0a26be4261d4271de525e7e33aefe9d9b001b8abfa5c9ac69c3dab3 - md5: 17c90d9eb8c6842fd739dc5445ce9962 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.0-h35eccd0_12.conda + sha256: 40ca48aee5f3ff0d3ffd64625dacb019104a9a2ee24cd54052cde6fe4cbc8349 + md5: 1109d5293b724ca16b61452accfdb442 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 license: Apache-2.0 license_family: Apache - size: 92355 - timestamp: 1731733738919 + size: 92279 + timestamp: 1733611476546 - kind: conda name: aws-c-auth version: 0.8.0 - build: hac900a4_10 - build_number: 10 + build: h89ba3c0_12 + build_number: 12 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-hac900a4_10.conda - sha256: 85c8500ae0570f0d39e6661a120c653e43f0f5f984e2954c44fd358a87776892 - md5: 9ecaef75ebd666dda7caa79154183b02 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.0-h89ba3c0_12.conda + sha256: 021451014fb5ee24601052d84db8d5babbce5085959ba777b540db4e33bde360 + md5: c0e2e6c3aa8c309af0ba09fc7d949407 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 111853 - timestamp: 1731733547677 + size: 112242 + timestamp: 1733611425746 - kind: conda name: aws-c-auth version: 0.8.0 - build: hb88c0a9_10 - build_number: 10 + build: ha4f867e_12 + build_number: 12 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb88c0a9_10.conda - sha256: d2837a84e6bd7d993a83e79f9e240e1465e375f3d57149ea5b1927c6a4133bcc - md5: 409b7ee6d3473cc62bda7280f6ac20d0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-ha4f867e_12.conda + sha256: b9355bedf43c857a2d1986ebe7d61e615218f2171d163b509633d6c0c988d2dc + md5: d889de56d3be691063b71eb826470e29 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 107163 - timestamp: 1731733534767 + size: 107663 + timestamp: 1733611397256 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h35473ba_2 - build_number: 2 + version: 0.8.1 + build: h35473ba_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.0-h35473ba_2.conda - sha256: 3327a9e65ec531b0c55d17bbcdc436b4e641af1f293d1c2f50e0f16aa79fde60 - md5: 48dc0b3576513622673d3f5f3d163b62 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h35473ba_0.conda + sha256: c2d59d74e167b6df3c1a7addf0d37080b69a6b3dee2a30b3f2171a5d26c5a691 + md5: 97c0ccb4d43d880b38f237e746c29ead depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 49714 - timestamp: 1731678553709 + size: 49808 + timestamp: 1732038238504 - kind: conda name: aws-c-cal - version: 0.8.0 - build: h5d7ee29_2 - build_number: 2 + version: 0.8.1 + build: h5d7ee29_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.0-h5d7ee29_2.conda - sha256: 2a8c09b33400cf2b7d658e63fd5a6f9b6e9626458f6213b904592fc15220bc92 - md5: 92734dad83d22314205ba73b679710d2 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-h5d7ee29_0.conda + sha256: 42d5e9fb695bc3b280ed7e625dcda110b6780ee471e227f1b92afce71ae4972c + md5: fc51a61831a676fe6f922450f51ab6af depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 39966 - timestamp: 1731678721786 + size: 40047 + timestamp: 1732038304022 - kind: conda name: aws-c-cal - version: 0.8.0 - build: hecf86a2_2 - build_number: 2 + version: 0.8.1 + build: hecf86a2_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.0-hecf86a2_2.conda - sha256: 220a37955c120bf2f565fbd5320a82fc4c8b550b2449294bc0509c296cfcb9fa - md5: c54459d686ad9d0502823cacff7e8423 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-hecf86a2_0.conda + sha256: 12cc2087503f4f0d3a5db84e791fb5e585866da728f888aa76e14330a092a681 + md5: 8350795be14a92d68847c0d4f3c1d59f depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 @@ -970,8 +967,8 @@ packages: - openssl >=3.3.1,<4.0a0 license: Apache-2.0 license_family: Apache - size: 47477 - timestamp: 1731678510949 + size: 47569 + timestamp: 1732038156682 - kind: conda name: aws-c-common version: 0.10.3 @@ -1067,291 +1064,294 @@ packages: - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h13ead76_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h13ead76_7.conda - sha256: 386965fab5f0bed4a6109cdba32579f16bee1b0f76ce1db840ce6f7070188f9f - md5: 55a901b6d4fb9ce1bc8328925b229f0b + build: h873f81a_8 + build_number: 8 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h873f81a_8.conda + sha256: 589f9a04c4c7a919410dde75ce93a6986efad6ed522ecd8e5c9c587ac18f0d34 + md5: 32bdd50b43fcc435a8dc5a3c66aafef0 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 47528 - timestamp: 1731714690911 + size: 54020 + timestamp: 1731839177415 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h1ffe551_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h1ffe551_7.conda - sha256: 3b780d6483baa889e8df5aa66ab3c439a9c81331cf2a4799e373f4174768ddd9 - md5: 7cce4dfab184f4bbdfc160789251b3c5 + build: h8ec3972_8 + build_number: 8 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h8ec3972_8.conda + sha256: 81b98fc39e64d090af23b11621e467b4f943a19f61dda0fed5ad6397f06de5c7 + md5: ced9c97ddf61e4222d548e8bcc863b87 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 53500 - timestamp: 1731714597524 + size: 47491 + timestamp: 1731839300212 - kind: conda name: aws-c-event-stream version: 0.5.0 - build: h9bacb8c_7 - build_number: 7 + build: hba6c15e_8 + build_number: 8 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-h9bacb8c_7.conda - sha256: 2b7bb475330942d94bc359171df19d0cf8b326f15c0c7903a59da54a8add621e - md5: 694020125b66632d6577456d2d9d3c74 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hba6c15e_8.conda + sha256: d3b74580045ee9d54a134ab1e5e00082d5d8a466980e94acc153188ee7375d08 + md5: 102f8b54630d79aff5e0c489f40f926e depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 55054 - timestamp: 1731714599360 + size: 55354 + timestamp: 1731839242373 - kind: conda name: aws-c-http - version: 0.9.1 - build: hab05fe4_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.1-hab05fe4_2.conda - sha256: 90a325b6f5371dd2203b643de646967fe57a4bcbbee8c91086abbf9dd733d59a - md5: fb409f7053fa3dbbdf6eb41045a87795 + version: 0.9.2 + build: h48c6dea_1 + build_number: 1 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h48c6dea_1.conda + sha256: cb68d557af1bdcbef668574836fbf39c4df0e4f377258e4d5bd14196acf9b992 + md5: a28dd36a1da76042bfb5579005cc6728 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 - - libgcc >=13 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 196945 - timestamp: 1731714483279 + size: 152660 + timestamp: 1732110368931 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf483d09_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.1-hf483d09_2.conda - sha256: fca9ed0f0895bab9bf737c8d8a3314556cb893d45c40f0656f21a93502db3089 - md5: d880c40b8fc7d07374c036f93f1359d2 + version: 0.9.2 + build: h697be72_1 + build_number: 1 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h697be72_1.conda + sha256: 4d6557a00e74649301da78d7de7d108882ce89eb9d6c87efce30789b53a617cf + md5: a8b1a2c11a93e615f6e8f33175ff8ff0 depends: - - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 153315 - timestamp: 1731714621306 + size: 190344 + timestamp: 1732110425530 - kind: conda name: aws-c-http - version: 0.9.1 - build: hf4e072c_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.1-hf4e072c_2.conda - sha256: b9a262451fc91d2fd4ccfcb6dc11ac61d0152c0db765bfe8d089e3e1b70c2150 - md5: fddc197912c16cb95276077f6c7917c5 + version: 0.9.2 + build: ha5a3ca8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-ha5a3ca8_1.conda + sha256: 8ecb3d8411f58db4686635aedfe5d60b2b8870f9f9cafb471f3878dc61d21596 + md5: b2e017f8a4781ad3af9166edf10b65a8 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 190363 - timestamp: 1731714613945 + size: 197338 + timestamp: 1732110324356 - kind: conda name: aws-c-io - version: 0.15.2 - build: h10eb1bc_2 - build_number: 2 + version: 0.15.3 + build: h0155602_1 + build_number: 1 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.2-h10eb1bc_2.conda - sha256: b8e4206ee1fa58453535c1c08c6aca5bdc92cde026bf7ec20d038786f813239b - md5: 7cdf478bb4feae1a93319f6e3381b8a9 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-h0155602_1.conda + sha256: 7b8d97d51e5bb80191e07f16cac6f59068be30bf5906925a8f4159b3aab9093c + md5: 431c201b11eee90fd120844557a62b02 depends: - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 162624 - timestamp: 1731702570075 + size: 161664 + timestamp: 1732097310449 - kind: conda name: aws-c-io - version: 0.15.2 - build: h39f8ad8_2 - build_number: 2 + version: 0.15.3 + build: h30cefa2_1 + build_number: 1 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.2-h39f8ad8_2.conda - sha256: b14e32f024f6be1610dccfdb6371e101cba204d24f37c2a63d9b6380ac74ac17 - md5: 3b49f1dd8f20bead8b222828cfdad585 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-h30cefa2_1.conda + sha256: d6f8d42259ca11507bd912b3cd3ff1a65d6d8c7ff67ae9ee9df1686c9bebbbcc + md5: 8b8dc361de09e5b6227165a876e55cb7 depends: - __osx >=11.0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 license: Apache-2.0 license_family: Apache - size: 137610 - timestamp: 1731702839896 + size: 136662 + timestamp: 1732097382517 - kind: conda name: aws-c-io - version: 0.15.2 - build: hdeadb07_2 - build_number: 2 + version: 0.15.3 + build: ha35c7d9_1 + build_number: 1 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.2-hdeadb07_2.conda - sha256: 1636136a5d882b4aaa13ea8b7de8cf07038a6878872e3c434df9daf478cee594 - md5: 461a1eaa075fd391add91bcffc9de0c1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-ha35c7d9_1.conda + sha256: 2e9e13ed54f6da22ee5d06622f4165bcca253411997dad62225aecc54b25c0db + md5: 97960f380abe1ba3157fe63312e35b07 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - libgcc >=13 - s2n >=1.5.9,<1.5.10.0a0 license: Apache-2.0 license_family: Apache - size: 159368 - timestamp: 1731702542973 + size: 158012 + timestamp: 1732097264673 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h28a5e6a_8 - build_number: 8 + build: h2cca791_9 + build_number: 9 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h28a5e6a_8.conda - sha256: aad8c9a5c24953cdebf17efa7ec06b5639e14072d4fa70c5c0607d7ad913ba88 - md5: 5250ce3b5154c0347b7576015a7c6cef + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h2cca791_9.conda + sha256: c0ad176bab176a2983fb052de71037fc9357afd13b073511a7a440c1a8c6eff2 + md5: 090674d608454e979ce77bc8ee735868 depends: - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 169040 - timestamp: 1731734203264 + size: 169690 + timestamp: 1733688313938 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h68a0d7e_8 - build_number: 8 + build: h3aaadf4_9 + build_number: 9 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h68a0d7e_8.conda - sha256: 837c24c105624e16ace94b4b566ffe45231ff275339c523571ebd45946926156 - md5: 9e3ac70d27e7591b1310a690768cfe27 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h3aaadf4_9.conda + sha256: 3cc99239c8dadfe55e4b9ba37d03c5d3308ddd8fe00792fab7c6b47c97655c07 + md5: ddb5dc7ac1ae424ca2b7a847765a0cb9 depends: - __osx >=11.0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 license: Apache-2.0 license_family: Apache - size: 134573 - timestamp: 1731734281038 + size: 135051 + timestamp: 1733688394116 - kind: conda name: aws-c-mqtt version: 0.11.0 - build: h7bd072d_8 - build_number: 8 + build: h56e9cca_9 + build_number: 9 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h7bd072d_8.conda - sha256: 51d3d87a47c642096e2ce389a169aec2e26958042e9130857552a12d65a19045 - md5: 0e9d67838114c0dbd267a9311268b331 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h56e9cca_9.conda + sha256: c93c29b58482ca72d3f9a5710ad92194e809a9de988bcdcbae9ddd0f8ed484a6 + md5: f75642fe24ae4131f554cbacd6df53e3 depends: - __glibc >=2.17,<3.0.a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 194447 - timestamp: 1731734668760 + size: 194705 + timestamp: 1733688770217 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h29aef15_0 + build: h3c51cf6_2 + build_number: 2 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h29aef15_0.conda - sha256: 2aef28beec88df561f7f4d0f7ec7fea6cf54a1d6c8516fd243a4269d320f06cb - md5: 98609602eb077c7b5225d3aa1467f789 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.5-h3c51cf6_2.conda + sha256: 98a2df8a5068183e55b4c6914a3513d403300be20c960842a9a229546b8e8e52 + md5: e326ddae95b3ec96a31aded04c834175 depends: - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 117067 - timestamp: 1733565203669 + size: 117896 + timestamp: 1733694002769 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h3a84f74_0 + build: h6ad95d4_2 + build_number: 2 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h3a84f74_0.conda - sha256: eb2534517bdaccf2953716e49e8b918ffe7e78a524c6321fae30c3dd7f46cb0d - md5: a13702b87657cf2d0cdd338fe55f4ba1 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.5-h6ad95d4_2.conda + sha256: 103a478b18ead8f79aae9a4966b2879e9fbcfb0aa3b2e6c9b2811a76ba34610e + md5: 682c079ec089d47bb7142f12b3275e4f depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 - libgcc >=13 - openssl >=3.4.0,<4.0a0 license: Apache-2.0 license_family: Apache - size: 113877 - timestamp: 1733565162763 + size: 113741 + timestamp: 1733693956970 - kind: conda name: aws-c-s3 version: 0.7.5 - build: h840aca7_0 + build: hca3a6f1_2 + build_number: 2 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-h840aca7_0.conda - sha256: 30782a1392883d26a441fc2857985136888aa454efbea8b85bbcbb7a7ad3d2e2 - md5: 1d33c89e2462b6b0056bfb883b76d2fb + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.5-hca3a6f1_2.conda + sha256: 53c4dc6e360ed6e1242c20fa43f7bfe67a41215e51cafab27dbd8aa91333040c + md5: 0b4e647cae3ce85ec991c6e3b8d12bda depends: - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-checksums >=0.2.2,<0.2.3.0a0 license: Apache-2.0 license_family: Apache - size: 98296 - timestamp: 1733565277623 + size: 97530 + timestamp: 1733694097526 - kind: conda name: aws-c-sdkutils version: 0.2.1 @@ -1453,19 +1453,20 @@ packages: - kind: conda name: aws-crt-cpp version: 0.29.7 - build: h6c346da_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-h6c346da_1.conda - sha256: 9a60a93dbe896acf533dded5f4ae11546ff4fb6a9fb0e06db6d915206ba0b1f2 - md5: cf87fc73eee6dbfc12dec79444d5dfc0 + build: h318f0b1_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-h318f0b1_3.conda + sha256: 35100ad81adf31aa4e73ac2956e9a8ff277cc57d0db2db2f0e9c51012175eadd + md5: 9748d0527695a64aa2eb45e891ea188d depends: + - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 @@ -1473,59 +1474,58 @@ packages: - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 283237 - timestamp: 1733588714381 + size: 355045 + timestamp: 1733744656604 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha310de4_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-ha310de4_1.conda - sha256: b5ab81d50b6cc2ff70dd56a16b5b9e1cbe8c69e9e357db2abf925d03c5d0133a - md5: 77769ed013cbf8824c1927407ea03c69 + build: hacb6b83_3 + build_number: 3 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.7-hacb6b83_3.conda + sha256: 6c0ece3ca494c2220fc052e608d52ea52bb361e536a14a1b3b36ebeede9de8b9 + md5: 27ce3ed5b7e55370a9fea2dda2b3245a depends: - - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libcxx >=18 + - libgcc >=13 + - libstdcxx >=13 license: Apache-2.0 license_family: Apache - size: 236862 - timestamp: 1733588815005 + size: 283993 + timestamp: 1733744571881 - kind: conda name: aws-crt-cpp version: 0.29.7 - build: ha6b94fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-ha6b94fc_1.conda - sha256: 5907a2c370f94e5f63c17e4347525d21eb1c00fbd8b731d79ec1eb4e857689ca - md5: f5fb6f6283deb0b4d2c187ad4a7b6d4d + build: hc2c2bbc_3 + build_number: 3 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.7-hc2c2bbc_3.conda + sha256: 6a519151e7fa71fbc9d1cd3a526ea7591638af058a6cc0534e1cd418fd48b354 + md5: 5450324f7b48dff1f6ed5484bf830972 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - aws-c-auth >=0.8.0,<0.8.1.0a0 - - aws-c-cal >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 - aws-c-common >=0.10.3,<0.10.4.0a0 - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.1,<0.9.2.0a0 - - aws-c-io >=0.15.2,<0.15.3.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - aws-c-s3 >=0.7.5,<0.7.6.0a0 - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 license: Apache-2.0 license_family: Apache - size: 353873 - timestamp: 1733588735223 + size: 236331 + timestamp: 1733744737078 - kind: conda name: aws-sdk-cpp version: 1.11.458 @@ -2225,19 +2225,20 @@ packages: - kind: conda name: deprecated version: 1.2.15 - build: pyhff2d567_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhff2d567_0.conda - sha256: 48182a27a8fd855db3a402ed914823802f94c3344c87b0d074facc51411296ee - md5: ca75e235b44ab995655fae392f99595e + url: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.15-pyhd8ed1ab_1.conda + sha256: a20ebf2c9b02a6eb32412ceb5c4cffaae49417db7e75414a76417538293a9402 + md5: eaef2e94d5bd76f758545d172c1fda67 depends: - - python >=2.7 + - python >=3.9 - wrapt <2,>=1.10 license: MIT license_family: MIT - size: 14182 - timestamp: 1731836933516 + size: 14297 + timestamp: 1733662697343 - kind: conda name: dill version: 0.3.7 @@ -2735,14 +2736,13 @@ packages: timestamp: 1732707871414 - kind: conda name: httpx - version: 0.28.0 - build: pyhd8ed1ab_1 - build_number: 1 + version: 0.28.1 + build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.0-pyhd8ed1ab_1.conda - sha256: 0b864abaa9f1443fc42368b4d2a4f4efb9971a53f961d1fe30fabd7fbdd76b27 - md5: 8a4a83ba566c6b5c718dd0531a362d01 + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - anyio - certifi @@ -2751,8 +2751,8 @@ packages: - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 63203 - timestamp: 1733501478172 + size: 63082 + timestamp: 1733663449209 - kind: conda name: huggingface_hub version: 0.26.5 @@ -5131,50 +5131,47 @@ packages: timestamp: 1716828607917 - kind: conda name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + version: 3.47.2 + build: h3f77e49_0 + subdir: osx-arm64 + url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 875349 - timestamp: 1730208050020 + size: 850553 + timestamp: 1733762057506 - kind: conda name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + version: 3.47.2 + build: h5eb1b54_0 + subdir: linux-aarch64 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - - __osx >=11.0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 837683 - timestamp: 1730208293578 + size: 1042182 + timestamp: 1733761913736 - kind: conda name: libsqlite - version: 3.47.0 - build: hc4a20ef_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab - md5: a6b185aac10d08028340858f77231b23 + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 1041855 - timestamp: 1730208187962 + size: 873551 + timestamp: 1733761824646 - kind: conda name: libssh2 version: 1.11.1 @@ -5912,76 +5909,76 @@ packages: timestamp: 1733219945697 - kind: conda name: max - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120805-release.conda - sha256: f2f1a4e4373ac62de23c41ce28e1483b45322cffe8aef91ef93ce0f65fe5f20d - md5: d41647f3009da6fe575321d46a741dfa - depends: - - max-core ==24.6.0.dev2024120805 release - - max-python >=24.6.0.dev2024120805,<25.0a0 - - mojo-jupyter ==24.6.0.dev2024120805 release - - mblack ==24.6.0.dev2024120805 release + url: https://conda.modular.com/max-nightly/noarch/max-24.6.0.dev2024120905-release.conda + sha256: 37a6103a6b2c7886ed5837d41a819f1a127eef7e810b2b5ecfb03f7caf263514 + md5: b13d61319f43570ce681408a1b27d9d5 + depends: + - max-core ==24.6.0.dev2024120905 release + - max-python >=24.6.0.dev2024120905,<25.0a0 + - mojo-jupyter ==24.6.0.dev2024120905 release + - mblack ==24.6.0.dev2024120905 release license: LicenseRef-Modular-Proprietary - size: 9916 - timestamp: 1733635043550 + size: 9911 + timestamp: 1733721408716 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120805-release.conda - sha256: aebf26b21cebf2afdf9063203e542e5e635059c57c5fb9e74478b98f652f8e46 - md5: 620d81f38c5da882ee0799e26d86b0ad + url: https://conda.modular.com/max-nightly/linux-64/max-core-24.6.0.dev2024120905-release.conda + sha256: 0f94138601ceab2c8b277c7d175d762840072cfdfd0ead7264fbd1ff9f70442d + md5: 00617be1a2fef13b5630d9cbe92f9d3c depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 247607615 - timestamp: 1733634983707 + size: 247639885 + timestamp: 1733721408714 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120805-release.conda - sha256: 1fc1554d9c39ed5bf22957f02418ee0df4ce4dfc033dd3ca54a7f20c8946b7b3 - md5: 6e7e581fe4e11d252e8729a6cc564b29 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-core-24.6.0.dev2024120905-release.conda + sha256: 1aaf2ffb09d6a2aa6b65d76c381476eb88947470580a0d56909bfd578d5eb385 + md5: c7ff53814f0c254c75dc7ab8f0c66b38 depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 251457302 - timestamp: 1733635043548 + size: 251498878 + timestamp: 1733721396377 - kind: conda name: max-core - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120805-release.conda - sha256: f249a329a1b072ebd9cd365842d54892d4d46a8fb642ab8fb22ff26f211dddb7 - md5: 04d8f67fb1a7deb6147da14b60f668d3 + url: https://conda.modular.com/max-nightly/osx-arm64/max-core-24.6.0.dev2024120905-release.conda + sha256: 00cc8ce6adc131b858df51423201b8f028aa944ac09e56c563a1108c22eaccd2 + md5: 71554a4c0e81a1034908bc1cb716b30b depends: - - mblack ==24.6.0.dev2024120805 release + - mblack ==24.6.0.dev2024120905 release arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 212001315 - timestamp: 1733635167877 + size: 212030191 + timestamp: 1733721567995 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-64 - url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: cf488fd0ccfb5a4dbff0891f7dba0e92422a07b6c0047727ab7ebf6a65289e9f - md5: bf821eea63859972e28ce4635cff7dda + url: https://conda.modular.com/max-nightly/linux-64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 43245b47050208329e85a69f2af24d42c622e92e1542334a6106eaadb6cbf0ff + md5: 9a6037de6672120d1d6d53673b699d5b depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -6003,18 +6000,18 @@ packages: arch: x86_64 platform: linux license: LicenseRef-Modular-Proprietary - size: 123750844 - timestamp: 1733634983717 + size: 123751303 + timestamp: 1733721408724 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: linux-aarch64 - url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 7fe8c12a6ac333dc6f3ea0132e07244131919597c3da16566a18d3657c478126 - md5: 5711b879e00dae9d692d6cf0bcad3717 + url: https://conda.modular.com/max-nightly/linux-aarch64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: fdedbc8a2ca34d0593e8b2175ca07c07d6d0564f138f535ebff02975ef463f55 + md5: bc9f6ce493d2beb1089e1e409bb373ba depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -6036,18 +6033,18 @@ packages: arch: aarch64 platform: linux license: LicenseRef-Modular-Proprietary - size: 127399399 - timestamp: 1733635043558 + size: 127400047 + timestamp: 1733721396388 - kind: conda name: max-python - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: 3.12release subdir: osx-arm64 - url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120805-3.12release.conda - sha256: 21cd561dcda4c668566b3e681e44823f6163abb4747f30e4851efb9d04eea1eb - md5: 8737c1d7ff7f04e887c4d80139e2a273 + url: https://conda.modular.com/max-nightly/osx-arm64/max-python-24.6.0.dev2024120905-3.12release.conda + sha256: 0cd6b2e3bdc78483665045e91b8db7a8a3d6c85fbf4b8a44d6eb742a46361af1 + md5: c1b7eb7d1a43e28224bf41220ece9b58 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python 3.12.* - pillow - fastapi @@ -6069,17 +6066,17 @@ packages: arch: arm64 platform: osx license: LicenseRef-Modular-Proprietary - size: 112431285 - timestamp: 1733635167881 + size: 112450493 + timestamp: 1733721567998 - kind: conda name: mblack - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120805-release.conda - sha256: e5f3d6f9e9e7acb97ff8364ddb90e34e38bfe68ba382b3dffacfbf4b9d6c812a - md5: 8a48ed658740aaf0063c754fd35e9cce + url: https://conda.modular.com/max-nightly/noarch/mblack-24.6.0.dev2024120905-release.conda + sha256: e302e262a58592b5b8614829237760967d685cb20a44e54981916eb6c2b6b7a2 + md5: b34a59910660011ad1f42bfc1ae4ae54 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -6089,8 +6086,8 @@ packages: - platformdirs >=2 - python license: MIT - size: 130744 - timestamp: 1733635043555 + size: 130740 + timestamp: 1733721408720 - kind: conda name: mdurl version: 0.1.2 @@ -6109,21 +6106,21 @@ packages: timestamp: 1733255681319 - kind: conda name: mojo-jupyter - version: 24.6.0.dev2024120805 + version: 24.6.0.dev2024120905 build: release subdir: noarch noarch: python - url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120805-release.conda - sha256: 1535cecc4930833e604ed39a4450b421914312f4abbb4fc6af9e7aedd5293ffd - md5: ad285352ec9e9061d8facbf62f708d9d + url: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-24.6.0.dev2024120905-release.conda + sha256: bb71277508a55875b6011651bc825599e26a47145ab1e9c4e7c2abd853200a00 + md5: 4fc85c9cb1efe841b69d339d4da5b3a1 depends: - - max-core ==24.6.0.dev2024120805 release + - max-core ==24.6.0.dev2024120905 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 11369 - timestamp: 1733635043556 + size: 11366 + timestamp: 1733721408720 - kind: conda name: multidict version: 6.1.0 @@ -6461,21 +6458,21 @@ packages: - kind: conda name: opentelemetry-api version: 1.28.2 - build: pyhd8ed1ab_0 + build: pyhd8ed1ab_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_0.conda - sha256: e267ed59ea8f357c3471defef796ce4f4555eacd9ee0ed2d47d3dd539ee7ee2f - md5: f1307fb38a8fd2220def45ec1691a21c + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.28.2-pyhd8ed1ab_1.conda + sha256: 780dbc942a6075db7bdbaf556023be50c34a6111a99e465878d7bab0e5e0d7f4 + md5: a06f1e9d97c98d26f06675236c9ea554 depends: - deprecated >=1.2.6 - importlib-metadata >=6.0.0,<7.1.0 - - python >=3.8 + - python >=3.9 - setuptools >=16.0 license: Apache-2.0 - license_family: APACHE - size: 44014 - timestamp: 1731985724169 + size: 44242 + timestamp: 1733734361129 - kind: conda name: opentelemetry-exporter-otlp-proto-common version: 1.28.2 @@ -6571,20 +6568,20 @@ packages: - kind: conda name: opentelemetry-semantic-conventions version: 0.49b2 - build: pyh10f6f8f_0 + build: pyh3cfb1c2_1 + build_number: 1 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh10f6f8f_0.conda - sha256: 5e3869ad66082b16d56bab8219fad0c8c09090ec93eb866327eed788fe5c9340 - md5: d95dd6e8a70417e394bb16dad5cff408 + url: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.49b2-pyh3cfb1c2_1.conda + sha256: 28180ffa6611f117c782c7d72066b50332c1df0bdcfed0dea4e446a20c4b7d10 + md5: e0ada55d18e6bd5a8e61943b4b5d3a8f depends: - deprecated >=1.2.6 - opentelemetry-api 1.28.2 - python >=3.9 license: Apache-2.0 - license_family: APACHE - size: 81534 - timestamp: 1732067304518 + size: 81099 + timestamp: 1733749104727 - kind: conda name: orc version: 2.0.3 @@ -8214,12 +8211,12 @@ packages: timestamp: 1699202167581 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312h8360d73_0 subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.20.4-py312h8360d73_0.conda - sha256: 7b59759739b5426e17825b26d6ce9df487d1dc254d4e6a92b14a97107eb6daca - md5: 035c6de3c821559bf1af5ec072593bfd + url: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 depends: - __glibc >=2.17,<3.0.a0 - huggingface_hub >=0.16.4,<1.0 @@ -8232,16 +8229,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2259332 - timestamp: 1732657962717 + size: 2258007 + timestamp: 1732734202127 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312ha0d6ea1_0 subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.20.4-py312ha0d6ea1_0.conda - sha256: 6dbb7e5f3f152210817e8658bc454056e464dee16fd9757508f2417edd44d8b8 - md5: b135e3d9178b255993ea4d72741192f8 + url: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 depends: - huggingface_hub >=0.16.4,<1.0 - libgcc >=13 @@ -8254,16 +8251,16 @@ packages: - __glibc >=2.17 license: Apache-2.0 license_family: APACHE - size: 2330899 - timestamp: 1732658129796 + size: 2331194 + timestamp: 1732734303196 - kind: conda name: tokenizers - version: 0.20.4 + version: 0.21.0 build: py312hf3e4074_0 subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.20.4-py312hf3e4074_0.conda - sha256: fd86f8a5d41622e8f5092913dea48f41de86258583ee449045905a725672fdc2 - md5: 40e8bc575721b4da76712e90e4a9b7fa + url: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e depends: - __osx >=11.0 - huggingface_hub >=0.16.4,<1.0 @@ -8275,8 +8272,8 @@ packages: - __osx >=11.0 license: Apache-2.0 license_family: APACHE - size: 1933005 - timestamp: 1732658406859 + size: 1931389 + timestamp: 1732734727624 - kind: conda name: tornado version: 6.4.2 @@ -8360,13 +8357,13 @@ packages: timestamp: 1733367480074 - kind: conda name: transformers - version: 4.46.3 + version: 4.47.0 build: pyhd8ed1ab_0 subdir: noarch noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.46.3-pyhd8ed1ab_0.conda - sha256: 6ae73c0d1197812d8fd6a2c64309fe9abe822feb66b2d330cc61ce9fa60dee0c - md5: 457af723774f077a128515a6fdd536a2 + url: https://conda.anaconda.org/conda-forge/noarch/transformers-4.47.0-pyhd8ed1ab_0.conda + sha256: b9cf6ae5fcd6c78dcaa24ebfd41580a4a10b0649ac726a44d3521f70fdece218 + md5: 495745078b8e18fe2dcc3267f4baae0d depends: - datasets !=2.5.0 - filelock @@ -8378,12 +8375,12 @@ packages: - regex !=2019.12.17 - requests - safetensors >=0.4.1 - - tokenizers >=0.20,<0.21 + - tokenizers >=0.21,<0.22 - tqdm >=4.27 license: Apache-2.0 license_family: APACHE - size: 3622494 - timestamp: 1731981383171 + size: 3721837 + timestamp: 1733708797762 - kind: conda name: typer version: 0.15.1